<?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>210431</bug_id>
          
          <creation_ts>2020-04-13 09:07:09 -0700</creation_ts>
          <short_desc>Move URL to use StringView when returning substrings of the URL</short_desc>
          <delta_ts>2020-04-29 01:59:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211169</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andersca</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1640900</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-13 09:07:09 -0700</bug_when>
    <thetext>Move URL to use StringView when returning substrings of the URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641220</commentid>
    <comment_count>1</comment_count>
      <attachid>396373</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-13 19:24:36 -0700</bug_when>
    <thetext>Created attachment 396373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641232</commentid>
    <comment_count>2</comment_count>
      <attachid>396375</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-13 20:29:21 -0700</bug_when>
    <thetext>Created attachment 396375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641237</commentid>
    <comment_count>3</comment_count>
      <attachid>396377</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-13 20:40:52 -0700</bug_when>
    <thetext>Created attachment 396377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641425</commentid>
    <comment_count>4</comment_count>
      <attachid>396430</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-14 09:49:05 -0700</bug_when>
    <thetext>Created attachment 396430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642732</commentid>
    <comment_count>5</comment_count>
      <attachid>396772</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-17 10:27:02 -0700</bug_when>
    <thetext>Created attachment 396772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643593</commentid>
    <comment_count>6</comment_count>
      <attachid>397004</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 12:42:48 -0700</bug_when>
    <thetext>Created attachment 397004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644197</commentid>
    <comment_count>7</comment_count>
      <attachid>397163</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-21 21:29:19 -0700</bug_when>
    <thetext>Created attachment 397163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644610</commentid>
    <comment_count>8</comment_count>
      <attachid>397297</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-22 18:11:05 -0700</bug_when>
    <thetext>Created attachment 397297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644678</commentid>
    <comment_count>9</comment_count>
      <attachid>397316</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-22 22:00:46 -0700</bug_when>
    <thetext>Created attachment 397316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645053</commentid>
    <comment_count>10</comment_count>
      <attachid>397413</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-23 18:40:06 -0700</bug_when>
    <thetext>Created attachment 397413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645220</commentid>
    <comment_count>11</comment_count>
      <attachid>397462</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-24 09:30:52 -0700</bug_when>
    <thetext>Created attachment 397462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645292</commentid>
    <comment_count>12</comment_count>
      <attachid>397474</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-24 11:30:44 -0700</bug_when>
    <thetext>Created attachment 397474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645597</commentid>
    <comment_count>13</comment_count>
      <attachid>397474</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2020-04-25 08:02:15 -0700</bug_when>
    <thetext>Comment on attachment 397474
Patch

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

&gt; Source/WTF/wtf/URL.cpp:169
&gt; +    Vector&lt;LChar, 512&gt; percentDecoded;

512 seems kinda arbitrary and a little high.

&gt; Source/WTF/wtf/text/StringView.cpp:315
&gt; +// FIXME: Should this be named parseNumber&lt;uint16_t&gt; instead?

I like this idea.

&gt; Source/WebCore/loader/appcache/ManifestParser.cpp:38
&gt; +static StringView manifestPath(const URL&amp; manifestURL)

Need to be careful about passing temporaries to this function!

&gt; Source/WebCore/platform/network/curl/CurlProxySettings.cpp:40
&gt; +constexpr uint16_t SocksProxyPort = 1080;

I&apos;d keep this static.

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:-582
&gt; -        String lastComponent = kurl.lastPathComponent();

kurl!

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1127
&gt; +        || isPublicSuffix(m_currentRequest.url().host().toStringWithoutCopying());

Surprised isPublicSuffic doesn&apos;t take a StringView.

&gt; Source/WebKitLegacy/win/Plugins/PluginDatabase.cpp:2
&gt; + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.

Maybe change the copyright years here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645622</commentid>
    <comment_count>14</comment_count>
      <attachid>397474</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-25 11:01:53 -0700</bug_when>
    <thetext>Comment on attachment 397474
Patch

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

&gt;&gt; Source/WTF/wtf/URL.cpp:169
&gt;&gt; +    Vector&lt;LChar, 512&gt; percentDecoded;
&gt; 
&gt; 512 seems kinda arbitrary and a little high.

Was matching the other 512 numbers elsewhere in URL code, but those are for lengths of entire URLs. I would be happy to choose a different arbitrary number here. Maybe I should do a histogram of how this is actually used when doing some web browsing. For now, I’ll put 100 instead of 512 and I’ll even add a FIXME about setting the number better.

&gt;&gt; Source/WTF/wtf/text/StringView.cpp:315
&gt;&gt; +// FIXME: Should this be named parseNumber&lt;uint16_t&gt; instead?
&gt; 
&gt; I like this idea.

Just for the moment, I will leave it like this with this FIXME. But I will follow up.

&gt;&gt; Source/WebCore/loader/appcache/ManifestParser.cpp:38
&gt;&gt; +static StringView manifestPath(const URL&amp; manifestURL)
&gt; 
&gt; Need to be careful about passing temporaries to this function!

Good point. Also true about all the URL functions; I did make them more dangerous with temporaries too.

Any thoughts on what I should do to lower the risk?

&gt;&gt; Source/WebCore/platform/network/curl/CurlProxySettings.cpp:40
&gt;&gt; +constexpr uint16_t SocksProxyPort = 1080;
&gt; 
&gt; I&apos;d keep this static.

Alexey told me in the past that I should not write static in front of numeric constants in .cpp files. I will change this one back, but I am a bit confused about the tradeoffs. I looked it up and it seems that constexpr does not affect external vs. internal linkage, although it does make both &quot;inline&quot; and &quot;const&quot; redundant and unnecessary.

&gt;&gt; Source/WebCore/platform/win/PasteboardWin.cpp:-582
&gt;&gt; -        String lastComponent = kurl.lastPathComponent();
&gt; 
&gt; kurl!

I will leave this as a warning to future explorers, a concise way to say: &quot;Abandon all hope, ye who enter here.&quot;

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:1127
&gt;&gt; +        || isPublicSuffix(m_currentRequest.url().host().toStringWithoutCopying());
&gt; 
&gt; Surprised isPublicSuffic doesn&apos;t take a StringView.

The Mac implementation easily could: it just creates a CF/NSString. It would take a little more work to wean the curl and soup implementations off of the convertToLowercaseWithoutLocale (incorrect in the curl one), convertToASCIILowercase (correct in the soup one), and utf8 functions. And this is soup-specific code.

I won’t do anything about this at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645623</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-25 11:02:02 -0700</bug_when>
    <thetext>Committed r260707: &lt;https://trac.webkit.org/changeset/260707&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645624</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-25 11:02:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/62374069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646892</commentid>
    <comment_count>17</comment_count>
      <attachid>397474</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-29 00:36:58 -0700</bug_when>
    <thetext>Comment on attachment 397474
Patch

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

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:54
&gt; +    url.setPort(origin.port());

We should probably reintroduce the nullopt check here.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:430
&gt; +    url.setPort(*origin.port());

Ditto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646894</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-04-29 00:38:48 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #17)
&gt; Comment on attachment 397474 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=397474&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:54
&gt; &gt; +    url.setPort(origin.port());
&gt; 
&gt; We should probably reintroduce the nullopt check here.
&gt; 
&gt; &gt; Source/WebCore/workers/service/server/SWServer.cpp:430
&gt; &gt; +    url.setPort(*origin.port());
&gt; 
&gt; Ditto here.

Actually no, just remove * from SWServer.cpp:430</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396373</attachid>
            <date>2020-04-13 19:24:36 -0700</date>
            <delta_ts>2020-04-13 20:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200413192434.patch</filename>
            <type>text/plain</type>
            <size>167562</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNlMzNjZTNmYTQ4YmIzMGRlYTE3MGZi
YzU5MTk5NGE3N2QzMzJlMWEuLjhiNTE3YjIxMzBmYWI3OWI2Y2MwYWQ3ZWViMTgwY2ZlNzc2YWM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTU0IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpob3N0QW5kUG9ydCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQgdHlwZSBjYXN0LCBub3cK
KyAgICAgICAgdGhhdCBtYWtlU3RyaW5nIGNvcnJlY3RseSBoYW5kbGVzIHVpbnQxNl90IHNpbmNl
IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICB0aGUgc2FtZSB0eXBlIGFzIFVDaGFyLgorICAgICAg
ICAoV1RGOjpVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQgY29uc3QpOiBPcHRpbWl6ZWQgdG8gYWx3
YXlzIGFsbG9jYXRlCisgICAgICAgIHRoZSBzdHJpbmcgaW4gdGhlIHJpZ2h0IHNpemUgcmF0aGVy
IHRoYW4gcmVtb3ZpbmcgY2hhcmFjdGVycyBmcm9tIGl0CisgICAgICAgIGFmdGVyIGNyZWF0aW5n
IGl0LgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZSk6IEFkZGVkLiBGYWN0b3Jl
ZCBvdXQgZnJvbSB0aGUgZnVuY3Rpb24KKyAgICAgICAgYmVsb3cgdG8gbWFrZSBpdCBhIGxpdHRs
ZSBtb3JlIHJlYWRhYmxlLgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9t
UGFyc2VkVVJMKTogQ29udmVydCBhIG51bGwgU3RyaW5nVmlldworICAgICAgICB0byBhIG51bGwg
U3RyaW5nIHJhdGhlciB0aGFuIGFuIGVtcHR5IFN0cmluZywgdXNlIGEgc3RhY2sgYnVmZmVyIGFu
ZAorICAgICAgICB0aGUgaGVscGVyIGZ1bmN0aW9uIGFib3ZlLCBhbmQgYWRkZWQgc29tZSBGSVhN
RSBjb21tZW50cyBhYm91dAorICAgICAgICBlbmNvZGluZyBoYW5kbGluZy4KKyAgICAgICAgKFdU
Rjo6VVJMOjp1c2VyIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5nIGVuY29kZWRVc2VyLgor
ICAgICAgICAoV1RGOjpVUkw6OnBhc3N3b3JkIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5n
IGVuY29kZWRQYXNzd29yZC4KKyAgICAgICAgKFdURjo6VVJMOjplbmNvZGVkVXNlciBjb25zdCk6
IFJldHVybiBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFBhc3N3b3Jk
IGNvbnN0KTogRGl0dG8uIEFsc28gcmVuYW1lZCBmcm9tIGVuY29kZWRQYXNzLgorICAgICAgICAo
V1RGOjpVUkw6OmZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IE1vdmVkIHRvIGhlYWRlciBzbyBp
dCBjYW4KKyAgICAgICAgYmUgaW5saW5lZC4KKyAgICAgICAgKFdURjo6VVJMOjp0cnVuY2F0ZWRG
b3JVc2VBc0Jhc2UgY29uc3QpOiBSZW5hbWVkIGZyb20gYmFzZUFzU3RyaW5nLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgd2l0aCBsb2NhbCBmaWxlIFVSTHMg
YW5kIGl0J3MKKyAgICAgICAgbm90IHBlcmZlY3RseSBjbGVhciB0byBtZSBwcmVjaXNlbHkgd2hh
dCBpdCBpcyBmb3IsIGhlbmNlIHRoZSBuYW1lCisgICAgICAgIGlzIG5vdCBzbyBncmVhdC4KKyAg
ICAgICAgKFdURjo6VVJMOjpmaWxlU3lzdGVtUGF0aCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQg
Y2hlY2sgZm9yIHZhbGlkaXR5CisgICAgICAgIHNpbmNlIGlzTG9jYWxGaWxlIGRvZXMgdGhhdCBj
aGVjay4gUmVtb3ZlZCB1bm5lZWRlZCB0eXBlY2FzdCBub3cgdGhhdAorICAgICAgICBwYXRoIHJl
dHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuc3VyZURlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cmVnaXN0
ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbElzIGNvbnN0KTogUmVtb3ZlZCB1bm5lZWRlZCBleHBsaWNpdCBjYXN0IHRv
IFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cXVlcnkgY29uc3QpOiBSZXR1cm4gYSBT
dHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBhdGggY29uc3QpOiBSZXR1cm4gYSBTdHJp
bmdWaWV3LCB1c2UgdGhlIHBhdGhTdGFydAorICAgICAgICBmdW5jdGlvbiBmb3IgY2xhcml0eS4K
KyAgICAgICAgKFdURjo6VVJMOjpzZXRQcm90b2NvbCk6IFVzZSBhIHRvU3RyaW5nV2l0aG91dENv
cHlpbmcgdG8gc2F2ZSBzb21lCisgICAgICAgIHdvcmsgd2hlbiBtYWtpbmcgdGhlIHByb3RvY29s
IGNhbm9uaWNhbC4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0aW5nIGEgVVJM
UGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6Y3JlZGVudGlhbHNFbmQgY29uc3QpOiBB
ZGRlZC4gSGVscGVyIGZvciB2YXJpb3VzIGZ1bmN0aW9ucworICAgICAgICB0aGF0IG1hbmlwdWxh
dGUgdGhlIGNyZWRlbnRpYWxzIHNlY3Rpb24uCisgICAgICAgIChXVEY6OlVSTDo6c2V0SG9zdCk6
IFRha2UgU3RyaW5nVmlldy4gU3RyZWFtbGluZWQgdGhlIGNvZGUgYnkgdXNpbmcKKyAgICAgICAg
U3RyaW5nVmlldzo6Y29udGFpbnMsIGJ5IHVzaW5nIG1ha2VTdHJpbmcgcmF0aGVyIHRoYW4gU3Ry
aW5nQnVpbGRlciwKKyAgICAgICAgYW5kIGJ5IGNhbGxpbmcgcGFyc2UgaW5zdGVhZCBvZiBjcmVh
dGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZVBvcnQpOiBE
ZWxldGVkLCBzaW5jZSBzZXRQb3J0IHRha2VzIGFuIE9wdGlvbmFsIG5vdy4KKyAgICAgICAgKFdU
Rjo6VVJMOjpzZXRQb3J0KTogVGFrZSBPcHRpb25hbDx1aW50MTZfdD4uIEdvdCByaWQgb2YgdGhl
IGNhc3QgdG8KKyAgICAgICAgdW5zaWduZWQgdGhhdCB1c2VkIHRvIGJlIG5lZWRlZCB0byB1c2Ug
dWludDE2X3Qgd2l0aCBtYWtlU3RyaW5nLCBhbmQKKyAgICAgICAgY2FhbGwgcGFyc2UgaW5zdGVh
ZCBvZiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92
ZUhvc3RBbmRQb3J0KTogRGVsZXRlZC4gQ2FsbGVycyBjYW4gcGFzcyBhIG51bGwKKyAgICAgICAg
U3RyaW5nVmlldyB0byBzZXRIb3N0QW5kUG9ydCBpbnN0ZWFkLgorICAgICAgICAoV1RGOjpVUkw6
OnNldEhvc3RBbmRQb3J0KTogVGFrZSBTdHJpbmdWaWV3LiBEb24ndCByZW1vdmUgdGhlIG9sZAor
ICAgICAgICBob3N0IGFuZCBwb3J0IGluIHRoZSBub21yYWwgY2FzZSB3aGVyZSB3ZSBlbmQgdXAg
b3ZlcndyaXRpbmcgdGhlIGVudGlyZQorICAgICAgICBVUkwgYXQgdGhlIGVuZCBvZiB0aGUgZnVu
Y3Rpb24gYW55d2F5LiBVc2UgcGFyc2VVSW50MTYgaW5zdGVhZCBvZgorICAgICAgICB0b0ludFN0
cmljdCB0byBjaGVjayBwb3J0IG51bWJlciBmb3IgdmFsaWRpdHksIHdoaWNoIG1ha2VzIHN1cmUg
d2Ugd2lsbAorICAgICAgICByZWplY3QgcG9ydCBudW1iZXJzIGxhcmdlciB0aGFuIDY1NTM1LiBV
c2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIgYW5kIGNhbGwg
cGFyc2UgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdU
Rjo6cGFyc2UpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNyZWF0ZSBhIG5l
dyBzdHJpbmcKKyAgICAgICAgYW5kIHdhbnQgdG8gcGFyc2UgaXQgYXMgdGhlIG5ldyBjb250ZW50
cyBvZiB0aGUgVVJMLiBVc2VkIGluIGFsbW9zdAorICAgICAgICBldmVyeSBzZXR0ZXIgZnVuY3Rp
b24uCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiBm
b3IgZWZmaWNpZW50bHkgcmVtb3ZpbmcKKyAgICAgICAgYSBwaWVjZSBvZiB0aGUgVVJMIHN0cmlu
ZyBhbmQgcmUtcGFyc2luZy4gVXNlZCBpbiBtYW55IHNldHRlciBmdW5jdGlvbnMuCisgICAgICAg
IChXVEY6OlVSTDo6c2V0VXNlcik6IFRha2UgU3RyaW5nVmlldy4gVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZgorICAgICAgICBTdHJpbmdCdWlsZGVyLCBhbmQgcGFyc2UgYW5kIHJlbW92ZSBpbnN0
ZWFkIG9mIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6c2V0
UGFzc3dvcmQpOiBSZW5hbWVkIGZyb20gc2V0UGFzcy4gVGFrZSBTdHJpbmdWaWV3LgorICAgICAg
ICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQg
cmVtb3ZlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAg
ICAgICAgKFdURjo6VVJMOjpyZW1vdmVDcmVkaWVudGlhbHMpOiBBZGRlZC4gRWZmaWNpZW50bHkg
cmVtb3ZlcyBib3RoIHRoZQorICAgICAgICB1c2VyIG5hbWUgYW5kIHBhc3N3b3JkIGlmIGVpdGhl
ciBpcyBwcmVzZW50LgorICAgICAgICAoV1RGOjpVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcik6
IFVzZSBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nCisgICAgICAgIGEgVVJMIHBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcik6IFJlbW92ZWQg
dW5uZWNlc3NhcnkgY2hlY2tzIGZvcgorICAgICAgICB0aGluZ3MgYWxyZWFkeSBvcHRpbWl6ZWQg
YnkgU3RyaW5nOjpsZWZ0LiBDb3VsZCBsYXRlciBjb25zaWRlciBtZXJnaW5nCisgICAgICAgIHRo
aXMgaW4gd2l0aCBzZXRGcmFnbWVudElkZW50aWZpZXIsIHVzaW5nIGEgbnVsbCB2cy4gZW1wdHkg
ZGlzdGluY3Rpb24sCisgICAgICAgIGJ1dCBub3QgZG9pbmcgdGhhdCBmb3Igbm93LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFF1ZXJ5KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpV
Ukw6OnNldFBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnN0cmluZ1dpdGhv
dXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXVEY6OnN0cmlu
Z1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcik6IFNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgdXNpbmcgc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllci4KKyAgICAgICAg
KFdURjo6ZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpob3N0c0FyZUVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VVJMOjppc01hdGNo
aW5nRG9tYWluIGNvbnN0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpwcm90b2Nv
bElzKTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnByb3RvY29sSXMpOiBN
b3ZlZCB0byBpbmxpbmUgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpcHBl
ZEZvclVzZUFzUmVmZXJyZXIgY29uc3QpOiBSZXdyaXRlIGZvciBlZmZpY2llbmN5LgorICAgICAg
ICAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KTogVGFrZSBTdHJpbmdW
aWV3LgorICAgICAgICAoV1RGOjphYm91dEJsYW5rVVJMKTogVXNlIEFTQ0lJTGl0ZXJhbC4KKyAg
ICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOiBVc2UgQVNDSUlMaXRlcmFsLgorICAgICAgICAo
V1RGOjpwb3J0QWxsb3dlZCk6IFJlbW92ZWQgNjU1MzUgYXMgYSBibG9ja2VkIHBvcnQ7IHdhc24n
dCBuZWVkZWQuCisgICAgICAgIChXVEY6Om1pbWVUeXBlRnJvbURhdGFVUkwpOiBUYWtlIFN0cmlu
Z1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
IGNvbnN0KTogVHdlYWtlZCBzdHlsZS4KKyAgICAgICAgKFdURjo6VVJMOjpmYWtlVVJMV2l0aFJl
bGF0aXZlUGFydCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKTogVGFrZSBTdHJpbmdWaWV3Li4KKyAgICAgICAgKFdURjo6VVJM
OjpxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
VEY6OlVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduIGNvbnN0KTog
QWRkZWQuCisgICAgICAgIChXVEY6OlVSTDo6aG9zdElzSVBBZGRyZXNzKTogVHdlYWsgY29kaW5n
IHN0eWxlLgorCisgICAgICAgICogd3RmL1VSTC5oOiBNYWRlIFVSTFRleHRFbmNvZGluZyBkZXN0
cnVjdG9yIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICB1bnVzZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbiBvZiBVUkxIYXNoIHN0cnVjdHVyZS4gVXNlIFdURl9FWFBPUlRfUFJJVkFURQorICAgICAg
ICBvbiBmdW5jdGlvbnMgZnJvbSBVUkwgcmF0aGVyIHRoYW4gb24gdGhlIHdob2xlIGNsYXNzLCBz
aW5jZSB0aGUgc3R5bGUKKyAgICAgICAgY2hlY2tlciB0b2xkIG1lIHRvIGRvIHRoYXQuIE1vdmVk
IHNvbWUgaW5saW5lIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YKKyAgICAgICAgdGhlIGNsYXNzIGRl
ZmluaXRpb24gZm9yIGNsYXJpdHkgYW5kIHRvIGtlZXAgdGhlIHN0eWxlIGNoZWNrZXIgaGFwcHku
CisgICAgICAgIFVwZGF0ZWQgbWFueSBhcmd1ZW1udHMgZnJvbSBTdHJpbmcgdG8gU3RyaW5nVmll
dyBhbmQgcmV0dXJuIHZhbHVlcyBmb3IKKyAgICAgICAgc3Vic3RyaW5ncyBvZiB0aGUgVVJMIHRv
IFN0cmluZ1ZpZXcuIFJlbW92ZWQgc29tZSB1bnVzZWQgZnVuY3Rpb25zIGFuZAorICAgICAgICBz
b21lIG9ic29sZXRlIGNvbW1lbnRzLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNw
cDoKKyAgICAgICAgKFdURjo6aXNDRlVSTFNhbWVPcmlnaW4pOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OmVuZHNXaXRoIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OnBhcnNlVUludDE2
KTogQWRkZWQuCisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdOdWxsaXR5KTogQWRkZWQuIEN1
cnJlbnRseSB0aGUgc2FtZSBhcyBlcXVhbCwgYnV0CisgICAgICAgIGNvdWxkIGJlIGRpZmZlcm5l
dCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25z
dCk6IEFkZGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0
aGUgY2FsbCBzaXRlIGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0
aW9ucyBhYm92ZS4KKyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0
aGUgZmluZCBmdW5jdGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhw
bGljaXQgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisg
ICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6
Y2hhcmFjdGVyc1RvSW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMTMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBDaGVja2VkPHNp
emVfdCwgUmVjb3JkT3ZlcmZsb3c+IHdpdGggQ2hlY2tlZFNpemUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMjIy
MGFhMGYxMTZkMDg3ZWZiMTQ3ZmQyZGVlNGM5NDBhNTFkNTIwLi4yMzRiNWQyOTQ3NzYzNDRkZGMx
Y2MzODE2ZmU4YWU0MzQzZDE2NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIw
LTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
Ojppbml0aWFsaXplV2l0aCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25z
ZTo6cmVkaXJlY3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgICogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
VVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcik6IFVzZSBoYXNDcmVkZW50aWFscy4KKwor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWW91VHViZVVSTCk6IFRha2UgU3RyaW5nVmlldy4KKyAg
ICAgICAgKFdlYkNvcmU6OnF1ZXJ5S2V5c0FuZFZhbHVlcyk6IFRha2UgU3RyaW5nVmlldy4KKyAg
ICAgICAgKFdlYkNvcmU6OnByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKTogVXNlIGF1dG8gc2lu
Y2UgVVJMIHBpZWNlcyBhcmUKKyAgICAgICAgbm93IHJldHVybmVkIGFzIFN0cmluZ1ZpZXcuCisg
ICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9t
QWJzb2x1dGVVUkwpOgorICAgICAgICBVc2UgU3RyaW5nVmlldyBhbmQgbWFrZVN0cmluZyByYXRo
ZXIgdGhhbiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvdXJjZU5hbWUpOiBV
c2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6IFVzZSBzZXRIb3N0QW5kUG9ydC4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmRB
bmNob3JFbGVtZW50Rm9yTGluayk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50
aWZpZXIgcmV0dXJucyBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6
IEFkZGVkIGEgY29tbWVudC4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVy
bnMgYSBTdHJpbmdWaWV3LiBBbHNvIGdvdCByaWQgb2Ygc29tZSBzdHJhbmdlCisgICAgICAgIHVz
ZSBvZiBBdG9tU3RyaW5nIHRoYXQgd2FzIG5vdCBuZWNlc3NhcnkgYW5kIHVzZWQgV1RGTW92ZSBt
b3JlLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKTogVXBkYXRlIHNpbmNlCisgICAg
ICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICog
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0
dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVGb3JEaXNwbGF5IGNvbnN0KToKKyAgICAg
ICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLCBhbmQgU3RyaW5nVmll
dyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZyBmb3IgbmFtZSBhbmQgZXh0ZW5zaW9uIHZhbHVl
cy4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogVXBkYXRlIHNpbmNlIGxhc3RQYXRoQ29t
cG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogaHRtbC9N
ZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21l
bnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGZyYWdt
ZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDogQ2hhbmdlZCBzZXRIb3N0IHRvIHRha2UgYSBTdHJpbmdWaWV3LCBjaGFuZ2VkCisg
ICAgICAgIHZhcmlvdXMgb3RoZXIgZnVuY3Rpb25zIHRvIGNhbGwgdG9TdHJpbmcsIHNpbmNlIHRo
ZSB1bmRlcmx5aW5nIFVSTAorICAgICAgICBmdW5jdGlvbiBub3cgcmV0dXJucyBhIFN0cmluZ1Zp
ZXcuIFVwZGF0ZWQgbmFtZXMgc2luY2UgInBhc3MiIGlzIG5vdworICAgICAgICAicGFzc3dvcmQi
LgorICAgICAgICAoV2ViQ29yZTo6Y291bnRBU0NJSURpZ2l0cyk6IEFkZGVkLiBSZXBsYWNlcyB1
bnVzdWFsIGZ1bmN0aW9uCisgICAgICAgIG5hbWVkIHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlv
biBiZWNhdXNlIHdlIGNhbiB1c2UgU3RyaW5nVmlldyBub3cKKyAgICAgICAgYW5kIHNvIGRvbid0
IG5lZWQgc3VjaCBhbiB1bnVzdWFsIGZ1bmN0aW9uLgorCisgICAgICAgICogbG9hZGVyL0FkQ2xp
Y2tBdHRyaWJ1dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246
OnBhcnNlQ29udmVyc2lvblJlcXVlc3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgIEFs
c28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSB1c2Ugb2YgQVNDSUlMaXRlcmFsIHRoYXQgaHVydHMgcGVy
Zm9ybWFuY2UKKyAgICAgICAgYSB0aW55IGJpdC4KKworICAgICAgICAqIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVDcm9zc09y
aWdpblJlZGlyZWN0aW9uVVJMKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKwor
ICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6IFVwZGF0ZSBzaW5jZSBxdWVyeSByZXR1cm5z
CisgICAgICAgIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmNyZWF0ZUZpbGVVUkwpOiBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aC4KKworICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYW5pZmVzdFBhdGgpOiBSZXR1cm4gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6IFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2FsY3Vs
YXRlSXRlbUluQ29sbGVjdGlvbiBjb25zdCk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVu
dElkZW50aWZlciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVxdWVzdFVSTCk6IERpdHRv
LgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsVG9GcmFnbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwpOiBVcGRhdGVkIGxvZyBtZXNzYWdlLgorCisg
ICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0
YXRlT2JqZWN0QWRkZWQpOiBVcGRhdGVkIGZvciBVUkw6OnBhc3N3b3JkIG5hbWUgY2hhbmdlCisg
ICAgICAgIGFuZCB0byB1c2UgdGhlIG5ldyBzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRl
bnRpZmllciByYXRoZXIgdGhhbiB0aGUKKyAgICAgICAgb2xkIGVxdWFsSWdub3JpbmdRdWVyeUFu
ZEZyYWdtZW50LgorCisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhdGlvbjo6aHJlZiBjb25zdCk6IFVzZSByZW1vdmVDcmVkZW50aWFscy4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0IGNvbnN0KTogU3RyZWFtbGluZWQuCisgICAgICAg
IChXZWJDb3JlOjpMb2NhdGlvbjo6cGF0aG5hbWUgY29uc3QpOiBVc2UgYW4gQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNlYXJjaCBjb25zdCk6IFVzZSBxdWVyeVdp
dGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246Omhhc2gg
Y29uc3QpOiBVc2UgZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQpOiBVc2UgcGFyc2VVSW50MTYuCisKKyAg
ICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6IENvZGluZyBzdHlsZSB0d2Vh
a3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2Fy
eSk6CisgICAgICAgIFVzZSBjb250YWlucyBpbnN0ZWFkIG9mIHJldmVyc2VGaW5kIHRvIGNoZWNr
IGZvciBhIHBlcmlvZCBpbiB0aGUgZmlsZW5hbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQgaXMgYSBTdHJpbmdWaWV3LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFt
ZWQgbV9wYXNzIHRvIG1fcGFzc3dvcmQKKyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVh
ZCBvZiBwYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNy
ZWRlbnRpYWxzKTogVXNlIHJlbW92ZUNyZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29y
ZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bik6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9u
cyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgYSBT
dHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxpbmVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTogVXNlIGFu
IEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpzZWFyY2gg
Y29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldp
dGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkpOgorICAgICAg
ICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFtZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKwogMjAy
MC0wNC0xMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
cGxhY2UgdXNlIG9mIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gd2l0aCBDaGVja2Vk
U2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA4YjEzOGFhMWQxNzMwMzg0YWUyYmE1NGYzOGRhNGU1N2M4MWY2MWNm
Li5kMzdkNjljMzllMWNhZTFjMmVhNjdkNWMxZmZiYTg1ZWZkYjZmOTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDcyIEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJz
dHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW9uKTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5
SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICBSZW1vdmUgdXNlIG9mIEFTQ0lJ
TGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKTogVXBkYXRlZAorICAgICAgICBmb3IgcGFz
c3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29h
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJMOjpob3N0IGNvbnN0KTogUmVtb3ZlZCB2
YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6Omhvc3QKKyAgICAgICAgcmV0dXJucyBudWxsIGlmIHRo
ZSBVUkwgaXMgaW52YWxpZC4KKyAgICAgICAgKEFQSTo6VVJMOjpwcm90b2NvbCBjb25zdCk6IERp
dHRvLgorICAgICAgICAoQVBJOjpVUkw6OnBhdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFQ
STo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBjb25zdCk6IERpdHRvLiBBbHNvIGFkZGVkIHRvU3Ry
aW5nCisgICAgICAgIHNpbmNlIFdURjo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBub3cgcmV0dXJu
cyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOiBVc2Ug
aGFzRnJhZ21lbnRJZGVudGlmaWVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2U6OmxvYWRTdG9yYWdlRnJvbURpc2spOgorICAgICAgICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1
c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCBhbmQKKyAgICAgICAgdXBkYXRlZCBzaW5jZSBs
YXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhdGhF
eHRlbnNpb24pOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50CisgICAgICAgIHJldHVy
bnMgYSBTdHJpbmdWaWV3LiBSZWZhY3RvcmVkIGEgbGl0dGxlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAgIFVzZSB0cnVuY2F0
ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIFVzZSAhPSB0byBjb21wYXJlIGhvc3Rz
LCByYXRoZXIgdGhhbiBob3N0c0FyZUVxdWFsLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwpOgorICAgICAgICBVc2UgdHJ1bmNhdGVk
Rm9yVXNlQXNCYXNlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIERvbid0IHVzZSBBU0NJSUxp
dGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNldFByb3RvY29sLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMpOgorICAg
ICAgICBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50KTogVXBkYXRlZCBzaW5j
ZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29n
bGUpOiBTdHJlYW1saW5lZAorICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gYSBiaXQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UpOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBT
dHJpbmdWaWV3LgorCiAyMDIwLTA0LTEzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVwbGFjZSB1c2Ugb2YgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJm
bG93PiB3aXRoIENoZWNrZWRTaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOTg3
ZDU1NjMwZWZhZDQ1ZmM0N2ZlZjc1ZTI1ZDE0MDE2YTVlZDg3YS4uNjg3Yjg1MjE2ZTY1ZjIwMDRi
NjM4NWI5YmZkYTZmNjA0Y2E4YWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJz
dHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChzaG91bGRUcnlBcHBMaW5rKTogQ29tcGFyZSBob3N0cyB3aXRoID09IHJhdGhlciB0aGFu
IHVzaW5nIGhvc3RzQXJlRXF1YWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTp3aXRoUmVs
YXRpdmVVUkxQYXJ0OmFuZE1JTUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gQWxzbyB1c2UgUmV0YWluUHRy
CisgICAgICAgIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgY2FsbCB0byByZWxlYXNlLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dl
Yl9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZFR5cGU6aW1hZ2VNSU1F
VHlwZTpdKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCB0
YWtlcyBhIFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24KKyAgICAgICAgZGlyZWN0bHkgZnJvbSBO
U1N0cmluZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3Ry
aW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0
aW9uQ29udHJvbGxlcl0pOiBVcGRhdGUKKyAgICAgICAgc2luY2UgcHJvdG9jb2xJcyB0YWtlcyBh
IFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24gZGlyZWN0bHkgZnJvbQorICAgICAgICBOU1N0cmlu
ZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3RyaW5nLgor
CiAyMDIwLTA0LTEzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyNTk4NDMpOiAiTWlzc2luZyBQbHVnLUluIiB3aGVuIGRyYWdn
aW5nIGFuIGltYWdlIGludG8gTWFpbCBDb21wb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggODA0YmU1YTQ0YWNmNDRiZjdmNWQ2ZmM2YTUwOWQ3YzA0YjMwNmRjOC4uM2M4NWE1ZTUy
ZTcxZDYzODNjYTBmNDliMmMwMGEzYzM5MTU5ZmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVy
bmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBT
dHJlYW1saW5lZAorICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gYSBiaXQuCisKIDIwMjAtMDQt
MDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3VsZCBm
aW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKaW5kZXggMmM1MDRiY2RhOGJkMzJiNzhiMzk0YWQyMmYwNzkxMmE4MzIxMDFkNy4uZDM5ZDg0
MWE3NzI1ZGJkOWY3ZjdkMmY1MTdmYTE4N2QxYmFjM2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI2ICs0
MiwxNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBD
aGFyQnVmZmVyOwotdHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7Ci0KLXN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8v
IENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBz
b3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11
c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRo
ZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRl
IHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNoYXIqIGRlc3QpCisvLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFz
c3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgorLy8gVGhlIGRlc3Rp
bmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBh
bGxvd2VkIGluIHRoZQorLy8gc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0
byBudWxsLXRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorc3RhdGljIHZvaWQgY29w
eUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0aW5hdGlvbikKIHsKLSAgICBp
ZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICBjb25zdCBVQ2hh
ciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7Cisg
ICAgICAgIGF1dG8gc291cmNlID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7IGkr
KykKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc291cmNl
W2ldKTsKICAgICB9CiB9CiAKQEAgLTgzLDE2ICs3NCwxMyBAQCB2b2lkIFVSTDo6aW52YWxpZGF0
ZSgpCiAKIFVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwg
Y29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKIHsKLSAgICBVUkxQYXJzZXIgcGFyc2Vy
KHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgKnRoaXMgPSBVUkxQYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKS5yZXN1bHQo
KTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKK3N0YXRpYyBi
b29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICAvLyBCcm93c2Vy
cyBpZ25vcmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sCi0gICAgLy8g
Y2hhcmFjdGVycyBmcm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNoYXIg
aGVyZQotICAgIC8vIHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250cm9s
IGNoYXJhY3RlcnMuCi0gICAgcmV0dXJuIGMgPD0gJyAnOworICAgIC8vIElnbm9yZSBsZWFkaW5n
L3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1cm4g
Y2hhcmFjdGVyIDw9ICcgJzsKIH0KIAogVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAg
LTEwMiwxNDcgKzkwLDE0OCBAQCBVUkwgVVJMOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QK
K1N0cmluZ1ZpZXcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFo
YXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVuZCAtIDE7CiAgICAgaWYgKG1fc3RyaW5nW2Vu
ZF0gPT0gJy8nKQogICAgICAgICAtLWVuZDsKIAogICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5n
LnJldmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIGlmIChzdGFydCA8IHBhdGhTdGFydCgpKQorICAgICAgICByZXR1cm4geyB9OwogICAg
ICsrc3RhcnQ7CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBz
dGFydCArIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0ICsgMSk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNv
bnN0CiB7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKIH0K
IAogU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogeworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm4geyB9OworCiAgICAgdW5zaWduZWQgc3RhcnQgPSBob3N0U3RhcnQoKTsK
ICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hvc3RF
bmQgLSBzdGFydCk7CiB9CiAKIE9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAog
ewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51bWJlcjsKLSAgICBpZiAobV9z
dHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
bV9zdHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEs
ICZvayk7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0g
MSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4g
bnVtYmVyOworICAgIHJldHVybiBtX3BvcnRMZW5ndGggPyBwYXJzZVVJbnQxNihTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDog
V1RGOjpudWxsb3B0OwogfQogCiBTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CiB7CiAg
ICAgaWYgKGF1dG8gcG9ydCA9IHRoaXMtPnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoaG9zdCgpLCAnOicsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3J0LnZhbHVlKCkpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoaG9zdCgpLCAnOicsICpwb3J0KTsKICAgICByZXR1cm4g
aG9zdCgpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQo
KSBjb25zdAogewotICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKKyAgICBpZiAoIWhhc0NyZWRlbnRpYWxzKCkpCisgICAg
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoMCwgcGF0aFN0YXJ0KCkpOwogCi0gICAgaWYg
KG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCA+IDApIHsKLSAgICAgICAgY29uc3QgaW50IGFs
bG93Rm9yVHJhaWxpbmdBdFNpZ24gPSAxOwotICAgICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0
YXJ0LCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWdu
KTsKLSAgICB9CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhob3N0U3RhcnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSkK
KyAgICApOworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKK3N0YXRpYyBPcHRpb25hbDxMQ2hhcj4g
ZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoaW5kZXggKyAzID4gbGVuZ3RoIHx8IGlucHV0W2lu
ZGV4XSAhPSAnJScpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBkaWdp
dDEgPSBpbnB1dFtpbmRleCArIDFdOworICAgIGF1dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAy
XTsKKyAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChkaWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQo
ZGlnaXQyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdG9BU0NJ
SUhleFZhbHVlKGRpZ2l0MSwgZGlnaXQyKTsKIH0KIAogc3RhdGljIFN0cmluZyBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcgaW5wdXQpCiB7Ci0gICAgYXV0byBp
bnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmICghaW5wdXRMZW5ndGgpCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIFZlY3RvcjxMQ2hhcj4gcGVyY2VudERlY29k
ZWQ7Ci0gICAgcGVyY2VudERlY29kZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dExlbmd0
aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgaWYgKGlucHV0W2ldID09ICclJwotICAgICAgICAgICAgJiYgaW5wdXRMZW5ndGggPiAy
Ci0gICAgICAgICAgICAmJiBpIDwgaW5wdXRMZW5ndGggLSAyCi0gICAgICAgICAgICAmJiBpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0
KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFw
cGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsKLSAgICAg
ICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlCisgICAgQVNTRVJUKGlucHV0LmlzQWxsQVND
SUkoKSk7CisKKyAgICBhdXRvIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOworICAgIGlmIChsZW5n
dGggPCAzIHx8ICFpbnB1dC5jb250YWlucygnJScpKQorICAgICAgICByZXR1cm4gaW5wdXQudG9T
dHJpbmcoKTsKKworICAgIFZlY3RvcjxMQ2hhciwgNTEyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBw
ZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7CisgICAgICAgIGlmIChhdXRvIGRlY29kZWRD
aGFyYWN0ZXIgPSBkZWNvZGVFc2NhcGVTZXF1ZW5jZShpbnB1dCwgaSwgbGVuZ3RoKSkgeworICAg
ICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKCpkZWNvZGVkQ2hhcmFjdGVy
KTsKKyAgICAgICAgICAgIGkgKz0gMzsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBl
cmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZChpbnB1dFtpXSk7CisgICAgICAgICAgICArK2k7
CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBGSVhNRTogSXMgVVRGLTggYWx3YXlzIHRoZSBj
b3JyZWN0IGVuY29kaW5nPworICAgIC8vIEZJWE1FOiBUaGlzIHJldHVybnMgYSBudWxsIHN0cmlu
ZyB3aGVuIHdlIGVuY291bnRlciBhbiBpbnZhbGlkIFVURi04IHNlcXVlbmNlLiBJcyB0aGF0IE9L
PwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVy
Y2VudERlY29kZWQuc2l6ZSgpKTsKIH0KIAogU3RyaW5nIFVSTDo6dXNlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkp
OworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRV
c2VyKCkpOwogfQogCi1TdHJpbmcgVVJMOjpwYXNzKCkgY29uc3QKK1N0cmluZyBVUkw6OnBhc3N3
b3JkKCkgY29uc3QKIHsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNG
cm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAx
LCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSkpOworICAgIHJldHVybiBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRQYXNzd29yZCgpKTsKIH0KIAotU3RyaW5n
IFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmVuY29kZWRVc2VyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3Vz
ZXJFbmQgLSBtX3VzZXJTdGFydCk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpOwogfQogCi1TdHJp
bmcgVVJMOjplbmNvZGVkUGFzcygpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFBhc3N3
b3JkKCkgY29uc3QKIHsKICAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVu
ZCAtIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2Vy
RW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwogfQogCi1TdHJpbmcgVVJM
OjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmZyYWdtZW50SWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyht
X3F1ZXJ5RW5kICsgMSk7Ci19CisgICAgICAgIHJldHVybiB7IH07CiAKLWJvb2wgVVJMOjpoYXNG
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9z
dHJpbmcubGVuZ3RoKCkgIT0gbV9xdWVyeUVuZDsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxKTsKIH0KIAotU3RyaW5nIFVSTDo6YmFzZUFz
U3RyaW5nKCkgY29uc3QKK1VSTCBVUkw6OnRydW5jYXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIHJl
dHVybiBVUkwoVVJMKCksIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpKTsKIH0K
IAogI2lmICFVU0UoQ0YpCiAKIFN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsK
LSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIGlmICghaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXco
cGF0aCgpKSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwo
cGF0aCgpKSk7CiB9CiAKICNlbmRpZgogCi0jaWZkZWYgTkRFQlVHCisjaWYgIUFTU0VSVF9FTkFC
TEVECiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3
KQogewpAQCAtMzE0LDcgKzMwMyw3IEBAIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVp
bnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiAKIGJvb2wgVVJMOjpwcm90b2NvbElz
KGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAogewotICAgIGFzc2VydFByb3RvY29sSXNHb29k
KFN0cmluZ1ZpZXcgeyBwcm90b2NvbCB9KTsKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90
b2NvbCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBi
ZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCiAgICAgLy8g
VGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBp
bnN0ZWFkLiAKQEAgLTM0OSw3MyArMzM4LDY1IEBAIGJvb2wgVVJMOjpwcm90b2NvbElzKFN0cmlu
Z1ZpZXcgcHJvdG9jb2wpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBVUkw6
OnF1ZXJ5KCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJMOjpxdWVyeSgpIGNvbnN0CiB7CiAgICAgaWYg
KG1fcXVlcnlFbmQgPT0gbV9wYXRoRW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVu
ZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5kICsgMSkpOyAKKyAgICByZXR1cm4gU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9w
YXRoRW5kICsgMSkpOwogfQogCiBTdHJpbmdWaWV3IFVSTDo6cGF0aCgpIGNvbnN0CiB7Ci0gICAg
dW5zaWduZWQgcG9ydEVuZCA9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKLSAgICByZXR1cm4g
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRF
bmQpOworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSwgbV9wYXRoRW5k
IC0gcGF0aFN0YXJ0KCkpOwogfQogCi1ib29sIFVSTDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5n
JiBzKQorYm9vbCBVUkw6OnNldFByb3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAg
ICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6
Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJp
bmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAg
YXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShu
ZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgIGF1dG8gbmV3UHJvdG9j
b2xQcmVmaXggPSBuZXdQcm90b2NvbC5zdWJzdHJpbmcoMCwgbmV3UHJvdG9jb2wuZmluZCgnOicp
KTsKKyAgICBhdXRvIG5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2xQcmVmaXgudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKTsKKyAgICBpZiAoIW5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNl
cihtYWtlU3RyaW5nKCpjYW5vbmljYWxpemVkLCAiOiIsIG1fc3RyaW5nKSk7Ci0gICAgICAgICp0
aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgICAgICBwYXJzZShtYWtlU3RyaW5nKCpuZXdQcm90
b2NvbENhbm9uaWNhbGl6ZWQsICc6JywgbV9zdHJpbmcpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKChtX3Bhc3N3b3JkRW5kICE9IG1fdXNlclN0YXJ0IHx8IHBvcnQo
KSkgJiYgKmNhbm9uaWNhbGl6ZWQgPT0gImZpbGUiKQorICAgIGlmICgobV9wYXNzd29yZEVuZCAh
PSBtX3VzZXJTdGFydCB8fCBwb3J0KCkpICYmICpuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQgPT0g
ImZpbGUiKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChpc0xvY2FsRmlsZSgpICYm
IGhvc3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmljYWxpemVkLCBtX3N0cmluZy5zdWJzdHJpbmcobV9z
Y2hlbWVFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgcGFyc2UobWFr
ZVN0cmluZygqbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9zY2hlbWVFbmQpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBi
b29sIGlzQWxsQVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgaWYgKHN0cmluZy5pczhC
aXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLX0KLSAgICAKIC8v
IEFwcGVuZHMgdGhlIHB1bnljb2RlZCBob3N0bmFtZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBz
dHJpbmcgYW5kIGxlbmd0aCB0bwogLy8gdGhlIG91dHB1dCBidWZmZXIuIFRoZSByZXN1bHQgd2ls
bCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkLgogLy8gUmV0dXJuIHZhbHVlIG9mIGZhbHNlIG1lYW5z
IGVycm9yIGluIGVuY29kaW5nLgotc3RhdGljIGJvb2wgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVD
aGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RhdGljIGJvb2wgYXBwZW5k
RW5jb2RlZEhvc3RuYW1lKFZlY3RvcjxVQ2hhciwgNTEyPiYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0
cmluZykKIHsKICAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVu
Y29kZWQgbmFtZS4KICAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3
b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCiAgICAg
Y29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlm
IChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0
cmluZykpIHsKKworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0
aCB8fCBzdHJpbmcuaXNBbGxBU0NJSSgpKSB7CiAgICAgICAgIGFwcGVuZChidWZmZXIsIHN0cmlu
Zyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIFVDaGFyIGhvc3Ru
YW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKICAgICBVRXJyb3JDb2RlIGVycm9yID0g
VV9aRVJPX0VSUk9SOwogICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lO
Rk9fSU5JVElBTElaRVI7CiAgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlk
bmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2Nv
ZGVyKCksCiAgICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxl
bmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5n
RGV0YWlscywgJmVycm9yKTsKLSAgICAKKwogICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFw
cm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKICAgICAgICAgYnVmZmVyLmFwcGVuZChob3N0bmFt
ZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNDI4LDEwMSArNDA5LDg5IEBAIHVuc2lnbmVkIFVSTDo6aG9zdFN0YXJ0KCkgY29uc3QKICAg
ICByZXR1cm4gKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6
IG1fcGFzc3dvcmRFbmQgKyAxOwogfQogCi12b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcm
IHMpCit1bnNpZ25lZCBVUkw6OmNyZWRlbnRpYWxzRW5kKCkgY29uc3QKK3sKKyAgICAvLyBJbmNs
dWRlICdAJyB0b28gaWYgd2UgaGF2ZSBpdC4KKyAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3Jk
RW5kOworICAgIGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQor
ICAgICAgICBlbmQgKz0gMTsKKyAgICByZXR1cm4gZW5kOworfQorCit2b2lkIFVSTDo6c2V0SG9z
dChTdHJpbmdWaWV3IG5ld0hvc3QpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gY29sb25JbmRleCA9IHMuZmluZCgnOicpOwotICAgIGlmIChjb2xv
bkluZGV4ICE9IG5vdEZvdW5kKQorICAgIGlmIChuZXdIb3N0LmNvbnRhaW5zKCc6JykpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFVDaGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKLSAgICBpZiAo
IWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIHMpKQorICAgIFZlY3RvcjxV
Q2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5h
bWUoZW5jb2RlZEhvc3ROYW1lLCBuZXdIb3N0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjaGVtZUVuZCArIDEpOwotICAgIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7Ci0gICAgaWYg
KHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsK
LSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVu
Y29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJz
dHJpbmcobV9ob3N0RW5kKSk7CiAKLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJp
bmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYm9vbCBzbGFzaFNsYXNo
TmVlZGVkID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgIHBhcnNlKG1ha2VT
dHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQoaG9zdFN0YXJ0KCkpLAor
ICAgICAgICBzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiLAorICAgICAgICBTdHJpbmdWaWV3
KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpLAorICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kKQorICAgICkpOwogfQog
Ci12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAg
ICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQordm9pZCBVUkw6OnNl
dFBvcnQoT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgY29sb25OZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOwot
ICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9z
dEVuZCArIDEpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hv
c3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19
Ci0KLXZvaWQgVVJMOjpyZW1vdmVIb3N0QW5kUG9ydCgpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQp
CisgICAgaWYgKCFwb3J0KSB7CisgICAgICAgIHJlbW92ZShtX2hvc3RFbmQsIG1fcG9ydExlbmd0
aCk7CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIWhvc3QoKS5pc0VtcHR5KCkpCi0gICAgICAg
IHNldEhvc3QoeyB9KTsKLSAgICByZW1vdmVQb3J0KCk7CisgICAgfQorCisgICAgcGFyc2UobWFr
ZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLAor
ICAgICAgICAnOicsCisgICAgICAgICpwb3J0LAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcocGF0aFN0YXJ0KCkpCisgICAgKSk7CiB9CiAKLXZvaWQgVVJMOjpzZXRIb3N0
QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQordm9pZCBVUkw6OnNldEhvc3RBbmRQ
b3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUoaG9zdEFuZFBvcnQpOwotICAg
IFN0cmluZ1ZpZXcgcG9ydDsKLSAgICAKKyAgICBhdXRvIGhvc3ROYW1lID0gaG9zdEFuZFBvcnQ7
CisgICAgU3RyaW5nVmlldyBwb3J0U3RyaW5nOwogICAgIGF1dG8gY29sb25JbmRleCA9IGhvc3RO
YW1lLmZpbmQoJzonKTsKICAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkgewotICAgICAg
ICBwb3J0ID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKLSAgICAgICAgYm9v
bCBvazsKLSAgICAgICAgaW50IHBvcnRJbnQgPSBwb3J0LnRvSW50U3RyaWN0KG9rKTsKLSAgICAg
ICAgaWYgKCFvayB8fCBwb3J0SW50IDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7CisgICAgICAgIHBv
cnRTdHJpbmcgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOworICAgICAgICBp
ZiAocGFyc2VVSW50MTYocG9ydFN0cmluZykpCisgICAgICAgICAgICBob3N0TmFtZSA9IGhvc3RO
YW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBob3N0TmFtZSA9IHsgfTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSB7IH07CisgICAgICAg
IH0KICAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAgIGlmIChob3N0TmFt
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3ZlKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAt
IGhvc3RTdGFydCgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFVDaGFyQnVmZmVy
IGVuY29kZWRIb3N0TmFtZTsKKyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1l
OwogICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgaG9zdE5h
bWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3Vz
ZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLQotICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0
KGhvc3RTdGFydCgpKSk7Ci0gICAgaWYgKHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVu
Y29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBpZiAo
IXBvcnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiIpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChwb3J0KTsKLSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkp
OwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0
YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGhvc3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFz
aE5lZWRlZCA/ICIvLyIgOiAiIiwKKyAgICAgICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUu
ZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSwKKyAgICAgICAgcG9ydFN0cmluZy5pc0Vt
cHR5KCkgPyAiIiA6ICI6IiwKKyAgICAgICAgcG9ydFN0cmluZywKKyAgICAgICAgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQogCiBzdGF0aWMg
U3RyaW5nIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2wo
KnNob3VsZEVuY29kZSkoVUNoYXIpKQpAQCAtNTUxLDgxICs1MjAsODkgQEAgc3RhdGljIFN0cmlu
ZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGlucHV0LCBib29sKCpzaG91
bGRFbmNvZGUpKFUKICAgICByZXR1cm4gaW5wdXQ7CiB9CiAKLXZvaWQgVVJMOjpzZXRVc2VyKGNv
bnN0IFN0cmluZyYgdXNlcikKK3ZvaWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKLSAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihzdHJpbmcpLnJl
c3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQo
c3RhcnQgPCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBtX3N0cmlu
Zy5sZW5ndGgoKSAtIHN0YXJ0KTsKIAotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVy
cyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlv
bnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2Vy
IGxvZ2luLgorICAgIGF1dG8gc3RyaW5nQWZ0ZXJSZW1vdmFsID0gV1RGTW92ZShtX3N0cmluZyk7
CisgICAgc3RyaW5nQWZ0ZXJSZW1vdmFsLnJlbW92ZShzdGFydCwgbGVuZ3RoKTsKKyAgICBwYXJz
ZShzdHJpbmdBZnRlclJlbW92YWwpOworfQorCit2b2lkIFVSTDo6c2V0VXNlcihTdHJpbmdWaWV3
IG5ld1VzZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKIAogICAg
IHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2Vy
Ojppc0luVXNlckluZm9FbmNvZGVTZXQpOwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8v
IiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4K
LSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYm
IG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsK
LSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgaWYgKCFuZXdVc2VyLmlzRW1w
dHkoKSkgeworICAgICAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBt
X3NjaGVtZUVuZCArIDE7CisgICAgICAgIGJvb2wgbmVlZFNlcGFyYXRvciA9IGVuZCA9PSBtX2hv
c3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKTsK
KyAgICAgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV91c2VyU3RhcnQpLAorICAgICAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIv
LyIgOiAiIiwKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKG5ld1VzZXIudG9T
dHJpbmdXaXRob3V0Q29weWluZygpLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCks
CisgICAgICAgICAgICBuZWVkU2VwYXJhdG9yID8gIkAiIDogIiIsCisgICAgICAgICAgICBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKQorICAgICAgICApKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3Ig
cGFzc3dvcmQuCiAgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQg
IT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQogICAgICAgICAgICAgZW5kICs9
IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBj
b21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAg
ICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAgICp0aGlzID0g
cGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9CisgICAgICAgIHJlbW92ZShtX3VzZXJTdGFydCwg
ZW5kIC0gbV91c2VyU3RhcnQpOwogICAgIH0KIH0KIAotdm9pZCBVUkw6OnNldFBhc3MoY29uc3Qg
U3RyaW5nJiBwYXNzd29yZCkKK3ZvaWQgVVJMOjpzZXRQYXNzd29yZChTdHJpbmdWaWV3IG5ld1Bh
c3N3b3JkKQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1
bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIFN0cmluZyBwID0gIjoiICsgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGFz
c3dvcmQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSArICJAIjsKLSAgICAgICAg
aWYgKG1fdXNlckVuZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkK
LSAgICAgICAgICAgIHAgPSAiLy8iICsgcDsKLSAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAn
QCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgotICAgICAgICBpZiAoZW5kICE9
IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAx
OwotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChtX3VzZXJFbmQpLCBwLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5k
KSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBpZiAoIW5ld1Bhc3N3
b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBib29sIG5lZWRMZWFkaW5nU2xhc2hlcyA9IG1fdXNl
ckVuZCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAg
ICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksCisgICAgICAgICAg
ICBuZWVkTGVhZGluZ1NsYXNoZXMgPyAiLy86IiA6ICI6IiwKKyAgICAgICAgICAgIHBlcmNlbnRF
bmNvZGVDaGFyYWN0ZXJzKG5ld1Bhc3N3b3JkLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgVVJM
UGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpLAorICAgICAgICAgICAgJ0AnLAorICAgICAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGNyZWRlbnRpYWxzRW5kKCkpCisg
ICAgICAgICkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93
IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0
ID09IG1fdXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0An
KQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFy
c2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRv
IG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKSB7Ci0gICAgICAg
ICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX3VzZXJFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAg
ICAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgdW5z
aWduZWQgZW5kID0gbV91c2VyU3RhcnQgPT0gbV91c2VyRW5kID8gY3JlZGVudGlhbHNFbmQoKSA6
IG1fcGFzc3dvcmRFbmQ7CisgICAgICAgIHJlbW92ZShtX3VzZXJFbmQsIGVuZCAtIG1fdXNlckVu
ZCk7CiAgICAgfQogfQogCit2b2lkIFVSTDo6cmVtb3ZlQ3JlZGVudGlhbHMoKQoreworICAgIGlm
ICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmUobV91c2VyU3RhcnQs
IGNyZWRlbnRpYWxzRW5kKCkgLSBtX3VzZXJTdGFydCk7Cit9CisKIHZvaWQgVVJMOjpzZXRGcmFn
bWVudElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9pc1Zh
bGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNhc2Ug
d2hlcmUgdGhlIGlkZW50aWZpZXIgYWxyZWFkeSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvIHdoYXQg
d2FzIHBhc3NlZD8KLSAgICAvLyBGSVhNRTogSXMgaXQgY29ycmVjdCB0byBkbyB0aGlzIHdpdGhv
dXQgZW5jb2RpbmcgYW5kIGVzY2FwaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzPwotICAgICp0aGlz
ID0gVVJMUGFyc2VyIHsgbWFrZVN0cmluZyhTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5zdWJzdHJp
bmcoMCwgbV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmllcikgfS5yZXN1bHQoKTsKKyAgICBwYXJz
ZShtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCksICcjJywg
aWRlbnRpZmllcikpOwogfQogCiB2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkK
IHsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwor
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lz
VmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmlu
ZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7CisKKyAgICBtX3N0cmluZyA9IG1fc3RyaW5n
LmxlZnQobV9xdWVyeUVuZCk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50
SWRlbnRpZmllcigpCkBAIC02MzcsNjIgKzYxNCw2MiBAQCB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlB
bmRGcmFnbWVudElkZW50aWZpZXIoKQogICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7CiB9CiAK
LXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQordm9pZCBVUkw6OnNldFF1
ZXJ5KFN0cmluZ1ZpZXcgbmV3UXVlcnkpCiB7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHJlbmFt
aW5nIHRoaXMgZnVuY3Rpb24gdG8gc2V0RW5jb2RlZFF1ZXJ5IGFuZC9vciBjYWxsaW5nIHBlcmNl
bnRFbmNvZGVDaGFyYWN0ZXJzIHRoZSB3YXkgc2V0UGF0aCBkb2VzLgorICAgIC8vIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE2MTE3NgorCiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUg
ZW5jb2RlZCBhbmQgZXNjYXBlZC4KLSAgICAvLyBVc3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5jb2Rl
ZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2ZQot
ICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICAvLyBo
dHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKLSAgICBpZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBx
dWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwoKSkgewotICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQpLCAi
PyIsIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsK
LSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9w
YXRoRW5kKSwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5k
KSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9CisgICAgcGFyc2Uo
bWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQp
LAorICAgICAgICAobmV3UXVlcnkuc3RhcnRzV2l0aCgnPycpICYmICFuZXdRdWVyeS5pc051bGwo
KSkgPyAiPyIgOiAiIiwKKyAgICAgICAgbmV3UXVlcnksCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKQorICAgICkpOworfQogCitzdGF0aWMgU3RyaW5n
IGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhTdHJpbmdWaWV3IHBhdGgpCit7CisgICAgYXV0byBx
dWVzdGlvbk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIgY2hhcmFjdGVyKSB7CisgICAgICAg
IHJldHVybiBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3RlciA9PSAnIyc7CisgICAgfTsKKyAg
ICByZXR1cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aC50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCksIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbik7CiB9CiAKLXZvaWQgVVJMOjpzZXRQYXRo
KGNvbnN0IFN0cmluZyYgcykKK3ZvaWQgVVJMOjpzZXRQYXRoKFN0cmluZ1ZpZXcgcGF0aCkKIHsK
ICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHBhdGgg
PSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAg
cGF0aCA9ICIvIiArIHBhdGg7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChwYXRoU3RhcnQoKSksCisgICAgICAgIHBhdGguc3RhcnRzV2l0
aCgnLycpID8gIiIgOiAiLyIsCisgICAgICAgIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhwYXRo
KSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkKKyAg
ICApKTsKK30KIAotICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFy
IGNoYXJhY3RlcikgewotICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0
ZXIgPT0gJyMnOwotICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSwgcGVyY2VudEVu
Y29kZUNoYXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKK1N0cmluZ1ZpZXcgVVJMOjpzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBt
X3N0cmluZzsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBhdGhFbmQo
KSk7CiB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKK1N0cmluZ1ZpZXcgVVJMOjpzdHJpbmdXaXRob3V0RnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVu
ZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5t
X3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytp
KQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChtX3F1ZXJ5RW5kKTsKIH0KIAotYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFn
bWVudChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKLSAgICBpZiAoYS5w
YXRoRW5kKCkgIT0gYi5wYXRoRW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNp
Z25lZCBwYXRoRW5kID0gYS5wYXRoRW5kKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhdGhFbmQ7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygp
W2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gYS5zdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyKCkgPT0gYi5zdHJp
bmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CiAKIGJvb2wgcHJvdG9jb2xIb3N0QW5k
UG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQpAQCAtNzI1LDI1ICs3MDIs
MTAgQEAgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25z
dCBVUkwmIGIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaG9zdHNBcmVFcXVhbChjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK2Jvb2wgVVJMOjppc01hdGNoaW5nRG9tYWluKFN0cmlu
Z1ZpZXcgZG9tYWluKSBjb25zdAogewotICAgIHVuc2lnbmVkIGhvc3RTdGFydEEgPSBhLmhvc3RT
dGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RFbmQgLSBob3N0U3Rh
cnRBOwotICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOwotICAgIHVuc2ln
bmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBob3N0U3RhcnRCOwotICAgIGlmIChob3N0
TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhbiBhcHByb3ByaWF0ZSBwbGFjZSBpbiBXZWJD
b3JlJ3MgcGx1Zy1pbiBjb2RlOyBkb24ndCB3YW50IHBlb3BsZSB0ZW1wdGVkIHRvIHVzZSB0aGlz
IGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4uCiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaG9zdExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRB
ICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVVJMOjppc01hdGNo
aW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAotewogICAgIGlmIChpc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NjIsNiArNzI0LDcgQEAgYm9vbCBVUkw6
OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiAKIFN0cmluZyBl
bmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CisgICAg
Ly8gRklYTUU6IFJlbmFtZSBzbyBpdCdzIGNsZWFyIHRoaXMgZG9lcyB0aGUgYXBwcm9wcmlhdGUg
ZXNjYXBpbmcgZm9yIFVSTCBxdWVyeSBmaWVsZCB2YWx1ZXMuCiAgICAgcmV0dXJuIHBlcmNlbnRF
bmNvZGVDaGFyYWN0ZXJzKGlucHV0LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7
CiB9CiAKQEAgLTc4NSw3ICs3NDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4K
IGJvb2wgcHJvdG9jb2xJc0ludGVybmFsKGNvbnN0IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNo
YXIqIHByb3RvY29sKQogewogICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5n
IGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmll
dyB7IHByb3RvY29sIH0pOworICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKICAg
ICBib29sIGlzTGVhZGluZyA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgaiA9IDA7
IHVybFtpXTsgKytpKSB7CiAgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBj
b250cm9sIGNoYXJhY3RlcnMuCkBAIC04MDgsMTYgKzc3MSwxMSBAQCBib29sIHByb3RvY29sSXNJ
bnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgY2hhciogcHJvdG9jb2wpCitib29sIHByb3RvY29sSXMoU3RyaW5nVmlldyB1cmwsIGNv
bnN0IGNoYXIqIHByb3RvY29sKQogewogICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJs
LCBwcm90b2NvbCk7CiB9CiAKLWlubGluZSBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgY29uc3QgY2hhciogcHJvdG9jb2wpCi17Ci0gICAgcmV0dXJuIFdURjo6cHJv
dG9jb2xJc0ludGVybmFsKHN0cmluZywgcHJvdG9jb2wpOwotfQotCiAjaWZuZGVmIE5ERUJVRwog
CiB2b2lkIFVSTDo6cHJpbnQoKSBjb25zdApAQCAtODI5LDExICs3ODcsMTggQEAgdm9pZCBVUkw6
OnByaW50KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkg
Y29uc3QKIHsKLSAgICBVUkwgcmVmZXJyZXIoKnRoaXMpOwotICAgIHJlZmVycmVyLnNldFVzZXIo
U3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBhc3MoU3RyaW5nKCkpOwotICAgIHJlZmVycmVy
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIHJldHVybiByZWZlcnJlci5zdHJpbmco
KTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAg
dW5zaWduZWQgZW5kID0gY3JlZGVudGlhbHNFbmQoKTsKKworICAgIGlmIChtX3VzZXJTdGFydCA9
PSBlbmQgJiYgbV9xdWVyeUVuZCA9PSBtX3N0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IG1fc3RyaW5nOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhlbmQsIG1fcXVlcnlFbmQpCisgICAgKTsKIH0KIAogYm9vbCBV
Ukw6OmlzTG9jYWxGaWxlKCkgY29uc3QKQEAgLTg0NSwxNyArODEwLDEyIEBAIGJvb2wgVVJMOjpp
c0xvY2FsRmlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKIH0KIAot
Ym9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICByZXR1
cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQogYm9vbCBwcm90
b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKIHsKICAgICByZXR1cm4gcHJvdG9jb2xJ
c0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKIH0KIAotYm9vbCBwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQorYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KFN0
cmluZ1ZpZXcgdXJsKQogewogICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwogICAgIC8v
IERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCkBA
IC04NjksMTMgKzgyOSwxMyBAQCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3Ry
aW5nJiB1cmwpCiAKIGNvbnN0IFVSTCYgYWJvdXRCbGFua1VSTCgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJv
dXQ6YmxhbmsiX3MpOwogICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKIH0KIAogY29uc3QgVVJM
JiBhYm91dFNyY0RvY1VSTCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3Rh
dGljQWJvdXRTcmNEb2NVUkwoVVJMKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNBYm91dFNyY0RvY1VSTChVUkwoKSwgImFib3V0OnNyY2Rv
YyJfcyk7CiAgICAgcmV0dXJuIHN0YXRpY0Fib3V0U3JjRG9jVVJMOwogfQogCkBAIC05NjQsNyAr
OTI0LDYgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY2OSwg
Ly8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDY2NzksIC8vIEFsdGVy
bmF0ZSBJUkMgU1NMIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgNjY5NywgLy8gSVJDK1NTTCBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIGludmFsaWRQb3J0TnVtYmVyLCAvLyBVc2VkIHRvIGJs
b2NrIGFsbCBpbnZhbGlkIHBvcnQgbnVtYmVycwogICAgIH07CiAKICAgICAvLyBJZiB0aGUgcG9y
dCBpcyBub3QgaW4gdGhlIGJsb2NrZWQgcG9ydCBsaXN0LCBhbGxvdyBpdC4KQEAgLTk4MywxNSAr
OTQyLDE1IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkK
K1N0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCkKIHsKLSAgICBB
U1NFUlQocHJvdG9jb2xJc0ludGVybmFsKHVybCwgImRhdGEiKSk7CisgICAgQVNTRVJUKHByb3Rv
Y29sSXNJbnRlcm5hbChkYXRhVVJMLCAiZGF0YSIpKTsKIAogICAgIC8vIEZJWE1FOiBXaGF0J3Mg
dGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEg
c2VtaWNvbG9uIGxhdGVyPwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBh
dCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0g
ICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7CisgICAgLy8gQ3VycmVudGx5IHRoaXMg
Y29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlOyBzaG91bGQgYWRk
IGEgdGVzdC4KKyAgICBhdXRvIGluZGV4ID0gZGF0YVVSTC5maW5kKCc7JywgNSk7CiAgICAgaWYg
KGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywgNSk7Cisg
ICAgICAgIGluZGV4ID0gZGF0YVVSTC5maW5kKCcsJywgNSk7CiAgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVy
ZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9w
bGFpbi4KICAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5n
IGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlz
IHRpbWUuCkBAIC0xMDAwLDI1ICs5NTksMzkgQEAgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKGluZGV4ID09IDUpCiAgICAgICAgIHJldHVybiAi
dGV4dC9wbGFpbiJfczsKICAgICBBU1NFUlQoaW5kZXggPj0gNSk7Ci0gICAgcmV0dXJuIHVybC5z
dWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIHJl
dHVybiBkYXRhVVJMLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7CiB9CiAKIFN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOworICAgIGlmIChtX3N0cmluZy5sZW5ndGgo
KSA8PSBsZW5ndGgpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKIAotICAgIHJldHVybiBzdHJp
bmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3Ro
IC8gMiAtIDIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQobGVuZ3RoIC8gMiAtIDEpLCAiLi4uIiwgU3RyaW5nVmlldyhtX3N0cmluZykucmlnaHQobGVu
Z3RoIC8gMiAtIDIpKTsKIH0KIAotVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29u
c3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCitVUkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFy
dChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCAid2Vi
a2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcvJyArIHJl
bGF0aXZlUGFydCk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygid2Via2l0LWZh
a2UtdXJsOi8vIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFy
dCkpOwogfQogCi1VUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCitVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1Zp
ZXcgcGF0aCkKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCAiZmlsZTovLy8iICsgZmlsZVBhdGgp
OworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoCisgICAgICAgICJmaWxlOi8vIiwK
KyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAgZXNjYXBl
UGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpCisgICAgKSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpx
dWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCwgbV9xdWVyeUVuZCAtIG1fcGF0aEVu
ZCk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051
bWJlclNpZ24oKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV9xdWVyeUVuZCk7CiB9CiAKIGJvb2wgVVJMOjppc0Fib3V0QmxhbmsoKSBjb25zdApA
QCAtMTAzOCw2ICsxMDExLDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09V
UCkKKwogc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAg
ICBhdXRvIGNvdW50ID0gMDsKQEAgLTExMjQsMTEgKzEwOTgsOSBAQCBzdGF0aWMgYm9vbCBpc0lQ
djZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogCiBib29sIFVSTDo6aG9zdElzSVBBZGRyZXNz
KFN0cmluZ1ZpZXcgaG9zdCkKIHsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQp
Ci0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2
NkFkZHJlc3MoaG9zdCk7CisgICAgcmV0dXJuIGhvc3QuY29udGFpbnMoJzonKSA/IGlzSVB2NkFk
ZHJlc3MoaG9zdCkgOiBpc0lQdjRBZGRyZXNzKGhvc3QpOwogfQorCiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCmluZGV4IDk1YWY0YTNiNDdlMDg4N2Y1YTJhZWEwMWExMTM3OWJiYmQxMWM2
ZmYuLjQyZWMxZmI5ZWMzN2ViODMxM2Q2OTMwMTk1N2E0NTE5MDYxMGIzZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDQ3ICszOCwzOSBAQCBP
QkpDX0NMQVNTIE5TVVJMOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgeworCiBjbGFzcyBUZXh0
U3RyZWFtOwogCiBjbGFzcyBVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIHZpcnR1YWwg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH0KIH07CiAKLXN0cnVjdCBVUkxIYXNoOwotCi1j
bGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHsKK2NsYXNzIFVSTCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNv
bnRhaW5zIGEgbnVsbCBzdHJpbmcuCiAgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KIAotICAg
IGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmco
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9CisgICAgZXhwbGljaXQgVVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOworICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRp
dmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCiAgICAgLy8g
VVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRo
ZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRo
ZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcwotICAgIC8vIGFic29sdXRlLgot
ICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3Jl
YXRlcyBhbiBpbnZhbGlkCi0gICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUg
YmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcwotICAgIC8vIHRoZSBzYW1lIHdh
eSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgotICAgIFVSTChjb25zdCBVUkwm
IGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBu
dWxscHRyKTsKKyAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2
ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhYnNvbHV0ZS4KKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3Qg
VVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIFVSTCBmYWtlVVJMV2l0
aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgVVJMIGZpbGVVUkxXaXRo
RmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdW
aWV3KTsKIAotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNv
IHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcg
Z2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25z
dHJ1Y3Rvci4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNS
ZWZlcnJlcigpIGNvbnN0OwogCiAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25s
eSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhlcgogICAgIC8vIHRocmVhZC4gU2lu
Y2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJl
J3MKICAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0ZWRDb3B5KCkg
b3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAg
IGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CkBAIC04OSwx
MjIgKzgxLDEyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3Qg
eyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQogCiAgICAgYm9vbCBjYW5TZXRQYXRobmFtZSgp
IGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hp
Y2FsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIaWVyYXJjaGljYWwo
KSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmc7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKIAotICAgIFN0cmlu
ZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkg
Y29uc3Q7Ci0KLSAgICBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmll
dyBob3N0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5k
UG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBhc3Mo
KSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsKLSAgICBTdHJpbmcgbGFzdFBh
dGhDb21wb25lbnQoKSBjb25zdDsKLSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKLSAgICBTdHJp
bmcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudElkZW50
aWZpZXIoKSBjb25zdDsKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzd29yZCgpLCBlbmNv
ZGVkVXNlcigpIGFuZCBlbmNvZGVkUGFzc3dvcmQoKSBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVl
bmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBp
bmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCisKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVuY29kZWRVc2VyKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFBhc3N3b3JkKCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nVmlldyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmdWaWV3IHF1ZXJ5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyV2l0
aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
Z1ZpZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAg
ICBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVzZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFVSTCB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzVXNlcm5h
bWUoKSBjb25zdDsKLSAgICBib29sIGhhc1Bhc3N3b3JkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNR
dWVyeSgpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnQoKSBjb25zdDsKKyAgICBib29sIGhh
c0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwogICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0Owog
Ci0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3Qg
ZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFj
Y3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICcl
JyBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFN0cmlu
ZyBlbmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0
OwotCi0gICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisgICAgYm9vbCBoYXNDcmVk
ZW50aWFscygpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVS
TCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQogICAgIC8vIHRlcm1pbmF0ZWQg
QVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCi0gICAgYm9v
bCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXMoU3Ry
aW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhj
b25zdCBjaGFyKikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJ
cyhTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyBy
ZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0Fi
b3V0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0Fib3V0
KCkgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
TG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CiAKLSAgICBib29sIGlzQWJvdXRCbGFuaygpIGNv
bnN0OwotICAgIGJvb2wgaXNBYm91dFNyY0RvYygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGlzQWJvdXRCbGFuaygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsKIAotICAgIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihj
b25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01hdGNo
aW5nRG9tYWluKFN0cmluZ1ZpZXcpIGNvbnN0OwogCi0gICAgYm9vbCBzZXRQcm90b2NvbChjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgc2V0UHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0SG9zdChTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQgcmVtb3ZlUG9y
dCgpOwotICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4pOwogCiAgICAgLy8gSW5wdXQg
aXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9pZCBzZXRIb3N0QW5k
UG9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlbW92ZUhvc3RBbmRQb3J0KCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyk7CiAKLSAg
ICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0
cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVzZXIoU3RyaW5nVmlldyk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UGFzc3dvcmQoU3RyaW5nVmlldyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAotICAgIC8v
IElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJl
c3VsdGluZyBwYXRoCi0gICAgLy8gd2lsbCBiZSAiLyIuCi0gICAgdm9pZCBzZXRQYXRoKGNvbnN0
IFN0cmluZyYpOworICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9yIEhUVFAgb3Ig
SFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgYmUgIi8iLgorICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFBhdGgoU3RyaW5nVmlldyk7CiAKICAgICAvLyBUaGUgcXVlcnkg
bWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBh
ZGRlZAogICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJp
bmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRl
ciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQg
c2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
UXVlcnkoU3RyaW5nVmlldyk7CiAKLSAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJp
bmdWaWV3KTsKLSAgICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAot
ICAgIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwogCi0g
ICAgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CiAKICAg
ICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAKLSAgICBvcGVy
YXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKyAgICBvcGVy
YXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBvcGVy
YXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAogI2lmIFVTRShD
RikKLSAgICBVUkwoQ0ZVUkxSZWYpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZV
UkwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVmKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0
OwogI2VuZGlmCiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBVUkwoTlNVUkwqKTsKLSAgICBv
cGVyYXRvciBOU1VSTCooKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKE5TVVJM
ICopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBvcGVyYXRvciBOU1VSTCAqKCkgY29uc3Q7CiAj
ZW5kaWYKKwogI2lmZGVmIF9fT0JKQ19fCi0gICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3Qg
eyByZXR1cm4gc3RyaW5nKCk7IH0KKyAgICBvcGVyYXRvciBOU1N0cmluZyAqKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgcHJp
bnQoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICB2b2lkIGludmFsaWRh
dGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNo
YXIqKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2
b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKICAgICB1
bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjcmVkZW50aWFsc0VuZCgp
IGNvbnN0OworICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiAKLSAgICBmcmllbmQgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwm
LCBjb25zdCBVUkwmKTsKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIGZyaWVu
ZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCkBAIC0yMjksNDkgKzIyNSwyNyBAQCBw
cml2YXRlOgogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsg
OCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKIAotdGVtcGxh
dGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewot
ICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9w
dGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0
aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rl
cj4KLU9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IHN0cmluZzsKLSAgICBkZWNvZGVyID4+IHN0cmluZzsKLSAgICBpZiAo
IXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gVVJMKFVS
TCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKLX0KK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmLCBj
b25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsK
K2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0
b3IhPShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29s
IGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVS
TCYgYWJvdXRCbGFua1VSTCgpOwogV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRT
cmNEb2NVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmlu
Z3MuCiAvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJz
ZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlv
bnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFu
ZCBwYXJzYWJsZSBVUkwuCi0vLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2Ug
dmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxp
ZCBieSBVUkwuCisvLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgV1RGOjpVUkwg
ZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2
YWxpZCBhbmQgcGFyc2FibGUgVVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBi
ZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVy
ZWQgdmFsaWQgYnkgV1RGOjpVUkwuCiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldyB1cmwsIGNvbnN0IGNo
YXIqIHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgdXJsKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCk7CiAKIFdURl9FWFBPUlRfUFJJ
VkFURSBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
IHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKQEAgLTI4MCwxNCArMjU0
LDQwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAv
LyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJl
Z2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbGVhckRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3IGRhdGFVUkwpOwogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwp
OwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJl
bnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3Rh
bmRhcmQuCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIG5ldywgbW9yZSBzcGVjaWZpYyBuYW1lLiBU
aGUgZ2VuZXJhbCB0aGluZyBuYW1lZCBoZXJlIGNhbid0IGJlIGltcGxlbWVudGVkIGNvcnJlY3Rs
eSwgc2luY2UgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2FwaW5n
LgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2Vz
KGNvbnN0IFN0cmluZyYpOwogCi0vLyBJbmxpbmVzLgorV1RGX0VYUE9SVF9QUklWQVRFIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxV
Ukw+OworCisvLyBGdW5jdGlvbiB0ZW1wbGF0ZSBhbmQgaW5saW5lIGZ1bmN0aW9uIGRlZmluaXRp
b25zLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFVSTDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZzsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gYm9vbCBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsVVJMID0gZGVjb2RlKGRlY29kZXIpOwor
ICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1cmwgPSBX
VEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICBkZWNvZGVyID4+IHN0cmlu
ZzsKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKK30KIAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKQEAgLTMxOSw4ICszMTksMTAg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikK
ICAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwogfQogCi0vLyBJbmxpbmUgdmVyc2lvbnMgb2Yg
c29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGluaW5nCi0vLyB3
aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRoZSBjbGFzcyBk
ZWZpbml0aW9uLgoraW5saW5lIFVSTDo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgOiBtX3N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpCit7Cit9CiAKIGlubGluZSBib29s
IFVSTDo6aXNOdWxsKCkgY29uc3QKIHsKQEAgLTMzOSwxNyArMzQxLDEyIEBAIGlubGluZSBib29s
IFVSTDo6aXNWYWxpZCgpIGNvbnN0CiAKIGlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Cisg
ICAgcmV0dXJuIG1fcGF0aEVuZCA+IHBhdGhTdGFydCgpOwogfQogCi1pbmxpbmUgYm9vbCBVUkw6
Omhhc1VzZXJuYW1lKCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFzQ3JlZGVudGlhbHMoKSBj
b25zdAogewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0KLQotaW5saW5l
IGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc3dvcmRF
bmQgPiAobV91c2VyRW5kICsgMSk7CisgICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiBtX3VzZXJT
dGFydDsKIH0KIAogaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0CkBAIC0zNTcsNyAr
MzU0LDcgQEAgaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cXVlcnlFbmQgPiBtX3BhdGhFbmQ7CiB9CiAKLWlubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnQo
KSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5k
OwogfQpAQCAtMzgyLDExICszNzksNiBAQCBpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoQWZ0ZXJM
YXN0U2xhc2goKSBjb25zdAogICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKIH0KIAot
V1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBVUkwmKTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJM
PjsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKLQogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6YWJvdXRCbGFua1VSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNw
cAppbmRleCAwNmIwYWVjNjRkMTAyNWQ1NDNmZjlkYzNkNmExYTdkMmU2MTBjODU0Li5mYTA4Yzlm
ODgzNjU5MmI2YWMwNTNjNzNmYTg2N2U1ZTAxYmFiN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgaXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYg
Y2ZVUkwsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKTsKIAotICAgIGlmICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dv
cmQoKSkKKyAgICBpZiAodXJsLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKIAogICAgIFVSTENo
YXJCdWZmZXIgYnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkMTNiYjZj
OTFmOWViY2EzMzBkZTUxZGQwNWMyN2UwNTk2YWNhMmRiLi4yOWI0ODg1MDE2YmQyODdkMWNmZTk0
MmM2NTQ4ZTU2NWJmODgzMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC03NCw2ICs3NSwxMSBAQCBi
b29sIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdW
aWV3JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoKnRoaXMsIHByZWZpeCk7CiB9CiAKK2Jvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2xlbmd0aCAmJiAoKnRoaXMp
W21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOworfQorCiBib29sIFN0cmluZ1ZpZXc6OmVuZHNX
aXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZpeCkgY29uc3QKIHsKICAgICByZXR1cm4gOjpXVEY6
OmVuZHNXaXRoKCp0aGlzLCBzdWZmaXgpOwpAQCAtMzA2LDYgKzMxMiwzMSBAQCBTdHJpbmcgbm9y
bWFsaXplZE5GQyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcmVzdWx0LnVuZGVy
bHlpbmdTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBuYW1lZCBwYXJzZU51
bWJlcjx1aW50MTZfdD4gaW5zdGVhZD8KKy8vIEZJWE1FOiBTaG91bGQgd2UgcmVwbGFjZSB0aGUg
dG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aXRoIHRoaXMgc3R5bGU/CitPcHRpb25hbDx1aW50
MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYm9vbCBvayA9IGZh
bHNlOworICAgIGF1dG8gbnVtYmVyID0gdG9JbnRlZ3JhbFR5cGU8dWludDE2X3Q+KHN0cmluZywg
Jm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBudW1iZXI7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldyBh
LCBTdHJpbmdWaWV3IGIpCit7CisgICAgLy8gRklYTUU6IFRoZSBlcXVhbChTdHJpbmdWaWV3LCBT
dHJpbmdWaWV3KSBmdW5jdGlvbiBhbHJlYWR5IGlnbm9yZXMgbnVsbGl0eS4KKyAgICAvLyBUbyBm
aXQgaW4gd2l0aCB0aGUgYmVoYXZpb3Igb2Ygb3VyIG90aGVyIHN0cmluZyBjbGFzc2VzLCB3ZSBz
aG91bGQgY29uc2lkZXIKKyAgICAvLyBjaGFuZ2luZyB0aGF0IGJlaGF2aW9yIHNvIHRoYXQgYSBu
dWxsIFN0cmluZ1ZpZXcgaXMgbm90IGVxdWFsIHRvIGFuIGVtcHR5CisgICAgLy8gU3RyaW5nVmll
dywgYnV0IG5lZWQgdG8gdGVzdCBvciBhdWRpdCBpbiBjYXNlIGNvZGUgZGVwZW5kcyBvbiBjdXJy
ZW50IGJlaGF2aW9yLgorICAgIHJldHVybiBlcXVhbChhLCBiKTsKK30KKworYm9vbCBTdHJpbmdW
aWV3Ojpjb250YWlucyhjb25zdCBjaGFyKiBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZp
bmQoc3RyaW5nKSAhPSBub3RGb3VuZDsKK30KKwogI2lmIENIRUNLX1NUUklOR1ZJRVdfTElGRVRJ
TUUKIAogLy8gTWFuYWdlIHJlZmVyZW5jZSBjb3VudCBtYW51YWxseSBzbyBVbmRlcmx5aW5nU3Ry
aW5nIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVmaW5lZCBpbiB0aGUgaGVhZGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAppbmRleCA2Y2ZlYmRiYWI3ZWE0NThlMWQ5NjgwZDEzMTYxOTE0OGYyMTc5
ZjAzLi40NmFmNTJmNTBiZWQxY2M5YzhiMmNhNDU1NmQxZDUwZjY5ODY3MTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTM3LDggKzEzNyw3IEBAIHB1YmxpYzoKIAogICAgIHNpemVf
dCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwogICAgIHNpemVfdCBmaW5k
KENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKLQotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNo
YXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KSBjb25zdDsKIApAQCAtMTUxLDYgKzE1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5z
KFVDaGFyKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKENvZGVVbml0TWF0Y2hGdW5jdGlvbikg
Y29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhTdHJpbmdWaWV3IHN0cmluZykgY29uc3QgeyByZXR1
cm4gZmluZChzdHJpbmcsIDApICE9IG5vdEZvdW5kOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29u
c3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwpAQCAtMTU5
LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNX
aXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0Owog
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIApAQCAtMTkxLDYgKzE5Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqKSB7IH0KICAg
ICB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpIHsgfQogI2VuZGlm
CisKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBjb25zdCB2b2lkKiBtX2NoYXJhY3RlcnMgeyBu
dWxscHRyIH07CkBAIC0yMTAsNiArMjEyLDggQEAgYm9vbCBlcXVhbChTdHJpbmdWaWV3LCBjb25z
dCBMQ2hhciogYik7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgU3Ry
aW5nVmlldyk7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29uc3Qg
Y2hhciopOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShT
dHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKKwogdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29s
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIgKCZs
b3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9v
bCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIApAQCAtMjM0LDYgKzIzOCw4IEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFsaXpl
ZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBub3JtYWxpemVk
TkZDKGNvbnN0IFN0cmluZyYpOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2
X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOworCiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZjEyYWQzNmQxOWU3
ZmQ1NGI1Y2NhMTI2ZjcyNWQwMDA2NDM4NDVmZS4uYWZjOTJmNTc3NjY2MjI5MmYwY2UwNjQ2MjRl
NjhmMzg0NjcyMjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtOTI0LDEwMiAr
OTI0LDEwMiBAQCBzdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGNv
bnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZQogCiBpbnQgY2hhcmFjdGVyc1RvSW50
U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJh
c2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+KGRhdGEsIGxlbmd0
aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0
aCwgb2ssIGJhc2UpOwogfQogCiBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQog
CiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAog
dW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTx1bnNpZ25lZCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGlu
dDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50NjRf
dCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2
NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1aW50NjRfdCBj
aGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0
X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1aW50NjRfdCBj
aGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0
X3QsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRy
X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRy
X3QsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnQgY2hhcmFj
dGVyc1RvSW50KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxM
Q2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludChj
b25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50
ZWdlcihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxp
bnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IExDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5z
aWduZWQsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVk
PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCks
IG9rLCAxMCk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTx1bnNpZ25lZCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hh
cj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5z
aWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBMQ2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8
TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwg
bGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBV
Q2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludDY0X3QsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0
YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNv
bnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENo
YXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0
ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwgTENoYXI+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVy
c0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50cHRyX3Qg
Y2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29s
KiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIFVDaGFyPihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGVu
dW0gVHJhaWxpbmdKdW5rUG9saWN5IHsgRGlzYWxsb3dUcmFpbGluZ0p1bmssIEFsbG93VHJhaWxp
bmdKdW5rIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5j
cHAKaW5kZXggM2E1NTIxOGZmYmQ3MGEwZjExNTY2MTYwYWY5MzkwZWJiZDE5MWQ3My4uZGZiNzMz
ZTkzMDBkYTJhZTFlNjk1ZTQxMmM5NzMyMDA4YWM2ZTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMTYwLDkgKzE2MCwxMCBAQCBzdGF0
aWMgaW5saW5lIE9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vzc0ludmFsaWRTaWduYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgYwogRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0Ojppbml0
aWFsaXplV2l0aChjb25zdCBTdHJpbmcmIHVybCwgSW5pdCYmIGluaXQpCiB7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgLy8gRklYTUU6IFRpZ2h0ZW4gdGhlIFVS
TCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3Jn
LyNjb25jZXB0LXVybC1wYXJzZXIuCisKKyAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGUgVVJMIHBh
cnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyB0byBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcv
I2NvbmNlcHQtdXJsLXBhcnNlci4KICAgICBVUkwgcmVxdWVzdFVSTCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpGb3Jj
ZVVURjg6Olllcyk7Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCAhcmVxdWVzdFVS
TC51c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpCisgICAg
aWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCByZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxzKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVUkwgaXMgbm90IHZhbGlk
IG9yIGNvbnRhaW5zIHVzZXIgY3JlZGVudGlhbHMuIl9zIH07CiAKICAgICBtX29wdGlvbnMubW9k
ZSA9IE1vZGU6OkNvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcAppbmRleCA2MDlhYThhMjg4ZmYzNTgxOWU2NzNjZjU2N2RjYjUyMGM2M2FiNDg5
Li4wNWY0OWY4ODkzNmUwOGJkZTA1YmU0ZWI2NmZhOWMxNTg4ZmNiY2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTE1MSw3ICsxNTEs
NyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OnJlZGly
ZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgVVJMIHJlcXVlc3RVUkwgPSBjb250ZXh0
LmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygiUmVkaXJlY3Rpb24g
VVJMICciLCByZXF1ZXN0VVJMLnN0cmluZygpLCAiJyBpcyBpbnZhbGlkIikgfTsKLSAgICBpZiAo
IXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0
eSgpKQorICAgIGlmIChyZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWRpcmVjdGlvbiBVUkwgY29udGFpbnMgY3JlZGVu
dGlhbHMiX3MgfTsKICAgICBpZiAoIVJlc291cmNlUmVzcG9uc2U6OmlzUmVkaXJlY3Rpb25TdGF0
dXNDb2RlKHN0YXR1cykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCBt
YWtlU3RyaW5nKCJTdGF0dXMgY29kZSAiLCBzdGF0dXMsICJpcyBub3QgYSByZWRpcmVjdGlvbiBz
dGF0dXMgY29kZSIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGNhYWRmODdiMGI1NzNlMzEyZTll
M2UwMzlkNmRjNmE4OGZjNTljY2EuLmU3MTM1YmVjNjAzZjliNTNhOWQyMmE0NDNhZjM1ODIwZjFj
YWNiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJl
cXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0yMjAsMTMgKzIyMCw3IEBAIHN0YXRpYyBib29s
IGlzVmFsaWRTdGFuZGFyZGl6ZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcihTdHJpbmdWaWV3IGlk
ZW50aWZpZXIpCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1tZXRob2QtaWQvI3Zh
bGlkYXRpb24KIHN0YXRpYyBib29sIGlzVmFsaWRVUkxCYXNlZFBheW1lbnRNZXRob2RJZGVudGlm
aWVyKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICghdXJsLnByb3RvY29sSXMoImh0dHBzIikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghdXJsLnVzZXIoKS5pc0VtcHR5KCkg
fHwgIXVybC5wYXNzKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXVybC5o
YXNDcmVkZW50aWFscygpOwogfQogCiAvLyBJbXBsZW1lbnRzICJ2YWxpZGF0ZSBhIHBheW1lbnQg
bWV0aG9kIGlkZW50aWZpZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDRlN2EwMjVlNDc2
OTQ5MDExNWVlZjQ5ZWVjMGE3YWZkZTFlYzNiNTMuLmFiNGQ1ZmJjMTFmOTJkOWFhZTY3YThhNGQ4
OGZiMmVjYWVkY2ViZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0xMDMsMTkgKzEwMywx
NCBAQCBib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNo
YWRvd1Jvb3QmIHJvb3QpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1zdGF0aWMgaW5saW5l
IFVSTCBjcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgdmlkZW9JRCwgY29uc3QgU3RyaW5n
JiB0aW1lSUQpCitzdGF0aWMgVVJMIGNyZWF0ZVlvdVR1YmVVUkwoU3RyaW5nVmlldyB2aWRlb0lE
LCBTdHJpbmdWaWV3IHRpbWVJRCkKIHsKICAgICBBU1NFUlQoIXZpZGVvSUQuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlQodmlkZW9JRCAhPSAiLyIpOwotICAgIAotICAgIFVSTCByZXN1bHQoVVJMKCks
ICJ5b3V0dWJlOiIgKyB2aWRlb0lEKTsKLSAgICBpZiAoIXRpbWVJRC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlc3VsdC5zZXRRdWVyeSgidD0iICsgdGltZUlEKTsKLSAgICAKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoInlvdXR1YmU6IiwgdmlkZW9J
RCwgdGltZUlELmlzRW1wdHkoKSA/ICIiIDogInQ9IiwgdGltZUlEKSk7CiB9Ci0gICAgCi1zdGF0
aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1
ZXMoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKKworc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKFN0cmluZ1ZpZXcgcXVlcnlT
dHJpbmcpCiB7CiAgICAgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVy
eURpY3Rpb25hcnk7CiAgICAgCkBAIC0xNTUsNyArMTUwLDcgQEAgc3RhdGljIFlvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmlu
ZyYgcXUKICAgICAgICAgLy8gU2F2ZSB0aGUga2V5IGFuZCB0aGUgdmFsdWUuCiAgICAgICAgIGlm
IChrZXlMZW5ndGggJiYgdmFsdWVMZW5ndGgpIHsKICAgICAgICAgICAgIFN0cmluZyBrZXkgPSBx
dWVyeVN0cmluZy5zdWJzdHJpbmcoa2V5TG9jYXRpb24sIGtleUxlbmd0aCkuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHF1ZXJ5U3RyaW5nLnN1
YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmcg
dmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVMb2NhdGlvbiwgdmFsdWVMZW5ndGgp
LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlKCcrJywgJyAnKTsKIAogICAg
ICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpICYmICF2YWx1ZS5pc0VtcHR5KCkpCkBAIC0yMDks
MTYgKzIwNCwxNiBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0
IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogCiAgICAgLy8gU2hvcnQgVVJM
IG9mIHRoZSBmb3JtOiBodHRwOi8veW91dHUuYmUvdjFkMzAxRAogICAgIGlmIChpc1lvdVR1YmVT
aG9ydGVuZWRVUkwpIHsKLSAgICAgICAgU3RyaW5nIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21w
b25lbnQoKTsKKyAgICAgICAgYXV0byB2aWRlb0lEID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7
CiAgICAgICAgIGlmICh2aWRlb0lELmlzRW1wdHkoKSB8fCB2aWRlb0lEID09ICIvIikKICAgICAg
ICAgICAgIHJldHVybiBVUkwoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlk
ZW9JRCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZp
ZGVvSUQsIHsgfSk7CiAgICAgfQotICAgIAorCiAgICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsK
LSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnQgPSB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgCisgICAgYXV0byBxdWVyeSA9IHVybC5xdWVy
eSgpOworICAgIGF1dG8gZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisKICAg
ICAvLyBPbiB0aGUgWW91VHViZSBtb2JpbGUgd2ViIGFwcCwgdGhlIHBhdGggYW5kIHF1ZXJ5IHN0
cmluZyBhcmUgcHV0IGludG8gdGhlCiAgICAgLy8gZnJhZ21lbnQgc28gdGhhdCBvbmUgd2ViIHBh
Z2UgaXMgb25seSBldmVyIGxvYWRlZCAoc2VlIDxyZGFyOi8vcHJvYmxlbS85NTUwNjM5PikuCiAg
ICAgaWYgKGlzWW91VHViZU1vYmlsZVdlYkFwcFVSTCkgewpAQCAtMjI3LDcgKzIyMiw3IEBAIHN0
YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wm
IGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQ7CiAgICAg
ICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwYXRoID0gU3RyaW5nVmlldyhmcmFnbWVudCkuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJpbmcoMCwgbG9jYXRpb24pOwogICAg
ICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmcobG9jYXRpb24gKyAxKTsKICAgICAg
ICAgfQogICAgICAgICBmcmFnbWVudCA9IGVtcHR5U3RyaW5nKCk7CkBAIC0yNjAsMTAgKzI1NSwx
MCBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJs
LCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIv
di8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvZS8iKSkg
ewotICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKLSAgICAgICAgU3RyaW5nIHZpZGVvSUQ7Ci0gICAgICAgIFN0cmluZyBwYXRoQWZ0ZXJG
aXJzdEFtcGVyc2FuZDsKKyAgICAgICAgU3RyaW5nVmlldyB2aWRlb0lEOworICAgICAgICBTdHJp
bmdWaWV3IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwogCisgICAgICAgIGF1dG8gbGFzdFBhdGhD
b21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgc2l6ZV90IGFtcGVy
c2FuZExvY2F0aW9uID0gbGFzdFBhdGhDb21wb25lbnQuZmluZCgnJicpOwogICAgICAgICBpZiAo
YW1wZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFNvbWUgVVJM
cyB3ZSBjYXJlIGFib3V0IHVzZSAmIGluIHBsYWNlIG9mID8gZm9yIHRoZSBmaXJzdCBxdWVyeSBw
YXJhbWV0ZXIuCkBAIC0yNzMsMTEgKzI2OCwxMSBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVh
dGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgog
ICAgICAgICAgICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50OwogCiAgICAgICAgIGlmICgh
dmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG91dFBhdGhBZnRlckZpcnN0QW1wZXJz
YW5kID0gcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAgICAgICAgICBvdXRQYXRoQWZ0ZXJG
aXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kLnRvU3RyaW5nKCk7CiAgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCBlbXB0eVN0cmluZygpKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBVUkwoKTsKIH0KIApAQCAtMjkw
LDEzICsyODUsMTMgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVS
TChjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgc3JjU3RyaW5nKQogewogICAgIGJvb2wgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID0gZmFs
c2U7Ci0gICAgU3RyaW5nIHBvc3NpYmxlTWFsZm9ybWVkUXVlcnk7Ci0gICAgVVJMIHlvdVR1YmVV
UkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91VHViZVNob3J0ZW5l
ZFVSTCwgcG9zc2libGVNYWxmb3JtZWRRdWVyeSk7CisgICAgU3RyaW5nIHBvc3NpYmx5TWFsZm9y
bWVkUXVlcnk7CisgICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVS
TChzcmNVUkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9zc2libHlNYWxmb3JtZWRRdWVyeSk7
CiAgICAgaWYgKHNyY1VSTC5pc0VtcHR5KCkgfHwgeW91VHViZVVSTC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBzcmNTdHJpbmc7CiAKICAgICAvLyBUcmFuc2Zvcm0gdGhlIHlvdXR1YmVVUkwg
KHlvdXR1YmU6VmlkZW9JRCkgdG8gaWZyYW1lIGVtYmVkIHVybCB3aGljaCBoYXMgdGhlIGZvcm1h
dDogaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9WaWRlb0lECi0gICAgYXV0byBzcmNQYXRo
ID0gc3JjVVJMLnBhdGgoKS50b1N0cmluZygpOworICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5w
YXRoKCk7CiAgICAgY29uc3QgU3RyaW5nJiB2aWRlb0lEID0geW91VHViZVVSTC5zdHJpbmcoKS5z
dWJzdHJpbmcoeW91VHViZVVSTC5wcm90b2NvbCgpLmxlbmd0aCgpICsgMSk7CiAgICAgc2l6ZV90
IGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoID0gc3JjUGF0aC5maW5kKHZpZGVvSUQpOwogCkBAIC0z
MDUsNyArMzAwLDcgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVS
TEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY28KICAgICAgICAgQVNTRVJUKGxv
Y2F0aW9uT2ZWaWRlb0lESW5QYXRoKTsKICAgICAKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2lu
YWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3BhdGgvVmlkZW9JZC4KLSAg
ICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0gc3JjU3RyaW5nLmZpbmQoc3JjUGF0
aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKKyAgICAgICAgbG9jYXRp
b25PZlBhdGhCZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0
aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKICAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1BhdGgsICIvd2F0Y2giKSkgewogICAg
ICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJl
Zm9yZSAvd2F0Y2gvIyF2PVZpZGVvSUQKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IGJlIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmU/CkBAIC0zMTUsMjIgKzMxMCwyMSBAQCBTdHJpbmcg
WW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0
IFVSTCYgc3JjVVJMLCBjbwogCiAgICAgQVNTRVJUKGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9J
RCAhPSBub3RGb3VuZCk7CiAKLSAgICBjb25zdCBTdHJpbmcmIHNyY1VSTFByZWZpeCA9IHNyY1N0
cmluZy5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKLSAgICBTdHJp
bmcgcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKKyAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmlu
Z1ZpZXcoc3JjU3RyaW5nKS5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lE
KTsKKyAgICBhdXRvIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisKICAgICAvLyBJZiB0aGUgVVJM
IGhhcyBubyBxdWVyeSwgdXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQu
CiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcXVlcnkgPSBwb3NzaWJsZU1hbGZv
cm1lZFF1ZXJ5OworICAgICAgICBxdWVyeSA9IHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7CiAKICAg
ICAvLyBBcHBlbmQgdGhlIHF1ZXJ5IHN0cmluZyBpZiBpdCBpcyB2YWxpZC4KLSAgICBTdHJpbmdC
dWlsZGVyIGZpbmFsVVJMOwotICAgIGlmIChpc1lvdVR1YmVTaG9ydGVuZWRVUkwpCi0gICAgICAg
IGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoImh0dHA6Ly93d3cueW91dHViZS5jb20iKTsKLSAgICBl
bHNlCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZChzcmNVUkxQcmVmaXgpOwotICAgIGZpbmFsVVJM
LmFwcGVuZCgiL2VtYmVkLyIsIHZpZGVvSUQpOwotICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKQot
ICAgICAgICBmaW5hbFVSTC5hcHBlbmQoJz8nLCBxdWVyeSk7Ci0gICAgcmV0dXJuIGZpbmFsVVJM
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIGlzWW91VHViZVNo
b3J0ZW5lZFVSTCA/ICJodHRwOi8vd3d3LnlvdXR1YmUuY29tIiA6IHNyY1VSTFByZWZpeCwKKyAg
ICAgICAgIi9lbWJlZC8iLAorICAgICAgICB2aWRlb0lELAorICAgICAgICBxdWVyeS5pc0VtcHR5
KCkgPyAiIiA6ICI/IiwKKyAgICAgICAgcXVlcnkKKyAgICApOwogfQogICAgIAogYm9vbCBZb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzVVJMKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAppbmRleCA5OTI2Y2VmOTY3MTU1MzY3MmYyMzc5OWJmMmZlYmZiNWVkMTkwZjc3Li5l
MjM3NDk3MTg2M2YxZGE3MGQ3ZTlmOWM5OTY5ZGQ2YzA2NGY1MTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cApAQCAtNjQsMTUgKzY0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmlu
ZyByZXNvdXJjZU5hbWUoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBuYW1l
OwotICAgIG5hbWUuYXBwZW5kKHVybC5wYXRoKCkpOwotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgbmFtZS5hcHBlbmQoJy8nKTsKLSAgICBpZiAoIXVybC5xdWVyeSgpLmlzTnVsbCgp
KSB7Ci0gICAgICAgIG5hbWUuYXBwZW5kKCc/Jyk7Ci0gICAgICAgIG5hbWUuYXBwZW5kKHVybC5x
dWVyeSgpKTsKLSAgICB9Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG5hbWUudG9TdHJpbmcoKTsKKyAg
ICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVN0cmluZygK
KyAgICAgICAgcGF0aCwKKyAgICAgICAgcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiAiIiwKKyAgICAg
ICAgdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKQorICAgICk7CiAgICAgQVNTRVJU
KCFyZXN1bHQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXJlc3VsdC5jb250YWlucygnICcpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMzVhNjZiZTU1NWE2
M2I0MDhlNmQ4YjViZmIyYzlkNzI5YTI0YTQyYi4uY2Y2ZGM1ZGFhZWYzNjg5YzlmNjk5NTczNGFk
ODkxNjEwNGViZTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC05NDQsMjYgKzk0NCwyNyBA
QCBJbnRQb2ludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGlja1BvaW50KCkKICAgICAK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmludGVybmFs
TGlua0VsZW1lbnQoKSBjb25zdAogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhbmNob3JFbGVt
ZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOworCiAgICAgLy8gUmln
aHQgbm93LCB3ZSBkbyBub3Qgc3VwcG9ydCBBUklBIGxpbmtzIGFzIGludGVybmFsIGxpbmsgZWxl
bWVudHMKICAgICBpZiAoIWlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgSFRNTEFuY2hvckVsZW1lbnQmIGFuY2hvciA9IGRvd25jYXN0
PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7Ci0gICAgCi0gICAgVVJMIGxpbmtVUkwgPSBh
bmNob3IuaHJlZigpOwotICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSBsaW5rVVJMLmZy
YWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8mIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNo
b3JFbGVtZW50PigqZWxlbWVudCk7CisKKyAgICBhdXRvIGxpbmtVUkwgPSBhbmNob3IuaHJlZigp
OworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZp
ZXIoKTsKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAvLyBjaGVjayBpZiBVUkwgaXMgdGhlIHNhbWUgYXMg
Y3VycmVudCBVUkwKLSAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgp
LnVybCgpOworICAgIGF1dG8gZG9jdW1lbnRVUkwgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLnVy
bCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihkb2N1bWVudFVS
TCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIE5vZGUqIGxp
bmtlZE5vZGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZpbmRBbmNob3IoZnJhZ21lbnRJZGVu
dGlmaWVyKTsKKworICAgIGF1dG8gbGlua2VkTm9kZSA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCku
ZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsK
ICAgICBpZiAoIWxpbmtlZE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAg
ICAgLy8gVGhlIGVsZW1lbnQgd2UgZmluZCBtYXkgbm90IGJlIGFjY2Vzc2libGUsIHNvIGZpbmQg
dGhlIGZpcnN0IGFjY2Vzc2libGUgb2JqZWN0LgogICAgIHJldHVybiBmaXJzdEFjY2Vzc2libGVP
YmplY3RGcm9tTm9kZShsaW5rZWROb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGNjOGU4YTMzMDEwODE5NzI3MjNmOTA1Y2Y0ZjFkMzc0YTY2YmRiMjkuLjIwMmI2YzkxOGNjODg3
MGQ1NjRjN2RmMDRkNmRlMWExOGVlYTY0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MzI0OCw3ICszMjQ4LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQog
CiAgICAgbV91cmwgPSBuZXdVUkw7CiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRJZ25v
cmVIb3N0KG1fdXJsKSkKLSAgICAgICAgbV91cmwucmVtb3ZlSG9zdEFuZFBvcnQoKTsKKyAgICAg
ICAgbV91cmwuc2V0SG9zdEFuZFBvcnQoeyB9KTsKIAogICAgIG1fZG9jdW1lbnRVUkkgPSBtX3Vy
bC5zdHJpbmcoKTsKICAgICB1cGRhdGVCYXNlVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggMzAyZWViN2NlNWU1OTJiNGY5ZGVlNmFmYTU0ODhlYTQ2YmU0NzUyZC4uOTliMWVhZDc1MGIw
MzA0N2JlMDQ5NTEzNTBhOWIwY2RlMWRiMmY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NDQ4Nyw3ICs0NDg3LDcgQEAgRWxlbWVudCogRWxlbWVudDo6ZmluZEFuY2hvckVsZW1lbnRGb3JM
aW5rKFN0cmluZyYgb3V0QW5jaG9yTmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIodXJsLCBkb2N1bWVudC5iYXNlVVJMKCkpKSB7Ci0gICAgICAgIG91dEFuY2hv
ck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgIG91dEFuY2hvck5hbWUg
PSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LmZpbmRBbmNob3Iob3V0QW5jaG9yTmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCmluZGV4IDFkYWE4NTg4ZGY1MzkwYWY4MTMxZTBkYWYwOTdhODlmYjU3N2E1OTEu
LjMwZWQ5ZjNmNjFmNDAzZGJiOTRlOGUzZTJmNzlmZjg5N2UxNzJhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCkBAIC00NDAsNiArNDQwLDggQEAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4g
VHJlZVNjb3BlOjplbGVtZW50c0Zyb21Qb2ludChjb25zdCBGbG9hdFBvaW50JiBwKQogICAgIHJl
dHVybiBlbGVtZW50c0Zyb21Qb2ludChwLngoKSwgcC55KCkpOwogfQogCisvLyBGSVhNRTogV291
bGQgYmUgbmljZSB0byBjaGFuZ2UgdGhpcyB0byB0YWtlIGEgU3RyaW5nVmlldywgc2luY2UgdGhh
dCdzIHdoYXQgY2FsbGVycyBoYXZlCisvLyBhbmQgdGhlcmUgaXMgbm8gcGFydGljdWxhciBhZHZh
bnRhZ2UgdG8gYWxyZWFkeSBoYXZpbmcgYSBTdHJpbmcuCiBFbGVtZW50KiBUcmVlU2NvcGU6OmZp
bmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggZTk2MDFjZTE3OTRkZGJkYzE3NGU0YjY1MzY1MzRiNzdmZjNjNDEyOS4u
MDAzOWRhZjBmNzk2OTU1YmFkMGY4NDI4Y2QyMGE3OGI4YjMwNjM4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTMyOCwxMyArMzI4LDEzIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChy
ZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgYXV0byBuYW1lID0gaW1hZ2UuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOworICAgICAgICBTdHJpbmcgbmFtZSA9IGltYWdlLmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291
cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICAgICAgbmFtZSA9IFVS
TCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7
CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5hbWUgPSBBdG9tU3Ry
aW5nKCJtZWRpYSIpOworICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBh
dHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1p
bWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0
RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNDgsMTEgKzM0OCwxMSBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IFVSTCh7IH0s
IHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBTdHJpbmcg
bmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpLnRv
U3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5hbWUg
PSBBdG9tU3RyaW5nKCJmaWxlIik7CisgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAg
ICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgbmFtZSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3Qg
fSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbklu
Zm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBmMmEyZDUy
YWM1YWJmNGU0ZjEzMTEzY2EyNWQxYjIwYTE3MzhmYTY5Li5iN2QyOWNkNGJhZDk1MGQzYWJkN2Rm
NzllOTBmNTM0NjRjMzY4ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICAgICAg
cGFzdGVib2FyZEltYWdlLnVybC51cmwgPSBwYXN0ZWJvYXJkSW1hZ2VVUkw7CiAgICAgICAgIHBh
c3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAgICB9Ci0gICAgcGFzdGVib2FyZElt
YWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgpOwor
ICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0gaW1hZ2VTb3VyY2VVUkwubGFzdFBh
dGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemUg
PSBpbWFnZS0+c2l6ZSgpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0g
cGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCkpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+
cmVzb3VyY2VCdWZmZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAppbmRleCBiZGFkOWEwMDU0MjhmMTQ3YTgxNWVjZTAzZTdjMzlhMDdiODlhMmQ1
Li5lYWM5YTBiOThjZDcwMTljYjUyMzUyZmFjN2ExOTI0MGVkYjE0ZmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0xNzcsMjIgKzE3Nywx
NyBAQCBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGUoKSBjb25z
dAogU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRpdGxlRm9yRGlzcGxh
eSgpIGNvbnN0CiB7CiAgICAgYXV0byB0aXRsZSA9IGF0dGFjaG1lbnRUaXRsZSgpOwotCiAgICAg
YXV0byBpbmRleE9mTGFzdERvdCA9IHRpdGxlLnJldmVyc2VGaW5kKCcuJyk7CiAgICAgaWYgKGlu
ZGV4T2ZMYXN0RG90ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gdGl0bGU7CiAKLSAgICBT
dHJpbmcgbmFtZSA9IHRpdGxlLmxlZnQoaW5kZXhPZkxhc3REb3QpOwotICAgIFN0cmluZyBleHRl
bnNpb24gPSB0aXRsZS5zdWJzdHJpbmcoaW5kZXhPZkxhc3REb3QpOwotCi0gICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxlZnRUb1JpZ2h0TWFyayk7Ci0gICAg
YnVpbGRlci5hcHBlbmQoZmlyc3RTdHJvbmdJc29sYXRlKTsKLSAgICBidWlsZGVyLmFwcGVuZChu
YW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZChwb3BEaXJlY3Rpb25hbElzb2xhdGUpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKGV4dGVuc2lvbik7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBsZWZ0VG9SaWdodE1hcmssCisgICAg
ICAgIGZpcnN0U3Ryb25nSXNvbGF0ZSwKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkubGVmdChp
bmRleE9mTGFzdERvdCksCisgICAgICAgIHBvcERpcmVjdGlvbmFsSXNvbGF0ZSwKKyAgICAgICAg
U3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKGluZGV4T2ZMYXN0RG90KQorICAgICk7CiB9CiAK
IFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRUeXBlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggMDNkOTA1YmJhMzc5
MTI3ZDdmOTQxODkyZjc5NzY1YTdlZjkzYzFiOS4uNmJmZTcwNzRhOTUxYWQ3YWNjZTk5Mzg0MDA2
NmM4ZGI3NGQxNjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKQEAgLTM1NywxNCArMzU3LDE0IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2lu
UmVwbGFjZW1lbnRGb3JUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGV4dGVuc2lvbjsKLSAgICBTdHJpbmcgbGFz
dFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBhdXRvIGxhc3RQ
YXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgc2l6ZV90IGRvdE9m
ZnNldCA9IGxhc3RQYXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CiAgICAgaWYgKGRvdE9m
ZnNldCAhPSBub3RGb3VuZCkKLSAgICAgICAgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQu
c3Vic3RyaW5nKGRvdE9mZnNldCArIDEpOworICAgICAgICBleHRlbnNpb24gPSBsYXN0UGF0aENv
bXBvbmVudC5zdWJzdHJpbmcoZG90T2Zmc2V0ICsgMSkudG9TdHJpbmcoKTsKIAogICAgIFN0cmlu
ZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmIHVybC5wcm90b2Nv
bElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwuc3RyaW5n
KCkpOworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwpOwogICAgIAogICAg
IGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewogICAgICAgICBm
b3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRleCBlN2E1MTZlYmEyMjg0OWZj
ZDM3MzQ2NTkzOTRiN2M0OWU3Zjk3Y2UxLi41Yjg0NTQxZWEwZGNmNTIyNDI4MmMzMWNmNzRiYjQ2
ZWEyNTUyZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRV
UklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBh
cnNlci5jcHAKQEAgLTk4LDkgKzk4LDcgQEAgTWVkaWFUaW1lIE1lZGlhRnJhZ21lbnRVUklQYXJz
ZXI6OmVuZFRpbWUoKQogCiB2b2lkIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlRnJhZ21l
bnRzKCkKIHsKLSAgICBpZiAoIW1fdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAg
ICByZXR1cm47Ci0gICAgU3RyaW5nIGZyYWdtZW50U3RyaW5nID0gbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgYXV0byBmcmFnbWVudFN0cmluZyA9IG1fdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpOwogICAgIGlmIChmcmFnbWVudFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCmluZGV4IGI3MGU1ZGNiZTgyNzU4MTAwYjA3MmQyZjRm
MGYwZTQ2ODBjMDEwOTcuLmFiMDBlZDhkZGFmOTI3YWQwNTY2ODY1YTIzOGYxYmIzMzU1MTZkYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0
OwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoU3Ry
aW5nVmlldyk7CiAKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKICAgICB2b2lkIHNldEhv
c3RuYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVVJMVXRpbHM8
VD46OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIFN0cmluZyBVUkxVdGlsczxUPjo6dXNlcm5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBo
cmVmKCkuZW5jb2RlZFVzZXIoKTsKKyAgICByZXR1cm4gaHJlZigpLmVuY29kZWRVc2VyKCkudG9T
dHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB1c2VyKQogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzKCk7CisgICAgcmV0dXJuIGhyZWYoKS5lbmNv
ZGVkUGFzc3dvcmQoKS50b1N0cmluZygpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAg
LTEzMSw3ICsxMzEsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZChjb25zdCBTdHJp
bmcmIHBhc3MpCiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodXJsLmNhbm5vdEJlQUJh
c2VVUkwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHVybC5zZXRQYXNzKHBhc3MpOworICAgIHVy
bC5zZXRQYXNzd29yZChwYXNzKTsKICAgICBzZXRIcmVmKHVybCk7CiB9CiAKQEAgLTE0MSwxNyAr
MTQxLDE4IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6aG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIGhy
ZWYoKS5ob3N0QW5kUG9ydCgpOwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93
IGxlYWRpbmcgc3BhY2VzIGJlZm9yZSB0aGUgcG9ydCBudW1iZXIuCi1zdGF0aWMgaW5saW5lIHVu
c2lnbmVkIHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlLCB1
bnNpZ25lZCBwb3J0U3RhcnQsIHVuc2lnbmVkJiBwb3J0RW5kKQorc3RhdGljIGlubGluZSB1bnNp
Z25lZCBjb3VudEFTQ0lJRGlnaXRzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHBvcnRFbmQg
PSBwb3J0U3RhcnQ7Ci0gICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh2YWx1ZVtwb3J0RW5kXSkpCi0g
ICAgICAgICsrcG9ydEVuZDsKLSAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKHBvcnRTdGFydCwg
cG9ydEVuZCAtIHBvcnRTdGFydCkudG9VSW50KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
aW5nLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgY291bnQgPSAwOyBjb3VudCA8IGxlbmd0
aDsgKytjb3VudCkgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzdHJpbmdbY291bnRdKSkK
KyAgICAgICAgICAgIHJldHVybiBjb3VudDsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0
IFN0cmluZyYgdmFsdWUpCit2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KFN0cmluZ1ZpZXcgdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4
LDE4ICsxNjksMTkgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIGlmIChzZXBhcmF0b3IgPT0gbm90Rm91bmQpCiAgICAgICAgIHVybC5zZXRIb3N0
QW5kUG9ydCh2YWx1ZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRFbmQ7Ci0g
ICAgICAgIHVuc2lnbmVkIHBvcnQgPSBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24odmFsdWUs
IHNlcGFyYXRvciArIDEsIHBvcnRFbmQpOwotICAgICAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAg
dW5zaWduZWQgcG9ydExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNl
cGFyYXRvciArIDEpKTsKKyAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7CiAgICAgICAgICAgICAv
LyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRl
Y29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKICAgICAgICAgICAgIC8vIHNwZWNpZmljYWxseSBn
b2VzIGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAogICAgICAgICAgICAgLy8gcmVxdWlyZXMg
c2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KLSAg
ICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9y
ICsgMSkgKyAnMCcpOworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlrZSBzb21l
dGhpbmcgdGhhdCBoYXMgc2luY2UgYmVlbiBjaGFuZ2VkIGFuZCB0aGlzIHJ1bGUgYW5kIGNvZGUg
bWF5IGJlIG9ic29sZXRlLgorICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KG1ha2VTdHJp
bmcodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpLCAnMCcpKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0
LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICBhdXRvIHBvcnROdW1iZXIgPSBwYXJzZVVJ
bnQxNih2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSwgcG9ydExlbmd0aCkpOworICAgICAg
ICAgICAgaWYgKHBvcnROdW1iZXIgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBv
cnROdW1iZXIsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9y
dEVuZCkpOworICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJp
bmcoMCwgc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CkBAIC0yMjcsMTcgKzIyOSwxMyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVS
TCgpIHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkg
fHwgdXJsLnByb3RvY29sSXMoImZpbGUiKSB8fCAhdXJsLmNhblNldEhvc3RPclBvcnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICB1bnNpZ25lZCBw
b3J0ID0gdmFsdWUudG9VSW50KCZzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MgfHwgV1RGOjpp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQotICAgICAgICB1
cmwucmVtb3ZlUG9ydCgpOwotICAgIGVsc2UKLSAgICAgICAgdXJsLnNldFBvcnQocG9ydCk7Cisg
ICAgYXV0byBwb3J0ID0gcGFyc2VVSW50MTYodmFsdWUpOworICAgIGlmIChwb3J0ICYmIFdURjo6
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAg
IHBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgdXJsLnNldFBvcnQocG9ydCk7CiAKICAgICBzZXRI
cmVmKHVybC5zdHJpbmcoKSk7CiB9CkBAIC0yNjAsNyArMjU4LDcgQEAgdm9pZCBVUkxVdGlsczxU
Pjo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAodmFsdWVbMFVdID09
ICcvJykKICAgICAgICAgdXJsLnNldFBhdGgodmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgdXJs
LnNldFBhdGgoIi8iICsgdmFsdWUpOworICAgICAgICB1cmwuc2V0UGF0aChtYWtlU3RyaW5nKCcv
JywgdmFsdWUpKTsKIAogICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKIH0KQEAgLTI2OCw4ICsy
NjYsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVl
KQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnNlYXJjaCgpIGNv
bnN0CiB7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1ZXJ5KCk7Ci0gICAgcmV0dXJuIHF1
ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyBxdWVyeTsKKyAgICByZXR1cm4g
aHJlZigpLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTI5MSwxMCArMjg4LDggQEAgdm9pZCBVUkxVdGlsczxU
Pjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IFN0cmluZyBVUkxVdGlsczxUPjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGZyYWdtZW50
SWRlbnRpZmllciA9IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBpZiAoZnJhZ21l
bnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIEF0b21TdHJpbmcoU3RyaW5nKCIjIiArIGZyYWdtZW50SWRlbnRpZmllcikpOwor
ICAgIC8vIEZJWE1FOiBXaHkgY29udmVydCB0aGlzIHN0cmluZyB0byBhbiBhdG9tIGhlcmUgaW5z
dGVhZCBvZiBqdXN0IGEgc3RyaW5nPyBKdXN0IGFuIGVycm9yPyBJbnRlbnRpb25hbGx5IHRvIHNh
dmUgbWVtb3J5PworICAgIHJldHVybiBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRp
bmdOdW1iZXJTaWduKCkudG9BdG9tU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAppbmRleCA2
MzNlNzc1YTU0NTQ0ZmNmZDY2ODdhYmJlY2Y5YWQ4Njg5YTZkZDJmLi40ZWE0N2MyOTMwNWRkYWUz
MjA1NzJjOGYyMzcxNWU4MzhkYjUzNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRD
bGlja0F0dHJpYnV0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6aXNWYWxpZCgpIGNvbnN0CiAKIEV4cGVjdGVkPEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29u
dmVyc2lvbiwgU3RyaW5nPiBBZENsaWNrQXR0cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVl
c3QoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKLSAgICBpZiAoIXJlZGlyZWN0VVJMLnByb3Rv
Y29sSXMoImh0dHBzIl9zKSB8fCByZWRpcmVjdFVSTC5oYXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0
VVJMLmhhc1Bhc3N3b3JkKCkgfHwgcmVkaXJlY3RVUkwuaGFzUXVlcnkoKSB8fCByZWRpcmVjdFVS
TC5oYXNGcmFnbWVudCgpKSB7CisgICAgaWYgKCFyZWRpcmVjdFVSTC5wcm90b2NvbElzKCJodHRw
cyIpIHx8IHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgcmVkaXJlY3RVUkwuaGFzUXVl
cnkoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgewogICAgICAgICBp
ZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewogICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSU5GTyhBZENsaWNrQXR0cmlidXRpb24sICJDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQg
YmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29udGFp
bnMgb25lIG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBxdWVyeSBzdHJpbmcsIGFuZCBm
cmFnbWVudC4iKTsKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW0FkIENsaWNr
IEF0dHJpYnV0aW9uXSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJM
J3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9yIG1vcmUg
b2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBxdWVyeSBzdHJpbmcsIGFuZCBmcmFnbWVudC4iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cAppbmRleCA4MjkwNjI4YzRlZDQ1ZTA1MzFjNDc5NmZhMjZhZDVhYzRhMWQ2MzM4Li5lMDUzYzli
MDNmMDQ2NTBkZWY1NWJlY2Q1OGQxYzYzNjljNjMwYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMTY3LDcgKzE2Nyw3
IEBAIFN0cmluZyB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJiBy
ZWRpcmVjdFVSTCkKICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQocmVkaXJlY3RVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygibm90IGFsbG93ZWQgdG8g
Zm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hl
bWUiKTsKIAotICAgIGlmIChyZWRpcmVjdFVSTC5oYXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0VVJM
Lmhhc1Bhc3N3b3JkKCkpCisgICAgaWYgKHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZWRpcmVjdGlvbiBVUkwgIiwgcmVkaXJlY3RVUkwu
c3RyaW5nKCksICIgaGFzIGNyZWRlbnRpYWxzIik7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCAyMTc3ZjRiNmRiNmIxOTVjYTlkZjgyNzliNWFmN2JiMTU2ZjViNTBhLi5kZjNkMDhjNzRmZWJj
MWI1NGUyNDRlNjNmYzQ5NmZlNjMwYzQzMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTMyLDggKzUzMiw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgLy8gQW55IGNyZWRlbnRpYWwgc2hvdWxkIGhhdmUg
YmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3NzLXNpdGUgcmVxdWVzdHMuCiAgICAgY29uc3QgVVJM
JiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBtX29wdGlvbnMuc2VjdXJpdHlDaGVj
ayA9IHNlY3VyaXR5Q2hlY2s7Ci0gICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVx
dWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVz
dCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3NhbWVPcmln
aW5SZXF1ZXN0IHx8ICFyZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpOwogCiAgICAgaWYgKCFt
X3JlZmVycmVyLmlzTnVsbCgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtX3Jl
ZmVycmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDNh
YWE4ZWVkOGMzMzdlNzlkOTg4OGE0NTVmMzlmZjNmZWU0YjVhMzYuLjMwYWY5MDA4MDQ5YThlMzk4
MmY5YzliZjQ5ZGFlYmZjOTJlYTY4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcApAQCAtNzgsMTEgKzc4LDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bv
c3RGb3JtRGF0YVRvVVJMKFVSTCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAg
ICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoYm9keURhdGEsIGJvZHku
dXRmOCgpKTsKICAgICBib2R5ID0gU3RyaW5nKGJvZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6
ZSgpKS5yZXBsYWNlV2l0aExpdGVyYWwoJysnLCAiJTIwIik7CiAKLSAgICBTdHJpbmcgcXVlcnkg
PSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CiAgICAgaWYgKHF1
ZXJ5LmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnNldFF1ZXJ5KGJvZHkpOwogICAgIGVsc2UKLSAg
ICAgICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5ICsgJyYnICsgYm9keSk7CisgICAgICAgIHVybC5zZXRR
dWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAnJicsIGJvZHkpKTsKIH0KIAogdm9pZCBGb3JtU3VibWlz
c2lvbjo6QXR0cmlidXRlczo6cGFyc2VBY3Rpb24oY29uc3QgU3RyaW5nJiBhY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAppbmRleCAzMjNkYjQ2MzYwMjk4YjhhOTFiYjAwYTQ3OTI0YmIyZTgxMTFmMzM4Li40
ODgyZDc3ZTEyNzE2OTg1YzQ2NDUxZGYwZWM3NDBhNzkzOTNjNDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAK
QEAgLTI0NiwxNSArMjQ2LDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hCiAKIFVSTCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0g
ICAgLy8gRklYTUU6IENhbiB3ZSBqdXN0IHVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoIGlu
c3RlYWQ/CiAjaWYgVVNFKENGKSAmJiBQTEFURk9STShXSU4pCi0gICAgVVJMIHVybChhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKS5nZXQoKSk7CisgICAgLy8gRklY
TUU6IElzIHRoaXMgY29ycmVjdD8gU2VlbXMgaW1wcm9iYWJsZSB0aGF0IHRoZSBwYXNzZWQtaW4g
cGF0aHMgd291bGQgYmUgaW4gdGhlIFdpbmRvd3MgcGF0aCBzdHlsZS4KKyAgICByZXR1cm4gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSkuZ2V0KCk7CiAjZWxzZQot
ICAgIFVSTCB1cmw7Ci0gICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsKLSAgICB1cmwuc2V0
UGF0aChwYXRoKTsKKyAgICByZXR1cm4gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKHBh
dGgpOwogI2VuZGlmCi0gICAgcmV0dXJuIHVybDsKIH0KIAogc3RhdGljIGlubGluZSBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
JiByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9N
YW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuY3BwCmluZGV4IGZhYWU1MWY5OWY2MmIyZjI5ZDVjYmI4YWVjZmNlYjE2YWRjMmVi
NTQuLjczNGRhNzY2MmQ0OWE2MjI1OWRlNjFmZWQ4Y2JlYjcwMGVkMmFjNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApAQCAtMzUs
MTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQs
IEZhbGxiYWNrLCBPbmxpbmVXaGl0ZWxpc3QsIFVua25vd24gfTsKIAotc3RhdGljIFN0cmluZyBt
YW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKK3N0YXRpYyBTdHJpbmdWaWV3IG1h
bmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIGF1dG8gbWFuaWZlc3RQ
YXRoID0gbWFuaWZlc3RVUkwucGF0aCgpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0g
Jy8nKTsKICAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBhdGguc3Vic3RyaW5nKDAsIG1hbmlm
ZXN0UGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFsw
XSA9PSBtYW5pZmVzdFBhdGhbbWFuaWZlc3RQYXRoLmxlbmd0aCgpIC0gMV0pOwotICAgIHJldHVy
biBtYW5pZmVzdFBhdGgudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFuaWZlc3RQYXRoOwogfQog
CiBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5n
JiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVz
dCYgbWFuaWZlc3QpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBV
UkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0CiAg
ICAgQVNTRVJUKG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5pc0VtcHR5KCkpOwogICAgIG1hbmlmZXN0
LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gZmFsc2U7CiAKLSAgICBTdHJpbmcgbWFuaWZlc3RQ
YXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKKyAgICBhdXRvIG1hbmlm
ZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5pZmVzdFVSTCk7CiAKICAgICBjb25z
dCBjaGFyIGNhY2hlTWFuaWZlc3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwog
ICAgIGJvb2wgYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RN
SU1FVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5k
ZXggM2Y0Njk5Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3NWE2NWYzZC4uY2Q5NDllN2MxMzBk
OTY2MjgyZjE5YjUyYzhkYTMxZDAwNGE2ODE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtODYsMTAgKzg2LDcgQEAgYm9vbCBDYWNoZWRGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIAogU3RyaW5nIENhY2hlZEZv
bnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogewotICAgIGF1dG8mIHVybCA9
IHRoaXMtPnVybCgpOwotICAgIGlmICghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KTsKKyAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0K
IAogYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCmluZGV4IDZhMjhhODU3MWM1ZWNhNjI3ZDNlNmU3ZDE0Zjc5YTc2Mzg2OTY1
YjMuLmU0YTk0YTUwNTk2MWFhMzc5N2ZhNmQwNGVhNjVjNjQ1NjVhZDk2ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIFN0cmluZyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJh
Z21lbnRJZGVudGlmaWVyRnJvbVJlcXVlc3RVUkwoUmVzb3VyY2VSZXF1CiAgICAgaWYgKCFNZW1v
cnlDYWNoZTo6c2hvdWxkUmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKHJlcXVlc3QudXJsKCkpKQog
ICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwotICAgIFN0
cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAg
YXV0byBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJp
bmcoKTsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcmVxdWVzdC5z
ZXRVUkwodXJsKTsKICAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IGQzN2JmOWNjYTlkMWI5ZThjOGM0MWVlZDczNDcxOGIwN2E5ODJl
NTYuLjcwNzI1ODdlMDRmYzZmMGJjNGJhZTY3NjA2YzU4OTFkODZlZTRlZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIxODUsOCArMjE4NSw4IEBAIHZvaWQgRnJhbWVWaWV3Ojpy
ZXN0b3JlU2Nyb2xsYmFyKCkKIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29u
c3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFn
bWVudElkZW50aWZpZXIoKTsKLSAgICBpZiAoc2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGZyYWdt
ZW50SWRlbnRpZmllcikpCisgICAgYXV0byBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgaWYgKHNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbChmcmFnbWVu
dElkZW50aWZpZXIudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBUcnkgYWdhaW4gYWZ0ZXIgZGVjb2RpbmcgdGhlIHJlZiwgYmFzZWQgb24g
dGhlIGRvY3VtZW50J3MgZW5jb2RpbmcuCkBAIC0yMjAxLDcgKzIyMDEsNyBAQCBib29sIEZyYW1l
Vmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKIAogYm9vbCBGcmFtZVZpZXc6
OnNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbChjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmll
cikKIHsKLSAgICBMT0coU2Nyb2xsaW5nLCAiRnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvciAlcyIs
IGZyYWdtZW50SWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coU2Nyb2xsaW5nLCAi
RnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwgJXMiLCBmcmFnbWVudElkZW50aWZp
ZXIudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBJZiBvdXIgVVJMIGhhcyBubyByZWYsIHRoZW4g
d2UgaGF2ZSBubyBwbGFjZSB3ZSBuZWVkIHRvIGp1bXAgdG8uCiAgICAgaWYgKGZyYWdtZW50SWRl
bnRpZmllci5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDljNThiMDZmNGM0
NzExMzBjZTQ4MTVmMTFkMTRjYjc4ZjgxYjQ5YTAuLjM4ZmQ3YjI5YjUzZWFiNDg0ZTMwOTYzYjUx
YzhhZTUyNWM1ZDdhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMjAxLDEzICsyMDEs
MTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICAgICAgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lID0gc3RhdGVPYmplY3RUeXBlID09IFN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSA/ICJo
aXN0b3J5LnJlcGxhY2VTdGF0ZSgpIiA6ICJoaXN0b3J5LnB1c2hTdGF0ZSgpIjsKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsIG1ha2VTdHJpbmcoIkJsb2NrZWQgYXR0
ZW1wdCB0byB1c2UgIiwgZnVuY3Rpb25OYW1lLCAiIHRvIGNoYW5nZSBzZXNzaW9uIGhpc3Rvcnkg
VVJMIGZyb20gIiwgZG9jdW1lbnRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCks
ICIgdG8gIiwgZnVsbFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi4gIiwg
c3VmZml4KSB9OwogICAgIH07Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
ZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwudXNlcigpICE9IGRvY3VtZW50VVJMLnVz
ZXIoKSB8fCBmdWxsVVJMLnBhc3MoKSAhPSBkb2N1bWVudFVSTC5wYXNzKCkpCisgICAgaWYgKCFw
cm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxV
UkwudXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJMLnBhc3N3b3JkKCkgIT0g
ZG9jdW1lbnRVUkwucGFzc3dvcmQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxT
ZWN1cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlByb3RvY29scywgZG9tYWlucywgcG9ydHMs
IHVzZXJuYW1lcywgYW5kIHBhc3N3b3JkcyBtdXN0IG1hdGNoLiIpOwogCiAgICAgY29uc3QgYXV0
byYgZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpOwogICAgIC8vIFdlIGFsbG93IHNhbmRib3hlZCBkb2N1bWVudHMsICdkYXRhOicvJ2Zp
bGU6JyBVUkxzLCBldGMuIHRvIHVzZSAncHVzaFN0YXRlJy8ncmVwbGFjZVN0YXRlJyB0byBtb2Rp
ZnkgdGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDI4IGZvciB0aGUgY29tcGF0aWJpbGl0eSBj
b25jZXJucy4KLSAgICBib29sIGFsbG93U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkp
ICYmIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGRvY3VtZW50VVJMLCBmdWxsVVJMKTsK
KyAgICBib29sIGFsbG93U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2lu
LmlzTG9jYWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpCisgICAgICAg
ICYmIGRvY3VtZW50VVJMLnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKCkg
PT0gZnVsbFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpOwogCiAg
ICAgaWYgKCFhbGxvd1NhbmRib3hFeGNlcHRpb24gJiYgIWRvY3VtZW50U2VjdXJpdHlPcmlnaW4u
Y2FuUmVxdWVzdChmdWxsVVJMKSAmJiAoZnVsbFVSTC5wYXRoKCkgIT0gZG9jdW1lbnRVUkwucGF0
aCgpIHx8IGZ1bGxVUkwucXVlcnkoKSAhPSBkb2N1bWVudFVSTC5xdWVyeSgpKSkKICAgICAgICAg
cmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlBh
dGhzIGFuZCBmcmFnbWVudHMgbXVzdCBtYXRjaCBmb3IgYSBzYW5kYm94ZWQgZG9jdW1lbnQuIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmluZGV4IDI4Nzg5Y2QxNDI5ODMyYzFmMjcyYTZhYWQ1
ZWIxZThiNjI4ODJlYzcuLjBkODdjN2Q4OTM3Njk3YzFlYzcwMTM2ZjFjNjZiNjFjOWY1NjAzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCkBAIC02MSwxNCArNjEsOCBAQCBpbmxpbmUgY29u
c3QgVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpocmVmKCkg
Y29uc3QKIHsKLSAgICBhdXRvJiB1cmwgPSB0aGlzLT51cmwoKTsKLQotICAgIGlmICghdXJsLmhh
c1VzZXJuYW1lKCkgJiYgIXVybC5oYXNQYXNzd29yZCgpKQotICAgICAgICByZXR1cm4gdXJsLnN0
cmluZygpOwotCi0gICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwpOwotICAgIHVybFdp
dGhvdXRDcmVkZW50aWFscy5zZXRVc2VyKFdURjo6ZW1wdHlTdHJpbmcoKSk7Ci0gICAgdXJsV2l0
aG91dENyZWRlbnRpYWxzLnNldFBhc3MoV1RGOjplbXB0eVN0cmluZygpKTsKKyAgICBVUkwgdXJs
V2l0aG91dENyZWRlbnRpYWxzKHVybCgpKTsKKyAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMucmVt
b3ZlQ3JlZGVudGlhbHMoKTsKICAgICByZXR1cm4gdXJsV2l0aG91dENyZWRlbnRpYWxzLnN0cmlu
ZygpOwogfQogCkBAIC05MSwyMCArODUsMTkgQEAgU3RyaW5nIExvY2F0aW9uOjpob3N0bmFtZSgp
IGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJM
JiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICByZXR1cm4gdXJsLnBvcnQoKSA/IFN0cmluZzo6bnVt
YmVyKHVybC5wb3J0KCkudmFsdWUoKSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gcG9ydCA9
IHVybCgpLnBvcnQoKTsKKyAgICByZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVyKCpwb3J0KSA6
IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6cGF0aG5hbWUoKSBjb25zdAog
ewogICAgIGF1dG8gcGF0aCA9IHVybCgpLnBhdGgoKTsKLSAgICByZXR1cm4gcGF0aC5pc0VtcHR5
KCkgPyAiLyIgOiBwYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8g
Ii8iX3MgOiBwYXRoLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6c2VhcmNoKCkg
Y29uc3QKIHsKLSAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwotICAgIHJldHVybiB1
cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgdXJsLnF1ZXJ5KCk7
CisgICAgcmV0dXJuIHVybCgpLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0cmlu
ZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246Om9yaWdpbigpIGNvbnN0CkBAIC0xMjUsOCArMTE4
LDcgQEAgUmVmPERPTVN0cmluZ0xpc3Q+IExvY2F0aW9uOjphbmNlc3Rvck9yaWdpbnMoKSBjb25z
dAogCiBTdHJpbmcgTG9jYXRpb246Omhhc2goKSBjb25zdAogewotICAgIGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0
dXJuIGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsg
ZnJhZ21lbnRJZGVudGlmaWVyOworICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXJX
aXRoTGVhZGluZ051bWJlclNpZ24oKS50b1N0cmluZygpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0SHJlZihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBm
aXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNzMsMTEgKzE2NSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBE
T01XaW5kb3cmIGZpcnN0V2luCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwotICAgIGludCBwb3J0ID0g
cG9ydFN0cmluZy50b0ludCgpOwotICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGIHx8
IHBvcnRTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwotICAgIGVs
c2UKLSAgICAgICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgdXJsLnNldFBvcnQocGFyc2VVSW50
MTYocG9ydFN0cmluZykpOwogICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZp
cnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYWNlNWI3ZWQ5NzAxZTI0MWU0MGE1N2RlNjQx
OGQ5OGMxMjlkOTM4NS4uMmQ1MTQ2OTliMTE3MWU5Yzc0ODY2MTJhN2IxYTVlNTVhMmJhY2ZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAt
MTQ3LDIyICsxNDcsMTkgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0
KGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKICAgICByZXR1cm4gaG9zdFtob3N0Lmxlbmd0aCgpIC0g
bV9ob3N0Lmxlbmd0aCgpIC0gMV0gPT0gJy4nOwogfQogCi1zdHJ1Y3QgTWF0Y2hUZXN0ZXIKLXsK
K3N0cnVjdCBNYXRjaFRlc3RlciB7CiAgICAgU3RyaW5nVmlldyBtX3BhdHRlcm47Ci0gICAgdW5z
aWduZWQgbV9wYXR0ZXJuSW5kZXg7Ci0gICAgCisgICAgdW5zaWduZWQgbV9wYXR0ZXJuSW5kZXgg
eyAwIH07CisKICAgICBTdHJpbmdWaWV3IG1fdGVzdDsKLSAgICB1bnNpZ25lZCBtX3Rlc3RJbmRl
eDsKLSAgICAKKyAgICB1bnNpZ25lZCBtX3Rlc3RJbmRleCB7IDAgfTsKKwogICAgIE1hdGNoVGVz
dGVyKFN0cmluZ1ZpZXcgcGF0dGVybiwgU3RyaW5nVmlldyB0ZXN0KQotICAgIDogbV9wYXR0ZXJu
KHBhdHRlcm4pCi0gICAgLCBtX3BhdHRlcm5JbmRleCgwKQotICAgICwgbV90ZXN0KHRlc3QpCi0g
ICAgLCBtX3Rlc3RJbmRleCgwKQorICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQorICAgICAg
ICAsIG1fdGVzdCh0ZXN0KQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBib29sIHRlc3RTdHJp
bmdGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEluZGV4ID49IG1fdGVzdC5sZW5ndGgo
KTsgfQogICAgIGJvb2wgcGF0dGVyblN0cmluZ0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXR0ZXJuSW5kZXggPj0gbV9wYXR0ZXJuLmxlbmd0aCgpOyB9CiAKQEAgLTE3NCw3ICsxNzEsNyBA
QCBzdHJ1Y3QgTWF0Y2hUZXN0ZXIKICAgICAgICAgICAgIG1fcGF0dGVybkluZGV4Kys7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2b2lkIGVhdFNhbWVDaGFycygpCiAgICAgewogICAg
ICAgICB3aGlsZSAoIXBhdHRlcm5TdHJpbmdGaW5pc2hlZCgpICYmICF0ZXN0U3RyaW5nRmluaXNo
ZWQoKSkgewpAQCAtMjI2LDggKzIyMyw3IEBAIHN0cnVjdCBNYXRjaFRlc3RlcgogCiBib29sIFVz
ZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdGgoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAog
ewotICAgIE1hdGNoVGVzdGVyIG1hdGNoKFN0cmluZ1ZpZXcobV9wYXRoKSwgdGVzdC5wYXRoKCkp
OwotICAgIHJldHVybiBtYXRjaC50ZXN0KCk7CisgICAgcmV0dXJuIE1hdGNoVGVzdGVyKG1fcGF0
aCwgdGVzdC5wYXRoKCkpLnRlc3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA0YTBjMzRl
Y2E3MjQyYmRhNzI1Mjg0OGIzYThjZTJkMTM1Zjc0MzViLi40NzBmZTU0OTU0ZTFiM2M0N2VlZjA1
ZTc4NTBjYjViYTJjOTk1ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcApAQCAtNzkwLDE2ICs3OTAsMTAgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0
cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBTdHJp
bmcgTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKGZp
bGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgZGVmYXVsdE1JTUVUeXBlKCkpKQot
ICAgICAgICByZXR1cm4gZmlsZW5hbWU7Ci0KLSAgICBpZiAoZmlsZW5hbWUucmV2ZXJzZUZpbmQo
Jy4nKSAhPSBub3RGb3VuZCkKKyAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpIHx8IGZpbGVuYW1l
LmNvbnRhaW5zKCcuJykgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgZGVmYXVs
dE1JTUVUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmlsZW5hbWU7CiAKLSAgICBTdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uID0gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5
cGUpOworICAgIGF1dG8gcHJlZmVycmVkRXh0ZW5zaW9uID0gZ2V0UHJlZmVycmVkRXh0ZW5zaW9u
Rm9yTUlNRVR5cGUobWltZVR5cGUpOwogICAgIGlmIChwcmVmZXJyZWRFeHRlbnNpb24uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmlsZW5hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBlOWE0MjNhZTkyOTlkYWFmN2Jk
OGJjNGFlY2FjMjA0MmZlNzhhMzEzLi4yN2YwY2NlYzA2MjcwN2NjYTczZjVkOGM2NjRhMjk0OWVh
M2UwNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCkBAIC00NDEsMTIgKzQ0MSwxMiBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cgog
ICAgIEF0b21TdHJpbmcgY29udGFpbmVyVHlwZSA9IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlw
ZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09
IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbigp
KSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQotICAgICAgICAgICAgbV9j
b250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5n
KCkpKTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZy
b21EYXRhVVJMKG1fdXJsKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIGxh
c3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBh
dXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAg
ICAgICBzaXplX3QgcG9zID0gbGFzdFBhdGhDb21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsKICAg
ICAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcg
ZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpOworICAgICAg
ICAgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmco
cG9zICsgMSkudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICBTdHJpbmcgbWVkaWFUeXBlID0g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24p
OwogICAgICAgICAgICAgICAgIGlmICghbWVkaWFUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUgeyBXVEZNb3ZlKG1lZGlhVHlw
ZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzI4ZmEyZTg3OWIwZTc2MWE0OTVkYzRhY2EzMDg2
NDRiZDY0ZTAwZS4uZDNiMzM4Mjc5MWVmMmMwMjIzYTc2NDMxNzEzZjE4YjFmMzJlNmE4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Y29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51cmwoKTsKICAgICAgICAgbV91c2VyID0g
dXJsLnVzZXIoKTsKLSAgICAgICAgbV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICAgICAgbV9wYXNz
d29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICBtX2ZpcnN0UmVxdWVzdC5yZW1vdmVDcmVk
ZW50aWFscygpOwogICAgIH0KICAgICAKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gU3VnZ2VzdGVkIGNyZWRlbnRpYWxzIGZvciB0aGUgY3VycmVudCByZWRpcmVjdGlvbiBzdGVw
LgogICAgIFN0cmluZyBtX3VzZXI7Ci0gICAgU3RyaW5nIG1fcGFzczsKKyAgICBTdHJpbmcgbV9w
YXNzd29yZDsKICAgICAKICAgICBDcmVkZW50aWFsIG1faW5pdGlhbENyZWRlbnRpYWw7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcAppbmRleCBhOTM3MzIwMzUzMTJjYzQ3ZDA5MjIwYWQ4NGYyZmIyZThmNzM0
MmRlLi41MzBlY2NmYWU3OTNlMzVkZWU5OWVjMDQwNzcwN2EzOGY5YzdjOWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAKQEAgLTE2NSwxMiArMTY1LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6cmVt
b3ZlQ3JlZGVudGlhbHMoKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKIAotICAg
IGlmIChtX3VybC51c2VyKCkuaXNFbXB0eSgpICYmIG1fdXJsLnBhc3MoKS5pc0VtcHR5KCkpCisg
ICAgaWYgKCFtX3VybC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3VybC5zZXRVc2VyKFN0cmluZygpKTsKLSAgICBtX3VybC5zZXRQYXNzKFN0cmluZygpKTsKLQor
ICAgIG1fdXJsLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggNzY3YzU3OTQ5OTljOTQ2MTE4
MGJjZmVmMGMyYTE5MjJmYTEwNzJkNi4uZWU2MDNkNzIyZjQxZDBkNmY3YzQ2YjkwNmZiN2E1NTEw
NTIwZjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsCiAjZW5kaWYKIHsKICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNh
biBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTogZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgIGlmICgo
IWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpICYmICFmaXJzdFJl
cXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAoKCFkLT5t
X3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVx
dWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBVUkwgdXJs
V2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENy
ZWRlbnRpYWxzLnNldFVzZXIoZC0+bV91c2VyKTsKLSAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxz
LnNldFBhc3MoZC0+bV9wYXNzKTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3N3
b3JkKGQtPm1fcGFzc3dvcmQpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0
aENyZWRlbnRpYWxzKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UgJiYgZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0g
ICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxz
IHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3Ig
SFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNl
IHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KICAg
ICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWwKICAgICAgICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50
IGxvZ291dCBieSBzZW5kaW5nIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0
IGNyZWRlbnRpYWxzLCBhbmQgYWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8v
IChzbyB0aGF0IGFuIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCiAgICAg
ICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpKQotICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwg
Q3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9u
ZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFy
dGl0aW9uKCksIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFs
UGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAg
fQogICAgICAgICAKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQog
CiAgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVy
bC51c2VyKCk7Ci0gICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3Jk
ID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0
cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNDQ3LDcg
KzQ0Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gT25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0
aGlzIGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBV
UkwgZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KLSAgICAgICAgaWYgKGQt
Pm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNw
b25zZS5pc051bGwoKSkgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5t
X3Bhc3N3b3JkLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAg
ICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOwogICAgICAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgICAgICAgICBjcmVkZW50aWFsID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50
aWFsU3RvcmFnZSgpLmdldChyZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIHJlcXVlc3QudXJsKCkp
OwpAQCAtNTIxLDE3ICs1MjEsMTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICBpZiAo
IWNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFz
cy5pc051bGwoKSkgewotICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBbW05T
VVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
c3N3b3JkOmQtPm1fcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNp
c3RlbmNlRm9yU2Vzc2lvbl07CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1f
cGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBjcmVkZW50aWFsID0gYWRvcHROUyhb
W05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgorICAgICAgICAg
ICAgcGFzc3dvcmQ6ZC0+bV9wYXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJz
aXN0ZW5jZUZvclNlc3Npb25dKTsKICAgICAgICAgZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlID0g
Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKICAgICAgICAgZC0+bV9j
dXJyZW50V2ViQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotICAgICAgICByZWNlaXZlZENyZWRlbnRp
YWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgW2NyZWRlbnRp
YWwgcmVsZWFzZV07CisgICAgICAgIHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UsIENyZWRl
bnRpYWwoY3JlZGVudGlhbC5nZXQoKSkpOwogICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVj
aWZpY2F0aW9uLCB0aGUgdXNlciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlm
IHRoZXJlIHdlcmUgaW5jb3JyZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAg
ZC0+bV91c2VyID0gU3RyaW5nKCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAg
ICAgICBkLT5tX3Bhc3N3b3JkID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCmluZGV4IDJj
NmM3MGU4NDk5NWMyOWFjMThmZjNjOTU0OWM3ODk5NjhjYTAxY2EuLmRjYjQzMGIyMmY3NTQ2YmFk
Mzk3MDU4MzkzZDg0MmFiNGUwNmVhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJTdGF0ZS5jcHAKQEAgLTE2NSwxNyArMTY1LDE0IEBAIGJvb2wgQnVpbGRlclN0YXRlOjpj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVy
YXRpCiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CiAgICAgZm9yIChhdXRvJiBj
dXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGluVmFsdWUpKSB7Ci0KICAgICAg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS5pc1VSSSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBTdHJpbmcgY3NzVXJs
ID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3BlcmF0
aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgICAgICAgICBhdXRvIGZpbHRlclVSTCA9IHBy
aW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIGZyYWdtZW50ID0g
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChmaWx0ZXJVUkwpLmZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKGZpbHRlclVSTCwgZnJhZ21lbnQudG9TdHJpbmcoKSkpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmNwcAppbmRleCBkNzllODAwODgwODUwMDVmMWUyMzg1YTA4MWJhMTYwYWZh
YmYyMjM5Li4wMTcxY2I0NzZiYzYwZTAyNGM3MDIyM2RiZGRlOGRjMThmMTU1NWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcApAQCAtNTMsMjMgKzUzLDI0IEBA
IFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgV29ya2Vy
TG9jYXRpb246OnBvcnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5wb3J0KCkgPyBTdHJp
bmc6Om51bWJlcihtX3VybC5wb3J0KCkudmFsdWUoKSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1
dG8gcG9ydCA9IG1fdXJsLnBvcnQoKTsKKyAgICByZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVy
KCpwb3J0KSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cGF0
aG5hbWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0aCA9IG1fdXJsLnBhdGgoKTsKLSAgICByZXR1
cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBh
dGguaXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3Jr
ZXJMb2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwucXVlcnkoKS5p
c0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgbV91cmwucXVlcnkoKTsKKyAgICByZXR1
cm4gbV91cmwucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdv
cmtlckxvY2F0aW9uOjpvcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3Bw
CmluZGV4IDBkNTNiY2Y5MjNlZDYxMjY1MzlmMzVkZDJiOTQ5Y2ExNGI3YjU2N2MuLjE4OTZjMjQx
MWI1ZGMwYmY2ODJmNDI1MDg4ZTNlNjg5NjBkMmNhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleShTZWN1cml0eU9yaWdpbkRhdGEmJgogICAgIDog
bV90b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pKQogICAgICwgbV9zY29wZShXVEZNb3ZlKHNj
b3BlKSkKIHsKLSAgICBBU1NFUlQoIW1fc2NvcGUuaGFzRnJhZ21lbnQoKSk7CisgICAgQVNTRVJU
KCFtX3Njb3BlLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKIH0KIAogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjplbXB0eUtleSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxNTI4MTU1ODI1Njk4MWE0ODM4
Y2Q2MzczYjM2NzFhNWVkMDQwYWY5Li5hMGRlNDlmMDg4NDRhODZjNmUzMjk3NWNjNGJkNzA0Njc1
YjJhZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQwMiw3ICs0
MDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgaWYgKCF1c2VyLmlzTnVsbCgpKQog
ICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICBpZiAoIXBhc3N3
b3JkLmlzTnVsbCgpKQotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhwYXNzd29y
ZCk7CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAK
ICAgICByZXR1cm4gb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCmluZGV4IDllMGI2ODJjZGVkMmFmYmJmNTdhMDI4NDlkYzNiNzlkNzlhNzY3MjEuLjk1NWQz
ODhlNWU5NmUzNTE5OTM2NzRmYjk0OWVhODdhZjNmZDMxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTEzMyw3ICsx
MzMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRpcmVjdGlvbihSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcQogICAgICAgICAgICAgaGFuZGxlcihyZWRp
cmVjdGlvbkVycm9yKHJlZGlyZWN0UmVzcG9uc2UsIG1ha2VTdHJpbmcoIkNyb3NzLW9yaWdpbiBy
ZWRpcmVjdGlvbiB0byAiLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgZGVuaWVk
IGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogbm90IGFsbG93ZWQgdG8g
Zm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hl
bWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2Nh
dGlvbi5oYXNVc2VybmFtZSgpIHx8IGxvY2F0aW9uLmhhc1Bhc3N3b3JkKCkpIHsKKyAgICAgICAg
aWYgKGxvY2F0aW9uLmhhc0NyZWRlbnRpYWxzKCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIocmVk
aXJlY3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4g
cmVkaXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIGRlbmll
ZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6IHJlZGlyZWN0aW9uIFVS
TCAiLCBsb2NhdGlvbi5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlhbHMiKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBOZXR3b3JrTG9h
ZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgQ28KICAgICBodHRwc1VwZ3JhZGVDaGVja2VyLnF1ZXJ5KHVybC5ob3N0KCkudG9TdHJp
bmcoKSwgbV9zZXNzaW9uSUQsIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9zdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChmb3VuZEhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gbmV3VVJMID0gcmVxdWVzdC51cmwoKTsK
LSAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAgICAgICAgICAg
bmV3VVJMLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwo
bmV3VVJMKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAwYzg4MDU2M2Rm
ZDJhNGNhN2ExZTZkNmRlNjMyMzMwNGI3NWFkYzIyLi40Mzc3N2E5ZGUzYjZjZDU1OGUwOTRhZjg1
NWM3YmRiZjYzMWQ4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTIxOSw3ICsyMTksNyBA
QCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsK
ICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZSAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAg
ICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygp
OworICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgIHJlcXVlc3Qu
cmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAK
QEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIAogICAgIGNv
bnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsK
LSAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3
b3JkKCk7CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAg
IHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElV
UkwuaAppbmRleCAyZDc3NjM0NWUyMjQ5NmNiODc1MGMyZTYxNDljZDA2NmFjMGM3ODAzLi40Yzgz
OGFmYjczMDU5NjM1ODkzOWFmYjViYjQ1NjRkMDBhOGE2MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVVSTC5oCkBAIC02MywyNSArNjMsMjUgQEAgcHVibGljOgogICAgIFdURjo6U3RyaW5nIGhv
c3QoKSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAg
ICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5ob3N0KCkudG9T
dHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aG9z
dCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgcHJvdG9jb2woKSBjb25z
dAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4g
bV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5n
KCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnByb3RvY29s
KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBwYXRoKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFy
c2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpLnRvU3RyaW5nKCkgOiBXVEY6
OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnBhdGgoKS50b1N0cmluZygp
OwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFy
c2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKSA6IFdU
Rjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25l
bnQoKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW0KaW5kZXggYjFjMzZkYjJjMDQ2OGE2NTFkNjQ3NmEyZjlkZWNkYjMyOTY1YmRk
ZC4uMDdjZDEwZjJhM2RmOTkwYzg2NmUwZWU4OWM5OWEwNjM1MGZiZjllMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KQEAgLTIyMCw4ICsy
MjAsOCBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJv
eHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewogICAgICAgICBpZiAoYXV0byogY29udHJv
bGxlciA9IHN5c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAg
ICAgICBXVEY6OlVSTCBkZXN0aW5hdGlvblVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKLSAgICAgICAg
ICAgIGlmICghZGVzdGluYXRpb25VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkubGVuZ3RoKCkpCisg
ICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmls
ZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOworICAgICAg
ICAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAg
ICAgICAgICAgICBkZXN0aW5hdGlvblVSTC5zZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQ
cm94eS5yZXF1ZXN0KCkudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
Y29udHJvbGxlci0+ZmluaXNoKGRlc3RpbmF0aW9uVVJMKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4
IGNjMDRlNTUwYmY2ZWE2OTNjOGI4ZmUyOGNlNGQ5ZjIwNzIxZDcyMjYuLjY5YzEwYjhkZGRlMzVk
ZDZjNzk3MDIyYzViMjE5NGZhZDhmNGYyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTExMywxNSArMTEzLDkgQEAg
dm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc2hNYXAKIAogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICAgICAg
YXV0byBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKLQogICAgICAgICBIYXNoTWFwPFN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPEhhc2hTYWx0Rm9yT3JpZ2luPj4gZGV2aWNlSWRIYXNoU2FsdEZvck9y
aWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhz
KSB7Ci0gICAgICAgICAgICBVUkwgdXJsOwotICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJm
aWxlIl9zKTsKLSAgICAgICAgICAgIHVybC5zZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAg
ICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwor
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgICAg
IGF1dG8gZGV2aWNlSWRIYXNoU2FsdCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChv
cmlnaW5QYXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAKICAgICAgICAgICAg
IGlmIChoYXNoU2FsdFNpemUgIT0gZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgoKSkgewogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFz
aFNhbHRTdG9yYWdlOiBUaGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHNhbHQgKCVkKSBpcyBkaWZmZXJl
bnQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgaGFzaCBzYWx0cyBkZWZpbmVkIGluIFdlYktpdCAoJWQp
IiwgZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgoKSwgaGFzaFNhbHRTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBk
MzA1NTUzMDgwNDYyMzgxMzFmMGJmZWQ0MmQ1ZjMwMTFmMmIxZTI1Li5iN2FmNWNkYWViNWQwM2Iz
MDliYWRiZDk2MzUzYTU2YmZiZDJmN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC0xNDUsMTYgKzE0NSwxNSBAQCBQ
bHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbgogICAgIHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCitz
dGF0aWMgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5n
IGV4dGVuc2lvbjsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQo
KTsKLSAgICBpZiAoIWZpbGVuYW1lLmVuZHNXaXRoKCcvJykpIHsKLSAgICAgICAgc2l6ZV90IGV4
dGVuc2lvblBvcyA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgICAgIGlmIChleHRl
bnNpb25Qb3MgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICBleHRlbnNpb24gPSBmaWxlbmFtZS5z
dWJzdHJpbmcoZXh0ZW5zaW9uUG9zICsgMSk7Ci0gICAgfQotICAgIHJldHVybiBleHRlbnNpb24u
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gdXJsLmxhc3RQ
YXRoQ29tcG9uZW50KCk7CisgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgc2l6ZV90IGxhc3REb3RQb3NpdGlvbiA9IGZpbGVuYW1lLnJldmVy
c2VGaW5kKCcuJyk7CisgICAgaWYgKGxhc3REb3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyaW5nKGxhc3REb3RQb3Np
dGlvbiArIDEpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjOTdl
MGFlNzk1YTkxNzdiYjNmNTZkMGQwMWRhOTYxM2FhZGYyYzUwLi42ZDU1MDY1ZjUxNzBiOWJhNmUw
MGEyNDljMGRjNTg0MTk5OTc2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUlu
aXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAj
ZW5kaWYKIAogICAgIC8vIFdlIGZhaWxlZCB0byBpc3N1ZSBhbiB1bml2ZXJzYWwgZmlsZSByZWFk
IGFjY2VzcyBzYW5kYm94LCBmYWxsIGJhY2sgdG8gaXNzdWluZyBvbmUgZm9yIHRoZSBiYXNlIFVS
TCBpbnN0ZWFkLgotICAgIGF1dG8gYmFzZVVSTCA9IFVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmlu
ZygpKTsKKyAgICBhdXRvIGJhc2VVUkwgPSB1cmwudHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCk7CiAg
ICAgYXV0byBiYXNlUGF0aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAoYmFz
ZVBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxODgsNyArNTE4OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3Mg
PSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
CiAgICAgICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQotICAg
ICAgICAgICAgJiYgKG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUtPnVy
bCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlKQorICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1l
ICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCiAg
ICAgICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJD
b3JlOjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICAgICAgYXV0byBuYXZpZ2F0
aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUlu
Zm8ucHRyKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0
LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5
KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7CkBAIC01MzE0LDcgKzUzMTQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBGcmFtZQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwogCiAgICAgICAgIGF1dG8gdXNl
ckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2
aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBi
b29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9t
YWluRnJhbWUtPnVybCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlOworICAgICAgICBib29sIHNo
b3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0
KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlv
biA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92
ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RG
TW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAtNTUxMiw3ICs1NTEyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgT3B0aW8KIAogICAgICAgICByZXBseShuZXdQYWdlLT53ZWJQYWdlSUQoKSwgbmV3UGFn
ZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKG1fcHJvY2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVhKCkp
KTsKIAotICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVS
TCksIHJlcXVlc3QudXJsKCkpOworICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBw
TGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBVUkwoeyB9LCBtYWluRnJhbWVV
UkwpLmhvc3QoKSA9PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKIAogI2lmIEhBVkUoQVBQX1NTTykK
ICAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IHRydWU7CkBAIC01NTIwLDcgKzU1MjAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBPcHRpbwogICAgIH07CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICBib29sIHNob3VsZE9wZW5BcHBM
aW5rcyA9ICFob3N0c0FyZUVxdWFsKG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJs
KCksIHJlcXVlc3QudXJsKCkpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2lu
YXRpbmdGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5o
b3N0KCk7CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
OjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvLnB0cigpLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgp
LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAK
ICAgICB0cnlTT0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRoaXMs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVhdHVyZXMpXSAoUmVm
PEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDJhZWRkYWQwMTc0YTllNjk5NTY1ZDJmZjE4ZWFiNTBmNjNjODY2ZTQuLjI3ZWRmMTZmYTYw
NmZmNWE3ZmU5YWVhOTZkOWYzYTg0MWYyODRlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTYyLDExICs1NjIsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2ViUGFnZVByb3h5JiBwYWdlLCBj
b25zdCBTdHJpbmcKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJpbmcgZG9l
cyBub3QgcG9pbnQgdG8gYSBkaXJlY3RvcnkuCiAgICAgLy8gR2V0IHVybCdzIGJhc2UgVVJMIHRv
IGFkZCB0byBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuCi0gICAgVVJMIGJhc2VV
UkwoVVJMKCksIHVybC5iYXNlQXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHBhdGggPSBiYXNlVVJM
LmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnRydW5jYXRlZEZvclVzZUFz
QmFzZSgpLmZpbGVTeXN0ZW1QYXRoKCk7CiAgICAgaWYgKHBhdGguaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAKKwogICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5n
LiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJv
Y2VzcyBpcyBhc3N1bWVkCiAgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVj
dG9yeSBhbHJlYWR5LgogICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQo
cGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggODdjYjhiNzA1
NDM5NmQ3ZWY2NjFmMGY0N2U2ZjU4YWQ4Zjc2N2JiZC4uNmVlZjRhMjRkODM3MGM5YmIxYWFlZDkx
YTFhNjY5YTZhODE3YWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpA
QCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJv
dW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICBm
b3IgKE5TU3RyaW5nICpkb21haW4gaW4gZG9tYWlucy5nZXQoKSkgewogICAgICAgICAgICAgICAg
IFVSTCB1cmwgeyBVUkwoKSwgZG9tYWluIH07CiAgICAgICAgICAgICAgICAgaWYgKHVybC5wcm90
b2NvbCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJo
dHRwcyJfcyk7CisgICAgICAgICAgICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFw
cEJvdW5kRG9tYWluIHsgdXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmlu
ZGV4IDkwMzk5MGJmOTRlODM4NWZkZTlmMTU0YzNkMzVkYWU1MzNkMDAwM2IuLjQ4NzUxYWJmNDgz
MjQ1ODk2MWJlNzNhYTVhNTk1YjA1ZGVjZWFmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwCkBAIC02MCwxOSArNjAsMTAgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4g
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKICAgICBpZiAo
bV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVz
dWx0czsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICBVUkwgdXJsOwot
ICAgICAgICB1cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgICAgICB1cmwuc2V0UGF0aChv
cmlnaW5QYXRoKTsKLQotICAgICAgICBTdHJpbmcgbWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCk7Ci0KLSAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIp
OwotICAgICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgcmVzdWx0cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKKyAgICBmb3IgKGF1dG8m
IG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5LCAiKiIpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChvcmlnaW5QYXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3Ry
aW5nKCk7CisgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IGFlZDMwMWE1NGRkOTliZWI2OGZiMTQzOGQyZDFjMjU0ZDAzMDE2ZTQuLmU0ZWZh
NDgwOWYwYTNmZjUwYTYxNmZlMTFhNzUwNTg5YTQ3OGVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTU2MiwxMCArMTU2
Miw4IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQogICAgIGlmIChbbV9w
ZGZEb2N1bWVudCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7
CiAKLSAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pIHsKLSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdtZW50
ID0gbV9mcmFtZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgW21fcGRmTGF5
ZXJDb250cm9sbGVyIHNldFVSTEZyYWdtZW50OnBkZlVSTEZyYWdtZW50XTsKLSAgICB9CisgICAg
aWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dFVSTEZyYWdtZW50OildKQorICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJh
Z21lbnQ6bV9mcmFtZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS5jcmVhdGVOU1N0cmluZygp
LmdldCgpXTsKIH0KIAogdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cAppbmRleCA3NjhiYTJkN2M0Njg2YzA2ZWU5NzRhYmJkNjUyNTQxMWYzYmJjYzkzLi40MWQzZWQ4
NWUzMzdjNTE2Y2I1Y2RlMGQ5N2NlMjE4Y2EyMTUxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAKQEAgLTI0LDE3ICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgotCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnUuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQyLDcgKzM4LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OmNvbnRleHRNZW51RGVzdHJveWVkKCkKIHsKQEAgLTU2LDE5ICs1MSwyMSBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogfQogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0
aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0
cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAg
c2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVw
bGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6
Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRG
LTgiOworICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4
dCgpOworICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJp
bmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2Vh
cmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0g
VVJMIHsgeyB9LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3Ry
aW5nICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJh
bWUtPnBhZ2UoKSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCku
Y2hhbmdlTG9jYXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0g
ICAgfQorICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNv
cmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRl
cigpLmNoYW5nZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2Nr
SGlzdG9yeTo6Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpS
ZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikKQEAgLTkxLDE0ICs4OCwxOCBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CisKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVY
VF9NRU5VUykKKwogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkK
IHsKICAgICBtX3BhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKIH0KKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggODA5NGE2MjgyMjYxYjVlODM5NzQ1ZDg2
ZTYwNDNhZjRjZTZjNzIzOC4uMzBjNmZmZTIzZjFlNDlmMTVmNjY4MzhiNjg0MWI1NjYyYzdlZWYx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBTdHJpbmcgdGl0bGUgPSBsYWJlbDsKICAgICBp
ZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CisgICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmco
KTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KaW5kZXggYzg0NDhjNWFjMWY0MzYyZTQ0MDNjM2FjMjlhMjg2YTlhZjVlYmI4ZS4uY2NhZTIx
MmM1NmNhNDg5MWI2N2M2ZDNiZWU0Y2QzMzE5MmIyYTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTg4Miw3ICs4ODIsNyBAQCBzdGF0aWMgQk9PTCBzaG91bGRUcnlBcHBMaW5r
KFdlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mCiAgICAg
aWYgKCFhY3Rpb24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBOTzsK
IAotICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSAmJiBob3N0
c0FyZUVxdWFsKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgYWN0aW9uLnVybCgpKSkK
KyAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgdGFyZ2V0
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpLmhvc3QoKSA9PSBhY3Rpb24udXJsKCkuaG9zdCgpKQog
ICAgICAgICByZXR1cm4gTk87CiAKICAgICByZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTgxYzMwYjdhOTk4NjM4MzliMDUxYzQ1
OWFmZTA1ZTAyNzhlZDRkYS4uYzg0MGJjMWQ2MmRkNWRhOGZiMDgzNjU3NGMwYmQ0MWE5ZjE2Y2M0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0y
Mjk1LDE0ICsyMjk1LDEwIEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFn
bWVudEZvcldlYkFyY2hpdmU6KFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTooTlNEYXRhICopZGF0
YSB3aXRoUmVsYXRpdmVVUkxQYXJ0OihOU1N0cmluZyAqKXJlbGF0aXZlVVJMUGFydCBhbmRNSU1F
VHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQogewotICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9
IFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOlVSTDo6ZmFrZVVS
TFdpdGhSZWxhdGl2ZVBhcnQocmVsYXRpdmVVUkxQYXJ0KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTptaW1lVHlwZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpu
aWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZU5hbWU6bmlsXTsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2Vs
ZiBfZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJj
ZV07Ci0gICAgW3Jlc291cmNlIHJlbGVhc2VdOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBh
dXRvIHJlc291cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6
ZGF0YQorICAgICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmcgeyBy
ZWxhdGl2ZVVSTFBhcnQgfSkKKyAgICAgICAgTUlNRVR5cGU6bWltZVR5cGUgdGV4dEVuY29kaW5n
TmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOworICAgIHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2Vd
IF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2UuZ2V0KCldOwogfQog
CiAtIChCT09MKWZvY3VzZWROb2RlSGFzQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNTIwZWE1NjY0YWYyODc1NjlhODU1Yzc0
YjgxY2VhNTRjN2U4ZTIwMi4uZWY4NjJlNWFhYWFhMDk0N2EzYjcxMGQwN2JiY2U3ODg4ZDczZDBi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC0yMzA2LDcgKzIzMDYsNyBAQCAtICh2b2lkKWNsb3NlCiAKIC0gKERPTURvY3VtZW50RnJh
Z21lbnQgKilfd2ViX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJk
ICopcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZTooTlNTdHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBp
bWFnZU1JTUVUeXBlOihOU1N0cmluZyAqKWltYWdlTUlNRVR5cGUKIHsKLSAgICBhdXRvIGZpbGVu
YW1lID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5n
OkAiLyIgd2l0aFN0cmluZzpAIi4iXTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBbaW1hZ2VNSU1F
VHlwZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5n
OkAiLiJdOwogICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV0KICAg
ICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoZmlsZW5hbWUpIE1JTUVUeXBl
OmltYWdlTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOwogICAg
IHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVz
b3VyY2U6cmVzb3VyY2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4
IGFhNTFiNjM5NDg4OGE3MGI3ZjBkOWRiYTA1MWZlMjViMWUxNmZmOTcuLmYxNDE4NjMwZWY2ZTlk
YTJjMzM5ZjBhZDFlZDhlZTY2OWE4ODg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0KQEAgLTI1NSw3ICsyNTUsNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25D
b250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKICAgICAgICAgcmV0dXJuIFtb
W1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKIAogICAg
IE5TVVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBOU1N0
cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBTdHJp
bmcgYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJs
ICYmIF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoV1RGOjpwcm90
b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBl
ID0gV2ViSW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcAppbmRleCBjMjY1ZTA4M2UxZjdjOWFmYzgzYmM4ZTAxZThmNDRlZWY3YWI1M2I5Li4xNDJl
MWMzMTY2Y2FhZGFjZDM1ZGE4MmNjNmIzY2U0NDJmNGI2NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuY3BwCkBAIC0yNSwyMSArMjUsMTQgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51Q2xpZW50LmgiCiAKLSNpbmNsdWRlICJXZWJFbGVtZW50UHJvcGVydHlCYWcuaCIKLSNpbmNs
dWRlICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdl
c3R1cmVJbmRpY2F0b3IuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpXZWJDb250ZXh0TWVudUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC01NywxNyArNTAsMTggQEAgdm9pZCBXZWJDb250
ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiAKIHZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewot
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7
Ci0gICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVk
ID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29k
ZWQucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAi
aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgm
b2U9VVRGLTgiOworICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpOworICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFy
Y2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Cisg
ICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNo
VVJMID0gVVJMIHsgeyB9LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2Vh
cmNoU3RyaW5nICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0
b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6
OkVtcHR5U3RyaW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7
IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgp
LmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3Jl
OjpMb2NrSGlzdG9yeTo6Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJD
b3JlOjpSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVu
dUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyM2FhOTY4Yjg3N2E4ODhhZjczMzg3ODNh
Njk1ZTUyZTE4OGYzZGQ0Li5hZDNmODdiOWUzMDQ2YmZlYzQ1ODM1NmZjODRhZGZjYTg5MDc3ZTVj
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0
cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwOiBSZW1vdmVkIHRoZSB0
ZXN0IGZvcgorICAgICAgICBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCBzaW5jZSB3ZSBy
ZW1vdmVkIGhhdCBmdW5jdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tVUkwpOiBVcGRhdGVkIGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBmcm9tIFVSTDo6
cGFzcy4KKwogMjAyMC0wNC0xMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjI1OTkwMCkgOiBTcGVlZG9tZXRlciBmYWlsaW5nIG9uIENh
dGFsaW5hLVJlbGVhc2UtV0syLVBlcmYgYm90CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
LmNwcAppbmRleCA5MzdiOWY5NDBiZjkxMTNmY2UzNzIzZmFmMGM1ZTViZjZiMWM4N2RlLi5lMjM2
ODEwMmQ1N2RhMGI3ZjRmYzIzM2JhYzA0YmQ2ZDEwZTFhMDM3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1VSTC5jcHAKQEAgLTI2MSw1NyArMjYxLDYgQEAgVEVTVF9GKFdURl9VUkwsIEVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIpCiAgICAgfQogfQogCi1URVNUX0YoV1RGX1VS
TCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCi17Ci0gICAgc3RydWN0IFRlc3RDYXNl
IHsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMTsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMjsK
LSAgICAgICAgYm9vbCBleHBlY3RlZDsKLSAgICB9IGNhc2VzW10gPSB7Ci0gICAgICAgIHsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVl
fSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
L3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
IiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkjaGFzaCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwg
dHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyNoYXNoIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MC9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwK
LSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhh
bXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9w
YXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNv
bS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9ub3QtZXhhbXBsZS5jb206ODAvIiwg
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tOjgxLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgdHJ1
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCAiaHR0cDovL2V4YW1w
bGUuY29tOjgxIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRo
I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb206ODEv
cGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5
I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9w
YXRoIiwgZmFsc2V9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCAiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWwjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0g
ICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSIsICJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRt
bD9xdWVyeSNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAg
ICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXJfZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9m
aWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyL2ZpbGUu
aHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAotICAgICAgICB7ImRh
dGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iLCAiZGF0YTp0
ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2MC83NjAvNzYwLyIsIGZhbHNlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZTovL2V4YW1wbGUuY29tIiwgZmFsc2V9
LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5j
b20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSIsICJmaWxl
Oi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8/
cXVlcnkjaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgIH07Ci0KLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgewotICAgICAgICBVUkwgdXJsMSA9IGNy
ZWF0ZVVSTCh0ZXN0LnVybDEpOwotICAgICAgICBVUkwgdXJsMiA9IGNyZWF0ZVVSTCh0ZXN0LnVy
bDIpOwotICAgICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3RlZCwgZXF1YWxJZ25vcmluZ1F1ZXJ5
QW5kRnJhZ21lbnQodXJsMSwgdXJsMikpCi0gICAgICAgICAgICA8PCAiVGVzdCBmYWlsZWQgZm9y
ICIgPDwgdGVzdC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51cmwyOwotICAgIH0KLX0KLQogVEVT
VF9GKFdURl9VUkwsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkpCiB7CiAgICAgRVhQRUNUX0ZBTFNF
KFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAK
aW5kZXggYTI2ODE2ZGExNDkxZjZlM2IyMDU3YzY2YTdkY2E0NTlkMTM2MTRkMy4uZTI2MTc5MzM0
MjUyMjQzYmE1ZjE0MTgwZjcyMjRlYjc3NTRkY2ExZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnMKICAgICBhdXRvIHVybCA9
IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dv
cmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAg
ICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xMTgsNyArMTE4LDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNl
VVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1
cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNz
d29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwog
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396375</attachid>
            <date>2020-04-13 20:29:21 -0700</date>
            <delta_ts>2020-04-13 20:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200413202919.patch</filename>
            <type>text/plain</type>
            <size>169778</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNlMzNjZTNmYTQ4YmIzMGRlYTE3MGZi
YzU5MTk5NGE3N2QzMzJlMWEuLjhiNTE3YjIxMzBmYWI3OWI2Y2MwYWQ3ZWViMTgwY2ZlNzc2YWM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTU0IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpob3N0QW5kUG9ydCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQgdHlwZSBjYXN0LCBub3cK
KyAgICAgICAgdGhhdCBtYWtlU3RyaW5nIGNvcnJlY3RseSBoYW5kbGVzIHVpbnQxNl90IHNpbmNl
IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICB0aGUgc2FtZSB0eXBlIGFzIFVDaGFyLgorICAgICAg
ICAoV1RGOjpVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQgY29uc3QpOiBPcHRpbWl6ZWQgdG8gYWx3
YXlzIGFsbG9jYXRlCisgICAgICAgIHRoZSBzdHJpbmcgaW4gdGhlIHJpZ2h0IHNpemUgcmF0aGVy
IHRoYW4gcmVtb3ZpbmcgY2hhcmFjdGVycyBmcm9tIGl0CisgICAgICAgIGFmdGVyIGNyZWF0aW5n
IGl0LgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZSk6IEFkZGVkLiBGYWN0b3Jl
ZCBvdXQgZnJvbSB0aGUgZnVuY3Rpb24KKyAgICAgICAgYmVsb3cgdG8gbWFrZSBpdCBhIGxpdHRs
ZSBtb3JlIHJlYWRhYmxlLgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9t
UGFyc2VkVVJMKTogQ29udmVydCBhIG51bGwgU3RyaW5nVmlldworICAgICAgICB0byBhIG51bGwg
U3RyaW5nIHJhdGhlciB0aGFuIGFuIGVtcHR5IFN0cmluZywgdXNlIGEgc3RhY2sgYnVmZmVyIGFu
ZAorICAgICAgICB0aGUgaGVscGVyIGZ1bmN0aW9uIGFib3ZlLCBhbmQgYWRkZWQgc29tZSBGSVhN
RSBjb21tZW50cyBhYm91dAorICAgICAgICBlbmNvZGluZyBoYW5kbGluZy4KKyAgICAgICAgKFdU
Rjo6VVJMOjp1c2VyIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5nIGVuY29kZWRVc2VyLgor
ICAgICAgICAoV1RGOjpVUkw6OnBhc3N3b3JkIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5n
IGVuY29kZWRQYXNzd29yZC4KKyAgICAgICAgKFdURjo6VVJMOjplbmNvZGVkVXNlciBjb25zdCk6
IFJldHVybiBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFBhc3N3b3Jk
IGNvbnN0KTogRGl0dG8uIEFsc28gcmVuYW1lZCBmcm9tIGVuY29kZWRQYXNzLgorICAgICAgICAo
V1RGOjpVUkw6OmZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IE1vdmVkIHRvIGhlYWRlciBzbyBp
dCBjYW4KKyAgICAgICAgYmUgaW5saW5lZC4KKyAgICAgICAgKFdURjo6VVJMOjp0cnVuY2F0ZWRG
b3JVc2VBc0Jhc2UgY29uc3QpOiBSZW5hbWVkIGZyb20gYmFzZUFzU3RyaW5nLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgd2l0aCBsb2NhbCBmaWxlIFVSTHMg
YW5kIGl0J3MKKyAgICAgICAgbm90IHBlcmZlY3RseSBjbGVhciB0byBtZSBwcmVjaXNlbHkgd2hh
dCBpdCBpcyBmb3IsIGhlbmNlIHRoZSBuYW1lCisgICAgICAgIGlzIG5vdCBzbyBncmVhdC4KKyAg
ICAgICAgKFdURjo6VVJMOjpmaWxlU3lzdGVtUGF0aCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQg
Y2hlY2sgZm9yIHZhbGlkaXR5CisgICAgICAgIHNpbmNlIGlzTG9jYWxGaWxlIGRvZXMgdGhhdCBj
aGVjay4gUmVtb3ZlZCB1bm5lZWRlZCB0eXBlY2FzdCBub3cgdGhhdAorICAgICAgICBwYXRoIHJl
dHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuc3VyZURlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cmVnaXN0
ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbElzIGNvbnN0KTogUmVtb3ZlZCB1bm5lZWRlZCBleHBsaWNpdCBjYXN0IHRv
IFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cXVlcnkgY29uc3QpOiBSZXR1cm4gYSBT
dHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBhdGggY29uc3QpOiBSZXR1cm4gYSBTdHJp
bmdWaWV3LCB1c2UgdGhlIHBhdGhTdGFydAorICAgICAgICBmdW5jdGlvbiBmb3IgY2xhcml0eS4K
KyAgICAgICAgKFdURjo6VVJMOjpzZXRQcm90b2NvbCk6IFVzZSBhIHRvU3RyaW5nV2l0aG91dENv
cHlpbmcgdG8gc2F2ZSBzb21lCisgICAgICAgIHdvcmsgd2hlbiBtYWtpbmcgdGhlIHByb3RvY29s
IGNhbm9uaWNhbC4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0aW5nIGEgVVJM
UGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6Y3JlZGVudGlhbHNFbmQgY29uc3QpOiBB
ZGRlZC4gSGVscGVyIGZvciB2YXJpb3VzIGZ1bmN0aW9ucworICAgICAgICB0aGF0IG1hbmlwdWxh
dGUgdGhlIGNyZWRlbnRpYWxzIHNlY3Rpb24uCisgICAgICAgIChXVEY6OlVSTDo6c2V0SG9zdCk6
IFRha2UgU3RyaW5nVmlldy4gU3RyZWFtbGluZWQgdGhlIGNvZGUgYnkgdXNpbmcKKyAgICAgICAg
U3RyaW5nVmlldzo6Y29udGFpbnMsIGJ5IHVzaW5nIG1ha2VTdHJpbmcgcmF0aGVyIHRoYW4gU3Ry
aW5nQnVpbGRlciwKKyAgICAgICAgYW5kIGJ5IGNhbGxpbmcgcGFyc2UgaW5zdGVhZCBvZiBjcmVh
dGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZVBvcnQpOiBE
ZWxldGVkLCBzaW5jZSBzZXRQb3J0IHRha2VzIGFuIE9wdGlvbmFsIG5vdy4KKyAgICAgICAgKFdU
Rjo6VVJMOjpzZXRQb3J0KTogVGFrZSBPcHRpb25hbDx1aW50MTZfdD4uIEdvdCByaWQgb2YgdGhl
IGNhc3QgdG8KKyAgICAgICAgdW5zaWduZWQgdGhhdCB1c2VkIHRvIGJlIG5lZWRlZCB0byB1c2Ug
dWludDE2X3Qgd2l0aCBtYWtlU3RyaW5nLCBhbmQKKyAgICAgICAgY2FhbGwgcGFyc2UgaW5zdGVh
ZCBvZiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92
ZUhvc3RBbmRQb3J0KTogRGVsZXRlZC4gQ2FsbGVycyBjYW4gcGFzcyBhIG51bGwKKyAgICAgICAg
U3RyaW5nVmlldyB0byBzZXRIb3N0QW5kUG9ydCBpbnN0ZWFkLgorICAgICAgICAoV1RGOjpVUkw6
OnNldEhvc3RBbmRQb3J0KTogVGFrZSBTdHJpbmdWaWV3LiBEb24ndCByZW1vdmUgdGhlIG9sZAor
ICAgICAgICBob3N0IGFuZCBwb3J0IGluIHRoZSBub21yYWwgY2FzZSB3aGVyZSB3ZSBlbmQgdXAg
b3ZlcndyaXRpbmcgdGhlIGVudGlyZQorICAgICAgICBVUkwgYXQgdGhlIGVuZCBvZiB0aGUgZnVu
Y3Rpb24gYW55d2F5LiBVc2UgcGFyc2VVSW50MTYgaW5zdGVhZCBvZgorICAgICAgICB0b0ludFN0
cmljdCB0byBjaGVjayBwb3J0IG51bWJlciBmb3IgdmFsaWRpdHksIHdoaWNoIG1ha2VzIHN1cmUg
d2Ugd2lsbAorICAgICAgICByZWplY3QgcG9ydCBudW1iZXJzIGxhcmdlciB0aGFuIDY1NTM1LiBV
c2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIgYW5kIGNhbGwg
cGFyc2UgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdU
Rjo6cGFyc2UpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNyZWF0ZSBhIG5l
dyBzdHJpbmcKKyAgICAgICAgYW5kIHdhbnQgdG8gcGFyc2UgaXQgYXMgdGhlIG5ldyBjb250ZW50
cyBvZiB0aGUgVVJMLiBVc2VkIGluIGFsbW9zdAorICAgICAgICBldmVyeSBzZXR0ZXIgZnVuY3Rp
b24uCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiBm
b3IgZWZmaWNpZW50bHkgcmVtb3ZpbmcKKyAgICAgICAgYSBwaWVjZSBvZiB0aGUgVVJMIHN0cmlu
ZyBhbmQgcmUtcGFyc2luZy4gVXNlZCBpbiBtYW55IHNldHRlciBmdW5jdGlvbnMuCisgICAgICAg
IChXVEY6OlVSTDo6c2V0VXNlcik6IFRha2UgU3RyaW5nVmlldy4gVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZgorICAgICAgICBTdHJpbmdCdWlsZGVyLCBhbmQgcGFyc2UgYW5kIHJlbW92ZSBpbnN0
ZWFkIG9mIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6c2V0
UGFzc3dvcmQpOiBSZW5hbWVkIGZyb20gc2V0UGFzcy4gVGFrZSBTdHJpbmdWaWV3LgorICAgICAg
ICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQg
cmVtb3ZlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAg
ICAgICAgKFdURjo6VVJMOjpyZW1vdmVDcmVkaWVudGlhbHMpOiBBZGRlZC4gRWZmaWNpZW50bHkg
cmVtb3ZlcyBib3RoIHRoZQorICAgICAgICB1c2VyIG5hbWUgYW5kIHBhc3N3b3JkIGlmIGVpdGhl
ciBpcyBwcmVzZW50LgorICAgICAgICAoV1RGOjpVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcik6
IFVzZSBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nCisgICAgICAgIGEgVVJMIHBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcik6IFJlbW92ZWQg
dW5uZWNlc3NhcnkgY2hlY2tzIGZvcgorICAgICAgICB0aGluZ3MgYWxyZWFkeSBvcHRpbWl6ZWQg
YnkgU3RyaW5nOjpsZWZ0LiBDb3VsZCBsYXRlciBjb25zaWRlciBtZXJnaW5nCisgICAgICAgIHRo
aXMgaW4gd2l0aCBzZXRGcmFnbWVudElkZW50aWZpZXIsIHVzaW5nIGEgbnVsbCB2cy4gZW1wdHkg
ZGlzdGluY3Rpb24sCisgICAgICAgIGJ1dCBub3QgZG9pbmcgdGhhdCBmb3Igbm93LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFF1ZXJ5KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpV
Ukw6OnNldFBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnN0cmluZ1dpdGhv
dXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXVEY6OnN0cmlu
Z1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcik6IFNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgdXNpbmcgc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllci4KKyAgICAgICAg
KFdURjo6ZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpob3N0c0FyZUVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VVJMOjppc01hdGNo
aW5nRG9tYWluIGNvbnN0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpwcm90b2Nv
bElzKTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnByb3RvY29sSXMpOiBN
b3ZlZCB0byBpbmxpbmUgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpcHBl
ZEZvclVzZUFzUmVmZXJyZXIgY29uc3QpOiBSZXdyaXRlIGZvciBlZmZpY2llbmN5LgorICAgICAg
ICAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KTogVGFrZSBTdHJpbmdW
aWV3LgorICAgICAgICAoV1RGOjphYm91dEJsYW5rVVJMKTogVXNlIEFTQ0lJTGl0ZXJhbC4KKyAg
ICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOiBVc2UgQVNDSUlMaXRlcmFsLgorICAgICAgICAo
V1RGOjpwb3J0QWxsb3dlZCk6IFJlbW92ZWQgNjU1MzUgYXMgYSBibG9ja2VkIHBvcnQ7IHdhc24n
dCBuZWVkZWQuCisgICAgICAgIChXVEY6Om1pbWVUeXBlRnJvbURhdGFVUkwpOiBUYWtlIFN0cmlu
Z1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
IGNvbnN0KTogVHdlYWtlZCBzdHlsZS4KKyAgICAgICAgKFdURjo6VVJMOjpmYWtlVVJMV2l0aFJl
bGF0aXZlUGFydCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKTogVGFrZSBTdHJpbmdWaWV3Li4KKyAgICAgICAgKFdURjo6VVJM
OjpxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
VEY6OlVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduIGNvbnN0KTog
QWRkZWQuCisgICAgICAgIChXVEY6OlVSTDo6aG9zdElzSVBBZGRyZXNzKTogVHdlYWsgY29kaW5n
IHN0eWxlLgorCisgICAgICAgICogd3RmL1VSTC5oOiBNYWRlIFVSTFRleHRFbmNvZGluZyBkZXN0
cnVjdG9yIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICB1bnVzZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbiBvZiBVUkxIYXNoIHN0cnVjdHVyZS4gVXNlIFdURl9FWFBPUlRfUFJJVkFURQorICAgICAg
ICBvbiBmdW5jdGlvbnMgZnJvbSBVUkwgcmF0aGVyIHRoYW4gb24gdGhlIHdob2xlIGNsYXNzLCBz
aW5jZSB0aGUgc3R5bGUKKyAgICAgICAgY2hlY2tlciB0b2xkIG1lIHRvIGRvIHRoYXQuIE1vdmVk
IHNvbWUgaW5saW5lIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YKKyAgICAgICAgdGhlIGNsYXNzIGRl
ZmluaXRpb24gZm9yIGNsYXJpdHkgYW5kIHRvIGtlZXAgdGhlIHN0eWxlIGNoZWNrZXIgaGFwcHku
CisgICAgICAgIFVwZGF0ZWQgbWFueSBhcmd1ZW1udHMgZnJvbSBTdHJpbmcgdG8gU3RyaW5nVmll
dyBhbmQgcmV0dXJuIHZhbHVlcyBmb3IKKyAgICAgICAgc3Vic3RyaW5ncyBvZiB0aGUgVVJMIHRv
IFN0cmluZ1ZpZXcuIFJlbW92ZWQgc29tZSB1bnVzZWQgZnVuY3Rpb25zIGFuZAorICAgICAgICBz
b21lIG9ic29sZXRlIGNvbW1lbnRzLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNw
cDoKKyAgICAgICAgKFdURjo6aXNDRlVSTFNhbWVPcmlnaW4pOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OmVuZHNXaXRoIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OnBhcnNlVUludDE2
KTogQWRkZWQuCisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdOdWxsaXR5KTogQWRkZWQuIEN1
cnJlbnRseSB0aGUgc2FtZSBhcyBlcXVhbCwgYnV0CisgICAgICAgIGNvdWxkIGJlIGRpZmZlcm5l
dCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25z
dCk6IEFkZGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0
aGUgY2FsbCBzaXRlIGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0
aW9ucyBhYm92ZS4KKyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0
aGUgZmluZCBmdW5jdGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhw
bGljaXQgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisg
ICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6
Y2hhcmFjdGVyc1RvSW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMTMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBDaGVja2VkPHNp
emVfdCwgUmVjb3JkT3ZlcmZsb3c+IHdpdGggQ2hlY2tlZFNpemUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjFj
Yzg5MzU2NDRjZDFkNjZhNGRhZjI0NjhmMjFmNDkxOGEzYjJjLi43N2VkYjNhYWQzYjM3N2E2Nzcz
ZmZhYzc5MTZlNWU2NTM1YzQ3NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIw
LTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
Ojppbml0aWFsaXplV2l0aCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25z
ZTo6cmVkaXJlY3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgICogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
VVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcik6IFVzZSBoYXNDcmVkZW50aWFscy4KKwor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWW91VHViZVVSTCk6IFRha2UgU3RyaW5nVmlldy4KKyAg
ICAgICAgKFdlYkNvcmU6OnF1ZXJ5S2V5c0FuZFZhbHVlcyk6IFRha2UgU3RyaW5nVmlldy4KKyAg
ICAgICAgKFdlYkNvcmU6OnByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKTogVXNlIGF1dG8gc2lu
Y2UgVVJMIHBpZWNlcyBhcmUKKyAgICAgICAgbm93IHJldHVybmVkIGFzIFN0cmluZ1ZpZXcuCisg
ICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9t
QWJzb2x1dGVVUkwpOgorICAgICAgICBVc2UgU3RyaW5nVmlldyBhbmQgbWFrZVN0cmluZyByYXRo
ZXIgdGhhbiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvdXJjZU5hbWUpOiBV
c2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6IFVzZSBzZXRIb3N0QW5kUG9ydC4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmRB
bmNob3JFbGVtZW50Rm9yTGluayk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50
aWZpZXIgcmV0dXJucyBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6
IEFkZGVkIGEgY29tbWVudC4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVy
bnMgYSBTdHJpbmdWaWV3LiBBbHNvIGdvdCByaWQgb2Ygc29tZSBzdHJhbmdlCisgICAgICAgIHVz
ZSBvZiBBdG9tU3RyaW5nIHRoYXQgd2FzIG5vdCBuZWNlc3NhcnkgYW5kIHVzZWQgV1RGTW92ZSBt
b3JlLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKTogVXBkYXRlIHNpbmNlCisgICAg
ICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICog
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0
dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVGb3JEaXNwbGF5IGNvbnN0KToKKyAgICAg
ICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLCBhbmQgU3RyaW5nVmll
dyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZyBmb3IgbmFtZSBhbmQgZXh0ZW5zaW9uIHZhbHVl
cy4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogVXBkYXRlIHNpbmNlIGxhc3RQYXRoQ29t
cG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogaHRtbC9N
ZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21l
bnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGZyYWdt
ZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDogQ2hhbmdlZCBzZXRIb3N0IHRvIHRha2UgYSBTdHJpbmdWaWV3LCBjaGFuZ2VkCisg
ICAgICAgIHZhcmlvdXMgb3RoZXIgZnVuY3Rpb25zIHRvIGNhbGwgdG9TdHJpbmcsIHNpbmNlIHRo
ZSB1bmRlcmx5aW5nIFVSTAorICAgICAgICBmdW5jdGlvbiBub3cgcmV0dXJucyBhIFN0cmluZ1Zp
ZXcuIFVwZGF0ZWQgbmFtZXMgc2luY2UgInBhc3MiIGlzIG5vdworICAgICAgICAicGFzc3dvcmQi
LgorICAgICAgICAoV2ViQ29yZTo6Y291bnRBU0NJSURpZ2l0cyk6IEFkZGVkLiBSZXBsYWNlcyB1
bnVzdWFsIGZ1bmN0aW9uCisgICAgICAgIG5hbWVkIHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlv
biBiZWNhdXNlIHdlIGNhbiB1c2UgU3RyaW5nVmlldyBub3cKKyAgICAgICAgYW5kIHNvIGRvbid0
IG5lZWQgc3VjaCBhbiB1bnVzdWFsIGZ1bmN0aW9uLgorCisgICAgICAgICogbG9hZGVyL0FkQ2xp
Y2tBdHRyaWJ1dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246
OnBhcnNlQ29udmVyc2lvblJlcXVlc3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgIEFs
c28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSB1c2Ugb2YgQVNDSUlMaXRlcmFsIHRoYXQgaHVydHMgcGVy
Zm9ybWFuY2UKKyAgICAgICAgYSB0aW55IGJpdC4KKworICAgICAgICAqIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVDcm9zc09y
aWdpblJlZGlyZWN0aW9uVVJMKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKwor
ICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6IFVwZGF0ZSBzaW5jZSBxdWVyeSByZXR1cm5z
CisgICAgICAgIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmNyZWF0ZUZpbGVVUkwpOiBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aC4KKworICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYW5pZmVzdFBhdGgpOiBSZXR1cm4gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6IFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2FsY3Vs
YXRlSXRlbUluQ29sbGVjdGlvbiBjb25zdCk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVu
dElkZW50aWZlciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVxdWVzdFVSTCk6IERpdHRv
LgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsVG9GcmFnbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwpOiBVcGRhdGVkIGxvZyBtZXNzYWdlLgorCisg
ICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0
YXRlT2JqZWN0QWRkZWQpOiBVcGRhdGVkIGZvciBVUkw6OnBhc3N3b3JkIG5hbWUgY2hhbmdlCisg
ICAgICAgIGFuZCB0byB1c2UgdGhlIG5ldyBzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRl
bnRpZmllciByYXRoZXIgdGhhbiB0aGUKKyAgICAgICAgb2xkIGVxdWFsSWdub3JpbmdRdWVyeUFu
ZEZyYWdtZW50LgorCisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhdGlvbjo6aHJlZiBjb25zdCk6IFVzZSByZW1vdmVDcmVkZW50aWFscy4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0IGNvbnN0KTogU3RyZWFtbGluZWQuCisgICAgICAg
IChXZWJDb3JlOjpMb2NhdGlvbjo6cGF0aG5hbWUgY29uc3QpOiBVc2UgYW4gQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNlYXJjaCBjb25zdCk6IFVzZSBxdWVyeVdp
dGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246Omhhc2gg
Y29uc3QpOiBVc2UgZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQpOiBVc2UgcGFyc2VVSW50MTYuCisKKyAg
ICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6IENvZGluZyBzdHlsZSB0d2Vh
a3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2Fy
eSk6CisgICAgICAgIFVzZSBjb250YWlucyBpbnN0ZWFkIG9mIHJldmVyc2VGaW5kIHRvIGNoZWNr
IGZvciBhIHBlcmlvZCBpbiB0aGUgZmlsZW5hbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQgaXMgYSBTdHJpbmdWaWV3LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFt
ZWQgbV9wYXNzIHRvIG1fcGFzc3dvcmQKKyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVh
ZCBvZiBwYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNy
ZWRlbnRpYWxzKTogVXNlIHJlbW92ZUNyZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29y
ZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bik6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9u
cyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgYSBT
dHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxpbmVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTogVXNlIGFu
IEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpzZWFyY2gg
Y29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldp
dGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkpOgorICAgICAg
ICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFtZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKwogMjAy
MC0wNC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQXN5bmMgb3ZlcmZsb3ddIEdldCBzY3JvbGwtc25hcCB3b3JraW5nIHdpdGggYXN5bmMgb3Zl
cmZsb3cgc2Nyb2xsaW5nIG9uIG1hY09TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiMTM4YWExZDE3MzAzODRhZTJi
YTU0ZjM4ZGE0ZTU3YzgxZjYxY2YuLmQzN2Q2OWMzOWUxY2FlMWMyZWE2N2Q1YzFmZmJhODVlZmRi
NmY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3
IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVkaXJlY3Rpb24pOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAg
IFJlbW92ZSB1c2Ugb2YgQVNDSUlMaXRlcmFsIGZvciBzZXRQcm90b2NvbC4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOiBVcGRh
dGVkCisgICAgICAgIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTogRGl0dG8u
CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6Omhv
c3QgY29uc3QpOiBSZW1vdmVkIHZhbGlkaXR5IGNoZWNrOyBXVEY6OlVSTDo6aG9zdAorICAgICAg
ICByZXR1cm5zIG51bGwgaWYgdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAoQVBJOjpVUkw6
OnByb3RvY29sIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBUEk6OlVSTDo6cGF0aCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50IGNvbnN0KTogRGl0
dG8uIEFsc28gYWRkZWQgdG9TdHJpbmcKKyAgICAgICAgc2luY2UgV1RGOjpVUkw6Omxhc3RQYXRo
Q29tcG9uZW50IG5vdyByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZEZpbmlzaCk6IFVzZSBoYXNGcmFnbWVudElkZW50aWZpZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayk6CisgICAgICAgIFJl
ZmFjdG9yZWQgYSBiaXQgYW5kIHVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoIGFuZAorICAg
ICAgICB1cGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3
LgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6cGF0aEV4dGVuc2lvbik6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21w
b25lbnQKKyAgICAgICAgcmV0dXJucyBhIFN0cmluZ1ZpZXcuIFJlZmFjdG9yZWQgYSBsaXR0bGUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToK
KyAgICAgICAgVXNlIHRydW5jYXRlZEZvclVzZUFzQmFzZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgVXNl
ICE9IHRvIGNvbXBhcmUgaG9zdHMsIHJhdGhlciB0aGFuIGhvc3RzQXJlRXF1YWwuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6IERp
dHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCk6Cisg
ICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAg
ICAgRG9uJ3QgdXNlIEFTQ0lJTGl0ZXJhbCBmb3IgYXJndW1lbnQgdG8gc2V0UHJvdG9jb2wuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1l
ZGlhS2V5T3JpZ2lucyk6CisgICAgICAgIFVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoLCBh
bHNvIHJlZmFjdG9yZWQgYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppbnN0YWxsUERGRG9j
dW1lbnQpOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5z
IGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNs
aWVudDo6c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkCisgICAgICAgIHRoZSBpbXBsZW1l
bnRhdGlvbiBhIGJpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhD
b21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKIDIwMjAtMDQtMTMgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBDaGVja2Vk
PHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IHdpdGggQ2hlY2tlZFNpemUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCA5ODdkNTU2MzBlZmFkNDVmYzQ3ZmVmNzVlMjVkMTQwMTZhNWVkODdh
Li42ODdiODUyMTZlNjVmMjAwNGI2Mzg1YjliZmRhNmY2MDRjYThhYzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3
IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKHNob3VsZFRyeUFwcExpbmspOiBDb21wYXJlIGhvc3Rz
IHdpdGggPT0gcmF0aGVyIHRoYW4gdXNpbmcgaG9zdHNBcmVFcXVhbC4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kb2N1bWVudEZyYWdtZW50
Rm9ySW1hZ2VEYXRhOndpdGhSZWxhdGl2ZVVSTFBhcnQ6YW5kTUlNRVR5cGU6XSk6CisgICAgICAg
IFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQgdGFrZXMgYSBTdHJpbmdWaWV3
LiBBbHNvIHVzZSBSZXRhaW5QdHIKKyAgICAgICAgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBjYWxs
IHRvIHJlbGVhc2UuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBfd2ViX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0
ZWJvYXJkVHlwZTppbWFnZU1JTUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gTm8gY29udmVyc2lvbgorICAg
ICAgICBkaXJlY3RseSBmcm9tIE5TU3RyaW5nIHRvIFN0cmluZ1ZpZXcsIHNvIHdlIGhhdmUgdG8g
ZXhwbGljaXRseSB1c2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6IFVwZGF0ZQorICAgICAgICBzaW5j
ZSBwcm90b2NvbElzIHRha2VzIGEgU3RyaW5nVmlldy4gTm8gY29udmVyc2lvbiBkaXJlY3RseSBm
cm9tCisgICAgICAgIE5TU3RyaW5nIHRvIFN0cmluZ1ZpZXcsIHNvIHdlIGhhdmUgdG8gZXhwbGlj
aXRseSB1c2UgYSBTdHJpbmcuCisKIDIwMjAtMDQtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1OTg0Myk6ICJNaXNzaW5n
IFBsdWctSW4iIHdoZW4gZHJhZ2dpbmcgYW4gaW1hZ2UgaW50byBNYWlsIENvbXBvc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4MDRiZTVhNDRhY2Y0NGJmN2Y1ZDZmYzZhNTA5ZDdj
MDRiMzA2ZGM4Li4zYzg1YTVlNTJlNzFkNjM4M2NhMGY0OWIyYzAwYTNjMzkxNTlmZTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMTMgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBT
dHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6
c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlv
biBhIGJpdC4KKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgU2hvdWxkIGZpbmQgdG91Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24t
Y29tcG9zaXRlZCBpZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCAyYzUwNGJjZGE4YmQzMmI3OGIzOTRhZDIyZjA3
OTEyYTgzMjEwMWQ3Li40ZTliMDM0ZjVmYjFlMTU2YzViZTk5ZTdhNmZhYWY4MGM2ZTUzZTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtNDIsMjYgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10eXBlZGVm
IFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEy
PiBVQ2hhckJ1ZmZlcjsKLQotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnZhbGlkUG9ydE51
bWJlciA9IDB4RkZGRjsKLQotLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9u
LCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBh
cmUgYWxsb3dlZAotLy8gaW4gdGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1h
ZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShj
b25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdCkKKy8vIENvcGllcyB0aGUgc291cmNlIHRv
IHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUg
QVNDSUkuCisvLyBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBO
dWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgaW4gdGhlCisvLyBzb3VyY2Ugc3RyaW5nLCBhbmQg
bm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSBkZXN0aW5hdGlvbiBidWZm
ZXIuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRl
c3RpbmF0aW9uKQogewotICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5n
LmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5h
dGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAg
ICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oc3JjW2ldKTsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBzdHJpbmcuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzdGF0
aWNfY2FzdDxjaGFyPihzb3VyY2VbaV0pOwogICAgIH0KIH0KIApAQCAtODMsMTYgKzc0LDEzIEBA
IHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewot
ICAgIFVSTFBhcnNlciBwYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihyZWxhdGl2ZSwgYmFz
ZSwgZW5jb2RpbmcpLnJlc3VsdCgpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVS
TChVQ2hhciBjKQorc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgY2hhcmFjdGVy
KQogewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2Ug
YW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUgdGhhdCBjIGlz
IGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8gc28gdGhpcyBjb21wYXJpc29uIHNob3Vs
ZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICByZXR1cm4gYyA8PSAnICc7Cisg
ICAgLy8gSWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgIHJldHVybiBjaGFyYWN0ZXIgPD0gJyAnOwogfQogCiBVUkwgVVJMOjppc29s
YXRlZENvcHkoKSBjb25zdApAQCAtMTAyLDE0NyArOTAsMTQ4IEBAIFVSTCBVUkw6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFVSTDo6bGFzdFBh
dGhDb21wb25lbnQoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkg
Y29uc3QKIHsKICAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsK
ICAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCiAgICAgICAgIC0tZW5kOwogCiAgICAgc2l6
ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFy
dCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKHN0YXJ0IDwgcGF0aFN0YXJ0KCkpCisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgKytzdGFydDsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKIH0KIAogU3RyaW5nVmll
dyBVUkw6OnByb3RvY29sKCkgY29uc3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKwogICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
MCwgbV9zY2hlbWVFbmQpOwogfQogCiBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiB7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICB1bnNpZ25lZCBz
dGFydCA9IGhvc3RTdGFydCgpOwogICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+
IFVSTDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQg
bnVtYmVyOwotICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hh
cmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsg
MSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKLSAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNo
YXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQg
KyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIHJldHVybiBudW1iZXI7CisgICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/IHBh
cnNlVUludDE2KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyAxLCBt
X3BvcnRMZW5ndGggLSAxKSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBVUkw6Omhvc3RB
bmRQb3J0KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBwb3J0ID0gdGhpcy0+cG9ydCgpKQotICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhob3N0KCksICc6Jywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBvcnQudmFsdWUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhob3N0KCksICc6Jywg
KnBvcnQpOwogICAgIHJldHVybiBob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFVSTDo6
cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3Ry
aW5nLnN1YnN0cmluZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOworICAgIGlmICghaGFz
Q3JlZGVudGlhbHMoKSkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRo
U3RhcnQoKSk7CiAKLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewot
ICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJl
c3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFs
bG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0KKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0YXJ0KSwKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgpLCBwYXRoU3Rh
cnQoKSAtIGhvc3RTdGFydCgpKQorICAgICk7Cit9CiAKLSAgICByZXR1cm4gcmVzdWx0Oworc3Rh
dGljIE9wdGlvbmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0
LCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChpbmRleCArIDMg
PiBsZW5ndGggfHwgaW5wdXRbaW5kZXhdICE9ICclJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBhdXRvIGRpZ2l0MSA9IGlucHV0W2luZGV4ICsgMV07CisgICAgYXV0byBkaWdp
dDIgPSBpbnB1dFtpbmRleCArIDJdOworICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGRpZ2l0MSkg
fHwgIWlzQVNDSUlIZXhEaWdpdChkaWdpdDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiB0b0FTQ0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwogfQogCiBzdGF0
aWMgU3RyaW5nIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyBp
bnB1dCkKIHsKLSAgICBhdXRvIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7Ci0gICAgaWYg
KCFpbnB1dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgVmVjdG9y
PExDaGFyPiBwZXJjZW50RGVjb2RlZDsKLSAgICBwZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGlucHV0TGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5w
dXRMZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaW5wdXRbaV0gPT0gJyUnCi0gICAgICAgICAg
ICAmJiBpbnB1dExlbmd0aCA+IDIKLSAgICAgICAgICAgICYmIGkgPCBpbnB1dExlbmd0aCAtIDIK
LSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pCi0gICAgICAgICAg
ICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgcGVyY2Vu
dERlY29kZWQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlu
cHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2UKKyAgICBB
U1NFUlQoaW5wdXQuaXNBbGxBU0NJSSgpKTsKKworICAgIGF1dG8gbGVuZ3RoID0gaW5wdXQubGVu
Z3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDMgfHwgIWlucHV0LmNvbnRhaW5zKCclJykpCisgICAg
ICAgIHJldHVybiBpbnB1dC50b1N0cmluZygpOworCisgICAgVmVjdG9yPExDaGFyLCA1MTI+IHBl
cmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAg
ICAgaWYgKGF1dG8gZGVjb2RlZENoYXJhY3RlciA9IGRlY29kZUVzY2FwZVNlcXVlbmNlKGlucHV0
LCBpLCBsZW5ndGgpKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBl
bmQoKmRlY29kZWRDaGFyYWN0ZXIpOworICAgICAgICAgICAgaSArPSAzOworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ld
KTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQogICAgIH0KKworICAgIC8vIEZJWE1FOiBJ
cyBVVEYtOCBhbHdheXMgdGhlIGNvcnJlY3QgZW5jb2Rpbmc/CisgICAgLy8gRklYTUU6IFRoaXMg
cmV0dXJucyBhIG51bGwgc3RyaW5nIHdoZW4gd2UgZW5jb3VudGVyIGFuIGludmFsaWQgVVRGLTgg
c2VxdWVuY2UuIElzIHRoYXQgT0s/CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2Vu
dERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQogCiBTdHJpbmcgVVJM
Ojp1c2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBh
cnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNl
ckVuZCAtIG1fdXNlclN0YXJ0KSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zy
b21QYXJzZWRVUkwoZW5jb2RlZFVzZXIoKSk7CiB9CiAKLVN0cmluZyBVUkw6OnBhc3MoKSBjb25z
dAorU3RyaW5nIFVSTDo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRl
Y29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cisg
ICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5jb2RlZFBhc3N3
b3JkKCkpOwogfQogCi1TdHJpbmcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CitTdHJpbmdWaWV3
IFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKKyAgICByZXR1cm4gU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3Vz
ZXJTdGFydCk7CiB9CiAKLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK1N0cmluZ1Zp
ZXcgVVJMOjplbmNvZGVkUGFzc3dvcmQoKSBjb25zdAogewogICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bh
c3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0g
MSk7CiB9CiAKLVN0cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CitTdHJpbmdW
aWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICBpZiAoIWhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4g
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxKTsKLX0KKyAgICAgICAgcmV0dXJuIHsg
fTsKIAotYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSAhPSBtX3F1ZXJ5RW5kOworICAgIHJl
dHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwogfQog
Ci1TdHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAorVVJMIFVSTDo6dHJ1bmNhdGVkRm9y
VXNlQXNCYXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRl
ckxhc3RTbGFzaCk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbV9zdHJpbmcubGVmdChtX3BhdGhB
ZnRlckxhc3RTbGFzaCkpOwogfQogCiAjaWYgIVVTRShDRikKIAogU3RyaW5nIFVSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdAogewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFpc0xvY2FsRmlsZSgpKQorICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21Q
YXJzZWRVUkwoU3RyaW5nVmlldyhwYXRoKCkpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChwYXRoKCkpOwogfQogCiAjZW5kaWYKIAotI2lmZGVmIE5ERUJV
RworI2lmICFBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9j
b2xJc0dvb2QoU3RyaW5nVmlldykKIHsKQEAgLTMxNCw3ICszMDMsNyBAQCBib29sIGlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQogCiBi
b29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKLSAgICBh
c3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3IHsgcHJvdG9jb2wgfSk7CisgICAgYXNzZXJ0
UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAi
dmFsaWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRlcyB0aGV5IGFy
ZSBpbnZhbGlkLgogICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0
KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gCkBAIC0zNDksNzMgKzMzOCw2NSBAQCBib29sIFVS
TDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1TdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6cXVlcnko
KSBjb25zdAogewogICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5n
LnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsg
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAx
LCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6OnBh
dGgoKSBjb25zdAogewotICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRM
ZW5ndGg7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwb3J0RW5k
LCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0
aFN0YXJ0KCksIG1fcGF0aEVuZCAtIHBhdGhTdGFydCgpKTsKIH0KIAotYm9vbCBVUkw6OnNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgcykKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChTdHJpbmdWaWV3
IG5ld1Byb3RvY29sKQogewogICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBldmVyeXRoaW5n
IGFmdGVyIHRoZSBmaXJzdCAnOicuCi0gICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0aW9uID0gcy5m
aW5kKCc6Jyk7Ci0gICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmcoMCwgc2VwYXJh
dG9yUG9zaXRpb24pOwotICAgIGF1dG8gY2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2wpOwotICAgIGlmICghY2Fub25pY2FsaXplZCkK
KyAgICBhdXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5l
d1Byb3RvY29sLmZpbmQoJzonKSk7CisgICAgYXV0byBuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQg
PSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sUHJlZml4LnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgaWYgKCFuZXdQcm90b2NvbENhbm9uaWNhbGl6
ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgIjoiLCBtX3N0
cmluZykpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgcGFyc2Uo
bWFrZVN0cmluZygqbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkLCAnOicsIG1fc3RyaW5nKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICgobV9wYXNzd29yZEVuZCAhPSBt
X3VzZXJTdGFydCB8fCBwb3J0KCkpICYmICpjYW5vbmljYWxpemVkID09ICJmaWxlIikKKyAgICBp
ZiAoKG1fcGFzc3dvcmRFbmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqbmV3UHJvdG9j
b2xDYW5vbmljYWxpemVkID09ICJmaWxlIikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBp
ZiAoaXNMb2NhbEZpbGUoKSAmJiBob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9z
dHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOworICAgIHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewot
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7Ci19Ci0gICAgCiAvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRp
ZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KIC8vIHRoZSBvdXRwdXQgYnVm
ZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KIC8vIFJldHVybiB2
YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVu
ZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykK
K3N0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1
ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3Vn
aCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCiAgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmln
Z2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3Qg
Y2VydGFpbmx5IE9LLgogICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0g
MjA0ODsKLSAgICAKLSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5n
dGggfHwgaXNBbGxBU0NJSShzdHJpbmcpKSB7CisKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4g
aG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgc3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBh
cHBlbmQoYnVmZmVyLCBzdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
CisKICAgICBVQ2hhciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CiAgICAg
VUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAgICBVSUROQUluZm8gcHJvY2Vzc2lu
Z0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwogICAgIGludDMyX3QgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6OmludGVybmF0aW9u
YWxEb21haW5OYW1lVHJhbnNjb2RlcigpLAogICAgICAgICBzdHJpbmcudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3RuYW1lQnVmZmVy
TGVuZ3RoLCAmcHJvY2Vzc2luZ0RldGFpbHMsICZlcnJvcik7Ci0gICAgCisKICAgICBpZiAoVV9T
VUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CiAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyOCwxMDEgKzQwOSw4OSBAQCB1bnNpZ25lZCBVUkw6Omhv
c3RTdGFydCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0
KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKIH0KIAotdm9pZCBVUkw6OnNl
dEhvc3QoY29uc3QgU3RyaW5nJiBzKQordW5zaWduZWQgVVJMOjpjcmVkZW50aWFsc0VuZCgpIGNv
bnN0Cit7CisgICAgLy8gSW5jbHVkZSAnQCcgdG9vIGlmIHdlIGhhdmUgaXQuCisgICAgdW5zaWdu
ZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0
cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgZW5kICs9IDE7CisgICAgcmV0dXJuIGVuZDsKK30K
Kwordm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQogewogICAgIGlmICghbV9p
c1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQo
JzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICBpZiAobmV3SG9zdC5j
b250YWlucygnOicpKQogICAgICAgICByZXR1cm47CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVk
SG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1l
LCBzKSkKKyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0
U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVk
SG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsg
MTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5s
ZWZ0KGhvc3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwK
KyAgICAgICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5h
bWUuc2l6ZSgpKSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9z
dEVuZCkKKyAgICApKTsKIH0KIAotdm9pZCBVUkw6OnJlbW92ZVBvcnQoKQotewotICAgIGlmICgh
bV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hv
cnQgaSkKK3ZvaWQgVVJMOjpzZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAg
IGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNvbG9uTmVlZGVk
ID0gIW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQg
PyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRl
ZCA/ICI6IiA6ICIiKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0g
cGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlSG9zdEFuZFBvcnQoKQotewot
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgIGlmICghcG9ydCkgeworICAgICAgICByZW1vdmUobV9o
b3N0RW5kLCBtX3BvcnRMZW5ndGgpOwogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFob3N0KCku
aXNFbXB0eSgpKQotICAgICAgICBzZXRIb3N0KHsgfSk7Ci0gICAgcmVtb3ZlUG9ydCgpOworICAg
IH0KKworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LmxlZnQobV9ob3N0RW5kKSwKKyAgICAgICAgJzonLAorICAgICAgICAqcG9ydCwKKyAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQog
Ci12b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3Zv
aWQgVVJMOjpzZXRIb3N0QW5kUG9ydChTdHJpbmdWaWV3IGhvc3RBbmRQb3J0KQogewogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1l
KGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCisgICAgYXV0byBob3N0
TmFtZSA9IGhvc3RBbmRQb3J0OworICAgIFN0cmluZ1ZpZXcgcG9ydFN0cmluZzsKICAgICBhdXRv
IGNvbG9uSW5kZXggPSBob3N0TmFtZS5maW5kKCc6Jyk7CiAgICAgaWYgKGNvbG9uSW5kZXggIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgcG9ydCA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4
ICsgMSk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0lu
dFN0cmljdChvayk7Ci0gICAgICAgIGlmICghb2sgfHwgcG9ydEludCA8IDApCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9u
SW5kZXgpOworICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5k
ZXggKyAxKTsKKyAgICAgICAgaWYgKHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKQorICAgICAgICAg
ICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgaG9zdE5hbWUgPSB7IH07CisgICAgICAgICAgICBwb3J0U3Ry
aW5nID0geyB9OworICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKGhvc3ROYW1lLmlzRW1wdHko
KSkKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlbW92ZShob3N0U3Rh
cnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgVmVjdG9yPFVDaGFyLCA1
MTI+IGVuY29kZWRIb3N0TmFtZTsKICAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNv
ZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzbGFz
aFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2No
ZW1lRW5kICsgMSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVl
ZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUu
c2l6ZSgpKSk7Ci0gICAgaWYgKCFwb3J0LmlzRW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocG9ydCk7Ci0gICAgfQot
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGgpKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0
cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNoU2xh
c2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2UobWFr
ZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChob3N0U3RhcnQoKSks
CisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgIFN0cmluZ1Zp
ZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisgICAg
ICAgIHBvcnRTdHJpbmcuaXNFbXB0eSgpID8gIiIgOiAiOiIsCisgICAgICAgIHBvcnRTdHJpbmcs
CisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAg
ICApKTsKIH0KIAogc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBT
dHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFVDaGFyKSkKQEAgLTU1MSw4MSArNTIw
LDg5IEBAIHN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5n
JiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVCiAgICAgcmV0dXJuIGlucHV0OwogfQogCi12
b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCit2b2lkIFVSTDo6cGFyc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQpCisgICAgKnRoaXMgPSBV
UkxQYXJzZXIoc3RyaW5nKS5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnJlbW92ZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKHN0YXJ0IDwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VS
VChsZW5ndGggPD0gbV9zdHJpbmcubGVuZ3RoKCkgLSBzdGFydCk7CiAKLSAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3Jl
IHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KKyAgICBhdXRvIHN0cmluZ0FmdGVyUmVtb3ZhbCA9
IFdURk1vdmUobV9zdHJpbmcpOworICAgIHN0cmluZ0FmdGVyUmVtb3ZhbC5yZW1vdmUoc3RhcnQs
IGxlbmd0aCk7CisgICAgcGFyc2Uoc3RyaW5nQWZ0ZXJSZW1vdmFsKTsKK30KKwordm9pZCBVUkw6
OnNldFVzZXIoU3RyaW5nVmlldyBuZXdVc2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAg
ICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYgKCF1
c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0
ZXJzKHVzZXIsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKLSAgICAgICAgaWYg
KG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQot
ICAgICAgICAgICAgdSA9ICIvLyIgKyB1OwotICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4n
dCBoYXZlIG9uZSBiZWZvcmUuCi0gICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQg
PT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCi0gICAgICAgICAgICB1
LmFwcGVuZCgnQCcpOwotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAg
IGlmICghbmV3VXNlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVk
ID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgICAgICBib29sIG5lZWRTZXBh
cmF0b3IgPSBlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0
cmluZ1tlbmRdICE9ICdAJyk7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKKyAgICAgICAgICAgIHNs
YXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhuZXdVc2VyLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0lu
VXNlckluZm9FbmNvZGVTZXQpLAorICAgICAgICAgICAgbmVlZFNlcGFyYXRvciA/ICJAIiA6ICIi
LAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkKKyAgICAg
ICAgKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2
ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgogICAgICAgICBpZiAobV91c2VyRW5kID09IG1f
cGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykK
ICAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNl
IGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBt
YWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAg
ICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0g
ICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICBy
ZW1vdmUobV91c2VyU3RhcnQsIGVuZCAtIG1fdXNlclN0YXJ0KTsKICAgICB9CiB9CiAKLXZvaWQg
VVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit2b2lkIFVSTDo6c2V0UGFzc3dv
cmQoU3RyaW5nVmlldyBuZXdQYXNzd29yZCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAo
IXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRF
bmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNl
dCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8v
IEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4K
LSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0g
ICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgaWYgKCFuZXdQYXNzd29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBuZWVkTGVh
ZGluZ1NsYXNoZXMgPSBtX3VzZXJFbmQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgICAgICBwYXJz
ZShtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3Vz
ZXJFbmQpLAorICAgICAgICAgICAgbmVlZExlYWRpbmdTbGFzaGVzID8gIi8vOiIgOiAiOiIsCisg
ICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhuZXdQYXNzd29yZC50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwKKyAgICAg
ICAgICAgICdAJywKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhj
cmVkZW50aWFsc0VuZCgpKQorICAgICAgICApKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBS
ZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAg
ICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBt
X3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUg
d2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5k
ICE9IGVuZCkgewotICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
ICAgICB9CisgICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCA/
IGNyZWRlbnRpYWxzRW5kKCkgOiBtX3Bhc3N3b3JkRW5kOworICAgICAgICByZW1vdmUobV91c2Vy
RW5kLCBlbmQgLSBtX3VzZXJFbmQpOwogICAgIH0KIH0KIAordm9pZCBVUkw6OnJlbW92ZUNyZWRl
bnRpYWxzKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cmVtb3ZlKG1fdXNlclN0YXJ0LCBjcmVkZW50aWFsc0VuZCgpIC0gbV91c2VyU3RhcnQpOworfQor
CiB2b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikK
IHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6
IE9wdGltaXplIHRoZSBjYXNlIHdoZXJlIHRoZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0
byBiZSBlcXVhbCB0byB3aGF0IHdhcyBwYXNzZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJl
Y3QgdG8gZG8gdGhpcyB3aXRob3V0IGVuY29kaW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hh
cmFjdGVycz8KLSAgICAqdGhpcyA9IFVSTFBhcnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7
IG1fc3RyaW5nIH0uc3Vic3RyaW5nKDAsIG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0u
cmVzdWx0KCk7CisgICAgcGFyc2UobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgQVNT
RVJUKCFtX3F1ZXJ5RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVu
ZCkKLSAgICAgICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworCisgICAg
bV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOwogfQogCiB2b2lkIFVSTDo6cmVt
b3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKQpAQCAtNjM3LDYyICs2MTQsNjIgQEAgdm9p
ZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkKICAgICBtX3F1ZXJ5RW5k
ID0gbV9wYXRoRW5kOwogfQogCi12b2lkIFVSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVy
eSkKK3ZvaWQgVVJMOjpzZXRRdWVyeShTdHJpbmdWaWV3IG5ld1F1ZXJ5KQogeworICAgIC8vIEZJ
WE1FOiBDb25zaWRlciByZW5hbWluZyB0aGlzIGZ1bmN0aW9uIHRvIHNldEVuY29kZWRRdWVyeSBh
bmQvb3IgY2FsbGluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyB0aGUgd2F5IHNldFBhdGggZG9l
cy4KKyAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKKwogICAgIGlmICghbV9pc1Zh
bGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkg
Y2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwg
dGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwg
YnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMg
ZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChx
dWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsK
LSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcp
LmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci0gICAgfQorICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV9wYXRoRW5kKSwKKyAgICAgICAgKG5ld1F1ZXJ5LnN0YXJ0c1dpdGgoJz8nKSAm
JiAhbmV3UXVlcnkuaXNOdWxsKCkpID8gIj8iIDogIiIsCisgICAgICAgIG5ld1F1ZXJ5LAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkKKyAgICApKTsK
K30KIAorc3RhdGljIFN0cmluZyBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcoU3RyaW5nVmlldyBw
YXRoKQoreworICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNo
YXJhY3RlcikgeworICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIg
PT0gJyMnOworICAgIH07CisgICAgcmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgu
dG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pOwogfQog
Ci12b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMpCit2b2lkIFVSTDo6c2V0UGF0aChT
dHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZyBwYXRoID0gczsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFsw
XSAhPSAnLycpCi0gICAgICAgIHBhdGggPSAiLyIgKyBwYXRoOworICAgIHBhcnNlKG1ha2VTdHJp
bmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocGF0aFN0YXJ0KCkpLAorICAg
ICAgICBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/ICIiIDogIi8iLAorICAgICAgICBlc2NhcGVQYXRo
V2l0aG91dENvcHlpbmcocGF0aCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX3BhdGhFbmQpCisgICAgKSk7Cit9CiAKLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CitTdHJpbmdWaWV3IFVSTDo6c3RyaW5nV2l0aG91
dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlk
KQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChwYXRoRW5kKCkpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitTdHJpbmdWaWV3IFVSTDo6c3Ry
aW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgaWYgKGEubV9xdWVy
eUVuZCAhPSBiLm1fcXVlcnlFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25l
ZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVyeUVuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcXVlcnlMZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJp
bmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJu
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCk7CiB9CiAKLWJvb2wgZXF1YWxJ
Z25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitib29s
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwm
IGIpCiB7Ci0gICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVuZCgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGEuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRl
bnRpZmllcigpID09IGIuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpOwogfQogCiBi
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKQEAgLTcyNSwyNSArNzAyLDEwIEBAIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFs
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitib29sIFVSTDo6aXNN
YXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3IGRvbWFpbikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBo
b3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0
U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0
YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYW4gYXBwcm9w
cmlhdGUgcGxhY2UgaW4gV2ViQ29yZSdzIHBsdWctaW4gY29kZTsgZG9uJ3Qgd2FudCBwZW9wbGUg
dGVtcHRlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luLgogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEu
c3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QK
LXsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzYyLDYg
KzcyNCw3IEBAIGJvb2wgVVJMOjppc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWlu
KSBjb25zdAogCiBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmIGlucHV0KQogeworICAgIC8vIEZJWE1FOiBSZW5hbWUgc28gaXQncyBjbGVhciB0aGlzIGRv
ZXMgdGhlIGFwcHJvcHJpYXRlIGVzY2FwaW5nIGZvciBVUkwgcXVlcnkgZmllbGQgdmFsdWVzLgog
ICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0lu
VXNlckluZm9FbmNvZGVTZXQpOwogfQogCkBAIC03ODUsNyArNzQ4LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nQ2xhc3M+CiBib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdD
bGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsKICAgICAvLyBEbyB0aGUgY29tcGFy
aXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3Rv
Y29sSXNHb29kKFN0cmluZ1ZpZXcgeyBwcm90b2NvbCB9KTsKKyAgICBhc3NlcnRQcm90b2NvbElz
R29vZChwcm90b2NvbCk7CiAgICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIGogPSAwOyB1cmxbaV07ICsraSkgewogICAgICAgICAvLyBTa2lwIGxlYWRp
bmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgpAQCAtODA4LDE2ICs3NzEsMTEg
QEAgYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoY29uc3QgU3RyaW5nQ2xhc3MmIHVybCwgY29uc3Qg
Y2hhciogcHJvdG9jb2wpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHByb3RvY29sSXMo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQorYm9vbCBwcm90b2NvbElz
KFN0cmluZ1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4gcHJv
dG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwogfQogCi1pbmxpbmUgYm9vbCBVUkw6OnBy
b3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewot
ICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKLX0K
LQogI2lmbmRlZiBOREVCVUcKIAogdm9pZCBVUkw6OnByaW50KCkgY29uc3QKQEAgLTgyOSwxMSAr
Nzg3LDE4IEBAIHZvaWQgVVJMOjpwcmludCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0CiB7Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAg
ICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmlu
ZygpKTsKLSAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1
cm4gcmVmZXJyZXIuc3RyaW5nKCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVy
biBtX3N0cmluZzsKKworICAgIHVuc2lnbmVkIGVuZCA9IGNyZWRlbnRpYWxzRW5kKCk7CisKKyAg
ICBpZiAobV91c2VyU3RhcnQgPT0gZW5kICYmIG1fcXVlcnlFbmQgPT0gbV9zdHJpbmcubGVuZ3Ro
KCkpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKAor
ICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAor
ICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kKQor
ICAgICk7CiB9CiAKIGJvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CkBAIC04NDUsMTcgKzgx
MCwxMiBAQCBib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAogICAgIHJldHVybiBwcm90b2Nv
bElzKCJmaWxlIik7CiB9CiAKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5n
JiB1cmwpCi17Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0
Iik7Ci19Ci0KIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpCiB7CiAg
ICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0Iik7CiB9CiAKLWJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJvdG9j
b2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHVy
bC5sZW5ndGgoKTsKICAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5l
dyBzdHJpbmcgb2JqZWN0LgpAQCAtODY5LDEzICs4MjksMTMgQEAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQogCiBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgp
LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNC
bGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIl9zKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtV
Ukw7CiB9CiAKIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9j
Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQWJvdXRTcmNEb2NVUkwo
VVJMKCksICJhYm91dDpzcmNkb2MiX3MpOwogICAgIHJldHVybiBzdGF0aWNBYm91dFNyY0RvY1VS
TDsKIH0KIApAQCAtOTY0LDcgKzkyNCw2IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQogICAg
ICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAg
IDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51
bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKICAgICB9Owog
CiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxs
b3cgaXQuCkBAIC05ODMsMTUgKzk0MiwxNSBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYg
dXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCitTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3
IGRhdGFVUkwpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikp
OworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwoZGF0YVVSTCwgImRhdGEiKSk7CiAKICAg
ICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEg
Y29tbWEgZmlyc3QsIGJ1dCBhIHNlbWljb2xvbiBsYXRlcj8KLSAgICAvLyBDdXJyZW50bHkgdGhp
cyBjb2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJl
IHRoYXQncyBjb3JyZWN0LgotICAgIGF1dG8gaW5kZXggPSB1cmwuZmluZCgnOycsIDUpOworICAg
IC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRo
YXQgY2FzZTsgc2hvdWxkIGFkZCBhIHRlc3QuCisgICAgYXV0byBpbmRleCA9IGRhdGFVUkwuZmlu
ZCgnOycsIDUpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgaW5kZXggPSB1
cmwuZmluZCgnLCcsIDUpOworICAgICAgICBpbmRleCA9IGRhdGFVUkwuZmluZCgnLCcsIDUpOwog
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICAvLyBGSVhNRTogVGhlcmUgd2Fz
IGFuIG9sZCBjb21tZW50IGhlcmUgdGhhdCBtYWRlIGl0IHNvdW5kIGxpa2UgdGhpcyBzaG91bGQg
YmUgcmV0dXJuaW5nIHRleHQvcGxhaW4uCiAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIGJlZW4gcmV0
dXJuaW5nIGVtcHR5IHN0cmluZyBoZXJlIGZvciBzb21lIHRpbWUsIHNvIG5vdCBjaGFuZ2luZyBp
dHMgYmVoYXZpb3IgYXQgdGhpcyB0aW1lLgpAQCAtMTAwMCwyNSArOTU5LDM5IEBAIFN0cmluZyBt
aW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmIChpbmRleCA9PSA1
KQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CiAgICAgQVNTRVJUKGluZGV4ID49IDUp
OwotICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKKyAgICByZXR1cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCiBTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewotICAgIGlmIChzdHJp
bmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdHJpbmcoKTsKKyAgICBp
ZiAobV9zdHJpbmcubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7
CiAKLSAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0
cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSwgIi4uLiIsIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKSk7CiB9CiAKLVVSTCBVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQorVVJMIFVSTDo6ZmFr
ZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyByZWxhdGl2ZVBhcnQpCiB7Ci0gICAgcmV0
dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1h
a2VTdHJpbmcoIndlYmtpdC1mYWtlLXVybDovLyIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgJy8nLCByZWxhdGl2ZVBhcnQpKTsKIH0KIAotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lz
dGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChTdHJpbmdWaWV3IHBhdGgpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgImZp
bGU6Ly8vIiArIGZpbGVQYXRoKTsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKAor
ICAgICAgICAiZmlsZTovLyIsCisgICAgICAgIHBhdGguc3RhcnRzV2l0aCgnLycpID8gIiIgOiAi
LyIsCisgICAgICAgIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhwYXRoKQorICAgICkpOworfQor
CitTdHJpbmdWaWV3IFVSTDo6cXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQsIG1f
cXVlcnlFbmQgLSBtX3BhdGhFbmQpOworfQorCitTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVu
dGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpOwogfQogCiBib29sIFVSTDo6aXNB
Ym91dEJsYW5rKCkgY29uc3QKQEAgLTEwMzgsNiArMTAxMSw3IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAjaWYgIVBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKFNPVVApCisKIHN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5n
VmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBjb3VudCA9IDA7CkBAIC0xMTI0LDExICsxMDk4LDkg
QEAgc3RhdGljIGJvb2wgaXNJUHY2QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKIAogYm9vbCBV
Ukw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCiB7Ci0gICAgaWYgKGhvc3QuZmlu
ZCgnOicpID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gaXNJUHY0QWRkcmVzcyhob3N0KTsK
LQotICAgIHJldHVybiBpc0lQdjZBZGRyZXNzKGhvc3QpOworICAgIHJldHVybiBob3N0LmNvbnRh
aW5zKCc6JykgPyBpc0lQdjZBZGRyZXNzKGhvc3QpIDogaXNJUHY0QWRkcmVzcyhob3N0KTsKIH0K
KwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRleCA5NWFmNGEzYjQ3ZTA4ODdmNWEy
YWVhMDFhMTEzNzliYmJkMTFjNmZmLi40MmVjMWZiOWVjMzdlYjgzMTNkNjkzMDE5NTdhNDUxOTA2
MTBiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw0NyArMzgsMzkgQEAgT0JKQ19DTEFTUyBOU1VSTDsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V1RGIHsKKwogY2xhc3MgVGV4dFN0cmVhbTsKIAogY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0
cmluZ1ZpZXcpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9CiB9OwogCi1z
dHJ1Y3QgVVJMSGFzaDsKLQotY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7CitjbGFzcyBV
UkwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIEdlbmVy
YXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgogICAgIFVSTCgpIHsgaW52
YWxpZGF0ZSgpOyB9CiAKLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IFVSTChIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKTsKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCiAgICAgLy8g
UmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJv
dmlkZWQsIHRoZQogICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24t
QVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0
eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMK
LSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFs
aWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJ
IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMK
LSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4K
LSAgICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBV
UkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hp
Y2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYWJzb2x1dGUu
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKIAotICAgIHN0
YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmlu
Z1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmls
ZVN5c3RlbVBhdGgoU3RyaW5nVmlldyk7CiAKLSAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91
bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ugb2YgbnVsbCBv
ciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKLSAgICAvLyBz
dGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKIAogICAgIC8vIE1ha2VzIGEgZGVl
cCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIK
ICAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBh
cmUgaW1tdXRhYmxlLCB0aGVyZSdzCiAgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJl
ZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgVVJMIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwpAQCAtODksMTIyICs4MSwxMjYgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU2V0
SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KIAogICAgIGJv
b2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0g
ICAgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2ln
bmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNv
bnN0OwotICAgIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlcigpIGNvbnN0
OwotICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHF1ZXJ5
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotICAgIGJv
b2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgLy8gVW5saWtlIHVzZXIoKSBh
bmQgcGFzc3dvcmQoKSwgZW5jb2RlZFVzZXIoKSBhbmQgZW5jb2RlZFBhc3N3b3JkKCkgZG9uJ3Qg
ZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFj
Y3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICcl
JyBjaGFyYWN0ZXJzLgorCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcHJvdG9j
b2woKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBlbmNvZGVkVXNl
cigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVuY29kZWRQYXNz
d29yZCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGhvc3QoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeSgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcXVlcnlXaXRoTGVhZGluZ1F1
ZXN0aW9uTWFyaygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHByb3RvY29s
SG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGhvc3RB
bmRQb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB1c2VyKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBVUkwgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3Q7CiAK
LSAgICBib29sIGhhc1VzZXJuYW1lKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXNzd29yZCgpIGNv
bnN0OwogICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50KCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgICBib29s
IGhhc1BhdGgoKSBjb25zdDsKIAotICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3MoKSwgdGhl
c2UgZnVuY3Rpb25zIGRvbid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2VzLgotICAgIC8vIFRoaXMg
aXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywgYmVjYXVzZSBlbmNvZGlu
ZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KLSAgICBTdHJpbmcgZW5jb2RlZFVzZXIo
KSBjb25zdDsKLSAgICBTdHJpbmcgZW5jb2RlZFBhc3MoKSBjb25zdDsKLQotICAgIFN0cmluZyBi
YXNlQXNTdHJpbmcoKSBjb25zdDsKLQotICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0
OworICAgIGJvb2wgaGFzQ3JlZGVudGlhbHMoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0K
ICAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBs
b3dlci1jYXNlLgotICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAg
Ym9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgYm9vbCBwcm90b2Nv
bElzQmxvYigpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImJsb2IiKTsgfQogICAgIGJvb2wg
cHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KLSAg
ICBib29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwogICAgIGJvb2wgY2Fubm90QmVB
QmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQogCi0gICAgYm9v
bCBpc0Fib3V0QmxhbmsoKSBjb25zdDsKLSAgICBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Fib3V0QmxhbmsoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CiAKLSAgICBib29s
IGlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3KSBjb25zdDsKIAotICAgIGJv
b2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0
cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldFByb3RvY29sKFN0cmluZ1Zp
ZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAK
LSAgICB2b2lkIHJlbW92ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBvcnQoT3B0aW9uYWw8dWludDE2X3Q+
KTsKIAogICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgot
ICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCByZW1vdmVI
b3N0QW5kUG9ydCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3RBbmRQb3J0
KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRVc2VyKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBhc3N3
b3JkKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZUNyZWRl
bnRpYWxzKCk7CiAKLSAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9y
IEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAg
IHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0
eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGJl
ICIvIi4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXRoKFN0cmluZ1ZpZXcpOwog
CiAgICAgLy8gVGhlIHF1ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFyaywgb3IsIGlm
IG5vdCwgb25lIHdpbGwgYmUgYWRkZWQKICAgICAvLyBmb3IgeW91LiBTZXR0aW5nIHRoZSBxdWVy
eSB0byB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCiAgICAgLy8gVVJM
ICh3aXRoIG5vdGhpbmcgYWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBhc3MgYSBudWxs
IHN0cmluZy4KLSAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFF1ZXJ5KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCBzZXRGcmFn
bWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7Ci0gICAgdm9pZCByZW1vdmVGcmFnbWVudElkZW50
aWZpZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRGcmFnbWVudElkZW50aWZp
ZXIoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAKLSAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlm
aWVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAotICAgIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdW
aWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNz
KFN0cmluZ1ZpZXcpOwogCiAgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CiAgICAgdW5z
aWduZWQgcGF0aEVuZCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgp
IGNvbnN0OwogCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0
cmluZygpOyB9CisgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9CisgICAgb3BlcmF0b3IgU3RyaW5nVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9CiAKICNpZiBVU0UoQ0YpCi0gICAgVVJMKENGVVJMUmVmKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVS
TChDRlVSTFJlZik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
VVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFVSTChOU1VSTCAqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3Ig
TlNVUkwgKigpIGNvbnN0OwogI2VuZGlmCisKICNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9y
IE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisgICAgb3BlcmF0b3IgTlNT
dHJpbmcgKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAogI2lmbmRlZiBO
REVCVUcKICAgICB2b2lkIHByaW50KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHRlbXBsYXRlIDxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8VVJMPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VVJMPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBVUkxQYXJzZXI7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgc3RhdGljIGJvb2wgcHJvdG9jb2xJcyhjb25z
dCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBp
bnZhbGlkYXRlKCk7CiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1
ZmZlcikgY29uc3Q7CiAgICAgdW5zaWduZWQgaG9zdFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgY3JlZGVudGlhbHNFbmQoKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAgICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25z
dCBVUkwmKTsKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsKIApAQCAt
MjI5LDQ5ICsyMjUsMjcgQEAgcHJpdmF0ZToKIAogc3RhdGljX2Fzc2VydChzaXplb2YoVVJMKSA9
PSBzaXplb2YoU3RyaW5nKSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNob3VsZCBzdGF5
IHNtYWxsIik7CiAKLXRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPgotdm9pZCBVUkw6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Ci19Ci0K
LXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotYm9vbCBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBVUkwmIHVybCkKLXsKLSAgICBhdXRvIG9wdGlvbmFsVVJMID0gVVJMOjpkZWNvZGUoZGVj
b2Rlcik7Ci0gICAgaWYgKCFvcHRpb25hbFVSTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHVybCA9IFdURk1vdmUoKm9wdGlvbmFsVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Ci0gICAgZGVjb2RlciA+
PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Ci19Citib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiwgY29uc3Qg
VVJMJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9w
ZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwoKTsKIFdURl9FWFBPUlRfUFJJVkFU
RSBjb25zdCBVUkwmIGFib3V0U3JjRG9jVVJMKCk7CiAKIC8vIEZ1bmN0aW9ucyB0byBkbyBVUkwg
b3BlcmF0aW9ucyBvbiBzdHJpbmdzLgogLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVu
J3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KLS8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBm
cm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJp
bmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBlc3BlY2lhbGx5
IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2Fy
aWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50
IGZyb20gdGhlIFdURjo6VVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0
aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KKy8vIFRoaXMgaXMgZXNw
ZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBu
ZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFdURjo6VVJMLgogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25z
dCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmlu
Z1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwp
OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2Nv
bCk7CkBAIC0yODAsMTQgKzI1NCw0MCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwb3J0QWxs
b3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5n
KHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwogCi1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBk
YXRhVVJMKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJM
KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotLy8gRklYTUU6IFRoaXMgaXMgYSB3cm9uZyBjb25jZXB0
IHRvIGV4cG9zZSwgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2Fw
aW5nIHBlciB0aGUgVVJMIFN0YW5kYXJkLgorLy8gRklYTUU6IFRoaXMgbmVlZHMgYSBuZXcsIG1v
cmUgc3BlY2lmaWMgbmFtZS4gVGhlIGdlbmVyYWwgdGhpbmcgbmFtZWQgaGVyZSBjYW4ndCBiZSBp
bXBsZW1lbnRlZCBjb3JyZWN0bHksIHNpbmNlIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVk
IGRpZmZlcmVudCBlc2NhcGluZy4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKIAotLy8gSW5saW5lcy4KK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBV
UkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworLy8gRnVuY3Rpb24gdGVtcGxhdGUgYW5kIGlubGlu
ZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBVUkw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
bV9zdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgVVJMOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9
IGRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxVUkw+IFVSTDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Cisg
ICAgZGVjb2RlciA+PiBzdHJpbmc7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Cit9
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiB7
CkBAIC0zMTksOCArMzE5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5n
JiBhLCBjb25zdCBVUkwmIGIpCiAgICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKIH0KIAotLy8g
SW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2Fu
IGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlm
ZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KK2lubGluZSBVUkw6OlVSTChIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgIDogbV9zdHJpbmcoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKQor
eworfQogCiBpbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0CiB7CkBAIC0zMzksMTcgKzM0
MSwxMiBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBV
Ukw6Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoOworICAgIHJldHVybiBtX3BhdGhFbmQgPiBwYXRoU3RhcnQoKTsKIH0K
IAotaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0CitpbmxpbmUgYm9vbCBVUkw6
Omhhc0NyZWRlbnRpYWxzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2Vy
U3RhcnQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAotewotICAg
IHJldHVybiBtX3Bhc3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworICAgIHJldHVybiBtX3Bh
c3N3b3JkRW5kID4gbV91c2VyU3RhcnQ7CiB9CiAKIGlubGluZSBib29sIFVSTDo6aGFzUXVlcnko
KSBjb25zdApAQCAtMzU3LDcgKzM1NCw3IEBAIGlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBj
b25zdAogICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwogfQogCi1pbmxpbmUgYm9v
bCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxl
bmd0aCgpID4gbV9xdWVyeUVuZDsKIH0KQEAgLTM4MiwxMSArMzc5LDYgQEAgaW5saW5lIHVuc2ln
bmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKICAgICByZXR1cm4gbV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CiB9CiAKLVdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFVSTD47Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47
Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFib3V0QmxhbmtVUkw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9jZi9DRlVSTEV4dHJhcy5jcHAKaW5kZXggMDZiMGFlYzY0ZDEwMjVkNTQzZmY5ZGMzZDZhMWE3
ZDJlNjEwYzg1NC4uZmEwOGM5Zjg4MzY1OTJiNmFjMDUzYzczZmE4NjdlNWUwMWJhYjdhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIGlzQ0ZVUkxT
YW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQo
dXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKLSAgICBpZiAodXJsLmhhc1VzZXJuYW1l
KCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAgaWYgKHVybC5oYXNDcmVkZW50aWFscygpKQog
ICAgICAgICByZXR1cm4gcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgVVJMIHsgY2ZV
UkwgfSk7CiAKICAgICBVUkxDaGFyQnVmZmVyIGJ5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAKaW5kZXggZDEzYmI2YzkxZjllYmNhMzMwZGU1MWRkMDVjMjdlMDU5NmFjYTJkYi4uMjli
NDg4NTAxNmJkMjg3ZDFjZmU5NDJjNjU0OGU1NjViZjg4MzBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuY3BwCkBAIC0zNSw2ICszNSw3IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtNzQsNiArNzUsMTEgQEAgYm9vbCBTdHJpbmdWaWV3OjpzdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiA6OldURjo6
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOwogfQogCitib29sIFN0
cmluZ1ZpZXc6OmVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sZW5ndGggJiYgKCp0aGlzKVttX2xlbmd0aCAtIDFdID09IGNoYXJhY3RlcjsKK30KKwogYm9v
bCBTdHJpbmdWaWV3OjplbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JiBzdWZmaXgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKQEAgLTMwNiw2ICsz
MTIsMzEgQEAgU3RyaW5nIG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
cmV0dXJuIHJlc3VsdC51bmRlcmx5aW5nU3RyaW5nOwogfQogCisvLyBGSVhNRTogU2hvdWxkIHRo
aXMgYmUgbmFtZWQgcGFyc2VOdW1iZXI8dWludDE2X3Q+IGluc3RlYWQ/CisvLyBGSVhNRTogU2hv
dWxkIHdlIHJlcGxhY2UgdGhlIHRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMgd2l0aCB0aGlzIHN0
eWxlPworT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcgc3RyaW5nKQor
eworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBhdXRvIG51bWJlciA9IHRvSW50ZWdyYWxUeXBl
PHVpbnQxNl90PihzdHJpbmcsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbnVtYmVyOworfQorCitib29sIGVxdWFsSWdub3JpbmdO
dWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQoreworICAgIC8vIEZJWE1FOiBUaGUg
ZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldykgZnVuY3Rpb24gYWxyZWFkeSBpZ25vcmVzIG51
bGxpdHkuCisgICAgLy8gVG8gZml0IGluIHdpdGggdGhlIGJlaGF2aW9yIG9mIG91ciBvdGhlciBz
dHJpbmcgY2xhc3Nlcywgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgLy8gY2hhbmdpbmcgdGhhdCBi
ZWhhdmlvciBzbyB0aGF0IGEgbnVsbCBTdHJpbmdWaWV3IGlzIG5vdCBlcXVhbCB0byBhbiBlbXB0
eQorICAgIC8vIFN0cmluZ1ZpZXcsIGJ1dCBuZWVkIHRvIHRlc3Qgb3IgYXVkaXQgaW4gY2FzZSBj
b2RlIGRlcGVuZHMgb24gY3VycmVudCBiZWhhdmlvci4KKyAgICByZXR1cm4gZXF1YWwoYSwgYik7
Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoY29uc3QgY2hhciogc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKICNpZiBDSEVD
S19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291bnQgbWFudWFs
bHkgc28gVW5kZXJseWluZ1N0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmluZWQgaW4gdGhl
IGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNmNmZWJkYmFiN2VhNDU4ZTFk
OTY4MGQxMzE2MTkxNDhmMjE3OWYwMy4uNDZhZjUyZjUwYmVkMWNjOWM4YjJjYTQ1NTZkMWQ1MGY2
OTg2NzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEzNyw4ICsxMzcsNyBAQCBw
dWJsaWM6CiAKICAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5n
VmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXpl
X3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwogCiAgICAgc2l6
ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CiAKQEAgLTE1MSw2ICsxNTAsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjb250YWlucyhVQ2hhcikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24pIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldyBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nLCAwKSAhPSBub3RGb3VuZDsgfQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ1ZpZXcmKSBjb25zdDsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRo
KFVDaGFyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25z
dCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKQEAgLTE5MSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBT
dHJpbmdJbXBsKikgeyB9CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmlu
Z1ZpZXcmKSB7IH0KICNlbmRpZgorCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgY29uc3Qgdm9p
ZCogbV9jaGFyYWN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMjEwLDYgKzIxMiw4IEBAIGJvb2wgZXF1
YWwoU3RyaW5nVmlldywgY29uc3QgTENoYXIqIGIpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIqKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CisKIHRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0ZTx1
bnNpZ25lZCBsZW5ndGg+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiAKQEAg
LTIzNCw2ICsyMzgsOCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nIG5vcm1hbGl6ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgbm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmKTsKIAorV1RGX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsKKwogfQogCiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CmluZGV4IGYxMmFkMzZkMTllN2ZkNTRiNWNjYTEyNmY3MjVkMDAwNjQzODQ1ZmUuLmFmYzkyZjU3
NzY2NjIyOTJmMGNlMDY0NjI0ZTY4ZjM4NDY3MjI1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKQEAgLTkyNCwxMDIgKzkyNCwxMDIgQEAgc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGUKIAog
aW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQs
IExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBi
YXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25z
dCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3Ro
LCBvaywgYmFzZSk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3Qg
VUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwor
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+
KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGlu
dCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIo
ZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChj
b25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9V
SW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJh
Y3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVy
c1RvSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFj
dGVyc1RvSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNo
YXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwg
bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTAp
OworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50
NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgVUNoYXI+
KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0K
IAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Qs
IExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CiB9CiAKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihk
YXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJf
dD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOwogfQogCiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxp
bmdKdW5rLCBBbGxvd1RyYWlsaW5nSnVuayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDNhNTUyMThmZmJkNzBhMGYxMTU2NjE2MGFmOTM5
MGViYmQxOTFkNzMuLmRmYjczM2U5MzAwZGEyYWUxZTY5NWU0MTJjOTczMjAwOGFjNmUwOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTE2
MCw5ICsxNjAsMTAgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxFeGNlcHRpb24+IHByb2Nlc3NJ
bnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIEluaXQmJiBp
bml0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIC8vIEZJ
WE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIGh0dHBzOi8v
dXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtcGFyc2VyLgorCisgICAgLy8gRklYTUU6
IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgdG8gaHR0cHM6Ly91
cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCiAgICAgVVJMIHJlcXVlc3RV
UkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVybCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Rm9yY2VVVEY4OjpZZXMpOwotICAgIGlmICghcmVxdWVzdFVSTC5pc1Zh
bGlkKCkgfHwgIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVSTC5wYXNz
KCkuaXNFbXB0eSgpKQorICAgIGlmICghcmVxdWVzdFVSTC5pc1ZhbGlkKCkgfHwgcmVxdWVzdFVS
TC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiVVJMIGlzIG5vdCB2YWxpZCBvciBjb250YWlucyB1c2VyIGNyZWRlbnRpYWxzLiJfcyB9Owog
CiAgICAgbV9vcHRpb25zLm1vZGUgPSBNb2RlOjpDb3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNjA5YWE4YTI4OGZmMzU4MTllNjcz
Y2Y1NjdkY2I1MjBjNjNhYjQ4OS4uMDVmNDlmODg5MzZlMDhiZGUwNWJlNGViNjZmYTljMTU4OGZj
YmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBG
ZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIFVSTCBy
ZXF1ZXN0VVJMID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICghcmVxdWVzdFVS
TC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VT
dHJpbmcoIlJlZGlyZWN0aW9uIFVSTCAnIiwgcmVxdWVzdFVSTC5zdHJpbmcoKSwgIicgaXMgaW52
YWxpZCIpIH07Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkgfHwgIXJlcXVl
c3RVUkwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAocmVxdWVzdFVSTC5oYXNDcmVkZW50aWFs
cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVkaXJlY3Rpb24g
VVJMIGNvbnRhaW5zIGNyZWRlbnRpYWxzIl9zIH07CiAgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNl
Ojppc1JlZGlyZWN0aW9uU3RhdHVzQ29kZShzdGF0dXMpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgUmFuZ2VFcnJvciwgbWFrZVN0cmluZygiU3RhdHVzIGNvZGUgIiwgc3RhdHVzLCAiaXMg
bm90IGEgcmVkaXJlY3Rpb24gc3RhdHVzIGNvZGUiKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAppbmRleCBj
YWFkZjg3YjBiNTczZTMxMmU5ZTNlMDM5ZDZkYzZhODhmYzU5Y2NhLi5lNzEzNWJlYzYwM2Y5YjUz
YTlkMjJhNDQzYWYzNTgyMGYxY2FjYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMjIwLDEzICsy
MjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RhbmRhcmRpemVkUGF5bWVudE1ldGhvZElkZW50
aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3Bh
eW1lbnQtbWV0aG9kLWlkLyN2YWxpZGF0aW9uCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJMQmFzZWRQ
YXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAoIXVybC5w
cm90b2NvbElzKCJodHRwcyIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXVy
bC51c2VyKCkuaXNFbXB0eSgpIHx8ICF1cmwucGFzcygpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHVybC5wcm90b2NvbElz
KCJodHRwcyIpICYmICF1cmwuaGFzQ3JlZGVudGlhbHMoKTsKIH0KIAogLy8gSW1wbGVtZW50cyAi
dmFsaWRhdGUgYSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNw
cAppbmRleCA0ZTdhMDI1ZTQ3Njk0OTAxMTVlZWY0OWVlYzBhN2FmZGUxZWMzYjUzLi5hYjRkNWZi
YzExZjkyZDlhYWU2N2E4YTRkODhmYjJlY2FlZGNlYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNw
cApAQCAtMTAzLDE5ICsxMDMsMTQgQEAgYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Omlu
c3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KQogICAgIHJldHVybiB0cnVlOwogfQog
ICAgIAotc3RhdGljIGlubGluZSBVUkwgY3JlYXRlWW91VHViZVVSTChjb25zdCBTdHJpbmcmIHZp
ZGVvSUQsIGNvbnN0IFN0cmluZyYgdGltZUlEKQorc3RhdGljIFVSTCBjcmVhdGVZb3VUdWJlVVJM
KFN0cmluZ1ZpZXcgdmlkZW9JRCwgU3RyaW5nVmlldyB0aW1lSUQpCiB7CiAgICAgQVNTRVJUKCF2
aWRlb0lELmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHZpZGVvSUQgIT0gIi8iKTsKLSAgICAKLSAg
ICBVUkwgcmVzdWx0KFVSTCgpLCAieW91dHViZToiICsgdmlkZW9JRCk7Ci0gICAgaWYgKCF0aW1l
SUQuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuc2V0UXVlcnkoInQ9IiArIHRpbWVJRCk7Ci0g
ICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5n
KCJ5b3V0dWJlOiIsIHZpZGVvSUQsIHRpbWVJRC5pc0VtcHR5KCkgPyAiIiA6ICJ0PSIsIHRpbWVJ
RCkpOwogfQotICAgIAotc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVN
YXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCisKK3N0YXRp
YyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0FuZFZhbHVl
cyhTdHJpbmdWaWV3IHF1ZXJ5U3RyaW5nKQogewogICAgIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dDo6S2V5VmFsdWVNYXAgcXVlcnlEaWN0aW9uYXJ5OwogICAgIApAQCAtMTU1LDcgKzE1MCw3IEBA
IHN0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0Fu
ZFZhbHVlcyhjb25zdCBTdHJpbmcmIHF1CiAgICAgICAgIC8vIFNhdmUgdGhlIGtleSBhbmQgdGhl
IHZhbHVlLgogICAgICAgICBpZiAoa2V5TGVuZ3RoICYmIHZhbHVlTGVuZ3RoKSB7CiAgICAgICAg
ICAgICBTdHJpbmcga2V5ID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKGtleUxvY2F0aW9uLCBrZXlM
ZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICBTdHJpbmcgdmFs
dWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVMb2NhdGlvbiwgdmFsdWVMZW5ndGgpOwor
ICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKHZhbHVlTG9j
YXRpb24sIHZhbHVlTGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgdmFsdWUucmVwbGFj
ZSgnKycsICcgJyk7CiAKICAgICAgICAgICAgIGlmICgha2V5LmlzRW1wdHkoKSAmJiAhdmFsdWUu
aXNFbXB0eSgpKQpAQCAtMjA5LDE2ICsyMDQsMTYgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3Jl
YXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIK
IAogICAgIC8vIFNob3J0IFVSTCBvZiB0aGUgZm9ybTogaHR0cDovL3lvdXR1LmJlL3YxZDMwMUQK
ICAgICBpZiAoaXNZb3VUdWJlU2hvcnRlbmVkVVJMKSB7Ci0gICAgICAgIFN0cmluZyB2aWRlb0lE
ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1dG8gdmlkZW9JRCA9IHVybC5s
YXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodmlkZW9JRC5pc0VtcHR5KCkgfHwgdmlk
ZW9JRCA9PSAiLyIpCiAgICAgICAgICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
Y3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCB7IH0pOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8g
cGF0aCA9IHVybC5wYXRoKCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7Ci0gICAg
U3RyaW5nIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIAorICAgIGF1
dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpOworCiAgICAgLy8gT24gdGhlIFlvdVR1YmUgbW9iaWxlIHdlYiBhcHAsIHRo
ZSBwYXRoIGFuZCBxdWVyeSBzdHJpbmcgYXJlIHB1dCBpbnRvIHRoZQogICAgIC8vIGZyYWdtZW50
IHNvIHRoYXQgb25lIHdlYiBwYWdlIGlzIG9ubHkgZXZlciBsb2FkZWQgKHNlZSA8cmRhcjovL3By
b2JsZW0vOTU1MDYzOT4pLgogICAgIGlmIChpc1lvdVR1YmVNb2JpbGVXZWJBcHBVUkwpIHsKQEAg
LTIyNyw3ICsyMjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNv
bnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgcGF0
aCA9IGZyYWdtZW50OwogICAgICAgICAgICAgcXVlcnkgPSBlbXB0eVN0cmluZygpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IFN0cmluZ1ZpZXcoZnJhZ21lbnQpLnN1YnN0
cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQuc3Vic3RyaW5n
KDAsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5nKGxv
Y2F0aW9uICsgMSk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQgPSBlbXB0eVN0cmluZygp
OwpAQCAtMjYwLDEwICsyNTUsMTAgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHVi
ZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwYXRoLCAiL2UvIikpIHsKLSAgICAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0g
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgICAgIFN0cmluZyB2aWRlb0lEOwotICAgICAg
ICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAgICAgIFN0cmluZ1ZpZXcgdmlk
ZW9JRDsKKyAgICAgICAgU3RyaW5nVmlldyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsKIAorICAg
ICAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAg
ICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQYXRoQ29tcG9uZW50LmZpbmQo
JyYnKTsKICAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2UgJiBpbiBwbGFjZSBvZiA/IGZv
ciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgpAQCAtMjczLDExICsyNjgsMTEgQEAgc3RhdGlj
IFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZ
b3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENvbXBvbmVu
dDsKIAogICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBvdXRQ
YXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOworICAgICAg
ICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2Fu
ZC50b1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9J
RCwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
VVJMKCk7CiB9CiAKQEAgLTI5MCwxMyArMjg1LDEzIEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkwoY29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCiBTdHJpbmcgWW91
VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIHsKICAgICBib29sIGlzWW91VHVi
ZVNob3J0ZW5lZFVSTCA9IGZhbHNlOwotICAgIFN0cmluZyBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5
OwotICAgIFVSTCB5b3VUdWJlVVJMID0gcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJM
LCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIHBvc3NpYmxlTWFsZm9ybWVkUXVlcnkpOworICAgIFN0
cmluZyBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OworICAgIFVSTCB5b3VUdWJlVVJMID0gcHJvY2Vz
c0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIHBvc3Np
Ymx5TWFsZm9ybWVkUXVlcnkpOwogICAgIGlmIChzcmNVUkwuaXNFbXB0eSgpIHx8IHlvdVR1YmVV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3JjU3RyaW5nOwogCiAgICAgLy8gVHJhbnNm
b3JtIHRoZSB5b3V0dWJlVVJMICh5b3V0dWJlOlZpZGVvSUQpIHRvIGlmcmFtZSBlbWJlZCB1cmwg
d2hpY2ggaGFzIHRoZSBmb3JtYXQ6IGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVmlkZW9J
RAotICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCkudG9TdHJpbmcoKTsKKyAgICBhdXRv
IHNyY1BhdGggPSBzcmNVUkwucGF0aCgpOwogICAgIGNvbnN0IFN0cmluZyYgdmlkZW9JRCA9IHlv
dVR1YmVVUkwuc3RyaW5nKCkuc3Vic3RyaW5nKHlvdVR1YmVVUkwucHJvdG9jb2woKS5sZW5ndGgo
KSArIDEpOwogICAgIHNpemVfdCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCA9IHNyY1BhdGguZmlu
ZCh2aWRlb0lEKTsKIApAQCAtMzA1LDcgKzMwMCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNv
CiAgICAgICAgIEFTU0VSVChsb2NhdGlvbk9mVmlkZW9JREluUGF0aCk7CiAgICAgCiAgICAgICAg
IC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3Jl
IC9wYXRoL1ZpZGVvSWQuCi0gICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IHNy
Y1N0cmluZy5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRo
KSk7CisgICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3Jj
U3RyaW5nKS5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRo
KSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzcmNQYXRo
LCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVk
IHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECiAgICAgICAgIC8vIEZJ
WE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlPwpAQCAtMzE1LDIy
ICszMTAsMjEgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZy
b21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY28KIAogICAgIEFTU0VSVChsb2NhdGlv
bk9mUGF0aEJlZm9yZVZpZGVvSUQgIT0gbm90Rm91bmQpOwogCi0gICAgY29uc3QgU3RyaW5nJiBz
cmNVUkxQcmVmaXggPSBzcmNTdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRoQmVmb3Jl
VmlkZW9JRCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisgICAgYXV0byBz
cmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuc3Vic3RyaW5nKDAsIGxvY2F0aW9u
T2ZQYXRoQmVmb3JlVmlkZW9JRCk7CisgICAgYXV0byBxdWVyeSA9IHNyY1VSTC5xdWVyeSgpOwor
CiAgICAgLy8gSWYgdGhlIFVSTCBoYXMgbm8gcXVlcnksIHVzZSB0aGUgcG9zc2libHkgbWFsZm9y
bWVkIHF1ZXJ5IHdlIGZvdW5kLgogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCi0gICAgICAgIHF1
ZXJ5ID0gcG9zc2libGVNYWxmb3JtZWRRdWVyeTsKKyAgICAgICAgcXVlcnkgPSBwb3NzaWJseU1h
bGZvcm1lZFF1ZXJ5OwogCiAgICAgLy8gQXBwZW5kIHRoZSBxdWVyeSBzdHJpbmcgaWYgaXQgaXMg
dmFsaWQuCi0gICAgU3RyaW5nQnVpbGRlciBmaW5hbFVSTDsKLSAgICBpZiAoaXNZb3VUdWJlU2hv
cnRlbmVkVVJMKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmRMaXRlcmFsKCJodHRwOi8vd3d3Lnlv
dXR1YmUuY29tIik7Ci0gICAgZWxzZQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoc3JjVVJMUHJl
Zml4KTsKLSAgICBmaW5hbFVSTC5hcHBlbmQoIi9lbWJlZC8iLCB2aWRlb0lEKTsKLSAgICBpZiAo
IXF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKCc/JywgcXVlcnkpOwot
ICAgIHJldHVybiBmaW5hbFVSTC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKAor
ICAgICAgICBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPyAiaHR0cDovL3d3dy55b3V0dWJlLmNvbSIg
OiBzcmNVUkxQcmVmaXgsCisgICAgICAgICIvZW1iZWQvIiwKKyAgICAgICAgdmlkZW9JRCwKKyAg
ICAgICAgcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIsCisgICAgICAgIHF1ZXJ5CisgICAgKTsK
IH0KICAgICAKIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c1VSTChjb25z
dCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggOTkyNmNlZjk2NzE1NTM2NzJmMjM3OTli
ZjJmZWJmYjVlZDE5MGY3Ny4uZTIzNzQ5NzE4NjNmMWRhNzBkN2U5ZjljOTk2OWRkNmMwNjRmNTEx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTY0LDE1ICs2NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQogewotICAg
IFN0cmluZ0J1aWxkZXIgbmFtZTsKLSAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsKLSAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG5hbWUuYXBwZW5kKCcvJyk7Ci0gICAgaWYgKCF1
cmwucXVlcnkoKS5pc051bGwoKSkgewotICAgICAgICBuYW1lLmFwcGVuZCgnPycpOwotICAgICAg
ICBuYW1lLmFwcGVuZCh1cmwucXVlcnkoKSk7Ci0gICAgfQotICAgIFN0cmluZyByZXN1bHQgPSBu
YW1lLnRvU3RyaW5nKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VTdHJpbmcoCisgICAgICAgIHBhdGgsCisgICAgICAgIHBhdGguaXNFbXB0eSgp
ID8gIi8iIDogIiIsCisgICAgICAgIHVybC5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkK
KyAgICApOwogICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFyZXN1
bHQuY29udGFpbnMoJyAnKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDM1YTY2YmU1NTVhNjNiNDA4ZTZkOGI1YmZiMmM5ZDcyOWEyNGE0MmIuLmNmNmRjNWRh
YWVmMzY4OWM5ZjY5OTU3MzRhZDg5MTYxMDRlYmUzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtOTQ0LDI2ICs5NDQsMjcgQEAgSW50UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
Y2xpY2tQb2ludCgpCiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBl
bGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9IGFuY2hvckVsZW1l
bnQoKTsKKwogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1cHBvcnQgQVJJQSBsaW5rcyBh
cyBpbnRlcm5hbCBsaW5rIGVsZW1lbnRzCiAgICAgaWYgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEhUTUxBbmNob3JFbGVtZW50
JiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOwotICAgIAot
ICAgIFVSTCBsaW5rVVJMID0gYW5jaG9yLmhyZWYoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVu
dGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvJiBhbmNob3Ig
PSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOworCisgICAgYXV0byBsaW5r
VVJMID0gYW5jaG9yLmhyZWYoKTsKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9IGxpbmtV
UkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8gY2hlY2sgaWYg
VVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0gICAgVVJMIGRvY3VtZW50VVJMID0gbV9y
ZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBhdXRvIGRvY3VtZW50VVJMID0gbV9yZW5k
ZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAKLSAgICBOb2RlKiBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5maW5k
QW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CisKKyAgICBhdXRvIGxpbmtlZE5vZGUgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKCFsaW5rZWROb2RlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKKwogICAgIC8vIFRoZSBlbGVtZW50IHdlIGZpbmQgbWF5IG5vdCBiZSBh
Y2Nlc3NpYmxlLCBzbyBmaW5kIHRoZSBmaXJzdCBhY2Nlc3NpYmxlIG9iamVjdC4KICAgICByZXR1
cm4gZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUobGlua2VkTm9kZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBjYzhlOGEzMzAxMDgxOTcyNzIzZjkwNWNmNGYxZDM3NGE2NmJk
YjI5Li4yMDJiNmM5MThjYzg4NzBkNTY0YzdkZjA0ZDZkZTFhMThlZWE2NGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTMyNDgsNyArMzI0OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFVS
TChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fdXJsID0gbmV3VVJMOwogICAgIGlmIChTZWN1cml0
eU9yaWdpbjo6c2hvdWxkSWdub3JlSG9zdChtX3VybCkpCi0gICAgICAgIG1fdXJsLnJlbW92ZUhv
c3RBbmRQb3J0KCk7CisgICAgICAgIG1fdXJsLnNldEhvc3RBbmRQb3J0KHsgfSk7CiAKICAgICBt
X2RvY3VtZW50VVJJID0gbV91cmwuc3RyaW5nKCk7CiAgICAgdXBkYXRlQmFzZVVSTCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDMwMmVlYjdjZTVlNTkyYjRmOWRlZTZhZmE1NDg4ZWE0NmJl
NDc1MmQuLjk5YjFlYWQ3NTBiMDMwNDdiZTA0OTUxMzUwYTliMGNkZTFkYjJmNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTQ0ODcsNyArNDQ4Nyw3IEBAIEVsZW1lbnQqIEVsZW1lbnQ6OmZp
bmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5hbWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgZG9jdW1lbnQuYmFzZVVSTCgpKSkg
ewotICAgICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAg
ICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7
CiAgICAgICAgIHJldHVybiBkb2N1bWVudC5maW5kQW5jaG9yKG91dEFuY2hvck5hbWUpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAxZGFhODU4OGRmNTM5MGFmODEzMWUw
ZGFmMDk3YTg5ZmI1NzdhNTkxLi4zMGVkOWYzZjYxZjQwM2RiYjk0ZThlM2UyZjc5ZmY4OTdlMTcy
YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNDQwLDYgKzQ0MCw4IEBAIFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4+IFRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQoY29uc3QgRmxv
YXRQb2ludCYgcCkKICAgICByZXR1cm4gZWxlbWVudHNGcm9tUG9pbnQocC54KCksIHAueSgpKTsK
IH0KIAorLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gY2hhbmdlIHRoaXMgdG8gdGFrZSBhIFN0
cmluZ1ZpZXcsIHNpbmNlIHRoYXQncyB3aGF0IGNhbGxlcnMgaGF2ZQorLy8gYW5kIHRoZXJlIGlz
IG5vIHBhcnRpY3VsYXIgYWR2YW50YWdlIHRvIGFscmVhZHkgaGF2aW5nIGEgU3RyaW5nLgogRWxl
bWVudCogVHJlZVNjb3BlOjpmaW5kQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGU5NjAxY2UxNzk0ZGRiZGMxNzRlNGI2
NTM2NTM0Yjc3ZmYzYzQxMjkuLjAwMzlkYWYwZjc5Njk1NWJhZDBmODQyOGNkMjBhNzhiOGIzMDYz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tCkBAIC0zMjgsMTMgKzMyOCwxMyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKKyAgICAgICAgU3Ry
aW5nIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5h
bWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKKyAg
ICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21w
b25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBuYW1lID0gQXRvbVN0cmluZygibWVkaWEiKTsKKyAgICAgICAgICAgIG5hbWUgPSAibWVk
aWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgbmFtZSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1h
Z2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUo
bmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzQ4LDExICszNDgs
MTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291cmNlID09IHVy
bFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFz
dFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBuYW1lID0gQXRvbVN0cmluZygiZmlsZSIpOworICAgICAgICAgICAgbmFt
ZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7
IG5hbWUsIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
V1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFs
dWUtPmRhdGEoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggZjJhMmQ1MmFjNWFiZjRlNGYxMzExM2NhMjVkMWIyMGExNzM4ZmE2OS4uYjdk
MjljZDRiYWQ5NTBkM2FiZDdkZjc5ZTkwZjUzNDY0YzM2ODg0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgRWRpdG9yOjp3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGlt
YWdlRWxlbWVuCiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gcGFzdGVib2FyZElt
YWdlVVJMOwogICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7CiAgICAg
fQotICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0gaW1hZ2VTb3VyY2VVUkwubGFz
dFBhdGhDb21wb25lbnQoKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZSA9IGlt
YWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICBwYXN0ZWJv
YXJkSW1hZ2UuaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZSA9IHBhc3RlYm9hcmQucmVzb3VyY2VNSU1FVHlwZShjYWNoZWRJbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggYmRhZDlhMDA1NDI4ZjE0N2E4MTVl
Y2UwM2U3YzM5YTA3Yjg5YTJkNS4uZWFjOWEwYjk4Y2Q3MDE5Y2I1MjM1MmZhYzdhMTkyNDBlZGIx
NGZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cApAQCAtMTc3LDIyICsxNzcsMTcgQEAgU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0
YWNobWVudFRpdGxlKCkgY29uc3QKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFj
aG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdAogewogICAgIGF1dG8gdGl0bGUgPSBhdHRhY2ht
ZW50VGl0bGUoKTsKLQogICAgIGF1dG8gaW5kZXhPZkxhc3REb3QgPSB0aXRsZS5yZXZlcnNlRmlu
ZCgnLicpOwogICAgIGlmIChpbmRleE9mTGFzdERvdCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0
dXJuIHRpdGxlOwogCi0gICAgU3RyaW5nIG5hbWUgPSB0aXRsZS5sZWZ0KGluZGV4T2ZMYXN0RG90
KTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gdGl0bGUuc3Vic3RyaW5nKGluZGV4T2ZMYXN0RG90
KTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChsZWZ0
VG9SaWdodE1hcmspOwotICAgIGJ1aWxkZXIuYXBwZW5kKGZpcnN0U3Ryb25nSXNvbGF0ZSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQobmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQocG9wRGlyZWN0aW9u
YWxJc29sYXRlKTsKLSAgICBidWlsZGVyLmFwcGVuZChleHRlbnNpb24pOwotCi0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgbGVm
dFRvUmlnaHRNYXJrLAorICAgICAgICBmaXJzdFN0cm9uZ0lzb2xhdGUsCisgICAgICAgIFN0cmlu
Z1ZpZXcodGl0bGUpLmxlZnQoaW5kZXhPZkxhc3REb3QpLAorICAgICAgICBwb3BEaXJlY3Rpb25h
bElzb2xhdGUsCisgICAgICAgIFN0cmluZ1ZpZXcodGl0bGUpLnN1YnN0cmluZyhpbmRleE9mTGFz
dERvdCkKKyAgICApOwogfQogCiBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2ht
ZW50VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
CmluZGV4IDAzZDkwNWJiYTM3OTEyN2Q3Zjk0MTg5MmY3OTc2NWE3ZWY5M2MxYjkuLjZiZmU3MDc0
YTk1MWFkN2FjY2U5OTM4NDAwNjZjOGRiNzRkMTYxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNTcsMTQgKzM1NywxNCBAQCBzdGF0aWMgUmVwbGFj
ZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBleHRlbnNp
b247Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CisgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgp
OwogICAgIHNpemVfdCBkb3RPZmZzZXQgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNlRmluZCgn
LicpOwogICAgIGlmIChkb3RPZmZzZXQgIT0gbm90Rm91bmQpCi0gICAgICAgIGV4dGVuc2lvbiA9
IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZzZXQgKyAxKTsKKyAgICAgICAgZXh0
ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEpLnRvU3Ry
aW5nKCk7CiAKICAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlOwogICAgIGlmICh0eXBlLmlzRW1w
dHkoKSAmJiB1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJv
bURhdGFVUkwodXJsLnN0cmluZygpKTsKKyAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJvbURhdGFV
UkwodXJsKTsKICAgICAKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgIWV4dGVuc2lvbi5pc0Vt
cHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZXBsYWNlbWVudCA6IHJlcGxhY2VtZW50cykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5k
ZXggZTdhNTE2ZWJhMjI4NDlmY2QzNzM0NjU5Mzk0YjdjNDllN2Y5N2NlMS4uNWI4NDU0MWVhMGRj
ZjUyMjQyODJjMzFjZjc0YmI0NmVhMjU1MmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC05OCw5ICs5OCw3IEBAIE1lZGlhVGltZSBN
ZWRpYUZyYWdtZW50VVJJUGFyc2VyOjplbmRUaW1lKCkKIAogdm9pZCBNZWRpYUZyYWdtZW50VVJJ
UGFyc2VyOjpwYXJzZUZyYWdtZW50cygpCiB7Ci0gICAgaWYgKCFtX3VybC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFN0cmluZyBmcmFnbWVudFN0cmluZyA9
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRTdHJpbmcgPSBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAppbmRleCBiNzBlNWRj
YmU4Mjc1ODEwMGIwNzJkMmY0ZjBmMGU0NjgwYzAxMDk3Li5hYjAwZWQ4ZGRhZjkyN2FkMDU2Njg2
NWEyMzhmMWJiMzM1NTE2ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0
aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
U3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIGhvc3RuYW1lKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnVzZXJuYW1lKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRVc2VyKCk7CisgICAgcmV0dXJuIGhyZWYo
KS5lbmNvZGVkVXNlcigpLnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFVzZXJuYW1lKGNvbnN0IFN0
cmluZyYgdXNlcikKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojpw
YXNzd29yZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzcygpOworICAg
IHJldHVybiBocmVmKCkuZW5jb2RlZFBhc3N3b3JkKCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0
UGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzKQogICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAg
aWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB1cmwuc2V0
UGFzcyhwYXNzKTsKKyAgICB1cmwuc2V0UGFzc3dvcmQocGFzcyk7CiAgICAgc2V0SHJlZih1cmwp
OwogfQogCkBAIC0xNDEsMTcgKzE0MSwxOCBAQCBTdHJpbmcgVVJMVXRpbHM8VD46Omhvc3QoKSBj
b25zdAogICAgIHJldHVybiBocmVmKCkuaG9zdEFuZFBvcnQoKTsKIH0KIAotLy8gVGhpcyBmdW5j
dGlvbiBkb2VzIG5vdCBhbGxvdyBsZWFkaW5nIHNwYWNlcyBiZWZvcmUgdGhlIHBvcnQgbnVtYmVy
Lgotc3RhdGljIGlubGluZSB1bnNpZ25lZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24oY29u
c3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQgcG9ydFN0YXJ0LCB1bnNpZ25lZCYgcG9ydEVuZCkK
K3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY291bnRBU0NJSURpZ2l0cyhTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKLSAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OwotICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQo
dmFsdWVbcG9ydEVuZF0pKQotICAgICAgICArK3BvcnRFbmQ7Ci0gICAgcmV0dXJuIHZhbHVlLnN1
YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNvdW50
ID0gMDsgY291bnQgPCBsZW5ndGg7ICsrY291bnQpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoc3RyaW5nW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorICAg
IHJldHVybiBsZW5ndGg7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGls
czxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBVUkxVdGlsczxUPjo6c2V0
SG9zdChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE2OCwxOCArMTY5LDE5IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhv
c3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAoc2VwYXJhdG9yID09IG5vdEZvdW5kKQog
ICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOwogICAgIGVsc2UgewotICAgICAgICB1
bnNpZ25lZCBwb3J0RW5kOwotICAgICAgICB1bnNpZ25lZCBwb3J0ID0gcGFyc2VQb3J0RnJvbVN0
cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0b3IgKyAxLCBwb3J0RW5kKTsKLSAgICAgICAgaWYg
KCFwb3J0KSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjb3VudEFTQ0lJRGlnaXRz
KHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxKSk7CisgICAgICAgIGlmICghcG9ydExlbmd0
aCkgewogICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0
cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzCiAgICAgICAgICAg
ICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChwMy4yKSBhbmQKICAgICAg
ICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0
byBlbXB0eSBzdHJpbmcuCi0gICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNlZW1zIGxpa2Ugc29tZXRoaW5nIHRoYXQgaGFzIHNpbmNlIGJlZW4gY2hhbmdlZCBhbmQg
dGhpcyBydWxlIGFuZCBjb2RlIG1heSBiZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgIHVybC5zZXRI
b3N0QW5kUG9ydChtYWtlU3RyaW5nKHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSwg
JzAnKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjppc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgYXV0byBw
b3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEsIHBv
cnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChwb3J0TnVtYmVyICYmIFdURjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCB1cmwucHJvdG9jb2woKSkpCiAgICAgICAgICAg
ICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFs
dWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEgKyBwb3J0TGVuZ3RoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwpAQCAtMjI3LDE3ICsy
MjksMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQb3J0
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKLSAgICBpZiAo
dXJsLmNhbm5vdEJlQUJhc2VVUkwoKSB8fCB1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgIGlmICh1cmwu
Y2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikgfHwgIXVybC5jYW5T
ZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3VjY2VzcyA9IHRy
dWU7Ci0gICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnRvVUludCgmc3VjY2Vzcyk7Ci0gICAgaWYg
KCFzdWNjZXNzIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90
b2NvbCgpKSkKLSAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVy
bC5zZXRQb3J0KHBvcnQpOworICAgIGF1dG8gcG9ydCA9IHBhcnNlVUludDE2KHZhbHVlKTsKKyAg
ICBpZiAocG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgdXJsLnBy
b3RvY29sKCkpKQorICAgICAgICBwb3J0ID0gV1RGOjpudWxsb3B0OworICAgIHVybC5zZXRQb3J0
KHBvcnQpOwogCiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtMjYwLDcgKzI1OCw3
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKHZhbHVlWzBVXSA9PSAnLycpCiAgICAgICAgIHVybC5zZXRQYXRoKHZhbHVlKTsKICAg
ICBlbHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiArIHZhbHVlKTsKKyAgICAgICAgdXJsLnNl
dFBhdGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7CiAKICAgICBzZXRIcmVmKHVybC5zdHJpbmco
KSk7CiB9CkBAIC0yNjgsOCArMjY2LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0
aWxzPFQ+OjpzZWFyY2goKSBjb25zdAogewotICAgIFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVy
eSgpOwotICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsg
cXVlcnk7CisgICAgcmV0dXJuIGhyZWYoKS5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCku
dG9TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0yOTEsMTAgKzI4OCw4
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46Omhhc2goKSBjb25zdAogewot
ICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCk7Ci0gICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBBdG9tU3RyaW5nKFN0cmluZygiIyIgKyBmcmFn
bWVudElkZW50aWZpZXIpKTsKKyAgICAvLyBGSVhNRTogV2h5IGNvbnZlcnQgdGhpcyBzdHJpbmcg
dG8gYW4gYXRvbSBoZXJlIGluc3RlYWQgb2YganVzdCBhIHN0cmluZz8gSnVzdCBhbiBlcnJvcj8g
SW50ZW50aW9uYWxseSB0byBzYXZlIG1lbW9yeT8KKyAgICByZXR1cm4gaHJlZigpLmZyYWdtZW50
SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvQXRvbVN0cmluZygpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9B
ZENsaWNrQXR0cmlidXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRy
aWJ1dGlvbi5jcHAKaW5kZXggNjMzZTc3NWE1NDU0NGZjZmQ2Njg3YWJiZWNmOWFkODY4OWE2ZGQy
Zi4uNGVhNDdjMjkzMDVkZGFlMzIwNTcyYzhmMjM3MTVlODM4ZGI1MzczOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Ym9vbCBBZENsaWNrQXR0cmlidXRpb246OmlzVmFsaWQoKSBjb25zdAogCiBFeHBlY3RlZDxBZENs
aWNrQXR0cmlidXRpb246OkNvbnZlcnNpb24sIFN0cmluZz4gQWRDbGlja0F0dHJpYnV0aW9uOjpw
YXJzZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiB7Ci0gICAgaWYg
KCFyZWRpcmVjdFVSTC5wcm90b2NvbElzKCJodHRwcyJfcykgfHwgcmVkaXJlY3RVUkwuaGFzVXNl
cm5hbWUoKSB8fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpIHx8IHJlZGlyZWN0VVJMLmhhc1F1
ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnQoKSkgeworICAgIGlmICghcmVkaXJlY3RV
UkwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCByZWRpcmVjdFVSTC5oYXNDcmVkZW50aWFscygpIHx8
IHJlZGlyZWN0VVJMLmhhc1F1ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oQWRDbGlja0F0dHJpYnV0aW9uLCAiQ29udmVyc2lv
biB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQ
UyBvciB0aGUgVVJMIGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwg
cXVlcnkgc3RyaW5nLCBhbmQgZnJhZ21lbnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIltBZCBDbGljayBBdHRyaWJ1dGlvbl0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2Vw
dGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQUyBvciB0aGUgVVJMIGNv
bnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwgcXVlcnkgc3RyaW5nLCBh
bmQgZnJhZ21lbnQuIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggODI5MDYyOGM0ZWQ0NWUwNTMxYzQ3OTZmYTI2YWQ1
YWM0YTFkNjMzOC4uZTA1M2M5YjAzZjA0NjUwZGVmNTViZWNkNThkMWM2MzY5YzYzMGEzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcgdmFsaWRhdGVDcm9zc09yaWdpblJlZGlyZWN0
aW9uVVJMKGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlZGlyZWN0VVJMLnByb3Rv
Y29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIm5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGlyZWN0aW9u
IHdpdGggbm9uIENPUlMgc2NoZW1lIik7CiAKLSAgICBpZiAocmVkaXJlY3RVUkwuaGFzVXNlcm5h
bWUoKSB8fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpKQorICAgIGlmIChyZWRpcmVjdFVSTC5o
YXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmVkaXJlY3Rpb24g
VVJMICIsIHJlZGlyZWN0VVJMLnN0cmluZygpLCAiIGhhcyBjcmVkZW50aWFscyIpOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggMjE3N2Y0YjZkYjZiMTk1Y2E5ZGY4Mjc5YjVhZjdiYjE1NmY1
YjUwYS4uZGYzZDA4Yzc0ZmViYzFiNTRlMjQ0ZTYzZmM0OTZmZTYzMGM0MzAyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTUzMiw4ICs1MzIsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIC8vIEFueSBjcmVk
ZW50aWFsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjcm9zcy1zaXRlIHJlcXVl
c3RzLgogICAgIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV9v
cHRpb25zLnNlY3VyaXR5Q2hlY2sgPSBzZWN1cml0eUNoZWNrOwotICAgIEFTU0VSVChtX3NhbWVP
cmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJU
KG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCAhcmVxdWVzdFVSTC5oYXNDcmVkZW50aWFs
cygpKTsKIAogICAgIGlmICghbV9yZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcmVxdWVzdC5z
ZXRIVFRQUmVmZXJyZXIobV9yZWZlcnJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAppbmRleCAzYWFhOGVlZDhjMzM3ZTc5ZDk4ODhhNDU1ZjM5ZmYzZmVlNGI1YTM2
Li4zMGFmOTAwODA0OWE4ZTM5ODJmOWM5YmY0OWRhZWJmYzkyZWE2ODBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURh
dGEmIGRhdGEsIGNvbnN0CiAgICAgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1E
YXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7CiAgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5k
YXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcrJywgIiUyMCIpOwog
Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CisgICAgYXV0byBxdWVyeSA9IHVybC5x
dWVyeSgpOwogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCiAgICAgICAgIHVybC5zZXRRdWVyeShi
b2R5KTsKICAgICBlbHNlCi0gICAgICAgIHVybC5zZXRRdWVyeShxdWVyeSArICcmJyArIGJvZHkp
OworICAgICAgICB1cmwuc2V0UXVlcnkobWFrZVN0cmluZyhxdWVyeSwgJyYnLCBib2R5KSk7CiB9
CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlQWN0aW9uKGNvbnN0IFN0
cmluZyYgYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggMzIzZGI0NjM2MDI5OGI4YTkxYmIwMGE0
NzkyNGJiMmU4MTExZjMzOC4uNDg4MmQ3N2UxMjcxNjk4NWM0NjQ1MWRmMGVjNzQwYTc5MzkzYzQy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNDYsMTUgKzI0NiwxMiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiByZXNv
dXJjZUxvYQogCiBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewotICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCB1c2UgZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aCBpbnN0ZWFkPwogI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lOKQot
ICAgIFVSTCB1cmwoYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRo
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSku
Z2V0KCkpOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/IFNlZW1zIGltcHJvYmFibGUg
dGhhdCB0aGUgcGFzc2VkLWluIHBhdGhzIHdvdWxkIGJlIGluIHRoZSBXaW5kb3dzIHBhdGggc3R5
bGUuCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwg
cGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxz
ZSkpLmdldCgpOwogI2Vsc2UKLSAgICBVUkwgdXJsOwotICAgIHVybC5zZXRQcm90b2NvbCgiZmls
ZSJfcyk7Ci0gICAgdXJsLnNldFBhdGgocGF0aCk7CisgICAgcmV0dXJuIFVSTDo6ZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aChwYXRoKTsKICNlbmRpZgotICAgIHJldHVybiB1cmw7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmYWFlNTFmOTlmNjJiMmYyOWQ1
Y2JiOGFlY2ZjZWIxNmFkYzJlYjU0Li43MzRkYTc2NjJkNDlhNjIyNTlkZTYxZmVkOGNiZWI3MDBl
ZDJhYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25saW5lV2hpdGVsaXN0LCBVbmtub3duIH07
CiAKLXN0YXRpYyBTdHJpbmcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCitz
dGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsK
ICAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0VVJMLnBhdGgoKTsKICAgICBBU1NFUlQo
bWFuaWZlc3RQYXRoWzBdID09ICcvJyk7CiAgICAgbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRo
LnN1YnN0cmluZygwLCBtYW5pZmVzdFBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIEFT
U0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gbWFuaWZlc3RQYXRoW21hbmlmZXN0UGF0aC5sZW5ndGgo
KSAtIDFdKTsKLSAgICByZXR1cm4gbWFuaWZlc3RQYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJu
IG1hbmlmZXN0UGF0aDsKIH0KIAogYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQpAQCAtNTEsNyArNTEsNyBAQCBib29sIHBh
cnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVz
dE1JTUVUeXBlLCBjb25zdAogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0
eSgpKTsKICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IGZhbHNlOwogCi0g
ICAgU3RyaW5nIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5pZmVzdFVS
TCk7CisgICAgYXV0byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZl
c3RVUkwpOwogCiAgICAgY29uc3QgY2hhciBjYWNoZU1hbmlmZXN0TUlNRVR5cGVbXSA9ICJ0ZXh0
L2NhY2hlLW1hbmlmZXN0IjsKICAgICBib29sIGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRl
TWFuZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYW5pZmVzdE1JTUVU
eXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0YWUwMGVmOTVhNTU0NzVh
NjVmM2QuLmNkOTQ5ZTdjMTMwZDk2NjI4MmYxOWI1MmM4ZGEzMWQwMDRhNjgxNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTg2LDEwICs4Niw3IEBA
IGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiAKIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QK
IHsKLSAgICBhdXRvJiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICBpZiAoIXVybC5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCk7CiB9CiAKIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA2YTI4YTg1NzFjNWVjYTYyN2Qz
ZTZlN2QxNGY3OWE3NjM4Njk2NWIzLi5lNGE5NGE1MDU5NjFhYTM3OTdmYTZkMDRlYTY1YzY0NTY1
YWQ5NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBTdHJpbmcgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0OjpzcGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1ZXN0VVJMKFJlc291cmNl
UmVxdQogICAgIGlmICghTWVtb3J5Q2FjaGU6OnNob3VsZFJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cihyZXF1ZXN0LnVybCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gcmVx
dWVzdC51cmwoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cigpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgcmV0dXJuIGZyYWdtZW50SWRlbnRp
ZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkMzdiZjljY2E5ZDFiOWU4Yzhj
NDFlZWQ3MzQ3MThiMDdhOTgyZTU2Li43MDcyNTg3ZTA0ZmM2ZjBiYzRiYWU2NzYwNmM1ODkxZDg2
ZWU0ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMTg1LDggKzIxODUsOCBA
QCB2b2lkIEZyYW1lVmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAKIGJvb2wgRnJhbWVWaWV3Ojpz
Y3JvbGxUb0ZyYWdtZW50KGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0cmluZyBmcmFnbWVudElk
ZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKHNjcm9sbFRvRnJh
Z21lbnRJbnRlcm5hbChmcmFnbWVudElkZW50aWZpZXIpKQorICAgIGF1dG8gZnJhZ21lbnRJZGVu
dGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGlmIChzY3JvbGxUb0ZyYWdt
ZW50SW50ZXJuYWwoZnJhZ21lbnRJZGVudGlmaWVyLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIGRlY29kaW5n
IHRoZSByZWYsIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIGVuY29kaW5nLgpAQCAtMjIwMSw3ICsy
MjAxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwp
CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBmcmFnbWVudElkZW50aWZpZXIpCiB7Ci0gICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6
c2Nyb2xsVG9BbmNob3IgJXMiLCBmcmFnbWVudElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsICVz
IiwgZnJhZ21lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gSWYgb3VyIFVS
TCBoYXMgbm8gcmVmLCB0aGVuIHdlIGhhdmUgbm8gcGxhY2Ugd2UgbmVlZCB0byBqdW1wIHRvLgog
ICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAppbmRleCA5YzU4YjA2ZjRjNDcxMTMwY2U0ODE1ZjExZDE0Y2I3OGY4MWI0OWEwLi4zOGZkN2Iy
OWI1M2VhYjQ4NGUzMDk2M2I1MWM4YWU1MjVjNWQ3YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKQEAgLTIwMSwxMyArMjAxLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRl
T2JqZWN0QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAgICAgICAg
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSA9IHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVj
dFR5cGU6OlJlcGxhY2UgPyAiaGlzdG9yeS5yZXBsYWNlU3RhdGUoKSIgOiAiaGlzdG9yeS5wdXNo
U3RhdGUoKSI7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBtYWtl
U3RyaW5nKCJCbG9ja2VkIGF0dGVtcHQgdG8gdXNlICIsIGZ1bmN0aW9uTmFtZSwgIiB0byBjaGFu
Z2Ugc2Vzc2lvbiBoaXN0b3J5IFVSTCBmcm9tICIsIGRvY3VtZW50VVJMLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCAiIHRvICIsIGZ1bGxVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCksICIuICIsIHN1ZmZpeCkgfTsKICAgICB9OwotICAgIGlmICghcHJvdG9jb2xI
b3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIo
KSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0gZG9jdW1lbnRVUkwu
cGFzcygpKQorICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRv
Y3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVs
bFVSTC5wYXNzd29yZCgpICE9IGRvY3VtZW50VVJMLnBhc3N3b3JkKCkpCiAgICAgICAgIHJldHVy
biBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQcm90b2Nv
bHMsIGRvbWFpbnMsIHBvcnRzLCB1c2VybmFtZXMsIGFuZCBwYXNzd29yZHMgbXVzdCBtYXRjaC4i
KTsKIAogICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAvLyBXZSBhbGxvdyBzYW5kYm94ZWQgZG9j
dW1lbnRzLCAnZGF0YTonLydmaWxlOicgVVJMcywgZXRjLiB0byB1c2UgJ3B1c2hTdGF0ZScvJ3Jl
cGxhY2VTdGF0ZScgdG8gbW9kaWZ5IHRoZSBVUkwgcXVlcnkgYW5kIGZyYWdtZW50cy4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzAyOCBmb3Ig
dGhlIGNvbXBhdGliaWxpdHkgY29uY2VybnMuCi0gICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRp
b24gPSAoZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0
eU9yaWdpbi5pc1VuaXF1ZSgpKSAmJiBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChkb2N1
bWVudFVSTCwgZnVsbFVSTCk7CisgICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRpb24gPSAoZG9j
dW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5p
c1VuaXF1ZSgpKQorICAgICAgICAmJiBkb2N1bWVudFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZy
YWdtZW50SWRlbnRpZmllcigpID09IGZ1bGxVUkwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAogICAgIGlmICghYWxsb3dTYW5kYm94RXhjZXB0aW9uICYmICFkb2N1
bWVudFNlY3VyaXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0aCgp
ICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRVUkwu
cXVlcnkoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldp
dGhNZXNzYWdlU3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3QgbWF0Y2ggZm9yIGEgc2Fu
ZGJveGVkIGRvY3VtZW50LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCAyODc4OWNk
MTQyOTgzMmMxZjI3MmE2YWFkNWViMWU4YjYyODgyZWM3Li4wZDg3YzdkODkzNzY5N2MxZWM3MDEz
NmYxYzY2YjYxYzlmNTYwMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtNjEsMTQg
KzYxLDggQEAgaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiAKIFN0cmlu
ZyBMb2NhdGlvbjo6aHJlZigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0gdGhpcy0+dXJsKCk7
Ci0KLSAgICBpZiAoIXVybC5oYXNVc2VybmFtZSgpICYmICF1cmwuaGFzUGFzc3dvcmQoKSkKLSAg
ICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLQotICAgIFVSTCB1cmxXaXRob3V0Q3JlZGVudGlh
bHModXJsKTsKLSAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc2V0VXNlcihXVEY6OmVtcHR5U3Ry
aW5nKCkpOwotICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5zZXRQYXNzKFdURjo6ZW1wdHlTdHJp
bmcoKSk7CisgICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwoKSk7CisgICAgdXJsV2l0
aG91dENyZWRlbnRpYWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgcmV0dXJuIHVybFdpdGhv
dXRDcmVkZW50aWFscy5zdHJpbmcoKTsKIH0KIApAQCAtOTEsMjAgKzg1LDE5IEBAIFN0cmluZyBM
b2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25z
dAogewotICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJuIHVybC5w
b3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpLnZhbHVlKCkpIDogZW1wdHlTdHJpbmco
KTsKKyAgICBhdXRvIHBvcnQgPSB1cmwoKS5wb3J0KCk7CisgICAgcmV0dXJuIHBvcnQgPyBTdHJp
bmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246
OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSB1cmwoKS5wYXRoKCk7Ci0gICAg
cmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmluZygpOworICAgIHJldHVy
biBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygpOwogfQogCiBTdHJpbmcg
TG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51
cmwoKTsKLSAgICByZXR1cm4gdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6
ICI/IiArIHVybC5xdWVyeSgpOworICAgIHJldHVybiB1cmwoKS5xdWVyeVdpdGhMZWFkaW5nUXVl
c3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpvcmlnaW4oKSBj
b25zdApAQCAtMTI1LDggKzExOCw3IEBAIFJlZjxET01TdHJpbmdMaXN0PiBMb2NhdGlvbjo6YW5j
ZXN0b3JPcmlnaW5zKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpoYXNoKCkgY29uc3QKIHsK
LSAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllciA9IHVybCgpLmZyYWdtZW50SWRl
bnRpZmllcigpOwotICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpID8gZW1w
dHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50SWRlbnRpZmllcjsKKyAgICByZXR1cm4gdXJsKCku
ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmcoKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhyZWYoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTcz
LDExICsxNjUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKLSAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKLSAgICBpZiAocG9ydCA8IDAg
fHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsLnJl
bW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIHVy
bC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKICAgICByZXR1cm4gc2V0TG9jYXRp
b24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGFjZTViN2Vk
OTcwMWUyNDFlNDBhNTdkZTY0MThkOThjMTI5ZDkzODUuLjJkNTE0Njk5YjExNzFlOWM3NDg2NjEy
YTdiMWE1ZTU1YTJiYWNmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTE0NywyMiArMTQ3LDE5IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgcmV0dXJuIGhv
c3RbaG9zdC5sZW5ndGgoKSAtIG1faG9zdC5sZW5ndGgoKSAtIDFdID09ICcuJzsKIH0KIAotc3Ry
dWN0IE1hdGNoVGVzdGVyCi17CitzdHJ1Y3QgTWF0Y2hUZXN0ZXIgewogICAgIFN0cmluZ1ZpZXcg
bV9wYXR0ZXJuOwotICAgIHVuc2lnbmVkIG1fcGF0dGVybkluZGV4OwotICAgIAorICAgIHVuc2ln
bmVkIG1fcGF0dGVybkluZGV4IHsgMCB9OworCiAgICAgU3RyaW5nVmlldyBtX3Rlc3Q7Ci0gICAg
dW5zaWduZWQgbV90ZXN0SW5kZXg7Ci0gICAgCisgICAgdW5zaWduZWQgbV90ZXN0SW5kZXggeyAw
IH07CisKICAgICBNYXRjaFRlc3RlcihTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1ZpZXcgdGVz
dCkKLSAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICwgbV9wYXR0ZXJuSW5kZXgoMCkKLSAg
ICAsIG1fdGVzdCh0ZXN0KQotICAgICwgbV90ZXN0SW5kZXgoMCkKKyAgICAgICAgOiBtX3BhdHRl
cm4ocGF0dGVybikKKyAgICAgICAgLCBtX3Rlc3QodGVzdCkKICAgICB7CiAgICAgfQotICAgIAor
CiAgICAgYm9vbCB0ZXN0U3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbmRl
eCA+PSBtX3Rlc3QubGVuZ3RoKCk7IH0KICAgICBib29sIHBhdHRlcm5TdHJpbmdGaW5pc2hlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybkluZGV4ID49IG1fcGF0dGVybi5sZW5ndGgoKTsgfQog
CkBAIC0xNzQsNyArMTcxLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAgICAgICAgICAgICBtX3Bh
dHRlcm5JbmRleCsrOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBlYXRTYW1l
Q2hhcnMoKQogICAgIHsKICAgICAgICAgd2hpbGUgKCFwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSAm
JiAhdGVzdFN0cmluZ0ZpbmlzaGVkKCkpIHsKQEAgLTIyNiw4ICsyMjMsNyBAQCBzdHJ1Y3QgTWF0
Y2hUZXN0ZXIKIAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0
IFVSTCYgdGVzdCkgY29uc3QKIHsKLSAgICBNYXRjaFRlc3RlciBtYXRjaChTdHJpbmdWaWV3KG1f
cGF0aCksIHRlc3QucGF0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2gudGVzdCgpOworICAgIHJldHVy
biBNYXRjaFRlc3RlcihtX3BhdGgsIHRlc3QucGF0aCgpKS50ZXN0KCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAKaW5kZXggNGEwYzM0ZWNhNzI0MmJkYTcyNTI4NDhiM2E4Y2UyZDEzNWY3NDM1Yi4uNDcw
ZmU1NDk1NGUxYjNjNDdlZWYwNWU3ODUwY2I1YmEyYzk5NWY2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTc5MCwxNiArNzkwLDEwIEBAIFN0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNp
b25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewotICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsIGRl
ZmF1bHRNSU1FVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwotCi0gICAgaWYgKGZp
bGVuYW1lLnJldmVyc2VGaW5kKCcuJykgIT0gbm90Rm91bmQpCisgICAgaWYgKGZpbGVuYW1lLmlz
RW1wdHkoKSB8fCBmaWxlbmFtZS5jb250YWlucygnLicpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsIGRlZmF1bHRNSU1FVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1l
OwogCi0gICAgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdldFByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdl
dFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBpZiAocHJlZmVy
cmVkRXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
ZTlhNDIzYWU5Mjk5ZGFhZjdiZDhiYzRhZWNhYzIwNDJmZTc4YTMxMy4uMjdmMGNjZWMwNjI3MDdj
Y2E3M2Y1ZDhjNjY0YTI5NDllYTNlMDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNDQxLDEyICs0NDEsMTIgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHIKICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBtX2NvbnRl
bnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkg
fHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwgY29udGFpbmVy
VHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwucHJvdG9jb2xJc0RhdGEo
KSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZyb21E
YXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29u
dGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybCkpOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVu
dCgpOworICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJl
dmVyc2VGaW5kKCcuJyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmlu
Zyhwb3MgKyAxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFzdFBhdGhD
b21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIG1lZGlhVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVGb3JF
eHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lZGlhVHlwZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBl
IHsgV1RGTW92ZShtZWRpYVR5cGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDcyOGZhMmU4Nzli
MGU3NjFhNDk1ZGM0YWNhMzA4NjQ0YmQ2NGUwMGUuLmQzYjMzODI3OTFlZjJjMDIyM2E3NjQzMTcx
M2YxOGIxZjMyZTZhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsID0gbV9maXJzdFJlcXVlc3QudXJsKCk7
CiAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzcyA9IHVybC5wYXNz
KCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICAgICAgbV9maXJz
dFJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICB9CiAgICAgCkBAIC05Niw3ICs5Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFN1Z2dlc3RlZCBjcmVkZW50aWFscyBmb3IgdGhlIGN1cnJl
bnQgcmVkaXJlY3Rpb24gc3RlcC4KICAgICBTdHJpbmcgbV91c2VyOwotICAgIFN0cmluZyBtX3Bh
c3M7CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CiAgICAgCiAgICAgQ3JlZGVudGlhbCBtX2luaXRp
YWxDcmVkZW50aWFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYTkzNzMyMDM1MzEyY2M0N2Qw
OTIyMGFkODRmMmZiMmU4ZjczNDJkZS4uNTMwZWNjZmFlNzkzZTM1ZGVlOTllYzA0MDc3MDdhMzhm
OWM3YzllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMCBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxzKCkKIHsKICAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsgCiAKLSAgICBpZiAobV91cmwudXNlcigpLmlzRW1wdHkoKSAmJiBtX3VybC5w
YXNzKCkuaXNFbXB0eSgpKQorICAgIGlmICghbV91cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV91cmwuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgbV91cmwuc2V0
UGFzcyhTdHJpbmcoKSk7Ci0KKyAgICBtX3VybC5yZW1vdmVDcmVkZW50aWFscygpOwogICAgIG1f
cGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4
IDc2N2M1Nzk0OTk5Yzk0NjExODBiY2ZlZjBjMmExOTIyZmExMDcyZDYuLmVlNjAzZDcyMmY0MWQw
ZDZmN2M0NmI5MDZmYjdhNTUxMDUyMGYzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNDIsMTUg
KzE0MiwxNSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQg
ZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogI2VuZGlmCiB7CiAgICAgLy8gQ3Jl
ZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVjdGlv
bjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29uJ3Qg
YmUgbWFkZS4KLSAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNF
bXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
KSB7CisgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzd29yZC5pc0Vt
cHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKICAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7
CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7Ci0gICAgICAg
IHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CisgICAgICAgIHVybFdpdGhD
cmVkZW50aWFscy5zZXRQYXNzd29yZChkLT5tX3Bhc3N3b3JkKTsKICAgICAgICAgZmlyc3RSZXF1
ZXN0KCkuc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCiAgICAgaWYgKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlICYmIGZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkgewotICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5t
X3Bhc3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQt
Pm1fcGFzc3dvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0v
NzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91
c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAg
ICAgLy8gdHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93
ZWQgYnkgUkZDIDI2MTcuCiAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQpAQCAtMTYwLDcgKzE2MCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwg
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBv
c3NpYmxlIHRvIGltcGxlbWVudCBsb2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3
aXRoIGtub3duIGluY29ycmVjdCBjcmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0
ZWx5CiAgICAgICAgICAgICAvLyAoc28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9l
c24ndCBwb3AgdXApLgogICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgICAgICBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgp
LmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJz
dFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9w
YXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsK
ICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7
CisgICAgZC0+bV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIGQtPm1fbGFzdEhUVFBN
ZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRp
YWxzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGljYXRp
b24gY3JlZGVudGlhbHMgaWYgdGhpcyBpcyBhY3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVk
aXJlY3QKICAgICAgICAgLy8gVVJMIGRpZG4ndCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBv
d24uCi0gICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5
KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNl
ci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9u
c2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCA9IG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlv
bigpLCByZXF1ZXN0LnVybCgpKTsKQEAgLTUyMSwxNyArNTIxLDE1IEBAIGJvb2wgUmVzb3VyY2VI
YW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoCiAgICAgaWYgKCFjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29y
ZEJhc2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZC0+bV91c2VyLmlz
TnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFs
ICpjcmVkZW50aWFsID0gW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpkLT5t
X3VzZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzd29yZDpkLT5tX3Bhc3MKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dOworICAgIGlmICghZC0+bV91c2Vy
LmlzTnVsbCgpICYmICFkLT5tX3Bhc3N3b3JkLmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gY3Jl
ZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpk
LT5tX3VzZXIKKyAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzc3dvcmQgcGVyc2lzdGVuY2U6
TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uXSk7CiAgICAgICAgIGQtPm1fY3Vy
cmVudE1hY0NoYWxsZW5nZSA9IGNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCk7CiAgICAgICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICAg
ICAgcmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgQ3JlZGVudGlhbChjcmVkZW50aWFsKSk7
Ci0gICAgICAgIFtjcmVkZW50aWFsIHJlbGVhc2VdOworICAgICAgICByZWNlaXZlZENyZWRlbnRp
YWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNyZWRlbnRpYWwuZ2V0KCkpKTsKICAgICAgICAgLy8g
RklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2Vk
IGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4
cGxpY2l0bHkuCiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bh
c3MgPSBTdHJpbmcoKTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
clN0YXRlLmNwcAppbmRleCAyYzZjNzBlODQ5OTVjMjlhYzE4ZmYzYzk1NDljNzg5OTY4Y2EwMWNh
Li5kY2I0MzBiMjJmNzU0NmJhZDM5NzA1ODM5M2Q4NDJhYjRlMDZlYWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCkBAIC0xNjUsMTcgKzE2NSwxNCBAQCBi
b29sIEJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYg
aW5WYWx1ZSwgRmlsdGVyT3BlcmF0aQogCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25z
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pihp
blZhbHVlKSkgewotCiAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZh
bHVlKSkgewogICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUuaXNVUkkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7Ci0gICAg
ICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwotCi0gICAg
ICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIG9wZXJhdGlv
bnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgICAgICAgICAg
YXV0byBmaWx0ZXJVUkwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOworICAgICAgICAg
ICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoZmlsdGVyVVJMKS5mcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFw
cGVuZChSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShmaWx0ZXJVUkwsIGZyYWdtZW50
LnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKaW5kZXggZDc5ZTgwMDg4MDg1MDA1
ZjFlMjM4NWEwODFiYTE2MGFmYWJmMjIzOS4uMDE3MWNiNDc2YmM2MGUwMjRjNzAyMjNkYmRkZThk
YzE4ZjE1NTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2Nh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAK
QEAgLTUzLDIzICs1MywyNCBAQCBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhvc3RuYW1lKCkgY29u
c3QKIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpwb3J0KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV91cmwucG9ydCgpID8gU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgpLnZhbHVlKCkpIDogZW1w
dHlTdHJpbmcoKTsKKyAgICBhdXRvIHBvcnQgPSBtX3VybC5wb3J0KCk7CisgICAgcmV0dXJuIHBv
cnQgPyBTdHJpbmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcg
V29ya2VyTG9jYXRpb246OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSBtX3Vy
bC5wYXRoKCk7Ci0gICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmlu
ZygpOworICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygp
OwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIG1fdXJs
LnF1ZXJ5KCk7CisgICAgcmV0dXJuIG1fdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmso
KS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhhc2goKSBjb25zdAog
ewotICAgIHJldHVybiBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogIiMiICsgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJu
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvU3RyaW5n
KCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCAwZDUzYmNmOTIzZWQ2MTI2NTM5ZjM1ZGQyYjk0OWNh
MTRiN2I1NjdjLi4xODk2YzI0MTFiNWRjMGJmNjgyZjQyNTA4OGUzZTY4OTYwZDJjYWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkoU2VjdXJpdHlP
cmlnaW5EYXRhJiYKICAgICA6IG1fdG9wT3JpZ2luKFdURk1vdmUodG9wT3JpZ2luKSkKICAgICAs
IG1fc2NvcGUoV1RGTW92ZShzY29wZSkpCiB7Ci0gICAgQVNTRVJUKCFtX3Njb3BlLmhhc0ZyYWdt
ZW50KCkpOworICAgIEFTU0VSVCghbV9zY29wZS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiB9
CiAKIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleTo6ZW1wdHlLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXgg
MTUyODE1NTgyNTY5ODFhNDgzOGNkNjM3M2IzNjcxYTVlZDA0MGFmOS4uYTBkZTQ5ZjA4ODQ0YTg2
YzZlMzI5NzVjYzRiZDcwNDY3NWIyYWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsLAogICAgIGlm
ICghdXNlci5pc051bGwoKSkKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNl
cik7CiAgICAgaWYgKCFwYXNzd29yZC5pc051bGwoKSkKLSAgICAgICAgdXJsV2l0aENyZWRlbnRp
YWxzLnNldFBhc3MocGFzc3dvcmQpOworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFz
c3dvcmQocGFzc3dvcmQpOwogCiAgICAgcmV0dXJuIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVu
dGlhbHMsIGFzeW5jKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA5ZTBiNjgyY2RlZDJhZmJiZjU3YTAyODQ5ZGMz
Yjc5ZDc5YTc2NzIxLi45NTVkMzg4ZTVlOTZlMzUxOTkzNjc0ZmI5NDllYTg3YWYzZmQzMWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVkaXJlY3Rpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXEKICAgICAg
ICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3Ry
aW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgp
LnN0cmluZygpLCAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xp
Y3k6IG5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGlyZWN0aW9u
IHdpdGggbm9uIENPUlMgc2NoZW1lIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBpZiAobG9jYXRpb24uaGFzVXNlcm5hbWUoKSB8fCBsb2NhdGlvbi5oYXNQYXNz
d29yZCgpKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5oYXNDcmVkZW50aWFscygpKSB7CiAgICAg
ICAgICAgICBoYW5kbGVyKHJlZGlyZWN0aW9uRXJyb3IocmVkaXJlY3RSZXNwb25zZSwgbWFrZVN0
cmluZygiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIHJlZGlyZWN0UmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9s
aWN5OiByZWRpcmVjdGlvbiBVUkwgIiwgbG9jYXRpb24uc3RyaW5nKCksICIgaGFzIGNyZWRlbnRp
YWxzIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjM1LDcgKzIzNSw3
IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvCiAgICAgaHR0cHNVcGdyYWRlQ2hlY2tlci5xdWVy
eSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIG1fc2Vzc2lvbklELCBbcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoYm9vbCBmb3VuZEhvc3QpIG11
dGFibGUgewogICAgICAgICBpZiAoZm91bmRIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIG5ld1VS
TCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgICAgICAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0dHBz
Il9zKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KaW5kZXggMGM4ODA1NjNkZmQyYTRjYTdhMWU2ZDZkZTYzMjMzMDRiNzVhZGMyMi4uNDM3Nzdh
OWRlM2I2Y2Q1NThlMDk0YWY4NTVjN2JkYmY2MzFkOGE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CkBAIC0yMTksNyArMjE5LDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBhdXRvIHVy
bCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgJiYgdXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkgewogICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICBtX3Bh
c3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgp
OwogICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgICAgIHVybCA9IHJl
cXVlc3QudXJsKCk7CiAgICAgCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1f
dXNlciA9IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgbV9w
YXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0
Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggMmQ3NzYzNDVlMjI0OTZjYjg3NTBjMmU2MTQ5
Y2QwNjZhYzBjNzgwMy4uNGM4MzhhZmI3MzA1OTYzNTg5MzlhZmI1YmI0NTY0ZDAwYThhNjIxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaApAQCAtNjMsMjUgKzYzLDI1IEBAIHB1YmxpYzoK
ICAgICBXVEY6OlN0cmluZyBob3N0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3Bh
cnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1
cm4gbV9wYXJzZWRVUkwtPmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIFdURjo6U3Ry
aW5nIHByb3RvY29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+
cHJvdG9jb2woKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1f
cGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJp
bmcgcGF0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPnBhdGgo
KS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJM
LT5wYXRoKCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBsYXN0UGF0aENv
bXBvbmVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPmxhc3RQ
YXRoQ29tcG9uZW50KCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRV
UkwtPmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IGIxYzM2ZGIyYzA0NjhhNjUxZDY0
NzZhMmY5ZGVjZGIzMjk2NWJkZGQuLjA3Y2QxMGYyYTNkZjk5MGM4NjZlMGVlODljOTlhMDYzNTBm
YmY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50Lm1tCkBAIC0yMjAsOCArMjIwLDggQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3dubG9h
ZFByb3h5KSkgewotICAgICAgICAgICAgV1RGOjpVUkwgZGVzdGluYXRpb25VUkwgPSBXVEY6OlVS
TDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmls
ZW5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmZyYWdtZW50SWRlbnRp
ZmllcigpLmxlbmd0aCgpKQorICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvblVSTCA9IFdURjo6
VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVzdGluYXRpb25G
aWxlbmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25VUkwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VUkwuc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLnVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXItPmZpbmlzaChkZXN0aW5hdGlvblVSTCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmNwcAppbmRleCBjYzA0ZTU1MGJmNmVhNjkzYzhiOGZlMjhjZTRkOWYyMDcyMWQ3
MjI2Li42OWMxMGI4ZGRkZTM1ZGQ2Yzc5NzAyMmM1YjIxOTRmYWQ4ZjRmMmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBA
IC0xMTMsMTUgKzExMyw5IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9y
YWdlRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoTWFwCiAKICAgICAgICAgRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJl
Y3RvcnkpOwogCi0gICAgICAgIGF1dG8gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIik7Ci0KICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2FsdEZvck9yaWdpbj4+IGRl
dmljZUlkSGFzaFNhbHRGb3JPcmlnaW5zOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
blBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICAgICAgVVJMIHVybDsKLSAgICAgICAgICAg
IHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAgICAgICAgICB1cmwuc2V0UGF0aChvcmln
aW5QYXRoKTsKLQotICAgICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSB1cmwubGFz
dFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCAi
KiIpKSB7CisgICAgICAgICAgICBhdXRvIGRldmljZUlkSGFzaFNhbHQgPSBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0aCkubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmlu
ZygpOwogCiAgICAgICAgICAgICBpZiAoaGFzaFNhbHRTaXplICE9IGRldmljZUlkSGFzaFNhbHQu
bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVyc2lz
dGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIGxlbmd0aCBvZiB0aGUgaGFzaCBz
YWx0ICglZCkgaXMgZGlmZmVyZW50IHRvIHRoZSBsZW5ndGggb2YgdGhlIGhhc2ggc2FsdHMgZGVm
aW5lZCBpbiBXZWJLaXQgKCVkKSIsIGRldmljZUlkSGFzaFNhbHQubGVuZ3RoKCksIGhhc2hTYWx0
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHAKaW5kZXggZDMwNTU1MzA4MDQ2MjM4MTMxZjBiZmVkNDJkNWYzMDExZjJiMWUy
NS4uYjdhZjVjZGFlYjVkMDNiMzA5YmFkYmQ5NjM1M2E1NmJmYmQyZjdhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAt
MTQ1LDE2ICsxNDUsMTUgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQ
bHVnaW5Gb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24KICAgICByZXR1cm4gUGx1
Z2luTW9kdWxlSW5mbygpOwogfQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9u
KGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYg
dXJsKQogewotICAgIFN0cmluZyBleHRlbnNpb247Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aCgnLycpKSB7
Ci0gICAgICAgIHNpemVfdCBleHRlbnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicp
OwotICAgICAgICBpZiAoZXh0ZW5zaW9uUG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgZXh0
ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGV4dGVuc2lvblBvcyArIDEpOwotICAgIH0KLSAg
ICByZXR1cm4gZXh0ZW5zaW9uLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgYXV0byBm
aWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGlmIChmaWxlbmFtZS5lbmRz
V2l0aCgnLycpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHNpemVfdCBsYXN0RG90UG9zaXRp
b24gPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIGlmIChsYXN0RG90UG9zaXRpb24g
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGZpbGVuYW1lLnN1
YnN0cmluZyhsYXN0RG90UG9zaXRpb24gKyAxKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwog
fQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYzk3ZTBhZTc5NWE5MTc3YmIzZjU2ZDBkMDFkYTk2MTNhYWRmMmM1MC4u
NmQ1NTA2NWY1MTcwYjliYTZlMDBhMjQ5YzBkYzU4NDE5OTk3NjRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShXZWJQcm9j
ZXNzUHJveHkmIHByb2NlcwogI2VuZGlmCiAKICAgICAvLyBXZSBmYWlsZWQgdG8gaXNzdWUgYW4g
dW5pdmVyc2FsIGZpbGUgcmVhZCBhY2Nlc3Mgc2FuZGJveCwgZmFsbCBiYWNrIHRvIGlzc3Vpbmcg
b25lIGZvciB0aGUgYmFzZSBVUkwgaW5zdGVhZC4KLSAgICBhdXRvIGJhc2VVUkwgPSBVUkwoVVJM
KCksIHVybC5iYXNlQXNTdHJpbmcoKSk7CisgICAgYXV0byBiYXNlVVJMID0gdXJsLnRydW5jYXRl
ZEZvclVzZUFzQmFzZSgpOwogICAgIGF1dG8gYmFzZVBhdGggPSBiYXNlVVJMLmZpbGVTeXN0ZW1Q
YXRoKCk7CiAgICAgaWYgKGJhc2VQYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC01
MTg4LDcgKzUxODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgICAgIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbgogICAgICAgICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8t
PmlzTWFpbkZyYW1lKCkKLSAgICAgICAgICAgICYmIChtX21haW5GcmFtZSA/ICFob3N0c0FyZUVx
dWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZSkKKyAgICAgICAg
ICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVl
c3QudXJsKCkuaG9zdCgpKQogICAgICAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2
aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOwogCiAg
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVz
dCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwpAQCAtNTMxNCw3ICs1
MzE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNvdXJjZUZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsK
IAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlcklu
aXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVu
dGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSA/
ICFob3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxz
ZTsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21h
aW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgICAgICBh
dXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRy
LCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRp
b25BY3Rpb24uZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKQEAgLTU1MTIsNyArNTUx
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAKICAgICAgICAgcmVwbHkobmV3UGFnZS0+
d2ViUGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICpuZXdQ
YWdlLT5kcmF3aW5nQXJlYSgpKSk7CiAKLSAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVz
c0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNBcmVFcXVhbChV
UkwoeyB9LCBtYWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbmV3UGFnZS0+
bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0g
VVJMKHsgfSwgbWFpbkZyYW1lVVJMKS5ob3N0KCkgPT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAK
ICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NTT0F1
dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSB0cnVlOwpAQCAtNTUy
MCw3ICs1NTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZv
RGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW8KICAgICB9OwogCiAgICAgYXV0
byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAg
Ym9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChvcmlnaW5hdGluZ0ZyYW1l
SW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKTsKKyAgICBib29sIHNob3VsZE9w
ZW5BcHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCkuaG9zdCgp
ICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQ
STo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBvcmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbiksICp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2luZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdp
bmRvd0ZlYXR1cmVzKV0gKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFj
dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYWVkZGFkMDE3NGE5ZTY5OTU2NWQyZmYxOGVhYjUwZjYz
Yzg2NmU0Li4yN2VkZjE2ZmE2MDZmZjVhN2ZlOWFlYTk2ZDlmM2E4NDFmMjg0ZTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU2MiwxMSArNTYy
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKFdl
YlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nCiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNl
IHRoYXQgdXJsU3RyaW5nIGRvZXMgbm90IHBvaW50IHRvIGEgZGlyZWN0b3J5LgogICAgIC8vIEdl
dCB1cmwncyBiYXNlIFVSTCB0byBhZGQgdG8gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNj
ZXNzLgotICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwotICAgIFN0
cmluZyBwYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0aCgpOworICAgIGF1dG8gcGF0aCA9IHVy
bC50cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKS5maWxlU3lzdGVtUGF0aCgpOwogICAgIGlmIChwYXRo
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDbGllbnQgbG9hZHMg
YW4gYWx0ZXJuYXRlIHN0cmluZy4gVGhpcyBkb2Vzbid0IGdyYW50IHVuaXZlcnNhbCBmaWxlIHJl
YWQsIGJ1dCB0aGUgd2ViIHByb2Nlc3MgaXMgYXNzdW1lZAogICAgIC8vIHRvIGhhdmUgcmVhZCBh
Y2Nlc3MgdG8gdGhpcyBkaXJlY3RvcnkgYWxyZWFkeS4KICAgICBtX2xvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3MuYWRkKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCmluZGV4IDg3Y2I4YjcwNTQzOTZkN2VmNjYxZjBmNDdlNmY1OGFkOGY3NjdiYmQuLjZlZWY0
YTI0ZDgzNzBjOWJiMWFhZWQ5MWExYTY2OWE2YTgxN2FkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNl
UmVpbgogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZG9tYWluIGluIGRvbWFpbnMuZ2V0KCkp
IHsKICAgICAgICAgICAgICAgICBVUkwgdXJsIHsgVVJMKCksIGRvbWFpbiB9OwogICAgICAgICAg
ICAgICAgIGlmICh1cmwucHJvdG9jb2woKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAg
IHVybC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAgICAgICAgICAgICAgICAgICB1cmwuc2V0
UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBhcHBCb3VuZERvbWFpbiB7IHVybCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA5MDM5OTBiZjk0ZTgzODVmZGU5ZjE1NGMzZDM1ZGFlNTMz
ZDAwMDNiLi40ODc1MWFiZjQ4MzI0NTg5NjFiZTczYWE1YTU5NWIwNWRlY2VhZjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjAsMTkgKzYwLDEwIEBAIFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5
T3JpZ2lucygpCiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRo
cyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnks
ICIqIik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpIHsK
LSAgICAgICAgVVJMIHVybDsKLSAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsKLSAg
ICAgICAgdXJsLnNldFBhdGgob3JpZ2luUGF0aCk7Ci0KLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5
SWRlbnRpZmllciA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotCi0gICAgICAgIGF1dG8gc2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
bWVkaWFLZXlJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKCpzZWN1cml0eU9yaWdp
bik7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0aCkubGFzdFBh
dGhDb21wb25lbnQoKS50b1N0cmluZygpOworICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihpZGVudGlmaWVy
KSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZWQzMDFhNTRkZDk5YmViNjhmYjE0MzhkMmQx
YzI1NGQwMzAxNmU0Li5lNGVmYTQ4MDlmMGEzZmY1MGE2MTZmZTExYTc1MDU4OWE0NzhlYWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTE1NjIsMTAgKzE1NjIsOCBAQCB2b2lkIFBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3Vt
ZW50KCkKICAgICBpZiAoW21fcGRmRG9jdW1lbnQgaXNMb2NrZWRdKQogICAgICAgICBjcmVhdGVQ
YXNzd29yZEVudHJ5Rm9ybSgpOwogCi0gICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50OildKSB7Ci0gICAgICAgIFN0
cmluZyBwZGZVUkxGcmFnbWVudCA9IG1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7
Ci0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRVUkxGcmFnbWVudDpwZGZVUkxGcmFn
bWVudF07Ci0gICAgfQorICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDopXSkKKyAgICAgICAgW21fcGRmTGF5ZXJD
b250cm9sbGVyIHNldFVSTEZyYWdtZW50Om1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzZXRTdWdn
ZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggNzY4YmEyZDdjNDY4NmMwNmVlOTc0YWJiZDY1MjU0
MTFmM2JiY2M5My4uNDFkM2VkODVlMzM3YzUxNmNiNWNkZTBkOTdjZTIxOGNhMjE1MTVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yNCwxNyArMjQsMTMgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIK
IAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVD
bGllbnQuaCIKLQogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCi0jaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CkBAIC00Miw3ICszOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGlj
YXRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCiB7CkBA
IC01NiwxOSArNTEsMjEgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQorCit2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBT
dHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5n
KTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIGVuY29kZWQg
KyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFy
Y2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAg
ICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2Vh
cmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAKLSAgICBp
ZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIHBhZ2UtPm1h
aW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVSTCB7IH0sIHVybCB9LCB7
IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFJl
ZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRv
ciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKKyAgICBwYWdl
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFyY2hVUkwsIHsgfSwgbnVs
bHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRM
aXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSop
CkBAIC05MSwxNCArODgsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFr
aW5nKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQorCiAjZW5kaWYKIAogI2lmIFVTRShB
Q0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCisKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNob3dDb250ZXh0TWVudSgpCiB7CiAgICAgbV9wYWdlLT5jb250ZXh0TWVudSgpLT5zaG93KCk7
CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDgwOTRh
NjI4MjI2MWI1ZTgzOTc0NWQ4NmU2MDQzYWY0Y2U2YzcyMzguLjMwYzZmZmUyM2YxZTQ5ZjE1ZjY2
ODM4YjY4NDFiNTY2MmM3ZWVmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgU3RyaW5nIHRp
dGxlID0gbGFiZWw7CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aXRsZSA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGM4NDQ4YzVhYzFmNDM2MmU0NDAzYzNhYzI5YTI4
NmE5YWY1ZWJiOGUuLmNjYWUyMTJjNTZjYTQ4OTFiNjdjNmQzYmVlNGNkMzMxOTJiMmE0ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04ODIsNyArODgyLDcgQEAgc3RhdGljIEJP
T0wgc2hvdWxkVHJ5QXBwTGluayhXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJgogICAgIGlmICghYWN0aW9uLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQog
ICAgICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUt
PmRvY3VtZW50KCkgJiYgaG9zdHNBcmVFcXVhbCh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCksIGFjdGlvbi51cmwoKSkpCisgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5k
b2N1bWVudCgpICYmIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5ob3N0KCkgPT0gYWN0
aW9uLnVybCgpLmhvc3QoKSkKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgcmV0dXJuIFlFUzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE4MWMz
MGI3YTk5ODYzODM5YjA1MWM0NTlhZmUwNWUwMjc4ZWQ0ZGEuLmM4NDBiYzFkNjJkZDVkYThmYjA4
MzY1NzRjMGJkNDFhOWYxNmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMjI5NSwxNCArMjI5NSwxMCBAQCAtIChET01Eb2N1bWVudEZyYWdt
ZW50ICopX2RvY3VtZW50RnJhZ21lbnRGb3JXZWJBcmNoaXZlOihXZWJBcmNoaXZlICopd2ViQXJj
aGl2ZQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRGb3JJbWFn
ZURhdGE6KE5TRGF0YSAqKWRhdGEgd2l0aFJlbGF0aXZlVVJMUGFydDooTlNTdHJpbmcgKilyZWxh
dGl2ZVVSTFBhcnQgYW5kTUlNRVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKIHsKLSAgICBXZWJS
ZXNvdXJjZSAqcmVzb3VyY2UgPSBbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0
YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5
cGU6bWltZVR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleHRFbmNvZGluZ05hbWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWVOYW1lOm5pbF07Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVu
dCAqZnJhZ21lbnQgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aElt
YWdlUmVzb3VyY2U6cmVzb3VyY2VdOwotICAgIFtyZXNvdXJjZSByZWxlYXNlXTsKLSAgICByZXR1
cm4gZnJhZ21lbnQ7CisgICAgYXV0byByZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBh
bGxvY10gaW5pdFdpdGhEYXRhOmRhdGEKKyAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxh
dGl2ZVBhcnQoU3RyaW5nIHsgcmVsYXRpdmVVUkxQYXJ0IH0pCisgICAgICAgIE1JTUVUeXBlOm1p
bWVUeXBlIHRleHRFbmNvZGluZ05hbWU6bmlsIGZyYW1lTmFtZTpuaWxdKTsKKyAgICByZXR1cm4g
W1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlOnJl
c291cmNlLmdldCgpXTsKIH0KIAogLSAoQk9PTClmb2N1c2VkTm9kZUhhc0NvbnRlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDUyMGVh
NTY2NGFmMjg3NTY5YTg1NWM3NGI4MWNlYTU0YzdlOGUyMDIuLmVmODYyZTVhYWFhYTA5NDdhM2I3
MTBkMDdiYmNlNzg4OGQ3M2QwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjMwNiw3ICsyMzA2LDcgQEAgLSAodm9pZCljbG9zZQog
CiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX3dlYl9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGU6KE5TU3RyaW5n
ICopcGFzdGVib2FyZFR5cGUgaW1hZ2VNSU1FVHlwZTooTlNTdHJpbmcgKilpbWFnZU1JTUVUeXBl
CiB7Ci0gICAgYXV0byBmaWxlbmFtZSA9IFtpbWFnZU1JTUVUeXBlIHN0cmluZ0J5UmVwbGFjaW5n
T2NjdXJyZW5jZXNPZlN0cmluZzpAIi8iIHdpdGhTdHJpbmc6QCIuIl07CisgICAgU3RyaW5nIGZp
bGVuYW1lID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3Ry
aW5nOkAiLyIgd2l0aFN0cmluZzpAIi4iXTsKICAgICBhdXRvIHJlc291cmNlID0gYWRvcHROUyhb
W1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6W3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6
cGFzdGVib2FyZFR5cGVdCiAgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KGZpbGVuYW1lKSBNSU1FVHlwZTppbWFnZU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6bmlsIGZy
YW1lTmFtZTpuaWxdKTsKICAgICByZXR1cm4gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRG
cmFnbWVudFdpdGhJbWFnZVJlc291cmNlOnJlc291cmNlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQppbmRleCBhYTUxYjYzOTQ4ODhhNzBiN2YwZDlkYmEwNTFmZTI1YjFlMTZm
Zjk3Li5mMTQxODYzMGVmNmU5ZGEyYzMzOWYwYWQxZWQ4ZWU2NjlhODg4N2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgLSAoaWQgPE5TSW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVy
CiAgICAgICAgIHJldHVybiBbW1tXZWJBbmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CiAKICAgICBOU1VSTCAqdXJsID0gX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVM
aW5rVVJMKCk7Ci0gICAgTlNTdHJpbmcgKmFic29sdXRlVVJMU3RyaW5nID0gW3VybCBhYnNvbHV0
ZVN0cmluZ107CisgICAgU3RyaW5nIGFic29sdXRlVVJMU3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0
cmluZ107CiAgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpIHsKICAg
ICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7
CiAgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbk1haWx0b0xpbms7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYzI2NWUwODNlMWY3YzlhZmM4M2JjOGUwMWU4
ZjQ0ZWVmN2FiNTNiOS4uMTQyZTFjMzE2NmNhYWRhY2QzNWRhODJjYzZiM2NlNDQyZjRiNjQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjUsMjEgKzI1LDE0IEBACiAKICNp
bmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCi0jaW5jbHVkZSAiV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmgiCi0jaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiBXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQoV2Vi
Vmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewpAQCAtNTcsMTcgKzUw
LDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYg
dXJsKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsK
LSAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNo
U3RyaW5nKTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8g
cGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIGVu
Y29kZWQgKyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNl
cyhzZWFyY2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9z
KTsKKyAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAK
LSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVSTCB7IH0sIHVy
bCB9LCB7IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6
Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUlu
ZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKKyAg
ICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFyY2hVUkwsIHsg
fSwgbnVsbHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAK
IHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjNhYTk2
OGI4NzdhODg4YWY3MzM4NzgzYTY5NWU1MmUxODhmM2RkNC4uODQ4MWM1Zjc3OGI3ZWI0NTRjMTY4
OTgwYmI5ODRjZWEwZDAxMzBkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3
aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
LmNwcDogUmVtb3ZlZCB0aGUgdGVzdCBmb3IKKyAgICAgICAgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5k
RnJhZ21lbnQgc2luY2Ugd2UgcmVtb3ZlZCB0aGF0IGZ1bmN0aW9uLgorICAgICAgICBVcGRhdGVk
IGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBmcm9tIFVSTDo6cGFzcy4KKyAgICAgICAgVXBk
YXRlZCBhcmd1bWVudHMgdG8gaXNNYXRjaGluZ0RvbWFpbiB0byBwYXNzIGxpdGVyYWxzIHRoYXQg
Y2FuIGJlIGNvbnZlcnRlZAorICAgICAgICB0byBTdHJpbmdWaWV3IHJhdGhlciB0aGFuIEFTQ0lJ
TGl0ZXJhbCwgd2hpY2ggU3RyaW5nVmlldyBkb2Vzbid0IHlldCBzdXBwb3J0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6IFVwZGF0ZWQgZm9yIHJlbmFtZSBv
ZiBVUkw6OnBhc3N3b3JkIGZyb20gVVJMOjpwYXNzLgorCiAyMDIwLTA0LTEzICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjU5OTAwKSA6
IFNwZWVkb21ldGVyIGZhaWxpbmcgb24gQ2F0YWxpbmEtUmVsZWFzZS1XSzItUGVyZiBib3QKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCmluZGV4IDkzN2I5Zjk0MGJmOTExM2ZjZTM3
MjNmYWYwYzVlNWJmNmIxYzg3ZGUuLjZiZjI3NWE1MThkNDdhMGUyZjIxNzk0YTA3OGQ2MTljZTdj
NTFmZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBURVNUX0YoV1RGX1VSTCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAgICAgRVhQRUNU
X1RSVUUoISFrdXJsLnBvcnQoKSk7CiAgICAgRVhQRUNUX0VRKDgwODAsIGt1cmwucG9ydCgpLnZh
bHVlKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoInVzZXJuYW1lIiksIGt1cmwudXNlcigpKTsK
LSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3MoKSk7CisgICAgRVhQ
RUNUX0VRKFN0cmluZygicGFzc3dvcmQiKSwga3VybC5wYXNzd29yZCgpKTsKICAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgoKSk7CiAgICAgRVhQRUNUX0VRKFN0
cmluZygiaW5kZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgIEVYUEVD
VF9FUShTdHJpbmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgpKTsKQEAgLTI2MSw1NyArMjYxLDYg
QEAgVEVTVF9GKFdURl9VUkwsIEVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIpCiAgICAg
fQogfQogCi1URVNUX0YoV1RGX1VSTCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCi17
Ci0gICAgc3RydWN0IFRlc3RDYXNlIHsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMTsKLSAgICAg
ICAgY29uc3QgY2hhciogdXJsMjsKLSAgICAgICAgYm9vbCBleHBlY3RlZDsKLSAgICB9IGNhc2Vz
W10gPSB7Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5IiwgImh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAot
ICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsICJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
OjgwLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRw
Oi8vZXhhbXBsZS5jb206ODAvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAot
ICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1w
bGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0
aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29t
L3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvb3RoZXJwYXRo
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9u
b3QtZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MC8iLCBmYWxzZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwg
ZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb206ODEvIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgx
L3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6
Ly9leGFtcGxlLmNvbTo4MS9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgi
LCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aD9xdWVyeSIsICJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MS9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgi
LCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvb3RoZXJwYXRoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0
aC90by9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAg
ICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8v
ZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9x
dWVyeSIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxl
Lmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXJfZmlsZS5odG1s
IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTov
Ly9wYXRoL3RvL290aGVyL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwg
ZmFsc2V9LAotICAgICAgICB7ImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3
Nk8vNzZPLzc2Ty8iLCAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2MC83
NjAvNzYwLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZTov
L2V4YW1wbGUuY29tIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFz
aCIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tLz9xdWVyeSIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbS8/cXVlcnkjaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwg
ZmFsc2V9LAotICAgIH07Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgewot
ICAgICAgICBVUkwgdXJsMSA9IGNyZWF0ZVVSTCh0ZXN0LnVybDEpOwotICAgICAgICBVUkwgdXJs
MiA9IGNyZWF0ZVVSTCh0ZXN0LnVybDIpOwotICAgICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3Rl
ZCwgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQodXJsMSwgdXJsMikpCi0gICAgICAgICAg
ICA8PCAiVGVzdCBmYWlsZWQgZm9yICIgPDwgdGVzdC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51
cmwyOwotICAgIH0KLX0KLQogVEVTVF9GKFdURl9VUkwsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkp
CiB7CiAgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsK
QEAgLTM3NiwyMiArMzI1LDIyIEBAIFRFU1RfRihXVEZfVVJMLCBIb3N0SXNNYXRjaGluZ0RvbWFp
bikKIAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0pKTsK
ICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVD
VF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNU
X1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7CisgICAgRVhQ
RUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1
cmwuaXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwu
aXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0Uo
dXJsLmlzTWF0Y2hpbmdEb21haW4oInJnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01h
dGNoaW5nRG9tYWluKCIub3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5n
RG9tYWluKCJ3dy53ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJodHRwOi8vd3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
dXJsLmlzTWF0Y2hpbmdEb21haW4oInJnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRj
aGluZ0RvbWFpbigiLm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21h
aW4oInd3LndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9t
YWluKCJodHRwOi8vd3d3LndlYmtpdC5vcmciKSk7CiAKICAgICB1cmwgPSBjcmVhdGVVUkwoImZp
bGU6Ly8vd3d3LndlYmtpdC5vcmciKTsKIAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5n
RG9tYWluKFN0cmluZyB7IH0pKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFp
bihlbXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWlu
KCJvcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtp
dC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53
ZWJraXQub3JnIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJv
cmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3Jn
IikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5v
cmciKSk7CiAKICAgICBVUkwgZW1wdHlVUkw7CiAgICAgRVhQRUNUX0ZBTFNFKGVtcHR5VVJMLmlz
TWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAppbmRleCBh
MjY4MTZkYTE0OTFmNmUzYjIwNTdjNjZhN2RjYTQ1OWQxMzYxNGQzLi5lMjYxNzkzMzQyNTIyNDNi
YTVmMTQxODBmNzIyNGViNzc1NGRjYTFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwogICAgIGF1dG8gdXJsID0gVVJMKHsg
fSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9j
b2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJs
LnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygp
KSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVD
VF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMU3RyaW5nLCBjb25zdAogICAgIGF1dG8gdXJsID0gVVJMKFVSTCh7IH0sIGJhc2VVUkxTdHJp
bmcpLCB1cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90
b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1
cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNz
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQ
RUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396377</attachid>
            <date>2020-04-13 20:40:52 -0700</date>
            <delta_ts>2020-04-14 09:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200413204050.patch</filename>
            <type>text/plain</type>
            <size>174755</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNlMzNjZTNmYTQ4YmIzMGRlYTE3MGZi
YzU5MTk5NGE3N2QzMzJlMWEuLjhiNTE3YjIxMzBmYWI3OWI2Y2MwYWQ3ZWViMTgwY2ZlNzc2YWM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTU0IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpob3N0QW5kUG9ydCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQgdHlwZSBjYXN0LCBub3cK
KyAgICAgICAgdGhhdCBtYWtlU3RyaW5nIGNvcnJlY3RseSBoYW5kbGVzIHVpbnQxNl90IHNpbmNl
IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICB0aGUgc2FtZSB0eXBlIGFzIFVDaGFyLgorICAgICAg
ICAoV1RGOjpVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQgY29uc3QpOiBPcHRpbWl6ZWQgdG8gYWx3
YXlzIGFsbG9jYXRlCisgICAgICAgIHRoZSBzdHJpbmcgaW4gdGhlIHJpZ2h0IHNpemUgcmF0aGVy
IHRoYW4gcmVtb3ZpbmcgY2hhcmFjdGVycyBmcm9tIGl0CisgICAgICAgIGFmdGVyIGNyZWF0aW5n
IGl0LgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZSk6IEFkZGVkLiBGYWN0b3Jl
ZCBvdXQgZnJvbSB0aGUgZnVuY3Rpb24KKyAgICAgICAgYmVsb3cgdG8gbWFrZSBpdCBhIGxpdHRs
ZSBtb3JlIHJlYWRhYmxlLgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9t
UGFyc2VkVVJMKTogQ29udmVydCBhIG51bGwgU3RyaW5nVmlldworICAgICAgICB0byBhIG51bGwg
U3RyaW5nIHJhdGhlciB0aGFuIGFuIGVtcHR5IFN0cmluZywgdXNlIGEgc3RhY2sgYnVmZmVyIGFu
ZAorICAgICAgICB0aGUgaGVscGVyIGZ1bmN0aW9uIGFib3ZlLCBhbmQgYWRkZWQgc29tZSBGSVhN
RSBjb21tZW50cyBhYm91dAorICAgICAgICBlbmNvZGluZyBoYW5kbGluZy4KKyAgICAgICAgKFdU
Rjo6VVJMOjp1c2VyIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5nIGVuY29kZWRVc2VyLgor
ICAgICAgICAoV1RGOjpVUkw6OnBhc3N3b3JkIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5n
IGVuY29kZWRQYXNzd29yZC4KKyAgICAgICAgKFdURjo6VVJMOjplbmNvZGVkVXNlciBjb25zdCk6
IFJldHVybiBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFBhc3N3b3Jk
IGNvbnN0KTogRGl0dG8uIEFsc28gcmVuYW1lZCBmcm9tIGVuY29kZWRQYXNzLgorICAgICAgICAo
V1RGOjpVUkw6OmZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IE1vdmVkIHRvIGhlYWRlciBzbyBp
dCBjYW4KKyAgICAgICAgYmUgaW5saW5lZC4KKyAgICAgICAgKFdURjo6VVJMOjp0cnVuY2F0ZWRG
b3JVc2VBc0Jhc2UgY29uc3QpOiBSZW5hbWVkIGZyb20gYmFzZUFzU3RyaW5nLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgd2l0aCBsb2NhbCBmaWxlIFVSTHMg
YW5kIGl0J3MKKyAgICAgICAgbm90IHBlcmZlY3RseSBjbGVhciB0byBtZSBwcmVjaXNlbHkgd2hh
dCBpdCBpcyBmb3IsIGhlbmNlIHRoZSBuYW1lCisgICAgICAgIGlzIG5vdCBzbyBncmVhdC4KKyAg
ICAgICAgKFdURjo6VVJMOjpmaWxlU3lzdGVtUGF0aCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQg
Y2hlY2sgZm9yIHZhbGlkaXR5CisgICAgICAgIHNpbmNlIGlzTG9jYWxGaWxlIGRvZXMgdGhhdCBj
aGVjay4gUmVtb3ZlZCB1bm5lZWRlZCB0eXBlY2FzdCBub3cgdGhhdAorICAgICAgICBwYXRoIHJl
dHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuc3VyZURlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cmVnaXN0
ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbElzIGNvbnN0KTogUmVtb3ZlZCB1bm5lZWRlZCBleHBsaWNpdCBjYXN0IHRv
IFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cXVlcnkgY29uc3QpOiBSZXR1cm4gYSBT
dHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBhdGggY29uc3QpOiBSZXR1cm4gYSBTdHJp
bmdWaWV3LCB1c2UgdGhlIHBhdGhTdGFydAorICAgICAgICBmdW5jdGlvbiBmb3IgY2xhcml0eS4K
KyAgICAgICAgKFdURjo6VVJMOjpzZXRQcm90b2NvbCk6IFVzZSBhIHRvU3RyaW5nV2l0aG91dENv
cHlpbmcgdG8gc2F2ZSBzb21lCisgICAgICAgIHdvcmsgd2hlbiBtYWtpbmcgdGhlIHByb3RvY29s
IGNhbm9uaWNhbC4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0aW5nIGEgVVJM
UGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6Y3JlZGVudGlhbHNFbmQgY29uc3QpOiBB
ZGRlZC4gSGVscGVyIGZvciB2YXJpb3VzIGZ1bmN0aW9ucworICAgICAgICB0aGF0IG1hbmlwdWxh
dGUgdGhlIGNyZWRlbnRpYWxzIHNlY3Rpb24uCisgICAgICAgIChXVEY6OlVSTDo6c2V0SG9zdCk6
IFRha2UgU3RyaW5nVmlldy4gU3RyZWFtbGluZWQgdGhlIGNvZGUgYnkgdXNpbmcKKyAgICAgICAg
U3RyaW5nVmlldzo6Y29udGFpbnMsIGJ5IHVzaW5nIG1ha2VTdHJpbmcgcmF0aGVyIHRoYW4gU3Ry
aW5nQnVpbGRlciwKKyAgICAgICAgYW5kIGJ5IGNhbGxpbmcgcGFyc2UgaW5zdGVhZCBvZiBjcmVh
dGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZVBvcnQpOiBE
ZWxldGVkLCBzaW5jZSBzZXRQb3J0IHRha2VzIGFuIE9wdGlvbmFsIG5vdy4KKyAgICAgICAgKFdU
Rjo6VVJMOjpzZXRQb3J0KTogVGFrZSBPcHRpb25hbDx1aW50MTZfdD4uIEdvdCByaWQgb2YgdGhl
IGNhc3QgdG8KKyAgICAgICAgdW5zaWduZWQgdGhhdCB1c2VkIHRvIGJlIG5lZWRlZCB0byB1c2Ug
dWludDE2X3Qgd2l0aCBtYWtlU3RyaW5nLCBhbmQKKyAgICAgICAgY2FhbGwgcGFyc2UgaW5zdGVh
ZCBvZiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92
ZUhvc3RBbmRQb3J0KTogRGVsZXRlZC4gQ2FsbGVycyBjYW4gcGFzcyBhIG51bGwKKyAgICAgICAg
U3RyaW5nVmlldyB0byBzZXRIb3N0QW5kUG9ydCBpbnN0ZWFkLgorICAgICAgICAoV1RGOjpVUkw6
OnNldEhvc3RBbmRQb3J0KTogVGFrZSBTdHJpbmdWaWV3LiBEb24ndCByZW1vdmUgdGhlIG9sZAor
ICAgICAgICBob3N0IGFuZCBwb3J0IGluIHRoZSBub21yYWwgY2FzZSB3aGVyZSB3ZSBlbmQgdXAg
b3ZlcndyaXRpbmcgdGhlIGVudGlyZQorICAgICAgICBVUkwgYXQgdGhlIGVuZCBvZiB0aGUgZnVu
Y3Rpb24gYW55d2F5LiBVc2UgcGFyc2VVSW50MTYgaW5zdGVhZCBvZgorICAgICAgICB0b0ludFN0
cmljdCB0byBjaGVjayBwb3J0IG51bWJlciBmb3IgdmFsaWRpdHksIHdoaWNoIG1ha2VzIHN1cmUg
d2Ugd2lsbAorICAgICAgICByZWplY3QgcG9ydCBudW1iZXJzIGxhcmdlciB0aGFuIDY1NTM1LiBV
c2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIgYW5kIGNhbGwg
cGFyc2UgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdU
Rjo6cGFyc2UpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNyZWF0ZSBhIG5l
dyBzdHJpbmcKKyAgICAgICAgYW5kIHdhbnQgdG8gcGFyc2UgaXQgYXMgdGhlIG5ldyBjb250ZW50
cyBvZiB0aGUgVVJMLiBVc2VkIGluIGFsbW9zdAorICAgICAgICBldmVyeSBzZXR0ZXIgZnVuY3Rp
b24uCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiBm
b3IgZWZmaWNpZW50bHkgcmVtb3ZpbmcKKyAgICAgICAgYSBwaWVjZSBvZiB0aGUgVVJMIHN0cmlu
ZyBhbmQgcmUtcGFyc2luZy4gVXNlZCBpbiBtYW55IHNldHRlciBmdW5jdGlvbnMuCisgICAgICAg
IChXVEY6OlVSTDo6c2V0VXNlcik6IFRha2UgU3RyaW5nVmlldy4gVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZgorICAgICAgICBTdHJpbmdCdWlsZGVyLCBhbmQgcGFyc2UgYW5kIHJlbW92ZSBpbnN0
ZWFkIG9mIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6c2V0
UGFzc3dvcmQpOiBSZW5hbWVkIGZyb20gc2V0UGFzcy4gVGFrZSBTdHJpbmdWaWV3LgorICAgICAg
ICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQg
cmVtb3ZlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAg
ICAgICAgKFdURjo6VVJMOjpyZW1vdmVDcmVkaWVudGlhbHMpOiBBZGRlZC4gRWZmaWNpZW50bHkg
cmVtb3ZlcyBib3RoIHRoZQorICAgICAgICB1c2VyIG5hbWUgYW5kIHBhc3N3b3JkIGlmIGVpdGhl
ciBpcyBwcmVzZW50LgorICAgICAgICAoV1RGOjpVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcik6
IFVzZSBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nCisgICAgICAgIGEgVVJMIHBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcik6IFJlbW92ZWQg
dW5uZWNlc3NhcnkgY2hlY2tzIGZvcgorICAgICAgICB0aGluZ3MgYWxyZWFkeSBvcHRpbWl6ZWQg
YnkgU3RyaW5nOjpsZWZ0LiBDb3VsZCBsYXRlciBjb25zaWRlciBtZXJnaW5nCisgICAgICAgIHRo
aXMgaW4gd2l0aCBzZXRGcmFnbWVudElkZW50aWZpZXIsIHVzaW5nIGEgbnVsbCB2cy4gZW1wdHkg
ZGlzdGluY3Rpb24sCisgICAgICAgIGJ1dCBub3QgZG9pbmcgdGhhdCBmb3Igbm93LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFF1ZXJ5KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpV
Ukw6OnNldFBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnN0cmluZ1dpdGhv
dXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXVEY6OnN0cmlu
Z1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcik6IFNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gYnkK
KyAgICAgICAgdXNpbmcgc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllci4KKyAgICAgICAg
KFdURjo6ZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpob3N0c0FyZUVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VVJMOjppc01hdGNo
aW5nRG9tYWluIGNvbnN0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpwcm90b2Nv
bElzKTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnByb3RvY29sSXMpOiBN
b3ZlZCB0byBpbmxpbmUgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpcHBl
ZEZvclVzZUFzUmVmZXJyZXIgY29uc3QpOiBSZXdyaXRlIGZvciBlZmZpY2llbmN5LgorICAgICAg
ICAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KTogVGFrZSBTdHJpbmdW
aWV3LgorICAgICAgICAoV1RGOjphYm91dEJsYW5rVVJMKTogVXNlIEFTQ0lJTGl0ZXJhbC4KKyAg
ICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOiBVc2UgQVNDSUlMaXRlcmFsLgorICAgICAgICAo
V1RGOjpwb3J0QWxsb3dlZCk6IFJlbW92ZWQgNjU1MzUgYXMgYSBibG9ja2VkIHBvcnQ7IHdhc24n
dCBuZWVkZWQuCisgICAgICAgIChXVEY6Om1pbWVUeXBlRnJvbURhdGFVUkwpOiBUYWtlIFN0cmlu
Z1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
IGNvbnN0KTogVHdlYWtlZCBzdHlsZS4KKyAgICAgICAgKFdURjo6VVJMOjpmYWtlVVJMV2l0aFJl
bGF0aXZlUGFydCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKTogVGFrZSBTdHJpbmdWaWV3Li4KKyAgICAgICAgKFdURjo6VVJM
OjpxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
VEY6OlVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduIGNvbnN0KTog
QWRkZWQuCisgICAgICAgIChXVEY6OlVSTDo6aG9zdElzSVBBZGRyZXNzKTogVHdlYWsgY29kaW5n
IHN0eWxlLgorCisgICAgICAgICogd3RmL1VSTC5oOiBNYWRlIFVSTFRleHRFbmNvZGluZyBkZXN0
cnVjdG9yIHByb3RlY3RlZC4gUmVtb3ZlZAorICAgICAgICB1bnVzZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbiBvZiBVUkxIYXNoIHN0cnVjdHVyZS4gVXNlIFdURl9FWFBPUlRfUFJJVkFURQorICAgICAg
ICBvbiBmdW5jdGlvbnMgZnJvbSBVUkwgcmF0aGVyIHRoYW4gb24gdGhlIHdob2xlIGNsYXNzLCBz
aW5jZSB0aGUgc3R5bGUKKyAgICAgICAgY2hlY2tlciB0b2xkIG1lIHRvIGRvIHRoYXQuIE1vdmVk
IHNvbWUgaW5saW5lIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YKKyAgICAgICAgdGhlIGNsYXNzIGRl
ZmluaXRpb24gZm9yIGNsYXJpdHkgYW5kIHRvIGtlZXAgdGhlIHN0eWxlIGNoZWNrZXIgaGFwcHku
CisgICAgICAgIFVwZGF0ZWQgbWFueSBhcmd1ZW1udHMgZnJvbSBTdHJpbmcgdG8gU3RyaW5nVmll
dyBhbmQgcmV0dXJuIHZhbHVlcyBmb3IKKyAgICAgICAgc3Vic3RyaW5ncyBvZiB0aGUgVVJMIHRv
IFN0cmluZ1ZpZXcuIFJlbW92ZWQgc29tZSB1bnVzZWQgZnVuY3Rpb25zIGFuZAorICAgICAgICBz
b21lIG9ic29sZXRlIGNvbW1lbnRzLgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNw
cDoKKyAgICAgICAgKFdURjo6aXNDRlVSTFNhbWVPcmlnaW4pOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OmVuZHNXaXRoIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OnBhcnNlVUludDE2
KTogQWRkZWQuCisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdOdWxsaXR5KTogQWRkZWQuIEN1
cnJlbnRseSB0aGUgc2FtZSBhcyBlcXVhbCwgYnV0CisgICAgICAgIGNvdWxkIGJlIGRpZmZlcm5l
dCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25z
dCk6IEFkZGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0
aGUgY2FsbCBzaXRlIGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0
aW9ucyBhYm92ZS4KKyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0
aGUgZmluZCBmdW5jdGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhw
bGljaXQgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisg
ICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6
Y2hhcmFjdGVyc1RvSW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMTMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBDaGVja2VkPHNp
emVfdCwgUmVjb3JkT3ZlcmZsb3c+IHdpdGggQ2hlY2tlZFNpemUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjFj
Yzg5MzU2NDRjZDFkNjZhNGRhZjI0NjhmMjFmNDkxOGEzYjJjLi43N2VkYjNhYWQzYjM3N2E2Nzcz
ZmZhYzc5MTZlNWU2NTM1YzQ3NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIw
LTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
Ojppbml0aWFsaXplV2l0aCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25z
ZTo6cmVkaXJlY3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgICogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
VVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcik6IFVzZSBoYXNDcmVkZW50aWFscy4KKwor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWW91VHViZVVSTCk6IFRha2UgU3RyaW5nVmlldy4KKyAg
ICAgICAgKFdlYkNvcmU6OnF1ZXJ5S2V5c0FuZFZhbHVlcyk6IFRha2UgU3RyaW5nVmlldy4KKyAg
ICAgICAgKFdlYkNvcmU6OnByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKTogVXNlIGF1dG8gc2lu
Y2UgVVJMIHBpZWNlcyBhcmUKKyAgICAgICAgbm93IHJldHVybmVkIGFzIFN0cmluZ1ZpZXcuCisg
ICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9t
QWJzb2x1dGVVUkwpOgorICAgICAgICBVc2UgU3RyaW5nVmlldyBhbmQgbWFrZVN0cmluZyByYXRo
ZXIgdGhhbiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvdXJjZU5hbWUpOiBV
c2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6IFVzZSBzZXRIb3N0QW5kUG9ydC4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmRB
bmNob3JFbGVtZW50Rm9yTGluayk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50
aWZpZXIgcmV0dXJucyBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6
IEFkZGVkIGEgY29tbWVudC4KKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVy
bnMgYSBTdHJpbmdWaWV3LiBBbHNvIGdvdCByaWQgb2Ygc29tZSBzdHJhbmdlCisgICAgICAgIHVz
ZSBvZiBBdG9tU3RyaW5nIHRoYXQgd2FzIG5vdCBuZWNlc3NhcnkgYW5kIHVzZWQgV1RGTW92ZSBt
b3JlLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKTogVXBkYXRlIHNpbmNlCisgICAg
ICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICog
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0
dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVGb3JEaXNwbGF5IGNvbnN0KToKKyAgICAg
ICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLCBhbmQgU3RyaW5nVmll
dyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZyBmb3IgbmFtZSBhbmQgZXh0ZW5zaW9uIHZhbHVl
cy4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogVXBkYXRlIHNpbmNlIGxhc3RQYXRoQ29t
cG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogaHRtbC9N
ZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21l
bnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGZyYWdt
ZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDogQ2hhbmdlZCBzZXRIb3N0IHRvIHRha2UgYSBTdHJpbmdWaWV3LCBjaGFuZ2VkCisg
ICAgICAgIHZhcmlvdXMgb3RoZXIgZnVuY3Rpb25zIHRvIGNhbGwgdG9TdHJpbmcsIHNpbmNlIHRo
ZSB1bmRlcmx5aW5nIFVSTAorICAgICAgICBmdW5jdGlvbiBub3cgcmV0dXJucyBhIFN0cmluZ1Zp
ZXcuIFVwZGF0ZWQgbmFtZXMgc2luY2UgInBhc3MiIGlzIG5vdworICAgICAgICAicGFzc3dvcmQi
LgorICAgICAgICAoV2ViQ29yZTo6Y291bnRBU0NJSURpZ2l0cyk6IEFkZGVkLiBSZXBsYWNlcyB1
bnVzdWFsIGZ1bmN0aW9uCisgICAgICAgIG5hbWVkIHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlv
biBiZWNhdXNlIHdlIGNhbiB1c2UgU3RyaW5nVmlldyBub3cKKyAgICAgICAgYW5kIHNvIGRvbid0
IG5lZWQgc3VjaCBhbiB1bnVzdWFsIGZ1bmN0aW9uLgorCisgICAgICAgICogbG9hZGVyL0FkQ2xp
Y2tBdHRyaWJ1dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246
OnBhcnNlQ29udmVyc2lvblJlcXVlc3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgIEFs
c28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSB1c2Ugb2YgQVNDSUlMaXRlcmFsIHRoYXQgaHVydHMgcGVy
Zm9ybWFuY2UKKyAgICAgICAgYSB0aW55IGJpdC4KKworICAgICAgICAqIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVDcm9zc09y
aWdpblJlZGlyZWN0aW9uVVJMKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKwor
ICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6IFVwZGF0ZSBzaW5jZSBxdWVyeSByZXR1cm5z
CisgICAgICAgIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3Q6OmNyZWF0ZUZpbGVVUkwpOiBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aC4KKworICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYW5pZmVzdFBhdGgpOiBSZXR1cm4gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VNYW5pZmVzdCk6IFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2FsY3Vs
YXRlSXRlbUluQ29sbGVjdGlvbiBjb25zdCk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVu
dElkZW50aWZlciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVxdWVzdFVSTCk6IERpdHRv
LgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsVG9GcmFnbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwpOiBVcGRhdGVkIGxvZyBtZXNzYWdlLgorCisg
ICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0
YXRlT2JqZWN0QWRkZWQpOiBVcGRhdGVkIGZvciBVUkw6OnBhc3N3b3JkIG5hbWUgY2hhbmdlCisg
ICAgICAgIGFuZCB0byB1c2UgdGhlIG5ldyBzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRl
bnRpZmllciByYXRoZXIgdGhhbiB0aGUKKyAgICAgICAgb2xkIGVxdWFsSWdub3JpbmdRdWVyeUFu
ZEZyYWdtZW50LgorCisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhdGlvbjo6aHJlZiBjb25zdCk6IFVzZSByZW1vdmVDcmVkZW50aWFscy4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0IGNvbnN0KTogU3RyZWFtbGluZWQuCisgICAgICAg
IChXZWJDb3JlOjpMb2NhdGlvbjo6cGF0aG5hbWUgY29uc3QpOiBVc2UgYW4gQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNlYXJjaCBjb25zdCk6IFVzZSBxdWVyeVdp
dGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246Omhhc2gg
Y29uc3QpOiBVc2UgZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQpOiBVc2UgcGFyc2VVSW50MTYuCisKKyAg
ICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6IENvZGluZyBzdHlsZSB0d2Vh
a3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2Fy
eSk6CisgICAgICAgIFVzZSBjb250YWlucyBpbnN0ZWFkIG9mIHJldmVyc2VGaW5kIHRvIGNoZWNr
IGZvciBhIHBlcmlvZCBpbiB0aGUgZmlsZW5hbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQgaXMgYSBTdHJpbmdWaWV3LgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFt
ZWQgbV9wYXNzIHRvIG1fcGFzc3dvcmQKKyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVh
ZCBvZiBwYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNy
ZWRlbnRpYWxzKTogVXNlIHJlbW92ZUNyZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29y
ZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bik6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9u
cyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgYSBT
dHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxpbmVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTogVXNlIGFu
IEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpzZWFyY2gg
Y29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldp
dGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkpOgorICAgICAg
ICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFtZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKwogMjAy
MC0wNC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQXN5bmMgb3ZlcmZsb3ddIEdldCBzY3JvbGwtc25hcCB3b3JraW5nIHdpdGggYXN5bmMgb3Zl
cmZsb3cgc2Nyb2xsaW5nIG9uIG1hY09TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiMTM4YWExZDE3MzAzODRhZTJi
YTU0ZjM4ZGE0ZTU3YzgxZjYxY2YuLmQzN2Q2OWMzOWUxY2FlMWMyZWE2N2Q1YzFmZmJhODVlZmRi
NmY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3
IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVkaXJlY3Rpb24pOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAg
IFJlbW92ZSB1c2Ugb2YgQVNDSUlMaXRlcmFsIGZvciBzZXRQcm90b2NvbC4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOiBVcGRh
dGVkCisgICAgICAgIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTogRGl0dG8u
CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6Omhv
c3QgY29uc3QpOiBSZW1vdmVkIHZhbGlkaXR5IGNoZWNrOyBXVEY6OlVSTDo6aG9zdAorICAgICAg
ICByZXR1cm5zIG51bGwgaWYgdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAoQVBJOjpVUkw6
OnByb3RvY29sIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBUEk6OlVSTDo6cGF0aCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50IGNvbnN0KTogRGl0
dG8uIEFsc28gYWRkZWQgdG9TdHJpbmcKKyAgICAgICAgc2luY2UgV1RGOjpVUkw6Omxhc3RQYXRo
Q29tcG9uZW50IG5vdyByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGll
bnQ6OmRpZEZpbmlzaCk6IFVzZSBoYXNGcmFnbWVudElkZW50aWZpZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayk6CisgICAgICAgIFJl
ZmFjdG9yZWQgYSBiaXQgYW5kIHVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoIGFuZAorICAg
ICAgICB1cGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3
LgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6cGF0aEV4dGVuc2lvbik6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21w
b25lbnQKKyAgICAgICAgcmV0dXJucyBhIFN0cmluZ1ZpZXcuIFJlZmFjdG9yZWQgYSBsaXR0bGUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToK
KyAgICAgICAgVXNlIHRydW5jYXRlZEZvclVzZUFzQmFzZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgVXNl
ICE9IHRvIGNvbXBhcmUgaG9zdHMsIHJhdGhlciB0aGFuIGhvc3RzQXJlRXF1YWwuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6IERp
dHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCk6Cisg
ICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAg
ICAgRG9uJ3QgdXNlIEFTQ0lJTGl0ZXJhbCBmb3IgYXJndW1lbnQgdG8gc2V0UHJvdG9jb2wuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1l
ZGlhS2V5T3JpZ2lucyk6CisgICAgICAgIFVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoLCBh
bHNvIHJlZmFjdG9yZWQgYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppbnN0YWxsUERGRG9j
dW1lbnQpOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5z
IGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNs
aWVudDo6c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkCisgICAgICAgIHRoZSBpbXBsZW1l
bnRhdGlvbiBhIGJpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhD
b21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKIDIwMjAtMDQtMTMgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBDaGVja2Vk
PHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IHdpdGggQ2hlY2tlZFNpemUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCA5ODdkNTU2MzBlZmFkNDVmYzQ3ZmVmNzVlMjVkMTQwMTZhNWVkODdh
Li42ODdiODUyMTZlNjVmMjAwNGI2Mzg1YjliZmRhNmY2MDRjYThhYzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3
IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKHNob3VsZFRyeUFwcExpbmspOiBDb21wYXJlIGhvc3Rz
IHdpdGggPT0gcmF0aGVyIHRoYW4gdXNpbmcgaG9zdHNBcmVFcXVhbC4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kb2N1bWVudEZyYWdtZW50
Rm9ySW1hZ2VEYXRhOndpdGhSZWxhdGl2ZVVSTFBhcnQ6YW5kTUlNRVR5cGU6XSk6CisgICAgICAg
IFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQgdGFrZXMgYSBTdHJpbmdWaWV3
LiBBbHNvIHVzZSBSZXRhaW5QdHIKKyAgICAgICAgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBjYWxs
IHRvIHJlbGVhc2UuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBfd2ViX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0
ZWJvYXJkVHlwZTppbWFnZU1JTUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gTm8gY29udmVyc2lvbgorICAg
ICAgICBkaXJlY3RseSBmcm9tIE5TU3RyaW5nIHRvIFN0cmluZ1ZpZXcsIHNvIHdlIGhhdmUgdG8g
ZXhwbGljaXRseSB1c2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6IFVwZGF0ZQorICAgICAgICBzaW5j
ZSBwcm90b2NvbElzIHRha2VzIGEgU3RyaW5nVmlldy4gTm8gY29udmVyc2lvbiBkaXJlY3RseSBm
cm9tCisgICAgICAgIE5TU3RyaW5nIHRvIFN0cmluZ1ZpZXcsIHNvIHdlIGhhdmUgdG8gZXhwbGlj
aXRseSB1c2UgYSBTdHJpbmcuCisKIDIwMjAtMDQtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1OTg0Myk6ICJNaXNzaW5n
IFBsdWctSW4iIHdoZW4gZHJhZ2dpbmcgYW4gaW1hZ2UgaW50byBNYWlsIENvbXBvc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4MDRiZTVhNDRhY2Y0NGJmN2Y1ZDZmYzZhNTA5ZDdj
MDRiMzA2ZGM4Li4zYzg1YTVlNTJlNzFkNjM4M2NhMGY0OWIyYzAwYTNjMzkxNTlmZTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMTMgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBT
dHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6
c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlv
biBhIGJpdC4KKwogMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgU2hvdWxkIGZpbmQgdG91Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24t
Y29tcG9zaXRlZCBpZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCAyYzUwNGJjZGE4YmQzMmI3OGIzOTRhZDIyZjA3
OTEyYTgzMjEwMWQ3Li40ZTliMDM0ZjVmYjFlMTU2YzViZTk5ZTdhNmZhYWY4MGM2ZTUzZTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtNDIsMjYgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10eXBlZGVm
IFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEy
PiBVQ2hhckJ1ZmZlcjsKLQotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnZhbGlkUG9ydE51
bWJlciA9IDB4RkZGRjsKLQotLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9u
LCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBh
cmUgYWxsb3dlZAotLy8gaW4gdGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1h
ZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShj
b25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdCkKKy8vIENvcGllcyB0aGUgc291cmNlIHRv
IHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUg
QVNDSUkuCisvLyBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBO
dWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgaW4gdGhlCisvLyBzb3VyY2Ugc3RyaW5nLCBhbmQg
bm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSBkZXN0aW5hdGlvbiBidWZm
ZXIuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRl
c3RpbmF0aW9uKQogewotICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5n
LmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5h
dGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAg
ICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oc3JjW2ldKTsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBzdHJpbmcuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzdGF0
aWNfY2FzdDxjaGFyPihzb3VyY2VbaV0pOwogICAgIH0KIH0KIApAQCAtODMsMTYgKzc0LDEzIEBA
IHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewot
ICAgIFVSTFBhcnNlciBwYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihyZWxhdGl2ZSwgYmFz
ZSwgZW5jb2RpbmcpLnJlc3VsdCgpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVS
TChVQ2hhciBjKQorc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgY2hhcmFjdGVy
KQogewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2Ug
YW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUgdGhhdCBjIGlz
IGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8gc28gdGhpcyBjb21wYXJpc29uIHNob3Vs
ZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICByZXR1cm4gYyA8PSAnICc7Cisg
ICAgLy8gSWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgIHJldHVybiBjaGFyYWN0ZXIgPD0gJyAnOwogfQogCiBVUkwgVVJMOjppc29s
YXRlZENvcHkoKSBjb25zdApAQCAtMTAyLDE0NyArOTAsMTQ4IEBAIFVSTCBVUkw6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFVSTDo6bGFzdFBh
dGhDb21wb25lbnQoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkg
Y29uc3QKIHsKICAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsK
ICAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCiAgICAgICAgIC0tZW5kOwogCiAgICAgc2l6
ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFy
dCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKHN0YXJ0IDwgcGF0aFN0YXJ0KCkpCisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgKytzdGFydDsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKIH0KIAogU3RyaW5nVmll
dyBVUkw6OnByb3RvY29sKCkgY29uc3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKwogICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
MCwgbV9zY2hlbWVFbmQpOwogfQogCiBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiB7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICB1bnNpZ25lZCBz
dGFydCA9IGhvc3RTdGFydCgpOwogICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+
IFVSTDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQg
bnVtYmVyOwotICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hh
cmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsg
MSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKLSAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNo
YXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQg
KyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIHJldHVybiBudW1iZXI7CisgICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/IHBh
cnNlVUludDE2KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyAxLCBt
X3BvcnRMZW5ndGggLSAxKSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBVUkw6Omhvc3RB
bmRQb3J0KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBwb3J0ID0gdGhpcy0+cG9ydCgpKQotICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhob3N0KCksICc6Jywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBvcnQudmFsdWUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhob3N0KCksICc6Jywg
KnBvcnQpOwogICAgIHJldHVybiBob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFVSTDo6
cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3Ry
aW5nLnN1YnN0cmluZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOworICAgIGlmICghaGFz
Q3JlZGVudGlhbHMoKSkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRo
U3RhcnQoKSk7CiAKLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewot
ICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJl
c3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFs
bG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0KKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0YXJ0KSwKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgpLCBwYXRoU3Rh
cnQoKSAtIGhvc3RTdGFydCgpKQorICAgICk7Cit9CiAKLSAgICByZXR1cm4gcmVzdWx0Oworc3Rh
dGljIE9wdGlvbmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0
LCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChpbmRleCArIDMg
PiBsZW5ndGggfHwgaW5wdXRbaW5kZXhdICE9ICclJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBhdXRvIGRpZ2l0MSA9IGlucHV0W2luZGV4ICsgMV07CisgICAgYXV0byBkaWdp
dDIgPSBpbnB1dFtpbmRleCArIDJdOworICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGRpZ2l0MSkg
fHwgIWlzQVNDSUlIZXhEaWdpdChkaWdpdDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiB0b0FTQ0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwogfQogCiBzdGF0
aWMgU3RyaW5nIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyBp
bnB1dCkKIHsKLSAgICBhdXRvIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7Ci0gICAgaWYg
KCFpbnB1dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgVmVjdG9y
PExDaGFyPiBwZXJjZW50RGVjb2RlZDsKLSAgICBwZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGlucHV0TGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5w
dXRMZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaW5wdXRbaV0gPT0gJyUnCi0gICAgICAgICAg
ICAmJiBpbnB1dExlbmd0aCA+IDIKLSAgICAgICAgICAgICYmIGkgPCBpbnB1dExlbmd0aCAtIDIK
LSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pCi0gICAgICAgICAg
ICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgcGVyY2Vu
dERlY29kZWQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlu
cHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2UKKyAgICBB
U1NFUlQoaW5wdXQuaXNBbGxBU0NJSSgpKTsKKworICAgIGF1dG8gbGVuZ3RoID0gaW5wdXQubGVu
Z3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDMgfHwgIWlucHV0LmNvbnRhaW5zKCclJykpCisgICAg
ICAgIHJldHVybiBpbnB1dC50b1N0cmluZygpOworCisgICAgVmVjdG9yPExDaGFyLCA1MTI+IHBl
cmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAg
ICAgaWYgKGF1dG8gZGVjb2RlZENoYXJhY3RlciA9IGRlY29kZUVzY2FwZVNlcXVlbmNlKGlucHV0
LCBpLCBsZW5ndGgpKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBl
bmQoKmRlY29kZWRDaGFyYWN0ZXIpOworICAgICAgICAgICAgaSArPSAzOworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ld
KTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQogICAgIH0KKworICAgIC8vIEZJWE1FOiBJ
cyBVVEYtOCBhbHdheXMgdGhlIGNvcnJlY3QgZW5jb2Rpbmc/CisgICAgLy8gRklYTUU6IFRoaXMg
cmV0dXJucyBhIG51bGwgc3RyaW5nIHdoZW4gd2UgZW5jb3VudGVyIGFuIGludmFsaWQgVVRGLTgg
c2VxdWVuY2UuIElzIHRoYXQgT0s/CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2Vu
dERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQogCiBTdHJpbmcgVVJM
Ojp1c2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBh
cnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNl
ckVuZCAtIG1fdXNlclN0YXJ0KSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zy
b21QYXJzZWRVUkwoZW5jb2RlZFVzZXIoKSk7CiB9CiAKLVN0cmluZyBVUkw6OnBhc3MoKSBjb25z
dAorU3RyaW5nIFVSTDo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRl
Y29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cisg
ICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5jb2RlZFBhc3N3
b3JkKCkpOwogfQogCi1TdHJpbmcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CitTdHJpbmdWaWV3
IFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKKyAgICByZXR1cm4gU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3Vz
ZXJTdGFydCk7CiB9CiAKLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK1N0cmluZ1Zp
ZXcgVVJMOjplbmNvZGVkUGFzc3dvcmQoKSBjb25zdAogewogICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bh
c3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0g
MSk7CiB9CiAKLVN0cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CitTdHJpbmdW
aWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICBpZiAoIWhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4g
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxKTsKLX0KKyAgICAgICAgcmV0dXJuIHsg
fTsKIAotYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSAhPSBtX3F1ZXJ5RW5kOworICAgIHJl
dHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwogfQog
Ci1TdHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAorVVJMIFVSTDo6dHJ1bmNhdGVkRm9y
VXNlQXNCYXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRl
ckxhc3RTbGFzaCk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbV9zdHJpbmcubGVmdChtX3BhdGhB
ZnRlckxhc3RTbGFzaCkpOwogfQogCiAjaWYgIVVTRShDRikKIAogU3RyaW5nIFVSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdAogewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFpc0xvY2FsRmlsZSgpKQorICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21Q
YXJzZWRVUkwoU3RyaW5nVmlldyhwYXRoKCkpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChwYXRoKCkpOwogfQogCiAjZW5kaWYKIAotI2lmZGVmIE5ERUJV
RworI2lmICFBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9j
b2xJc0dvb2QoU3RyaW5nVmlldykKIHsKQEAgLTMxNCw3ICszMDMsNyBAQCBib29sIGlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQogCiBi
b29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKLSAgICBh
c3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3IHsgcHJvdG9jb2wgfSk7CisgICAgYXNzZXJ0
UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAi
dmFsaWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRlcyB0aGV5IGFy
ZSBpbnZhbGlkLgogICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0
KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gCkBAIC0zNDksNzMgKzMzOCw2NSBAQCBib29sIFVS
TDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1TdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6cXVlcnko
KSBjb25zdAogewogICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5n
LnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsg
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAx
LCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6OnBh
dGgoKSBjb25zdAogewotICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRM
ZW5ndGg7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwb3J0RW5k
LCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0
aFN0YXJ0KCksIG1fcGF0aEVuZCAtIHBhdGhTdGFydCgpKTsKIH0KIAotYm9vbCBVUkw6OnNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgcykKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChTdHJpbmdWaWV3
IG5ld1Byb3RvY29sKQogewogICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBldmVyeXRoaW5n
IGFmdGVyIHRoZSBmaXJzdCAnOicuCi0gICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0aW9uID0gcy5m
aW5kKCc6Jyk7Ci0gICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmcoMCwgc2VwYXJh
dG9yUG9zaXRpb24pOwotICAgIGF1dG8gY2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2wpOwotICAgIGlmICghY2Fub25pY2FsaXplZCkK
KyAgICBhdXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5l
d1Byb3RvY29sLmZpbmQoJzonKSk7CisgICAgYXV0byBuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQg
PSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sUHJlZml4LnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgaWYgKCFuZXdQcm90b2NvbENhbm9uaWNhbGl6
ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgIjoiLCBtX3N0
cmluZykpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgcGFyc2Uo
bWFrZVN0cmluZygqbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkLCAnOicsIG1fc3RyaW5nKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICgobV9wYXNzd29yZEVuZCAhPSBt
X3VzZXJTdGFydCB8fCBwb3J0KCkpICYmICpjYW5vbmljYWxpemVkID09ICJmaWxlIikKKyAgICBp
ZiAoKG1fcGFzc3dvcmRFbmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqbmV3UHJvdG9j
b2xDYW5vbmljYWxpemVkID09ICJmaWxlIikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBp
ZiAoaXNMb2NhbEZpbGUoKSAmJiBob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9z
dHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOworICAgIHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewot
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7Ci19Ci0gICAgCiAvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRp
ZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KIC8vIHRoZSBvdXRwdXQgYnVm
ZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KIC8vIFJldHVybiB2
YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVu
ZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykK
K3N0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1
ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3Vn
aCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCiAgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmln
Z2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3Qg
Y2VydGFpbmx5IE9LLgogICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0g
MjA0ODsKLSAgICAKLSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5n
dGggfHwgaXNBbGxBU0NJSShzdHJpbmcpKSB7CisKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4g
aG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgc3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBh
cHBlbmQoYnVmZmVyLCBzdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
CisKICAgICBVQ2hhciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CiAgICAg
VUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAgICBVSUROQUluZm8gcHJvY2Vzc2lu
Z0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwogICAgIGludDMyX3QgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6OmludGVybmF0aW9u
YWxEb21haW5OYW1lVHJhbnNjb2RlcigpLAogICAgICAgICBzdHJpbmcudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3RuYW1lQnVmZmVy
TGVuZ3RoLCAmcHJvY2Vzc2luZ0RldGFpbHMsICZlcnJvcik7Ci0gICAgCisKICAgICBpZiAoVV9T
VUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CiAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyOCwxMDEgKzQwOSw4OSBAQCB1bnNpZ25lZCBVUkw6Omhv
c3RTdGFydCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0
KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKIH0KIAotdm9pZCBVUkw6OnNl
dEhvc3QoY29uc3QgU3RyaW5nJiBzKQordW5zaWduZWQgVVJMOjpjcmVkZW50aWFsc0VuZCgpIGNv
bnN0Cit7CisgICAgLy8gSW5jbHVkZSAnQCcgdG9vIGlmIHdlIGhhdmUgaXQuCisgICAgdW5zaWdu
ZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0
cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgZW5kICs9IDE7CisgICAgcmV0dXJuIGVuZDsKK30K
Kwordm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQogewogICAgIGlmICghbV9p
c1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQo
JzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICBpZiAobmV3SG9zdC5j
b250YWlucygnOicpKQogICAgICAgICByZXR1cm47CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVk
SG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1l
LCBzKSkKKyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0
U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVk
SG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsg
MTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5s
ZWZ0KGhvc3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwK
KyAgICAgICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5h
bWUuc2l6ZSgpKSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9z
dEVuZCkKKyAgICApKTsKIH0KIAotdm9pZCBVUkw6OnJlbW92ZVBvcnQoKQotewotICAgIGlmICgh
bV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hv
cnQgaSkKK3ZvaWQgVVJMOjpzZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAg
IGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNvbG9uTmVlZGVk
ID0gIW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQg
PyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRl
ZCA/ICI6IiA6ICIiKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0g
cGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlSG9zdEFuZFBvcnQoKQotewot
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgIGlmICghcG9ydCkgeworICAgICAgICByZW1vdmUobV9o
b3N0RW5kLCBtX3BvcnRMZW5ndGgpOwogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFob3N0KCku
aXNFbXB0eSgpKQotICAgICAgICBzZXRIb3N0KHsgfSk7Ci0gICAgcmVtb3ZlUG9ydCgpOworICAg
IH0KKworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LmxlZnQobV9ob3N0RW5kKSwKKyAgICAgICAgJzonLAorICAgICAgICAqcG9ydCwKKyAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQog
Ci12b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3Zv
aWQgVVJMOjpzZXRIb3N0QW5kUG9ydChTdHJpbmdWaWV3IGhvc3RBbmRQb3J0KQogewogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1l
KGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCisgICAgYXV0byBob3N0
TmFtZSA9IGhvc3RBbmRQb3J0OworICAgIFN0cmluZ1ZpZXcgcG9ydFN0cmluZzsKICAgICBhdXRv
IGNvbG9uSW5kZXggPSBob3N0TmFtZS5maW5kKCc6Jyk7CiAgICAgaWYgKGNvbG9uSW5kZXggIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgcG9ydCA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4
ICsgMSk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0lu
dFN0cmljdChvayk7Ci0gICAgICAgIGlmICghb2sgfHwgcG9ydEludCA8IDApCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9u
SW5kZXgpOworICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5k
ZXggKyAxKTsKKyAgICAgICAgaWYgKHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKQorICAgICAgICAg
ICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgaG9zdE5hbWUgPSB7IH07CisgICAgICAgICAgICBwb3J0U3Ry
aW5nID0geyB9OworICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKGhvc3ROYW1lLmlzRW1wdHko
KSkKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlbW92ZShob3N0U3Rh
cnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgVmVjdG9yPFVDaGFyLCA1
MTI+IGVuY29kZWRIb3N0TmFtZTsKICAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNv
ZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzbGFz
aFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2No
ZW1lRW5kICsgMSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVl
ZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUu
c2l6ZSgpKSk7Ci0gICAgaWYgKCFwb3J0LmlzRW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocG9ydCk7Ci0gICAgfQot
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGgpKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0
cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNoU2xh
c2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2UobWFr
ZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChob3N0U3RhcnQoKSks
CisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgIFN0cmluZ1Zp
ZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisgICAg
ICAgIHBvcnRTdHJpbmcuaXNFbXB0eSgpID8gIiIgOiAiOiIsCisgICAgICAgIHBvcnRTdHJpbmcs
CisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAg
ICApKTsKIH0KIAogc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBT
dHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFVDaGFyKSkKQEAgLTU1MSw4MSArNTIw
LDg5IEBAIHN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5n
JiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVCiAgICAgcmV0dXJuIGlucHV0OwogfQogCi12
b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCit2b2lkIFVSTDo6cGFyc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQpCisgICAgKnRoaXMgPSBV
UkxQYXJzZXIoc3RyaW5nKS5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnJlbW92ZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKHN0YXJ0IDwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VS
VChsZW5ndGggPD0gbV9zdHJpbmcubGVuZ3RoKCkgLSBzdGFydCk7CiAKLSAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3Jl
IHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KKyAgICBhdXRvIHN0cmluZ0FmdGVyUmVtb3ZhbCA9
IFdURk1vdmUobV9zdHJpbmcpOworICAgIHN0cmluZ0FmdGVyUmVtb3ZhbC5yZW1vdmUoc3RhcnQs
IGxlbmd0aCk7CisgICAgcGFyc2Uoc3RyaW5nQWZ0ZXJSZW1vdmFsKTsKK30KKwordm9pZCBVUkw6
OnNldFVzZXIoU3RyaW5nVmlldyBuZXdVc2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAg
ICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYgKCF1
c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0
ZXJzKHVzZXIsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKLSAgICAgICAgaWYg
KG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQot
ICAgICAgICAgICAgdSA9ICIvLyIgKyB1OwotICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4n
dCBoYXZlIG9uZSBiZWZvcmUuCi0gICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQg
PT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCi0gICAgICAgICAgICB1
LmFwcGVuZCgnQCcpOwotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAg
IGlmICghbmV3VXNlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVk
ID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgICAgICBib29sIG5lZWRTZXBh
cmF0b3IgPSBlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0
cmluZ1tlbmRdICE9ICdAJyk7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKKyAgICAgICAgICAgIHNs
YXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhuZXdVc2VyLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0lu
VXNlckluZm9FbmNvZGVTZXQpLAorICAgICAgICAgICAgbmVlZFNlcGFyYXRvciA/ICJAIiA6ICIi
LAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkKKyAgICAg
ICAgKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2
ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgogICAgICAgICBpZiAobV91c2VyRW5kID09IG1f
cGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykK
ICAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNl
IGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBt
YWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAg
ICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0g
ICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICBy
ZW1vdmUobV91c2VyU3RhcnQsIGVuZCAtIG1fdXNlclN0YXJ0KTsKICAgICB9CiB9CiAKLXZvaWQg
VVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit2b2lkIFVSTDo6c2V0UGFzc3dv
cmQoU3RyaW5nVmlldyBuZXdQYXNzd29yZCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAo
IXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRF
bmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNl
dCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8v
IEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4K
LSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0g
ICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgaWYgKCFuZXdQYXNzd29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBuZWVkTGVh
ZGluZ1NsYXNoZXMgPSBtX3VzZXJFbmQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgICAgICBwYXJz
ZShtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3Vz
ZXJFbmQpLAorICAgICAgICAgICAgbmVlZExlYWRpbmdTbGFzaGVzID8gIi8vOiIgOiAiOiIsCisg
ICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhuZXdQYXNzd29yZC50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwKKyAgICAg
ICAgICAgICdAJywKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhj
cmVkZW50aWFsc0VuZCgpKQorICAgICAgICApKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBS
ZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAg
ICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBt
X3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUg
d2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5k
ICE9IGVuZCkgewotICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
ICAgICB9CisgICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCA/
IGNyZWRlbnRpYWxzRW5kKCkgOiBtX3Bhc3N3b3JkRW5kOworICAgICAgICByZW1vdmUobV91c2Vy
RW5kLCBlbmQgLSBtX3VzZXJFbmQpOwogICAgIH0KIH0KIAordm9pZCBVUkw6OnJlbW92ZUNyZWRl
bnRpYWxzKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cmVtb3ZlKG1fdXNlclN0YXJ0LCBjcmVkZW50aWFsc0VuZCgpIC0gbV91c2VyU3RhcnQpOworfQor
CiB2b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikK
IHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6
IE9wdGltaXplIHRoZSBjYXNlIHdoZXJlIHRoZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0
byBiZSBlcXVhbCB0byB3aGF0IHdhcyBwYXNzZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJl
Y3QgdG8gZG8gdGhpcyB3aXRob3V0IGVuY29kaW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hh
cmFjdGVycz8KLSAgICAqdGhpcyA9IFVSTFBhcnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7
IG1fc3RyaW5nIH0uc3Vic3RyaW5nKDAsIG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0u
cmVzdWx0KCk7CisgICAgcGFyc2UobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgQVNT
RVJUKCFtX3F1ZXJ5RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVu
ZCkKLSAgICAgICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworCisgICAg
bV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOwogfQogCiB2b2lkIFVSTDo6cmVt
b3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKQpAQCAtNjM3LDYyICs2MTQsNjIgQEAgdm9p
ZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkKICAgICBtX3F1ZXJ5RW5k
ID0gbV9wYXRoRW5kOwogfQogCi12b2lkIFVSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVy
eSkKK3ZvaWQgVVJMOjpzZXRRdWVyeShTdHJpbmdWaWV3IG5ld1F1ZXJ5KQogeworICAgIC8vIEZJ
WE1FOiBDb25zaWRlciByZW5hbWluZyB0aGlzIGZ1bmN0aW9uIHRvIHNldEVuY29kZWRRdWVyeSBh
bmQvb3IgY2FsbGluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyB0aGUgd2F5IHNldFBhdGggZG9l
cy4KKyAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKKwogICAgIGlmICghbV9pc1Zh
bGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkg
Y2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwg
dGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwg
YnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMg
ZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChx
dWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsK
LSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcp
LmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci0gICAgfQorICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV9wYXRoRW5kKSwKKyAgICAgICAgKG5ld1F1ZXJ5LnN0YXJ0c1dpdGgoJz8nKSAm
JiAhbmV3UXVlcnkuaXNOdWxsKCkpID8gIj8iIDogIiIsCisgICAgICAgIG5ld1F1ZXJ5LAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkKKyAgICApKTsK
K30KIAorc3RhdGljIFN0cmluZyBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcoU3RyaW5nVmlldyBw
YXRoKQoreworICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNo
YXJhY3RlcikgeworICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIg
PT0gJyMnOworICAgIH07CisgICAgcmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgu
dG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pOwogfQog
Ci12b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMpCit2b2lkIFVSTDo6c2V0UGF0aChT
dHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZyBwYXRoID0gczsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFsw
XSAhPSAnLycpCi0gICAgICAgIHBhdGggPSAiLyIgKyBwYXRoOworICAgIHBhcnNlKG1ha2VTdHJp
bmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocGF0aFN0YXJ0KCkpLAorICAg
ICAgICBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/ICIiIDogIi8iLAorICAgICAgICBlc2NhcGVQYXRo
V2l0aG91dENvcHlpbmcocGF0aCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX3BhdGhFbmQpCisgICAgKSk7Cit9CiAKLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CitTdHJpbmdWaWV3IFVSTDo6c3RyaW5nV2l0aG91
dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlk
KQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChwYXRoRW5kKCkpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitTdHJpbmdWaWV3IFVSTDo6c3Ry
aW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgaWYgKGEubV9xdWVy
eUVuZCAhPSBiLm1fcXVlcnlFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25l
ZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVyeUVuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcXVlcnlMZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJp
bmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJu
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCk7CiB9CiAKLWJvb2wgZXF1YWxJ
Z25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitib29s
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwm
IGIpCiB7Ci0gICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVuZCgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGEuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRl
bnRpZmllcigpID09IGIuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpOwogfQogCiBi
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKQEAgLTcyNSwyNSArNzAyLDEwIEBAIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFs
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitib29sIFVSTDo6aXNN
YXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3IGRvbWFpbikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBo
b3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0
U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0
YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYW4gYXBwcm9w
cmlhdGUgcGxhY2UgaW4gV2ViQ29yZSdzIHBsdWctaW4gY29kZTsgZG9uJ3Qgd2FudCBwZW9wbGUg
dGVtcHRlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luLgogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEu
c3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QK
LXsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzYyLDYg
KzcyNCw3IEBAIGJvb2wgVVJMOjppc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWlu
KSBjb25zdAogCiBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmIGlucHV0KQogeworICAgIC8vIEZJWE1FOiBSZW5hbWUgc28gaXQncyBjbGVhciB0aGlzIGRv
ZXMgdGhlIGFwcHJvcHJpYXRlIGVzY2FwaW5nIGZvciBVUkwgcXVlcnkgZmllbGQgdmFsdWVzLgog
ICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0lu
VXNlckluZm9FbmNvZGVTZXQpOwogfQogCkBAIC03ODUsNyArNzQ4LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nQ2xhc3M+CiBib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdD
bGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsKICAgICAvLyBEbyB0aGUgY29tcGFy
aXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3Rv
Y29sSXNHb29kKFN0cmluZ1ZpZXcgeyBwcm90b2NvbCB9KTsKKyAgICBhc3NlcnRQcm90b2NvbElz
R29vZChwcm90b2NvbCk7CiAgICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIGogPSAwOyB1cmxbaV07ICsraSkgewogICAgICAgICAvLyBTa2lwIGxlYWRp
bmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgpAQCAtODA4LDE2ICs3NzEsMTEg
QEAgYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoY29uc3QgU3RyaW5nQ2xhc3MmIHVybCwgY29uc3Qg
Y2hhciogcHJvdG9jb2wpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHByb3RvY29sSXMo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQorYm9vbCBwcm90b2NvbElz
KFN0cmluZ1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4gcHJv
dG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwogfQogCi1pbmxpbmUgYm9vbCBVUkw6OnBy
b3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewot
ICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKLX0K
LQogI2lmbmRlZiBOREVCVUcKIAogdm9pZCBVUkw6OnByaW50KCkgY29uc3QKQEAgLTgyOSwxMSAr
Nzg3LDE4IEBAIHZvaWQgVVJMOjpwcmludCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0CiB7Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAg
ICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmlu
ZygpKTsKLSAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1
cm4gcmVmZXJyZXIuc3RyaW5nKCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVy
biBtX3N0cmluZzsKKworICAgIHVuc2lnbmVkIGVuZCA9IGNyZWRlbnRpYWxzRW5kKCk7CisKKyAg
ICBpZiAobV91c2VyU3RhcnQgPT0gZW5kICYmIG1fcXVlcnlFbmQgPT0gbV9zdHJpbmcubGVuZ3Ro
KCkpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKAor
ICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAor
ICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kKQor
ICAgICk7CiB9CiAKIGJvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CkBAIC04NDUsMTcgKzgx
MCwxMiBAQCBib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAogICAgIHJldHVybiBwcm90b2Nv
bElzKCJmaWxlIik7CiB9CiAKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5n
JiB1cmwpCi17Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0
Iik7Ci19Ci0KIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpCiB7CiAg
ICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0Iik7CiB9CiAKLWJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJvdG9j
b2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHVy
bC5sZW5ndGgoKTsKICAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5l
dyBzdHJpbmcgb2JqZWN0LgpAQCAtODY5LDEzICs4MjksMTMgQEAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQogCiBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgp
LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNC
bGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIl9zKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtV
Ukw7CiB9CiAKIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9j
Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQWJvdXRTcmNEb2NVUkwo
VVJMKCksICJhYm91dDpzcmNkb2MiX3MpOwogICAgIHJldHVybiBzdGF0aWNBYm91dFNyY0RvY1VS
TDsKIH0KIApAQCAtOTY0LDcgKzkyNCw2IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQogICAg
ICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAg
IDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51
bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKICAgICB9Owog
CiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxs
b3cgaXQuCkBAIC05ODMsMTUgKzk0MiwxNSBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYg
dXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCitTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3
IGRhdGFVUkwpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikp
OworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwoZGF0YVVSTCwgImRhdGEiKSk7CiAKICAg
ICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEg
Y29tbWEgZmlyc3QsIGJ1dCBhIHNlbWljb2xvbiBsYXRlcj8KLSAgICAvLyBDdXJyZW50bHkgdGhp
cyBjb2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJl
IHRoYXQncyBjb3JyZWN0LgotICAgIGF1dG8gaW5kZXggPSB1cmwuZmluZCgnOycsIDUpOworICAg
IC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRo
YXQgY2FzZTsgc2hvdWxkIGFkZCBhIHRlc3QuCisgICAgYXV0byBpbmRleCA9IGRhdGFVUkwuZmlu
ZCgnOycsIDUpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgaW5kZXggPSB1
cmwuZmluZCgnLCcsIDUpOworICAgICAgICBpbmRleCA9IGRhdGFVUkwuZmluZCgnLCcsIDUpOwog
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICAvLyBGSVhNRTogVGhlcmUgd2Fz
IGFuIG9sZCBjb21tZW50IGhlcmUgdGhhdCBtYWRlIGl0IHNvdW5kIGxpa2UgdGhpcyBzaG91bGQg
YmUgcmV0dXJuaW5nIHRleHQvcGxhaW4uCiAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIGJlZW4gcmV0
dXJuaW5nIGVtcHR5IHN0cmluZyBoZXJlIGZvciBzb21lIHRpbWUsIHNvIG5vdCBjaGFuZ2luZyBp
dHMgYmVoYXZpb3IgYXQgdGhpcyB0aW1lLgpAQCAtMTAwMCwyNSArOTU5LDM5IEBAIFN0cmluZyBt
aW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmIChpbmRleCA9PSA1
KQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CiAgICAgQVNTRVJUKGluZGV4ID49IDUp
OwotICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKKyAgICByZXR1cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCiBTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewotICAgIGlmIChzdHJp
bmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdHJpbmcoKTsKKyAgICBp
ZiAobV9zdHJpbmcubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7
CiAKLSAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0
cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSwgIi4uLiIsIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKSk7CiB9CiAKLVVSTCBVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQorVVJMIFVSTDo6ZmFr
ZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyByZWxhdGl2ZVBhcnQpCiB7Ci0gICAgcmV0
dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1h
a2VTdHJpbmcoIndlYmtpdC1mYWtlLXVybDovLyIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgJy8nLCByZWxhdGl2ZVBhcnQpKTsKIH0KIAotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lz
dGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChTdHJpbmdWaWV3IHBhdGgpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgImZp
bGU6Ly8vIiArIGZpbGVQYXRoKTsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKAor
ICAgICAgICAiZmlsZTovLyIsCisgICAgICAgIHBhdGguc3RhcnRzV2l0aCgnLycpID8gIiIgOiAi
LyIsCisgICAgICAgIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhwYXRoKQorICAgICkpOworfQor
CitTdHJpbmdWaWV3IFVSTDo6cXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQsIG1f
cXVlcnlFbmQgLSBtX3BhdGhFbmQpOworfQorCitTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVu
dGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpOwogfQogCiBib29sIFVSTDo6aXNB
Ym91dEJsYW5rKCkgY29uc3QKQEAgLTEwMzgsNiArMTAxMSw3IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAjaWYgIVBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKFNPVVApCisKIHN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5n
VmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBjb3VudCA9IDA7CkBAIC0xMTI0LDExICsxMDk4LDkg
QEAgc3RhdGljIGJvb2wgaXNJUHY2QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKIAogYm9vbCBV
Ukw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCiB7Ci0gICAgaWYgKGhvc3QuZmlu
ZCgnOicpID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gaXNJUHY0QWRkcmVzcyhob3N0KTsK
LQotICAgIHJldHVybiBpc0lQdjZBZGRyZXNzKGhvc3QpOworICAgIHJldHVybiBob3N0LmNvbnRh
aW5zKCc6JykgPyBpc0lQdjZBZGRyZXNzKGhvc3QpIDogaXNJUHY0QWRkcmVzcyhob3N0KTsKIH0K
KwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRleCA5NWFmNGEzYjQ3ZTA4ODdmNWEy
YWVhMDFhMTEzNzliYmJkMTFjNmZmLi40MmVjMWZiOWVjMzdlYjgzMTNkNjkzMDE5NTdhNDUxOTA2
MTBiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw0NyArMzgsMzkgQEAgT0JKQ19DTEFTUyBOU1VSTDsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V1RGIHsKKwogY2xhc3MgVGV4dFN0cmVhbTsKIAogY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0
cmluZ1ZpZXcpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9CiB9OwogCi1z
dHJ1Y3QgVVJMSGFzaDsKLQotY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7CitjbGFzcyBV
UkwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIEdlbmVy
YXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgogICAgIFVSTCgpIHsgaW52
YWxpZGF0ZSgpOyB9CiAKLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IFVSTChIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKTsKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCiAgICAgLy8g
UmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJv
dmlkZWQsIHRoZQogICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24t
QVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0
eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMK
LSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFs
aWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJ
IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMK
LSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4K
LSAgICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBV
UkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hp
Y2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYWJzb2x1dGUu
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKIAotICAgIHN0
YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmlu
Z1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmls
ZVN5c3RlbVBhdGgoU3RyaW5nVmlldyk7CiAKLSAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91
bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ugb2YgbnVsbCBv
ciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKLSAgICAvLyBz
dGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKIAogICAgIC8vIE1ha2VzIGEgZGVl
cCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIK
ICAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBh
cmUgaW1tdXRhYmxlLCB0aGVyZSdzCiAgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJl
ZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgVVJMIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwpAQCAtODksMTIyICs4MSwxMjYgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU2V0
SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KIAogICAgIGJv
b2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0g
ICAgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2ln
bmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNv
bnN0OwotICAgIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlcigpIGNvbnN0
OwotICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHF1ZXJ5
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotICAgIGJv
b2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgLy8gVW5saWtlIHVzZXIoKSBh
bmQgcGFzc3dvcmQoKSwgZW5jb2RlZFVzZXIoKSBhbmQgZW5jb2RlZFBhc3N3b3JkKCkgZG9uJ3Qg
ZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFj
Y3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICcl
JyBjaGFyYWN0ZXJzLgorCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcHJvdG9j
b2woKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBlbmNvZGVkVXNl
cigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVuY29kZWRQYXNz
d29yZCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGhvc3QoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeSgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcXVlcnlXaXRoTGVhZGluZ1F1
ZXN0aW9uTWFyaygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHByb3RvY29s
SG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGhvc3RB
bmRQb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB1c2VyKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBVUkwgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3Q7CiAK
LSAgICBib29sIGhhc1VzZXJuYW1lKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXNzd29yZCgpIGNv
bnN0OwogICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50KCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgICBib29s
IGhhc1BhdGgoKSBjb25zdDsKIAotICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3MoKSwgdGhl
c2UgZnVuY3Rpb25zIGRvbid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2VzLgotICAgIC8vIFRoaXMg
aXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywgYmVjYXVzZSBlbmNvZGlu
ZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KLSAgICBTdHJpbmcgZW5jb2RlZFVzZXIo
KSBjb25zdDsKLSAgICBTdHJpbmcgZW5jb2RlZFBhc3MoKSBjb25zdDsKLQotICAgIFN0cmluZyBi
YXNlQXNTdHJpbmcoKSBjb25zdDsKLQotICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0
OworICAgIGJvb2wgaGFzQ3JlZGVudGlhbHMoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0K
ICAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBs
b3dlci1jYXNlLgotICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAg
Ym9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgYm9vbCBwcm90b2Nv
bElzQmxvYigpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImJsb2IiKTsgfQogICAgIGJvb2wg
cHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KLSAg
ICBib29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwogICAgIGJvb2wgY2Fubm90QmVB
QmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQogCi0gICAgYm9v
bCBpc0Fib3V0QmxhbmsoKSBjb25zdDsKLSAgICBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Fib3V0QmxhbmsoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CiAKLSAgICBib29s
IGlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3KSBjb25zdDsKIAotICAgIGJv
b2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0
cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldFByb3RvY29sKFN0cmluZ1Zp
ZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAK
LSAgICB2b2lkIHJlbW92ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBvcnQoT3B0aW9uYWw8dWludDE2X3Q+
KTsKIAogICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgot
ICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCByZW1vdmVI
b3N0QW5kUG9ydCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3RBbmRQb3J0
KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRVc2VyKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBhc3N3
b3JkKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZUNyZWRl
bnRpYWxzKCk7CiAKLSAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9y
IEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAg
IHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0
eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGJl
ICIvIi4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXRoKFN0cmluZ1ZpZXcpOwog
CiAgICAgLy8gVGhlIHF1ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFyaywgb3IsIGlm
IG5vdCwgb25lIHdpbGwgYmUgYWRkZWQKICAgICAvLyBmb3IgeW91LiBTZXR0aW5nIHRoZSBxdWVy
eSB0byB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCiAgICAgLy8gVVJM
ICh3aXRoIG5vdGhpbmcgYWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBhc3MgYSBudWxs
IHN0cmluZy4KLSAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFF1ZXJ5KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCBzZXRGcmFn
bWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7Ci0gICAgdm9pZCByZW1vdmVGcmFnbWVudElkZW50
aWZpZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRGcmFnbWVudElkZW50aWZp
ZXIoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAKLSAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlm
aWVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAotICAgIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdW
aWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNz
KFN0cmluZ1ZpZXcpOwogCiAgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CiAgICAgdW5z
aWduZWQgcGF0aEVuZCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgp
IGNvbnN0OwogCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0
cmluZygpOyB9CisgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9CisgICAgb3BlcmF0b3IgU3RyaW5nVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9CiAKICNpZiBVU0UoQ0YpCi0gICAgVVJMKENGVVJMUmVmKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVS
TChDRlVSTFJlZik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
VVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFVSTChOU1VSTCAqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3Ig
TlNVUkwgKigpIGNvbnN0OwogI2VuZGlmCisKICNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9y
IE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisgICAgb3BlcmF0b3IgTlNT
dHJpbmcgKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAogI2lmbmRlZiBO
REVCVUcKICAgICB2b2lkIHByaW50KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHRlbXBsYXRlIDxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8VVJMPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VVJMPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBVUkxQYXJzZXI7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgc3RhdGljIGJvb2wgcHJvdG9jb2xJcyhjb25z
dCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBp
bnZhbGlkYXRlKCk7CiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1
ZmZlcikgY29uc3Q7CiAgICAgdW5zaWduZWQgaG9zdFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgY3JlZGVudGlhbHNFbmQoKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAgICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25z
dCBVUkwmKTsKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsKIApAQCAt
MjI5LDQ5ICsyMjUsMjcgQEAgcHJpdmF0ZToKIAogc3RhdGljX2Fzc2VydChzaXplb2YoVVJMKSA9
PSBzaXplb2YoU3RyaW5nKSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNob3VsZCBzdGF5
IHNtYWxsIik7CiAKLXRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPgotdm9pZCBVUkw6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Ci19Ci0K
LXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotYm9vbCBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBVUkwmIHVybCkKLXsKLSAgICBhdXRvIG9wdGlvbmFsVVJMID0gVVJMOjpkZWNvZGUoZGVj
b2Rlcik7Ci0gICAgaWYgKCFvcHRpb25hbFVSTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHVybCA9IFdURk1vdmUoKm9wdGlvbmFsVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Ci0gICAgZGVjb2RlciA+
PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Ci19Citib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiwgY29uc3Qg
VVJMJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9w
ZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwoKTsKIFdURl9FWFBPUlRfUFJJVkFU
RSBjb25zdCBVUkwmIGFib3V0U3JjRG9jVVJMKCk7CiAKIC8vIEZ1bmN0aW9ucyB0byBkbyBVUkwg
b3BlcmF0aW9ucyBvbiBzdHJpbmdzLgogLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVu
J3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KLS8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBm
cm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJp
bmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBlc3BlY2lhbGx5
IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2Fy
aWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50
IGZyb20gdGhlIFdURjo6VVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0
aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KKy8vIFRoaXMgaXMgZXNw
ZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBu
ZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFdURjo6VVJMLgogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25z
dCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmlu
Z1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwp
OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2Nv
bCk7CkBAIC0yODAsMTQgKzI1NCw0MCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwb3J0QWxs
b3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5n
KHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwogCi1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBk
YXRhVVJMKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJM
KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotLy8gRklYTUU6IFRoaXMgaXMgYSB3cm9uZyBjb25jZXB0
IHRvIGV4cG9zZSwgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2Fw
aW5nIHBlciB0aGUgVVJMIFN0YW5kYXJkLgorLy8gRklYTUU6IFRoaXMgbmVlZHMgYSBuZXcsIG1v
cmUgc3BlY2lmaWMgbmFtZS4gVGhlIGdlbmVyYWwgdGhpbmcgbmFtZWQgaGVyZSBjYW4ndCBiZSBp
bXBsZW1lbnRlZCBjb3JyZWN0bHksIHNpbmNlIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVk
IGRpZmZlcmVudCBlc2NhcGluZy4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKIAotLy8gSW5saW5lcy4KK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBV
UkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworLy8gRnVuY3Rpb24gdGVtcGxhdGUgYW5kIGlubGlu
ZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBVUkw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
bV9zdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgVVJMOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9
IGRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxVUkw+IFVSTDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Cisg
ICAgZGVjb2RlciA+PiBzdHJpbmc7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Cit9
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiB7
CkBAIC0zMTksOCArMzE5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5n
JiBhLCBjb25zdCBVUkwmIGIpCiAgICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKIH0KIAotLy8g
SW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2Fu
IGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlm
ZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KK2lubGluZSBVUkw6OlVSTChIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgIDogbV9zdHJpbmcoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKQor
eworfQogCiBpbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0CiB7CkBAIC0zMzksMTcgKzM0
MSwxMiBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBV
Ukw6Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoOworICAgIHJldHVybiBtX3BhdGhFbmQgPiBwYXRoU3RhcnQoKTsKIH0K
IAotaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0CitpbmxpbmUgYm9vbCBVUkw6
Omhhc0NyZWRlbnRpYWxzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2Vy
U3RhcnQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAotewotICAg
IHJldHVybiBtX3Bhc3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworICAgIHJldHVybiBtX3Bh
c3N3b3JkRW5kID4gbV91c2VyU3RhcnQ7CiB9CiAKIGlubGluZSBib29sIFVSTDo6aGFzUXVlcnko
KSBjb25zdApAQCAtMzU3LDcgKzM1NCw3IEBAIGlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBj
b25zdAogICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwogfQogCi1pbmxpbmUgYm9v
bCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxl
bmd0aCgpID4gbV9xdWVyeUVuZDsKIH0KQEAgLTM4MiwxMSArMzc5LDYgQEAgaW5saW5lIHVuc2ln
bmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKICAgICByZXR1cm4gbV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CiB9CiAKLVdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFVSTD47Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47
Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFib3V0QmxhbmtVUkw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9jZi9DRlVSTEV4dHJhcy5jcHAKaW5kZXggMDZiMGFlYzY0ZDEwMjVkNTQzZmY5ZGMzZDZhMWE3
ZDJlNjEwYzg1NC4uZmEwOGM5Zjg4MzY1OTJiNmFjMDUzYzczZmE4NjdlNWUwMWJhYjdhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIGlzQ0ZVUkxT
YW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQo
dXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKLSAgICBpZiAodXJsLmhhc1VzZXJuYW1l
KCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAgaWYgKHVybC5oYXNDcmVkZW50aWFscygpKQog
ICAgICAgICByZXR1cm4gcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgVVJMIHsgY2ZV
UkwgfSk7CiAKICAgICBVUkxDaGFyQnVmZmVyIGJ5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAKaW5kZXggZDEzYmI2YzkxZjllYmNhMzMwZGU1MWRkMDVjMjdlMDU5NmFjYTJkYi4uMjli
NDg4NTAxNmJkMjg3ZDFjZmU5NDJjNjU0OGU1NjViZjg4MzBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuY3BwCkBAIC0zNSw2ICszNSw3IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtNzQsNiArNzUsMTEgQEAgYm9vbCBTdHJpbmdWaWV3OjpzdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiA6OldURjo6
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOwogfQogCitib29sIFN0
cmluZ1ZpZXc6OmVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sZW5ndGggJiYgKCp0aGlzKVttX2xlbmd0aCAtIDFdID09IGNoYXJhY3RlcjsKK30KKwogYm9v
bCBTdHJpbmdWaWV3OjplbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JiBzdWZmaXgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKQEAgLTMwNiw2ICsz
MTIsMzEgQEAgU3RyaW5nIG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
cmV0dXJuIHJlc3VsdC51bmRlcmx5aW5nU3RyaW5nOwogfQogCisvLyBGSVhNRTogU2hvdWxkIHRo
aXMgYmUgbmFtZWQgcGFyc2VOdW1iZXI8dWludDE2X3Q+IGluc3RlYWQ/CisvLyBGSVhNRTogU2hv
dWxkIHdlIHJlcGxhY2UgdGhlIHRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMgd2l0aCB0aGlzIHN0
eWxlPworT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcgc3RyaW5nKQor
eworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBhdXRvIG51bWJlciA9IHRvSW50ZWdyYWxUeXBl
PHVpbnQxNl90PihzdHJpbmcsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbnVtYmVyOworfQorCitib29sIGVxdWFsSWdub3JpbmdO
dWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQoreworICAgIC8vIEZJWE1FOiBUaGUg
ZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldykgZnVuY3Rpb24gYWxyZWFkeSBpZ25vcmVzIG51
bGxpdHkuCisgICAgLy8gVG8gZml0IGluIHdpdGggdGhlIGJlaGF2aW9yIG9mIG91ciBvdGhlciBz
dHJpbmcgY2xhc3Nlcywgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgLy8gY2hhbmdpbmcgdGhhdCBi
ZWhhdmlvciBzbyB0aGF0IGEgbnVsbCBTdHJpbmdWaWV3IGlzIG5vdCBlcXVhbCB0byBhbiBlbXB0
eQorICAgIC8vIFN0cmluZ1ZpZXcsIGJ1dCBuZWVkIHRvIHRlc3Qgb3IgYXVkaXQgaW4gY2FzZSBj
b2RlIGRlcGVuZHMgb24gY3VycmVudCBiZWhhdmlvci4KKyAgICByZXR1cm4gZXF1YWwoYSwgYik7
Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoY29uc3QgY2hhciogc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKICNpZiBDSEVD
S19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291bnQgbWFudWFs
bHkgc28gVW5kZXJseWluZ1N0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmluZWQgaW4gdGhl
IGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNmNmZWJkYmFiN2VhNDU4ZTFk
OTY4MGQxMzE2MTkxNDhmMjE3OWYwMy4uNDZhZjUyZjUwYmVkMWNjOWM4YjJjYTQ1NTZkMWQ1MGY2
OTg2NzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEzNyw4ICsxMzcsNyBAQCBw
dWJsaWM6CiAKICAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5n
VmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXpl
X3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwogCiAgICAgc2l6
ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CiAKQEAgLTE1MSw2ICsxNTAsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjb250YWlucyhVQ2hhcikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24pIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldyBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nLCAwKSAhPSBub3RGb3VuZDsgfQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ1ZpZXcmKSBjb25zdDsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRo
KFVDaGFyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25z
dCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKQEAgLTE5MSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBT
dHJpbmdJbXBsKikgeyB9CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmlu
Z1ZpZXcmKSB7IH0KICNlbmRpZgorCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgY29uc3Qgdm9p
ZCogbV9jaGFyYWN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMjEwLDYgKzIxMiw4IEBAIGJvb2wgZXF1
YWwoU3RyaW5nVmlldywgY29uc3QgTENoYXIqIGIpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIqKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CisKIHRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0ZTx1
bnNpZ25lZCBsZW5ndGg+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiAKQEAg
LTIzNCw2ICsyMzgsOCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nIG5vcm1hbGl6ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgbm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmKTsKIAorV1RGX0VYUE9SVF9QUklW
QVRFIE9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsKKwogfQogCiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CmluZGV4IGYxMmFkMzZkMTllN2ZkNTRiNWNjYTEyNmY3MjVkMDAwNjQzODQ1ZmUuLmFmYzkyZjU3
NzY2NjIyOTJmMGNlMDY0NjI0ZTY4ZjM4NDY3MjI1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKQEAgLTkyNCwxMDIgKzkyNCwxMDIgQEAgc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGUKIAog
aW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQs
IExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBi
YXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25z
dCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3Ro
LCBvaywgYmFzZSk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3Qg
VUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwor
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+
KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGlu
dCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIo
ZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChj
b25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9V
SW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJh
Y3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVy
c1RvSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFj
dGVyc1RvSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNo
YXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwg
bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTAp
OworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50
NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgVUNoYXI+
KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0K
IAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Qs
IExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CiB9CiAKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihk
YXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJf
dD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOwogfQogCiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxp
bmdKdW5rLCBBbGxvd1RyYWlsaW5nSnVuayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDNhNTUyMThmZmJkNzBhMGYxMTU2NjE2MGFmOTM5
MGViYmQxOTFkNzMuLmRmYjczM2U5MzAwZGEyYWUxZTY5NWU0MTJjOTczMjAwOGFjNmUwOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTE2
MCw5ICsxNjAsMTAgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxFeGNlcHRpb24+IHByb2Nlc3NJ
bnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIEluaXQmJiBp
bml0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIC8vIEZJ
WE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIGh0dHBzOi8v
dXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtcGFyc2VyLgorCisgICAgLy8gRklYTUU6
IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgdG8gaHR0cHM6Ly91
cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCiAgICAgVVJMIHJlcXVlc3RV
UkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVybCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Rm9yY2VVVEY4OjpZZXMpOwotICAgIGlmICghcmVxdWVzdFVSTC5pc1Zh
bGlkKCkgfHwgIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVSTC5wYXNz
KCkuaXNFbXB0eSgpKQorICAgIGlmICghcmVxdWVzdFVSTC5pc1ZhbGlkKCkgfHwgcmVxdWVzdFVS
TC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCAiVVJMIGlzIG5vdCB2YWxpZCBvciBjb250YWlucyB1c2VyIGNyZWRlbnRpYWxzLiJfcyB9Owog
CiAgICAgbV9vcHRpb25zLm1vZGUgPSBNb2RlOjpDb3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNjA5YWE4YTI4OGZmMzU4MTllNjcz
Y2Y1NjdkY2I1MjBjNjNhYjQ4OS4uMDVmNDlmODg5MzZlMDhiZGUwNWJlNGViNjZmYTljMTU4OGZj
YmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBG
ZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIFVSTCBy
ZXF1ZXN0VVJMID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICghcmVxdWVzdFVS
TC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VT
dHJpbmcoIlJlZGlyZWN0aW9uIFVSTCAnIiwgcmVxdWVzdFVSTC5zdHJpbmcoKSwgIicgaXMgaW52
YWxpZCIpIH07Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkgfHwgIXJlcXVl
c3RVUkwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAocmVxdWVzdFVSTC5oYXNDcmVkZW50aWFs
cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVkaXJlY3Rpb24g
VVJMIGNvbnRhaW5zIGNyZWRlbnRpYWxzIl9zIH07CiAgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNl
Ojppc1JlZGlyZWN0aW9uU3RhdHVzQ29kZShzdGF0dXMpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgUmFuZ2VFcnJvciwgbWFrZVN0cmluZygiU3RhdHVzIGNvZGUgIiwgc3RhdHVzLCAiaXMg
bm90IGEgcmVkaXJlY3Rpb24gc3RhdHVzIGNvZGUiKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAppbmRleCBj
YWFkZjg3YjBiNTczZTMxMmU5ZTNlMDM5ZDZkYzZhODhmYzU5Y2NhLi5lNzEzNWJlYzYwM2Y5YjUz
YTlkMjJhNDQzYWYzNTgyMGYxY2FjYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMjIwLDEzICsy
MjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RhbmRhcmRpemVkUGF5bWVudE1ldGhvZElkZW50
aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3Bh
eW1lbnQtbWV0aG9kLWlkLyN2YWxpZGF0aW9uCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJMQmFzZWRQ
YXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAoIXVybC5w
cm90b2NvbElzKCJodHRwcyIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXVy
bC51c2VyKCkuaXNFbXB0eSgpIHx8ICF1cmwucGFzcygpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHVybC5wcm90b2NvbElz
KCJodHRwcyIpICYmICF1cmwuaGFzQ3JlZGVudGlhbHMoKTsKIH0KIAogLy8gSW1wbGVtZW50cyAi
dmFsaWRhdGUgYSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNw
cAppbmRleCA0ZTdhMDI1ZTQ3Njk0OTAxMTVlZWY0OWVlYzBhN2FmZGUxZWMzYjUzLi5hYjRkNWZi
YzExZjkyZDlhYWU2N2E4YTRkODhmYjJlY2FlZGNlYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNw
cApAQCAtMTAzLDE5ICsxMDMsMTQgQEAgYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Omlu
c3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KQogICAgIHJldHVybiB0cnVlOwogfQog
ICAgIAotc3RhdGljIGlubGluZSBVUkwgY3JlYXRlWW91VHViZVVSTChjb25zdCBTdHJpbmcmIHZp
ZGVvSUQsIGNvbnN0IFN0cmluZyYgdGltZUlEKQorc3RhdGljIFVSTCBjcmVhdGVZb3VUdWJlVVJM
KFN0cmluZ1ZpZXcgdmlkZW9JRCwgU3RyaW5nVmlldyB0aW1lSUQpCiB7CiAgICAgQVNTRVJUKCF2
aWRlb0lELmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHZpZGVvSUQgIT0gIi8iKTsKLSAgICAKLSAg
ICBVUkwgcmVzdWx0KFVSTCgpLCAieW91dHViZToiICsgdmlkZW9JRCk7Ci0gICAgaWYgKCF0aW1l
SUQuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuc2V0UXVlcnkoInQ9IiArIHRpbWVJRCk7Ci0g
ICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5n
KCJ5b3V0dWJlOiIsIHZpZGVvSUQsIHRpbWVJRC5pc0VtcHR5KCkgPyAiIiA6ICJ0PSIsIHRpbWVJ
RCkpOwogfQotICAgIAotc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVN
YXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCisKK3N0YXRp
YyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0FuZFZhbHVl
cyhTdHJpbmdWaWV3IHF1ZXJ5U3RyaW5nKQogewogICAgIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dDo6S2V5VmFsdWVNYXAgcXVlcnlEaWN0aW9uYXJ5OwogICAgIApAQCAtMTU1LDcgKzE1MCw3IEBA
IHN0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0Fu
ZFZhbHVlcyhjb25zdCBTdHJpbmcmIHF1CiAgICAgICAgIC8vIFNhdmUgdGhlIGtleSBhbmQgdGhl
IHZhbHVlLgogICAgICAgICBpZiAoa2V5TGVuZ3RoICYmIHZhbHVlTGVuZ3RoKSB7CiAgICAgICAg
ICAgICBTdHJpbmcga2V5ID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKGtleUxvY2F0aW9uLCBrZXlM
ZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICBTdHJpbmcgdmFs
dWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVMb2NhdGlvbiwgdmFsdWVMZW5ndGgpOwor
ICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKHZhbHVlTG9j
YXRpb24sIHZhbHVlTGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgdmFsdWUucmVwbGFj
ZSgnKycsICcgJyk7CiAKICAgICAgICAgICAgIGlmICgha2V5LmlzRW1wdHkoKSAmJiAhdmFsdWUu
aXNFbXB0eSgpKQpAQCAtMjA5LDE2ICsyMDQsMTYgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3Jl
YXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIK
IAogICAgIC8vIFNob3J0IFVSTCBvZiB0aGUgZm9ybTogaHR0cDovL3lvdXR1LmJlL3YxZDMwMUQK
ICAgICBpZiAoaXNZb3VUdWJlU2hvcnRlbmVkVVJMKSB7Ci0gICAgICAgIFN0cmluZyB2aWRlb0lE
ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1dG8gdmlkZW9JRCA9IHVybC5s
YXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodmlkZW9JRC5pc0VtcHR5KCkgfHwgdmlk
ZW9JRCA9PSAiLyIpCiAgICAgICAgICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
Y3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCB7IH0pOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8g
cGF0aCA9IHVybC5wYXRoKCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7Ci0gICAg
U3RyaW5nIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIAorICAgIGF1
dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpOworCiAgICAgLy8gT24gdGhlIFlvdVR1YmUgbW9iaWxlIHdlYiBhcHAsIHRo
ZSBwYXRoIGFuZCBxdWVyeSBzdHJpbmcgYXJlIHB1dCBpbnRvIHRoZQogICAgIC8vIGZyYWdtZW50
IHNvIHRoYXQgb25lIHdlYiBwYWdlIGlzIG9ubHkgZXZlciBsb2FkZWQgKHNlZSA8cmRhcjovL3By
b2JsZW0vOTU1MDYzOT4pLgogICAgIGlmIChpc1lvdVR1YmVNb2JpbGVXZWJBcHBVUkwpIHsKQEAg
LTIyNyw3ICsyMjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNv
bnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgcGF0
aCA9IGZyYWdtZW50OwogICAgICAgICAgICAgcXVlcnkgPSBlbXB0eVN0cmluZygpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IFN0cmluZ1ZpZXcoZnJhZ21lbnQpLnN1YnN0
cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQuc3Vic3RyaW5n
KDAsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5nKGxv
Y2F0aW9uICsgMSk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQgPSBlbXB0eVN0cmluZygp
OwpAQCAtMjYwLDEwICsyNTUsMTAgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHVi
ZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwYXRoLCAiL2UvIikpIHsKLSAgICAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0g
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgICAgIFN0cmluZyB2aWRlb0lEOwotICAgICAg
ICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAgICAgIFN0cmluZ1ZpZXcgdmlk
ZW9JRDsKKyAgICAgICAgU3RyaW5nVmlldyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsKIAorICAg
ICAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAg
ICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQYXRoQ29tcG9uZW50LmZpbmQo
JyYnKTsKICAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2UgJiBpbiBwbGFjZSBvZiA/IGZv
ciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgpAQCAtMjczLDExICsyNjgsMTEgQEAgc3RhdGlj
IFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZ
b3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENvbXBvbmVu
dDsKIAogICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBvdXRQ
YXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOworICAgICAg
ICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2Fu
ZC50b1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9J
RCwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
VVJMKCk7CiB9CiAKQEAgLTI5MCwxMyArMjg1LDEzIEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkwoY29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCiBTdHJpbmcgWW91
VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIHsKICAgICBib29sIGlzWW91VHVi
ZVNob3J0ZW5lZFVSTCA9IGZhbHNlOwotICAgIFN0cmluZyBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5
OwotICAgIFVSTCB5b3VUdWJlVVJMID0gcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJM
LCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIHBvc3NpYmxlTWFsZm9ybWVkUXVlcnkpOworICAgIFN0
cmluZyBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OworICAgIFVSTCB5b3VUdWJlVVJMID0gcHJvY2Vz
c0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIHBvc3Np
Ymx5TWFsZm9ybWVkUXVlcnkpOwogICAgIGlmIChzcmNVUkwuaXNFbXB0eSgpIHx8IHlvdVR1YmVV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3JjU3RyaW5nOwogCiAgICAgLy8gVHJhbnNm
b3JtIHRoZSB5b3V0dWJlVVJMICh5b3V0dWJlOlZpZGVvSUQpIHRvIGlmcmFtZSBlbWJlZCB1cmwg
d2hpY2ggaGFzIHRoZSBmb3JtYXQ6IGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVmlkZW9J
RAotICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCkudG9TdHJpbmcoKTsKKyAgICBhdXRv
IHNyY1BhdGggPSBzcmNVUkwucGF0aCgpOwogICAgIGNvbnN0IFN0cmluZyYgdmlkZW9JRCA9IHlv
dVR1YmVVUkwuc3RyaW5nKCkuc3Vic3RyaW5nKHlvdVR1YmVVUkwucHJvdG9jb2woKS5sZW5ndGgo
KSArIDEpOwogICAgIHNpemVfdCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCA9IHNyY1BhdGguZmlu
ZCh2aWRlb0lEKTsKIApAQCAtMzA1LDcgKzMwMCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNv
CiAgICAgICAgIEFTU0VSVChsb2NhdGlvbk9mVmlkZW9JREluUGF0aCk7CiAgICAgCiAgICAgICAg
IC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3Jl
IC9wYXRoL1ZpZGVvSWQuCi0gICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IHNy
Y1N0cmluZy5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRo
KSk7CisgICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3Jj
U3RyaW5nKS5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRo
KSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzcmNQYXRo
LCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVk
IHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECiAgICAgICAgIC8vIEZJ
WE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlPwpAQCAtMzE1LDIy
ICszMTAsMjEgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZy
b21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY28KIAogICAgIEFTU0VSVChsb2NhdGlv
bk9mUGF0aEJlZm9yZVZpZGVvSUQgIT0gbm90Rm91bmQpOwogCi0gICAgY29uc3QgU3RyaW5nJiBz
cmNVUkxQcmVmaXggPSBzcmNTdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRoQmVmb3Jl
VmlkZW9JRCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisgICAgYXV0byBz
cmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuc3Vic3RyaW5nKDAsIGxvY2F0aW9u
T2ZQYXRoQmVmb3JlVmlkZW9JRCk7CisgICAgYXV0byBxdWVyeSA9IHNyY1VSTC5xdWVyeSgpOwor
CiAgICAgLy8gSWYgdGhlIFVSTCBoYXMgbm8gcXVlcnksIHVzZSB0aGUgcG9zc2libHkgbWFsZm9y
bWVkIHF1ZXJ5IHdlIGZvdW5kLgogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCi0gICAgICAgIHF1
ZXJ5ID0gcG9zc2libGVNYWxmb3JtZWRRdWVyeTsKKyAgICAgICAgcXVlcnkgPSBwb3NzaWJseU1h
bGZvcm1lZFF1ZXJ5OwogCiAgICAgLy8gQXBwZW5kIHRoZSBxdWVyeSBzdHJpbmcgaWYgaXQgaXMg
dmFsaWQuCi0gICAgU3RyaW5nQnVpbGRlciBmaW5hbFVSTDsKLSAgICBpZiAoaXNZb3VUdWJlU2hv
cnRlbmVkVVJMKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmRMaXRlcmFsKCJodHRwOi8vd3d3Lnlv
dXR1YmUuY29tIik7Ci0gICAgZWxzZQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoc3JjVVJMUHJl
Zml4KTsKLSAgICBmaW5hbFVSTC5hcHBlbmQoIi9lbWJlZC8iLCB2aWRlb0lEKTsKLSAgICBpZiAo
IXF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKCc/JywgcXVlcnkpOwot
ICAgIHJldHVybiBmaW5hbFVSTC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKAor
ICAgICAgICBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPyAiaHR0cDovL3d3dy55b3V0dWJlLmNvbSIg
OiBzcmNVUkxQcmVmaXgsCisgICAgICAgICIvZW1iZWQvIiwKKyAgICAgICAgdmlkZW9JRCwKKyAg
ICAgICAgcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIsCisgICAgICAgIHF1ZXJ5CisgICAgKTsK
IH0KICAgICAKIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c1VSTChjb25z
dCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggOTkyNmNlZjk2NzE1NTM2NzJmMjM3OTli
ZjJmZWJmYjVlZDE5MGY3Ny4uZTIzNzQ5NzE4NjNmMWRhNzBkN2U5ZjljOTk2OWRkNmMwNjRmNTEx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTY0LDE1ICs2NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQogewotICAg
IFN0cmluZ0J1aWxkZXIgbmFtZTsKLSAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsKLSAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG5hbWUuYXBwZW5kKCcvJyk7Ci0gICAgaWYgKCF1
cmwucXVlcnkoKS5pc051bGwoKSkgewotICAgICAgICBuYW1lLmFwcGVuZCgnPycpOwotICAgICAg
ICBuYW1lLmFwcGVuZCh1cmwucXVlcnkoKSk7Ci0gICAgfQotICAgIFN0cmluZyByZXN1bHQgPSBu
YW1lLnRvU3RyaW5nKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VTdHJpbmcoCisgICAgICAgIHBhdGgsCisgICAgICAgIHBhdGguaXNFbXB0eSgp
ID8gIi8iIDogIiIsCisgICAgICAgIHVybC5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkK
KyAgICApOwogICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFyZXN1
bHQuY29udGFpbnMoJyAnKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDM1YTY2YmU1NTVhNjNiNDA4ZTZkOGI1YmZiMmM5ZDcyOWEyNGE0MmIuLmNmNmRjNWRh
YWVmMzY4OWM5ZjY5OTU3MzRhZDg5MTYxMDRlYmUzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtOTQ0LDI2ICs5NDQsMjcgQEAgSW50UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
Y2xpY2tQb2ludCgpCiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBl
bGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9IGFuY2hvckVsZW1l
bnQoKTsKKwogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1cHBvcnQgQVJJQSBsaW5rcyBh
cyBpbnRlcm5hbCBsaW5rIGVsZW1lbnRzCiAgICAgaWYgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEhUTUxBbmNob3JFbGVtZW50
JiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOwotICAgIAot
ICAgIFVSTCBsaW5rVVJMID0gYW5jaG9yLmhyZWYoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVu
dGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvJiBhbmNob3Ig
PSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOworCisgICAgYXV0byBsaW5r
VVJMID0gYW5jaG9yLmhyZWYoKTsKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9IGxpbmtV
UkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8gY2hlY2sgaWYg
VVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0gICAgVVJMIGRvY3VtZW50VVJMID0gbV9y
ZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBhdXRvIGRvY3VtZW50VVJMID0gbV9yZW5k
ZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAKLSAgICBOb2RlKiBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5maW5k
QW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CisKKyAgICBhdXRvIGxpbmtlZE5vZGUgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKCFsaW5rZWROb2RlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKKwogICAgIC8vIFRoZSBlbGVtZW50IHdlIGZpbmQgbWF5IG5vdCBiZSBh
Y2Nlc3NpYmxlLCBzbyBmaW5kIHRoZSBmaXJzdCBhY2Nlc3NpYmxlIG9iamVjdC4KICAgICByZXR1
cm4gZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUobGlua2VkTm9kZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBjYzhlOGEzMzAxMDgxOTcyNzIzZjkwNWNmNGYxZDM3NGE2NmJk
YjI5Li4yMDJiNmM5MThjYzg4NzBkNTY0YzdkZjA0ZDZkZTFhMThlZWE2NGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTMyNDgsNyArMzI0OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFVS
TChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fdXJsID0gbmV3VVJMOwogICAgIGlmIChTZWN1cml0
eU9yaWdpbjo6c2hvdWxkSWdub3JlSG9zdChtX3VybCkpCi0gICAgICAgIG1fdXJsLnJlbW92ZUhv
c3RBbmRQb3J0KCk7CisgICAgICAgIG1fdXJsLnNldEhvc3RBbmRQb3J0KHsgfSk7CiAKICAgICBt
X2RvY3VtZW50VVJJID0gbV91cmwuc3RyaW5nKCk7CiAgICAgdXBkYXRlQmFzZVVSTCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDMwMmVlYjdjZTVlNTkyYjRmOWRlZTZhZmE1NDg4ZWE0NmJl
NDc1MmQuLjk5YjFlYWQ3NTBiMDMwNDdiZTA0OTUxMzUwYTliMGNkZTFkYjJmNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTQ0ODcsNyArNDQ4Nyw3IEBAIEVsZW1lbnQqIEVsZW1lbnQ6OmZp
bmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5hbWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgZG9jdW1lbnQuYmFzZVVSTCgpKSkg
ewotICAgICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAg
ICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7
CiAgICAgICAgIHJldHVybiBkb2N1bWVudC5maW5kQW5jaG9yKG91dEFuY2hvck5hbWUpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAxZGFhODU4OGRmNTM5MGFmODEzMWUw
ZGFmMDk3YTg5ZmI1NzdhNTkxLi4zMGVkOWYzZjYxZjQwM2RiYjk0ZThlM2UyZjc5ZmY4OTdlMTcy
YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNDQwLDYgKzQ0MCw4IEBAIFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4+IFRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQoY29uc3QgRmxv
YXRQb2ludCYgcCkKICAgICByZXR1cm4gZWxlbWVudHNGcm9tUG9pbnQocC54KCksIHAueSgpKTsK
IH0KIAorLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gY2hhbmdlIHRoaXMgdG8gdGFrZSBhIFN0
cmluZ1ZpZXcsIHNpbmNlIHRoYXQncyB3aGF0IGNhbGxlcnMgaGF2ZQorLy8gYW5kIHRoZXJlIGlz
IG5vIHBhcnRpY3VsYXIgYWR2YW50YWdlIHRvIGFscmVhZHkgaGF2aW5nIGEgU3RyaW5nLgogRWxl
bWVudCogVHJlZVNjb3BlOjpmaW5kQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGU5NjAxY2UxNzk0ZGRiZGMxNzRlNGI2
NTM2NTM0Yjc3ZmYzYzQxMjkuLjAwMzlkYWYwZjc5Njk1NWJhZDBmODQyOGNkMjBhNzhiOGIzMDYz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tCkBAIC0zMjgsMTMgKzMyOCwxMyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKKyAgICAgICAgU3Ry
aW5nIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5h
bWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKKyAg
ICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21w
b25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBuYW1lID0gQXRvbVN0cmluZygibWVkaWEiKTsKKyAgICAgICAgICAgIG5hbWUgPSAibWVk
aWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgbmFtZSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1h
Z2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUo
bmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzQ4LDExICszNDgs
MTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291cmNlID09IHVy
bFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFz
dFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBuYW1lID0gQXRvbVN0cmluZygiZmlsZSIpOworICAgICAgICAgICAgbmFt
ZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7
IG5hbWUsIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
V1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFs
dWUtPmRhdGEoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggZjJhMmQ1MmFjNWFiZjRlNGYxMzExM2NhMjVkMWIyMGExNzM4ZmE2OS4uYjdk
MjljZDRiYWQ5NTBkM2FiZDdkZjc5ZTkwZjUzNDY0YzM2ODg0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgRWRpdG9yOjp3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGlt
YWdlRWxlbWVuCiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gcGFzdGVib2FyZElt
YWdlVVJMOwogICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7CiAgICAg
fQotICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0gaW1hZ2VTb3VyY2VVUkwubGFz
dFBhdGhDb21wb25lbnQoKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZSA9IGlt
YWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICBwYXN0ZWJv
YXJkSW1hZ2UuaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZSA9IHBhc3RlYm9hcmQucmVzb3VyY2VNSU1FVHlwZShjYWNoZWRJbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggYmRhZDlhMDA1NDI4ZjE0N2E4MTVl
Y2UwM2U3YzM5YTA3Yjg5YTJkNS4uZWFjOWEwYjk4Y2Q3MDE5Y2I1MjM1MmZhYzdhMTkyNDBlZGIx
NGZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cApAQCAtMTc3LDIyICsxNzcsMTcgQEAgU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0
YWNobWVudFRpdGxlKCkgY29uc3QKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFj
aG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdAogewogICAgIGF1dG8gdGl0bGUgPSBhdHRhY2ht
ZW50VGl0bGUoKTsKLQogICAgIGF1dG8gaW5kZXhPZkxhc3REb3QgPSB0aXRsZS5yZXZlcnNlRmlu
ZCgnLicpOwogICAgIGlmIChpbmRleE9mTGFzdERvdCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0
dXJuIHRpdGxlOwogCi0gICAgU3RyaW5nIG5hbWUgPSB0aXRsZS5sZWZ0KGluZGV4T2ZMYXN0RG90
KTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gdGl0bGUuc3Vic3RyaW5nKGluZGV4T2ZMYXN0RG90
KTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChsZWZ0
VG9SaWdodE1hcmspOwotICAgIGJ1aWxkZXIuYXBwZW5kKGZpcnN0U3Ryb25nSXNvbGF0ZSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQobmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQocG9wRGlyZWN0aW9u
YWxJc29sYXRlKTsKLSAgICBidWlsZGVyLmFwcGVuZChleHRlbnNpb24pOwotCi0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgbGVm
dFRvUmlnaHRNYXJrLAorICAgICAgICBmaXJzdFN0cm9uZ0lzb2xhdGUsCisgICAgICAgIFN0cmlu
Z1ZpZXcodGl0bGUpLmxlZnQoaW5kZXhPZkxhc3REb3QpLAorICAgICAgICBwb3BEaXJlY3Rpb25h
bElzb2xhdGUsCisgICAgICAgIFN0cmluZ1ZpZXcodGl0bGUpLnN1YnN0cmluZyhpbmRleE9mTGFz
dERvdCkKKyAgICApOwogfQogCiBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2ht
ZW50VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
CmluZGV4IDAzZDkwNWJiYTM3OTEyN2Q3Zjk0MTg5MmY3OTc2NWE3ZWY5M2MxYjkuLjZiZmU3MDc0
YTk1MWFkN2FjY2U5OTM4NDAwNjZjOGRiNzRkMTYxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNTcsMTQgKzM1NywxNCBAQCBzdGF0aWMgUmVwbGFj
ZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBleHRlbnNp
b247Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CisgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgp
OwogICAgIHNpemVfdCBkb3RPZmZzZXQgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNlRmluZCgn
LicpOwogICAgIGlmIChkb3RPZmZzZXQgIT0gbm90Rm91bmQpCi0gICAgICAgIGV4dGVuc2lvbiA9
IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZzZXQgKyAxKTsKKyAgICAgICAgZXh0
ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEpLnRvU3Ry
aW5nKCk7CiAKICAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlOwogICAgIGlmICh0eXBlLmlzRW1w
dHkoKSAmJiB1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJv
bURhdGFVUkwodXJsLnN0cmluZygpKTsKKyAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJvbURhdGFV
UkwodXJsKTsKICAgICAKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgIWV4dGVuc2lvbi5pc0Vt
cHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZXBsYWNlbWVudCA6IHJlcGxhY2VtZW50cykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5k
ZXggZTdhNTE2ZWJhMjI4NDlmY2QzNzM0NjU5Mzk0YjdjNDllN2Y5N2NlMS4uNWI4NDU0MWVhMGRj
ZjUyMjQyODJjMzFjZjc0YmI0NmVhMjU1MmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC05OCw5ICs5OCw3IEBAIE1lZGlhVGltZSBN
ZWRpYUZyYWdtZW50VVJJUGFyc2VyOjplbmRUaW1lKCkKIAogdm9pZCBNZWRpYUZyYWdtZW50VVJJ
UGFyc2VyOjpwYXJzZUZyYWdtZW50cygpCiB7Ci0gICAgaWYgKCFtX3VybC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFN0cmluZyBmcmFnbWVudFN0cmluZyA9
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRTdHJpbmcgPSBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAppbmRleCBiNzBlNWRj
YmU4Mjc1ODEwMGIwNzJkMmY0ZjBmMGU0NjgwYzAxMDk3Li5hYjAwZWQ4ZGRhZjkyN2FkMDU2Njg2
NWEyMzhmMWJiMzM1NTE2ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0
aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
U3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIGhvc3RuYW1lKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnVzZXJuYW1lKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRVc2VyKCk7CisgICAgcmV0dXJuIGhyZWYo
KS5lbmNvZGVkVXNlcigpLnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFVzZXJuYW1lKGNvbnN0IFN0
cmluZyYgdXNlcikKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojpw
YXNzd29yZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzcygpOworICAg
IHJldHVybiBocmVmKCkuZW5jb2RlZFBhc3N3b3JkKCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0
UGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzKQogICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAg
aWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB1cmwuc2V0
UGFzcyhwYXNzKTsKKyAgICB1cmwuc2V0UGFzc3dvcmQocGFzcyk7CiAgICAgc2V0SHJlZih1cmwp
OwogfQogCkBAIC0xNDEsMTcgKzE0MSwxOCBAQCBTdHJpbmcgVVJMVXRpbHM8VD46Omhvc3QoKSBj
b25zdAogICAgIHJldHVybiBocmVmKCkuaG9zdEFuZFBvcnQoKTsKIH0KIAotLy8gVGhpcyBmdW5j
dGlvbiBkb2VzIG5vdCBhbGxvdyBsZWFkaW5nIHNwYWNlcyBiZWZvcmUgdGhlIHBvcnQgbnVtYmVy
Lgotc3RhdGljIGlubGluZSB1bnNpZ25lZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24oY29u
c3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQgcG9ydFN0YXJ0LCB1bnNpZ25lZCYgcG9ydEVuZCkK
K3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY291bnRBU0NJSURpZ2l0cyhTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKLSAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OwotICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQo
dmFsdWVbcG9ydEVuZF0pKQotICAgICAgICArK3BvcnRFbmQ7Ci0gICAgcmV0dXJuIHZhbHVlLnN1
YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNvdW50
ID0gMDsgY291bnQgPCBsZW5ndGg7ICsrY291bnQpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoc3RyaW5nW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorICAg
IHJldHVybiBsZW5ndGg7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGls
czxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBVUkxVdGlsczxUPjo6c2V0
SG9zdChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE2OCwxOCArMTY5LDE5IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhv
c3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAoc2VwYXJhdG9yID09IG5vdEZvdW5kKQog
ICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOwogICAgIGVsc2UgewotICAgICAgICB1
bnNpZ25lZCBwb3J0RW5kOwotICAgICAgICB1bnNpZ25lZCBwb3J0ID0gcGFyc2VQb3J0RnJvbVN0
cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0b3IgKyAxLCBwb3J0RW5kKTsKLSAgICAgICAgaWYg
KCFwb3J0KSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjb3VudEFTQ0lJRGlnaXRz
KHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxKSk7CisgICAgICAgIGlmICghcG9ydExlbmd0
aCkgewogICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0
cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzCiAgICAgICAgICAg
ICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChwMy4yKSBhbmQKICAgICAg
ICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0
byBlbXB0eSBzdHJpbmcuCi0gICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNlZW1zIGxpa2Ugc29tZXRoaW5nIHRoYXQgaGFzIHNpbmNlIGJlZW4gY2hhbmdlZCBhbmQg
dGhpcyBydWxlIGFuZCBjb2RlIG1heSBiZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgIHVybC5zZXRI
b3N0QW5kUG9ydChtYWtlU3RyaW5nKHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSwg
JzAnKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjppc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgYXV0byBw
b3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEsIHBv
cnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChwb3J0TnVtYmVyICYmIFdURjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCB1cmwucHJvdG9jb2woKSkpCiAgICAgICAgICAg
ICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFs
dWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEgKyBwb3J0TGVuZ3RoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwpAQCAtMjI3LDE3ICsy
MjksMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQb3J0
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKLSAgICBpZiAo
dXJsLmNhbm5vdEJlQUJhc2VVUkwoKSB8fCB1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgIGlmICh1cmwu
Y2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikgfHwgIXVybC5jYW5T
ZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3VjY2VzcyA9IHRy
dWU7Ci0gICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnRvVUludCgmc3VjY2Vzcyk7Ci0gICAgaWYg
KCFzdWNjZXNzIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90
b2NvbCgpKSkKLSAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVy
bC5zZXRQb3J0KHBvcnQpOworICAgIGF1dG8gcG9ydCA9IHBhcnNlVUludDE2KHZhbHVlKTsKKyAg
ICBpZiAocG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgdXJsLnBy
b3RvY29sKCkpKQorICAgICAgICBwb3J0ID0gV1RGOjpudWxsb3B0OworICAgIHVybC5zZXRQb3J0
KHBvcnQpOwogCiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtMjYwLDcgKzI1OCw3
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKHZhbHVlWzBVXSA9PSAnLycpCiAgICAgICAgIHVybC5zZXRQYXRoKHZhbHVlKTsKICAg
ICBlbHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiArIHZhbHVlKTsKKyAgICAgICAgdXJsLnNl
dFBhdGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7CiAKICAgICBzZXRIcmVmKHVybC5zdHJpbmco
KSk7CiB9CkBAIC0yNjgsOCArMjY2LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0
aWxzPFQ+OjpzZWFyY2goKSBjb25zdAogewotICAgIFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVy
eSgpOwotICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsg
cXVlcnk7CisgICAgcmV0dXJuIGhyZWYoKS5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCku
dG9TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0yOTEsMTAgKzI4OCw4
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46Omhhc2goKSBjb25zdAogewot
ICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCk7Ci0gICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBBdG9tU3RyaW5nKFN0cmluZygiIyIgKyBmcmFn
bWVudElkZW50aWZpZXIpKTsKKyAgICAvLyBGSVhNRTogV2h5IGNvbnZlcnQgdGhpcyBzdHJpbmcg
dG8gYW4gYXRvbSBoZXJlIGluc3RlYWQgb2YganVzdCBhIHN0cmluZz8gSnVzdCBhbiBlcnJvcj8g
SW50ZW50aW9uYWxseSB0byBzYXZlIG1lbW9yeT8KKyAgICByZXR1cm4gaHJlZigpLmZyYWdtZW50
SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvQXRvbVN0cmluZygpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9B
ZENsaWNrQXR0cmlidXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRy
aWJ1dGlvbi5jcHAKaW5kZXggNjMzZTc3NWE1NDU0NGZjZmQ2Njg3YWJiZWNmOWFkODY4OWE2ZGQy
Zi4uNGVhNDdjMjkzMDVkZGFlMzIwNTcyYzhmMjM3MTVlODM4ZGI1MzczOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Ym9vbCBBZENsaWNrQXR0cmlidXRpb246OmlzVmFsaWQoKSBjb25zdAogCiBFeHBlY3RlZDxBZENs
aWNrQXR0cmlidXRpb246OkNvbnZlcnNpb24sIFN0cmluZz4gQWRDbGlja0F0dHJpYnV0aW9uOjpw
YXJzZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiB7Ci0gICAgaWYg
KCFyZWRpcmVjdFVSTC5wcm90b2NvbElzKCJodHRwcyJfcykgfHwgcmVkaXJlY3RVUkwuaGFzVXNl
cm5hbWUoKSB8fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpIHx8IHJlZGlyZWN0VVJMLmhhc1F1
ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnQoKSkgeworICAgIGlmICghcmVkaXJlY3RV
UkwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCByZWRpcmVjdFVSTC5oYXNDcmVkZW50aWFscygpIHx8
IHJlZGlyZWN0VVJMLmhhc1F1ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oQWRDbGlja0F0dHJpYnV0aW9uLCAiQ29udmVyc2lv
biB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQ
UyBvciB0aGUgVVJMIGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwg
cXVlcnkgc3RyaW5nLCBhbmQgZnJhZ21lbnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIltBZCBDbGljayBBdHRyaWJ1dGlvbl0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2Vw
dGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQUyBvciB0aGUgVVJMIGNv
bnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwgcXVlcnkgc3RyaW5nLCBh
bmQgZnJhZ21lbnQuIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggODI5MDYyOGM0ZWQ0NWUwNTMxYzQ3OTZmYTI2YWQ1
YWM0YTFkNjMzOC4uZTA1M2M5YjAzZjA0NjUwZGVmNTViZWNkNThkMWM2MzY5YzYzMGEzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcgdmFsaWRhdGVDcm9zc09yaWdpblJlZGlyZWN0
aW9uVVJMKGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlZGlyZWN0VVJMLnByb3Rv
Y29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIm5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGlyZWN0aW9u
IHdpdGggbm9uIENPUlMgc2NoZW1lIik7CiAKLSAgICBpZiAocmVkaXJlY3RVUkwuaGFzVXNlcm5h
bWUoKSB8fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpKQorICAgIGlmIChyZWRpcmVjdFVSTC5o
YXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmVkaXJlY3Rpb24g
VVJMICIsIHJlZGlyZWN0VVJMLnN0cmluZygpLCAiIGhhcyBjcmVkZW50aWFscyIpOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggMjE3N2Y0YjZkYjZiMTk1Y2E5ZGY4Mjc5YjVhZjdiYjE1NmY1
YjUwYS4uZGYzZDA4Yzc0ZmViYzFiNTRlMjQ0ZTYzZmM0OTZmZTYzMGM0MzAyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTUzMiw4ICs1MzIsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIC8vIEFueSBjcmVk
ZW50aWFsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjcm9zcy1zaXRlIHJlcXVl
c3RzLgogICAgIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV9v
cHRpb25zLnNlY3VyaXR5Q2hlY2sgPSBzZWN1cml0eUNoZWNrOwotICAgIEFTU0VSVChtX3NhbWVP
cmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJU
KG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCAhcmVxdWVzdFVSTC5oYXNDcmVkZW50aWFs
cygpKTsKIAogICAgIGlmICghbV9yZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcmVxdWVzdC5z
ZXRIVFRQUmVmZXJyZXIobV9yZWZlcnJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAppbmRleCAzYWFhOGVlZDhjMzM3ZTc5ZDk4ODhhNDU1ZjM5ZmYzZmVlNGI1YTM2
Li4zMGFmOTAwODA0OWE4ZTM5ODJmOWM5YmY0OWRhZWJmYzkyZWE2ODBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURh
dGEmIGRhdGEsIGNvbnN0CiAgICAgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1E
YXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7CiAgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5k
YXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcrJywgIiUyMCIpOwog
Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CisgICAgYXV0byBxdWVyeSA9IHVybC5x
dWVyeSgpOwogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCiAgICAgICAgIHVybC5zZXRRdWVyeShi
b2R5KTsKICAgICBlbHNlCi0gICAgICAgIHVybC5zZXRRdWVyeShxdWVyeSArICcmJyArIGJvZHkp
OworICAgICAgICB1cmwuc2V0UXVlcnkobWFrZVN0cmluZyhxdWVyeSwgJyYnLCBib2R5KSk7CiB9
CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlQWN0aW9uKGNvbnN0IFN0
cmluZyYgYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggMzIzZGI0NjM2MDI5OGI4YTkxYmIwMGE0
NzkyNGJiMmU4MTExZjMzOC4uNDg4MmQ3N2UxMjcxNjk4NWM0NjQ1MWRmMGVjNzQwYTc5MzkzYzQy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNDYsMTUgKzI0NiwxMiBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiByZXNv
dXJjZUxvYQogCiBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewotICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCB1c2UgZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aCBpbnN0ZWFkPwogI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lOKQot
ICAgIFVSTCB1cmwoYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRo
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSku
Z2V0KCkpOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/IFNlZW1zIGltcHJvYmFibGUg
dGhhdCB0aGUgcGFzc2VkLWluIHBhdGhzIHdvdWxkIGJlIGluIHRoZSBXaW5kb3dzIHBhdGggc3R5
bGUuCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwg
cGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxz
ZSkpLmdldCgpOwogI2Vsc2UKLSAgICBVUkwgdXJsOwotICAgIHVybC5zZXRQcm90b2NvbCgiZmls
ZSJfcyk7Ci0gICAgdXJsLnNldFBhdGgocGF0aCk7CisgICAgcmV0dXJuIFVSTDo6ZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aChwYXRoKTsKICNlbmRpZgotICAgIHJldHVybiB1cmw7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmYWFlNTFmOTlmNjJiMmYyOWQ1
Y2JiOGFlY2ZjZWIxNmFkYzJlYjU0Li43MzRkYTc2NjJkNDlhNjIyNTlkZTYxZmVkOGNiZWI3MDBl
ZDJhYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25saW5lV2hpdGVsaXN0LCBVbmtub3duIH07
CiAKLXN0YXRpYyBTdHJpbmcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCitz
dGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsK
ICAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0VVJMLnBhdGgoKTsKICAgICBBU1NFUlQo
bWFuaWZlc3RQYXRoWzBdID09ICcvJyk7CiAgICAgbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRo
LnN1YnN0cmluZygwLCBtYW5pZmVzdFBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIEFT
U0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gbWFuaWZlc3RQYXRoW21hbmlmZXN0UGF0aC5sZW5ndGgo
KSAtIDFdKTsKLSAgICByZXR1cm4gbWFuaWZlc3RQYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJu
IG1hbmlmZXN0UGF0aDsKIH0KIAogYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQpAQCAtNTEsNyArNTEsNyBAQCBib29sIHBh
cnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVz
dE1JTUVUeXBlLCBjb25zdAogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0
eSgpKTsKICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IGZhbHNlOwogCi0g
ICAgU3RyaW5nIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5pZmVzdFVS
TCk7CisgICAgYXV0byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZl
c3RVUkwpOwogCiAgICAgY29uc3QgY2hhciBjYWNoZU1hbmlmZXN0TUlNRVR5cGVbXSA9ICJ0ZXh0
L2NhY2hlLW1hbmlmZXN0IjsKICAgICBib29sIGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRl
TWFuZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYW5pZmVzdE1JTUVU
eXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0YWUwMGVmOTVhNTU0NzVh
NjVmM2QuLmNkOTQ5ZTdjMTMwZDk2NjI4MmYxOWI1MmM4ZGEzMWQwMDRhNjgxNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTg2LDEwICs4Niw3IEBA
IGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiAKIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QK
IHsKLSAgICBhdXRvJiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICBpZiAoIXVybC5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCk7CiB9CiAKIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA2YTI4YTg1NzFjNWVjYTYyN2Qz
ZTZlN2QxNGY3OWE3NjM4Njk2NWIzLi5lNGE5NGE1MDU5NjFhYTM3OTdmYTZkMDRlYTY1YzY0NTY1
YWQ5NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBTdHJpbmcgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0OjpzcGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1ZXN0VVJMKFJlc291cmNl
UmVxdQogICAgIGlmICghTWVtb3J5Q2FjaGU6OnNob3VsZFJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cihyZXF1ZXN0LnVybCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gcmVx
dWVzdC51cmwoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cigpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgcmV0dXJuIGZyYWdtZW50SWRlbnRp
ZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkMzdiZjljY2E5ZDFiOWU4Yzhj
NDFlZWQ3MzQ3MThiMDdhOTgyZTU2Li43MDcyNTg3ZTA0ZmM2ZjBiYzRiYWU2NzYwNmM1ODkxZDg2
ZWU0ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMTg1LDggKzIxODUsOCBA
QCB2b2lkIEZyYW1lVmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAKIGJvb2wgRnJhbWVWaWV3Ojpz
Y3JvbGxUb0ZyYWdtZW50KGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0cmluZyBmcmFnbWVudElk
ZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKHNjcm9sbFRvRnJh
Z21lbnRJbnRlcm5hbChmcmFnbWVudElkZW50aWZpZXIpKQorICAgIGF1dG8gZnJhZ21lbnRJZGVu
dGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGlmIChzY3JvbGxUb0ZyYWdt
ZW50SW50ZXJuYWwoZnJhZ21lbnRJZGVudGlmaWVyLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIGRlY29kaW5n
IHRoZSByZWYsIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIGVuY29kaW5nLgpAQCAtMjIwMSw3ICsy
MjAxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwp
CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBmcmFnbWVudElkZW50aWZpZXIpCiB7Ci0gICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6
c2Nyb2xsVG9BbmNob3IgJXMiLCBmcmFnbWVudElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsICVz
IiwgZnJhZ21lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gSWYgb3VyIFVS
TCBoYXMgbm8gcmVmLCB0aGVuIHdlIGhhdmUgbm8gcGxhY2Ugd2UgbmVlZCB0byBqdW1wIHRvLgog
ICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAppbmRleCA5YzU4YjA2ZjRjNDcxMTMwY2U0ODE1ZjExZDE0Y2I3OGY4MWI0OWEwLi4zOGZkN2Iy
OWI1M2VhYjQ4NGUzMDk2M2I1MWM4YWU1MjVjNWQ3YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKQEAgLTIwMSwxMyArMjAxLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRl
T2JqZWN0QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAgICAgICAg
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSA9IHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVj
dFR5cGU6OlJlcGxhY2UgPyAiaGlzdG9yeS5yZXBsYWNlU3RhdGUoKSIgOiAiaGlzdG9yeS5wdXNo
U3RhdGUoKSI7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBtYWtl
U3RyaW5nKCJCbG9ja2VkIGF0dGVtcHQgdG8gdXNlICIsIGZ1bmN0aW9uTmFtZSwgIiB0byBjaGFu
Z2Ugc2Vzc2lvbiBoaXN0b3J5IFVSTCBmcm9tICIsIGRvY3VtZW50VVJMLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCAiIHRvICIsIGZ1bGxVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCksICIuICIsIHN1ZmZpeCkgfTsKICAgICB9OwotICAgIGlmICghcHJvdG9jb2xI
b3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIo
KSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0gZG9jdW1lbnRVUkwu
cGFzcygpKQorICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRv
Y3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVs
bFVSTC5wYXNzd29yZCgpICE9IGRvY3VtZW50VVJMLnBhc3N3b3JkKCkpCiAgICAgICAgIHJldHVy
biBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQcm90b2Nv
bHMsIGRvbWFpbnMsIHBvcnRzLCB1c2VybmFtZXMsIGFuZCBwYXNzd29yZHMgbXVzdCBtYXRjaC4i
KTsKIAogICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAvLyBXZSBhbGxvdyBzYW5kYm94ZWQgZG9j
dW1lbnRzLCAnZGF0YTonLydmaWxlOicgVVJMcywgZXRjLiB0byB1c2UgJ3B1c2hTdGF0ZScvJ3Jl
cGxhY2VTdGF0ZScgdG8gbW9kaWZ5IHRoZSBVUkwgcXVlcnkgYW5kIGZyYWdtZW50cy4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzAyOCBmb3Ig
dGhlIGNvbXBhdGliaWxpdHkgY29uY2VybnMuCi0gICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRp
b24gPSAoZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0
eU9yaWdpbi5pc1VuaXF1ZSgpKSAmJiBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChkb2N1
bWVudFVSTCwgZnVsbFVSTCk7CisgICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRpb24gPSAoZG9j
dW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5p
c1VuaXF1ZSgpKQorICAgICAgICAmJiBkb2N1bWVudFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZy
YWdtZW50SWRlbnRpZmllcigpID09IGZ1bGxVUkwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAogICAgIGlmICghYWxsb3dTYW5kYm94RXhjZXB0aW9uICYmICFkb2N1
bWVudFNlY3VyaXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0aCgp
ICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRVUkwu
cXVlcnkoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldp
dGhNZXNzYWdlU3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3QgbWF0Y2ggZm9yIGEgc2Fu
ZGJveGVkIGRvY3VtZW50LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCAyODc4OWNk
MTQyOTgzMmMxZjI3MmE2YWFkNWViMWU4YjYyODgyZWM3Li4wZDg3YzdkODkzNzY5N2MxZWM3MDEz
NmYxYzY2YjYxYzlmNTYwMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtNjEsMTQg
KzYxLDggQEAgaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiAKIFN0cmlu
ZyBMb2NhdGlvbjo6aHJlZigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0gdGhpcy0+dXJsKCk7
Ci0KLSAgICBpZiAoIXVybC5oYXNVc2VybmFtZSgpICYmICF1cmwuaGFzUGFzc3dvcmQoKSkKLSAg
ICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLQotICAgIFVSTCB1cmxXaXRob3V0Q3JlZGVudGlh
bHModXJsKTsKLSAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc2V0VXNlcihXVEY6OmVtcHR5U3Ry
aW5nKCkpOwotICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5zZXRQYXNzKFdURjo6ZW1wdHlTdHJp
bmcoKSk7CisgICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwoKSk7CisgICAgdXJsV2l0
aG91dENyZWRlbnRpYWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgcmV0dXJuIHVybFdpdGhv
dXRDcmVkZW50aWFscy5zdHJpbmcoKTsKIH0KIApAQCAtOTEsMjAgKzg1LDE5IEBAIFN0cmluZyBM
b2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25z
dAogewotICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJuIHVybC5w
b3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpLnZhbHVlKCkpIDogZW1wdHlTdHJpbmco
KTsKKyAgICBhdXRvIHBvcnQgPSB1cmwoKS5wb3J0KCk7CisgICAgcmV0dXJuIHBvcnQgPyBTdHJp
bmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246
OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSB1cmwoKS5wYXRoKCk7Ci0gICAg
cmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmluZygpOworICAgIHJldHVy
biBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygpOwogfQogCiBTdHJpbmcg
TG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51
cmwoKTsKLSAgICByZXR1cm4gdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6
ICI/IiArIHVybC5xdWVyeSgpOworICAgIHJldHVybiB1cmwoKS5xdWVyeVdpdGhMZWFkaW5nUXVl
c3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpvcmlnaW4oKSBj
b25zdApAQCAtMTI1LDggKzExOCw3IEBAIFJlZjxET01TdHJpbmdMaXN0PiBMb2NhdGlvbjo6YW5j
ZXN0b3JPcmlnaW5zKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpoYXNoKCkgY29uc3QKIHsK
LSAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllciA9IHVybCgpLmZyYWdtZW50SWRl
bnRpZmllcigpOwotICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpID8gZW1w
dHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50SWRlbnRpZmllcjsKKyAgICByZXR1cm4gdXJsKCku
ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmcoKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhyZWYoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTcz
LDExICsxNjUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKLSAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKLSAgICBpZiAocG9ydCA8IDAg
fHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsLnJl
bW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIHVy
bC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKICAgICByZXR1cm4gc2V0TG9jYXRp
b24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGFjZTViN2Vk
OTcwMWUyNDFlNDBhNTdkZTY0MThkOThjMTI5ZDkzODUuLjJkNTE0Njk5YjExNzFlOWM3NDg2NjEy
YTdiMWE1ZTU1YTJiYWNmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTE0NywyMiArMTQ3LDE5IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgcmV0dXJuIGhv
c3RbaG9zdC5sZW5ndGgoKSAtIG1faG9zdC5sZW5ndGgoKSAtIDFdID09ICcuJzsKIH0KIAotc3Ry
dWN0IE1hdGNoVGVzdGVyCi17CitzdHJ1Y3QgTWF0Y2hUZXN0ZXIgewogICAgIFN0cmluZ1ZpZXcg
bV9wYXR0ZXJuOwotICAgIHVuc2lnbmVkIG1fcGF0dGVybkluZGV4OwotICAgIAorICAgIHVuc2ln
bmVkIG1fcGF0dGVybkluZGV4IHsgMCB9OworCiAgICAgU3RyaW5nVmlldyBtX3Rlc3Q7Ci0gICAg
dW5zaWduZWQgbV90ZXN0SW5kZXg7Ci0gICAgCisgICAgdW5zaWduZWQgbV90ZXN0SW5kZXggeyAw
IH07CisKICAgICBNYXRjaFRlc3RlcihTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1ZpZXcgdGVz
dCkKLSAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICwgbV9wYXR0ZXJuSW5kZXgoMCkKLSAg
ICAsIG1fdGVzdCh0ZXN0KQotICAgICwgbV90ZXN0SW5kZXgoMCkKKyAgICAgICAgOiBtX3BhdHRl
cm4ocGF0dGVybikKKyAgICAgICAgLCBtX3Rlc3QodGVzdCkKICAgICB7CiAgICAgfQotICAgIAor
CiAgICAgYm9vbCB0ZXN0U3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbmRl
eCA+PSBtX3Rlc3QubGVuZ3RoKCk7IH0KICAgICBib29sIHBhdHRlcm5TdHJpbmdGaW5pc2hlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybkluZGV4ID49IG1fcGF0dGVybi5sZW5ndGgoKTsgfQog
CkBAIC0xNzQsNyArMTcxLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAgICAgICAgICAgICBtX3Bh
dHRlcm5JbmRleCsrOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBlYXRTYW1l
Q2hhcnMoKQogICAgIHsKICAgICAgICAgd2hpbGUgKCFwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSAm
JiAhdGVzdFN0cmluZ0ZpbmlzaGVkKCkpIHsKQEAgLTIyNiw4ICsyMjMsNyBAQCBzdHJ1Y3QgTWF0
Y2hUZXN0ZXIKIAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0
IFVSTCYgdGVzdCkgY29uc3QKIHsKLSAgICBNYXRjaFRlc3RlciBtYXRjaChTdHJpbmdWaWV3KG1f
cGF0aCksIHRlc3QucGF0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2gudGVzdCgpOworICAgIHJldHVy
biBNYXRjaFRlc3RlcihtX3BhdGgsIHRlc3QucGF0aCgpKS50ZXN0KCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAKaW5kZXggNGEwYzM0ZWNhNzI0MmJkYTcyNTI4NDhiM2E4Y2UyZDEzNWY3NDM1Yi4uNDcw
ZmU1NDk1NGUxYjNjNDdlZWYwNWU3ODUwY2I1YmEyYzk5NWY2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTc5MCwxNiArNzkwLDEwIEBAIFN0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNp
b25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewotICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsIGRl
ZmF1bHRNSU1FVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwotCi0gICAgaWYgKGZp
bGVuYW1lLnJldmVyc2VGaW5kKCcuJykgIT0gbm90Rm91bmQpCisgICAgaWYgKGZpbGVuYW1lLmlz
RW1wdHkoKSB8fCBmaWxlbmFtZS5jb250YWlucygnLicpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsIGRlZmF1bHRNSU1FVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1l
OwogCi0gICAgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdldFByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdl
dFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBpZiAocHJlZmVy
cmVkRXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
ZTlhNDIzYWU5Mjk5ZGFhZjdiZDhiYzRhZWNhYzIwNDJmZTc4YTMxMy4uMjdmMGNjZWMwNjI3MDdj
Y2E3M2Y1ZDhjNjY0YTI5NDllYTNlMDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNDQxLDEyICs0NDEsMTIgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHIKICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBtX2NvbnRl
bnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkg
fHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwgY29udGFpbmVy
VHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwucHJvdG9jb2xJc0RhdGEo
KSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZyb21E
YXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29u
dGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybCkpOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVu
dCgpOworICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJl
dmVyc2VGaW5kKCcuJyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmlu
Zyhwb3MgKyAxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFzdFBhdGhD
b21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIG1lZGlhVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVGb3JF
eHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lZGlhVHlwZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBl
IHsgV1RGTW92ZShtZWRpYVR5cGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDcyOGZhMmU4Nzli
MGU3NjFhNDk1ZGM0YWNhMzA4NjQ0YmQ2NGUwMGUuLmQzYjMzODI3OTFlZjJjMDIyM2E3NjQzMTcx
M2YxOGIxZjMyZTZhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsID0gbV9maXJzdFJlcXVlc3QudXJsKCk7
CiAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzcyA9IHVybC5wYXNz
KCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICAgICAgbV9maXJz
dFJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICB9CiAgICAgCkBAIC05Niw3ICs5Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFN1Z2dlc3RlZCBjcmVkZW50aWFscyBmb3IgdGhlIGN1cnJl
bnQgcmVkaXJlY3Rpb24gc3RlcC4KICAgICBTdHJpbmcgbV91c2VyOwotICAgIFN0cmluZyBtX3Bh
c3M7CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CiAgICAgCiAgICAgQ3JlZGVudGlhbCBtX2luaXRp
YWxDcmVkZW50aWFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYTkzNzMyMDM1MzEyY2M0N2Qw
OTIyMGFkODRmMmZiMmU4ZjczNDJkZS4uNTMwZWNjZmFlNzkzZTM1ZGVlOTllYzA0MDc3MDdhMzhm
OWM3YzllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMCBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxzKCkKIHsKICAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsgCiAKLSAgICBpZiAobV91cmwudXNlcigpLmlzRW1wdHkoKSAmJiBtX3VybC5w
YXNzKCkuaXNFbXB0eSgpKQorICAgIGlmICghbV91cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV91cmwuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgbV91cmwuc2V0
UGFzcyhTdHJpbmcoKSk7Ci0KKyAgICBtX3VybC5yZW1vdmVDcmVkZW50aWFscygpOwogICAgIG1f
cGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4
IDc2N2M1Nzk0OTk5Yzk0NjExODBiY2ZlZjBjMmExOTIyZmExMDcyZDYuLmVlNjAzZDcyMmY0MWQw
ZDZmN2M0NmI5MDZmYjdhNTUxMDUyMGYzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNDIsMTUg
KzE0MiwxNSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQg
ZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogI2VuZGlmCiB7CiAgICAgLy8gQ3Jl
ZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVjdGlv
bjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29uJ3Qg
YmUgbWFkZS4KLSAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNF
bXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
KSB7CisgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzd29yZC5pc0Vt
cHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKICAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7
CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7Ci0gICAgICAg
IHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CisgICAgICAgIHVybFdpdGhD
cmVkZW50aWFscy5zZXRQYXNzd29yZChkLT5tX3Bhc3N3b3JkKTsKICAgICAgICAgZmlyc3RSZXF1
ZXN0KCkuc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCiAgICAgaWYgKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlICYmIGZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkgewotICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5t
X3Bhc3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQt
Pm1fcGFzc3dvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0v
NzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91
c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAg
ICAgLy8gdHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93
ZWQgYnkgUkZDIDI2MTcuCiAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQpAQCAtMTYwLDcgKzE2MCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwg
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBv
c3NpYmxlIHRvIGltcGxlbWVudCBsb2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3
aXRoIGtub3duIGluY29ycmVjdCBjcmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0
ZWx5CiAgICAgICAgICAgICAvLyAoc28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9l
c24ndCBwb3AgdXApLgogICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgICAgICBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgp
LmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJz
dFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9w
YXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsK
ICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7
CisgICAgZC0+bV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIGQtPm1fbGFzdEhUVFBN
ZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRp
YWxzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGljYXRp
b24gY3JlZGVudGlhbHMgaWYgdGhpcyBpcyBhY3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVk
aXJlY3QKICAgICAgICAgLy8gVVJMIGRpZG4ndCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBv
d24uCi0gICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5
KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNl
ci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9u
c2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCA9IG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlv
bigpLCByZXF1ZXN0LnVybCgpKTsKQEAgLTUyMSwxNyArNTIxLDE1IEBAIGJvb2wgUmVzb3VyY2VI
YW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoCiAgICAgaWYgKCFjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29y
ZEJhc2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZC0+bV91c2VyLmlz
TnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFs
ICpjcmVkZW50aWFsID0gW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpkLT5t
X3VzZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzd29yZDpkLT5tX3Bhc3MKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dOworICAgIGlmICghZC0+bV91c2Vy
LmlzTnVsbCgpICYmICFkLT5tX3Bhc3N3b3JkLmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gY3Jl
ZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpk
LT5tX3VzZXIKKyAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzc3dvcmQgcGVyc2lzdGVuY2U6
TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uXSk7CiAgICAgICAgIGQtPm1fY3Vy
cmVudE1hY0NoYWxsZW5nZSA9IGNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCk7CiAgICAgICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICAg
ICAgcmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgQ3JlZGVudGlhbChjcmVkZW50aWFsKSk7
Ci0gICAgICAgIFtjcmVkZW50aWFsIHJlbGVhc2VdOworICAgICAgICByZWNlaXZlZENyZWRlbnRp
YWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNyZWRlbnRpYWwuZ2V0KCkpKTsKICAgICAgICAgLy8g
RklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2Vk
IGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4
cGxpY2l0bHkuCiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bh
c3MgPSBTdHJpbmcoKTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
clN0YXRlLmNwcAppbmRleCAyYzZjNzBlODQ5OTVjMjlhYzE4ZmYzYzk1NDljNzg5OTY4Y2EwMWNh
Li5kY2I0MzBiMjJmNzU0NmJhZDM5NzA1ODM5M2Q4NDJhYjRlMDZlYWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCkBAIC0xNjUsMTcgKzE2NSwxNCBAQCBi
b29sIEJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYg
aW5WYWx1ZSwgRmlsdGVyT3BlcmF0aQogCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25z
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pihp
blZhbHVlKSkgewotCiAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZh
bHVlKSkgewogICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUuaXNVUkkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7Ci0gICAg
ICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwotCi0gICAg
ICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIG9wZXJhdGlv
bnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgICAgICAgICAg
YXV0byBmaWx0ZXJVUkwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOworICAgICAgICAg
ICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoZmlsdGVyVVJMKS5mcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFw
cGVuZChSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShmaWx0ZXJVUkwsIGZyYWdtZW50
LnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKaW5kZXggZDc5ZTgwMDg4MDg1MDA1
ZjFlMjM4NWEwODFiYTE2MGFmYWJmMjIzOS4uMDE3MWNiNDc2YmM2MGUwMjRjNzAyMjNkYmRkZThk
YzE4ZjE1NTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2Nh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAK
QEAgLTUzLDIzICs1MywyNCBAQCBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhvc3RuYW1lKCkgY29u
c3QKIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpwb3J0KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV91cmwucG9ydCgpID8gU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgpLnZhbHVlKCkpIDogZW1w
dHlTdHJpbmcoKTsKKyAgICBhdXRvIHBvcnQgPSBtX3VybC5wb3J0KCk7CisgICAgcmV0dXJuIHBv
cnQgPyBTdHJpbmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcg
V29ya2VyTG9jYXRpb246OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSBtX3Vy
bC5wYXRoKCk7Ci0gICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmlu
ZygpOworICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygp
OwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIG1fdXJs
LnF1ZXJ5KCk7CisgICAgcmV0dXJuIG1fdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmso
KS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhhc2goKSBjb25zdAog
ewotICAgIHJldHVybiBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogIiMiICsgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJu
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvU3RyaW5n
KCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCAwZDUzYmNmOTIzZWQ2MTI2NTM5ZjM1ZGQyYjk0OWNh
MTRiN2I1NjdjLi4xODk2YzI0MTFiNWRjMGJmNjgyZjQyNTA4OGUzZTY4OTYwZDJjYWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkoU2VjdXJpdHlP
cmlnaW5EYXRhJiYKICAgICA6IG1fdG9wT3JpZ2luKFdURk1vdmUodG9wT3JpZ2luKSkKICAgICAs
IG1fc2NvcGUoV1RGTW92ZShzY29wZSkpCiB7Ci0gICAgQVNTRVJUKCFtX3Njb3BlLmhhc0ZyYWdt
ZW50KCkpOworICAgIEFTU0VSVCghbV9zY29wZS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiB9
CiAKIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleTo6ZW1wdHlLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXgg
MTUyODE1NTgyNTY5ODFhNDgzOGNkNjM3M2IzNjcxYTVlZDA0MGFmOS4uYTBkZTQ5ZjA4ODQ0YTg2
YzZlMzI5NzVjYzRiZDcwNDY3NWIyYWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsLAogICAgIGlm
ICghdXNlci5pc051bGwoKSkKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNl
cik7CiAgICAgaWYgKCFwYXNzd29yZC5pc051bGwoKSkKLSAgICAgICAgdXJsV2l0aENyZWRlbnRp
YWxzLnNldFBhc3MocGFzc3dvcmQpOworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFz
c3dvcmQocGFzc3dvcmQpOwogCiAgICAgcmV0dXJuIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVu
dGlhbHMsIGFzeW5jKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA5ZTBiNjgyY2RlZDJhZmJiZjU3YTAyODQ5ZGMz
Yjc5ZDc5YTc2NzIxLi45NTVkMzg4ZTVlOTZlMzUxOTkzNjc0ZmI5NDllYTg3YWYzZmQzMWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
UmVkaXJlY3Rpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXEKICAgICAg
ICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3Ry
aW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgp
LnN0cmluZygpLCAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xp
Y3k6IG5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGlyZWN0aW9u
IHdpdGggbm9uIENPUlMgc2NoZW1lIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBpZiAobG9jYXRpb24uaGFzVXNlcm5hbWUoKSB8fCBsb2NhdGlvbi5oYXNQYXNz
d29yZCgpKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5oYXNDcmVkZW50aWFscygpKSB7CiAgICAg
ICAgICAgICBoYW5kbGVyKHJlZGlyZWN0aW9uRXJyb3IocmVkaXJlY3RSZXNwb25zZSwgbWFrZVN0
cmluZygiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIHJlZGlyZWN0UmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9s
aWN5OiByZWRpcmVjdGlvbiBVUkwgIiwgbG9jYXRpb24uc3RyaW5nKCksICIgaGFzIGNyZWRlbnRp
YWxzIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjM1LDcgKzIzNSw3
IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvCiAgICAgaHR0cHNVcGdyYWRlQ2hlY2tlci5xdWVy
eSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIG1fc2Vzc2lvbklELCBbcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoYm9vbCBmb3VuZEhvc3QpIG11
dGFibGUgewogICAgICAgICBpZiAoZm91bmRIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIG5ld1VS
TCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgICAgICAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0dHBz
Il9zKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KaW5kZXggMGM4ODA1NjNkZmQyYTRjYTdhMWU2ZDZkZTYzMjMzMDRiNzVhZGMyMi4uNDM3Nzdh
OWRlM2I2Y2Q1NThlMDk0YWY4NTVjN2JkYmY2MzFkOGE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CkBAIC0yMTksNyArMjE5LDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBhdXRvIHVy
bCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgJiYgdXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkgewogICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICBtX3Bh
c3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgp
OwogICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgICAgIHVybCA9IHJl
cXVlc3QudXJsKCk7CiAgICAgCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1f
dXNlciA9IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgbV9w
YXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0
Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggMmQ3NzYzNDVlMjI0OTZjYjg3NTBjMmU2MTQ5
Y2QwNjZhYzBjNzgwMy4uNGM4MzhhZmI3MzA1OTYzNTg5MzlhZmI1YmI0NTY0ZDAwYThhNjIxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaApAQCAtNjMsMjUgKzYzLDI1IEBAIHB1YmxpYzoK
ICAgICBXVEY6OlN0cmluZyBob3N0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3Bh
cnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1
cm4gbV9wYXJzZWRVUkwtPmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIFdURjo6U3Ry
aW5nIHByb3RvY29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+
cHJvdG9jb2woKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1f
cGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJp
bmcgcGF0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPnBhdGgo
KS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJM
LT5wYXRoKCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBsYXN0UGF0aENv
bXBvbmVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPmxhc3RQ
YXRoQ29tcG9uZW50KCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRV
UkwtPmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICB2b2lkIGVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IGIxYzM2ZGIyYzA0NjhhNjUxZDY0
NzZhMmY5ZGVjZGIzMjk2NWJkZGQuLjA3Y2QxMGYyYTNkZjk5MGM4NjZlMGVlODljOTlhMDYzNTBm
YmY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50Lm1tCkBAIC0yMjAsOCArMjIwLDggQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNo
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3dubG9h
ZFByb3h5KSkgewotICAgICAgICAgICAgV1RGOjpVUkwgZGVzdGluYXRpb25VUkwgPSBXVEY6OlVS
TDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmls
ZW5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmZyYWdtZW50SWRlbnRp
ZmllcigpLmxlbmd0aCgpKQorICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvblVSTCA9IFdURjo6
VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVzdGluYXRpb25G
aWxlbmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25VUkwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VUkwuc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLnVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXItPmZpbmlzaChkZXN0aW5hdGlvblVSTCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmNwcAppbmRleCBjYzA0ZTU1MGJmNmVhNjkzYzhiOGZlMjhjZTRkOWYyMDcyMWQ3
MjI2Li42OWMxMGI4ZGRkZTM1ZGQ2Yzc5NzAyMmM1YjIxOTRmYWQ4ZjRmMmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBA
IC0xMTMsMTUgKzExMyw5IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9y
YWdlRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoTWFwCiAKICAgICAgICAgRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJl
Y3RvcnkpOwogCi0gICAgICAgIGF1dG8gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIik7Ci0KICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2FsdEZvck9yaWdpbj4+IGRl
dmljZUlkSGFzaFNhbHRGb3JPcmlnaW5zOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
blBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICAgICAgVVJMIHVybDsKLSAgICAgICAgICAg
IHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAgICAgICAgICB1cmwuc2V0UGF0aChvcmln
aW5QYXRoKTsKLQotICAgICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSB1cmwubGFz
dFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCAi
KiIpKSB7CisgICAgICAgICAgICBhdXRvIGRldmljZUlkSGFzaFNhbHQgPSBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0aCkubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmlu
ZygpOwogCiAgICAgICAgICAgICBpZiAoaGFzaFNhbHRTaXplICE9IGRldmljZUlkSGFzaFNhbHQu
bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVyc2lz
dGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIGxlbmd0aCBvZiB0aGUgaGFzaCBz
YWx0ICglZCkgaXMgZGlmZmVyZW50IHRvIHRoZSBsZW5ndGggb2YgdGhlIGhhc2ggc2FsdHMgZGVm
aW5lZCBpbiBXZWJLaXQgKCVkKSIsIGRldmljZUlkSGFzaFNhbHQubGVuZ3RoKCksIGhhc2hTYWx0
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHAKaW5kZXggZDMwNTU1MzA4MDQ2MjM4MTMxZjBiZmVkNDJkNWYzMDExZjJiMWUy
NS4uYjdhZjVjZGFlYjVkMDNiMzA5YmFkYmQ5NjM1M2E1NmJmYmQyZjdhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAt
MTQ1LDE2ICsxNDUsMTUgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQ
bHVnaW5Gb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24KICAgICByZXR1cm4gUGx1
Z2luTW9kdWxlSW5mbygpOwogfQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9u
KGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYg
dXJsKQogewotICAgIFN0cmluZyBleHRlbnNpb247Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aCgnLycpKSB7
Ci0gICAgICAgIHNpemVfdCBleHRlbnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicp
OwotICAgICAgICBpZiAoZXh0ZW5zaW9uUG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgZXh0
ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGV4dGVuc2lvblBvcyArIDEpOwotICAgIH0KLSAg
ICByZXR1cm4gZXh0ZW5zaW9uLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgYXV0byBm
aWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGlmIChmaWxlbmFtZS5lbmRz
V2l0aCgnLycpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHNpemVfdCBsYXN0RG90UG9zaXRp
b24gPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIGlmIChsYXN0RG90UG9zaXRpb24g
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGZpbGVuYW1lLnN1
YnN0cmluZyhsYXN0RG90UG9zaXRpb24gKyAxKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwog
fQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYzk3ZTBhZTc5NWE5MTc3YmIzZjU2ZDBkMDFkYTk2MTNhYWRmMmM1MC4u
NmQ1NTA2NWY1MTcwYjliYTZlMDBhMjQ5YzBkYzU4NDE5OTk3NjRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShXZWJQcm9j
ZXNzUHJveHkmIHByb2NlcwogI2VuZGlmCiAKICAgICAvLyBXZSBmYWlsZWQgdG8gaXNzdWUgYW4g
dW5pdmVyc2FsIGZpbGUgcmVhZCBhY2Nlc3Mgc2FuZGJveCwgZmFsbCBiYWNrIHRvIGlzc3Vpbmcg
b25lIGZvciB0aGUgYmFzZSBVUkwgaW5zdGVhZC4KLSAgICBhdXRvIGJhc2VVUkwgPSBVUkwoVVJM
KCksIHVybC5iYXNlQXNTdHJpbmcoKSk7CisgICAgYXV0byBiYXNlVVJMID0gdXJsLnRydW5jYXRl
ZEZvclVzZUFzQmFzZSgpOwogICAgIGF1dG8gYmFzZVBhdGggPSBiYXNlVVJMLmZpbGVTeXN0ZW1Q
YXRoKCk7CiAgICAgaWYgKGJhc2VQYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC01
MTg4LDcgKzUxODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgICAgIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbgogICAgICAgICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8t
PmlzTWFpbkZyYW1lKCkKLSAgICAgICAgICAgICYmIChtX21haW5GcmFtZSA/ICFob3N0c0FyZUVx
dWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZSkKKyAgICAgICAg
ICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVl
c3QudXJsKCkuaG9zdCgpKQogICAgICAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2
aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOwogCiAg
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVz
dCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwpAQCAtNTMxNCw3ICs1
MzE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNvdXJjZUZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsK
IAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlcklu
aXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVu
dGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSA/
ICFob3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxz
ZTsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21h
aW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgICAgICBh
dXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRy
LCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRp
b25BY3Rpb24uZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKQEAgLTU1MTIsNyArNTUx
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAKICAgICAgICAgcmVwbHkobmV3UGFnZS0+
d2ViUGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICpuZXdQ
YWdlLT5kcmF3aW5nQXJlYSgpKSk7CiAKLSAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVz
c0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNBcmVFcXVhbChV
UkwoeyB9LCBtYWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbmV3UGFnZS0+
bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0g
VVJMKHsgfSwgbWFpbkZyYW1lVVJMKS5ob3N0KCkgPT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAK
ICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NTT0F1
dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSB0cnVlOwpAQCAtNTUy
MCw3ICs1NTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZv
RGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW8KICAgICB9OwogCiAgICAgYXV0
byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAg
Ym9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChvcmlnaW5hdGluZ0ZyYW1l
SW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKTsKKyAgICBib29sIHNob3VsZE9w
ZW5BcHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCkuaG9zdCgp
ICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQ
STo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBvcmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbiksICp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2luZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdp
bmRvd0ZlYXR1cmVzKV0gKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFj
dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYWVkZGFkMDE3NGE5ZTY5OTU2NWQyZmYxOGVhYjUwZjYz
Yzg2NmU0Li4yN2VkZjE2ZmE2MDZmZjVhN2ZlOWFlYTk2ZDlmM2E4NDFmMjg0ZTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU2MiwxMSArNTYy
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKFdl
YlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nCiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNl
IHRoYXQgdXJsU3RyaW5nIGRvZXMgbm90IHBvaW50IHRvIGEgZGlyZWN0b3J5LgogICAgIC8vIEdl
dCB1cmwncyBiYXNlIFVSTCB0byBhZGQgdG8gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNj
ZXNzLgotICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwotICAgIFN0
cmluZyBwYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0aCgpOworICAgIGF1dG8gcGF0aCA9IHVy
bC50cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKS5maWxlU3lzdGVtUGF0aCgpOwogICAgIGlmIChwYXRo
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDbGllbnQgbG9hZHMg
YW4gYWx0ZXJuYXRlIHN0cmluZy4gVGhpcyBkb2Vzbid0IGdyYW50IHVuaXZlcnNhbCBmaWxlIHJl
YWQsIGJ1dCB0aGUgd2ViIHByb2Nlc3MgaXMgYXNzdW1lZAogICAgIC8vIHRvIGhhdmUgcmVhZCBh
Y2Nlc3MgdG8gdGhpcyBkaXJlY3RvcnkgYWxyZWFkeS4KICAgICBtX2xvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3MuYWRkKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCmluZGV4IDg3Y2I4YjcwNTQzOTZkN2VmNjYxZjBmNDdlNmY1OGFkOGY3NjdiYmQuLjZlZWY0
YTI0ZDgzNzBjOWJiMWFhZWQ5MWExYTY2OWE2YTgxN2FkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNl
UmVpbgogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZG9tYWluIGluIGRvbWFpbnMuZ2V0KCkp
IHsKICAgICAgICAgICAgICAgICBVUkwgdXJsIHsgVVJMKCksIGRvbWFpbiB9OwogICAgICAgICAg
ICAgICAgIGlmICh1cmwucHJvdG9jb2woKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAg
IHVybC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAgICAgICAgICAgICAgICAgICB1cmwuc2V0
UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBhcHBCb3VuZERvbWFpbiB7IHVybCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA5MDM5OTBiZjk0ZTgzODVmZGU5ZjE1NGMzZDM1ZGFlNTMz
ZDAwMDNiLi40ODc1MWFiZjQ4MzI0NTg5NjFiZTczYWE1YTU5NWIwNWRlY2VhZjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjAsMTkgKzYwLDEwIEBAIFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5
T3JpZ2lucygpCiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRo
cyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnks
ICIqIik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpIHsK
LSAgICAgICAgVVJMIHVybDsKLSAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsKLSAg
ICAgICAgdXJsLnNldFBhdGgob3JpZ2luUGF0aCk7Ci0KLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5
SWRlbnRpZmllciA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotCi0gICAgICAgIGF1dG8gc2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
bWVkaWFLZXlJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKCpzZWN1cml0eU9yaWdp
bik7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0aCkubGFzdFBh
dGhDb21wb25lbnQoKS50b1N0cmluZygpOworICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihpZGVudGlmaWVy
KSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZWQzMDFhNTRkZDk5YmViNjhmYjE0MzhkMmQx
YzI1NGQwMzAxNmU0Li5lNGVmYTQ4MDlmMGEzZmY1MGE2MTZmZTExYTc1MDU4OWE0NzhlYWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTE1NjIsMTAgKzE1NjIsOCBAQCB2b2lkIFBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3Vt
ZW50KCkKICAgICBpZiAoW21fcGRmRG9jdW1lbnQgaXNMb2NrZWRdKQogICAgICAgICBjcmVhdGVQ
YXNzd29yZEVudHJ5Rm9ybSgpOwogCi0gICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50OildKSB7Ci0gICAgICAgIFN0
cmluZyBwZGZVUkxGcmFnbWVudCA9IG1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7
Ci0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRVUkxGcmFnbWVudDpwZGZVUkxGcmFn
bWVudF07Ci0gICAgfQorICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDopXSkKKyAgICAgICAgW21fcGRmTGF5ZXJD
b250cm9sbGVyIHNldFVSTEZyYWdtZW50Om1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzZXRTdWdn
ZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggNzY4YmEyZDdjNDY4NmMwNmVlOTc0YWJiZDY1MjU0
MTFmM2JiY2M5My4uNDFkM2VkODVlMzM3YzUxNmNiNWNkZTBkOTdjZTIxOGNhMjE1MTVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yNCwxNyArMjQsMTMgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIK
IAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVD
bGllbnQuaCIKLQogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCi0jaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CkBAIC00Miw3ICszOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGlj
YXRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCiB7CkBA
IC01NiwxOSArNTEsMjEgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQorCit2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBT
dHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5n
KTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIGVuY29kZWQg
KyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFy
Y2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAg
ICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2Vh
cmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAKLSAgICBp
ZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIHBhZ2UtPm1h
aW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVSTCB7IH0sIHVybCB9LCB7
IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFJl
ZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRv
ciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKKyAgICBwYWdl
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFyY2hVUkwsIHsgfSwgbnVs
bHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRM
aXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSop
CkBAIC05MSwxNCArODgsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFr
aW5nKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQorCiAjZW5kaWYKIAogI2lmIFVTRShB
Q0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCisKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNob3dDb250ZXh0TWVudSgpCiB7CiAgICAgbV9wYWdlLT5jb250ZXh0TWVudSgpLT5zaG93KCk7
CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDgwOTRh
NjI4MjI2MWI1ZTgzOTc0NWQ4NmU2MDQzYWY0Y2U2YzcyMzguLjMwYzZmZmUyM2YxZTQ5ZjE1ZjY2
ODM4YjY4NDFiNTY2MmM3ZWVmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgU3RyaW5nIHRp
dGxlID0gbGFiZWw7CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aXRsZSA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGM4NDQ4YzVhYzFmNDM2MmU0NDAzYzNhYzI5YTI4
NmE5YWY1ZWJiOGUuLmNjYWUyMTJjNTZjYTQ4OTFiNjdjNmQzYmVlNGNkMzMxOTJiMmE0ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04ODIsNyArODgyLDcgQEAgc3RhdGljIEJP
T0wgc2hvdWxkVHJ5QXBwTGluayhXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJgogICAgIGlmICghYWN0aW9uLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQog
ICAgICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUt
PmRvY3VtZW50KCkgJiYgaG9zdHNBcmVFcXVhbCh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCksIGFjdGlvbi51cmwoKSkpCisgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5k
b2N1bWVudCgpICYmIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5ob3N0KCkgPT0gYWN0
aW9uLnVybCgpLmhvc3QoKSkKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgcmV0dXJuIFlFUzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE4MWMz
MGI3YTk5ODYzODM5YjA1MWM0NTlhZmUwNWUwMjc4ZWQ0ZGEuLmM4NDBiYzFkNjJkZDVkYThmYjA4
MzY1NzRjMGJkNDFhOWYxNmNjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMjI5NSwxNCArMjI5NSwxMCBAQCAtIChET01Eb2N1bWVudEZyYWdt
ZW50ICopX2RvY3VtZW50RnJhZ21lbnRGb3JXZWJBcmNoaXZlOihXZWJBcmNoaXZlICopd2ViQXJj
aGl2ZQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRGb3JJbWFn
ZURhdGE6KE5TRGF0YSAqKWRhdGEgd2l0aFJlbGF0aXZlVVJMUGFydDooTlNTdHJpbmcgKilyZWxh
dGl2ZVVSTFBhcnQgYW5kTUlNRVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKIHsKLSAgICBXZWJS
ZXNvdXJjZSAqcmVzb3VyY2UgPSBbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0
YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5
cGU6bWltZVR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleHRFbmNvZGluZ05hbWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWVOYW1lOm5pbF07Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVu
dCAqZnJhZ21lbnQgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aElt
YWdlUmVzb3VyY2U6cmVzb3VyY2VdOwotICAgIFtyZXNvdXJjZSByZWxlYXNlXTsKLSAgICByZXR1
cm4gZnJhZ21lbnQ7CisgICAgYXV0byByZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBh
bGxvY10gaW5pdFdpdGhEYXRhOmRhdGEKKyAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxh
dGl2ZVBhcnQoU3RyaW5nIHsgcmVsYXRpdmVVUkxQYXJ0IH0pCisgICAgICAgIE1JTUVUeXBlOm1p
bWVUeXBlIHRleHRFbmNvZGluZ05hbWU6bmlsIGZyYW1lTmFtZTpuaWxdKTsKKyAgICByZXR1cm4g
W1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlOnJl
c291cmNlLmdldCgpXTsKIH0KIAogLSAoQk9PTClmb2N1c2VkTm9kZUhhc0NvbnRlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDUyMGVh
NTY2NGFmMjg3NTY5YTg1NWM3NGI4MWNlYTU0YzdlOGUyMDIuLmVmODYyZTVhYWFhYTA5NDdhM2I3
MTBkMDdiYmNlNzg4OGQ3M2QwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjMwNiw3ICsyMzA2LDcgQEAgLSAodm9pZCljbG9zZQog
CiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX3dlYl9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGU6KE5TU3RyaW5n
ICopcGFzdGVib2FyZFR5cGUgaW1hZ2VNSU1FVHlwZTooTlNTdHJpbmcgKilpbWFnZU1JTUVUeXBl
CiB7Ci0gICAgYXV0byBmaWxlbmFtZSA9IFtpbWFnZU1JTUVUeXBlIHN0cmluZ0J5UmVwbGFjaW5n
T2NjdXJyZW5jZXNPZlN0cmluZzpAIi8iIHdpdGhTdHJpbmc6QCIuIl07CisgICAgU3RyaW5nIGZp
bGVuYW1lID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3Ry
aW5nOkAiLyIgd2l0aFN0cmluZzpAIi4iXTsKICAgICBhdXRvIHJlc291cmNlID0gYWRvcHROUyhb
W1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6W3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6
cGFzdGVib2FyZFR5cGVdCiAgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KGZpbGVuYW1lKSBNSU1FVHlwZTppbWFnZU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6bmlsIGZy
YW1lTmFtZTpuaWxdKTsKICAgICByZXR1cm4gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRG
cmFnbWVudFdpdGhJbWFnZVJlc291cmNlOnJlc291cmNlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQppbmRleCBhYTUxYjYzOTQ4ODhhNzBiN2YwZDlkYmEwNTFmZTI1YjFlMTZm
Zjk3Li5mMTQxODYzMGVmNmU5ZGEyYzMzOWYwYWQxZWQ4ZWU2NjlhODg4N2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgLSAoaWQgPE5TSW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVy
CiAgICAgICAgIHJldHVybiBbW1tXZWJBbmltYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CiAKICAgICBOU1VSTCAqdXJsID0gX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVM
aW5rVVJMKCk7Ci0gICAgTlNTdHJpbmcgKmFic29sdXRlVVJMU3RyaW5nID0gW3VybCBhYnNvbHV0
ZVN0cmluZ107CisgICAgU3RyaW5nIGFic29sdXRlVVJMU3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0
cmluZ107CiAgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpIHsKICAg
ICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7
CiAgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbk1haWx0b0xpbms7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYzI2NWUwODNlMWY3YzlhZmM4M2JjOGUwMWU4
ZjQ0ZWVmN2FiNTNiOS4uMTQyZTFjMzE2NmNhYWRhY2QzNWRhODJjYzZiM2NlNDQyZjRiNjQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjUsMjEgKzI1LDE0IEBACiAKICNp
bmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCi0jaW5jbHVkZSAiV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmgiCi0jaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiBXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQoV2Vi
Vmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewpAQCAtNTcsMTcgKzUw
LDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYg
dXJsKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsK
LSAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNo
U3RyaW5nKTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8g
cGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIGVu
Y29kZWQgKyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0cmluZyA9IGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNl
cyhzZWFyY2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIrIl9z
KTsKKyAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07CiAK
LSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVSTCB7IH0sIHVy
bCB9LCB7IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6
Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2VyR2VzdHVyZUlu
ZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKKyAg
ICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFyY2hVUkwsIHsg
fSwgbnVsbHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAK
IHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjNhYTk2
OGI4NzdhODg4YWY3MzM4NzgzYTY5NWU1MmUxODhmM2RkNC4uN2IxNjkwMDNkNGE3Yjg3Njk4NzBj
OGIxYWVkNmQ4ZTdiMWIxYmE0NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3
aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
LmNwcDogUmVtb3ZlZCB0aGUgdGVzdCBmb3IKKyAgICAgICAgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5k
RnJhZ21lbnQgc2luY2Ugd2UgcmVtb3ZlZCB0aGF0IGZ1bmN0aW9uLgorICAgICAgICBVcGRhdGVk
IGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBmcm9tIFVSTDo6cGFzcy4KKyAgICAgICAgVXBk
YXRlZCBhcmd1bWVudHMgdG8gaXNNYXRjaGluZ0RvbWFpbiB0byBwYXNzIGxpdGVyYWxzIHRoYXQg
Y2FuIGJlIGNvbnZlcnRlZAorICAgICAgICB0byBTdHJpbmdWaWV3IHJhdGhlciB0aGFuIEFTQ0lJ
TGl0ZXJhbCwgd2hpY2ggU3RyaW5nVmlldyBkb2Vzbid0IHlldCBzdXBwb3J0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6IFVwZGF0ZWQgZm9yIHJlbmFtZSBv
ZiBVUkw6OnBhc3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tSZWxhdGl2ZVVSTCk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tV
UkxEaWZmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxh
dGl2ZVVSTERpZmZlcmVuY2VzKTogRGl0dG8uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
VXNlclBhc3N3b3JkKTogRGl0dG8uCisKIDIwMjAtMDQtMTMgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTk5MDApIDogU3BlZWRvbWV0
ZXIgZmFpbGluZyBvbiBDYXRhbGluYS1SZWxlYXNlLVdLMi1QZXJmIGJvdApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VSTC5jcHAKaW5kZXggOTM3YjlmOTQwYmY5MTEzZmNlMzcyM2ZhZjBjNWU1
YmY2YjFjODdkZS4uNmJmMjc1YTUxOGQ0N2EwZTJmMjE3OTRhMDc4ZDYxOWNlN2M1MWZkMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRFU1Rf
RihXVEZfVVJMLCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKICAgICBFWFBFQ1RfVFJVRSghIWt1
cmwucG9ydCgpKTsKICAgICBFWFBFQ1RfRVEoODA4MCwga3VybC5wb3J0KCkudmFsdWUoKSk7CiAg
ICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUiKSwga3VybC51c2VyKCkpOwotICAgIEVYUEVD
VF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3N3b3JkKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmco
Ii9pbmRleC5odG1sIiksIGt1cmwucGF0aCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmRl
eC5odG1sIiksIGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmlu
ZygidmFyPXZhbCIpLCBrdXJsLnF1ZXJ5KCkpOwpAQCAtMjYxLDU3ICsyNjEsNiBAQCBURVNUX0Yo
V1RGX1VSTCwgRXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcikKICAgICB9CiB9CiAKLVRF
U1RfRihXVEZfVVJMLCBFcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCkKLXsKLSAgICBzdHJ1
Y3QgVGVzdENhc2UgewotICAgICAgICBjb25zdCBjaGFyKiB1cmwxOwotICAgICAgICBjb25zdCBj
aGFyKiB1cmwyOwotICAgICAgICBib29sIGV4cGVjdGVkOwotICAgIH0gY2FzZXNbXSA9IHsKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVl
fSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vI2hhc2giLCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8v
ZXhhbXBsZS5jb20vcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0s
Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1w
bGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9x
dWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tL290aGVycGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIs
IGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvI2hhc2gi
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxl
LmNvbTo4MC9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5Iiwg
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tOjgwL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRy
dWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9vdGhlcnBhdGgiLCAiaHR0cDov
L2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL25vdC1leGFtcGxl
LmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsIGZhbHNlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNv
bTo4MS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsICJo
dHRwOi8vZXhhbXBsZS5jb206ODEiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tOjgxL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAot
ICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFt
cGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgx
L3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAot
ICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1w
bGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUu
aHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwi
LCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZp
bGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sP3F1ZXJ5I2hhc2giLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRy
dWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9vdGhlcl9maWxlLmh0bWwiLCAiZmlsZTov
Ly9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8v
b3RoZXIvZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCi0g
ICAgICAgIHsiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZP
LyIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzYwLzc2MC83NjAvIiwg
ZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbSIsICJmaWxlOi8vZXhhbXBsZS5j
b20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImZpbGU6
Ly9leGFtcGxlLmNvbSIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vP3F1
ZXJ5IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tLz9xdWVyeSNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0g
ICAgfTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgdGVzdCA6IGNhc2VzKSB7Ci0gICAgICAgIFVS
TCB1cmwxID0gY3JlYXRlVVJMKHRlc3QudXJsMSk7Ci0gICAgICAgIFVSTCB1cmwyID0gY3JlYXRl
VVJMKHRlc3QudXJsMik7Ci0gICAgICAgIEVYUEVDVF9FUSh0ZXN0LmV4cGVjdGVkLCBlcXVhbEln
bm9yaW5nUXVlcnlBbmRGcmFnbWVudCh1cmwxLCB1cmwyKSkKLSAgICAgICAgICAgIDw8ICJUZXN0
IGZhaWxlZCBmb3IgIiA8PCB0ZXN0LnVybDEgPDwgIiB2cy4gIiA8PCB0ZXN0LnVybDI7Ci0gICAg
fQotfQotCiBURVNUX0YoV1RGX1VSTCwgUHJvdG9jb2xJc0luSFRUUEZhbWlseSkKIHsKICAgICBF
WFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkpOwpAQCAtMzc2LDIy
ICszMjUsMjIgQEAgVEVTVF9GKFdURl9VUkwsIEhvc3RJc01hdGNoaW5nRG9tYWluKQogCiAgICAg
RVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVYUEVD
VF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJs
LmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwu
aXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfVFJVRSh1
cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIikpOworICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJ3ZWJraXQub3JnIikpOworICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5n
RG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsKIAotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRj
aGluZ0RvbWFpbigicmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21h
aW4oIi5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3
LndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4o
Imh0dHA6Ly93d3cud2Via2l0Lm9yZyJfcykpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRj
aGluZ0RvbWFpbigicmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWlu
KCIub3JnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3cud2Vi
a2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0dHA6
Ly93d3cud2Via2l0Lm9yZyIpKTsKIAogICAgIHVybCA9IGNyZWF0ZVVSTCgiZmlsZTovLy93d3cu
d2Via2l0Lm9yZyIpOwogCiAgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oU3Ry
aW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5U3Ry
aW5nKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykp
OwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyJfcykp
OwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmci
X3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsKIAog
ICAgIFVSTCBlbXB0eVVSTDsKICAgICBFWFBFQ1RfRkFMU0UoZW1wdHlVUkwuaXNNYXRjaGluZ0Rv
bWFpbihTdHJpbmcgeyB9KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFy
c2VyLmNwcAppbmRleCAxMDM5ZTU0YjFhZWI3YzI2MWY1YTJhYzM5MjhlMTE5ODczYjM2Y2M4Li4w
OGEzYTllOTg4M2QwNjhiY2MzZWI1ZGYxNTFlNjBmNzFiNDA3YzlkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFy
dHMmIHBhcnRzLCBUZXN0VGEKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2Nv
bCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwu
dXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNU
X0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyB2
b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTFN0cmluCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2ws
IHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVz
ZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7
CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9F
UShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBl
Y3RlZFBhcnRzJiBwYQogICAgIAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnByb3RvY29s
LCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVy
bC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBh
c3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzc3dv
cmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsK
ICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNzcsNyAr
MTc3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICAKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5w
YXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5o
b3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0
KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBh
dGgoKSkpOwpAQCAtNDYyLDE5ICs0NjIsMTkgQEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIEJhc2lj
KQogICAgIGNoZWNrVVJMKCJodHRwOi8vOkBob3N0IiwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIs
IDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hvc3QvIn0pOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0
VXNlclBhc3MoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkZWNvZGVkLCBjb25z
dCBTdHJpbmcmIGVuY29kZWQpCitzdGF0aWMgdm9pZCB0ZXN0VXNlclBhc3N3b3JkKGNvbnN0IFN0
cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZGVjb2RlZCwgY29uc3QgU3RyaW5nJiBlbmNvZGVk
KQogewogICAgIFVSTCB1c2VyVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwOi8vIiwgdmFsdWUs
ICJAZXhhbXBsZS5jb20vIikpOwogICAgIFVSTCBwYXNzVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJo
dHRwOi8vdXNlcjoiLCB2YWx1ZSwgIkBleGFtcGxlLmNvbS8iKSk7CiAgICAgRVhQRUNUX0VRKGVu
Y29kZWQsIHVzZXJVUkwuZW5jb2RlZFVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKGVuY29kZWQsIHBh
c3NVUkwuZW5jb2RlZFBhc3MoKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwuZW5j
b2RlZFBhc3N3b3JkKCkpOwogICAgIEVYUEVDVF9FUShkZWNvZGVkLCB1c2VyVVJMLnVzZXIoKSk7
Ci0gICAgRVhQRUNUX0VRKGRlY29kZWQsIHBhc3NVUkwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEo
ZGVjb2RlZCwgcGFzc1VSTC5wYXNzd29yZCgpKTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFVzZXJQ
YXNzKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKK3N0YXRpYyB2
b2lkIHRlc3RVc2VyUGFzc3dvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGVkKQogewotICAgIHRlc3RVc2VyUGFzcyh2YWx1ZSwgdmFsdWUsIGVuY29kZWQpOworICAg
IHRlc3RVc2VyUGFzc3dvcmQodmFsdWUsIHZhbHVlLCBlbmNvZGVkKTsKIH0KIAogVEVTVF9GKFdU
Rl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQpAQCAtNDgzLDIwICs0ODMsMjAgQEAgVEVTVF9GKFdU
Rl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQogICAgIGF1dG8gaW52YWxpZFN1cnJvZ2F0ZSA9IHV0
ZjE2U3RyaW5nPDM+KHsweEQ4MDAsICdBJywgJ1wwJ30pOwogICAgIGF1dG8gcmVwbGFjZW1lbnRB
ID0gdXRmMTZTdHJpbmc8Mz4oezB4RkZGRCwgJ0EnLCAnXDAnfSk7CiAKLSAgICB0ZXN0VXNlclBh
c3MoImEiLCAiYSIpOwotICAgIHRlc3RVc2VyUGFzcygiJSIsICIlIik7Ci0gICAgdGVzdFVzZXJQ
YXNzKCIlMjUiLCAiJSIsICIlMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUyNTI1IiwgIiUyNSIs
ICIlMjUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJUZYIiwgIiVGWCIpOwotICAgIHRlc3RVc2Vy
UGFzcygiJTAwIiwgU3RyaW5nOjpmcm9tVVRGOCgiXDAiLCAxKSwgIiUwMCIpOwotICAgIHRlc3RV
c2VyUGFzcygiJUYlMjUiLCAiJUYlIiwgIiVGJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlWCUy
NSIsICIlWCUiLCAiJVglMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUlMjUiLCAiJSUiLCAiJSUy
NSIpOwotICAgIHRlc3RVc2VyUGFzcygi8J+SqSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTki
KTsKLSAgICB0ZXN0VXNlclBhc3MoIiXwn5KpIiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTki
KTsKLSAgICB0ZXN0VXNlclBhc3ModmFsaWRTdXJyb2dhdGUsICIlRjAlOTAlODUlOTUiKTsKLSAg
ICB0ZXN0VXNlclBhc3MocmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwotICAgIHRlc3RVc2Vy
UGFzcyhpbnZhbGlkU3Vycm9nYXRlLCByZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CisgICAg
dGVzdFVzZXJQYXNzd29yZCgiYSIsICJhIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJSIsICIl
Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTI1IiwgIiUiLCAiJTI1Iik7CisgICAgdGVzdFVz
ZXJQYXNzd29yZCgiJTI1MjUiLCAiJTI1IiwgIiUyNTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29y
ZCgiJUZYIiwgIiVGWCIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUwMCIsIFN0cmluZzo6ZnJv
bVVURjgoIlwwIiwgMSksICIlMDAiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlRiUyNSIsICIl
RiUiLCAiJUYlMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlWCUyNSIsICIlWCUiLCAiJVgl
MjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKKyAgICB0
ZXN0VXNlclBhc3N3b3JkKCLwn5KpIiwgIiVDMyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIpOworICAg
IHRlc3RVc2VyUGFzc3dvcmQoIiXwn5KpIiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsK
KyAgICB0ZXN0VXNlclBhc3N3b3JkKHZhbGlkU3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1Iik7Cisg
ICAgdGVzdFVzZXJQYXNzd29yZChyZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CisgICAgdGVz
dFVzZXJQYXNzd29yZChpbnZhbGlkU3Vycm9nYXRlLCByZXBsYWNlbWVudEEsICIlRUYlQkYlQkRB
Iik7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBQYXJzZVJlbGF0aXZlKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGlu
Zy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVu
Y29kaW5nLmNwcAppbmRleCBhMjY4MTZkYTE0OTFmNmUzYjIwNTdjNjZhN2RjYTQ1OWQxMzYxNGQz
Li5lMjYxNzkzMzQyNTIyNDNiYTVmMTQxODBmNzIyNGViNzc1NGRjYTFmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVu
Y29kaW5nLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwogICAg
IGF1dG8gdXJsID0gVVJMKHsgfSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQs
IHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhv
c3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOCw3
ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdAogICAgIGF1dG8gdXJsID0gVVJMKFVS
TCh7IH0sIGJhc2VVUkxTdHJpbmcpLCB1cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29y
ZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwu
aG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396430</attachid>
            <date>2020-04-14 09:49:05 -0700</date>
            <delta_ts>2020-04-17 10:27:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200414094904.patch</filename>
            <type>text/plain</type>
            <size>181128</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkNTQ5ZDE2NGExOTkwNjNmOTY3MzUw
ZDQ2Mzg4ZDk1MTQ2ZWViYTcuLjQxNGE4NWRjYjQ4M2FjMGI4ZWY5ZTRmMDliMWYxNDgwYmFmNzU5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTU3IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpob3N0QW5kUG9ydCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQgdHlwZSBjYXN0LCBub3cK
KyAgICAgICAgdGhhdCBtYWtlU3RyaW5nIGNvcnJlY3RseSBoYW5kbGVzIHVpbnQxNl90IHNpbmNl
IGl0IGlzIG5vIGxvbmdlcgorICAgICAgICB0aGUgc2FtZSB0eXBlIGFzIFVDaGFyLgorICAgICAg
ICAoV1RGOjpVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQgY29uc3QpOiBPcHRpbWl6ZWQgdG8gYWx3
YXlzIGFsbG9jYXRlCisgICAgICAgIHRoZSBzdHJpbmcgaW4gdGhlIHJpZ2h0IHNpemUgcmF0aGVy
IHRoYW4gcmVtb3ZpbmcgY2hhcmFjdGVycyBmcm9tIGl0CisgICAgICAgIGFmdGVyIGNyZWF0aW5n
IGl0LgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZSk6IEFkZGVkLiBGYWN0b3Jl
ZCBvdXQgZnJvbSB0aGUgZnVuY3Rpb24KKyAgICAgICAgYmVsb3cgdG8gbWFrZSBpdCBhIGxpdHRs
ZSBtb3JlIHJlYWRhYmxlLgorICAgICAgICAoV1RGOjpkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9t
UGFyc2VkVVJMKTogQ29udmVydCBhIG51bGwgU3RyaW5nVmlldworICAgICAgICB0byBhIG51bGwg
U3RyaW5nIHJhdGhlciB0aGFuIGFuIGVtcHR5IFN0cmluZywgdXNlIGEgc3RhY2sgYnVmZmVyIGFu
ZAorICAgICAgICB0aGUgaGVscGVyIGZ1bmN0aW9uIGFib3ZlLCBhbmQgYWRkZWQgc29tZSBGSVhN
RSBjb21tZW50cyBhYm91dAorICAgICAgICBlbmNvZGluZyBoYW5kbGluZy4KKyAgICAgICAgKFdU
Rjo6VVJMOjp1c2VyIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5nIGVuY29kZWRVc2VyLgor
ICAgICAgICAoV1RGOjpVUkw6OnBhc3N3b3JkIGNvbnN0KTogU2ltcGxpZmllZCBieSBjYWxsaW5n
IGVuY29kZWRQYXNzd29yZC4KKyAgICAgICAgKFdURjo6VVJMOjplbmNvZGVkVXNlciBjb25zdCk6
IFJldHVybiBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFBhc3N3b3Jk
IGNvbnN0KTogRGl0dG8uIEFsc28gcmVuYW1lZCBmcm9tIGVuY29kZWRQYXNzLgorICAgICAgICAo
V1RGOjpVUkw6OmZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IE1vdmVkIHRvIGhlYWRlciBzbyBp
dCBjYW4KKyAgICAgICAgYmUgaW5saW5lZC4KKyAgICAgICAgKFdURjo6VVJMOjp0cnVuY2F0ZWRG
b3JVc2VBc0Jhc2UgY29uc3QpOiBSZW5hbWVkIGZyb20gYmFzZUFzU3RyaW5nLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgd2l0aCBsb2NhbCBmaWxlIFVSTHMg
YW5kIGl0J3MKKyAgICAgICAgbm90IHBlcmZlY3RseSBjbGVhciB0byBtZSBwcmVjaXNlbHkgd2hh
dCBpdCBpcyBmb3IsIGhlbmNlIHRoZSBuYW1lCisgICAgICAgIGlzIG5vdCBzbyBncmVhdC4KKyAg
ICAgICAgKFdURjo6VVJMOjpmaWxlU3lzdGVtUGF0aCBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQg
Y2hlY2sgZm9yIHZhbGlkaXR5CisgICAgICAgIHNpbmNlIGlzTG9jYWxGaWxlIGRvZXMgdGhhdCBj
aGVjay4gUmVtb3ZlZCB1bm5lZWRlZCB0eXBlY2FzdCBub3cgdGhhdAorICAgICAgICBwYXRoIHJl
dHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuc3VyZURlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cmVnaXN0
ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
cHJvdG9jb2xJc0ludGVybmFsKTogUmV3cm90ZSB0byB0YWtlIGEgU3RyaW5nVmlldy4gQmVmb3Jl
IGl0CisgICAgICAgIHdhcyB3cml0dGVuIGFzIGEgdGVtcGxhdGUgdGhhdCBsb29rZWQgbGlrZSBp
dCBzdXBwb3J0ZWQgY2xhc3NlcyBvdGhlcgorICAgICAgICB0aGFuIFN0cmluZywgYnV0IGFjdHVh
bGx5IHdvdWxkIGNyYXNoIGlmIGNhbGxlZCBvbiBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6
OlVSTDo6cHJvdG9jb2xJcyBjb25zdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgY2FzdCB0
byBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnF1ZXJ5IGNvbnN0KTogUmV0dXJuIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpwYXRoIGNvbnN0KTogUmV0dXJuIGEgU3Ry
aW5nVmlldywgdXNlIHRoZSBwYXRoU3RhcnQKKyAgICAgICAgZnVuY3Rpb24gZm9yIGNsYXJpdHku
CisgICAgICAgIChXVEY6OlVSTDo6c2V0UHJvdG9jb2wpOiBVc2UgYSB0b1N0cmluZ1dpdGhvdXRD
b3B5aW5nIHRvIHNhdmUgc29tZQorICAgICAgICB3b3JrIHdoZW4gbWFraW5nIHRoZSBwcm90b2Nv
bCBjYW5vbmljYWwuIENhbGwgcGFyc2UgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVS
TFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OmNyZWRlbnRpYWxzRW5kIGNvbnN0KTog
QWRkZWQuIEhlbHBlciBmb3IgdmFyaW91cyBmdW5jdGlvbnMKKyAgICAgICAgdGhhdCBtYW5pcHVs
YXRlIHRoZSBjcmVkZW50aWFscyBzZWN0aW9uLgorICAgICAgICAoV1RGOjpVUkw6OnNldEhvc3Qp
OiBUYWtlIFN0cmluZ1ZpZXcuIFN0cmVhbWxpbmVkIHRoZSBjb2RlIGJ5IHVzaW5nCisgICAgICAg
IFN0cmluZ1ZpZXc6OmNvbnRhaW5zLCBieSB1c2luZyBtYWtlU3RyaW5nIHJhdGhlciB0aGFuIFN0
cmluZ0J1aWxkZXIsCisgICAgICAgIGFuZCBieSBjYWxsaW5nIHBhcnNlIGluc3RlYWQgb2YgY3Jl
YXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmVQb3J0KTog
RGVsZXRlZCwgc2luY2Ugc2V0UG9ydCB0YWtlcyBhbiBPcHRpb25hbCBub3cuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UG9ydCk6IFRha2UgT3B0aW9uYWw8dWludDE2X3Q+LiBHb3QgcmlkIG9mIHRo
ZSBjYXN0IHRvCisgICAgICAgIHVuc2lnbmVkIHRoYXQgdXNlZCB0byBiZSBuZWVkZWQgdG8gdXNl
IHVpbnQxNl90IHdpdGggbWFrZVN0cmluZywgYW5kCisgICAgICAgIGNhYWxsIHBhcnNlIGluc3Rl
YWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1v
dmVIb3N0QW5kUG9ydCk6IERlbGV0ZWQuIENhbGxlcnMgY2FuIHBhc3MgYSBudWxsCisgICAgICAg
IFN0cmluZ1ZpZXcgdG8gc2V0SG9zdEFuZFBvcnQgaW5zdGVhZC4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRIb3N0QW5kUG9ydCk6IFRha2UgU3RyaW5nVmlldy4gRG9uJ3QgcmVtb3ZlIHRoZSBvbGQK
KyAgICAgICAgaG9zdCBhbmQgcG9ydCBpbiB0aGUgbm9tcmFsIGNhc2Ugd2hlcmUgd2UgZW5kIHVw
IG92ZXJ3cml0aW5nIHRoZSBlbnRpcmUKKyAgICAgICAgVVJMIGF0IHRoZSBlbmQgb2YgdGhlIGZ1
bmN0aW9uIGFueXdheS4gVXNlIHBhcnNlVUludDE2IGluc3RlYWQgb2YKKyAgICAgICAgdG9JbnRT
dHJpY3QgdG8gY2hlY2sgcG9ydCBudW1iZXIgZm9yIHZhbGlkaXR5LCB3aGljaCBtYWtlcyBzdXJl
IHdlIHdpbGwKKyAgICAgICAgcmVqZWN0IHBvcnQgbnVtYmVycyBsYXJnZXIgdGhhbiA2NTUzNS4g
VXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmdCdWlsZGVyIGFuZCBjYWxs
IHBhcnNlIHJhdGhlciB0aGFuIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChX
VEY6OnBhcnNlKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiBmb3Igd2hlbiB3ZSBjcmVhdGUgYSBu
ZXcgc3RyaW5nCisgICAgICAgIGFuZCB3YW50IHRvIHBhcnNlIGl0IGFzIHRoZSBuZXcgY29udGVu
dHMgb2YgdGhlIFVSTC4gVXNlZCBpbiBhbG1vc3QKKyAgICAgICAgZXZlcnkgc2V0dGVyIGZ1bmN0
aW9uLgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24g
Zm9yIGVmZmljaWVudGx5IHJlbW92aW5nCisgICAgICAgIGEgcGllY2Ugb2YgdGhlIFVSTCBzdHJp
bmcgYW5kIHJlLXBhcnNpbmcuIFVzZWQgaW4gbWFueSBzZXR0ZXIgZnVuY3Rpb25zLgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFVzZXIpOiBUYWtlIFN0cmluZ1ZpZXcuIFVzZSBtYWtlU3RyaW5nIGlu
c3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNlIGFuZCByZW1vdmUgaW5z
dGVhZCBvZiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAgICAoV1RGOjpVUkw6OnNl
dFBhc3N3b3JkKTogUmVuYW1lZCBmcm9tIHNldFBhc3MuIFRha2UgU3RyaW5nVmlldy4KKyAgICAg
ICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLCBhbmQgcGFyc2UgYW5k
IHJlbW92ZSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisg
ICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlQ3JlZGllbnRpYWxzKTogQWRkZWQuIEVmZmljaWVudGx5
IHJlbW92ZXMgYm90aCB0aGUKKyAgICAgICAgdXNlciBuYW1lIGFuZCBwYXNzd29yZCBpZiBlaXRo
ZXIgaXMgcHJlc2VudC4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIp
OiBVc2UgcGFyc2UgaW5zdGVhZCBvZiBjcmVhdGluZworICAgICAgICBhIFVSTCBwYXJzZXIgaGVy
ZS4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIpOiBSZW1vdmVk
IHVubmVjZXNzYXJ5IGNoZWNrcyBmb3IKKyAgICAgICAgdGhpbmdzIGFscmVhZHkgb3B0aW1pemVk
IGJ5IFN0cmluZzo6bGVmdC4gQ291bGQgbGF0ZXIgY29uc2lkZXIgbWVyZ2luZworICAgICAgICB0
aGlzIGluIHdpdGggc2V0RnJhZ21lbnRJZGVudGlmaWVyLCB1c2luZyBhIG51bGwgdnMuIGVtcHR5
IGRpc3RpbmN0aW9uLAorICAgICAgICBidXQgbm90IGRvaW5nIHRoYXQgZm9yIG5vdy4KKyAgICAg
ICAgKFdURjo6VVJMOjpzZXRRdWVyeSk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6
VVJMOjpzZXRQYXRoKTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpzdHJpbmdXaXRo
b3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpzdHJp
bmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXVEY6OmVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIpOiBTaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uIGJ5
CisgICAgICAgIHVzaW5nIHN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIuCisgICAgICAg
IChXVEY6OmVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6aG9zdHNBcmVFcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6aXNNYXRj
aGluZ0RvbWFpbiBjb25zdCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6cHJvdG9j
b2xJcyk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbElzKTog
TW92ZWQgdG8gaW5saW5lIGluIHRoZSBoZWFkZXIuCisgICAgICAgIChXVEY6OlVSTDo6c3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyIGNvbnN0KTogUmV3cml0ZSBmb3IgZWZmaWNpZW5jeS4KKyAgICAg
ICAgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQpOiBNb3ZlZCB0byBpbmxpbmUgaW4gdGhlIGhl
YWRlci4KKyAgICAgICAgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSk6IFRha2UgU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6YWJvdXRCbGFua1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisg
ICAgICAgIChXVEY6OmFib3V0U3JjRG9jVVJMKTogVXNlIEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAg
KFdURjo6cG9ydEFsbG93ZWQpOiBSZW1vdmVkIDY1NTM1IGFzIGEgYmxvY2tlZCBwb3J0OyB3YXNu
J3QgbmVlZGVkLgorICAgICAgICAoV1RGOjptaW1lVHlwZUZyb21EYXRhVVJMKTogVGFrZSBTdHJp
bmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCBjb25zdCk6IFR3ZWFrZWQgc3R5bGUuCisgICAgICAgIChXVEY6OlVSTDo6ZmFrZVVSTFdpdGhS
ZWxhdGl2ZVBhcnQpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aCk6IFRha2UgU3RyaW5nVmlldy4uCisgICAgICAgIChXVEY6OlVS
TDo6cXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyayBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
V1RGOjpVUkw6OmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbiBjb25zdCk6
IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkw6Omhvc3RJc0lQQWRkcmVzcyk6IFR3ZWFrIGNvZGlu
ZyBzdHlsZS4KKworICAgICAgICAqIHd0Zi9VUkwuaDogTWFkZSBVUkxUZXh0RW5jb2RpbmcgZGVz
dHJ1Y3RvciBwcm90ZWN0ZWQuIFJlbW92ZWQKKyAgICAgICAgdW51c2VkIGZvcndhcmQgZGVjbGFy
YXRpb24gb2YgVVJMSGFzaCBzdHJ1Y3R1cmUuIFVzZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyAgICAg
ICAgb24gZnVuY3Rpb25zIGZyb20gVVJMIHJhdGhlciB0aGFuIG9uIHRoZSB3aG9sZSBjbGFzcywg
c2luY2UgdGhlIHN0eWxlCisgICAgICAgIGNoZWNrZXIgdG9sZCBtZSB0byBkbyB0aGF0LiBNb3Zl
ZCBzb21lIGlubGluZSBmdW5jdGlvbiBib2RpZXMgb3V0IG9mCisgICAgICAgIHRoZSBjbGFzcyBk
ZWZpbml0aW9uIGZvciBjbGFyaXR5IGFuZCB0byBrZWVwIHRoZSBzdHlsZSBjaGVja2VyIGhhcHB5
LgorICAgICAgICBVcGRhdGVkIG1hbnkgYXJndWVtbnRzIGZyb20gU3RyaW5nIHRvIFN0cmluZ1Zp
ZXcgYW5kIHJldHVybiB2YWx1ZXMgZm9yCisgICAgICAgIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTCB0
byBTdHJpbmdWaWV3LiBSZW1vdmVkIHNvbWUgdW51c2VkIGZ1bmN0aW9ucyBhbmQKKyAgICAgICAg
c29tZSBvYnNvbGV0ZSBjb21tZW50cy4KKworICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5j
cHA6CisgICAgICAgIChXVEY6OmlzQ0ZVUkxTYW1lT3JpZ2luKTogVXNlIGhhc0NyZWRlbnRpYWxz
LgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdWaWV3OjplbmRzV2l0aCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RGOjpwYXJzZVVJbnQx
Nik6IEFkZGVkLgorICAgICAgICAoV1RGOjplcXVhbElnbm9yaW5nTnVsbGl0eSk6IEFkZGVkLiBD
dXJyZW50bHkgdGhlIHNhbWUgYXMgZXF1YWwsIGJ1dAorICAgICAgICBjb3VsZCBiZSBkaWZmZXJu
ZXQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6Y29udGFpbnMgY29u
c3QpOiBBZGRlZCBvdmVybG9hZCB0aGF0IHRha2VzIGEKKyAgICAgICAgY29uc3QgY2hhciogc28g
dGhlIGNhbGwgc2l0ZSBkb2Vzbid0IGhhdmUgdG8gY29udmVydCBpdCB0byBhIFN0cmluZ1ZpZXcu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhZGRp
dGlvbnMgYWJvdmUuCisgICAgICAgIEFsc28gYWRkZWQgYSBkZWZhdWx0IHN0YXJ0IG9mIDAgdG8g
dGhlIGZpbmQgZnVuY3Rpb24uCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgor
ICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4
cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50LgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KTog
RGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QpOiBEaXR0by4KKyAgICAgICAg
KFdURjo6Y2hhcmFjdGVyc1RvSW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNU
b1VJbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjQpOiBEaXR0by4K
KyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0KTogRGl0dG8uCisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFB0cik6IERpdHRvLgorCiAyMDIwLTA0LTEzICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI2MDA1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjODBmYTVjZmZmNDY1YWExNWNhZjNkMjgzODU4NGUy
NjdmM2I3NTNjLi44ZjllNDg5NmQwMjYxNGQ2NjNkNTM4NjJjNjNlYWJjNTQ1NDg4Y2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTY2IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aCk6IFVzZSBoYXND
cmVkZW50aWFscy4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QpOiBVc2UgaGFzQ3JlZGVu
dGlhbHMuCisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRp
Zmllcik6IFVzZSBoYXNDcmVkZW50aWFscy4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWW91
VHViZVVSTCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OnF1ZXJ5S2V5c0Fu
ZFZhbHVlcyk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NBbmRD
cmVhdGVZb3VUdWJlVVJMKTogVXNlIGF1dG8gc2luY2UgVVJMIHBpZWNlcyBhcmUKKyAgICAgICAg
bm93IHJldHVybmVkIGFzIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwpOgorICAgICAgICBVc2Ug
U3RyaW5nVmlldyBhbmQgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWlsZGVyLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZXNvdXJjZU5hbWUpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9u
TWFyay4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRl
cm5hbExpbmtFbGVtZW50IGNvbnN0KToKKyAgICAgICAgVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVS
TCk6IFVzZSBzZXRIb3N0QW5kUG9ydC4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayk6IFVwZGF0
ZSBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBTdHJpbmdWaWV3Lgor
CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6IEFkZGVkIGEgY29tbWVudC4KKworICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKTogVXBkYXRlIHNpbmNlCisg
ICAgICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LiBBbHNvIGdvdCBy
aWQgb2Ygc29tZSBzdHJhbmdlCisgICAgICAgIHVzZSBvZiBBdG9tU3RyaW5nIHRoYXQgd2FzIG5v
dCBuZWNlc3NhcnkgYW5kIHVzZWQgV1RGTW92ZSBtb3JlLgorCisgICAgICAgICogZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9Q
YXN0ZWJvYXJkKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVy
bnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50
VGl0bGVGb3JEaXNwbGF5IGNvbnN0KToKKyAgICAgICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBv
ZiBTdHJpbmdCdWlsZGVyLCBhbmQgU3RyaW5nVmlldyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmlu
ZyBmb3IgbmFtZSBhbmQgZXh0ZW5zaW9uIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JU
eXBlKTogVXBkYXRlIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBT
dHJpbmdWaWV3LgorCisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRz
KTogVXBkYXRlIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3Ry
aW5nVmlldy4KKworICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDogQ2hhbmdlZCBzZXRIb3N0IHRv
IHRha2UgYSBTdHJpbmdWaWV3LCBjaGFuZ2VkCisgICAgICAgIHZhcmlvdXMgb3RoZXIgZnVuY3Rp
b25zIHRvIGNhbGwgdG9TdHJpbmcsIHNpbmNlIHRoZSB1bmRlcmx5aW5nIFVSTAorICAgICAgICBm
dW5jdGlvbiBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuIFVwZGF0ZWQgbmFtZXMgc2luY2UgInBh
c3MiIGlzIG5vdworICAgICAgICAicGFzc3dvcmQiLgorICAgICAgICAoV2ViQ29yZTo6Y291bnRB
U0NJSURpZ2l0cyk6IEFkZGVkLiBSZXBsYWNlcyB1bnVzdWFsIGZ1bmN0aW9uCisgICAgICAgIG5h
bWVkIHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlvbiBiZWNhdXNlIHdlIGNhbiB1c2UgU3RyaW5n
VmlldyBub3cKKyAgICAgICAgYW5kIHNvIGRvbid0IG5lZWQgc3VjaCBhbiB1bnVzdWFsIGZ1bmN0
aW9uLgorCisgICAgICAgICogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QpOiBV
c2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgIEFsc28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSB1c2Ug
b2YgQVNDSUlMaXRlcmFsIHRoYXQgaHVydHMgcGVyZm9ybWFuY2UKKyAgICAgICAgYSB0aW55IGJp
dC4KKworICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dmFsaWRhdGVDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJMKTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKworICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlz
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VS
TCk6IFVwZGF0ZSBzaW5jZSBxdWVyeSByZXR1cm5zCisgICAgICAgIFN0cmluZ1ZpZXcuCisKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwpOiBVc2UgZmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5p
ZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYW5pZmVzdFBhdGgpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYW5pZmVzdCk6IFVzZSBTdHJp
bmdWaWV3LgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbiBjb25zdCk6
IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZlciByZXR1cm5zIGEgU3RyaW5n
Vmlldy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElk
ZW50aWZpZXJGcm9tUmVxdWVzdFVSTCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJu
YWwpOiBVcGRhdGVkIGxvZyBtZXNzYWdlLgorCisgICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQpOiBVcGRhdGVkIGZv
ciBVUkw6OnBhc3N3b3JkIG5hbWUgY2hhbmdlCisgICAgICAgIGFuZCB0byB1c2UgdGhlIG5ldyBz
dHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllciByYXRoZXIgdGhhbiB0aGUKKyAg
ICAgICAgb2xkIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50LgorCisgICAgICAgICogcGFn
ZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aHJlZiBjb25zdCk6
IFVzZSByZW1vdmVDcmVkZW50aWFscy4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0
IGNvbnN0KTogU3RyZWFtbGluZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cGF0aG5h
bWUgY29uc3QpOiBVc2UgYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRp
b246OnNlYXJjaCBjb25zdCk6IFVzZSBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246Omhhc2ggY29uc3QpOiBVc2UgZnJhZ21lbnRJZGVudGlm
aWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNl
dFBvcnQpOiBVc2UgcGFyc2VVSW50MTYuCisKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJM
UGF0dGVybi5jcHA6IENvZGluZyBzdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIFVzZSBjb250YWlucyBp
bnN0ZWFkIG9mIHJldmVyc2VGaW5kIHRvIGNoZWNrIGZvciBhIHBlcmlvZCBpbiB0aGUgZmlsZW5h
bWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhD
b21wb25lbnQgaXMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKTogVXBkYXRlZCB0byB1c2UgbWFrZVN0cmlu
ZyBzaW5jZQorICAgICAgICBzZXRQcm90b2NvbCB0YWtlcyBhIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDogUmVuYW1lZCBt
X3Bhc3MgdG8gbV9wYXNzd29yZAorICAgICAgICBhbmQgY2FsbCBwYXNzd29yZCBpbnN0ZWFkIG9m
IHBhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6cmVtb3ZlQ3JlZGVu
dGlhbHMpOiBVc2UgcmVtb3ZlQ3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFBy
b3h5U2V0dGluZ3M6OnNldFVzZXJQYXNzKTogVXBkYXRlZCBmb3Igc2V0UGFzc3dvcmQgbmFtZSBj
aGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6cGFzc3dvcmQgY29uc3Qp
OiBVcGRhdGVkIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbik6IFVwZGF0ZWQgZm9yIG1fcGFzc3dv
cmQKKyAgICAgICAgYW5kIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRp
b24pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMKTogVXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBv
bmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1Q
YXRoRnJvbVVybE9yVGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlclN0YXRlOjpjcmVhdGVGaWx0ZXJPcGVy
YXRpb25zKTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJu
cyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpwb3J0IGNvbnN0KTogU3RyZWFtbGlu
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cGF0aG5hbWUgY29uc3QpOiBV
c2UgYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnNl
YXJjaCBjb25zdCk6IFVzZSBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTG9jYXRpb246Omhhc2ggY29uc3QpOiBVc2UgZnJhZ21lbnRJZGVudGlm
aWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSk6Cisg
ICAgICAgIFVwZGF0ZWQgZm9yIGhhc0ZyYWdtZW50SWRlbnRpZmllciBuYW1lIGNoYW5nZS4KKwor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6b3Blbik6IFVwZGF0ZWQgZm9yIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdlLgor
CiAyMDIwLTA0LTE0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYiBBbmltYXRpb25zXSBTdG9yZSBhbiBFbGVtZW50IC8gUHNldWRvSWQgcGFpciB0byBk
ZWZpbmUgdGhlIEtleWZyYW1lRWZmZWN0IHRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NjExNWQ3ZmI2YmRi
ZjUzZmU4NTgwZWY2MTk4YzM4ZDM0YTJkZGJlLi40ZjdmYTc0MjQ1ZTBlYmMzYTM3NTkwYjhkZGNm
YzVlZDM4YjhjODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTA0LTEzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3Ry
aW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2Vy
OjpjaGVja1JlZGlyZWN0aW9uKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgor
ICAgICAgICBSZW1vdmUgdXNlIG9mIEFTQ0lJTGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29h
KTogVXBkYXRlZAorICAgICAgICBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6
IERpdHRvLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6
VVJMOjpob3N0IGNvbnN0KTogUmVtb3ZlZCB2YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6Omhvc3QK
KyAgICAgICAgcmV0dXJucyBudWxsIGlmIHRoZSBVUkwgaXMgaW52YWxpZC4KKyAgICAgICAgKEFQ
STo6VVJMOjpwcm90b2NvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6OnBhdGgg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFQSTo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBjb25z
dCk6IERpdHRvLiBBbHNvIGFkZGVkIHRvU3RyaW5nCisgICAgICAgIHNpbmNlIFdURjo6VVJMOjps
YXN0UGF0aENvbXBvbmVudCBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRGaW5pc2gpOiBVc2UgaGFzRnJhZ21lbnRJZGVudGlmaWVyLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2spOgorICAg
ICAgICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCBh
bmQKKyAgICAgICAgdXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3Ry
aW5nVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnBhdGhFeHRlbnNpb24pOiBVcGRhdGVkIHNpbmNlIGxhc3RQ
YXRoQ29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LiBSZWZhY3RvcmVkIGEg
bGl0dGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAg
ICAgIFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCByYXRoZXIgdGhhbiBob3N0c0FyZUVxdWFsLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1Bh
Z2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwpOgorICAgICAgICBVc2UgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6
CisgICAgICAgIERvbid0IHVzZSBBU0NJSUxpdGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNldFByb3Rv
Y29sLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
OjpnZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5zdGFs
bFBERkRvY3VtZW50KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIg
cmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZAorICAgICAgICB0aGUg
aW1wbGVtZW50YXRpb24gYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGxh
c3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCiAyMDIwLTA0LTE0ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgWW91VHViZSBz
b21ldGltZXMgbmF2aWdhdGVzIHVuZXhwZWN0ZWRseSB3aGVuIGludm9raW5nIGEgY29udGV4dCBt
ZW51IG9uIGEgdmlkZW8gbGluay4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOTg3
ZDU1NjMwZWZhZDQ1ZmM0N2ZlZjc1ZTI1ZDE0MDE2YTVlZDg3YS4uNjg3Yjg1MjE2ZTY1ZjIwMDRi
NjM4NWI5YmZkYTZmNjA0Y2E4YWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJz
dHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChzaG91bGRUcnlBcHBMaW5rKTogQ29tcGFyZSBob3N0cyB3aXRoID09IHJhdGhlciB0aGFu
IHVzaW5nIGhvc3RzQXJlRXF1YWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTp3aXRoUmVs
YXRpdmVVUkxQYXJ0OmFuZE1JTUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gQWxzbyB1c2UgUmV0YWluUHRy
CisgICAgICAgIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgY2FsbCB0byByZWxlYXNlLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dl
Yl9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZFR5cGU6aW1hZ2VNSU1F
VHlwZTpdKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCB0
YWtlcyBhIFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24KKyAgICAgICAgZGlyZWN0bHkgZnJvbSBO
U1N0cmluZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3Ry
aW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0
aW9uQ29udHJvbGxlcl0pOiBVcGRhdGUKKyAgICAgICAgc2luY2UgcHJvdG9jb2xJcyB0YWtlcyBh
IFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24gZGlyZWN0bHkgZnJvbQorICAgICAgICBOU1N0cmlu
ZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3RyaW5nLgor
CiAyMDIwLTA0LTEzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyNTk4NDMpOiAiTWlzc2luZyBQbHVnLUluIiB3aGVuIGRyYWdn
aW5nIGFuIGltYWdlIGludG8gTWFpbCBDb21wb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggODA0YmU1YTQ0YWNmNDRiZjdmNWQ2ZmM2YTUwOWQ3YzA0YjMwNmRjOC4uM2M4NWE1ZTUy
ZTcxZDYzODNjYTBmNDliMmMwMGEzYzM5MTU5ZmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVy
bmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBT
dHJlYW1saW5lZAorICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gYSBiaXQuCisKIDIwMjAtMDQt
MDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3VsZCBm
aW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKaW5kZXggMmM1MDRiY2RhOGJkMzJiNzhiMzk0YWQyMmYwNzkxMmE4MzIxMDFkNy4uMmFhNWUw
OGZiMTA3YzNiMWI1MzQ2Y2MzODRlN2NhZjgwMjMwNzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI2ICs0
MiwxNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBD
aGFyQnVmZmVyOwotdHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7Ci0KLXN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8v
IENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBz
b3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11
c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRo
ZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRl
IHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNoYXIqIGRlc3QpCisvLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFz
c3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgorLy8gVGhlIGRlc3Rp
bmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBh
bGxvd2VkIGluIHRoZQorLy8gc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0
byBudWxsLXRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorc3RhdGljIHZvaWQgY29w
eUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0aW5hdGlvbikKIHsKLSAgICBp
ZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICBjb25zdCBVQ2hh
ciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7Cisg
ICAgICAgIGF1dG8gc291cmNlID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7IGkr
KykKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc291cmNl
W2ldKTsKICAgICB9CiB9CiAKQEAgLTgzLDE2ICs3NCwxMyBAQCB2b2lkIFVSTDo6aW52YWxpZGF0
ZSgpCiAKIFVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwg
Y29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKIHsKLSAgICBVUkxQYXJzZXIgcGFyc2Vy
KHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgKnRoaXMgPSBVUkxQYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKS5yZXN1bHQo
KTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKK3N0YXRpYyBi
b29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICAvLyBCcm93c2Vy
cyBpZ25vcmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sCi0gICAgLy8g
Y2hhcmFjdGVycyBmcm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNoYXIg
aGVyZQotICAgIC8vIHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250cm9s
IGNoYXJhY3RlcnMuCi0gICAgcmV0dXJuIGMgPD0gJyAnOworICAgIC8vIElnbm9yZSBsZWFkaW5n
L3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1cm4g
Y2hhcmFjdGVyIDw9ICcgJzsKIH0KIAogVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAg
LTEwMiwxNDcgKzkwLDE0OCBAQCBVUkwgVVJMOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QK
K1N0cmluZ1ZpZXcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFo
YXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVuZCAtIDE7CiAgICAgaWYgKG1fc3RyaW5nW2Vu
ZF0gPT0gJy8nKQogICAgICAgICAtLWVuZDsKIAogICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5n
LnJldmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIGlmIChzdGFydCA8IHBhdGhTdGFydCgpKQorICAgICAgICByZXR1cm4geyB9OwogICAg
ICsrc3RhcnQ7CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBz
dGFydCArIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0ICsgMSk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNv
bnN0CiB7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKIH0K
IAogU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogeworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm4geyB9OworCiAgICAgdW5zaWduZWQgc3RhcnQgPSBob3N0U3RhcnQoKTsK
ICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hvc3RF
bmQgLSBzdGFydCk7CiB9CiAKIE9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAog
ewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51bWJlcjsKLSAgICBpZiAobV9z
dHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
bV9zdHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEs
ICZvayk7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0g
MSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4g
bnVtYmVyOworICAgIHJldHVybiBtX3BvcnRMZW5ndGggPyBwYXJzZVVJbnQxNihTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDog
V1RGOjpudWxsb3B0OwogfQogCiBTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CiB7CiAg
ICAgaWYgKGF1dG8gcG9ydCA9IHRoaXMtPnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoaG9zdCgpLCAnOicsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3J0LnZhbHVlKCkpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoaG9zdCgpLCAnOicsICpwb3J0KTsKICAgICByZXR1cm4g
aG9zdCgpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQo
KSBjb25zdAogewotICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKKyAgICBpZiAoIWhhc0NyZWRlbnRpYWxzKCkpCisgICAg
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoMCwgcGF0aFN0YXJ0KCkpOwogCi0gICAgaWYg
KG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCA+IDApIHsKLSAgICAgICAgY29uc3QgaW50IGFs
bG93Rm9yVHJhaWxpbmdBdFNpZ24gPSAxOwotICAgICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0
YXJ0LCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWdu
KTsKLSAgICB9CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhob3N0U3RhcnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSkK
KyAgICApOworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKK3N0YXRpYyBPcHRpb25hbDxMQ2hhcj4g
ZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoaW5kZXggKyAzID4gbGVuZ3RoIHx8IGlucHV0W2lu
ZGV4XSAhPSAnJScpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBkaWdp
dDEgPSBpbnB1dFtpbmRleCArIDFdOworICAgIGF1dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAy
XTsKKyAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChkaWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQo
ZGlnaXQyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdG9BU0NJ
SUhleFZhbHVlKGRpZ2l0MSwgZGlnaXQyKTsKIH0KIAogc3RhdGljIFN0cmluZyBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcgaW5wdXQpCiB7Ci0gICAgYXV0byBp
bnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmICghaW5wdXRMZW5ndGgpCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIFZlY3RvcjxMQ2hhcj4gcGVyY2VudERlY29k
ZWQ7Ci0gICAgcGVyY2VudERlY29kZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dExlbmd0
aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgaWYgKGlucHV0W2ldID09ICclJwotICAgICAgICAgICAgJiYgaW5wdXRMZW5ndGggPiAy
Ci0gICAgICAgICAgICAmJiBpIDwgaW5wdXRMZW5ndGggLSAyCi0gICAgICAgICAgICAmJiBpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0
KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFw
cGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsKLSAgICAg
ICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlCisgICAgQVNTRVJUKGlucHV0LmlzQWxsQVND
SUkoKSk7CisKKyAgICBhdXRvIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOworICAgIGlmIChsZW5n
dGggPCAzIHx8ICFpbnB1dC5jb250YWlucygnJScpKQorICAgICAgICByZXR1cm4gaW5wdXQudG9T
dHJpbmcoKTsKKworICAgIFZlY3RvcjxMQ2hhciwgNTEyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBw
ZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7CisgICAgICAgIGlmIChhdXRvIGRlY29kZWRD
aGFyYWN0ZXIgPSBkZWNvZGVFc2NhcGVTZXF1ZW5jZShpbnB1dCwgaSwgbGVuZ3RoKSkgeworICAg
ICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKCpkZWNvZGVkQ2hhcmFjdGVy
KTsKKyAgICAgICAgICAgIGkgKz0gMzsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBl
cmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZChpbnB1dFtpXSk7CisgICAgICAgICAgICArK2k7
CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBGSVhNRTogSXMgVVRGLTggYWx3YXlzIHRoZSBj
b3JyZWN0IGVuY29kaW5nPworICAgIC8vIEZJWE1FOiBUaGlzIHJldHVybnMgYSBudWxsIHN0cmlu
ZyB3aGVuIHdlIGVuY291bnRlciBhbiBpbnZhbGlkIFVURi04IHNlcXVlbmNlLiBJcyB0aGF0IE9L
PwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVy
Y2VudERlY29kZWQuc2l6ZSgpKTsKIH0KIAogU3RyaW5nIFVSTDo6dXNlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkp
OworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRV
c2VyKCkpOwogfQogCi1TdHJpbmcgVVJMOjpwYXNzKCkgY29uc3QKK1N0cmluZyBVUkw6OnBhc3N3
b3JkKCkgY29uc3QKIHsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNG
cm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAx
LCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSkpOworICAgIHJldHVybiBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRQYXNzd29yZCgpKTsKIH0KIAotU3RyaW5n
IFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmVuY29kZWRVc2VyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3Vz
ZXJFbmQgLSBtX3VzZXJTdGFydCk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpOwogfQogCi1TdHJp
bmcgVVJMOjplbmNvZGVkUGFzcygpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFBhc3N3
b3JkKCkgY29uc3QKIHsKICAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVu
ZCAtIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2Vy
RW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwogfQogCi1TdHJpbmcgVVJM
OjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmZyYWdtZW50SWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyht
X3F1ZXJ5RW5kICsgMSk7Ci19CisgICAgICAgIHJldHVybiB7IH07CiAKLWJvb2wgVVJMOjpoYXNG
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9z
dHJpbmcubGVuZ3RoKCkgIT0gbV9xdWVyeUVuZDsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxKTsKIH0KIAotU3RyaW5nIFVSTDo6YmFzZUFz
U3RyaW5nKCkgY29uc3QKK1VSTCBVUkw6OnRydW5jYXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIHJl
dHVybiBVUkwoVVJMKCksIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpKTsKIH0K
IAogI2lmICFVU0UoQ0YpCiAKIFN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsK
LSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIGlmICghaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXco
cGF0aCgpKSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwo
cGF0aCgpKTsKIH0KIAogI2VuZGlmCiAKLSNpZmRlZiBOREVCVUcKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKIAogc3RhdGljIGlubGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcp
CiB7CkBAIC0zMTQsNyArMzAzLDcgQEAgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWlu
dDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKIAogYm9vbCBVUkw6OnByb3RvY29sSXMo
Y29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0CiB7Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldyB7IHByb3RvY29sIH0pOworICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3Rv
Y29sKTsKIAogICAgIC8vIEphdmFTY3JpcHQgVVJMcyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJl
IGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRlY2lkZXMgdGhleSBhcmUgaW52YWxpZC4KICAgICAvLyBU
aGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGlu
c3RlYWQuIApAQCAtMzQ5LDczICszMzgsNjUgQEAgYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5n
VmlldyBwcm90b2NvbCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFVSTDo6
cXVlcnkoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OnF1ZXJ5KCkgY29uc3QKIHsKICAgICBpZiAo
bV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5k
ICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorICAgIHJldHVybiBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3Bh
dGhFbmQgKyAxKSk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpwYXRoKCkgY29uc3QKIHsKLSAgICB1
bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBT
dHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVu
ZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1
cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpLCBtX3BhdGhFbmQg
LSBwYXRoU3RhcnQoKSk7CiB9CiAKLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHMpCitib29sIFVSTDo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyBuZXdQcm90b2NvbCkKIHsKICAg
ICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzon
LgotICAgIHNpemVfdCBzZXBhcmF0b3JQb3NpdGlvbiA9IHMuZmluZCgnOicpOwotICAgIFN0cmlu
ZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKLSAgICBh
dXRvIGNhbm9uaWNhbGl6ZWQgPSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5l
d1Byb3RvY29sKTsKLSAgICBpZiAoIWNhbm9uaWNhbGl6ZWQpCisgICAgYXV0byBuZXdQcm90b2Nv
bFByZWZpeCA9IG5ld1Byb3RvY29sLnN1YnN0cmluZygwLCBuZXdQcm90b2NvbC5maW5kKCc6Jykp
OworICAgIGF1dG8gbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbFByZWZpeC50b1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkpOworICAgIGlmICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3Rv
Y29sQ2Fub25pY2FsaXplZCwgJzonLCBtX3N0cmluZykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBpZiAoKG1fcGFzc3dvcmRFbmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgp
KSAmJiAqY2Fub25pY2FsaXplZCA9PSAiZmlsZSIpCisgICAgaWYgKChtX3Bhc3N3b3JkRW5kICE9
IG1fdXNlclN0YXJ0IHx8IHBvcnQoKSkgJiYgKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9PSAi
ZmlsZSIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGlzTG9jYWxGaWxlKCkgJiYg
aG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3Nj
aGVtZUVuZCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtl
U3RyaW5nKCpuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJv
b2wgaXNBbGxBU0NJSShTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJp
dCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwotfQotICAgIAogLy8g
QXBwZW5kcyB0aGUgcHVueWNvZGVkIGhvc3RuYW1lIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHN0
cmluZyBhbmQgbGVuZ3RoIHRvCiAvLyB0aGUgb3V0cHV0IGJ1ZmZlci4gVGhlIHJlc3VsdCB3aWxs
IG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQuCiAvLyBSZXR1cm4gdmFsdWUgb2YgZmFsc2UgbWVhbnMg
ZXJyb3IgaW4gZW5jb2RpbmcuCi1zdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVUNo
YXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgYm9vbCBhcHBlbmRF
bmNvZGVkSG9zdG5hbWUoVmVjdG9yPFVDaGFyLCA1MTI+JiBidWZmZXIsIFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5j
b2RlZCBuYW1lLgogICAgIC8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdv
bid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KICAgICBj
b25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7Ci0gICAgCi0gICAgaWYg
KHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3Ry
aW5nKSkgeworCisgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3Ro
IHx8IHN0cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5n
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIAorCiAgICAgVUNoYXIgaG9zdG5h
bWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJMZW5ndGhdOwogICAgIFVFcnJvckNvZGUgZXJyb3IgPSBV
X1pFUk9fRVJST1I7CiAgICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5G
T19JTklUSUFMSVpFUjsKICAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSB1aWRu
YV9uYW1lVG9BU0NJSSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29k
ZXIoKSwKICAgICAgICAgc3RyaW5nLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVu
Z3RoKCksIGhvc3RuYW1lQnVmZmVyLCBob3N0bmFtZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdE
ZXRhaWxzLCAmZXJyb3IpOwotICAgIAorCiAgICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXBy
b2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgewogICAgICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1l
QnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC00MjgsMTAxICs0MDksODkgQEAgdW5zaWduZWQgVVJMOjpob3N0U3RhcnQoKSBjb25zdAogICAg
IHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDog
bV9wYXNzd29yZEVuZCArIDE7CiB9CiAKLXZvaWQgVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYg
cykKK3Vuc2lnbmVkIFVSTDo6Y3JlZGVudGlhbHNFbmQoKSBjb25zdAoreworICAgIC8vIEluY2x1
ZGUgJ0AnIHRvbyBpZiB3ZSBoYXZlIGl0LgorICAgIHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRF
bmQ7CisgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisg
ICAgICAgIGVuZCArPSAxOworICAgIHJldHVybiBlbmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0
KFN0cmluZ1ZpZXcgbmV3SG9zdCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBjb2xvbkluZGV4ID0gcy5maW5kKCc6Jyk7Ci0gICAgaWYgKGNvbG9u
SW5kZXggIT0gbm90Rm91bmQpCisgICAgaWYgKG5ld0hvc3QuY29udGFpbnMoJzonKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgVmVjdG9yPFVD
aGFyLCA1MTI+IGVuY29kZWRIb3N0TmFtZTsKKyAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFt
ZShlbmNvZGVkSG9zdE5hbWUsIG5ld0hvc3QpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
Ym9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0gICAgCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAo
c2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5j
b2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0
cmluZyhtX2hvc3RFbmQpKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmlu
ZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KIAotdm9pZCBVUkw6OnJlbW92
ZVBvcnQoKQotewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9o
b3N0RW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNo
U2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2Uo
bWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChob3N0U3RhcnQo
KSksCisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgIFN0cmlu
Z1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisg
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQpCisgICAgKSk7
CiB9CiAKLXZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCit2b2lkIFVSTDo6c2V0
UG9ydChPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBjb2xvbk5lZWRlZCA9ICFtX3BvcnRMZW5ndGg7Ci0g
ICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0
RW5kICsgMSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChwb3J0U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0K
LQotdm9pZCBVUkw6OnJlbW92ZUhvc3RBbmRQb3J0KCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAgcmVtb3ZlKG1faG9zdEVuZCwgbV9wb3J0TGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghaG9zdCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
c2V0SG9zdCh7IH0pOwotICAgIHJlbW92ZVBvcnQoKTsKKyAgICB9CisKKyAgICBwYXJzZShtYWtl
U3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksCisg
ICAgICAgICc6JywKKyAgICAgICAgKnBvcnQsCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAgICApKTsKIH0KIAotdm9pZCBVUkw6OnNldEhvc3RB
bmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCit2b2lkIFVSTDo6c2V0SG9zdEFuZFBv
cnQoU3RyaW5nVmlldyBob3N0QW5kUG9ydCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU3RyaW5nVmlldyBob3N0TmFtZShob3N0QW5kUG9ydCk7Ci0gICAg
U3RyaW5nVmlldyBwb3J0OwotICAgIAorICAgIGF1dG8gaG9zdE5hbWUgPSBob3N0QW5kUG9ydDsK
KyAgICBTdHJpbmdWaWV3IHBvcnRTdHJpbmc7CiAgICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5h
bWUuZmluZCgnOicpOwogICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
IHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29s
IG9rOwotICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAg
ICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBo
b3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICAgICAgcG9y
dFN0cmluZyA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7CisgICAgICAgIGlm
IChwYXJzZVVJbnQxNihwb3J0U3RyaW5nKSkKKyAgICAgICAgICAgIGhvc3ROYW1lID0gaG9zdE5h
bWUuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGhvc3ROYW1lID0geyB9OworICAgICAgICAgICAgcG9ydFN0cmluZyA9IHsgfTsKKyAgICAgICAg
fQogICAgIH0KLQotICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpCisgICAgaWYgKGhvc3ROYW1l
LmlzRW1wdHkoKSkgeworICAgICAgICByZW1vdmUoaG9zdFN0YXJ0KCksIHBhdGhTdGFydCgpIC0g
aG9zdFN0YXJ0KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgVUNoYXJCdWZmZXIg
ZW5jb2RlZEhvc3ROYW1lOworICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7
CiAgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFt
ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNl
clN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQo
aG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5j
b2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICgh
cG9ydC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7
Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7CisgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3Rh
cnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQoaG9zdFN0YXJ0KCkpLAorICAgICAgICBzbGFzaFNsYXNo
TmVlZGVkID8gIi8vIiA6ICIiLAorICAgICAgICBTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5k
YXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpLAorICAgICAgICBwb3J0U3RyaW5nLmlzRW1w
dHkoKSA/ICIiIDogIjoiLAorICAgICAgICBwb3J0U3RyaW5nLAorICAgICAgICBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0KCkpCisgICAgKSk7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgq
c2hvdWxkRW5jb2RlKShVQ2hhcikpCkBAIC01NTEsODEgKzUyMCw4OSBAQCBzdGF0aWMgU3RyaW5n
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2woKnNob3Vs
ZEVuY29kZSkoVQogICAgIHJldHVybiBpbnB1dDsKIH0KIAotdm9pZCBVUkw6OnNldFVzZXIoY29u
c3QgU3RyaW5nJiB1c2VyKQordm9pZCBVUkw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewotICAgIGlmICghbV9pc1ZhbGlkKQorICAgICp0aGlzID0gVVJMUGFyc2VyKHN0cmluZykucmVz
dWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChz
dGFydCA8IG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQobGVuZ3RoIDw9IG1fc3RyaW5n
Lmxlbmd0aCgpIC0gc3RhcnQpOworCisgICAgYXV0byBzdHJpbmdBZnRlclJlbW92YWwgPSBXVEZN
b3ZlKG1fc3RyaW5nKTsKKyAgICBzdHJpbmdBZnRlclJlbW92YWwucmVtb3ZlKHN0YXJ0LCBsZW5n
dGgpOworICAgIHBhcnNlKHN0cmluZ0FmdGVyUmVtb3ZhbCk7Cit9CiAKLSAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3Jl
IHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KK3ZvaWQgVVJMOjpzZXRVc2VyKFN0cmluZ1ZpZXcg
bmV3VXNlcikKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
dW5zaWduZWQgZW5kID0gbV91c2VyRW5kOwotICAgIGlmICghdXNlci5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgU3RyaW5nIHUgPSBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyh1c2VyLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7Ci0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAgICAgIHUgPSAiLy8i
ICsgdTsKLSAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgot
ICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYg
bV9zdHJpbmdbZW5kXSAhPSAnQCcpKQotICAgICAgICAgICAgdS5hcHBlbmQoJ0AnKTsKLSAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV91c2VyU3RhcnQpLCB1LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwot
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBpZiAoIW5ld1VzZXIuaXNFbXB0
eSgpKSB7CisgICAgICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1f
c2NoZW1lRW5kICsgMTsKKyAgICAgICAgYm9vbCBuZWVkU2VwYXJhdG9yID0gZW5kID09IG1faG9z
dEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpOwor
ICAgICAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChtX3VzZXJTdGFydCksCisgICAgICAgICAgICBzbGFzaFNsYXNoTmVlZGVkID8gIi8v
IiA6ICIiLAorICAgICAgICAgICAgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMobmV3VXNlci50b1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwK
KyAgICAgICAgICAgIG5lZWRTZXBhcmF0b3IgPyAiQCIgOiAiIiwKKyAgICAgICAgICAgIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpCisgICAgICAgICkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBw
YXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAh
PSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0g
MTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNv
bW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAg
ICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkgewotICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNl
cihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVtb3ZlKG1fdXNlclN0YXJ0LCBl
bmQgLSBtX3VzZXJTdGFydCk7CiAgICAgfQogfQogCi12b2lkIFVSTDo6c2V0UGFzcyhjb25zdCBT
dHJpbmcmIHBhc3N3b3JkKQordm9pZCBVUkw6OnNldFBhc3N3b3JkKFN0cmluZ1ZpZXcgbmV3UGFz
c3dvcmQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVu
c2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaWYgKCFwYXNzd29yZC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgU3RyaW5nIHAgPSAiOiIgKyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXNz
d29yZCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpICsgIkAiOwotICAgICAgICBp
ZiAobV91c2VyRW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQot
ICAgICAgICAgICAgcCA9ICIvLyIgKyBwOwotICAgICAgICAvLyBFYXQgdGhlIGV4aXN0aW5nICdA
JyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCi0gICAgICAgIGlmIChlbmQgIT0g
bV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7
Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fdXNlckVuZCksIHAsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQp
KSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlmICghbmV3UGFzc3dv
cmQuaXNFbXB0eSgpKSB7CisgICAgICAgIGJvb2wgbmVlZExlYWRpbmdTbGFzaGVzID0gbV91c2Vy
RW5kID09IG1fc2NoZW1lRW5kICsgMTsKKyAgICAgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAg
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwKKyAgICAgICAgICAg
IG5lZWRMZWFkaW5nU2xhc2hlcyA/ICIvLzoiIDogIjoiLAorICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUNoYXJhY3RlcnMobmV3UGFzc3dvcmQudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBVUkxQ
YXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCksCisgICAgICAgICAgICAnQCcsCisgICAgICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoY3JlZGVudGlhbHNFbmQoKSkKKyAg
ICAgICAgKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cg
aGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQg
PT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcp
Ci0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJz
ZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8g
bWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAgICAgICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBlbmQgPSBtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgPyBjcmVkZW50aWFsc0VuZCgpIDog
bV9wYXNzd29yZEVuZDsKKyAgICAgICAgcmVtb3ZlKG1fdXNlckVuZCwgZW5kIC0gbV91c2VyRW5k
KTsKICAgICB9CiB9CiAKK3ZvaWQgVVJMOjpyZW1vdmVDcmVkZW50aWFscygpCit7CisgICAgaWYg
KCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZShtX3VzZXJTdGFydCwg
Y3JlZGVudGlhbHNFbmQoKSAtIG1fdXNlclN0YXJ0KTsKK30KKwogdm9pZCBVUkw6OnNldEZyYWdt
ZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2lzVmFs
aWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3
aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3
YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91
dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMg
PSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmlu
ZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOworICAgIHBhcnNl
KG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3F1ZXJ5RW5kKSwgJyMnLCBp
ZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQog
ewotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9xdWVyeUVuZCk7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1faXNW
YWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQpCi0gICAgICAgIG1fc3RyaW5n
ID0gbV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKTsKKworICAgIG1fc3RyaW5nID0gbV9zdHJpbmcu
bGVmdChtX3F1ZXJ5RW5kKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJ
ZGVudGlmaWVyKCkKQEAgLTYzNyw2MiArNjE0LDYyIEBAIHZvaWQgVVJMOjpyZW1vdmVRdWVyeUFu
ZEZyYWdtZW50SWRlbnRpZmllcigpCiAgICAgbV9xdWVyeUVuZCA9IG1fcGF0aEVuZDsKIH0KIAot
dm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCit2b2lkIFVSTDo6c2V0UXVl
cnkoU3RyaW5nVmlldyBuZXdRdWVyeSkKIHsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVuYW1p
bmcgdGhpcyBmdW5jdGlvbiB0byBzZXRFbmNvZGVkUXVlcnkgYW5kL29yIGNhbGxpbmcgcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnMgdGhlIHdheSBzZXRQYXRoIGRvZXMuCisgICAgLy8gaHR0cHM6Ly93
ZWJraXQub3JnL2IvMTYxMTc2CisKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBl
bmNvZGVkIGFuZCBlc2NhcGVkLgotICAgIC8vIFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVk
IHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCi0g
ICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIC8vIGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3NgotICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8IHF1
ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTFBhcnNlciBw
YXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksICI/
IiwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwot
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBV
UkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3Bh
dGhFbmQpLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQp
KSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0KKyAgICBwYXJzZSht
YWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCks
CisgICAgICAgIChuZXdRdWVyeS5zdGFydHNXaXRoKCc/JykgJiYgIW5ld1F1ZXJ5LmlzTnVsbCgp
KSA/ICI/IiA6ICIiLAorICAgICAgICBuZXdRdWVyeSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpCisgICAgKSk7Cit9CiAKK3N0YXRpYyBTdHJpbmcg
ZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHF1
ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAg
cmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAg
IHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXRoLnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKTsKIH0KIAotdm9pZCBVUkw6OnNldFBhdGgo
Y29uc3QgU3RyaW5nJiBzKQordm9pZCBVUkw6OnNldFBhdGgoU3RyaW5nVmlldyBwYXRoKQogewog
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgcGF0aCA9
IHM7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAgICBw
YXRoID0gIi8iICsgcGF0aDsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KHBhdGhTdGFydCgpKSwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRo
KCcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAgZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgp
LAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKQorICAg
ICkpOworfQorCitTdHJpbmdWaWV3IFVSTDo6c3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElk
ZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4g
bV9zdHJpbmc7CiAKLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hh
ciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFj
dGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRF
bmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocGF0aEVuZCgp
KTsKIH0KIAotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYg
YSwgY29uc3QgVVJMJiBiKQorU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhvdXRGcmFnbWVudElk
ZW50aWZpZXIoKSBjb25zdAogewotICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5k
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1f
cXVlcnlFbmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kp
Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX2lzVmFsaWQpCisg
ICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fcXVlcnlFbmQpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdt
ZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21l
bnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewotICAgIGlmIChhLnBh
dGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2ln
bmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClb
aV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBhLnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKSA9PSBiLnN0cmlu
Z1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKTsKIH0KIAogYm9vbCBwcm90b2NvbEhvc3RBbmRQ
b3J0QXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBAIC03MjUsMjUgKzcwMiwx
MCBAQCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oU3RyaW5n
VmlldyBkb21haW4pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0
YXJ0KCk7Ci0gICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAtIGhvc3RTdGFy
dEE7Ci0gICAgdW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgdW5zaWdu
ZWQgaG9zdExlbmd0aEIgPSBiLm1faG9zdEVuZCAtIGhvc3RTdGFydEI7Ci0gICAgaWYgKGhvc3RM
ZW5ndGhBICE9IGhvc3RMZW5ndGhCKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5z
dHJpbmcoKVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Cisg
ICAgLy8gRklYTUU6IENvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGFuIGFwcHJvcHJpYXRlIHBsYWNl
IGluIFdlYkNvcmUncyBwbHVnLWluIGNvZGU7IGRvbid0IHdhbnQgcGVvcGxlIHRlbXB0ZWQgdG8g
dXNlIHRoaXMgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbi4KIAotYm9vbCBVUkw6OmlzTWF0Y2hp
bmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17CiAgICAgaWYgKGlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc2MCw2ICs3MjIsNyBAQCBib29sIFVSTDo6
aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKICAgICByZXR1cm4g
aG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0g
ZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOwogfQogCisvLyBGSVhNRTogUmVuYW1lIHRoaXMg
c28gaXQncyBjbGVhciB0aGF0IGl0IGRvZXMgdGhlIGFwcHJvcHJpYXRlIGVzY2FwaW5nIGZvciBV
UkwgcXVlcnkgZmllbGQgdmFsdWVzLgogU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICByZXR1cm4gcGVyY2VudEVuY29kZUNoYXJh
Y3RlcnMoaW5wdXQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKQEAgLTc4MSw0
MSArNzQ0LDM0IEBAIHZvaWQgVVJMOjpjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1
ZmZlcikgY29uc3QKICAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KLWJvb2wgcHJvdG9jb2xJc0ludGVybmFs
KGNvbnN0IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQorc3RhdGljIGJv
b2wgcHJvdG9jb2xJc0ludGVybmFsKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKIHsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBz
dHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgeyBwcm90
b2NvbCB9KTsKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CiAgICAgYm9vbCBp
c0xlYWRpbmcgPSB0cnVlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGogPSAwOyB1cmxbaV07
ICsraSkgewotICAgICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBj
aGFyYWN0ZXJzLgotICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRyaW1Gcm9tVVJMKHVy
bFtpXSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7
Ci0KLSAgICAgICAgLy8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCi0gICAgICAgIGlmICh1
cmxbaV0gPT0gJ1x0JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0gJ1xuJykKLSAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgIGZvciAoYXV0byBjb2RlVW5pdCA6IHN0cmluZy5jb2RlVW5p
dHMoKSkgeworICAgICAgICBpZiAoaXNMZWFkaW5nKSB7CisgICAgICAgICAgICAvLyBTa2lwIGxl
YWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgaWYg
KHNob3VsZFRyaW1Gcm9tVVJMKGNvZGVVbml0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gU2tpcCB0YWJzIGFuZCBuZXdsaW5lcyBldmVuIGxhdGVyIGluIHRoZSBwcm90b2Nv
bC4KKyAgICAgICAgICAgIGlmIChjb2RlVW5pdCA9PSAnXHQnIHx8IGNvZGVVbml0ID09ICdccicg
fHwgY29kZVVuaXQgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQogCi0gICAgICAgIGlmICghcHJvdG9jb2xbal0pCi0gICAgICAgICAgICByZXR1cm4gdXJsW2ld
ID09ICc6JzsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFtpXSwg
cHJvdG9jb2xbal0pKQorICAgICAgICBjaGFyIGV4cGVjdGVkQ2hhcmFjdGVyID0gKnByb3RvY29s
Kys7CisgICAgICAgIGlmICghZXhwZWN0ZWRDaGFyYWN0ZXIpCisgICAgICAgICAgICByZXR1cm4g
Y29kZVVuaXQgPT0gJzonOworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
Y29kZVVuaXQsIGV4cGVjdGVkQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICArK2o7CiAgICAgfQotICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK2Jv
b2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgY2hhciogcHJvdG9jb2wpCiB7
Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsIHByb3RvY29sKTsKLX0KLQotaW5s
aW5lIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5n
LCBwcm90b2NvbCk7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3Rv
Y29sKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTgyOSwxMSArNzg1LDE4IEBAIHZvaWQgVVJM
OjpwcmludCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigp
IGNvbnN0CiB7Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAgICByZWZlcnJlci5zZXRVc2Vy
KFN0cmluZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKLSAgICByZWZlcnJl
ci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gcmVmZXJyZXIuc3RyaW5n
KCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAg
IHVuc2lnbmVkIGVuZCA9IGNyZWRlbnRpYWxzRW5kKCk7CisKKyAgICBpZiAobV91c2VyU3RhcnQg
PT0gZW5kICYmIG1fcXVlcnlFbmQgPT0gbV9zdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biBtX3N0cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kKQorICAgICk7CiB9CiAKIGJvb2wg
VVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CkBAIC04NDUsMTcgKzgwOCwxMiBAQCBib29sIFVSTDo6
aXNMb2NhbEZpbGUoKSBjb25zdAogICAgIHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7CiB9CiAK
LWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgcmV0
dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0Iik7Ci19Ci0KLWJvb2wgcHJv
dG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpCitib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwo
dXJsLCAiamF2YXNjcmlwdCIpOworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5n
LCAiamF2YXNjcmlwdCIpOwogfQogCi1ib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3Qg
U3RyaW5nJiB1cmwpCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwp
CiB7CiAgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CiAgICAgLy8gRG8gdGhlIGNvbXBh
cmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KQEAgLTg2OSwxMyArODI3
LDEzIEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKIAog
Y29uc3QgVVJMJiBhYm91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMPiBzdGF0aWNCbGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIik7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayJfcyk7
CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCiBjb25zdCBVUkwmIGFib3V0U3JjRG9j
VVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNBYm91dFNyY0Rv
Y1VSTChVUkwoKSwgImFib3V0OnNyY2RvYyIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxV
Ukw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9jIl9zKTsKICAgICBy
ZXR1cm4gc3RhdGljQWJvdXRTcmNEb2NVUkw7CiB9CiAKQEAgLTk2NCw3ICs5MjIsNiBAQCBib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wg
W0FwcGxlIGFkZGl0aW9uXQogICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlv
bl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFs
aWQgcG9ydCBudW1iZXJzCiAgICAgfTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0
aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgpAQCAtOTgzLDE1ICs5NDAsMTUgQEAgYm9v
bCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQorU3RyaW5nIG1pbWVU
eXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKQogewotICAgIEFTU0VSVChwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKKyAgICBBU1NFUlQocHJvdG9jb2xJc0ludGVybmFs
KGRhdGFVUkwsICJkYXRhIikpOwogCiAgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVo
YXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0
ZXI/Ci0gICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29s
b24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KLSAgICBhdXRvIGluZGV4
ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICAvLyBDdXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJl
YWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2U7IHNob3VsZCBhZGQgYSB0ZXN0LgorICAg
IGF1dG8gaW5kZXggPSBkYXRhVVJMLmZpbmQoJzsnLCA1KTsKICAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywnLCA1KTsKKyAgICAgICAgaW5kZXgg
PSBkYXRhVVJMLmZpbmQoJywnLCA1KTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBp
dCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgogICAgICAg
ICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29t
ZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KQEAgLTEw
MDAsMjUgKzk1NywzOSBAQCBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCkKICAgICBpZiAoaW5kZXggPT0gNSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9z
OwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBp
bmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIGRhdGFVUkwu
c3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAog
U3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0
aCkgY29uc3QKIHsKLSAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gc3RyaW5nKCk7CisgICAgaWYgKG1fc3RyaW5nLmxlbmd0aCgpIDw9IGxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChsZW5ndGggLyAyIC0gMSksICIuLi4iLCBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5yaWdodChsZW5ndGggLyAyIC0gMikpOworfQorCitVUkwgVVJMOjpmYWtlVVJMV2l0
aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkKK3sKKyAgICByZXR1cm4gVVJM
KFVSTCgpLCBtYWtlU3RyaW5nKCJ3ZWJraXQtZmFrZS11cmw6Ly8iLCBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCksICcvJywgcmVsYXRpdmVQYXJ0KSk7Cit9CiAKLSAgICByZXR1cm4gc3RyaW5n
KCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAv
IDIgLSAyKTsKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoU3RyaW5nVmlldyBw
YXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoCisgICAgICAgICJmaWxl
Oi8vIiwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAg
ZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpCisgICAgKSk7CiB9CiAKLVVSTCBVUkw6OmZh
a2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQorU3RyaW5n
VmlldyBVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKSBjb25zdAogewotICAgIHJl
dHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCwgbV9xdWVyeUVuZCAtIG1fcGF0aEVuZCk7CiB9
CiAKLVVSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJl
clNpZ24oKSBjb25zdAogewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxl
UGF0aCk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5
RW5kKTsKIH0KIAogYm9vbCBVUkw6OmlzQWJvdXRCbGFuaygpIGNvbnN0CkBAIC0xMDM4LDYgKzEw
MDksNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBVUkwm
IHVybCkKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShTT1VQKQorCiBzdGF0aWMg
Ym9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1dG8gY291bnQg
PSAwOwpAQCAtMTEyNCwxMSArMTA5Niw5IEBAIHN0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3Ry
aW5nVmlldyBzdHJpbmcpCiAKIGJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBo
b3N0KQogewotICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuIGlzSVB2NEFkZHJlc3MoaG9zdCk7Ci0KLSAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0
KTsKKyAgICByZXR1cm4gaG9zdC5jb250YWlucygnOicpID8gaXNJUHY2QWRkcmVzcyhob3N0KSA6
IGlzSVB2NEFkZHJlc3MoaG9zdCk7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgK
aW5kZXggOTVhZjRhM2I0N2UwODg3ZjVhMmFlYTAxYTExMzc5YmJiZDExYzZmZi4uNDJlYzFmYjll
YzM3ZWI4MzEzZDY5MzAxOTU3YTQ1MTkwNjEwYjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNDcgKzM4LDM5IEBAIE9CSkNfQ0xBU1MgTlNV
Ukw7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CisKIGNsYXNzIFRleHRTdHJlYW07CiAKIGNs
YXNzIFVSTFRleHRFbmNvZGluZyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhf
dD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflVSTFRl
eHRFbmNvZGluZygpIHsgfQogfTsKIAotc3RydWN0IFVSTEhhc2g7Ci0KLWNsYXNzIFdURl9FWFBP
UlRfUFJJVkFURSBVUkwgeworY2xhc3MgVVJMIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICAvLyBHZW5lcmF0ZXMgYSBVUkwgd2hpY2ggY29udGFpbnMgYSBudWxs
IHN0cmluZy4KICAgICBVUkwoKSB7IGludmFsaWRhdGUoKTsgfQogCi0gICAgZXhwbGljaXQgVVJM
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBl
eHBsaWNpdCBVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KIAogICAgIC8vIFJlc29sdmVzIHRoZSByZWxhdGl2ZSBVUkwgd2l0aCB0
aGUgZ2l2ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKICAgICAvLyBVUkxUZXh0RW5jb2Rp
bmcgaXMgdXNlZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNh
biBiZQotICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVS
TCB3aWxsIGJlIGludGVycHJldGVkIGFzCi0gICAgLy8gYWJzb2x1dGUuCi0gICAgLy8gRklYTUU6
IElmIHRoZSBiYXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVzIGFuIGludmFs
aWQKLSAgICAvLyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJl
YXQgYWxsIGludmFsaWQgYmFzZSBVUkxzCi0gICAgLy8gdGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBu
dWxsIGFuZCBlbXB0eSBiYXNlIFVSTHMuCi0gICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOworICAg
IC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJl
IGludGVycHJldGVkIGFzIGFic29sdXRlLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2Rp
bmcqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmYWtl
VVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcpOwogCi0gICAg
U3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6
IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBwYXNzaW5n
IGEKLSAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0aGUgc2Ft
ZSByZXN1bHQgYXMgdGhlCi0gICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29u
c3Q7CiAKICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVk
IHRvIHVzZSBhIFVSTCBvbiBhbm90aGVyCiAgICAgLy8gdGhyZWFkLiBTaW5jZSB0aGUgdW5kZXJs
eWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncwogICAgIC8vIG5v
IG90aGVyIHJlYXNvbiB0byBldmVyIHByZWZlciBpc29sYXRlZENvcHkoKSBvdmVyIHBsYWluIG9s
ZCBhc3NpZ25tZW50LgotICAgIFVSTCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTg5LDEyMiArODEsMTI2IEBA
IHB1YmxpYzoKICAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hp
ZXJhcmNoaWNhbCgpOyB9CiAKICAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1
cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCi0gICAgU3RyaW5nIHN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKLQotICAg
IFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IGhvc3QoKSBjb25z
dDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyBob3N0
QW5kUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygpIGNvbnN0OwotICAg
IFN0cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OwotICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgp
IGNvbnN0OwotICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFN0cmluZyBmcmFnbWVudElk
ZW50aWZpZXIoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3N3b3JkKCksIGVuY29kZWRVc2VyKCkgYW5k
IGVuY29kZWRQYXNzd29yZCgpIGRvbid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2VzLgorICAgIC8v
IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywgYmVjYXVzZSBl
bmNvZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KKworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nVmlldyBlbmNvZGVkUGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3
IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
Z1ZpZXcgcXVlcnkoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBm
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmdWaWV3IHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJl
clNpZ24oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBzdHJpbmdX
aXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcg
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgdXNlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgcGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVT
eXN0ZW1QYXRoKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHRydW5jYXRl
ZEZvclVzZUFzQmFzZSgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0Owot
ICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKICAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7CiAKLSAgICAvLyBVbmxp
a2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBl
IHNlcXVlbmNlcy4KLSAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQt
dHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMu
Ci0gICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGVuY29kZWRQYXNz
KCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJp
bmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKyAgICBib29sIGhhc0NyZWRlbnRpYWxzKCkgY29u
c3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wg
aXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVu
dC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBib29sIHByb3RvY29sSXMo
Y29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcp
IGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2Nv
bElzKCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
cHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAg
ICBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdDsKLSAgICBib29sIGlzTG9jYWxG
aWxlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNMb2NhbEZpbGUoKSBj
b25zdDsKICAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5v
dEJlQUJhc2VVUkw7IH0KIAotICAgIGJvb2wgaXNBYm91dEJsYW5rKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNB
Ym91dEJsYW5rKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBYm91dFNy
Y0RvYygpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWF0Y2hpbmdEb21haW4oU3Ry
aW5nVmlldykgY29uc3Q7CiAKLSAgICBib29sIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9p
ZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90Pik7CiAKICAgICAvLyBJbnB1dCBpcyBsaWtlICJmb28u
Y29tIiBvciAiZm9vLmNvbTo4MDAwIi4KLSAgICB2b2lkIHNldEhvc3RBbmRQb3J0KGNvbnN0IFN0
cmluZyYpOwotICAgIHZvaWQgcmVtb3ZlSG9zdEFuZFBvcnQoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzZXRIb3N0QW5kUG9ydChTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQgc2V0VXNl
cihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXNlcihTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRQYXNzd29yZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCByZW1vdmVDcmVkZW50aWFscygpOwogCi0gICAgLy8gSWYgeW91IHBhc3Mg
YW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgK
LSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7Cisg
ICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0
aGUgcmVzdWx0aW5nIHBhdGggd2lsbCBiZSAiLyIuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0UGF0aChTdHJpbmdWaWV3KTsKIAogICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0
aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCiAgICAgLy8g
Zm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZl
IGEgIj8iIGluIHRoZQogICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xl
YXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCi0gICAgdm9pZCBzZXRRdWVyeShjb25z
dCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRRdWVyeShTdHJpbmdW
aWV3KTsKIAotICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAg
IHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgdm9pZCByZW1v
dmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBzdGF0aWMgYm9v
bCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3KTsKIAogICAgIHVuc2lnbmVkIHBh
dGhTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9yIGNvbnN0IFN0
cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorICAgIG9wZXJhdG9yIGNvbnN0IFN0
cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIG9wZXJhdG9yIFN0cmluZ1Zp
ZXcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogCiAjaWYgVVNFKENGKQotICAgIFVSTChD
RlVSTFJlZik7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoQ0ZVUkxSZWYpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CiAjZW5kaWYKIAog
I2lmIFVTRShGT1VOREFUSU9OKQotICAgIFVSTChOU1VSTCopOwotICAgIG9wZXJhdG9yIE5TVVJM
KigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoTlNVUkwgKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIG9wZXJhdG9yIE5TVVJMICooKSBjb25zdDsKICNlbmRpZgorCiAjaWZk
ZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJp
bmcoKTsgfQorICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
ZzsgfQogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwcmludCgpIGNvbnN0Owog
I2VuZGlmCiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHN0
YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgY29weVRvQnVm
ZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwogICAgIHVuc2lnbmVkIGhvc3RT
dGFydCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGNyZWRlbnRpYWxzRW5kKCkgY29uc3Q7CisgICAg
dm9pZCByZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBw
YXJzZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OwogICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgZnJpZW5kIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKICAg
ICBTdHJpbmcgbV9zdHJpbmc7CiAKQEAgLTIyOSw0OSArMjI1LDI3IEBAIHByaXZhdGU6CiAKIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVu
c2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOwogCi10ZW1wbGF0ZSA8Y2xhc3MgRW5j
b2Rlcj4KLXZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IG1fc3RyaW5nOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wg
VVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCi17Ci0gICAgYXV0byBvcHRp
b25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICghb3B0aW9uYWxVUkwpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8
VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOwotICAgIGRlY29kZXIgPj4gc3RyaW5nOwotICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIFdURk1vdmUo
KnN0cmluZykpOwotfQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwor
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogCiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmlu
Z1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVJMJiBhYm91dEJsYW5r
VVJMKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVJMJiBhYm91dFNyY0RvY1VSTCgpOwog
CiAvLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KIC8vIFRoZXNl
IGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBU
aGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRo
ZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVS
TC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2Ny
aXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KKy8v
IFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBXVEY6OlVSTCBmdW5jdGlvbnMgaW4g
dGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJz
YWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQg
amF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBX
VEY6OlVSTC4KIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wp
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmll
dyB1cmwpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShj
b25zdCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFs
PHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90
IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwpAQCAtMjgwLDE0ICsyNTQsNDAgQEAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNrbGlzdCBw
b3J0cyB0aGF0IHNob3VsZAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0
UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZFBy
b3RvY29sKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlw
ZUZyb21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7Ci0KLS8vIEZJWE1F
OiBUaGlzIGlzIGEgd3JvbmcgY29uY2VwdCB0byBleHBvc2UsIGRpZmZlcmVudCBwYXJ0cyBvZiBh
IFVSTCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZyBwZXIgdGhlIFVSTCBTdGFuZGFyZC4KKy8vIEZJ
WE1FOiBUaGlzIG5lZWRzIGEgbmV3LCBtb3JlIHNwZWNpZmljIG5hbWUuIFRoZSBnZW5lcmFsIHRo
aW5nIG5hbWVkIGhlcmUgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LCBzaW5jZSBkaWZm
ZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcuCiBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5n
Jik7CiAKLS8vIElubGluZXMuCitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47CisKKy8vIEZ1
bmN0aW9uIHRlbXBsYXRlIGFuZCBpbmxpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCisKK3RlbXBs
YXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQor
eworICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFvcHRp
b25hbFVSTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVybCA9IFdURk1vdmUoKm9wdGlv
bmFsVVJMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gT3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9w
dGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgIGRlY29kZXIgPj4gc3RyaW5nOworICAgIGlmICgh
c3RyaW5nKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBVUkwoVVJM
KCksIFdURk1vdmUoKnN0cmluZykpOworfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewpAQCAtMzE5LDggKzMxOSwxMCBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVybiBh
ICE9IGIuc3RyaW5nKCk7CiB9CiAKLS8vIElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29n
bGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKLS8vIHdpdGhvdXQgaGF2aW5n
IHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCitp
bmxpbmUgVVJMOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6IG1fc3RyaW5n
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKK3sKK30KIAogaW5saW5lIGJvb2wgVVJMOjppc051bGwo
KSBjb25zdAogewpAQCAtMzM5LDE3ICszNDEsMTIgQEAgaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlk
KCkgY29uc3QKIAogaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICByZXR1cm4gbV9w
YXRoRW5kID4gcGF0aFN0YXJ0KCk7CiB9CiAKLWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUo
KSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNDcmVkZW50aWFscygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0OwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhh
c1Bhc3N3b3JkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IChtX3VzZXJF
bmQgKyAxKTsKKyAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IG1fdXNlclN0YXJ0OwogfQogCiBp
bmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKQEAgLTM1Nyw3ICszNTQsNyBAQCBpbmxp
bmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKICAgICByZXR1cm4gbV9xdWVyeUVuZCA+IG1f
cGF0aEVuZDsKIH0KIAotaW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0Citpbmxp
bmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7CiB9CkBAIC0zODIs
MTEgKzM3OSw2IEBAIGlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogfQogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IFVSTCYpOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwotdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxVUkw+OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjphYm91dEJsYW5rVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxF
eHRyYXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCmluZGV4IDA2YjBh
ZWM2NGQxMDI1ZDU0M2ZmOWRjM2Q2YTFhN2QyZTYxMGM4NTQuLmZhMDhjOWY4ODM2NTkyYjZhYzA1
M2M3M2ZhODY3ZTVlMDFiYWI3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJM
RXh0cmFzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiBjZlVSTCwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwog
Ci0gICAgaWYgKHVybC5oYXNVc2VybmFtZSgpIHx8IHVybC5oYXNQYXNzd29yZCgpKQorICAgIGlm
ICh1cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJMIH0pOwogCiAgICAgVVJMQ2hhckJ1ZmZlciBieXRl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGQxM2JiNmM5MWY5ZWJjYTMzMGRl
NTFkZDA1YzI3ZTA1OTZhY2EyZGIuLjI5YjQ4ODUwMTZiZDI4N2QxY2ZlOTQyYzY1NDhlNTY1YmY4
ODMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMzUsNiArMzUsNyBAQCBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc0LDYgKzc1LDExIEBAIGJvb2wgU3RyaW5nVmll
dzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHByZWZpeCkg
Y29uc3QKICAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhp
cywgcHJlZml4KTsKIH0KIAorYm9vbCBTdHJpbmdWaWV3OjplbmRzV2l0aChVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGVuZ3RoICYmICgqdGhpcylbbV9sZW5ndGggLSAx
XSA9PSBjaGFyYWN0ZXI7Cit9CisKIGJvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoY29uc3QgU3Ry
aW5nVmlldyYgc3VmZml4KSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGgoKnRo
aXMsIHN1ZmZpeCk7CkBAIC0zMDYsNiArMzEyLDMxIEBAIFN0cmluZyBub3JtYWxpemVkTkZDKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQudW5kZXJseWluZ1N0cmluZzsK
IH0KIAorLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90
PiBpbnN0ZWFkPworLy8gRklYTUU6IFNob3VsZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkg
b2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHlsZT8KK09wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJ
bnQxNihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgYXV0
byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1aW50MTZfdD4oc3RyaW5nLCAmb2spOworICAgIGlm
ICghb2spCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsK
K30KKworYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcg
YikKK3sKKyAgICAvLyBGSVhNRTogVGhlIGVxdWFsKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpIGZ1
bmN0aW9uIGFscmVhZHkgaWdub3JlcyBudWxsaXR5LgorICAgIC8vIFRvIGZpdCBpbiB3aXRoIHRo
ZSBiZWhhdmlvciBvZiBvdXIgb3RoZXIgc3RyaW5nIGNsYXNzZXMsIHdlIHNob3VsZCBjb25zaWRl
cgorICAgIC8vIGNoYW5naW5nIHRoYXQgYmVoYXZpb3Igc28gdGhhdCBhIG51bGwgU3RyaW5nVmll
dyBpcyBub3QgZXF1YWwgdG8gYW4gZW1wdHkKKyAgICAvLyBTdHJpbmdWaWV3LCBidXQgbmVlZCB0
byB0ZXN0IG9yIGF1ZGl0IGluIGNhc2UgY29kZSBkZXBlbmRzIG9uIGN1cnJlbnQgYmVoYXZpb3Iu
CisgICAgcmV0dXJuIGVxdWFsKGEsIGIpOworfQorCitib29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5z
KGNvbnN0IGNoYXIqIHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9
IG5vdEZvdW5kOworfQorCiAjaWYgQ0hFQ0tfU1RSSU5HVklFV19MSUZFVElNRQogCiAvLyBNYW5h
Z2UgcmVmZXJlbmNlIGNvdW50IG1hbnVhbGx5IHNvIFVuZGVybHlpbmdTdHJpbmcgZG9lcyBub3Qg
bmVlZCB0byBiZSBkZWZpbmVkIGluIHRoZSBoZWFkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CmluZGV4IDZjZmViZGJhYjdlYTQ1OGUxZDk2ODBkMTMxNjE5MTQ4ZjIxNzlmMDMuLjQ2YWY1MmY1
MGJlZDFjYzljOGIyY2E0NTU2ZDFkNTBmNjk4NjcxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCkBAIC0xMzcsOCArMTM3LDcgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIs
IHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3Rh
cnQgPSAwKSBjb25zdDsKIAogICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQg
aW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OwogCkBA
IC0xNTEsNiArMTUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnMoVUNoYXIpIGNvbnN0
OwogICAgIGJvb2wgY29udGFpbnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKSBjb25zdDsKICAgICBi
b29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdCB7IHJldHVybiBmaW5kKHN0cmlu
ZywgMCkgIT0gbm90Rm91bmQ7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWlu
cyhjb25zdCBjaGFyKikgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CkBAIC0xNTksNiArMTU5LDcgQEAg
cHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChVQ2hhcikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
VmlldyYpIGNvbnN0OwogCkBAIC0xOTEsNiArMTkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCopIHsgfQogICAgIHZvaWQgc2V0VW5k
ZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdWaWV3JikgeyB9CiAjZW5kaWYKKwogICAgIHZvaWQg
Y2xlYXIoKTsKIAogICAgIGNvbnN0IHZvaWQqIG1fY2hhcmFjdGVycyB7IG51bGxwdHIgfTsKQEAg
LTIxMCw2ICsyMTIsOCBAQCBib29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExDaGFyKiBiKTsK
IGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25zdCBjaGFyKik7CiAKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0
cmluZ1ZpZXcpOworCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRl
cnMpW2xlbmd0aF0pOwogdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29uc3QgY2hhciAoJmxvd2VyY2Fz
ZUxldHRlcnMpW2xlbmd0aF0pOwogCkBAIC0yMzQsNiArMjM4LDggQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBub3JtYWxpemVkTkZDKFN0cmluZ1Zp
ZXcpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5vcm1hbGl6ZWRORkMoY29uc3QgU3Ry
aW5nJik7CiAKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gcGFyc2VVSW50
MTYoU3RyaW5nVmlldyk7CisKIH0KIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBmMTJhZDM2ZDE5ZTdmZDU0YjVjY2ExMjZm
NzI1ZDAwMDY0Mzg0NWZlLi5hZmM5MmY1Nzc2NjYyMjkyZjBjZTA2NDYyNGU2OGYzODQ2NzIyNWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC05MjQsMTAyICs5MjQsMTAyIEBAIHN0
YXRpYyB1bnNpZ25lZCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoY29uc3QgQ2hhcmFjdGVy
VHlwZSogZGF0YSwgc2l6ZV90IGxlCiAKIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3Qg
TENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7
CiB9CiAKIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIHVuc2lnbmVkIGNo
YXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQs
IExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1bnNpZ25lZCBjaGFy
YWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29s
KiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBV
Q2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50NjRfdCBjaGFyYWN0
ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hh
cj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNU
b0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywg
aW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3QsIFVDaGFyPihk
YXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRf
dD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgTENoYXI+KGRh
dGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRf
dD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgVUNoYXI+KGRh
dGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRf
dD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludHB0cl90IGNoYXJhY3RlcnNUb0lu
dFB0clN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwgTENoYXI+KGRh
dGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJf
dD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludHB0cl90IGNoYXJhY3RlcnNUb0lu
dFB0clN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwgVUNoYXI+KGRh
dGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJf
dD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludCBjaGFyYWN0ZXJzVG9JbnQoY29u
c3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVu
c2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+
KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0K
IAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBV
Q2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5n
dGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwg
bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTAp
OwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRf
dCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwg
bGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0
YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50
NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0
YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOwogfQogCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTx1aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hh
cj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWlu
dDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8dWludDY0X3QsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihj
b25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9J
bnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50
ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogZW51bSBUcmFpbGluZ0p1
bmtQb2xpY3kgeyBEaXNhbGxvd1RyYWlsaW5nSnVuaywgQWxsb3dUcmFpbGluZ0p1bmsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAzYTU1
MjE4ZmZiZDcwYTBmMTE1NjYxNjBhZjkzOTBlYmJkMTkxZDczLi5kZmI3MzNlOTMwMGRhMmFlMWU2
OTVlNDEyYzk3MzIwMDhhYzZlMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0xNjAsOSArMTYwLDEwIEBAIHN0YXRpYyBpbmxpbmUgT3B0
aW9uYWw8RXhjZXB0aW9uPiBwcm9jZXNzSW52YWxpZFNpZ25hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjCiBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNv
bnN0IFN0cmluZyYgdXJsLCBJbml0JiYgaW5pdCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxn
b3JpdGhtIGFjY29yZGluZyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJs
LXBhcnNlci4KKworICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdvcml0
aG0gYWNjb3JkaW5nIHRvIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwt
cGFyc2VyLgogICAgIFVSTCByZXF1ZXN0VVJMID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5j
b21wbGV0ZVVSTCh1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkZvcmNlVVRGODo6WWVzKTsK
LSAgICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgpIHx8ICFyZXF1ZXN0VVJMLnVzZXIoKS5pc0Vt
cHR5KCkgfHwgIXJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIXJlcXVlc3RV
UkwuaXNWYWxpZCgpIHx8IHJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVSTCBpcyBub3QgdmFsaWQgb3IgY29udGFpbnMg
dXNlciBjcmVkZW50aWFscy4iX3MgfTsKIAogICAgIG1fb3B0aW9ucy5tb2RlID0gTW9kZTo6Q29y
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDYwOWFhOGEyODhmZjM1ODE5ZTY3M2NmNTY3ZGNiNTIwYzYzYWI0ODkuLjA1ZjQ5Zjg4OTM2
ZTA4YmRlMDViZTRlYjY2ZmE5YzE1ODhmY2JjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYKICAgICBVUkwgcmVxdWVzdFVSTCA9IGNvbnRleHQuY29tcGxldGVVUkwo
dXJsKTsKICAgICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJSZWRpcmVjdGlvbiBVUkwgJyIsIHJlcXVl
c3RVUkwuc3RyaW5nKCksICInIGlzIGludmFsaWQiKSB9OwotICAgIGlmICghcmVxdWVzdFVSTC51
c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpCisgICAgaWYg
KHJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIlJlZGlyZWN0aW9uIFVSTCBjb250YWlucyBjcmVkZW50aWFscyJfcyB9Owog
ICAgIGlmICghUmVzb3VyY2VSZXNwb25zZTo6aXNSZWRpcmVjdGlvblN0YXR1c0NvZGUoc3RhdHVz
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsIG1ha2VTdHJpbmcoIlN0
YXR1cyBjb2RlICIsIHN0YXR1cywgImlzIG5vdCBhIHJlZGlyZWN0aW9uIHN0YXR1cyBjb2RlIikg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHAKaW5kZXggY2FhZGY4N2IwYjU3M2UzMTJlOWUzZTAzOWQ2ZGM2YTg4
ZmM1OWNjYS4uZTcxMzViZWM2MDNmOWI1M2E5ZDIyYTQ0M2FmMzU4MjBmMWNhY2I5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5jcHAKQEAgLTIyMCwxMyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFN0YW5k
YXJkaXplZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKIC8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LW1ldGhvZC1pZC8jdmFsaWRhdGlvbgogc3Rh
dGljIGJvb2wgaXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZpZXIoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKCF1cmwudXNlcigpLmlzRW1wdHkoKSB8fCAhdXJsLnBhc3Mo
KS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSAmJiAhdXJsLmhhc0NyZWRlbnRpYWxz
KCk7CiB9CiAKIC8vIEltcGxlbWVudHMgInZhbGlkYXRlIGEgcGF5bWVudCBtZXRob2QgaWRlbnRp
ZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggNGU3YTAyNWU0NzY5NDkwMTE1ZWVmNDll
ZWMwYTdhZmRlMWVjM2I1My4uYWI0ZDVmYmMxMWY5MmQ5YWFlNjdhOGE0ZDg4ZmIyZWNhZWRjZWJl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTEwMywxOSArMTAzLDE0IEBAIGJvb2wgWW91
VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9v
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLXN0YXRpYyBpbmxpbmUgVVJMIGNyZWF0ZVlv
dVR1YmVVUkwoY29uc3QgU3RyaW5nJiB2aWRlb0lELCBjb25zdCBTdHJpbmcmIHRpbWVJRCkKK3N0
YXRpYyBVUkwgY3JlYXRlWW91VHViZVVSTChTdHJpbmdWaWV3IHZpZGVvSUQsIFN0cmluZ1ZpZXcg
dGltZUlEKQogewogICAgIEFTU0VSVCghdmlkZW9JRC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCh2
aWRlb0lEICE9ICIvIik7Ci0gICAgCi0gICAgVVJMIHJlc3VsdChVUkwoKSwgInlvdXR1YmU6IiAr
IHZpZGVvSUQpOwotICAgIGlmICghdGltZUlELmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LnNl
dFF1ZXJ5KCJ0PSIgKyB0aW1lSUQpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygieW91dHViZToiLCB2aWRlb0lELCB0aW1lSUQuaXNF
bXB0eSgpID8gIiIgOiAidD0iLCB0aW1lSUQpKTsKIH0KLSAgICAKLXN0YXRpYyBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0FuZFZhbHVlcyhjb25zdCBTdHJp
bmcmIHF1ZXJ5U3RyaW5nKQorCitzdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlW
YWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoU3RyaW5nVmlldyBxdWVyeVN0cmluZykKIHsKICAg
ICBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5RGljdGlvbmFyeTsK
ICAgICAKQEAgLTE1NSw3ICsxNTAsNyBAQCBzdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5nJiBxdQogICAgICAg
ICAvLyBTYXZlIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZS4KICAgICAgICAgaWYgKGtleUxlbmd0aCAm
JiB2YWx1ZUxlbmd0aCkgewogICAgICAgICAgICAgU3RyaW5nIGtleSA9IHF1ZXJ5U3RyaW5nLnN1
YnN0cmluZyhrZXlMb2NhdGlvbiwga2V5TGVuZ3RoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
OwotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKHZhbHVl
TG9jYXRpb24sIHZhbHVlTGVuZ3RoKTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHF1ZXJ5
U3RyaW5nLnN1YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCkudG9TdHJpbmcoKTsK
ICAgICAgICAgICAgIHZhbHVlLnJlcGxhY2UoJysnLCAnICcpOwogCiAgICAgICAgICAgICBpZiAo
IWtleS5pc0VtcHR5KCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTIwOSwxNiArMjA0LDE2IEBA
IHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJv
b2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAKICAgICAvLyBTaG9ydCBVUkwgb2YgdGhlIGZvcm06
IGh0dHA6Ly95b3V0dS5iZS92MWQzMDFECiAgICAgaWYgKGlzWW91VHViZVNob3J0ZW5lZFVSTCkg
ewotICAgICAgICBTdHJpbmcgdmlkZW9JRCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAg
ICAgICBhdXRvIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KHZpZGVvSUQuaXNFbXB0eSgpIHx8IHZpZGVvSUQgPT0gIi8iKQogICAgICAgICAgICAgcmV0dXJu
IFVSTCgpOwotICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCBlbXB0eVN0
cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgeyB9KTsK
ICAgICB9Ci0gICAgCisKICAgICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOwotICAgIFN0cmluZyBx
dWVyeSA9IHVybC5xdWVyeSgpOwotICAgIFN0cmluZyBmcmFnbWVudCA9IHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKTsKLSAgICAKKyAgICBhdXRvIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CisgICAgYXV0
byBmcmFnbWVudCA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKwogICAgIC8vIE9uIHRoZSBZ
b3VUdWJlIG1vYmlsZSB3ZWIgYXBwLCB0aGUgcGF0aCBhbmQgcXVlcnkgc3RyaW5nIGFyZSBwdXQg
aW50byB0aGUKICAgICAvLyBmcmFnbWVudCBzbyB0aGF0IG9uZSB3ZWIgcGFnZSBpcyBvbmx5IGV2
ZXIgbG9hZGVkIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzk1NTA2Mzk+KS4KICAgICBpZiAoaXNZb3VU
dWJlTW9iaWxlV2ViQXBwVVJMKSB7CkBAIC0yMjcsNyArMjIyLDcgQEAgc3RhdGljIFVSTCBwcm9j
ZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hv
cnRlbmVkVVIKICAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudDsKICAgICAgICAgICAgIHF1ZXJ5
ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBT
dHJpbmdWaWV3KGZyYWdtZW50KS5zdWJzdHJpbmcoMCwgbG9jYXRpb24pOworICAgICAgICAgICAg
cGF0aCA9IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CiAgICAgICAgICAgICBxdWVy
eSA9IGZyYWdtZW50LnN1YnN0cmluZyhsb2NhdGlvbiArIDEpOwogICAgICAgICB9CiAgICAgICAg
IGZyYWdtZW50ID0gZW1wdHlTdHJpbmcoKTsKQEAgLTI2MCwxMCArMjU1LDEwIEBAIHN0YXRpYyBV
UkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91
VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi92LyIpIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi9lLyIpKSB7Ci0gICAgICAgIFN0
cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgICAg
ICBTdHJpbmcgdmlkZW9JRDsKLSAgICAgICAgU3RyaW5nIHBhdGhBZnRlckZpcnN0QW1wZXJzYW5k
OworICAgICAgICBTdHJpbmdWaWV3IHZpZGVvSUQ7CisgICAgICAgIFN0cmluZ1ZpZXcgcGF0aEFm
dGVyRmlyc3RBbXBlcnNhbmQ7CiAKKyAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24g
PSBsYXN0UGF0aENvbXBvbmVudC5maW5kKCcmJyk7CiAgICAgICAgIGlmIChhbXBlcnNhbmRMb2Nh
dGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJv
dXQgdXNlICYgaW4gcGxhY2Ugb2YgPyBmb3IgdGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KQEAg
LTI3MywxMSArMjY4LDExIEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwo
Y29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICB2
aWRlb0lEID0gbGFzdFBhdGhDb21wb25lbnQ7CiAKICAgICAgICAgaWYgKCF2aWRlb0lELmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0
ZXJGaXJzdEFtcGVyc2FuZDsKKyAgICAgICAgICAgIG91dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5k
ID0gcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICB9CiAg
ICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVSTCgpOwogfQogCkBAIC0yOTAsMTMgKzI4NSwxMyBA
QCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMKGNvbnN0IFN0cmlu
ZyYgc3JjU3RyaW5nKQogU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVS
TEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBzcmNTdHJp
bmcpCiB7CiAgICAgYm9vbCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPSBmYWxzZTsKLSAgICBTdHJp
bmcgcG9zc2libGVNYWxmb3JtZWRRdWVyeTsKLSAgICBVUkwgeW91VHViZVVSTCA9IHByb2Nlc3NB
bmRDcmVhdGVZb3VUdWJlVVJMKHNyY1VSTCwgaXNZb3VUdWJlU2hvcnRlbmVkVVJMLCBwb3NzaWJs
ZU1hbGZvcm1lZFF1ZXJ5KTsKKyAgICBTdHJpbmcgcG9zc2libHlNYWxmb3JtZWRRdWVyeTsKKyAg
ICBVUkwgeW91VHViZVVSTCA9IHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKHNyY1VSTCwgaXNZ
b3VUdWJlU2hvcnRlbmVkVVJMLCBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5KTsKICAgICBpZiAoc3Jj
VVJMLmlzRW1wdHkoKSB8fCB5b3VUdWJlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHNy
Y1N0cmluZzsKIAogICAgIC8vIFRyYW5zZm9ybSB0aGUgeW91dHViZVVSTCAoeW91dHViZTpWaWRl
b0lEKSB0byBpZnJhbWUgZW1iZWQgdXJsIHdoaWNoIGhhcyB0aGUgZm9ybWF0OiBodHRwOi8vd3d3
LnlvdXR1YmUuY29tL2VtYmVkL1ZpZGVvSUQKLSAgICBhdXRvIHNyY1BhdGggPSBzcmNVUkwucGF0
aCgpLnRvU3RyaW5nKCk7CisgICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgoKTsKICAgICBj
b25zdCBTdHJpbmcmIHZpZGVvSUQgPSB5b3VUdWJlVVJMLnN0cmluZygpLnN1YnN0cmluZyh5b3VU
dWJlVVJMLnByb3RvY29sKCkubGVuZ3RoKCkgKyAxKTsKICAgICBzaXplX3QgbG9jYXRpb25PZlZp
ZGVvSURJblBhdGggPSBzcmNQYXRoLmZpbmQodmlkZW9JRCk7CiAKQEAgLTMwNSw3ICszMDAsNyBA
QCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRl
VVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogICAgICAgICBBU1NFUlQobG9jYXRpb25PZlZpZGVv
SURJblBhdGgpOwogICAgIAogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5l
ZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRlb0lkLgotICAgICAgICBsb2NhdGlv
bk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBzcmNTdHJpbmcuZmluZChzcmNQYXRoLnN1YnN0cmluZygw
LCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOworICAgICAgICBsb2NhdGlvbk9mUGF0aEJlZm9y
ZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQYXRoLnN1YnN0cmluZygw
LCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIpKSB7CiAgICAgICAgIC8vIEZyb20g
dGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC93YXRjaC8j
IXY9VmlkZW9JRAogICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgQVNDSUkgY2Fz
ZS1pbnNlbnNpdGl2ZT8KQEAgLTMxNSwyMiArMzEwLDIxIEBAIFN0cmluZyBZb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkws
IGNvCiAKICAgICBBU1NFUlQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEICE9IG5vdEZvdW5k
KTsKIAotICAgIGNvbnN0IFN0cmluZyYgc3JjVVJMUHJlZml4ID0gc3JjU3RyaW5nLnN1YnN0cmlu
ZygwLCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOwotICAgIFN0cmluZyBxdWVyeSA9IHNy
Y1VSTC5xdWVyeSgpOworICAgIGF1dG8gc3JjVVJMUHJlZml4ID0gU3RyaW5nVmlldyhzcmNTdHJp
bmcpLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOworICAgIGF1dG8g
cXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKKwogICAgIC8vIElmIHRoZSBVUkwgaGFzIG5vIHF1ZXJ5
LCB1c2UgdGhlIHBvc3NpYmx5IG1hbGZvcm1lZCBxdWVyeSB3ZSBmb3VuZC4KICAgICBpZiAocXVl
cnkuaXNFbXB0eSgpKQotICAgICAgICBxdWVyeSA9IHBvc3NpYmxlTWFsZm9ybWVkUXVlcnk7Cisg
ICAgICAgIHF1ZXJ5ID0gcG9zc2libHlNYWxmb3JtZWRRdWVyeTsKIAogICAgIC8vIEFwcGVuZCB0
aGUgcXVlcnkgc3RyaW5nIGlmIGl0IGlzIHZhbGlkLgotICAgIFN0cmluZ0J1aWxkZXIgZmluYWxV
Ukw7Ci0gICAgaWYgKGlzWW91VHViZVNob3J0ZW5lZFVSTCkKLSAgICAgICAgZmluYWxVUkwuYXBw
ZW5kTGl0ZXJhbCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbSIpOwotICAgIGVsc2UKLSAgICAgICAg
ZmluYWxVUkwuYXBwZW5kKHNyY1VSTFByZWZpeCk7Ci0gICAgZmluYWxVUkwuYXBwZW5kKCIvZW1i
ZWQvIiwgdmlkZW9JRCk7Ci0gICAgaWYgKCFxdWVyeS5pc0VtcHR5KCkpCi0gICAgICAgIGZpbmFs
VVJMLmFwcGVuZCgnPycsIHF1ZXJ5KTsKLSAgICByZXR1cm4gZmluYWxVUkwudG9TdHJpbmcoKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID8g
Imh0dHA6Ly93d3cueW91dHViZS5jb20iIDogc3JjVVJMUHJlZml4LAorICAgICAgICAiL2VtYmVk
LyIsCisgICAgICAgIHZpZGVvSUQsCisgICAgICAgIHF1ZXJ5LmlzRW1wdHkoKSA/ICIiIDogIj8i
LAorICAgICAgICBxdWVyeQorICAgICk7CiB9CiAgICAgCiBib29sIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6c3VwcG9ydHNVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4
IDk5MjZjZWY5NjcxNTUzNjcyZjIzNzk5YmYyZmViZmI1ZWQxOTBmNzcuLmUyMzc0OTcxODYzZjFk
YTcwZDdlOWY5Yzk5NjlkZDZjMDY0ZjUxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC02NCwxNSAr
NjQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIHJlc291cmNlTmFt
ZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG5hbWU7Ci0gICAgbmFtZS5h
cHBlbmQodXJsLnBhdGgoKSk7Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICBuYW1l
LmFwcGVuZCgnLycpOwotICAgIGlmICghdXJsLnF1ZXJ5KCkuaXNOdWxsKCkpIHsKLSAgICAgICAg
bmFtZS5hcHBlbmQoJz8nKTsKLSAgICAgICAgbmFtZS5hcHBlbmQodXJsLnF1ZXJ5KCkpOwotICAg
IH0KLSAgICBTdHJpbmcgcmVzdWx0ID0gbmFtZS50b1N0cmluZygpOworICAgIGF1dG8gcGF0aCA9
IHVybC5wYXRoKCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlU3RyaW5nKAorICAgICAgICBwYXRo
LAorICAgICAgICBwYXRoLmlzRW1wdHkoKSA/ICIvIiA6ICIiLAorICAgICAgICB1cmwucXVlcnlX
aXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpCisgICAgKTsKICAgICBBU1NFUlQoIXJlc3VsdC5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghcmVzdWx0LmNvbnRhaW5zKCcgJykpOwogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzNWE2NmJlNTU1YTYzYjQwOGU2ZDhiNWJm
YjJjOWQ3MjlhMjRhNDJiLi5jZjZkYzVkYWFlZjM2ODljOWY2OTk1NzM0YWQ4OTE2MTA0ZWJlMzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTk0NCwyNiArOTQ0LDI3IEBAIEludFBvaW50IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsaWNrUG9pbnQoKQogICAgIAogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCgp
IGNvbnN0CiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGFuY2hvckVsZW1lbnQoKTsKKyAgICBh
dXRvIGVsZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisKICAgICAvLyBSaWdodCBub3csIHdlIGRv
IG5vdCBzdXBwb3J0IEFSSUEgbGlua3MgYXMgaW50ZXJuYWwgbGluayBlbGVtZW50cwogICAgIGlm
ICghaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBIVE1MQW5jaG9yRWxlbWVudCYgYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFuY2hvckVs
ZW1lbnQ+KCplbGVtZW50KTsKLSAgICAKLSAgICBVUkwgbGlua1VSTCA9IGFuY2hvci5ocmVmKCk7
Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IGxpbmtVUkwuZnJhZ21lbnRJZGVudGlm
aWVyKCk7CisgICAgYXV0byYgYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCpl
bGVtZW50KTsKKworICAgIGF1dG8gbGlua1VSTCA9IGFuY2hvci5ocmVmKCk7CisgICAgYXV0byBm
cmFnbWVudElkZW50aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlm
IChmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAKKwogICAgIC8vIGNoZWNrIGlmIFVSTCBpcyB0aGUgc2FtZSBhcyBjdXJyZW50IFVSTAot
ICAgIFVSTCBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CisgICAg
YXV0byBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CiAgICAgaWYg
KCFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGRvY3VtZW50VVJMLCBsaW5rVVJMKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgTm9kZSogbGlua2VkTm9kZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIpOworCisg
ICAgYXV0byBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5maW5kQW5jaG9yKGZy
YWdtZW50SWRlbnRpZmllci50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgIGlmICghbGlu
a2VkTm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAvLyBUaGUgZWxl
bWVudCB3ZSBmaW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSwgc28gZmluZCB0aGUgZmlyc3QgYWNj
ZXNzaWJsZSBvYmplY3QuCiAgICAgcmV0dXJuIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2Rl
KGxpbmtlZE5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWQ5MDk1ZDFhODBh
YmJmNTk2N2Q3ZWYxZmY2MDE3NjY5MzU3NWE4MS4uODdlYzRlYTU3ZjIwODA0NzFkZjU5ZjQ1YWNh
MTBlNjU5NzY0MWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMjQ4LDcgKzMyNDgs
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3VybCA9
IG5ld1VSTDsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZElnbm9yZUhvc3QobV91cmwp
KQotICAgICAgICBtX3VybC5yZW1vdmVIb3N0QW5kUG9ydCgpOworICAgICAgICBtX3VybC5zZXRI
b3N0QW5kUG9ydCh7IH0pOwogCiAgICAgbV9kb2N1bWVudFVSSSA9IG1fdXJsLnN0cmluZygpOwog
ICAgIHVwZGF0ZUJhc2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAzMDJlZWI3Y2U1
ZTU5MmI0ZjlkZWU2YWZhNTQ4OGVhNDZiZTQ3NTJkLi45OWIxZWFkNzUwYjAzMDQ3YmUwNDk1MTM1
MGE5YjBjZGUxZGIyZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NDg3LDcgKzQ0ODcs
NyBAQCBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBv
dXRBbmNob3JOYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICh1cmwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1
cmwsIGRvY3VtZW50LmJhc2VVUkwoKSkpIHsKLSAgICAgICAgb3V0QW5jaG9yTmFtZSA9IHVybC5m
cmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgb3V0QW5jaG9yTmFtZSA9IHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpOwogICAgICAgICByZXR1cm4gZG9jdW1lbnQuZmluZEFu
Y2hvcihvdXRBbmNob3JOYW1lKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5k
ZXggMWRhYTg1ODhkZjUzOTBhZjgxMzFlMGRhZjA5N2E4OWZiNTc3YTU5MS4uMzBlZDlmM2Y2MWY0
MDNkYmI5NGU4ZTNlMmY3OWZmODk3ZTE3MmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
QEAgLTQ0MCw2ICs0NDAsOCBAQCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVs
ZW1lbnRzRnJvbVBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHApCiAgICAgcmV0dXJuIGVsZW1lbnRz
RnJvbVBvaW50KHAueCgpLCBwLnkoKSk7CiB9CiAKKy8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRv
IGNoYW5nZSB0aGlzIHRvIHRha2UgYSBTdHJpbmdWaWV3LCBzaW5jZSB0aGF0J3Mgd2hhdCBjYWxs
ZXJzIGhhdmUKKy8vIGFuZCB0aGVyZSBpcyBubyBwYXJ0aWN1bGFyIGFkdmFudGFnZSB0byBhbHJl
YWR5IGhhdmluZyBhIFN0cmluZy4KIEVsZW1lbnQqIFRyZWVTY29wZTo6ZmluZEFuY2hvcihjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCBlOTYwMWNlMTc5NGRkYmRjMTc0ZTRiNjUzNjUzNGI3N2ZmM2M0MTI5Li4wMDM5ZGFmMGY3OTY5
NTViYWQwZjg0MjhjZDIwYTc4YjhiMzA2MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMzI4LDEzICszMjgs
MTMgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291cmNlID09IHVy
bFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YWx0QXR0cik7CisgICAgICAgIFN0cmluZyBuYW1lID0gaW1hZ2UuYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOwogICAgICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcp
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3Vy
Y2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IEF0b21TdHJpbmcoIm1lZGlhIik7
CisgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IG5hbWUsIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBl
KCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFn
bWVudCkpIHsKQEAgLTM0OCwxMSArMzQ4LDExIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxT
dHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIFN0cmluZyBuYW1lID0gVVJMKHsg
fSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAg
ICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IEF0b21TdHJpbmco
ImZpbGUiKTsKKyAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBl
KCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1l
bnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+
bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYyYTJkNTJhYzVhYmY0ZTRmMTMx
MTNjYTI1ZDFiMjBhMTczOGZhNjkuLmI3ZDI5Y2Q0YmFkOTUwZDNhYmQ3ZGY3OWU5MGY1MzQ2NGMz
Njg4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTIwMiw3
ICsyMDIsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgICAgICBwYXN0ZWJvYXJkSW1h
Z2UudXJsLnVybCA9IHBhc3RlYm9hcmRJbWFnZVVSTDsKICAgICAgICAgcGFzdGVib2FyZEltYWdl
LnVybC50aXRsZSA9IHRpdGxlOwogICAgIH0KLSAgICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVk
TmFtZSA9IGltYWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgcGFzdGVib2Fy
ZEltYWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgp
LnRvU3RyaW5nKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZSA9IGltYWdlLT5zaXpl
KCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJl
c291cmNlTUlNRVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAgICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmlu
ZGV4IGJkYWQ5YTAwNTQyOGYxNDdhODE1ZWNlMDNlN2MzOWEwN2I4OWEyZDUuLmVhYzlhMGI5OGNk
NzAxOWNiNTIzNTJmYWM3YTE5MjQwZWRiMTRmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTE3NywyMiArMTc3LDE3IEBAIFN0cmluZyBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRUaXRsZSgpIGNvbnN0CiBTdHJpbmcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVGb3JEaXNwbGF5KCkgY29uc3QKIHsK
ICAgICBhdXRvIHRpdGxlID0gYXR0YWNobWVudFRpdGxlKCk7Ci0KICAgICBhdXRvIGluZGV4T2ZM
YXN0RG90ID0gdGl0bGUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXhPZkxhc3REb3Qg
PT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiB0aXRsZTsKIAotICAgIFN0cmluZyBuYW1lID0g
dGl0bGUubGVmdChpbmRleE9mTGFzdERvdCk7Ci0gICAgU3RyaW5nIGV4dGVuc2lvbiA9IHRpdGxl
LnN1YnN0cmluZyhpbmRleE9mTGFzdERvdCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgYnVpbGRlci5hcHBlbmQobGVmdFRvUmlnaHRNYXJrKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChmaXJzdFN0cm9uZ0lzb2xhdGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKHBvcERpcmVjdGlvbmFsSXNvbGF0ZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
ZXh0ZW5zaW9uKTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoCisgICAgICAgIGxlZnRUb1JpZ2h0TWFyaywKKyAgICAgICAgZmlyc3RTdHJv
bmdJc29sYXRlLAorICAgICAgICBTdHJpbmdWaWV3KHRpdGxlKS5sZWZ0KGluZGV4T2ZMYXN0RG90
KSwKKyAgICAgICAgcG9wRGlyZWN0aW9uYWxJc29sYXRlLAorICAgICAgICBTdHJpbmdWaWV3KHRp
dGxlKS5zdWJzdHJpbmcoaW5kZXhPZkxhc3REb3QpCisgICAgKTsKIH0KIAogU3RyaW5nIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCAwM2Q5MDViYmEzNzkxMjdkN2Y5NDE4OTJm
Nzk3NjVhN2VmOTNjMWI5Li42YmZlNzA3NGE5NTFhZDdhY2NlOTkzODQwMDY2YzhkYjc0ZDE2MTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMzU3LDE0
ICszNTcsMTQgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2luKiBwbHVnaW5SZXBsYWNlbWVudEZv
clR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBTdHJpbmcgZXh0ZW5zaW9uOwotICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVu
dCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICBzaXplX3QgZG90T2Zmc2V0ID0gbGFzdFBh
dGhDb21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoZG90T2Zmc2V0ICE9IG5vdEZv
dW5kKQotICAgICAgICBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoZG90
T2Zmc2V0ICsgMSk7CisgICAgICAgIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0
cmluZyhkb3RPZmZzZXQgKyAxKS50b1N0cmluZygpOwogCiAgICAgU3RyaW5nIHR5cGUgPSBtaW1l
VHlwZTsKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0g
ICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybC5zdHJpbmcoKSk7CisgICAgICAg
IHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybCk7CiAgICAgCiAgICAgaWYgKHR5cGUuaXNF
bXB0eSgpICYmICFleHRlbnNpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVw
bGFjZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IGU3YTUxNmViYTIyODQ5ZmNkMzczNDY1OTM5NGI3
YzQ5ZTdmOTdjZTEuLjViODQ1NDFlYTBkY2Y1MjI0MjgyYzMxY2Y3NGJiNDZlYTI1NTJkM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAt
OTgsOSArOTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6ZW5kVGltZSgp
CiAKIHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMoKQogewotICAg
IGlmICghbV91cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBTdHJpbmcgZnJhZ21lbnRTdHJpbmcgPSBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICBhdXRvIGZyYWdtZW50U3RyaW5nID0gbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAg
aWYgKGZyYWdtZW50U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgKaW5kZXggYjcwZTVkY2JlODI3NTgxMDBiMDcyZDJmNGYwZjBlNDY4MGMwMTA5
Ny4uYWIwMGVkOGRkYWY5MjdhZDA1NjY4NjVhMjM4ZjFiYjMzNTUxNmRhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXNzd29y
ZChjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyBob3N0KCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRIb3N0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SG9zdChTdHJpbmdWaWV3KTsKIAog
ICAgIFN0cmluZyBob3N0bmFtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3Qg
U3RyaW5nJik7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVS
TFV0aWxzPFQ+Ojp1c2VybmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVk
VXNlcigpOworICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFVzZXIoKS50b1N0cmluZygpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFVSTFV0aWxz
PFQ+OjpzZXRVc2VybmFtZShjb25zdCBTdHJpbmcmIHVzZXIpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIFN0cmluZyBVUkxVdGlsczxUPjo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIHJldHVybiBo
cmVmKCkuZW5jb2RlZFBhc3MoKTsKKyAgICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzd29yZCgp
LnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTMxLDcgKzEzMSw3
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzcykKICAg
ICBVUkwgdXJsID0gaHJlZigpOwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgdXJsLnNldFBhc3MocGFzcyk7CisgICAgdXJsLnNldFBhc3N3b3Jk
KHBhc3MpOwogICAgIHNldEhyZWYodXJsKTsKIH0KIApAQCAtMTQxLDE3ICsxNDEsMTggQEAgU3Ry
aW5nIFVSTFV0aWxzPFQ+Ojpob3N0KCkgY29uc3QKICAgICByZXR1cm4gaHJlZigpLmhvc3RBbmRQ
b3J0KCk7CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgbGVhZGluZyBzcGFj
ZXMgYmVmb3JlIHRoZSBwb3J0IG51bWJlci4KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgcGFyc2VQ
b3J0RnJvbVN0cmluZ1Bvc2l0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkIHBvcnRT
dGFydCwgdW5zaWduZWQmIHBvcnRFbmQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvdW50QVND
SUlEaWdpdHMoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgcG9ydEVuZCA9IHBvcnRTdGFydDsK
LSAgICB3aGlsZSAoaXNBU0NJSURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKLSAgICAgICAgKytwb3J0
RW5kOwotICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9y
dFN0YXJ0KS50b1VJbnQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CisgICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IDA7IGNvdW50IDwgbGVuZ3RoOyArK2NvdW50KSB7
CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHN0cmluZ1tjb3VudF0pKQorICAgICAgICAgICAg
cmV0dXJuIGNvdW50OworICAgIH0KKyAgICByZXR1cm4gbGVuZ3RoOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjgsMTggKzE2OSwxOSBA
QCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYg
KHNlcGFyYXRvciA9PSBub3RGb3VuZCkKICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVl
KTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgcG9ydEVuZDsKLSAgICAgICAgdW5zaWdu
ZWQgcG9ydCA9IHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlvbih2YWx1ZSwgc2VwYXJhdG9yICsg
MSwgcG9ydEVuZCk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAgICB1bnNpZ25lZCBwb3J0
TGVuZ3RoID0gY291bnRBU0NJSURpZ2l0cyh2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSkp
OworICAgICAgICBpZiAoIXBvcnRMZW5ndGgpIHsKICAgICAgICAgICAgIC8vIGh0dHA6Ly9kZXYu
dzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1p
ZGwtYXR0cmlidXRlcwogICAgICAgICAgICAgLy8gc3BlY2lmaWNhbGx5IGdvZXMgYWdhaW5zdCBS
RkMgMzk4NiAocDMuMikgYW5kCiAgICAgICAgICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBw
b3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgotICAgICAgICAgICAgdXJs
LnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSArICcwJyk7
CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHNvbWV0aGluZyB0aGF0IGhh
cyBzaW5jZSBiZWVuIGNoYW5nZWQgYW5kIHRoaXMgcnVsZSBhbmQgY29kZSBtYXkgYmUgb2Jzb2xl
dGUuCisgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQobWFrZVN0cmluZyh2YWx1ZS5zdWJz
dHJpbmcoMCwgc2VwYXJhdG9yICsgMSksICcwJykpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2Nv
bCgpKSkKKyAgICAgICAgICAgIGF1dG8gcG9ydE51bWJlciA9IHBhcnNlVUludDE2KHZhbHVlLnN1
YnN0cmluZyhzZXBhcmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CisgICAgICAgICAgICBpZiAocG9y
dE51bWJlciAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwgdXJs
LnByb3RvY29sKCkpKQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5z
dWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKSk7CisgICAg
ICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0
b3IgKyAxICsgcG9ydExlbmd0aCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHNldEhyZWYodXJs
LnN0cmluZygpKTsKQEAgLTIyNywxNyArMjI5LDEzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
dm9pZCBVUkxVdGlsczxUPjo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFVS
TCB1cmwgPSBocmVmKCk7Ci0gICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgdXJsLnBy
b3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghdXJsLmNhblNldEhv
c3RPclBvcnQoKSkKKyAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSB8fCB1cmwucHJvdG9j
b2xJcygiZmlsZSIpIHx8ICF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50
b1VJbnQoJnN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcyB8fCBXVEY6OmlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCi0gICAgICAgIHVybC5yZW1vdmVQb3J0
KCk7Ci0gICAgZWxzZQotICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKKyAgICBhdXRvIHBvcnQg
PSBwYXJzZVVJbnQxNih2YWx1ZSk7CisgICAgaWYgKHBvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woKnBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgcG9ydCA9IFdURjo6
bnVsbG9wdDsKKyAgICB1cmwuc2V0UG9ydChwb3J0KTsKIAogICAgIHNldEhyZWYodXJsLnN0cmlu
ZygpKTsKIH0KQEAgLTI2MCw3ICsyNTgsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFt
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmICh2YWx1ZVswVV0gPT0gJy8nKQogICAgICAg
ICB1cmwuc2V0UGF0aCh2YWx1ZSk7CiAgICAgZWxzZQotICAgICAgICB1cmwuc2V0UGF0aCgiLyIg
KyB2YWx1ZSk7CisgICAgICAgIHVybC5zZXRQYXRoKG1ha2VTdHJpbmcoJy8nLCB2YWx1ZSkpOwog
CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtMjY4LDggKzI2Niw3IEBAIHZvaWQg
VVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICBT
dHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsKLSAgICByZXR1cm4gcXVlcnkuaXNFbXB0eSgp
ID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHF1ZXJ5OworICAgIHJldHVybiBocmVmKCkucXVlcnlX
aXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgpAQCAtMjkxLDEwICsyODgsOCBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRTZWFyY2go
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0
aWxzPFQ+OjpoYXNoKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0g
aHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gQXRv
bVN0cmluZyhTdHJpbmcoIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgLy8gRklYTUU6
IFdoeSBjb252ZXJ0IHRoaXMgc3RyaW5nIHRvIGFuIGF0b20gaGVyZSBpbnN0ZWFkIG9mIGp1c3Qg
YSBzdHJpbmc/IEp1c3QgYW4gZXJyb3I/IEludGVudGlvbmFsbHkgdG8gc2F2ZSBtZW1vcnk/Cisg
ICAgcmV0dXJuIGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24o
KS50b0F0b21TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCmluZGV4IDYzM2U3NzVhNTQ1NDRm
Y2ZkNjY4N2FiYmVjZjlhZDg2ODlhNmRkMmYuLjRlYTQ3YzI5MzA1ZGRhZTMyMDU3MmM4ZjIzNzE1
ZTgzOGRiNTM3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0
cmlidXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRp
b24uY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgQWRDbGlja0F0dHJpYnV0aW9uOjppc1ZhbGlk
KCkgY29uc3QKIAogRXhwZWN0ZWQ8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uLCBTdHJp
bmc+IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdChjb25zdCBVUkwm
IHJlZGlyZWN0VVJMKQogewotICAgIGlmICghcmVkaXJlY3RVUkwucHJvdG9jb2xJcygiaHR0cHMi
X3MpIHx8IHJlZGlyZWN0VVJMLmhhc1VzZXJuYW1lKCkgfHwgcmVkaXJlY3RVUkwuaGFzUGFzc3dv
cmQoKSB8fCByZWRpcmVjdFVSTC5oYXNRdWVyeSgpIHx8IHJlZGlyZWN0VVJMLmhhc0ZyYWdtZW50
KCkpIHsKKyAgICBpZiAoIXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgfHwgcmVkaXJl
Y3RVUkwuaGFzQ3JlZGVudGlhbHMoKSB8fCByZWRpcmVjdFVSTC5oYXNRdWVyeSgpIHx8IHJlZGly
ZWN0VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShk
ZWJ1Z01vZGVFbmFibGVkKCkpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKEFkQ2xp
Y2tBdHRyaWJ1dGlvbiwgIkNvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBV
UkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9y
ZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIHF1ZXJ5IHN0cmluZywgYW5kIGZyYWdtZW50LiIpOwog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbQWQgQ2xpY2sgQXR0cmlidXRpb25d
IENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBp
cyBub3QgSFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwg
cGFzc3dvcmQsIHF1ZXJ5IHN0cmluZywgYW5kIGZyYWdtZW50LiJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IDgyOTA2
MjhjNGVkNDVlMDUzMWM0Nzk2ZmEyNmFkNWFjNGExZDYzMzguLmUwNTNjOWIwM2YwNDY1MGRlZjU1
YmVjZDU4ZDFjNjM2OWM2MzBhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgU3RyaW5nIHZh
bGlkYXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlvblVSTChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQog
ICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChyZWRpcmVjdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJub3QgYWxsb3dlZCB0byBmb2xsb3cgYSBjcm9z
cy1vcmlnaW4gQ09SUyByZWRpcmVjdGlvbiB3aXRoIG5vbiBDT1JTIHNjaGVtZSIpOwogCi0gICAg
aWYgKHJlZGlyZWN0VVJMLmhhc1VzZXJuYW1lKCkgfHwgcmVkaXJlY3RVUkwuaGFzUGFzc3dvcmQo
KSkKKyAgICBpZiAocmVkaXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoInJlZGlyZWN0aW9uIFVSTCAiLCByZWRpcmVjdFVSTC5zdHJpbmcoKSwgIiBo
YXMgY3JlZGVudGlhbHMiKTsKIAogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDIxNzdmNGI2ZGI2
YjE5NWNhOWRmODI3OWI1YWY3YmIxNTZmNWI1MGEuLmRmM2QwOGM3NGZlYmMxYjU0ZTI0NGU2M2Zj
NDk2ZmU2MzBjNDMwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01MzIsOCArNTMyLDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0cy4KICAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwg
PSByZXF1ZXN0LnVybCgpOwogICAgIG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlD
aGVjazsKLSAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIo
KS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RV
UkwucGFzcygpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwg
IXJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSk7CiAKICAgICBpZiAoIW1fcmVmZXJyZXIuaXNO
dWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1fcmVmZXJyZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggM2FhYThlZWQ4YzMzN2U3
OWQ5ODg4YTQ1NWYzOWZmM2ZlZTRiNWEzNi4uMzBhZjkwMDgwNDlhOGUzOTgyZjljOWJmNDlkYWVi
ZmM5MmVhNjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBA
IC03OCwxMSArNzgsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9V
UkwoVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAogICAgIEZvcm1EYXRhQnVp
bGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShib2R5RGF0YSwgYm9keS51dGY4KCkpOwogICAg
IGJvZHkgPSBTdHJpbmcoYm9keURhdGEuZGF0YSgpLCBib2R5RGF0YS5zaXplKCkpLnJlcGxhY2VX
aXRoTGl0ZXJhbCgnKycsICIlMjAiKTsKIAotICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgp
OworICAgIGF1dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKICAgICBpZiAocXVlcnkuaXNFbXB0eSgp
KQogICAgICAgICB1cmwuc2V0UXVlcnkoYm9keSk7CiAgICAgZWxzZQotICAgICAgICB1cmwuc2V0
UXVlcnkocXVlcnkgKyAnJicgKyBib2R5KTsKKyAgICAgICAgdXJsLnNldFF1ZXJ5KG1ha2VTdHJp
bmcocXVlcnksICcmJywgYm9keSkpOwogfQogCiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1
dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJpbmcmIGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4
IDMyM2RiNDYzNjAyOThiOGE5MWJiMDBhNDc5MjRiYjJlODExMWYzMzguLjQ4ODJkNzdlMTI3MTY5
ODVjNDY0NTFkZjBlYzc0MGE3OTM5M2M0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjQ2LDE1ICsy
NDYsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JF
cnJvcihSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2EKIAogVVJMIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICAvLyBGSVhNRTog
Q2FuIHdlIGp1c3QgdXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGggaW5zdGVhZD8KICNpZiBV
U0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKLSAgICBVUkwgdXJsKGFkb3B0Q0YoQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpLmdldCgpKTsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBj
b3JyZWN0PyBTZWVtcyBpbXByb2JhYmxlIHRoYXQgdGhlIHBhc3NlZC1pbiBwYXRocyB3b3VsZCBi
ZSBpbiB0aGUgV2luZG93cyBwYXRoIHN0eWxlLgorICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKS5nZXQoKTsKICNlbHNlCi0gICAgVVJMIHVybDsK
LSAgICB1cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgIHVybC5zZXRQYXRoKHBhdGgpOwor
ICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgocGF0aCk7CiAjZW5kaWYK
LSAgICByZXR1cm4gdXJsOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAK
aW5kZXggZmFhZTUxZjk5ZjYyYjJmMjlkNWNiYjhhZWNmY2ViMTZhZGMyZWI1NC4uNzM0ZGE3NjYy
ZDQ5YTYyMjU5ZGU2MWZlZDhjYmViNzAwZWQyYWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIE1vZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9u
bGluZVdoaXRlbGlzdCwgVW5rbm93biB9OwogCi1zdGF0aWMgU3RyaW5nIG1hbmlmZXN0UGF0aChj
b25zdCBVUkwmIG1hbmlmZXN0VVJMKQorc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNv
bnN0IFVSTCYgbWFuaWZlc3RVUkwpCiB7CiAgICAgYXV0byBtYW5pZmVzdFBhdGggPSBtYW5pZmVz
dFVSTC5wYXRoKCk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSAnLycpOwogICAgIG1h
bmlmZXN0UGF0aCA9IG1hbmlmZXN0UGF0aC5zdWJzdHJpbmcoMCwgbWFuaWZlc3RQYXRoLnJldmVy
c2VGaW5kKCcvJykgKyAxKTsKICAgICBBU1NFUlQobWFuaWZlc3RQYXRoWzBdID09IG1hbmlmZXN0
UGF0aFttYW5pZmVzdFBhdGgubGVuZ3RoKCkgLSAxXSk7Ci0gICAgcmV0dXJuIG1hbmlmZXN0UGF0
aC50b1N0cmluZygpOworICAgIHJldHVybiBtYW5pZmVzdFBhdGg7CiB9CiAKIGJvb2wgcGFyc2VN
YW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlN
RVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkK
QEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QKICAgICBBU1NFUlQobWFu
aWZlc3QuZmFsbGJhY2tVUkxzLmlzRW1wdHkoKSk7CiAgICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3
b3JrUmVxdWVzdHMgPSBmYWxzZTsKIAotICAgIFN0cmluZyBtYW5pZmVzdFBhdGggPSBXZWJDb3Jl
OjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOworICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gV2Vi
Q29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKIAogICAgIGNvbnN0IGNoYXIgY2FjaGVN
YW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAgICAgYm9vbCBhbGxv
d0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRoID0gZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1JTUVUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCAzZjQ2OTljZjgz
Mjk4ZjA0ZTI3NGFlMDBlZjk1YTU1NDc1YTY1ZjNkLi5jZDk0OWU3YzEzMGQ5NjYyODJmMTliNTJj
OGRhMzFkMDA0YTY4MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC04NiwxMCArODYsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogCiBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRl
SXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0gdGhpcy0+dXJsKCk7
Ci0gICAgaWYgKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICByZXR1cm4gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVy
biB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCiBib29sIENhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAK
aW5kZXggNmEyOGE4NTcxYzVlY2E2MjdkM2U2ZTdkMTRmNzlhNzYzODY5NjViMy4uZTRhOTRhNTA1
OTYxYWEzNzk3ZmE2ZDA0ZWE2NWM2NDU2NWFkOTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgU3RyaW5nIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZp
ZXJGcm9tUmVxdWVzdFVSTChSZXNvdXJjZVJlcXUKICAgICBpZiAoIU1lbW9yeUNhY2hlOjpzaG91
bGRSZW1vdmVGcmFnbWVudElkZW50aWZpZXIocmVxdWVzdC51cmwoKSkpCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgU3RyaW5nIGZyYWdtZW50
SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZyYWdtZW50
SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogICAgIHVy
bC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwog
ICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggZDU0NjRhMzdlYzUyZDQ2NjcxM2RkZDA4M2EyY2FhMDQwMmEwZDJiMS4uMzk0NWNiZjI1
MjZmM2IyNDQzMWZiZmFjYTEwZGQ5YzRhYzRlZjAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMjE4Myw4ICsyMTgzLDggQEAgdm9pZCBGcmFtZVZpZXc6OnJlc3RvcmVTY3JvbGxi
YXIoKQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpOwotICAgIGlmIChzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoZnJhZ21lbnRJZGVudGlmaWVy
KSkKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIo
KTsKKyAgICBpZiAoc2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGZyYWdtZW50SWRlbnRpZmllci50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IFRyeSBhZ2FpbiBhZnRlciBkZWNvZGluZyB0aGUgcmVmLCBiYXNlZCBvbiB0aGUgZG9jdW1lbnQn
cyBlbmNvZGluZy4KQEAgLTIxOTksNyArMjE5OSw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxU
b0ZyYWdtZW50KGNvbnN0IFVSTCYgdXJsKQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFn
bWVudEludGVybmFsKGNvbnN0IFN0cmluZyYgZnJhZ21lbnRJZGVudGlmaWVyKQogewotICAgIExP
RyhTY3JvbGxpbmcsICJGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yICVzIiwgZnJhZ21lbnRJZGVu
dGlmaWVyLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhTY3JvbGxpbmcsICJGcmFtZVZpZXc6OnNj
cm9sbFRvRnJhZ21lbnRJbnRlcm5hbCAlcyIsIGZyYWdtZW50SWRlbnRpZmllci51dGY4KCkuZGF0
YSgpKTsKIAogICAgIC8vIElmIG91ciBVUkwgaGFzIG5vIHJlZiwgdGhlbiB3ZSBoYXZlIG5vIHBs
YWNlIHdlIG5lZWQgdG8ganVtcCB0by4KICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlzTnVs
bCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggOWM1OGIwNmY0YzQ3MTEzMGNlNDgxNWYx
MWQxNGNiNzhmODFiNDlhMC4uMzhmZDdiMjliNTNlYWI0ODRlMzA5NjNiNTFjOGFlNTI1YzVkN2Ez
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yMDEsMTMgKzIwMSwxNCBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgZGF0YQogICAgICAgICBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUgPSBzdGF0
ZU9iamVjdFR5cGUgPT0gU3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlID8gImhpc3RvcnkucmVwbGFj
ZVN0YXRlKCkiIDogImhpc3RvcnkucHVzaFN0YXRlKCkiOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU2VjdXJpdHlFcnJvciwgbWFrZVN0cmluZygiQmxvY2tlZCBhdHRlbXB0IHRvIHVzZSAi
LCBmdW5jdGlvbk5hbWUsICIgdG8gY2hhbmdlIHNlc3Npb24gaGlzdG9yeSBVUkwgZnJvbSAiLCBk
b2N1bWVudFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiB0byAiLCBmdWxs
VVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLiAiLCBzdWZmaXgpIH07CiAg
ICAgfTsKLSAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChmdWxsVVJMLCBkb2N1
bWVudFVSTCkgfHwgZnVsbFVSTC51c2VyKCkgIT0gZG9jdW1lbnRVUkwudXNlcigpIHx8IGZ1bGxV
UkwucGFzcygpICE9IGRvY3VtZW50VVJMLnBhc3MoKSkKKyAgICBpZiAoIXByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChmdWxsVVJMLCBkb2N1bWVudFVSTCkgfHwgZnVsbFVSTC51c2VyKCkgIT0g
ZG9jdW1lbnRVUkwudXNlcigpIHx8IGZ1bGxVUkwucGFzc3dvcmQoKSAhPSBkb2N1bWVudFVSTC5w
YXNzd29yZCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JX
aXRoTWVzc2FnZVN1ZmZpeCgiUHJvdG9jb2xzLCBkb21haW5zLCBwb3J0cywgdXNlcm5hbWVzLCBh
bmQgcGFzc3dvcmRzIG11c3QgbWF0Y2guIik7CiAKICAgICBjb25zdCBhdXRvJiBkb2N1bWVudFNl
Y3VyaXR5T3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAg
Ly8gV2UgYWxsb3cgc2FuZGJveGVkIGRvY3VtZW50cywgJ2RhdGE6Jy8nZmlsZTonIFVSTHMsIGV0
Yy4gdG8gdXNlICdwdXNoU3RhdGUnLydyZXBsYWNlU3RhdGUnIHRvIG1vZGlmeSB0aGUgVVJMIHF1
ZXJ5IGFuZCBmcmFnbWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODMwMjggZm9yIHRoZSBjb21wYXRpYmlsaXR5IGNvbmNlcm5zLgotICAg
IGJvb2wgYWxsb3dTYW5kYm94RXhjZXB0aW9uID0gKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNM
b2NhbCgpIHx8IGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNVbmlxdWUoKSkgJiYgZXF1YWxJZ25v
cmluZ1F1ZXJ5QW5kRnJhZ21lbnQoZG9jdW1lbnRVUkwsIGZ1bGxVUkwpOworICAgIGJvb2wgYWxs
b3dTYW5kYm94RXhjZXB0aW9uID0gKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNMb2NhbCgpIHx8
IGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNVbmlxdWUoKSkKKyAgICAgICAgJiYgZG9jdW1lbnRV
Ukwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSA9PSBmdWxsVVJMLnN0
cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKICAgICBpZiAoIWFsbG93
U2FuZGJveEV4Y2VwdGlvbiAmJiAhZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5jYW5SZXF1ZXN0KGZ1
bGxVUkwpICYmIChmdWxsVVJMLnBhdGgoKSAhPSBkb2N1bWVudFVSTC5wYXRoKCkgfHwgZnVsbFVS
TC5xdWVyeSgpICE9IGRvY3VtZW50VVJMLnF1ZXJ5KCkpKQogICAgICAgICByZXR1cm4gY3JlYXRl
QmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JXaXRoTWVzc2FnZVN1ZmZpeCgiUGF0aHMgYW5kIGZyYWdt
ZW50cyBtdXN0IG1hdGNoIGZvciBhIHNhbmRib3hlZCBkb2N1bWVudC4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhdGlvbi5jcHAKaW5kZXggMjg3ODljZDE0Mjk4MzJjMWYyNzJhNmFhZDVlYjFlOGI2Mjg4MmVj
Ny4uMGQ4N2M3ZDg5Mzc2OTdjMWVjNzAxMzZmMWM2NmI2MWM5ZjU2MDM1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5jcHAKQEAgLTYxLDE0ICs2MSw4IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0
aW9uOjp1cmwoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246OmhyZWYoKSBjb25zdAogewotICAg
IGF1dG8mIHVybCA9IHRoaXMtPnVybCgpOwotCi0gICAgaWYgKCF1cmwuaGFzVXNlcm5hbWUoKSAm
JiAhdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCk7Ci0KLSAg
ICBVUkwgdXJsV2l0aG91dENyZWRlbnRpYWxzKHVybCk7Ci0gICAgdXJsV2l0aG91dENyZWRlbnRp
YWxzLnNldFVzZXIoV1RGOjplbXB0eVN0cmluZygpKTsKLSAgICB1cmxXaXRob3V0Q3JlZGVudGlh
bHMuc2V0UGFzcyhXVEY6OmVtcHR5U3RyaW5nKCkpOworICAgIFVSTCB1cmxXaXRob3V0Q3JlZGVu
dGlhbHModXJsKCkpOworICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5yZW1vdmVDcmVkZW50aWFs
cygpOwogICAgIHJldHVybiB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc3RyaW5nKCk7CiB9CiAKQEAg
LTkxLDIwICs4NSwxOSBAQCBTdHJpbmcgTG9jYXRpb246Omhvc3RuYW1lKCkgY29uc3QKIAogU3Ry
aW5nIExvY2F0aW9uOjpwb3J0KCkgY29uc3QKIHsKLSAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMt
PnVybCgpOwotICAgIHJldHVybiB1cmwucG9ydCgpID8gU3RyaW5nOjpudW1iZXIodXJsLnBvcnQo
KS52YWx1ZSgpKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byBwb3J0ID0gdXJsKCkucG9ydCgp
OworICAgIHJldHVybiBwb3J0ID8gU3RyaW5nOjpudW1iZXIoKnBvcnQpIDogZW1wdHlTdHJpbmco
KTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0CiB7CiAgICAgYXV0byBw
YXRoID0gdXJsKCkucGF0aCgpOwotICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIiA6IHBh
dGgudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyJfcyA6IHBhdGgu
dG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpzZWFyY2goKSBjb25zdAogewotICAg
IGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJuIHVybC5xdWVyeSgpLmlz
RW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyB1cmwucXVlcnkoKTsKKyAgICByZXR1cm4g
dXJsKCkucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKQEAgLTEyNSw4ICsxMTgsNyBAQCBSZWY8RE9N
U3RyaW5nTGlzdD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNvbnN0CiAKIFN0cmluZyBM
b2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50
aWZpZXIgPSB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gZnJhZ21lbnRJ
ZGVudGlmaWVyLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBmcmFnbWVudElkZW50
aWZpZXI7CisgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVt
YmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRIcmVmKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBj
b25zdCBTdHJpbmcmIHVybCkKQEAgLTE3MywxMSArMTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW4KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgaW50IHBvcnQgPSBwb3J0U3RyaW5nLnRv
SW50KCk7Ci0gICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweEZGRkYgfHwgcG9ydFN0cmluZy5p
c0VtcHR5KCkpCi0gICAgICAgIHVybC5yZW1vdmVQb3J0KCk7Ci0gICAgZWxzZQotICAgICAgICB1
cmwuc2V0UG9ydChwb3J0KTsKKyAgICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5n
KSk7CiAgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcAppbmRleCBhY2U1YjdlZDk3MDFlMjQxZTQwYTU3ZGU2NDE4ZDk4YzEyOWQ5Mzg1
Li4yZDUxNDY5OWIxMTcxZTljNzQ4NjYxMmE3YjFhNWU1NWEyYmFjZmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0xNDcsMjIgKzE0Nywx
OSBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0
ZXN0KSBjb25zdAogICAgIHJldHVybiBob3N0W2hvc3QubGVuZ3RoKCkgLSBtX2hvc3QubGVuZ3Ro
KCkgLSAxXSA9PSAnLic7CiB9CiAKLXN0cnVjdCBNYXRjaFRlc3Rlcgoteworc3RydWN0IE1hdGNo
VGVzdGVyIHsKICAgICBTdHJpbmdWaWV3IG1fcGF0dGVybjsKLSAgICB1bnNpZ25lZCBtX3BhdHRl
cm5JbmRleDsKLSAgICAKKyAgICB1bnNpZ25lZCBtX3BhdHRlcm5JbmRleCB7IDAgfTsKKwogICAg
IFN0cmluZ1ZpZXcgbV90ZXN0OwotICAgIHVuc2lnbmVkIG1fdGVzdEluZGV4OwotICAgIAorICAg
IHVuc2lnbmVkIG1fdGVzdEluZGV4IHsgMCB9OworCiAgICAgTWF0Y2hUZXN0ZXIoU3RyaW5nVmll
dyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHRlc3QpCi0gICAgOiBtX3BhdHRlcm4ocGF0dGVybikKLSAg
ICAsIG1fcGF0dGVybkluZGV4KDApCi0gICAgLCBtX3Rlc3QodGVzdCkKLSAgICAsIG1fdGVzdElu
ZGV4KDApCisgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCisgICAgICAgICwgbV90ZXN0KHRl
c3QpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGJvb2wgdGVzdFN0cmluZ0ZpbmlzaGVkKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXN0SW5kZXggPj0gbV90ZXN0Lmxlbmd0aCgpOyB9CiAgICAgYm9v
bCBwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5JbmRleCA+
PSBtX3BhdHRlcm4ubGVuZ3RoKCk7IH0KIApAQCAtMTc0LDcgKzE3MSw3IEBAIHN0cnVjdCBNYXRj
aFRlc3RlcgogICAgICAgICAgICAgbV9wYXR0ZXJuSW5kZXgrKzsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHZvaWQgZWF0U2FtZUNoYXJzKCkKICAgICB7CiAgICAgICAgIHdoaWxlICgh
cGF0dGVyblN0cmluZ0ZpbmlzaGVkKCkgJiYgIXRlc3RTdHJpbmdGaW5pc2hlZCgpKSB7CkBAIC0y
MjYsOCArMjIzLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAKIGJvb2wgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzUGF0aChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7Ci0gICAgTWF0Y2hU
ZXN0ZXIgbWF0Y2goU3RyaW5nVmlldyhtX3BhdGgpLCB0ZXN0LnBhdGgoKSk7Ci0gICAgcmV0dXJu
IG1hdGNoLnRlc3QoKTsKKyAgICByZXR1cm4gTWF0Y2hUZXN0ZXIobV9wYXRoLCB0ZXN0LnBhdGgo
KSkudGVzdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDRhMGMzNGVjYTcyNDJiZGE3MjUy
ODQ4YjNhOGNlMmQxMzVmNzQzNWIuLjQ3MGZlNTQ5NTRlMWIzYzQ3ZWVmMDVlNzg1MGNiNWJhMmM5
OTVmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
CkBAIC03OTAsMTYgKzc5MCwxMCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFs
aXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIFN0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoZmlsZW5hbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkpCi0gICAgICAgIHJldHVy
biBmaWxlbmFtZTsKLQotICAgIGlmIChmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpICE9IG5vdEZv
dW5kKQorICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkgfHwgZmlsZW5hbWUuY29udGFpbnMoJy4n
KSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkp
CiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsKIAotICAgIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNp
b24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0
byBwcmVmZXJyZWRFeHRlbnNpb24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSht
aW1lVHlwZSk7CiAgICAgaWYgKHByZWZlcnJlZEV4dGVuc2lvbi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGU5YTQyM2FlOTI5OWRhYWY3YmQ4YmM0YWVjYWMyMDQy
ZmU3OGEzMTMuLjI3ZjBjY2VjMDYyNzA3Y2NhNzNmNWQ4YzY2NGEyOTQ5ZWEzZTA2OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTQ0MSwxMiArNDQxLDEyIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAgICAgQXRvbVN0cmlu
ZyBjb250YWluZXJUeXBlID0gbV9jb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7CiAgICAgaWYg
KGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gYXBwbGljYXRpb25P
Y3RldFN0cmVhbSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gdGV4dFBsYWluKCkpIHsKICAgICAgICAg
aWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0g
Q29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOworICAgICAg
ICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91
cmwpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25l
bnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhD
b21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBw
b3MgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwogICAgICAgICAgICAgaWYg
KHBvcyAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBs
YXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcocG9zICsgMSk7CisgICAgICAgICAgICAgICAgU3Ry
aW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhwb3MgKyAxKS50b1N0
cmluZygpOwogICAgICAgICAgICAgICAgIFN0cmluZyBtZWRpYVR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
Y29udGVudFR5cGUgPSBDb250ZW50VHlwZSB7IFdURk1vdmUobWVkaWFUeXBlKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAzZWI4MjUx
NjJkOTU0ZGNhM2E0NzVjODM3MTIwNDEyYWY2MzA4OWYzLi4wOGViOTEzYjUxMWQ0MWQyM2UyY2Mw
OTBmZmMyNjk4MDI5YWYxYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRU
b0ludGVybmFsUHJvdG9jb2woVVJMJiB1cmwpCiAgICAgaWYgKHdlYmtpdEdzdENoZWNrVmVyc2lv
bigxLCAxMiwgMCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSkKLSAgICAgICAgdXJsLnNldFByb3Rv
Y29sKCJ3ZWJraXQrIiArIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgdXJsLnNldFByb3RvY29s
KG1ha2VTdHJpbmcoIndlYmtpdCsiLCB1cmwucHJvdG9jb2woKSkpOwogfQogCiAjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA3MjhmYTJlODc5YjBlNzYxYTQ5
NWRjNGFjYTMwODY0NGJkNjRlMDBlLi5kM2IzMzgyNzkxZWYyYzAyMjNhNzY0MzE3MTNmMThiMWYz
MmU2YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1fZmlyc3RSZXF1ZXN0LnVybCgpOwogICAgICAg
ICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICBtX3Bhc3MgPSB1cmwucGFzcygpOworICAg
ICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgIG1fZmlyc3RSZXF1ZXN0
LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgfQogICAgIApAQCAtOTYsNyArOTYsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBTdWdnZXN0ZWQgY3JlZGVudGlhbHMgZm9yIHRoZSBjdXJyZW50IHJlZGly
ZWN0aW9uIHN0ZXAuCiAgICAgU3RyaW5nIG1fdXNlcjsKLSAgICBTdHJpbmcgbV9wYXNzOworICAg
IFN0cmluZyBtX3Bhc3N3b3JkOwogICAgIAogICAgIENyZWRlbnRpYWwgbV9pbml0aWFsQ3JlZGVu
dGlhbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGE5MzczMjAzNTMxMmNjNDdkMDkyMjBhZDg0
ZjJmYjJlOGY3MzQyZGUuLjUzMGVjY2ZhZTc5M2UzNWRlZTk5ZWMwNDA3NzA3YTM4ZjljN2M5ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcApAQCAtMTY1LDEyICsxNjUsMTAgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpyZW1vdmVDcmVkZW50aWFscygpCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7IAogCi0gICAgaWYgKG1fdXJsLnVzZXIoKS5pc0VtcHR5KCkgJiYgbV91cmwucGFzcygpLmlz
RW1wdHkoKSkKKyAgICBpZiAoIW1fdXJsLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fdXJsLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIG1fdXJsLnNldFBhc3MoU3Ry
aW5nKCkpOwotCisgICAgbV91cmwucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICBtX3BsYXRmb3Jt
UmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKaW5kZXggMGMy
ZDNmMDQ0MzA2NTFiMzMxOTUyYjZkMDE5ZmU1NmQxYzZiMDQ1NC4uZjYyY2Q1ZWQ1YWYwNDZjMjY2
YTg3NzU2ZWQyNmZmZDAxOGZjZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIHZvaWQgQ3VybFByb3h5U2V0dGluZ3M6OnJlYnVpbGRVcmwoKQogdm9pZCBDdXJsUHJv
eHlTZXR0aW5nczo6c2V0VXNlclBhc3MoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcm
IHBhc3N3b3JkKQogewogICAgIG1fdXJsLnNldFVzZXIodXNlcik7Ci0gICAgbV91cmwuc2V0UGFz
cyhwYXNzd29yZCk7CisgICAgbV91cmwuc2V0UGFzc3dvcmQocGFzc3dvcmQpOwogCiAgICAgcmVi
dWlsZFVybCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAppbmRleCBhZjMxMzU0NmM0NGEzMjc3ZjA2YjQ4
NTRlZjAzMDI3Yjg1ODE0NDAzLi41ODNlMDBjNGUzMTQ2OTllYTFmNTQyZmUzNjkyNGJlZDBlMjFi
Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFVzZXJQYXNzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIGNvbnN0IFN0cmluZyB1c2VyKCkgY29uc3QgeyByZXR1cm4gbV91cmwudXNlcigp
OyB9Ci0gICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwucGFz
cygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwu
cGFzc3dvcmQoKTsgfQogCiAgICAgdm9pZCBzZXREZWZhdWx0QXV0aE1ldGhvZCgpIHsgbV9hdXRo
TWV0aG9kID0ga0NVUkxBVVRIX0FOWTsgfQogICAgIHZvaWQgc2V0QXV0aE1ldGhvZChsb25nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0KaW5kZXggNzY3YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEw
NzJkNi4uZWU2MDNkNzIyZjQxZDBkNmY3YzQ2YjkwNmZiN2E1NTEwNTIwZjM3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0KQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAj
ZW5kaWYKIHsKICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBp
biBVUkwsIHRoZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTog
ZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5
KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8
ICFkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZp
cnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIo
ZC0+bV91c2VyKTsKLSAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNz
KTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3N3b3JkKGQtPm1fcGFzc3dvcmQp
OwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKICAg
ICB9CiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgJiYgZmlyc3RSZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIGlmIChkLT5tX3Vz
ZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGQtPm1f
dXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBh
dGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50
aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHBy
ZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KICAgICAgICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkp
CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWwKICAgICAgICAgICAg
IC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5n
IGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQg
YWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhl
bnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCiAgICAgICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2Uo
KS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3Vz
ZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgp
LnVybCgpKTsKKyAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRp
YWwoZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwg
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQz
NSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogCiAgICAgY29uc3QgVVJMJiB1
cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgZC0+
bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7
CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJl
cXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT25seSBjb25zaWRlciBh
cHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5IGEg
cmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwgZGlkbid0IGluY2x1ZGUg
Y3JlZGVudGlhbHMgb2YgaXRzIG93bi4KLSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkg
JiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewor
ICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHko
KSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICAgICAgQ3JlZGVudGlh
bCBjcmVkZW50aWFsOwogICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgICAgICAgICBjcmVk
ZW50aWFsID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChy
ZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNTIxLDE3ICs1MjEs
MTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICBpZiAoIWNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAg
ICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBbW05TVVJMQ3JlZGVudGlhbCBhbGxv
Y10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzcwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl07
CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkp
IHsKKyAgICAgICAgYXV0byBjcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBh
bGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgorICAgICAgICAgICAgcGFzc3dvcmQ6ZC0+bV9w
YXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25d
KTsKICAgICAgICAgZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlID0gY2hhbGxlbmdlLm5zVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKICAgICAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdl
ID0gY2hhbGxlbmdlOwotICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBDcmVk
ZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgW2NyZWRlbnRpYWwgcmVsZWFzZV07CisgICAg
ICAgIHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UsIENyZWRlbnRpYWwoY3JlZGVudGlhbC5n
ZXQoKSkpOwogICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNl
ciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3Jy
ZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAgZC0+bV91c2VyID0gU3RyaW5n
KCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3b3Jk
ID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDI4ZDg3M2M0NjEyZGJk
Y2U0MTc5YzNhMzhlZDBkYzBhNTBiODg3OGEuLjcxODNmOTA1NmE4MGQwZTM2ZmZkYTcwZmQyMWI0
ZGY3ZmE3MGQ1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFP
YmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIHRpdGxlID0gdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHRpdGxlID0gdXJsLmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KQEAg
LTU3OSwxMCArNTc5LDEwIEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JU
aXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgICAgIC8vIHRo
ZSBwYXRoLiBJZiB3ZSBjYW4ndCBmaW5kIGl0LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUg
bmFtZSBmb3IgYSBsaW5rCiAgICAgICAgIC8vIHdlIGp1c3QgdXNlIHRoZSBlbnRpcmUgdXJsLgog
ICAgICAgICBEV09SRCBsZW4gPSBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb247Ci0g
ICAgICAgIFN0cmluZyBsYXN0Q29tcG9uZW50ID0ga3VybC5sYXN0UGF0aENvbXBvbmVudCgpOwor
ICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQgPSBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAg
ICAgICAgIGlmIChrdXJsLmlzTG9jYWxGaWxlKCkgfHwgKCFpc0xpbmsgJiYgIWxhc3RDb21wb25l
bnQuaXNFbXB0eSgpKSkgewogICAgICAgICAgICAgbGVuID0gc3RkOjptaW48RFdPUkQ+KGZzUGF0
aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgbGFzdENvbXBvbmVudC5sZW5ndGgoKSk7Ci0g
ICAgICAgICAgICBTdHJpbmdWaWV3KGxhc3RDb21wb25lbnQpLnN1YnN0cmluZygwLCBsZW4pLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CisgICAgICAgICAgICBsYXN0
Q29tcG9uZW50LnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZz
UGF0aEJ1ZmZlcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZW4gPSBzdGQ6Om1p
bjxEV09SRD4oZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uLCB1cmwubGVuZ3RoKCkp
OwogICAgICAgICAgICAgU3RyaW5nVmlldyh1cmwpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CkBAIC03MDgsNyArNzA4LDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQog
CiAgICAgU3RyaW5nIHRpdGxlKHBhc3RlYm9hcmRVUkwudGl0bGUpOwogICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5sYXN0UGF0aENv
bXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHBhc3RlYm9hcmRVUkwudXJsLmxhc3RQYXRoQ29t
cG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVSTC51cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCmluZGV4IDJjNmM3
MGU4NDk5NWMyOWFjMThmZjNjOTU0OWM3ODk5NjhjYTAxY2EuLmRjYjQzMGIyMmY3NTQ2YmFkMzk3
MDU4MzkzZDg0MmFiNGUwNmVhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHAKQEAgLTE2NSwxNyArMTY1LDE0IEBAIGJvb2wgQnVpbGRlclN0YXRlOjpjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRp
CiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CiAgICAgZm9yIChhdXRvJiBjdXJy
ZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGluVmFsdWUpKSB7Ci0KICAgICAgICAg
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUpKSB7CiAgICAgICAgICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50
VmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS5pc1VSSSgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0g
cHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9u
ID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgICAgICAgICBhdXRvIGZpbHRlclVSTCA9IHByaW1p
dGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIGZyYWdtZW50ID0gZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChmaWx0ZXJVUkwpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAg
ICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKGZpbHRlclVSTCwgZnJhZ21lbnQudG9TdHJpbmcoKSkpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckxvY2F0aW9uLmNwcAppbmRleCBkNzllODAwODgwODUwMDVmMWUyMzg1YTA4MWJhMTYwYWZhYmYy
MjM5Li4wMTcxY2I0NzZiYzYwZTAyNGM3MDIyM2RiZGRlOGRjMThmMTU1NWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcApAQCAtNTMsMjMgKzUzLDI0IEBAIFN0
cmluZyBXb3JrZXJMb2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgV29ya2VyTG9j
YXRpb246OnBvcnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5wb3J0KCkgPyBTdHJpbmc6
Om51bWJlcihtX3VybC5wb3J0KCkudmFsdWUoKSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8g
cG9ydCA9IG1fdXJsLnBvcnQoKTsKKyAgICByZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVyKCpw
b3J0KSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cGF0aG5h
bWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0aCA9IG1fdXJsLnBhdGgoKTsKLSAgICByZXR1cm4g
cGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBhdGgu
aXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJM
b2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwucXVlcnkoKS5pc0Vt
cHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgbV91cmwucXVlcnkoKTsKKyAgICByZXR1cm4g
bV91cmwucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBXb3JrZXJMb2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBtX3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91cmwuZnJhZ21lbnRJZGVudGlm
aWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdvcmtl
ckxvY2F0aW9uOjpvcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmlu
ZGV4IDBkNTNiY2Y5MjNlZDYxMjY1MzlmMzVkZDJiOTQ5Y2ExNGI3YjU2N2MuLjE4OTZjMjQxMWI1
ZGMwYmY2ODJmNDI1MDg4ZTNlNjg5NjBkMmNhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleShTZWN1cml0eU9yaWdpbkRhdGEmJgogICAgIDogbV90
b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pKQogICAgICwgbV9zY29wZShXVEZNb3ZlKHNjb3Bl
KSkKIHsKLSAgICBBU1NFUlQoIW1fc2NvcGUuaGFzRnJhZ21lbnQoKSk7CisgICAgQVNTRVJUKCFt
X3Njb3BlLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKIH0KIAogU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjplbXB0eUtleSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxNTI4MTU1ODI1Njk4MWE0ODM4Y2Q2
MzczYjM2NzFhNWVkMDQwYWY5Li5hMGRlNDlmMDg4NDRhODZjNmUzMjk3NWNjNGJkNzA0Njc1YjJh
ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgaWYgKCF1c2VyLmlzTnVsbCgpKQogICAg
ICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICBpZiAoIXBhc3N3b3Jk
LmlzTnVsbCgpKQotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhwYXNzd29yZCk7
CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAKICAg
ICByZXR1cm4gb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CmluZGV4IDllMGI2ODJjZGVkMmFmYmJmNTdhMDI4NDlkYzNiNzlkNzlhNzY3MjEuLjk1NWQzODhl
NWU5NmUzNTE5OTM2NzRmYjk0OWVhODdhZjNmZDMxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRpcmVjdGlvbihSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcQogICAgICAgICAgICAgaGFuZGxlcihyZWRpcmVj
dGlvbkVycm9yKHJlZGlyZWN0UmVzcG9uc2UsIG1ha2VTdHJpbmcoIkNyb3NzLW9yaWdpbiByZWRp
cmVjdGlvbiB0byAiLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgZGVuaWVkIGJ5
IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogbm90IGFsbG93ZWQgdG8gZm9s
bG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hlbWUi
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhdGlv
bi5oYXNVc2VybmFtZSgpIHx8IGxvY2F0aW9uLmhhc1Bhc3N3b3JkKCkpIHsKKyAgICAgICAgaWYg
KGxvY2F0aW9uLmhhc0NyZWRlbnRpYWxzKCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIocmVkaXJl
Y3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVk
aXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIGRlbmllZCBi
eSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6IHJlZGlyZWN0aW9uIFVSTCAi
LCBsb2NhdGlvbi5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlhbHMiKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZENo
ZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgQ28KICAgICBodHRwc1VwZ3JhZGVDaGVja2VyLnF1ZXJ5KHVybC5ob3N0KCkudG9TdHJpbmco
KSwgbV9zZXNzaW9uSUQsIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdU
Rk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9zdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChm
b3VuZEhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gbmV3VVJMID0gcmVxdWVzdC51cmwoKTsKLSAg
ICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAgICAgICAgICAgbmV3
VVJMLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwobmV3
VVJMKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAwYzg4MDU2M2RmZDJh
NGNhN2ExZTZkNmRlNjMyMzMwNGI3NWFkYzIyLi40Mzc3N2E5ZGUzYjZjZDU1OGUwOTRhZjg1NWM3
YmRiZjYzMWQ4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTIxOSw3ICsyMTksNyBAQCBO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKICAg
ICBpZiAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZSAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAg
IG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOwor
ICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgIHJlcXVlc3QucmVt
b3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAKQEAg
LTM3Nyw3ICszNzcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIAogICAgIGNvbnN0
IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAg
ICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3Jk
KCk7CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJl
cXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwu
aAppbmRleCAyZDc3NjM0NWUyMjQ5NmNiODc1MGMyZTYxNDljZDA2NmFjMGM3ODAzLi40YzgzOGFm
YjczMDU5NjM1ODkzOWFmYjViYjQ1NjRkMDBhOGE2MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTC5oCkBAIC02MywyNSArNjMsMjUgQEAgcHVibGljOgogICAgIFdURjo6U3RyaW5nIGhvc3Qo
KSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBy
ZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5ob3N0KCkudG9TdHJp
bmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aG9zdCgp
LnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgcHJvdG9jb2woKSBjb25zdAog
ICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4gbV9w
YXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCkg
OiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnByb3RvY29sKCku
dG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBwYXRoKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2Vk
VVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0
cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnBhdGgoKS50b1N0cmluZygpOwog
ICAgIH0KIAogICAgIFdURjo6U3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7
CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2Vk
VVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKSA6IFdURjo6
U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQo
KS50b1N0cmluZygpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rv
d25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW0KaW5kZXggYjFjMzZkYjJjMDQ2OGE2NTFkNjQ3NmEyZjlkZWNkYjMyOTY1YmRkZC4u
MDdjZDEwZjJhM2RmOTkwYzg2NmUwZWU4OWM5OWEwNjM1MGZiZjllMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KQEAgLTIyMCw4ICsyMjAs
OCBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHku
aXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewogICAgICAgICBpZiAoYXV0byogY29udHJvbGxl
ciA9IHN5c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAgICAg
ICBXVEY6OlVSTCBkZXN0aW5hdGlvblVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKLSAgICAgICAgICAg
IGlmICghZGVzdGluYXRpb25VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkubGVuZ3RoKCkpCisgICAg
ICAgICAgICBhdXRvIGRlc3RpbmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5
c3RlbVBhdGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOworICAgICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvblVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAg
ICAgICAgICBkZXN0aW5hdGlvblVSTC5zZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQcm94
eS5yZXF1ZXN0KCkudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY29u
dHJvbGxlci0+ZmluaXNoKGRlc3RpbmF0aW9uVVJMKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGNj
MDRlNTUwYmY2ZWE2OTNjOGI4ZmUyOGNlNGQ5ZjIwNzIxZDcyMjYuLjY5YzEwYjhkZGRlMzVkZDZj
Nzk3MDIyYzViMjE5NGZhZDhmNGYyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTExMywxNSArMTEzLDkgQEAgdm9p
ZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hNYXAKIAogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICAgICAgYXV0
byBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKLQogICAgICAgICBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPEhhc2hTYWx0Rm9yT3JpZ2luPj4gZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdp
bnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7
Ci0gICAgICAgICAgICBVUkwgdXJsOwotICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxl
Il9zKTsKLSAgICAgICAgICAgIHVybC5zZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgICAg
ICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAg
ICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1f
ZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgICAgIGF1
dG8gZGV2aWNlSWRIYXNoU2FsdCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChvcmln
aW5QYXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAKICAgICAgICAgICAgIGlm
IChoYXNoU2FsdFNpemUgIT0gZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgoKSkgewogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNh
bHRTdG9yYWdlOiBUaGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHNhbHQgKCVkKSBpcyBkaWZmZXJlbnQg
dG8gdGhlIGxlbmd0aCBvZiB0aGUgaGFzaCBzYWx0cyBkZWZpbmVkIGluIFdlYktpdCAoJWQpIiwg
ZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgoKSwgaGFzaFNhbHRTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBkMzA1
NTUzMDgwNDYyMzgxMzFmMGJmZWQ0MmQ1ZjMwMTFmMmIxZTI1Li5iN2FmNWNkYWViNWQwM2IzMDli
YWRiZDk2MzUzYTU2YmZiZDJmN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC0xNDUsMTYgKzE0NSwxNSBAQCBQbHVn
aW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbgogICAgIHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCitzdGF0
aWMgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nIGV4
dGVuc2lvbjsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsK
LSAgICBpZiAoIWZpbGVuYW1lLmVuZHNXaXRoKCcvJykpIHsKLSAgICAgICAgc2l6ZV90IGV4dGVu
c2lvblBvcyA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgICAgIGlmIChleHRlbnNp
b25Qb3MgIT0gbm90Rm91bmQpCi0gICAgICAgICAgICBleHRlbnNpb24gPSBmaWxlbmFtZS5zdWJz
dHJpbmcoZXh0ZW5zaW9uUG9zICsgMSk7Ci0gICAgfQotICAgIHJldHVybiBleHRlbnNpb24uY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRo
Q29tcG9uZW50KCk7CisgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgc2l6ZV90IGxhc3REb3RQb3NpdGlvbiA9IGZpbGVuYW1lLnJldmVyc2VG
aW5kKCcuJyk7CisgICAgaWYgKGxhc3REb3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyaW5nKGxhc3REb3RQb3NpdGlv
biArIDEpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjOTdlMGFl
Nzk1YTkxNzdiYjNmNTZkMGQwMWRhOTYxM2FhZGYyYzUwLi42ZDU1MDY1ZjUxNzBiOWJhNmUwMGEy
NDljMGRjNTg0MTk5OTc2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRp
YWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAjZW5k
aWYKIAogICAgIC8vIFdlIGZhaWxlZCB0byBpc3N1ZSBhbiB1bml2ZXJzYWwgZmlsZSByZWFkIGFj
Y2VzcyBzYW5kYm94LCBmYWxsIGJhY2sgdG8gaXNzdWluZyBvbmUgZm9yIHRoZSBiYXNlIFVSTCBp
bnN0ZWFkLgotICAgIGF1dG8gYmFzZVVSTCA9IFVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygp
KTsKKyAgICBhdXRvIGJhc2VVUkwgPSB1cmwudHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCk7CiAgICAg
YXV0byBiYXNlUGF0aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAoYmFzZVBh
dGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxODgsNyArNTE4OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAh
bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCiAg
ICAgICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQotICAgICAg
ICAgICAgJiYgKG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUtPnVybCgp
LCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlKQorICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYm
IG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCiAgICAg
ICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3Jl
OjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICAgICAgYXV0byBuYXZpZ2F0aW9u
QWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8u
cHRyKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVy
bCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwg
bWFpbkZyYW1lTmF2aWdhdGlvbik7CkBAIC01MzE0LDcgKzUzMTQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBGcmFtZQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwogCiAgICAgICAgIGF1dG8gdXNlcklu
aXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdh
dGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWlu
RnJhbWUtPnVybCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlOworICAgICAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkg
IT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9
IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShy
ZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0
ZWRBY3Rpdml0eSkpOwogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92
ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAtNTUxMiw3ICs1NTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgT3B0aW8KIAogICAgICAgICByZXBseShuZXdQYWdlLT53ZWJQYWdlSUQoKSwgbmV3UGFnZS0+
Y3JlYXRpb25QYXJhbWV0ZXJzKG1fcHJvY2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVhKCkpKTsK
IAotICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVSTCks
IHJlcXVlc3QudXJsKCkpOworICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlu
a3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBVUkwoeyB9LCBtYWluRnJhbWVVUkwp
Lmhvc3QoKSA9PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKIAogI2lmIEhBVkUoQVBQX1NTTykKICAg
ICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbiA9IHRydWU7CkBAIC01NTIwLDcgKzU1MjAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBPcHRpbwogICAgIH07CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRh
LnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICBib29sIHNob3VsZE9wZW5BcHBMaW5r
cyA9ICFob3N0c0FyZUVxdWFsKG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCks
IHJlcXVlc3QudXJsKCkpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2luYXRp
bmdGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0
KCk7CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZv
LnB0cigpLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBz
aG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAg
ICB0cnlTT0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRoaXMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVhdHVyZXMpXSAoUmVmPEFQ
STo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRh
YmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDJhZWRkYWQwMTc0YTllNjk5NTY1ZDJmZjE4ZWFiNTBmNjNjODY2ZTQuLjI3ZWRmMTZmYTYwNmZm
NWE3ZmU5YWVhOTZkOWYzYTg0MWYyODRlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTYyLDExICs1NjIsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25z
dCBTdHJpbmcKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJpbmcgZG9lcyBu
b3QgcG9pbnQgdG8gYSBkaXJlY3RvcnkuCiAgICAgLy8gR2V0IHVybCdzIGJhc2UgVVJMIHRvIGFk
ZCB0byBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuCi0gICAgVVJMIGJhc2VVUkwo
VVJMKCksIHVybC5iYXNlQXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHBhdGggPSBiYXNlVVJMLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnRydW5jYXRlZEZvclVzZUFzQmFz
ZSgpLmZpbGVTeXN0ZW1QYXRoKCk7CiAgICAgaWYgKHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBU
aGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2Vz
cyBpcyBhc3N1bWVkCiAgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9y
eSBhbHJlYWR5LgogICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggODdjYjhiNzA1NDM5
NmQ3ZWY2NjFmMGY0N2U2ZjU4YWQ4Zjc2N2JiZC4uNmVlZjRhMjRkODM3MGM5YmIxYWFlZDkxYTFh
NjY5YTZhODE3YWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAt
NDE2LDcgKzQxNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5k
RG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICBmb3Ig
KE5TU3RyaW5nICpkb21haW4gaW4gZG9tYWlucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIFVS
TCB1cmwgeyBVUkwoKSwgZG9tYWluIH07CiAgICAgICAgICAgICAgICAgaWYgKHVybC5wcm90b2Nv
bCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJodHRw
cyJfcyk7CisgICAgICAgICAgICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFwcEJv
dW5kRG9tYWluIHsgdXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4
IDkwMzk5MGJmOTRlODM4NWZkZTlmMTU0YzNkMzVkYWU1MzNkMDAwM2IuLjQ4NzUxYWJmNDgzMjQ1
ODk2MWJlNzNhYTVhNTk1YjA1ZGVjZWFmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC02MCwxOSArNjAsMTAgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKICAgICBpZiAobV9t
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
czsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICBVUkwgdXJsOwotICAg
ICAgICB1cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgICAgICB1cmwuc2V0UGF0aChvcmln
aW5QYXRoKTsKLQotICAgICAgICBTdHJpbmcgbWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxhc3RQ
YXRoQ29tcG9uZW50KCk7Ci0KLSAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpOwot
ICAgICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgcmVzdWx0cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9y
aWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LCAiKiIpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFVSTDo6ZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aChvcmlnaW5QYXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5n
KCk7CisgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IGFlZDMwMWE1NGRkOTliZWI2OGZiMTQzOGQyZDFjMjU0ZDAzMDE2ZTQuLmU0ZWZhNDgw
OWYwYTNmZjUwYTYxNmZlMTFhNzUwNTg5YTQ3OGVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTU2MiwxMCArMTU2Miw4
IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQogICAgIGlmIChbbV9wZGZE
b2N1bWVudCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7CiAK
LSAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pIHsKLSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdtZW50ID0g
bV9mcmFtZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgW21fcGRmTGF5ZXJD
b250cm9sbGVyIHNldFVSTEZyYWdtZW50OnBkZlVSTEZyYWdtZW50XTsKLSAgICB9CisgICAgaWYg
KFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVS
TEZyYWdtZW50OildKQorICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21l
bnQ6bV9mcmFtZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS5jcmVhdGVOU1N0cmluZygpLmdl
dCgpXTsKIH0KIAogdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApp
bmRleCA3NjhiYTJkN2M0Njg2YzA2ZWU5NzRhYmJkNjUyNTQxMWYzYmJjYzkzLi40MWQzZWQ4NWUz
MzdjNTE2Y2I1Y2RlMGQ5N2NlMjE4Y2EyMTUxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5jcHAKQEAgLTI0LDE3ICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgotCiAjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnUuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQyLDcgKzM4LDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OmNvbnRleHRNZW51RGVzdHJveWVkKCkKIHsKQEAgLTU2LDE5ICs1MSwyMSBAQCB2b2lk
IFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogfQogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdv
b2dsZShjb25zdCBGcmFtZSogZnJhbWUpCisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNl
YXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmlu
ZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2Vh
cmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2Rl
V2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFj
ZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93
d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgi
OworICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
OworICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcg
PSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNo
U3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJM
IHsgeyB9LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5n
ICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hh
bmdlTG9jYXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rv
cnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAg
fQorICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6
OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmNoYW5nZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlz
dG9yeTo6Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZl
cnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikKQEAgLTkxLDE0ICs4OCwxOCBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CisKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9N
RU5VUykKKwogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKIHsK
ICAgICBtX3BhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKIH0KKwogI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggODA5NGE2MjgyMjYxYjVlODM5NzQ1ZDg2ZTYw
NDNhZjRjZTZjNzIzOC4uMzBjNmZmZTIzZjFlNDlmMTVmNjY4MzhiNjg0MWI1NjYyYzdlZWYxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBTdHJpbmcgdGl0bGUgPSBsYWJlbDsKICAgICBpZiAo
dGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CisgICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsK
ICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
aW5kZXggYzg0NDhjNWFjMWY0MzYyZTQ0MDNjM2FjMjlhMjg2YTlhZjVlYmI4ZS4uY2NhZTIxMmM1
NmNhNDg5MWI2N2M2ZDNiZWU0Y2QzMzE5MmIyYTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTg4Miw3ICs4ODIsNyBAQCBzdGF0aWMgQk9PTCBzaG91bGRUcnlBcHBMaW5rKFdl
YlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mCiAgICAgaWYg
KCFhY3Rpb24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBOTzsKIAot
ICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSAmJiBob3N0c0Fy
ZUVxdWFsKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgYWN0aW9uLnVybCgpKSkKKyAg
ICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgdGFyZ2V0RnJh
bWUtPmRvY3VtZW50KCktPnVybCgpLmhvc3QoKSA9PSBhY3Rpb24udXJsKCkuaG9zdCgpKQogICAg
ICAgICByZXR1cm4gTk87CiAKICAgICByZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTgxYzMwYjdhOTk4NjM4MzliMDUxYzQ1OWFm
ZTA1ZTAyNzhlZDRkYS4uYzg0MGJjMWQ2MmRkNWRhOGZiMDgzNjU3NGMwYmQ0MWE5ZjE2Y2M0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yMjk1
LDE0ICsyMjk1LDEwIEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVu
dEZvcldlYkFyY2hpdmU6KFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKERPTURvY3VtZW50
RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTooTlNEYXRhICopZGF0YSB3
aXRoUmVsYXRpdmVVUkxQYXJ0OihOU1N0cmluZyAqKXJlbGF0aXZlVVJMUGFydCBhbmRNSU1FVHlw
ZTooTlNTdHJpbmcgKiltaW1lVHlwZQogewotICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9IFtb
V2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdp
dGhSZWxhdGl2ZVBhcnQocmVsYXRpdmVVUkxQYXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTptaW1lVHlwZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZU5hbWU6bmlsXTsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiBf
ZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZV07
Ci0gICAgW3Jlc291cmNlIHJlbGVhc2VdOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBhdXRv
IHJlc291cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0
YQorICAgICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmcgeyByZWxh
dGl2ZVVSTFBhcnQgfSkKKyAgICAgICAgTUlNRVR5cGU6bWltZVR5cGUgdGV4dEVuY29kaW5nTmFt
ZTpuaWwgZnJhbWVOYW1lOm5pbF0pOworICAgIHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2VdIF9k
b2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2UuZ2V0KCldOwogfQogCiAt
IChCT09MKWZvY3VzZWROb2RlSGFzQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNTIwZWE1NjY0YWYyODc1NjlhODU1Yzc0Yjgx
Y2VhNTRjN2U4ZTIwMi4uZWY4NjJlNWFhYWFhMDk0N2EzYjcxMGQwN2JiY2U3ODg4ZDczZDBiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBA
IC0yMzA2LDcgKzIzMDYsNyBAQCAtICh2b2lkKWNsb3NlCiAKIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfd2ViX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICop
cGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZTooTlNTdHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbWFn
ZU1JTUVUeXBlOihOU1N0cmluZyAqKWltYWdlTUlNRVR5cGUKIHsKLSAgICBhdXRvIGZpbGVuYW1l
ID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5nOkAi
LyIgd2l0aFN0cmluZzpAIi4iXTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlw
ZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAi
LiJdOwogICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV0KICAgICAg
ICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoZmlsZW5hbWUpIE1JTUVUeXBlOmlt
YWdlTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOwogICAgIHJl
dHVybiBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3Vy
Y2U6cmVzb3VyY2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGFh
NTFiNjM5NDg4OGE3MGI3ZjBkOWRiYTA1MWZlMjViMWUxNmZmOTcuLmYxNDE4NjMwZWY2ZTlkYTJj
MzM5ZjBhZDFlZDhlZTY2OWE4ODg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0K
QEAgLTI1NSw3ICsyNTUsNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKICAgICAgICAgcmV0dXJuIFtbW1dl
YkFuaW1hdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKIAogICAgIE5T
VVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBOU1N0cmlu
ZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBTdHJpbmcg
YWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYm
IF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoV1RGOjpwcm90b2Nv
bElzKGFic29sdXRlVVJMU3RyaW5nLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBlID0g
V2ViSW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cAppbmRleCBjMjY1ZTA4M2UxZjdjOWFmYzgzYmM4ZTAxZThmNDRlZWY3YWI1M2I5Li4xNDJlMWMz
MTY2Y2FhZGFjZDM1ZGE4MmNjNmIzY2U0NDJmNGI2NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCkBAIC0yNSwyMSArMjUsMTQgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
Q2xpZW50LmgiCiAKLSNpbmNsdWRlICJXZWJFbGVtZW50UHJvcGVydHlCYWcuaCIKLSNpbmNsdWRl
ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Vk
aXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1
cmVJbmRpY2F0b3IuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIFdlYkNvbnRleHRN
ZW51Q2xpZW50OjpXZWJDb250ZXh0TWVudUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC01NywxNyArNTAsMTggQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiAKIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewotICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0g
ICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0g
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQu
cmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0
cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9
VVRGLTgiOworICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVk
VGV4dCgpOworICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hT
dHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAg
c2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJM
ID0gVVJMIHsgeyB9LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNo
U3RyaW5nICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Io
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkuY2hhbmdlTG9jYXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVt
cHR5U3RyaW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
Ci0gICAgfQorICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdl
YkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpM
b2NrSGlzdG9yeTo6Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3Jl
OjpSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNs
aWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNzBjNDk5ZjNkNjJlOGNiMmZmNTg5YmJjZmQ1
N2M1NzEzZDE5ZTAzLi5mM2RjMzc5MzVlNjVlZDkzMzAwZjk3ZjhiNzE5M2U4OTY2OWY4NTdmIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmlu
Z3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwOiBSZW1vdmVkIHRoZSB0ZXN0
IGZvcgorICAgICAgICBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCBzaW5jZSB3ZSByZW1v
dmVkIHRoYXQgZnVuY3Rpb24uCisgICAgICAgIFVwZGF0ZWQgZm9yIHJlbmFtZSBvZiBVUkw6OnBh
c3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAgICAgICBVcGRhdGVkIGFyZ3VtZW50cyB0byBpc01h
dGNoaW5nRG9tYWluIHRvIHBhc3MgbGl0ZXJhbHMgdGhhdCBjYW4gYmUgY29udmVydGVkCisgICAg
ICAgIHRvIFN0cmluZ1ZpZXcgcmF0aGVyIHRoYW4gQVNDSUlMaXRlcmFsLCB3aGljaCBTdHJpbmdW
aWV3IGRvZXNuJ3QgeWV0IHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrVVJMKTogVXBkYXRlZCBmb3IgcmVuYW1lIG9mIFVSTDo6cGFzc3dvcmQgZnJvbSBV
Ukw6OnBhc3MuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKTogRGl0
dG8uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2VzKTogRGl0dG8u
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOiBE
aXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RVc2VyUGFzc3dvcmQpOiBEaXR0by4K
KwogMjAyMC0wNC0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gQnJpbmcgYmFjayBzdXBwb3J0IGZvciByZW5kZXJpbmcgc2Nyb2xs
YmFycyB1c2luZyB0aGUgc3lzdGVtIGFwcGVhcmFuY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9VUkwuY3BwCmluZGV4IDkzN2I5Zjk0MGJmOTExM2ZjZTM3MjNmYWYwYzVlNWJmNmIxYzg3ZGUu
LjZiZjI3NWE1MThkNDdhMGUyZjIxNzk0YTA3OGQ2MTljZTdjNTFmZDEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVJMLmNwcApAQCAtNjEsNyArNjEsNyBAQCBURVNUX0YoV1RGX1VSTCwg
VVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAgICAgRVhQRUNUX1RSVUUoISFrdXJsLnBvcnQoKSk7
CiAgICAgRVhQRUNUX0VRKDgwODAsIGt1cmwucG9ydCgpLnZhbHVlKCkpOwogICAgIEVYUEVDVF9F
UShTdHJpbmcoInVzZXJuYW1lIiksIGt1cmwudXNlcigpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJwYXNzd29yZCIpLCBrdXJsLnBhc3MoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygicGFzc3dv
cmQiKSwga3VybC5wYXNzd29yZCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXguaHRt
bCIpLCBrdXJsLnBhdGgoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIpLCBr
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12YWwi
KSwga3VybC5xdWVyeSgpKTsKQEAgLTI2MSw1NyArMjYxLDYgQEAgVEVTVF9GKFdURl9VUkwsIEVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIpCiAgICAgfQogfQogCi1URVNUX0YoV1RGX1VS
TCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCi17Ci0gICAgc3RydWN0IFRlc3RDYXNl
IHsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMTsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMjsK
LSAgICAgICAgYm9vbCBleHBlY3RlZDsKLSAgICB9IGNhc2VzW10gPSB7Ci0gICAgICAgIHsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVl
fSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
L3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
IiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkjaGFzaCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwg
dHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyNoYXNoIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MC9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwK
LSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhh
bXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9w
YXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNv
bS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9ub3QtZXhhbXBsZS5jb206ODAvIiwg
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tOjgxLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgdHJ1
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCAiaHR0cDovL2V4YW1w
bGUuY29tOjgxIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRo
I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb206ODEv
cGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5
I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9w
YXRoIiwgZmFsc2V9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCAiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWwjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0g
ICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSIsICJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRt
bD9xdWVyeSNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAg
ICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXJfZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9m
aWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyL2ZpbGUu
aHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAotICAgICAgICB7ImRh
dGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iLCAiZGF0YTp0
ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2MC83NjAvNzYwLyIsIGZhbHNlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZTovL2V4YW1wbGUuY29tIiwgZmFsc2V9
LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5j
b20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSIsICJmaWxl
Oi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8/
cXVlcnkjaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgIH07Ci0KLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgewotICAgICAgICBVUkwgdXJsMSA9IGNy
ZWF0ZVVSTCh0ZXN0LnVybDEpOwotICAgICAgICBVUkwgdXJsMiA9IGNyZWF0ZVVSTCh0ZXN0LnVy
bDIpOwotICAgICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3RlZCwgZXF1YWxJZ25vcmluZ1F1ZXJ5
QW5kRnJhZ21lbnQodXJsMSwgdXJsMikpCi0gICAgICAgICAgICA8PCAiVGVzdCBmYWlsZWQgZm9y
ICIgPDwgdGVzdC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51cmwyOwotICAgIH0KLX0KLQogVEVT
VF9GKFdURl9VUkwsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkpCiB7CiAgICAgRVhQRUNUX0ZBTFNF
KFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKQEAgLTM3NiwyMiArMzI1LDIyIEBA
IFRFU1RfRihXVEZfVVJMLCBIb3N0SXNNYXRjaGluZ0RvbWFpbikKIAogICAgIEVYUEVDVF9UUlVF
KHVybC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0pKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwu
aXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlz
TWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5n
RG9tYWluKCJ3ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdE
b21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7CisgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hp
bmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigi
d2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3
LndlYmtpdC5vcmciKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4o
InJnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCIub3JnIl9z
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3dy53ZWJraXQub3Jn
Il9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJodHRwOi8vd3d3
LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4o
InJnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigiLm9yZyIpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3LndlYmtpdC5vcmciKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJodHRwOi8vd3d3LndlYmtp
dC5vcmciKSk7CiAKICAgICB1cmwgPSBjcmVhdGVVUkwoImZpbGU6Ly8vd3d3LndlYmtpdC5vcmci
KTsKIAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0pKTsK
ICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJvcmciX3MpKTsKLSAgICBFWFBF
Q1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBF
Q1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJvcmciKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIikpOworICAgIEVYUEVDVF9GQUxT
RSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciKSk7CiAKICAgICBVUkwgZW1w
dHlVUkw7CiAgICAgRVhQRUNUX0ZBTFNFKGVtcHR5VVJMLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5n
IHsgfSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFy
c2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKaW5k
ZXggMTAzOWU1NGIxYWViN2MyNjFmNWEyYWMzOTI4ZTExOTg3M2IzNmNjOC4uMDhhM2E5ZTk4ODNk
MDY4YmNjM2ViNWRmMTUxZTYwZjcxYjQwN2M5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNr
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywg
VGVzdFRhCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90
b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5w
b3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
dGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1Jl
bGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxT
dHJpbgogICAgIAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9j
b2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9y
dCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRo
LCB1cmwucGF0aCgpKSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxE
aWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYg
cGEKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3Rv
Y29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7
Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNU
X0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcu
cHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcu
dXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3Jk
LCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVy
bC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhv
c3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKQEAg
LTQ2MiwxOSArNDYyLDE5IEBAIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBCYXNpYykKICAgICBjaGVj
a1VSTCgiaHR0cDovLzpAaG9zdCIsIHsiaHR0cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIsICIi
LCAiIiwgImh0dHA6Ly9ob3N0LyJ9KTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzKGNv
bnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZGVjb2RlZCwgY29uc3QgU3RyaW5nJiBl
bmNvZGVkKQorc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzd29yZChjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBTdHJpbmcmIGRlY29kZWQsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKIHsKICAgICBV
UkwgdXNlclVSTChVUkwoKSwgbWFrZVN0cmluZygiaHR0cDovLyIsIHZhbHVlLCAiQGV4YW1wbGUu
Y29tLyIpKTsKICAgICBVUkwgcGFzc1VSTChVUkwoKSwgbWFrZVN0cmluZygiaHR0cDovL3VzZXI6
IiwgdmFsdWUsICJAZXhhbXBsZS5jb20vIikpOwogICAgIEVYUEVDVF9FUShlbmNvZGVkLCB1c2Vy
VVJMLmVuY29kZWRVc2VyKCkpOwotICAgIEVYUEVDVF9FUShlbmNvZGVkLCBwYXNzVVJMLmVuY29k
ZWRQYXNzKCkpOworICAgIEVYUEVDVF9FUShlbmNvZGVkLCBwYXNzVVJMLmVuY29kZWRQYXNzd29y
ZCgpKTsKICAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgdXNlclVSTC51c2VyKCkpOwotICAgIEVYUEVD
VF9FUShkZWNvZGVkLCBwYXNzVVJMLnBhc3MoKSk7CisgICAgRVhQRUNUX0VRKGRlY29kZWQsIHBh
c3NVUkwucGFzc3dvcmQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RVc2VyUGFzcyhjb25zdCBT
dHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVuY29kZWQpCitzdGF0aWMgdm9pZCB0ZXN0VXNl
clBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKIHsK
LSAgICB0ZXN0VXNlclBhc3ModmFsdWUsIHZhbHVlLCBlbmNvZGVkKTsKKyAgICB0ZXN0VXNlclBh
c3N3b3JkKHZhbHVlLCB2YWx1ZSwgZW5jb2RlZCk7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFyc2Vy
LCBDcmVkZW50aWFscykKQEAgLTQ4MywyMCArNDgzLDIwIEBAIFRFU1RfRihXVEZfVVJMUGFyc2Vy
LCBDcmVkZW50aWFscykKICAgICBhdXRvIGludmFsaWRTdXJyb2dhdGUgPSB1dGYxNlN0cmluZzwz
Pih7MHhEODAwLCAnQScsICdcMCd9KTsKICAgICBhdXRvIHJlcGxhY2VtZW50QSA9IHV0ZjE2U3Ry
aW5nPDM+KHsweEZGRkQsICdBJywgJ1wwJ30pOwogCi0gICAgdGVzdFVzZXJQYXNzKCJhIiwgImEi
KTsKLSAgICB0ZXN0VXNlclBhc3MoIiUiLCAiJSIpOwotICAgIHRlc3RVc2VyUGFzcygiJTI1Iiwg
IiUiLCAiJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlMjUyNSIsICIlMjUiLCAiJTI1MjUiKTsK
LSAgICB0ZXN0VXNlclBhc3MoIiVGWCIsICIlRlgiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUwMCIs
IFN0cmluZzo6ZnJvbVVURjgoIlwwIiwgMSksICIlMDAiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiVG
JTI1IiwgIiVGJSIsICIlRiUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJVglMjUiLCAiJVglIiwg
IiVYJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKLSAgICB0
ZXN0VXNlclBhc3MoIvCfkqkiLCAiJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7Ci0gICAgdGVz
dFVzZXJQYXNzKCIl8J+SqSIsICIlJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7Ci0gICAgdGVz
dFVzZXJQYXNzKHZhbGlkU3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1Iik7Ci0gICAgdGVzdFVzZXJQ
YXNzKHJlcGxhY2VtZW50QSwgIiVFRiVCRiVCREEiKTsKLSAgICB0ZXN0VXNlclBhc3MoaW52YWxp
ZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOworICAgIHRlc3RVc2VyUGFz
c3dvcmQoImEiLCAiYSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUiLCAiJSIpOworICAgIHRl
c3RVc2VyUGFzc3dvcmQoIiUyNSIsICIlIiwgIiUyNSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQo
IiUyNTI1IiwgIiUyNSIsICIlMjUyNSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiVGWCIsICIl
RlgiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlMDAiLCBTdHJpbmc6OmZyb21VVEY4KCJcMCIs
IDEpLCAiJTAwIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJUYlMjUiLCAiJUYlIiwgIiVGJTI1
Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJVglMjUiLCAiJVglIiwgIiVYJTI1Iik7CisgICAg
dGVzdFVzZXJQYXNzd29yZCgiJSUyNSIsICIlJSIsICIlJTI1Iik7CisgICAgdGVzdFVzZXJQYXNz
d29yZCgi8J+SqSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKKyAgICB0ZXN0VXNlclBh
c3N3b3JkKCIl8J+SqSIsICIlJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7CisgICAgdGVzdFVz
ZXJQYXNzd29yZCh2YWxpZFN1cnJvZ2F0ZSwgIiVGMCU5MCU4NSU5NSIpOworICAgIHRlc3RVc2Vy
UGFzc3dvcmQocmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOworICAgIHRlc3RVc2VyUGFzc3dv
cmQoaW52YWxpZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwogfQogCiBU
RVNUX0YoV1RGX1VSTFBhcnNlciwgUGFyc2VSZWxhdGl2ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAK
aW5kZXggYTI2ODE2ZGExNDkxZjZlM2IyMDU3YzY2YTdkY2E0NTlkMTM2MTRkMy4uZTI2MTc5MzM0
MjUyMjQzYmE1ZjE0MTgwZjcyMjRlYjc3NTRkY2ExZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnMKICAgICBhdXRvIHVybCA9
IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dv
cmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAg
ICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xMTgsNyArMTE4LDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNl
VVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1
cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNz
d29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwog
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396772</attachid>
            <date>2020-04-17 10:27:02 -0700</date>
            <delta_ts>2020-04-20 12:42:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200417102700.patch</filename>
            <type>text/plain</type>
            <size>190942</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE2N2M2MDY2NjUyZTQwNjU3MjhlNjdm
M2YyY2E5MDViNWI5N2IwYTQuLmQ4ZDhhZjdhMzQyZjZlZGVjZWZjOGMxY2ZhM2I5ZTQxNmMyNDhj
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTA0LTE2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJZ25vcmluZ051bGxpdHkpOiBBZGRl
ZC4gQ3VycmVudGx5IHRoZSBzYW1lIGFzIGVxdWFsLCBidXQKKyAgICAgICAgY291bGQgYmUgZGlm
ZmVybmV0IGluIHRoZSBmdXR1cmUuCisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmNvbnRhaW5z
IGNvbnN0KTogQWRkZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhCisgICAgICAgIGNvbnN0IGNoYXIq
IHNvIHRoZSBjYWxsIHNpdGUgZG9lc24ndCBoYXZlIHRvIGNvbnZlcnQgaXQgdG8gYSBTdHJpbmdW
aWV3LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBVcGRhdGVkIGZvciB0aGUg
YWRkaXRpb25zIGFib3ZlLgorICAgICAgICBBbHNvIGFkZGVkIGEgZGVmYXVsdCBzdGFydCBvZiAw
IHRvIHRoZSBmaW5kIGZ1bmN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0KTogUmVtb3ZlZCB1bm5lZWRl
ZCBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludFN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGl0dG8uCisgICAg
ICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9VSW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTogRGl0
dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEaXR0by4KKwogMjAyMC0wNC0xNyAgUGVuZyBMaXUg
IDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFudXAgdGhlIG1hY3JvcyBmb3Ig
dmlkZW8gZnVsbHNjcmVlbiBhbmQgcGljdHVyZS1pbi1waWN0dXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3
ZjFmNjZlODU3YTlhM2RiY2M4YWFhZGYwMmI3NjM0NTg2NjI1Ny4uYmUzMGMxMzU4ZDQ3YmM1NDlm
YmE4NzQ3OTJiODUwN2ZiMDk0Y2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAy
MC0wNC0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBV
UkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6Om1hdGNoVVJMcyk6IFJlbW92ZWQgdW5uZWVkZWQgY2FsbHMgdG8gaGFzUXVlcnkuCisK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKTogVXNlIGhhc0NyZWRlbnRpYWxzLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAgICAg
ICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzVmFsaWRVUkxCYXNlZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVZb3VUdWJlVVJMKTogVGFr
ZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6cXVlcnlLZXlzQW5kVmFsdWVzKTogVGFr
ZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVV
UkwpOiBVc2UgYXV0byBzaW5jZSBVUkwgcGllY2VzIGFyZQorICAgICAgICBub3cgcmV0dXJuZWQg
YXMgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3IGFu
ZCBtYWtlU3RyaW5nIHJhdGhlciB0aGFuIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlc291cmNlTmFtZSk6IFVzZSBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1l
bnQgY29uc3QpOgorICAgICAgICBVc2UgU3RyaW5nVmlldy4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKTogVXNlIHNldEhv
c3RBbmRQb3J0LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6ZmluZEFuY2hvckVsZW1lbnRGb3JMaW5rKTogVXBkYXRlIHNpbmNlCisgICAg
ICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5zIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBk
b20vVHJlZVNjb3BlLmNwcDogQWRkZWQgYSBjb21tZW50LgorCisgICAgICAgICogZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOiBVcGRhdGUgc2luY2UKKyAgICAgICAgbGFzdFBh
dGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuIEFsc28gZ290IHJpZCBvZiBzb21lIHN0
cmFuZ2UKKyAgICAgICAgdXNlIG9mIEF0b21TdHJpbmcgdGhhdCB3YXMgbm90IG5lY2Vzc2FyeSBh
bmQgdXNlZCBXVEZNb3ZlIG1vcmUuCisKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOiBV
cGRhdGUgc2luY2UKKyAgICAgICAgbGFzdFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1Zp
ZXcuCisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRUaXRsZUZvckRpc3Bs
YXkgY29uc3QpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxk
ZXIsIGFuZCBTdHJpbmdWaWV3IGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nIGZvciBuYW1lIGFu
ZCBleHRlbnNpb24gdmFsdWVzLgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUpOiBVcGRhdGUg
c2luY2UgbGFzdFBhdGhDb21wb25lbnQKKyAgICAgICAgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisK
KyAgICAgICAgKiBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMpOiBVcGRhdGUgc2lu
Y2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisg
ICAgICAgICogaHRtbC9VUkxVdGlscy5oOiBDaGFuZ2VkIHNldEhvc3QgdG8gdGFrZSBhIFN0cmlu
Z1ZpZXcsIGNoYW5nZWQKKyAgICAgICAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgdG8gY2FsbCB0
b1N0cmluZywgc2luY2UgdGhlIHVuZGVybHlpbmcgVVJMCisgICAgICAgIGZ1bmN0aW9uIG5vdyBy
ZXR1cm5zIGEgU3RyaW5nVmlldy4gVXBkYXRlZCBuYW1lcyBzaW5jZSAicGFzcyIgaXMgbm93Cisg
ICAgICAgICJwYXNzd29yZCIuCisgICAgICAgIChXZWJDb3JlOjpjb3VudEFTQ0lJRGlnaXRzKTog
QWRkZWQuIFJlcGxhY2VzIHVudXN1YWwgZnVuY3Rpb24KKyAgICAgICAgbmFtZWQgcGFyc2VQb3J0
RnJvbVN0cmluZ1Bvc2l0aW9uIGJlY2F1c2Ugd2UgY2FuIHVzZSBTdHJpbmdWaWV3IG5vdworICAg
ICAgICBhbmQgc28gZG9uJ3QgbmVlZCBzdWNoIGFuIHVudXN1YWwgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFk
Q2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdCk6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgQWxzbyByZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZiBBU0NJSUxpdGVy
YWwgdGhhdCBodXJ0cyBwZXJmb3JtYW5jZQorICAgICAgICBhIHRpbnkgYml0LgorICAgICAgICAo
V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nIGNvbnN0KTogVXNlIG1h
a2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2
YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogVXNlIGhhc0Ny
ZWRlbnRpYWxzLgorCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKTogVXBkYXRlIHNpbmNl
IHF1ZXJ5IHJldHVybnMKKyAgICAgICAgU3RyaW5nVmlldy4KKworICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTCk6IFVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1hbmlmZXN0UGF0aCk6IFJldHVybiBhIFN0cmluZ1ZpZXcuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KTogVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uIGNvbnN0KTogVXBkYXRlIHNpbmNlCisg
ICAgICAgIGZyYWdtZW50SWRlbnRpZmVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzcGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1
ZXN0VVJMKTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbCk6IFVwZGF0ZWQgbG9n
IG1lc3NhZ2UuCisKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6IFVwZGF0ZWQgZm9yIFVSTDo6cGFzc3dvcmQg
bmFtZSBjaGFuZ2UKKyAgICAgICAgYW5kIHRvIHVzZSB0aGUgbmV3IHN0cmluZ1dpdGhvdXRRdWVy
eU9yRnJhZ21lbnRJZGVudGlmaWVyIHJhdGhlciB0aGFuIHRoZQorICAgICAgICBvbGQgZXF1YWxJ
Z25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpocmVmIGNvbnN0KTogVXNlIHJlbW92ZUNyZWRl
bnRpYWxzLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnBvcnQgY29uc3QpOiBTdHJlYW1s
aW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwYXRobmFtZSBjb25zdCk6IFVzZSBh
biBBU0NJSUxpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2VhcmNoIGNvbnN0
KTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisgICAgICAgIChXZWJDb3JlOjpM
b2NhdGlvbjo6aGFzaCBjb25zdCk6IFVzZSBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051
bWJlclNpZ24uCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UG9ydCk6IFVzZSBwYXJz
ZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDogQ29k
aW5nIHN0eWxlIHR3ZWFrcy4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVu
c2lvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgVXNlIGNvbnRhaW5zIGluc3RlYWQgb2YgcmV2ZXJz
ZUZpbmQgdG8gY2hlY2sgZm9yIGEgcGVyaW9kIGluIHRoZSBmaWxlbmFtZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpsb2FkKTogVXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCBpcyBhIFN0
cmluZ1ZpZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0lu
dGVybmFsUHJvdG9jb2wpOiBVcGRhdGVkIHRvIHVzZSBtYWtlU3RyaW5nIHNpbmNlCisgICAgICAg
IHNldFByb3RvY29sIHRha2VzIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOiBSZW5hbWVkIG1fcGFzcyB0byBtX3Bhc3N3
b3JkCisgICAgICAgIGFuZCBjYWxsIHBhc3N3b3JkIGluc3RlYWQgb2YgcGFzcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZW1vdmVDcmVkZW50aWFscyk6IFVzZSByZW1v
dmVDcmVkZW50aWFscy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJv
eHlTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6c2V0
VXNlclBhc3MpOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVByb3h5VXJsKTogVXNlIGhhc0NyZWRlbnRpYWxzLCB1cGRhdGVkIGZv
ciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdz
OjpwYXNzd29yZCBjb25zdCk6IFVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKTogVXBk
YXRlZCBmb3IgbV9wYXNzd29yZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3Jk
QmFzZWRBdXRoZW50aWNhdGlvbik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjcmVhdGVTb3VwVVJJIGNvbnN0KTogVXBkYXRlZCBmb3IgcGFzc3dvcmQgbmFt
ZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c291cFVSSVRvVVJMKTogVXBkYXRlZCBmb3Igc2V0UGFzc3dvcmQg
bmFtZSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTCk6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21w
b25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpmaWxlc3lzdGVt
UGF0aEZyb21VcmxPclRpdGxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZSk6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3Bl
cmF0aW9ucyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVy
bnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxp
bmVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTog
VXNlIGFuIEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpz
ZWFyY2ggY29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRp
ZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkpOgor
ICAgICAgICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFtZSBjaGFuZ2UuCisK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9wT3JpZ2luVVJMKTogU2ltcGxpZmllZCBjb2Rl
IHRvIHNldCBwb3J0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luVVJMKTogRGl0dG8uCisKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKwogMjAyMC0wNC0x
NyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgaW5j
bHVkaW5nIHN0eWxlIHJ1bGVzIHJlbGF0ZWQgdG8gbWVkaWEgY29udHJvbHMgaW4gdGhlIFVBIHN0
eWxlIHNoZWV0IHdoZW4gTW9kZXJuIE1lZGlhIENvbnRyb2xzIGFyZSBlbmFibGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGY2MzI0MmZlNzg4ZDFiZjYyN2VmYTE5ZDdjMzRjMmIwMWFhNDk4NzEuLmI5M2JlNDlmOTVm
OWRiZDYxNWMzODYyZjhjNjdhZjNhZWZkOWExZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAK
KzIwMjAtMDQtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhl
IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24pOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQU1VwZ3JhZGVJ
Zk5lZWRlZCBjb25zdCk6CisgICAgICAgIFJlbW92ZSB1c2Ugb2YgQVNDSUlMaXRlcmFsIGZvciBz
ZXRQcm90b2NvbC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0
d29ya0RhdGFUYXNrQ29jb2EpOiBVcGRhdGVkCisgICAgICAgIGZvciBwYXNzd29yZCBuYW1lIGNo
YW5nZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5o
OgorICAgICAgICAoQVBJOjpVUkw6Omhvc3QgY29uc3QpOiBSZW1vdmVkIHZhbGlkaXR5IGNoZWNr
OyBXVEY6OlVSTDo6aG9zdAorICAgICAgICByZXR1cm5zIG51bGwgaWYgdGhlIFVSTCBpcyBpbnZh
bGlkLgorICAgICAgICAoQVBJOjpVUkw6OnByb3RvY29sIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChBUEk6OlVSTDo6cGF0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6Omxhc3RQ
YXRoQ29tcG9uZW50IGNvbnN0KTogRGl0dG8uIEFsc28gYWRkZWQgdG9TdHJpbmcKKyAgICAgICAg
c2luY2UgV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50IG5vdyByZXR1cm5zIGEgU3RyaW5nVmll
dy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6IFVzZSBoYXNGcmFnbWVudElk
ZW50aWZpZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3Jh
Z2VGcm9tRGlzayk6CisgICAgICAgIFJlZmFjdG9yZWQgYSBiaXQgYW5kIHVzZSBmaWxlVVJMV2l0
aEZpbGVTeXN0ZW1QYXRoIGFuZAorICAgICAgICB1cGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9u
ZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGF0aEV4dGVuc2lvbik6IFVw
ZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQKKyAgICAgICAgcmV0dXJucyBhIFN0cmluZ1Zp
ZXcuIFJlZmFjdG9yZWQgYSBsaXR0bGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgVXNlIHRydW5jYXRlZEZvclVzZUFzQmFz
ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKToKKyAgICAgICAgVXNlICE9IHRvIGNvbXBhcmUgaG9zdHMsIHJhdGhlciB0aGFu
IGhvc3RzQXJlRXF1YWwuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YXNzdW1l
UmVhZEFjY2Vzc1RvQmFzZVVSTCk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2Uu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXpl
QXBwQm91bmREb21haW5zKToKKyAgICAgICAgRG9uJ3QgdXNlIEFTQ0lJTGl0ZXJhbCBmb3IgYXJn
dW1lbnQgdG8gc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lucyk6CisgICAgICAgIFVzZSBmaWxl
VVJMV2l0aEZpbGVTeXN0ZW1QYXRoLCBhbHNvIHJlZmFjdG9yZWQgYSBiaXQuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQpOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIGZy
YWdtZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxp
bmVkCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBhIGJpdC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisK
IDIwMjAtMDQtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFZhbGlkYXRlIHNvY2tldCBpbiBOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWVkNmJlMTZhZDBkOTNmOTUwODJm
NzFkNTViOWY4ZTg4MzU4OTFjMy4uYmUyOTk5MmEwMTg2ODdiYzhjNjhlNGYwMWVlYmJjYmEyYTdi
NTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIw
LTA0LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChzaG91bGRUcnlBcHBM
aW5rKTogQ29tcGFyZSBob3N0cyB3aXRoID09IHJhdGhlciB0aGFuIHVzaW5nIGhvc3RzQXJlRXF1
YWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFt
ZSBfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTp3aXRoUmVsYXRpdmVVUkxQYXJ0OmFuZE1J
TUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
IHRha2VzIGEgU3RyaW5nVmlldy4gQWxzbyB1c2UgUmV0YWluUHRyCisgICAgICAgIGluc3RlYWQg
b2YgYW4gZXhwbGljaXQgY2FsbCB0byByZWxlYXNlLgorCisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dlYl9kb2N1bWVudEZyYWdtZW50
RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZFR5cGU6aW1hZ2VNSU1FVHlwZTpdKToKKyAgICAgICAg
VXBkYXRlZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCB0YWtlcyBhIFN0cmluZ1ZpZXcu
IE5vIGNvbnZlcnNpb24KKyAgICAgICAgZGlyZWN0bHkgZnJvbSBOU1N0cmluZyB0byBTdHJpbmdW
aWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3RyaW5nLgorCisgICAgICAgICog
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOiBV
cGRhdGUKKyAgICAgICAgc2luY2UgcHJvdG9jb2xJcyB0YWtlcyBhIFN0cmluZ1ZpZXcuIE5vIGNv
bnZlcnNpb24gZGlyZWN0bHkgZnJvbQorICAgICAgICBOU1N0cmluZyB0byBTdHJpbmdWaWV3LCBz
byB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3RyaW5nLgorCiAyMDIwLTA0LTE3ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTW92ZSBhbGxvd1BsdWdpbnMgdG8g
RnJhbWVMb2FkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA5YTE5NDgwYzBmMzll
NGZkMWI4MGIwMGVmZWQxNTIzZDRlZTdiNDYwLi5mNjEyMWVhZGJhMTVkOTdiN2UzOTUzMDZkOGVk
M2IwOThkZjFmZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2Yg
dGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkCisgICAgICAg
IHRoZSBpbXBsZW1lbnRhdGlvbiBhIGJpdC4KKwogMjAyMC0wNC0xNyAgUm9iIEJ1aXMgIDxyYnVp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgYWxsb3dQbHVnaW5zIHRvIEZyYW1lTG9hZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJM
LmNwcAppbmRleCAyYzUwNGJjZGE4YmQzMmI3OGIzOTRhZDIyZjA3OTEyYTgzMjEwMWQ3Li40OTBl
NGU0YzE0YzVlYzZmMTRhNTBmNWI3NWYwZWY5NmZiMDk2YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIsMjYg
KzQyLDE3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+
IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEyPiBVQ2hhckJ1ZmZlcjsKLQot
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnZhbGlkUG9ydE51bWJlciA9IDB4RkZGRjsKLQot
Ly8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhl
IHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIg
bXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4g
dGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5h
dGUgdGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY2hhciogZGVzdCkKKy8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwg
YXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUgQVNDSUkuCisvLyBUaGUgZGVz
dGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJl
IGFsbG93ZWQgaW4gdGhlCisvLyBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRl
IHRvIG51bGwtdGVybWluYXRlIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCitzdGF0aWMgdm9pZCBj
b3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3RpbmF0aW9uKQogewotICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoc3RyaW5n
LmlzOEJpdCgpKQotICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVD
aGFyKiBzcmMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgIHNpemVfdCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspCi0gICAgICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsK
KyAgICAgICAgYXV0byBzb3VyY2UgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsgaSA8IGxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzb3Vy
Y2VbaV0pOwogICAgIH0KIH0KIApAQCAtODMsMTYgKzc0LDEzIEBAIHZvaWQgVVJMOjppbnZhbGlk
YXRlKCkKIAogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewotICAgIFVSTFBhcnNlciBwYXJz
ZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihyZWxhdGl2ZSwgYmFzZSwgZW5jb2RpbmcpLnJlc3Vs
dCgpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVSTChVQ2hhciBjKQorc3RhdGlj
IGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgY2hhcmFjdGVyKQogewotICAgIC8vIEJyb3dz
ZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wKLSAgICAv
LyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUgdGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hh
ciBoZXJlCi0gICAgLy8gc28gdGhpcyBjb21wYXJpc29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRy
b2wgY2hhcmFjdGVycy4KLSAgICByZXR1cm4gYyA8PSAnICc7CisgICAgLy8gSWdub3JlIGxlYWRp
bmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVy
biBjaGFyYWN0ZXIgPD0gJyAnOwogfQogCiBVUkwgVVJMOjppc29sYXRlZENvcHkoKSBjb25zdApA
QCAtMTAyLDQ4ICs5MCw0MyBAQCBVUkwgVVJMOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QK
K1N0cmluZ1ZpZXcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFo
YXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVuZCAtIDE7CiAgICAgaWYgKG1fc3RyaW5nW2Vu
ZF0gPT0gJy8nKQogICAgICAgICAtLWVuZDsKIAogICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5n
LnJldmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIGlmIChzdGFydCA8IHBhdGhTdGFydCgpKQorICAgICAgICByZXR1cm4geyB9OwogICAg
ICsrc3RhcnQ7CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBz
dGFydCArIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0ICsgMSk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNv
bnN0CiB7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKIH0K
IAogU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogeworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm4geyB9OworCiAgICAgdW5zaWduZWQgc3RhcnQgPSBob3N0U3RhcnQoKTsK
ICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hvc3RF
bmQgLSBzdGFydCk7CiB9CiAKIE9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAog
ewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51bWJlcjsKLSAgICBpZiAobV9z
dHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
bV9zdHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEs
ICZvayk7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0g
MSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4g
bnVtYmVyOworICAgIHJldHVybiBtX3BvcnRMZW5ndGggPyBwYXJzZVVJbnQxNihTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDog
V1RGOjpudWxsb3B0OwogfQogCiBTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CkBAIC0x
NTUsOTQgKzEzOCwxMDAgQEAgU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAogCiBTdHJp
bmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcgcmVzdWx0
ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisgICAg
aWYgKCFoYXNDcmVkZW50aWFscygpKQorICAgICAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KDAsIHBhdGhTdGFydCgpKTsKIAotICAgIGlmIChtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQg
PiAwKSB7Ci0gICAgICAgIGNvbnN0IGludCBhbGxvd0ZvclRyYWlsaW5nQXRTaWduID0gMTsKLSAg
ICAgICAgcmVzdWx0LnJlbW92ZShtX3VzZXJTdGFydCwgbV9wYXNzd29yZEVuZCAtIG1fdXNlclN0
YXJ0ICsgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbik7Ci0gICAgfQorICAgIHJldHVybiBtYWtlU3Ry
aW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3Rh
cnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoaG9zdFN0YXJ0KCks
IHBhdGhTdGFydCgpIC0gaG9zdFN0YXJ0KCkpCisgICAgKTsKK30KIAotICAgIHJldHVybiByZXN1
bHQ7CitzdGF0aWMgT3B0aW9uYWw8TENoYXI+IGRlY29kZUVzY2FwZVNlcXVlbmNlKFN0cmluZ1Zp
ZXcgaW5wdXQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKGlu
ZGV4ICsgMyA+IGxlbmd0aCB8fCBpbnB1dFtpbmRleF0gIT0gJyUnKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGF1dG8gZGlnaXQxID0gaW5wdXRbaW5kZXggKyAxXTsKKyAgICBh
dXRvIGRpZ2l0MiA9IGlucHV0W2luZGV4ICsgMl07CisgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQo
ZGlnaXQxKSB8fCAhaXNBU0NJSUhleERpZ2l0KGRpZ2l0MikpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHRvQVNDSUlIZXhWYWx1ZShkaWdpdDEsIGRpZ2l0Mik7CiB9
CiAKIHN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJp
bmdWaWV3IGlucHV0KQogewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsK
LSAgICBpZiAoIWlucHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAg
ICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAg
ICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVu
Z3RoIC0gMgotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAg
ICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAg
ICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kg
KyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxz
ZQorICAgIEFTU0VSVChpbnB1dC5pc0FsbEFTQ0lJKCkpOworCisgICAgYXV0byBsZW5ndGggPSBp
bnB1dC5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoIDwgMyB8fCAhaW5wdXQuY29udGFpbnMoJyUn
KSkKKyAgICAgICAgcmV0dXJuIGlucHV0LnRvU3RyaW5nKCk7CisKKyAgICBWZWN0b3I8TENoYXIs
IDUxMj4gcGVyY2VudERlY29kZWQ7CisgICAgcGVyY2VudERlY29kZWQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICkg
eworICAgICAgICBpZiAoYXV0byBkZWNvZGVkQ2hhcmFjdGVyID0gZGVjb2RlRXNjYXBlU2VxdWVu
Y2UoaW5wdXQsIGksIGxlbmd0aCkpIHsKKyAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hl
Y2tlZEFwcGVuZCgqZGVjb2RlZENoYXJhY3Rlcik7CisgICAgICAgICAgICBpICs9IDM7CisgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQo
aW5wdXRbaV0pOworICAgICAgICAgICAgKytpOworICAgICAgICB9CiAgICAgfQorCisgICAgLy8g
RklYTUU6IElzIFVURi04IGFsd2F5cyB0aGUgY29ycmVjdCBlbmNvZGluZz8KKyAgICAvLyBGSVhN
RTogVGhpcyByZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB3ZSBlbmNvdW50ZXIgYW4gaW52YWxp
ZCBVVEYtOCBzZXF1ZW5jZS4gSXMgdGhhdCBPSz8KICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CiB9CiAKIFN0
cmluZyBVUkw6OnVzZXIoKSBjb25zdAogewotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJTdGFy
dCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChlbmNvZGVkVXNlcigpKTsKIH0KIAotU3RyaW5nIFVSTDo6cGFz
cygpIGNvbnN0CitTdHJpbmcgVVJMOjpwYXNzd29yZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcGFz
c3dvcmRFbmQgPT0gbV91c2VyRW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBy
ZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAt
IDEpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChlbmNv
ZGVkUGFzc3dvcmQoKSk7CiB9CiAKLVN0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKK1N0
cmluZ1ZpZXcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RyaW5n
LnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpOworICAgIHJl
dHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVu
ZCAtIG1fdXNlclN0YXJ0KTsKIH0KIAotU3RyaW5nIFVSTDo6ZW5jb2RlZFBhc3MoKSBjb25zdAor
U3RyaW5nVmlldyBVUkw6OmVuY29kZWRQYXNzd29yZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGFz
c3dvcmRFbmQgPT0gbV91c2VyRW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlckVuZCAr
IDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKTsKKyAgICByZXR1cm4gU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3Vz
ZXJFbmQgLSAxKTsKIH0KIAotU3RyaW5nIFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QK
K1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAogewogICAgIGlmICgh
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQorICAgICAgICBy
ZXR1cm4geyB9OwogCi1ib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsg
MSk7CiB9CiAKLVN0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0CitVUkwgVVJMOjp0cnVu
Y2F0ZWRGb3JVc2VBc0Jhc2UoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KG1f
cGF0aEFmdGVyTGFzdFNsYXNoKTsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtX3N0cmluZy5sZWZ0
KG1fcGF0aEFmdGVyTGFzdFNsYXNoKSk7CiB9CiAKICNpZiAhVVNFKENGKQogCiBTdHJpbmcgVVJM
OjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkgfHwgIWlzTG9j
YWxGaWxlKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoIWlzTG9jYWxGaWxl
KCkpCisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVu
Y2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworICAgIHJldHVybiBkZWNvZGVF
c2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKHBhdGgoKSk7CiB9CiAKICNlbmRpZgogCi0jaWZk
ZWYgTkRFQlVHCisjaWYgIUFTU0VSVF9FTkFCTEVECiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3Nl
cnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KQogewpAQCAtMzE0LDcgKzMwMyw3IEBAIGJvb2wg
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9j
b2wpCiAKIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAog
ewotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgeyBwcm90b2NvbCB9KTsKKyAg
ICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IFVS
THMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVz
IHRoZXkgYXJlIGludmFsaWQuCiAgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0ph
dmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKQEAgLTM0OSw3MyArMzM4LDY1IEBA
IGJvb2wgVVJMOjpwcm90b2NvbElzKFN0cmluZ1ZpZXcgcHJvdG9jb2wpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLVN0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJM
OjpxdWVyeSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcXVlcnlFbmQgPT0gbV9wYXRoRW5kKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5k
ICsgMSkpOyAKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0
aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5kICsgMSkpOwogfQogCiBTdHJpbmdWaWV3
IFVSTDo6cGF0aCgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgcG9ydEVuZCA9IG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aDsKLSAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRFbmQpOworICAgIGlmICghbV9pc1ZhbGlkKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhwYXRoU3RhcnQoKSwgbV9wYXRoRW5kIC0gcGF0aFN0YXJ0KCkpOwogfQogCi1ib29sIFVS
TDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQorYm9vbCBVUkw6OnNldFByb3RvY29sKFN0
cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2
ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRp
b24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygw
LCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2Vy
OjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmlj
YWxpemVkKQorICAgIGF1dG8gbmV3UHJvdG9jb2xQcmVmaXggPSBuZXdQcm90b2NvbC5zdWJzdHJp
bmcoMCwgbmV3UHJvdG9jb2wuZmluZCgnOicpKTsKKyAgICBhdXRvIG5ld1Byb3RvY29sQ2Fub25p
Y2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2xQ
cmVmaXgudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBpZiAoIW5ld1Byb3RvY29sQ2Fu
b25pY2FsaXplZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2lzVmFsaWQp
IHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmljYWxpemVkLCAi
OiIsIG1fc3RyaW5nKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgICAg
ICBwYXJzZShtYWtlU3RyaW5nKCpuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQsICc6JywgbV9zdHJp
bmcpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKChtX3Bhc3N3b3Jk
RW5kICE9IG1fdXNlclN0YXJ0IHx8IHBvcnQoKSkgJiYgKmNhbm9uaWNhbGl6ZWQgPT0gImZpbGUi
KQorICAgIGlmICgobV9wYXNzd29yZEVuZCAhPSBtX3VzZXJTdGFydCB8fCBwb3J0KCkpICYmICpu
ZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQgPT0gImZpbGUiKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIGlmIChpc0xvY2FsRmlsZSgpICYmIGhvc3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmljYWxp
emVkLCBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hlbWVFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgcGFyc2UobWFrZVN0cmluZygqbmV3UHJvdG9jb2xDYW5vbmljYWxp
emVkLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9zY2hlbWVFbmQpKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzQWxsQVNDSUkoU3RyaW5nVmlldyBzdHJp
bmcpCi17Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKLX0KLSAgICAKIC8vIEFwcGVuZHMgdGhlIHB1bnljb2RlZCBob3N0bmFt
ZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcgYW5kIGxlbmd0aCB0bwogLy8gdGhlIG91
dHB1dCBidWZmZXIuIFRoZSByZXN1bHQgd2lsbCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkLgogLy8g
UmV0dXJuIHZhbHVlIG9mIGZhbHNlIG1lYW5zIGVycm9yIGluIGVuY29kaW5nLgotc3RhdGljIGJv
b2wgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1ZpZXcg
c3RyaW5nKQorc3RhdGljIGJvb2wgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFZlY3RvcjxVQ2hhciwg
NTEyPiYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICAvLyBOZWVkcyB0byBiZSBi
aWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KICAgICAvLyBGb3IgaG9zdCBu
YW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlz
IGFsbW9zdCBjZXJ0YWlubHkgT0suCiAgICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJM
ZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1
ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKKworICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBzdHJpbmcuaXNBbGxBU0NJSSgpKSB7CiAg
ICAgICAgIGFwcGVuZChidWZmZXIsIHN0cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICAKKwogICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3Ro
XTsKICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwogICAgIFVJRE5BSW5mbyBw
cm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CiAgICAgaW50MzJfdCBu
dW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50
ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCiAgICAgICAgIHN0cmluZy51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5h
bWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICAKKwogICAg
IGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKICAg
ICAgICAgYnVmZmVyLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRl
ZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDI4LDEwMSArNDA5LDg5IEBAIHVuc2lnbmVk
IFVSTDo6aG9zdFN0YXJ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fcGFzc3dvcmRFbmQgPT0gbV91
c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRFbmQgKyAxOwogfQogCi12b2lk
IFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCit1bnNpZ25lZCBVUkw6OmNyZWRlbnRpYWxz
RW5kKCkgY29uc3QKK3sKKyAgICAvLyBJbmNsdWRlICdAJyB0b28gaWYgd2UgaGF2ZSBpdC4KKyAg
ICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOworICAgIGlmIChlbmQgIT0gbV9ob3N0RW5k
ICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICBlbmQgKz0gMTsKKyAgICByZXR1cm4g
ZW5kOworfQorCit2b2lkIFVSTDo6c2V0SG9zdChTdHJpbmdWaWV3IG5ld0hvc3QpCiB7CiAgICAg
aWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29sb25JbmRleCA9
IHMuZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKQorICAgIGlmIChu
ZXdIb3N0LmNvbnRhaW5zKCc6JykpCiAgICAgICAgIHJldHVybjsKIAotICAgIFVDaGFyQnVmZmVy
IGVuY29kZWRIb3N0TmFtZTsKLSAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVk
SG9zdE5hbWUsIHMpKQorICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7Cisg
ICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBuZXdIb3N0KSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNl
clN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotICAgIAot
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5s
ZWZ0KGhvc3RTdGFydCgpKSk7Ci0gICAgaWYgKHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3
KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiAKLSAgICBVUkxQ
YXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CisgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gbV9zY2hl
bWVFbmQgKyAxOworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQoaG9zdFN0YXJ0KCkpLAorICAgICAgICBzbGFzaFNsYXNoTmVlZGVkID8gIi8v
IiA6ICIiLAorICAgICAgICBTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29k
ZWRIb3N0TmFtZS5zaXplKCkpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcobV9ob3N0RW5kKQorICAgICkpOwogfQogCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0g
ICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFy
c2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwot
ICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNp
Z25lZCBzaG9ydCBpKQordm9pZCBVUkw6OnNldFBvcnQoT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQp
CiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgY29s
b25OZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOwotICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xv
bk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOwotCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocG9ydFN0YXJ0KSwgKGNv
bG9uTmVlZGVkID8gIjoiIDogIiIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVIb3N0QW5kUG9y
dCgpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCisgICAgaWYgKCFwb3J0KSB7CisgICAgICAgIHJl
bW92ZShtX2hvc3RFbmQsIG1fcG9ydExlbmd0aCk7CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAo
IWhvc3QoKS5pc0VtcHR5KCkpCi0gICAgICAgIHNldEhvc3QoeyB9KTsKLSAgICByZW1vdmVQb3J0
KCk7CisgICAgfQorCisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX2hvc3RFbmQpLAorICAgICAgICAnOicsCisgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigqcG9ydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhwYXRoU3RhcnQoKSkKKyAgICApKTsKIH0KIAotdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0
KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCit2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoU3Ry
aW5nVmlldyBob3N0QW5kUG9ydCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3RyaW5nVmlldyBob3N0TmFtZShob3N0QW5kUG9ydCk7Ci0gICAgU3RyaW5n
VmlldyBwb3J0OwotICAgIAorICAgIGF1dG8gaG9zdE5hbWUgPSBob3N0QW5kUG9ydDsKKyAgICBT
dHJpbmdWaWV3IHBvcnRTdHJpbmc7CiAgICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmlu
ZCgnOicpOwogICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQg
PSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwot
ICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAo
IW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFt
ZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICAgICAgcG9ydFN0cmlu
ZyA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7CisgICAgICAgIGlmIChwYXJz
ZVVJbnQxNihwb3J0U3RyaW5nKSkKKyAgICAgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUuc3Vi
c3RyaW5nKDAsIGNvbG9uSW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGhvc3RO
YW1lID0geyB9OworICAgICAgICAgICAgcG9ydFN0cmluZyA9IHsgfTsKKyAgICAgICAgfQogICAg
IH0KLQotICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpCisgICAgaWYgKGhvc3ROYW1lLmlzRW1w
dHkoKSkgeworICAgICAgICByZW1vdmUoaG9zdFN0YXJ0KCksIHBhdGhTdGFydCgpIC0gaG9zdFN0
YXJ0KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgVUNoYXJCdWZmZXIgZW5jb2Rl
ZEhvc3ROYW1lOworICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7CiAgICAg
aWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0
YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhv
c3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9ydC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAg
ICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0g
bV9zY2hlbWVFbmQgKyAxOworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQoaG9zdFN0YXJ0KCkpLAorICAgICAgICBzbGFzaFNsYXNoTmVlZGVk
ID8gIi8vIiA6ICIiLAorICAgICAgICBTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCks
IGVuY29kZWRIb3N0TmFtZS5zaXplKCkpLAorICAgICAgICBwb3J0U3RyaW5nLmlzRW1wdHkoKSA/
ICIiIDogIjoiLAorICAgICAgICBwb3J0U3RyaW5nLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0KCkpCisgICAgKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcg
cGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxk
RW5jb2RlKShVQ2hhcikpCkBAIC01NTEsODEgKzUyMCw4OSBAQCBzdGF0aWMgU3RyaW5nIHBlcmNl
bnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2woKnNob3VsZEVuY29k
ZSkoVQogICAgIHJldHVybiBpbnB1dDsKIH0KIAotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3Ry
aW5nJiB1c2VyKQordm9pZCBVUkw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICp0aGlzID0gVVJMUGFyc2VyKHN0cmluZykucmVzdWx0KCk7
Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzdGFydCA8
IG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQobGVuZ3RoIDw9IG1fc3RyaW5nLmxlbmd0
aCgpIC0gc3RhcnQpOwogCi0gICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3Qg
YmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKLSAg
ICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIgbG9naW4u
CisgICAgYXV0byBzdHJpbmdBZnRlclJlbW92YWwgPSBXVEZNb3ZlKG1fc3RyaW5nKTsKKyAgICBz
dHJpbmdBZnRlclJlbW92YWwucmVtb3ZlKHN0YXJ0LCBsZW5ndGgpOworICAgIHBhcnNlKHN0cmlu
Z0FmdGVyUmVtb3ZhbCk7Cit9CisKK3ZvaWQgVVJMOjpzZXRVc2VyKFN0cmluZ1ZpZXcgbmV3VXNl
cikKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWdu
ZWQgZW5kID0gbV91c2VyRW5kOwotICAgIGlmICghdXNlci5pc0VtcHR5KCkpIHsKLSAgICAgICAg
U3RyaW5nIHUgPSBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyh1c2VyLCBVUkxQYXJzZXI6OmlzSW5V
c2VySW5mb0VuY29kZVNldCk7Ci0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAgICAgIHUgPSAiLy8iICsgdTsK
LSAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgotICAgICAg
ICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJp
bmdbZW5kXSAhPSAnQCcpKQotICAgICAgICAgICAgdS5hcHBlbmQoJ0AnKTsKLSAgICAgICAgVVJM
UGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2Vy
U3RhcnQpLCB1LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBpZiAoIW5ld1VzZXIuaXNFbXB0eSgpKSB7
CisgICAgICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1l
RW5kICsgMTsKKyAgICAgICAgYm9vbCBuZWVkU2VwYXJhdG9yID0gZW5kID09IG1faG9zdEVuZCB8
fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpOworICAgICAg
ICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX3VzZXJTdGFydCksCisgICAgICAgICAgICBzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIi
LAorICAgICAgICAgICAgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMobmV3VXNlci50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwKKyAgICAg
ICAgICAgIG5lZWRTZXBhcmF0b3IgPyAiQCIgOiAiIiwKKyAgICAgICAgICAgIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpCisgICAgICAgICkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29y
ZC4KICAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBtX2hv
c3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0gMTsKLSAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBj
YXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYg
KG1fdXNlclN0YXJ0ICE9IGVuZCkgewotICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVtb3ZlKG1fdXNlclN0YXJ0LCBlbmQgLSBt
X3VzZXJTdGFydCk7CiAgICAgfQogfQogCi12b2lkIFVSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcm
IHBhc3N3b3JkKQordm9pZCBVUkw6OnNldFBhc3N3b3JkKFN0cmluZ1ZpZXcgbmV3UGFzc3dvcmQp
CiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVk
IGVuZCA9IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaWYgKCFwYXNzd29yZC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgU3RyaW5nIHAgPSAiOiIgKyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXNzd29yZCwg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpICsgIkAiOwotICAgICAgICBpZiAobV91
c2VyRW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQotICAgICAg
ICAgICAgcCA9ICIvLyIgKyBwOwotICAgICAgICAvLyBFYXQgdGhlIGV4aXN0aW5nICdAJyBzaW5j
ZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCi0gICAgICAgIGlmIChlbmQgIT0gbV9ob3N0
RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlckVuZCksIHAsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0g
ICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlmICghbmV3UGFzc3dvcmQuaXNF
bXB0eSgpKSB7CisgICAgICAgIGJvb2wgbmVlZExlYWRpbmdTbGFzaGVzID0gbV91c2VyRW5kID09
IG1fc2NoZW1lRW5kICsgMTsKKyAgICAgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgICAg
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwKKyAgICAgICAgICAgIG5lZWRM
ZWFkaW5nU2xhc2hlcyA/ICIvLzoiIDogIjoiLAorICAgICAgICAgICAgcGVyY2VudEVuY29kZUNo
YXJhY3RlcnMobmV3UGFzc3dvcmQudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCksCisgICAgICAgICAgICAnQCcsCisgICAgICAgICAgICBT
dHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoY3JlZGVudGlhbHNFbmQoKSkKKyAgICAgICAg
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBu
ZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91
c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAg
ICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0
aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBh
IGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNl
ckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBl
bmQgPSBtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgPyBjcmVkZW50aWFsc0VuZCgpIDogbV9wYXNz
d29yZEVuZDsKKyAgICAgICAgcmVtb3ZlKG1fdXNlckVuZCwgZW5kIC0gbV91c2VyRW5kKTsKICAg
ICB9CiB9CiAKK3ZvaWQgVVJMOjpyZW1vdmVDcmVkZW50aWFscygpCit7CisgICAgaWYgKCFtX2lz
VmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZShtX3VzZXJTdGFydCwgY3JlZGVu
dGlhbHNFbmQoKSAtIG1fdXNlclN0YXJ0KTsKK30KKwogdm9pZCBVUkw6OnNldEZyYWdtZW50SWRl
bnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0
aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFz
c2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNv
ZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQ
YXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBt
X3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOworICAgIHBhcnNlKG1ha2VT
dHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlm
aWVyKSk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQogewotICAg
IGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9xdWVyeUVuZCk7CisgICAgaWYg
KCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1faXNWYWxpZCAm
JiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQpCi0gICAgICAgIG1fc3RyaW5nID0gbV9z
dHJpbmcubGVmdChtX3F1ZXJ5RW5kKTsKKworICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdCht
X3F1ZXJ5RW5kKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlm
aWVyKCkKQEAgLTYzNyw2MiArNjE0LDYyIEBAIHZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdt
ZW50SWRlbnRpZmllcigpCiAgICAgbV9xdWVyeUVuZCA9IG1fcGF0aEVuZDsKIH0KIAotdm9pZCBV
Ukw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCit2b2lkIFVSTDo6c2V0UXVlcnkoU3Ry
aW5nVmlldyBuZXdRdWVyeSkKIHsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhp
cyBmdW5jdGlvbiB0byBzZXRFbmNvZGVkUXVlcnkgYW5kL29yIGNhbGxpbmcgcGVyY2VudEVuY29k
ZUNoYXJhY3RlcnMgdGhlIHdheSBzZXRQYXRoIGRvZXMuCisgICAgLy8gaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTYxMTc2CisKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVk
IGFuZCBlc2NhcGVkLgotICAgIC8vIFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5n
IGRvY3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCi0gICAgLy8g
YWNjZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIC8vIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE2MTE3NgotICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8IHF1ZXJ5WzBd
ICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIo
bWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksICI/IiwgcXVl
cnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwotICAgICAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQp
LCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0g
ICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0KKyAgICBwYXJzZShtYWtlU3Ry
aW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksCisgICAg
ICAgICghbmV3UXVlcnkuc3RhcnRzV2l0aCgnPycpICYmICFuZXdRdWVyeS5pc051bGwoKSkgPyAi
PyIgOiAiIiwKKyAgICAgICAgbmV3UXVlcnksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX3F1ZXJ5RW5kKQorICAgICkpOworfQogCitzdGF0aWMgU3RyaW5nIGVzY2Fw
ZVBhdGhXaXRob3V0Q29weWluZyhTdHJpbmdWaWV3IHBhdGgpCit7CisgICAgYXV0byBxdWVzdGlv
bk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIgY2hhcmFjdGVyKSB7CisgICAgICAgIHJldHVy
biBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3RlciA9PSAnIyc7CisgICAgfTsKKyAgICByZXR1
cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCks
IHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbik7CiB9CiAKLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0
IFN0cmluZyYgcykKK3ZvaWQgVVJMOjpzZXRQYXRoKFN0cmluZ1ZpZXcgcGF0aCkKIHsKICAgICBp
ZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHBhdGggPSBzOwot
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9
ICIvIiArIHBhdGg7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChwYXRoU3RhcnQoKSksCisgICAgICAgIHBhdGguc3RhcnRzV2l0aCgnLycp
ID8gIiIgOiAiLyIsCisgICAgICAgIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhwYXRoKSwKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkKKyAgICApKTsK
K30KIAotICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNoYXJh
Y3RlcikgewotICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIgPT0g
JyMnOwotICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSwgcGVyY2VudEVuY29kZUNo
YXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKK1N0cmluZ1ZpZXcgVVJMOjpzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBtX3N0cmlu
ZzsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBhdGhFbmQoKSk7CiB9
CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNv
bnN0IFVSTCYgYikKK1N0cmluZ1ZpZXcgVVJMOjpzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlm
aWVyKCkgY29uc3QKIHsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5
RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAg
ICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAg
ICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX3F1ZXJ5RW5kKTsKIH0KIAotYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChj
b25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKLSAgICBpZiAoYS5wYXRoRW5k
KCkgIT0gYi5wYXRoRW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBw
YXRoRW5kID0gYS5wYXRoRW5kKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGhF
bmQ7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gYS5zdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyKCkgPT0gYi5zdHJpbmdXaXRo
b3V0RnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CiAKIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQpAQCAtNzI1LDI1ICs3MDIsMTAgQEAg
Ym9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwm
IGIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKK2Jvb2wgVVJMOjppc01hdGNoaW5nRG9tYWluKFN0cmluZ1ZpZXcg
ZG9tYWluKSBjb25zdAogewotICAgIHVuc2lnbmVkIGhvc3RTdGFydEEgPSBhLmhvc3RTdGFydCgp
OwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RFbmQgLSBob3N0U3RhcnRBOwot
ICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhv
c3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBob3N0U3RhcnRCOwotICAgIGlmIChob3N0TGVuZ3Ro
QSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQorICAgIC8v
IEZJWE1FOiBDb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhbiBhcHByb3ByaWF0ZSBwbGFjZSBpbiBX
ZWJDb3JlJ3MgcGx1Zy1pbiBjb2RlOyBkb24ndCB3YW50IHBlb3BsZSB0ZW1wdGVkIHRvIHVzZSB0
aGlzIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4uCiAKLWJvb2wgVVJMOjppc01hdGNoaW5nRG9t
YWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAotewogICAgIGlmIChpc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NjAsNiArNzIyLDcgQEAgYm9vbCBVUkw6OmlzTWF0
Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiAgICAgcmV0dXJuIGhvc3Qu
bGVuZ3RoKCkgPT0gZG9tYWluLmxlbmd0aCgpIHx8IGhvc3RbaG9zdC5sZW5ndGgoKSAtIGRvbWFp
bi5sZW5ndGgoKSAtIDFdID09ICcuJzsKIH0KIAorLy8gRklYTUU6IFJlbmFtZSB0aGlzIHNvIGl0
J3MgY2xlYXIgdGhhdCBpdCBkb2VzIHRoZSBhcHByb3ByaWF0ZSBlc2NhcGluZyBmb3IgVVJMIHF1
ZXJ5IGZpZWxkIHZhbHVlcy4KIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNv
bnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgcmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJz
KGlucHV0LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7CkBAIC03ODEsNDEgKzc0
NCwzNCBAQCB2b2lkIFVSTDo6Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIp
IGNvbnN0CiAgICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25z
dCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3N0YXRpYyBib29sIHBy
b3RvY29sSXNJbnRlcm5hbChTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgY2hhciogcHJvdG9jb2wp
CiB7Ci0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5n
IG9iamVjdC4KLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3IHsgcHJvdG9jb2wg
fSk7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwogICAgIGJvb2wgaXNMZWFk
aW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kp
IHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFj
dGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0p
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0g
ICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgotICAgICAgICBpZiAodXJsW2ld
ID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicpCi0gICAgICAgICAg
ICBjb250aW51ZTsKKyAgICBmb3IgKGF1dG8gY29kZVVuaXQgOiBzdHJpbmcuY29kZVVuaXRzKCkp
IHsKKyAgICAgICAgaWYgKGlzTGVhZGluZykgeworICAgICAgICAgICAgLy8gU2tpcCBsZWFkaW5n
IHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIGlmIChzaG91
bGRUcmltRnJvbVVSTChjb2RlVW5pdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIFNraXAgdGFicyBhbmQgbmV3bGluZXMgZXZlbiBsYXRlciBpbiB0aGUgcHJvdG9jb2wuCisg
ICAgICAgICAgICBpZiAoY29kZVVuaXQgPT0gJ1x0JyB8fCBjb2RlVW5pdCA9PSAnXHInIHx8IGNv
ZGVVbml0ID09ICdcbicpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAot
ICAgICAgICBpZiAoIXByb3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAn
Oic7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3Rv
Y29sW2pdKSkKKyAgICAgICAgY2hhciBleHBlY3RlZENoYXJhY3RlciA9ICpwcm90b2NvbCsrOwor
ICAgICAgICBpZiAoIWV4cGVjdGVkQ2hhcmFjdGVyKQorICAgICAgICAgICAgcmV0dXJuIGNvZGVV
bml0ID09ICc6JzsKKyAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNvZGVV
bml0LCBleHBlY3RlZENoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgKytqOwogICAgIH0KLSAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgcHJv
dG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCi17Ci0gICAg
cmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsIHByb3RvY29sKTsKLX0KLQotaW5saW5lIGJv
b2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKK2Jvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgY2hhciogcHJv
dG9jb2wpCiB7Ci0gICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgcHJv
dG9jb2wpOworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7
CiB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC04MjksMTEgKzc4NSwxOCBAQCB2b2lkIFVSTDo6cHJp
bnQoKSBjb25zdAogCiBTdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25z
dAogewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihTdHJp
bmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOwor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICB1bnNp
Z25lZCBlbmQgPSBjcmVkZW50aWFsc0VuZCgpOworCisgICAgaWYgKG1fdXNlclN0YXJ0ID09IGVu
ZCAmJiBtX3F1ZXJ5RW5kID09IG1fc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbV9z
dHJpbmc7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0YXJ0KSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCkKKyAgICApOwogfQogCiBib29sIFVSTDo6
aXNMb2NhbEZpbGUoKSBjb25zdApAQCAtODQ1LDE3ICs4MDgsMTIgQEAgYm9vbCBVUkw6OmlzTG9j
YWxGaWxlKCkgY29uc3QKICAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOwogfQogCi1ib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQorYm9vbCBwcm90b2NvbElz
SmF2YVNjcmlwdChTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0lu
dGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFs
KHN0cmluZywgImphdmFzY3JpcHQiKTsKIH0KIAotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChT
dHJpbmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImph
dmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmlu
ZyYgdXJsKQorYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJsKQogewog
ICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwogICAgIC8vIERvIHRoZSBjb21wYXJpc29u
IHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCkBAIC04NjksMTMgKzgyNywxMyBA
QCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCiAKIGNvbnN0
IFVSTCYgYWJvdXRCbGFua1VSTCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4g
c3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiX3MpOwogICAg
IHJldHVybiBzdGF0aWNCbGFua1VSTDsKIH0KIAogY29uc3QgVVJMJiBhYm91dFNyY0RvY1VSTCgp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQWJvdXRTcmNEb2NVUkwo
VVJMKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBz
dGF0aWNBYm91dFNyY0RvY1VSTChVUkwoKSwgImFib3V0OnNyY2RvYyJfcyk7CiAgICAgcmV0dXJu
IHN0YXRpY0Fib3V0U3JjRG9jVVJMOwogfQogCkBAIC05NjQsNyArOTIyLDYgQEAgYm9vbCBwb3J0
QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAgNjY2OSwgLy8gQWx0ZXJuYXRlIElSQyBb
QXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDY2NzksIC8vIEFsdGVybmF0ZSBJUkMgU1NMIFtBcHBs
ZSBhZGRpdGlvbl0KICAgICAgICAgNjY5NywgLy8gSVJDK1NTTCBbQXBwbGUgYWRkaXRpb25dCi0g
ICAgICAgIGludmFsaWRQb3J0TnVtYmVyLCAvLyBVc2VkIHRvIGJsb2NrIGFsbCBpbnZhbGlkIHBv
cnQgbnVtYmVycwogICAgIH07CiAKICAgICAvLyBJZiB0aGUgcG9ydCBpcyBub3QgaW4gdGhlIGJs
b2NrZWQgcG9ydCBsaXN0LCBhbGxvdyBpdC4KQEAgLTk4MywxNSArOTQwLDE1IEBAIGJvb2wgcG9y
dEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcg
bWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkKK1N0cmluZyBtaW1lVHlwZUZy
b21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCkKIHsKLSAgICBBU1NFUlQocHJvdG9jb2xJc0lu
dGVybmFsKHVybCwgImRhdGEiKSk7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbChkYXRh
VVJMLCAiZGF0YSIpKTsKIAogICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9y
IHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwot
ICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGlu
IHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9IHVy
bC5maW5kKCc7JywgNSk7CisgICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0
IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlOyBzaG91bGQgYWRkIGEgdGVzdC4KKyAgICBhdXRv
IGluZGV4ID0gZGF0YVVSTC5maW5kKCc7JywgNSk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5k
KQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywgNSk7CisgICAgICAgIGluZGV4ID0gZGF0
YVVSTC5maW5kKCcsJywgNSk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291
bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KICAgICAgICAgLy8g
QnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGlt
ZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCkBAIC0xMDAwLDI1
ICs5NTcsNDUgQEAgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgaWYgKGluZGV4ID09IDUpCiAgICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsKICAg
ICBBU1NFUlQoaW5kZXggPj0gNSk7Ci0gICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoNSwgaW5kZXgg
LSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIHJldHVybiBkYXRhVVJMLnN1YnN0
cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKIFN0cmlu
ZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CiB7Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIHN0cmluZygpOworICAgIGlmIChtX3N0cmluZy5sZW5ndGgoKSA8PSBsZW5ndGgpCisgICAg
ICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQobGVuZ3RoIC8gMiAtIDEpLCAiLi4uIiwgU3RyaW5nVmlldyhtX3N0cmlu
ZykucmlnaHQobGVuZ3RoIC8gMiAtIDIpKTsKK30KKworVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxh
dGl2ZVBhcnQoU3RyaW5nVmlldyByZWxhdGl2ZVBhcnQpCit7CisgICAgcmV0dXJuIFVSTChVUkwo
KSwgbWFrZVN0cmluZygid2Via2l0LWZha2UtdXJsOi8vIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLCAnLycsIHJlbGF0aXZlUGFydCkpOworfQogCi0gICAgcmV0dXJuIHN0cmluZygpLmxl
ZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0g
Mik7CitVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcgcGF0aCkK
K3sKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKAorICAgICAgICAiZmlsZTovLyIs
CisgICAgICAgIHBhdGguc3RhcnRzV2l0aCgnLycpID8gIiIgOiAiLyIsCisgICAgICAgIGVzY2Fw
ZVBhdGhXaXRob3V0Q29weWluZyhwYXRoKQorICAgICkpOwogfQogCi1VUkwgVVJMOjpmYWtlVVJM
V2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGFydCkKK1N0cmluZ1ZpZXcg
VVJMOjpxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
VVJMKFVSTCgpLCAid2Via2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSArICcvJyArIHJlbGF0aXZlUGFydCk7CisgICAgaWYgKG1fcXVlcnlFbmQgPD0gbV9wYXRo
RW5kKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3BhdGhFbmQsIG1fcXVlcnlFbmQgLSBtX3BhdGhFbmQpOwogfQogCi1V
UkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CitTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWdu
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCAiZmlsZTovLy8iICsgZmlsZVBhdGgp
OworICAgIGlmICghbV9pc1ZhbGlkIHx8IG1fc3RyaW5nLmxlbmd0aCgpIDw9IG1fcXVlcnlFbmQp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fcXVlcnlFbmQpOwogfQogCiBib29sIFVSTDo6aXNBYm91dEJsYW5rKCkgY29u
c3QKQEAgLTEwMzgsNiArMTAxNSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNF
KFNPVVApCisKIHN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCiB7
CiAgICAgYXV0byBjb3VudCA9IDA7CkBAIC0xMTI0LDExICsxMTAyLDkgQEAgc3RhdGljIGJvb2wg
aXNJUHY2QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKIAogYm9vbCBVUkw6Omhvc3RJc0lQQWRk
cmVzcyhTdHJpbmdWaWV3IGhvc3QpCiB7Ci0gICAgaWYgKGhvc3QuZmluZCgnOicpID09IG5vdEZv
dW5kKQotICAgICAgICByZXR1cm4gaXNJUHY0QWRkcmVzcyhob3N0KTsKLQotICAgIHJldHVybiBp
c0lQdjZBZGRyZXNzKGhvc3QpOworICAgIHJldHVybiBob3N0LmNvbnRhaW5zKCc6JykgPyBpc0lQ
djZBZGRyZXNzKGhvc3QpIDogaXNJUHY0QWRkcmVzcyhob3N0KTsKIH0KKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuaAppbmRleCA5NWFmNGEzYjQ3ZTA4ODdmNWEyYWVhMDFhMTEzNzliYmJk
MTFjNmZmLi40MmVjMWZiOWVjMzdlYjgzMTNkNjkzMDE5NTdhNDUxOTA2MTBiM2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw0NyArMzgsMzkg
QEAgT0JKQ19DTEFTUyBOU1VSTDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKKwogY2xhc3Mg
VGV4dFN0cmVhbTsKIAogY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07Citwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9CiB9OwogCi1zdHJ1Y3QgVVJMSGFzaDsK
LQotY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7CitjbGFzcyBVUkwgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGlj
aCBjb250YWlucyBhIG51bGwgc3RyaW5nLgogICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9CiAK
LSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IFVSTChIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsK
KyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCiAgICAgLy8gUmVzb2x2ZXMgdGhlIHJl
bGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQogICAg
IC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJz
LiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2Fz
ZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0
ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlz
IGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxk
IGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2Ft
ZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBVUkwoY29uc3Qg
VVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2Rpbmcq
ID0gbnVsbHB0cik7CisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVs
YXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYWJzb2x1dGUuCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBVUkwgZmFrZVVS
TFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFVSTCBmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmluZ1ZpZXcpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoU3Ry
aW5nVmlldyk7CiAKLSAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7
Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFybW9uaXpl
ZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ugb2YgbnVsbCBvciB0aGUgZW1wdHkgc3Ry
aW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKLSAgICAvLyBzdGFuZGFyZCBTdHJpbmcg
Y29uc3RydWN0b3IuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpcHBlZEZvclVz
ZUFzUmVmZXJyZXIoKSBjb25zdDsKIAogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVs
IG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKICAgICAvLyB0aHJlYWQu
IFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0
aGVyZSdzCiAgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29w
eSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgVVJMIGlzb2xhdGVkQ29weSgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAK
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAt
ODksMTIyICs4MSwxMjYgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU2V0SG9zdE9yUG9ydCgpIGNv
bnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KIAogICAgIGJvb2wgY2FuU2V0UGF0aG5h
bWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0gICAgYm9vbCBpc0hpZXJh
cmNoaWNhbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzSGllcmFyY2hp
Y2FsKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7CiAKLSAgICBT
dHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEw
MjQpIGNvbnN0OwotCi0gICAgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFN0cmlu
Z1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7
Ci0gICAgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHByb3RvY29sSG9z
dEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlcigpIGNvbnN0OwotICAgIFN0cmluZyBw
YXNzKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxh
c3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3Q7CisgICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzc3dvcmQoKSwg
ZW5jb2RlZFVzZXIoKSBhbmQgZW5jb2RlZFBhc3N3b3JkKCkgZG9uJ3QgZGVjb2RlIGVzY2FwZSBz
ZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRy
aXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgor
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBlbmNvZGVkVXNlcigpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVuY29kZWRQYXNzd29yZCgpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGhvc3QoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwYXRoKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZ1ZpZXcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmll
cldpdGhMZWFkaW5nTnVtYmVyU2lnbigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7
CisgICAgU3RyaW5nVmlldyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7
CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB1c2VyKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBVUkwgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3Q7CiAKLSAgICBib29sIGhhc1Vz
ZXJuYW1lKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OwogICAgIGJvb2wg
aGFzUXVlcnkoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAgYm9v
bCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKICAgICBib29sIGhhc1BhdGgoKSBjb25z
dDsKIAotICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3MoKSwgdGhlc2UgZnVuY3Rpb25zIGRv
bid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2VzLgotICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywgYmVjYXVzZSBlbmNvZGluZyBkb2Vzbid0IGVuY29k
ZSAnJScgY2hhcmFjdGVycy4KLSAgICBTdHJpbmcgZW5jb2RlZFVzZXIoKSBjb25zdDsKLSAgICBT
dHJpbmcgZW5jb2RlZFBhc3MoKSBjb25zdDsKLQotICAgIFN0cmluZyBiYXNlQXNTdHJpbmcoKSBj
b25zdDsKLQotICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0OworICAgIGJvb2wgaGFz
Q3JlZGVudGlhbHMoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVu
dCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KICAgICAvLyB0ZXJtaW5h
dGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgotICAg
IGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgYm9vbCBwcm90b2NvbElz
KFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3Rv
Y29sSXMoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElzQmxvYigpIGNvbnN0
IHsgcmV0dXJuIHByb3RvY29sSXMoImJsb2IiKTsgfQogICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEo
KSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KLSAgICBib29sIHByb3RvY29s
SXNBYm91dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNB
Ym91dCgpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0Owot
ICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc0xvY2FsRmlsZSgpIGNvbnN0OwogICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQogCi0gICAgYm9vbCBpc0Fib3V0Qmxhbmso
KSBjb25zdDsKLSAgICBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBpc0Fib3V0QmxhbmsoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CiAKLSAgICBib29sIGlzTWF0Y2hpbmdEb21h
aW4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNN
YXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3KSBjb25zdDsKIAotICAgIGJvb2wgc2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHNldFByb3RvY29sKFN0cmluZ1ZpZXcpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAKLSAgICB2b2lkIHJlbW92
ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFBvcnQoT3B0aW9uYWw8dWludDE2X3Q+KTsKIAogICAgIC8vIElu
cHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0SG9z
dEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCByZW1vdmVIb3N0QW5kUG9ydCgpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3RBbmRQb3J0KFN0cmluZ1ZpZXcpOwog
Ci0gICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0UGFzcyhjb25z
dCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRVc2VyKFN0cmluZ1Zp
ZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBhc3N3b3JkKFN0cmluZ1ZpZXcp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKLSAg
ICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRo
ZSByZXN1bHRpbmcgcGF0aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAgIHZvaWQgc2V0UGF0aChj
b25zdCBTdHJpbmcmKTsKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQ
IG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGJlICIvIi4KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXRoKFN0cmluZ1ZpZXcpOwogCiAgICAgLy8gVGhlIHF1
ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFyaywgb3IsIGlmIG5vdCwgb25lIHdpbGwg
YmUgYWRkZWQKICAgICAvLyBmb3IgeW91LiBTZXR0aW5nIHRoZSBxdWVyeSB0byB0aGUgZW1wdHkg
c3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCiAgICAgLy8gVVJMICh3aXRoIG5vdGhpbmcg
YWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBhc3MgYSBudWxsIHN0cmluZy4KLSAgICB2
b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNldFF1ZXJ5KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCBzZXRGcmFnbWVudElkZW50aWZpZXIo
U3RyaW5nVmlldyk7Ci0gICAgdm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAKLSAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKTsK
IAotICAgIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwog
CiAgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEVuZCgp
IGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwogCi0gICAg
b3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisgICAg
b3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAg
b3BlcmF0b3IgU3RyaW5nVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAKICNpZiBV
U0UoQ0YpCi0gICAgVVJMKENGVVJMUmVmKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0
ZUNGVVJMKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTChDRlVSTFJlZik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBj
b25zdDsKICNlbmRpZgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgVVJMKE5TVVJMKik7Ci0g
ICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTChO
U1VSTCAqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0
OwogI2VuZGlmCisKICNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNv
bnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisgICAgb3BlcmF0b3IgTlNTdHJpbmcgKigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lk
IHByaW50KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwot
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VVJMPiBkZWNvZGUo
RGVjb2RlciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwmKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VVJMPiBkZWNvZGUoRGVjb2RlciYp
OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBVUkxQYXJzZXI7Ci0gICAgdm9pZCBpbnZh
bGlkYXRlKCk7Ci0gICAgc3RhdGljIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmLCBjb25z
dCBjaGFyKik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnZhbGlkYXRlKCk7CiAg
ICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3Q7CiAg
ICAgdW5zaWduZWQgaG9zdFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgY3JlZGVudGlhbHNF
bmQoKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgZnJpZW5kIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJik7CiAgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBm
cmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBj
b25zdCBVUkwmKTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsKIApAQCAtMjI5LDQ5ICsyMjUsMjcg
QEAgcHJpdmF0ZToKIAogc3RhdGljX2Fzc2VydChzaXplb2YoVVJMKSA9PSBzaXplb2YoU3RyaW5n
KSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNob3VsZCBzdGF5IHNtYWxsIik7CiAKLXRl
bXBsYXRlIDxjbGFzcyBFbmNvZGVyPgotdm9pZCBVUkw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Ci19Ci0KLXRlbXBsYXRlIDxjbGFz
cyBEZWNvZGVyPgotYm9vbCBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVUkwmIHVybCkK
LXsKLSAgICBhdXRvIG9wdGlvbmFsVVJMID0gVVJMOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgaWYg
KCFvcHRpb25hbFVSTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVybCA9IFdURk1vdmUo
Km9wdGlvbmFsVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+Ci1PcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Ci0gICAgZGVjb2RlciA+PiBzdHJpbmc7Ci0gICAg
aWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFVS
TChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Ci19Citib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
Jik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7Citib29sIG9w
ZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yIT0oY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiwgY29u
c3QgVVJMJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3RzQXJl
RXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBjb25z
dCBVUkwmIGFib3V0QmxhbmtVUkwoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBVUkwmIGFi
b3V0U3JjRG9jVVJMKCk7CiAKIC8vIEZ1bmN0aW9ucyB0byBkbyBVUkwgb3BlcmF0aW9ucyBvbiBz
dHJpbmdzLgogLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVuJ3QgZmFzdGVyIG9uIGEg
cGFyc2VkIFVSTC4KLS8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBVUkwgZnVu
Y3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxp
ZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNh
dXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQg
dmFsaWQgYnkgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFdURjo6
VVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJl
IGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KKy8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRh
bnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25z
aWRlcmVkIHZhbGlkIGJ5IFdURjo6VVJMLgogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1XVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2
YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwpOwogCiBXVEZfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5n
VmlldyBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCk7CkBAIC0yODAsMTQg
KzI1NCw0MCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwm
KTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xlYXJE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwogCi1XVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKTsKIAotV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYg
dXJsKTsKLQotLy8gRklYTUU6IFRoaXMgaXMgYSB3cm9uZyBjb25jZXB0IHRvIGV4cG9zZSwgZGlm
ZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2FwaW5nIHBlciB0aGUgVVJM
IFN0YW5kYXJkLgorLy8gRklYTUU6IFRoaXMgbmVlZHMgYSBuZXcsIG1vcmUgc3BlY2lmaWMgbmFt
ZS4gVGhlIGdlbmVyYWwgdGhpbmcgbmFtZWQgaGVyZSBjYW4ndCBiZSBpbXBsZW1lbnRlZCBjb3Jy
ZWN0bHksIHNpbmNlIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVkIGRpZmZlcmVudCBlc2Nh
cGluZy4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmKTsKIAotLy8gSW5saW5lcy4KK1dURl9FWFBPUlRfUFJJVkFURSBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8VVJMPjsKKworLy8gRnVuY3Rpb24gdGVtcGxhdGUgYW5kIGlubGluZSBmdW5jdGlvbiBkZWZp
bml0aW9ucy4KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBVUkw6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9IGRlY29kZShkZWNvZGVy
KTsKKyAgICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdXJs
ID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CisgICAgZGVjb2RlciA+PiBz
dHJpbmc7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Cit9CiAKIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiB7CkBAIC0zMTksOCArMzE5
LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwm
IGIpCiAgICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKIH0KIAotLy8gSW5saW5lIHZlcnNpb25z
IG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwot
Ly8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xh
c3MgZGVmaW5pdGlvbi4KK2lubGluZSBVUkw6OlVSTChIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBl
KQorICAgIDogbV9zdHJpbmcoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQogCiBpbmxpbmUg
Ym9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0CiB7CkBAIC0zMzksMTcgKzM0MSwxMiBAQCBpbmxpbmUg
Ym9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBj
b25zdAogewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
OworICAgIHJldHVybiBtX3BhdGhFbmQgPiBwYXRoU3RhcnQoKTsKIH0KIAotaW5saW5lIGJvb2wg
VVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0CitpbmxpbmUgYm9vbCBVUkw6Omhhc0NyZWRlbnRpYWxz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2VyU3RhcnQ7Ci19Ci0KLWlu
bGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3Bhc3N3
b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworICAgIHJldHVybiBtX3Bhc3N3b3JkRW5kID4gbV91
c2VyU3RhcnQ7CiB9CiAKIGlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdApAQCAtMzU3
LDcgKzM1NCw3IEBAIGlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdAogICAgIHJldHVy
biBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwogfQogCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdt
ZW50KCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVy
eUVuZDsKIH0KQEAgLTM4MiwxMSArMzc5LDYgQEAgaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFm
dGVyTGFzdFNsYXNoKCkgY29uc3QKICAgICByZXR1cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiB9
CiAKLVdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PFVSTD47Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47Ci0KIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6OmFib3V0QmxhbmtVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJh
cy5jcHAKaW5kZXggMDZiMGFlYzY0ZDEwMjVkNTQzZmY5ZGMzZDZhMWE3ZDJlNjEwYzg1NC4uZmEw
OGM5Zjg4MzY1OTJiNmFjMDUzYzczZmE4NjdlNWUwMWJhYjdhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJM
RXh0cmFzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJM
UmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSk7CiAKLSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bh
c3N3b3JkKCkpCisgICAgaWYgKHVybC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4g
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgVVJMIHsgY2ZVUkwgfSk7CiAKICAgICBV
UkxDaGFyQnVmZmVyIGJ5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZDEz
YmI2YzkxZjllYmNhMzMwZGU1MWRkMDVjMjdlMDU5NmFjYTJkYi4uMjliNDg4NTAxNmJkMjg3ZDFj
ZmU5NDJjNjU0OGU1NjViZjg4MzBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBA
IC0zNSw2ICszNSw3IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNzQsNiArNzUsMTEg
QEAgYm9vbCBTdHJpbmdWaWV3OjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nVmlldyYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOwogfQogCitib29sIFN0cmluZ1ZpZXc6OmVuZHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sZW5ndGggJiYgKCp0
aGlzKVttX2xlbmd0aCAtIDFdID09IGNoYXJhY3RlcjsKK30KKwogYm9vbCBTdHJpbmdWaWV3Ojpl
bmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JiBzdWZmaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDo6
V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKQEAgLTMwNiw2ICszMTIsMzEgQEAgU3RyaW5n
IG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHJlc3VsdC51
bmRlcmx5aW5nU3RyaW5nOwogfQogCisvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgbmFtZWQgcGFy
c2VOdW1iZXI8dWludDE2X3Q+IGluc3RlYWQ/CisvLyBGSVhNRTogU2hvdWxkIHdlIHJlcGxhY2Ug
dGhlIHRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMgd2l0aCB0aGlzIHN0eWxlPworT3B0aW9uYWw8
dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGJvb2wgb2sg
PSBmYWxzZTsKKyAgICBhdXRvIG51bWJlciA9IHRvSW50ZWdyYWxUeXBlPHVpbnQxNl90PihzdHJp
bmcsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gbnVtYmVyOworfQorCitib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ1Zp
ZXcgYSwgU3RyaW5nVmlldyBiKQoreworICAgIC8vIEZJWE1FOiBUaGUgZXF1YWwoU3RyaW5nVmll
dywgU3RyaW5nVmlldykgZnVuY3Rpb24gYWxyZWFkeSBpZ25vcmVzIG51bGxpdHkuCisgICAgLy8g
VG8gZml0IGluIHdpdGggdGhlIGJlaGF2aW9yIG9mIG91ciBvdGhlciBzdHJpbmcgY2xhc3Nlcywg
d2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgLy8gY2hhbmdpbmcgdGhhdCBiZWhhdmlvciBzbyB0aGF0
IGEgbnVsbCBTdHJpbmdWaWV3IGlzIG5vdCBlcXVhbCB0byBhbiBlbXB0eQorICAgIC8vIFN0cmlu
Z1ZpZXcsIGJ1dCBuZWVkIHRvIHRlc3Qgb3IgYXVkaXQgaW4gY2FzZSBjb2RlIGRlcGVuZHMgb24g
Y3VycmVudCBiZWhhdmlvci4KKyAgICByZXR1cm4gZXF1YWwoYSwgYik7Cit9CisKK2Jvb2wgU3Ry
aW5nVmlldzo6Y29udGFpbnMoY29uc3QgY2hhciogc3RyaW5nKSBjb25zdAoreworICAgIHJldHVy
biBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKICNpZiBDSEVDS19TVFJJTkdWSUVXX0xJ
RkVUSU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291bnQgbWFudWFsbHkgc28gVW5kZXJseWlu
Z1N0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmluZWQgaW4gdGhlIGhlYWRlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNmNmZWJkYmFiN2VhNDU4ZTFkOTY4MGQxMzE2MTkxNDhm
MjE3OWYwMy4uNDZhZjUyZjUwYmVkMWNjOWM4YjJjYTQ1NTZkMWQ1MGY2OTg2NzE5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEzNyw4ICsxMzcsNyBAQCBwdWJsaWM6CiAKICAgICBz
aXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKICAgICBzaXplX3Qg
ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7Ci0K
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQg
c3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdW
aWV3LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwogCiAgICAgc2l6ZV90IHJldmVyc2VGaW5k
KFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkgY29uc3Q7CiAKQEAgLTE1MSw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250
YWlucyhVQ2hhcikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhDb2RlVW5pdE1hdGNoRnVuY3Rp
b24pIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0IHsg
cmV0dXJuIGZpbmQoc3RyaW5nLCAwKSAhPSBub3RGb3VuZDsgfQorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYp
IGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKQEAg
LTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25z
dDsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3Jikg
Y29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKQEAgLTE5MSw2ICsxOTIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdJbXBsKikgeyB9
CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmKSB7IH0KICNl
bmRpZgorCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgY29uc3Qgdm9pZCogbV9jaGFyYWN0ZXJz
IHsgbnVsbHB0ciB9OwpAQCAtMjEwLDYgKzIxMiw4IEBAIGJvb2wgZXF1YWwoU3RyaW5nVmlldywg
Y29uc3QgTENoYXIqIGIpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcs
IFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNv
bnN0IGNoYXIqKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ051bGxp
dHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CisKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4g
Ym9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25zdCBjaGFy
ICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25z
dCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiAKQEAgLTIzNCw2ICsyMzgsOCBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIG5vcm1h
bGl6ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbm9ybWFs
aXplZE5GQyhjb25zdCBTdHJpbmcmKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVp
bnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsKKwogfQogCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGYxMmFkMzZk
MTllN2ZkNTRiNWNjYTEyNmY3MjVkMDAwNjQzODQ1ZmUuLmFmYzkyZjU3NzY2NjIyOTJmMGNlMDY0
NjI0ZTY4ZjM4NDY3MjI1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTkyNCwx
MDIgKzkyNCwxMDIgQEAgc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdl
cihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGUKIAogaW50IGNoYXJhY3RlcnNU
b0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGlu
dCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIExDaGFyPihkYXRhLCBs
ZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBs
ZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBV
Q2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsK
KyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsK
IH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9
CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQog
CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGlu
dDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVp
bnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVp
bnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50cHRy
X3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50cHRy
X3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNo
YXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2sp
CiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+KGRhdGEsIGxlbmd0aE9m
Q2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludCBjaGFyYWN0ZXJzVG9J
bnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFy
PihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNp
Z25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5n
dGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8
VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEs
IGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3Qg
TENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29u
c3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2
NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0
ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
PExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50NjRfdCBjaGFyYWN0ZXJz
VG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9m
Q2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50cHRyX3QgY2hh
cmFjdGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIExDaGFyPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNoYXJh
Y3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludHB0
cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBVQ2hhcj4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQog
CiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxpbmdKdW5rLCBBbGxvd1Ry
YWlsaW5nSnVuayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcAppbmRleCBiMGRiNTdhODM3MGNlMDMwMjg2NGZlMDgyYjQzYTI0ZWIyOGI5ZGY5
Li43ODJiMjYyZjQ4NzQxOTM4MmE3NDUwMTAzMjNlMzM1MjJhNzU2NTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtNzIsMTAgKzcy
LDggQEAgc3RhdGljIGlubGluZSBib29sIG1hdGNoVVJMcyhjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFVSTCYgY2FjaGVkVVIKICAgICBVUkwgY2FjaGVkUmVxdWVzdFVSTCA9
IGNhY2hlZFVSTDsKIAogICAgIGlmIChvcHRpb25zLmlnbm9yZVNlYXJjaCkgewotICAgICAgICBp
ZiAocmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAgICAgICAgICAgcmVxdWVzdFVSTC5zZXRRdWVy
eSh7IH0pOwotICAgICAgICBpZiAoY2FjaGVkUmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAgICAg
ICAgICAgY2FjaGVkUmVxdWVzdFVSTC5zZXRRdWVyeSh7IH0pOworICAgICAgICByZXF1ZXN0VVJM
LnNldFF1ZXJ5KHsgfSk7CisgICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsK
ICAgICB9CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVxdWVz
dFVSTCwgY2FjaGVkUmVxdWVzdFVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggM2E1NTIxOGZmYmQ3MGEwZjExNTY2MTYwYWY5Mzkw
ZWJiZDE5MWQ3My4uZGZiNzMzZTkzMDBkYTJhZTFlNjk1ZTQxMmM5NzMyMDA4YWM2ZTA5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMTYw
LDkgKzE2MCwxMCBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vzc0lu
dmFsaWRTaWduYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgYwogRXhjZXB0aW9uT3I8dm9pZD4g
RmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcmIHVybCwgSW5pdCYmIGlu
aXQpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgLy8gRklY
TUU6IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgaHR0cHM6Ly91
cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCisKKyAgICAvLyBGSVhNRTog
VGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyB0byBodHRwczovL3Vy
bC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KICAgICBVUkwgcmVxdWVzdFVS
TCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpGb3JjZVVURjg6Olllcyk7Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFs
aWQoKSB8fCAhcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3Mo
KS5pc0VtcHR5KCkpCisgICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCByZXF1ZXN0VVJM
Lmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJVUkwgaXMgbm90IHZhbGlkIG9yIGNvbnRhaW5zIHVzZXIgY3JlZGVudGlhbHMuIl9zIH07CiAK
ICAgICBtX29wdGlvbnMubW9kZSA9IE1vZGU6OkNvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA2MDlhYThhMjg4ZmYzNTgxOWU2NzNj
ZjU2N2RjYjUyMGM2M2FiNDg5Li4wNWY0OWY4ODkzNmUwOGJkZTA1YmU0ZWI2NmZhOWMxNTg4ZmNi
Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZl
dGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgVVJMIHJl
cXVlc3RVUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFyZXF1ZXN0VVJM
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0
cmluZygiUmVkaXJlY3Rpb24gVVJMICciLCByZXF1ZXN0VVJMLnN0cmluZygpLCAiJyBpcyBpbnZh
bGlkIikgfTsKLSAgICBpZiAoIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVz
dFVSTC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmIChyZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxz
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWRpcmVjdGlvbiBV
UkwgY29udGFpbnMgY3JlZGVudGlhbHMiX3MgfTsKICAgICBpZiAoIVJlc291cmNlUmVzcG9uc2U6
OmlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKHN0YXR1cykpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBSYW5nZUVycm9yLCBtYWtlU3RyaW5nKCJTdGF0dXMgY29kZSAiLCBzdGF0dXMsICJpcyBu
b3QgYSByZWRpcmVjdGlvbiBzdGF0dXMgY29kZSIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGNh
YWRmODdiMGI1NzNlMzEyZTllM2UwMzlkNmRjNmE4OGZjNTljY2EuLmU3MTM1YmVjNjAzZjliNTNh
OWQyMmE0NDNhZjM1ODIwZjFjYWNiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0yMjAsMTMgKzIy
MCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRTdGFuZGFyZGl6ZWRQYXltZW50TWV0aG9kSWRlbnRp
ZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5
bWVudC1tZXRob2QtaWQvI3ZhbGlkYXRpb24KIHN0YXRpYyBib29sIGlzVmFsaWRVUkxCYXNlZFBh
eW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICghdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghdXJs
LnVzZXIoKS5pc0VtcHR5KCkgfHwgIXVybC5wYXNzKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29sSXMo
Imh0dHBzIikgJiYgIXVybC5oYXNDcmVkZW50aWFscygpOwogfQogCiAvLyBJbXBsZW1lbnRzICJ2
YWxpZGF0ZSBhIHBheW1lbnQgbWV0aG9kIGlkZW50aWZpZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CmluZGV4IDRlN2EwMjVlNDc2OTQ5MDExNWVlZjQ5ZWVjMGE3YWZkZTFlYzNiNTMuLmFiNGQ1ZmJj
MTFmOTJkOWFhZTY3YThhNGQ4OGZiMmVjYWVkY2ViZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CkBAIC0xMDMsMTkgKzEwMywxNCBAQCBib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6aW5z
dGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAg
ICAgCi1zdGF0aWMgaW5saW5lIFVSTCBjcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgdmlk
ZW9JRCwgY29uc3QgU3RyaW5nJiB0aW1lSUQpCitzdGF0aWMgVVJMIGNyZWF0ZVlvdVR1YmVVUkwo
U3RyaW5nVmlldyB2aWRlb0lELCBTdHJpbmdWaWV3IHRpbWVJRCkKIHsKICAgICBBU1NFUlQoIXZp
ZGVvSUQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQodmlkZW9JRCAhPSAiLyIpOwotICAgIAotICAg
IFVSTCByZXN1bHQoVVJMKCksICJ5b3V0dWJlOiIgKyB2aWRlb0lEKTsKLSAgICBpZiAoIXRpbWVJ
RC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC5zZXRRdWVyeSgidD0iICsgdGltZUlEKTsKLSAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmco
InlvdXR1YmU6IiwgdmlkZW9JRCwgdGltZUlELmlzRW1wdHkoKSA/ICIiIDogInQ9IiwgdGltZUlE
KSk7CiB9Ci0gICAgCi1zdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1h
cCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKKworc3RhdGlj
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVz
KFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
OjpLZXlWYWx1ZU1hcCBxdWVyeURpY3Rpb25hcnk7CiAgICAgCkBAIC0xNTUsNyArMTUwLDcgQEAg
c3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5k
VmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICAgICAgLy8gU2F2ZSB0aGUga2V5IGFuZCB0aGUg
dmFsdWUuCiAgICAgICAgIGlmIChrZXlMZW5ndGggJiYgdmFsdWVMZW5ndGgpIHsKICAgICAgICAg
ICAgIFN0cmluZyBrZXkgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcoa2V5TG9jYXRpb24sIGtleUxl
bmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1
ZSA9IHF1ZXJ5U3RyaW5nLnN1YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCk7Cisg
ICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVMb2Nh
dGlvbiwgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB2YWx1ZS5yZXBsYWNl
KCcrJywgJyAnKTsKIAogICAgICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpICYmICF2YWx1ZS5p
c0VtcHR5KCkpCkBAIC0yMDksMTYgKzIwNCwxNiBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVh
dGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgog
CiAgICAgLy8gU2hvcnQgVVJMIG9mIHRoZSBmb3JtOiBodHRwOi8veW91dHUuYmUvdjFkMzAxRAog
ICAgIGlmIChpc1lvdVR1YmVTaG9ydGVuZWRVUkwpIHsKLSAgICAgICAgU3RyaW5nIHZpZGVvSUQg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgYXV0byB2aWRlb0lEID0gdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmICh2aWRlb0lELmlzRW1wdHkoKSB8fCB2aWRl
b0lEID09ICIvIikKICAgICAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHsgfSk7CiAgICAgfQotICAgIAorCiAgICAgYXV0byBw
YXRoID0gdXJsLnBhdGgoKTsKLSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAgICBT
dHJpbmcgZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgCisgICAgYXV0
byBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGF1dG8gZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCk7CisKICAgICAvLyBPbiB0aGUgWW91VHViZSBtb2JpbGUgd2ViIGFwcCwgdGhl
IHBhdGggYW5kIHF1ZXJ5IHN0cmluZyBhcmUgcHV0IGludG8gdGhlCiAgICAgLy8gZnJhZ21lbnQg
c28gdGhhdCBvbmUgd2ViIHBhZ2UgaXMgb25seSBldmVyIGxvYWRlZCAoc2VlIDxyZGFyOi8vcHJv
YmxlbS85NTUwNjM5PikuCiAgICAgaWYgKGlzWW91VHViZU1vYmlsZVdlYkFwcFVSTCkgewpAQCAt
MjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29u
c3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICBwYXRo
ID0gZnJhZ21lbnQ7CiAgICAgICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gU3RyaW5nVmlldyhmcmFnbWVudCkuc3Vic3Ry
aW5nKDAsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJpbmco
MCwgbG9jYXRpb24pOwogICAgICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmcobG9j
YXRpb24gKyAxKTsKICAgICAgICAgfQogICAgICAgICBmcmFnbWVudCA9IGVtcHR5U3RyaW5nKCk7
CkBAIC0yNjAsMTAgKzI1NSwxMCBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJl
VVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHBhdGgsICIvZS8iKSkgewotICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1
cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICAgICAgU3RyaW5nIHZpZGVvSUQ7Ci0gICAgICAg
IFN0cmluZyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsKKyAgICAgICAgU3RyaW5nVmlldyB2aWRl
b0lEOworICAgICAgICBTdHJpbmdWaWV3IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwogCisgICAg
ICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAg
ICAgICAgc2l6ZV90IGFtcGVyc2FuZExvY2F0aW9uID0gbGFzdFBhdGhDb21wb25lbnQuZmluZCgn
JicpOwogICAgICAgICBpZiAoYW1wZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAg
ICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBjYXJlIGFib3V0IHVzZSAmIGluIHBsYWNlIG9mID8gZm9y
IHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0ZXIuCkBAIC0yNzMsMTEgKzI2OCwxMSBAQCBzdGF0aWMg
VVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lv
dVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50
OwogCiAgICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG91dFBh
dGhBZnRlckZpcnN0QW1wZXJzYW5kID0gcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAgICAg
ICAgICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5k
LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lE
LCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBV
UkwoKTsKIH0KIApAQCAtMjkwLDEzICsyODUsMTMgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6eW91VHViZVVSTChjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIFN0cmluZyBZb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogewogICAgIGJvb2wgaXNZb3VUdWJl
U2hvcnRlbmVkVVJMID0gZmFsc2U7Ci0gICAgU3RyaW5nIHBvc3NpYmxlTWFsZm9ybWVkUXVlcnk7
Ci0gICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkws
IGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9zc2libGVNYWxmb3JtZWRRdWVyeSk7CisgICAgU3Ry
aW5nIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7CisgICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNz
QW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9zc2li
bHlNYWxmb3JtZWRRdWVyeSk7CiAgICAgaWYgKHNyY1VSTC5pc0VtcHR5KCkgfHwgeW91VHViZVVS
TC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzcmNTdHJpbmc7CiAKICAgICAvLyBUcmFuc2Zv
cm0gdGhlIHlvdXR1YmVVUkwgKHlvdXR1YmU6VmlkZW9JRCkgdG8gaWZyYW1lIGVtYmVkIHVybCB3
aGljaCBoYXMgdGhlIGZvcm1hdDogaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9WaWRlb0lE
Ci0gICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgoKS50b1N0cmluZygpOworICAgIGF1dG8g
c3JjUGF0aCA9IHNyY1VSTC5wYXRoKCk7CiAgICAgY29uc3QgU3RyaW5nJiB2aWRlb0lEID0geW91
VHViZVVSTC5zdHJpbmcoKS5zdWJzdHJpbmcoeW91VHViZVVSTC5wcm90b2NvbCgpLmxlbmd0aCgp
ICsgMSk7CiAgICAgc2l6ZV90IGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoID0gc3JjUGF0aC5maW5k
KHZpZGVvSUQpOwogCkBAIC0zMDUsNyArMzAwLDcgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY28K
ICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKTsKICAgICAKICAgICAgICAg
Ly8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUg
L3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0gc3Jj
U3RyaW5nLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBhdGgp
KTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhzcmNT
dHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBhdGgp
KTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1BhdGgs
ICIvd2F0Y2giKSkgewogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQg
dG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvd2F0Y2gvIyF2PVZpZGVvSUQKICAgICAgICAgLy8gRklY
TUU6IFNob3VsZG4ndCB0aGlzIGJlIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmU/CkBAIC0zMTUsMjIg
KzMxMCwyMSBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJv
bUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogCiAgICAgQVNTRVJUKGxvY2F0aW9u
T2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBub3RGb3VuZCk7CiAKLSAgICBjb25zdCBTdHJpbmcmIHNy
Y1VSTFByZWZpeCA9IHNyY1N0cmluZy5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVW
aWRlb0lEKTsKLSAgICBTdHJpbmcgcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKKyAgICBhdXRvIHNy
Y1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5zdWJzdHJpbmcoMCwgbG9jYXRpb25P
ZlBhdGhCZWZvcmVWaWRlb0lEKTsKKyAgICBhdXRvIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisK
ICAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVyeSwgdXNlIHRoZSBwb3NzaWJseSBtYWxmb3Jt
ZWQgcXVlcnkgd2UgZm91bmQuCiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcXVl
cnkgPSBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5OworICAgICAgICBxdWVyeSA9IHBvc3NpYmx5TWFs
Zm9ybWVkUXVlcnk7CiAKICAgICAvLyBBcHBlbmQgdGhlIHF1ZXJ5IHN0cmluZyBpZiBpdCBpcyB2
YWxpZC4KLSAgICBTdHJpbmdCdWlsZGVyIGZpbmFsVVJMOwotICAgIGlmIChpc1lvdVR1YmVTaG9y
dGVuZWRVUkwpCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoImh0dHA6Ly93d3cueW91
dHViZS5jb20iKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZChzcmNVUkxQcmVm
aXgpOwotICAgIGZpbmFsVVJMLmFwcGVuZCgiL2VtYmVkLyIsIHZpZGVvSUQpOwotICAgIGlmICgh
cXVlcnkuaXNFbXB0eSgpKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoJz8nLCBxdWVyeSk7Ci0g
ICAgcmV0dXJuIGZpbmFsVVJMLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisg
ICAgICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA/ICJodHRwOi8vd3d3LnlvdXR1YmUuY29tIiA6
IHNyY1VSTFByZWZpeCwKKyAgICAgICAgIi9lbWJlZC8iLAorICAgICAgICB2aWRlb0lELAorICAg
ICAgICBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiwKKyAgICAgICAgcXVlcnkKKyAgICApOwog
fQogICAgIAogYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzVVJMKGNvbnN0
IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA5OTI2Y2VmOTY3MTU1MzY3MmYyMzc5OWJm
MmZlYmZiNWVkMTkwZjc3Li5lMjM3NDk3MTg2M2YxZGE3MGQ3ZTlmOWM5OTY5ZGQ2YzA2NGY1MTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNjQsMTUgKzY0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAg
U3RyaW5nQnVpbGRlciBuYW1lOwotICAgIG5hbWUuYXBwZW5kKHVybC5wYXRoKCkpOwotICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbmFtZS5hcHBlbmQoJy8nKTsKLSAgICBpZiAoIXVy
bC5xdWVyeSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIG5hbWUuYXBwZW5kKCc/Jyk7Ci0gICAgICAg
IG5hbWUuYXBwZW5kKHVybC5xdWVyeSgpKTsKLSAgICB9Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG5h
bWUudG9TdHJpbmcoKTsKKyAgICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOworICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVN0cmluZygKKyAgICAgICAgcGF0aCwKKyAgICAgICAgcGF0aC5pc0VtcHR5KCkg
PyAiLyIgOiAiIiwKKyAgICAgICAgdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKQor
ICAgICk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXJlc3Vs
dC5jb250YWlucygnICcpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
aW5kZXggMzVhNjZiZTU1NWE2M2I0MDhlNmQ4YjViZmIyYzlkNzI5YTI0YTQyYi4uY2Y2ZGM1ZGFh
ZWYzNjg5YzlmNjk5NTczNGFkODkxNjEwNGViZTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBA
IC05NDQsMjYgKzk0NCwyNyBAQCBJbnRQb2ludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpj
bGlja1BvaW50KCkKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdAogewotICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gYW5jaG9yRWxlbWVu
dCgpOworCiAgICAgLy8gUmlnaHQgbm93LCB3ZSBkbyBub3Qgc3VwcG9ydCBBUklBIGxpbmtzIGFz
IGludGVybmFsIGxpbmsgZWxlbWVudHMKICAgICBpZiAoIWlzPEhUTUxBbmNob3JFbGVtZW50Pihl
bGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgSFRNTEFuY2hvckVsZW1lbnQm
IGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7Ci0gICAgCi0g
ICAgVVJMIGxpbmtVUkwgPSBhbmNob3IuaHJlZigpOwotICAgIFN0cmluZyBmcmFnbWVudElkZW50
aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8mIGFuY2hvciA9
IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7CisKKyAgICBhdXRvIGxpbmtV
UkwgPSBhbmNob3IuaHJlZigpOworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gbGlua1VS
TC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAvLyBjaGVjayBpZiBV
UkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOworICAgIGF1dG8gZG9jdW1lbnRVUkwgPSBtX3JlbmRl
cmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIAotICAgIE5vZGUqIGxpbmtlZE5vZGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZpbmRB
bmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKTsKKworICAgIGF1dG8gbGlua2VkTm9kZSA9IG1fcmVu
ZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIudG9TdHJpbmdX
aXRob3V0Q29weWluZygpKTsKICAgICBpZiAoIWxpbmtlZE5vZGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAorCiAgICAgLy8gVGhlIGVsZW1lbnQgd2UgZmluZCBtYXkgbm90IGJlIGFj
Y2Vzc2libGUsIHNvIGZpbmQgdGhlIGZpcnN0IGFjY2Vzc2libGUgb2JqZWN0LgogICAgIHJldHVy
biBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShsaW5rZWROb2RlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDk4YzQwZGRjMGQ2MzVlZGNjOGZkMTM4YmE1OTMxYWU4MzdjMmVi
MTIuLmYwYTBkNjE1NzkxMzVkYjIzZmM5MTFiYmU2NTgxMWY5OWQyOGRkYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMzI0OSw3ICszMjQ5LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV91cmwgPSBuZXdVUkw7CiAgICAgaWYgKFNlY3VyaXR5
T3JpZ2luOjpzaG91bGRJZ25vcmVIb3N0KG1fdXJsKSkKLSAgICAgICAgbV91cmwucmVtb3ZlSG9z
dEFuZFBvcnQoKTsKKyAgICAgICAgbV91cmwuc2V0SG9zdEFuZFBvcnQoeyB9KTsKIAogICAgIG1f
ZG9jdW1lbnRVUkkgPSBtX3VybC5zdHJpbmcoKTsKICAgICB1cGRhdGVCYXNlVVJMKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggZWQzNWZjZGM2ZjQ2MjA0Y2RhYjczZjYzNGJmOWUwNTBlMTFj
ZDQ2Ny4uMWZmMjNlMTYwYjkxOGFiMWNkYzUwZThjM2Y3NjFjOGQxY2E0MmEwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtNDQ5MSw3ICs0NDkxLDcgQEAgRWxlbWVudCogRWxlbWVudDo6Zmlu
ZEFuY2hvckVsZW1lbnRGb3JMaW5rKFN0cmluZyYgb3V0QW5jaG9yTmFtZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBkb2N1bWVudC5iYXNlVVJMKCkpKSB7
Ci0gICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAg
ICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsK
ICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmZpbmRBbmNob3Iob3V0QW5jaG9yTmFtZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDFkYWE4NTg4ZGY1MzkwYWY4MTMxZTBk
YWYwOTdhODlmYjU3N2E1OTEuLjMwZWQ5ZjNmNjFmNDAzZGJiOTRlOGUzZTJmNzlmZjg5N2UxNzJh
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC00NDAsNiArNDQwLDggQEAgVmVjdG9y
PFJlZlB0cjxFbGVtZW50Pj4gVHJlZVNjb3BlOjplbGVtZW50c0Zyb21Qb2ludChjb25zdCBGbG9h
dFBvaW50JiBwKQogICAgIHJldHVybiBlbGVtZW50c0Zyb21Qb2ludChwLngoKSwgcC55KCkpOwog
fQogCisvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBjaGFuZ2UgdGhpcyB0byB0YWtlIGEgU3Ry
aW5nVmlldywgc2luY2UgdGhhdCdzIHdoYXQgY2FsbGVycyBoYXZlCisvLyBhbmQgdGhlcmUgaXMg
bm8gcGFydGljdWxhciBhZHZhbnRhZ2UgdG8gYWxyZWFkeSBoYXZpbmcgYSBTdHJpbmcuCiBFbGVt
ZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggZTk2MDFjZTE3OTRkZGJkYzE3NGU0YjY1
MzY1MzRiNzdmZjNjNDEyOS4uMDAzOWRhZjBmNzk2OTU1YmFkMGY4NDI4Y2QyMGE3OGI4YjMwNjM4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTMyOCwxMyArMzI4LDEzIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VS
aWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQm
IGZyCiAgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gaW1hZ2UuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOworICAgICAgICBTdHJp
bmcgbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVz
OjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFt
ZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAg
ICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBv
bmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJtZWRpYSIpOworICAgICAgICAgICAgbmFtZSA9ICJtZWRp
YSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1lLCBy
ZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFn
ZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShu
YW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEo
KSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50
c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNDgsMTEgKzM0OCwx
MSBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJs
VG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1
dG8gbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgp
OworICAgICAgICBTdHJpbmcgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0
UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJmaWxlIik7CisgICAgICAgICAgICBuYW1l
ID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
bmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEo
KSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBX
VEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0
YWNobWVudEluc2VydGlvbkluZm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbQppbmRleCBmMmEyZDUyYWM1YWJmNGU0ZjEzMTEzY2EyNWQxYjIwYTE3MzhmYTY5Li5iN2Qy
OWNkNGJhZDk1MGQzYWJkN2RmNzllOTBmNTM0NjRjMzY4ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBFZGl0b3I6Ondy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1h
Z2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSBwYXN0ZWJvYXJkSW1h
Z2VVUkw7CiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAgICB9
Ci0gICAgcGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0
UGF0aENvbXBvbmVudCgpOworICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0gaW1h
Z2VTb3VyY2VVUkwubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgIHBhc3RlYm9h
cmRJbWFnZS5pbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNhY2hlZEltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBiZGFkOWEwMDU0MjhmMTQ3YTgxNWVj
ZTAzZTdjMzlhMDdiODlhMmQ1Li5lYWM5YTBiOThjZDcwMTljYjUyMzUyZmFjN2ExOTI0MGVkYjE0
ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
CkBAIC0xNzcsMjIgKzE3NywxNyBAQCBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRh
Y2htZW50VGl0bGUoKSBjb25zdAogU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNo
bWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0CiB7CiAgICAgYXV0byB0aXRsZSA9IGF0dGFjaG1l
bnRUaXRsZSgpOwotCiAgICAgYXV0byBpbmRleE9mTGFzdERvdCA9IHRpdGxlLnJldmVyc2VGaW5k
KCcuJyk7CiAgICAgaWYgKGluZGV4T2ZMYXN0RG90ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1
cm4gdGl0bGU7CiAKLSAgICBTdHJpbmcgbmFtZSA9IHRpdGxlLmxlZnQoaW5kZXhPZkxhc3REb3Qp
OwotICAgIFN0cmluZyBleHRlbnNpb24gPSB0aXRsZS5zdWJzdHJpbmcoaW5kZXhPZkxhc3REb3Qp
OwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxlZnRU
b1JpZ2h0TWFyayk7Ci0gICAgYnVpbGRlci5hcHBlbmQoZmlyc3RTdHJvbmdJc29sYXRlKTsKLSAg
ICBidWlsZGVyLmFwcGVuZChuYW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZChwb3BEaXJlY3Rpb25h
bElzb2xhdGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGV4dGVuc2lvbik7Ci0KLSAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBsZWZ0
VG9SaWdodE1hcmssCisgICAgICAgIGZpcnN0U3Ryb25nSXNvbGF0ZSwKKyAgICAgICAgU3RyaW5n
Vmlldyh0aXRsZSkubGVmdChpbmRleE9mTGFzdERvdCksCisgICAgICAgIHBvcERpcmVjdGlvbmFs
SXNvbGF0ZSwKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKGluZGV4T2ZMYXN0
RG90KQorICAgICk7CiB9CiAKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1l
bnRUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
aW5kZXggMDNkOTA1YmJhMzc5MTI3ZDdmOTQxODkyZjc5NzY1YTdlZjkzYzFiOS4uNmJmZTcwNzRh
OTUxYWQ3YWNjZTk5Mzg0MDA2NmM4ZGI3NGQxNjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTM1NywxNCArMzU3LDE0IEBAIHN0YXRpYyBSZXBsYWNl
bWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGV4dGVuc2lv
bjsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7
CiAgICAgc2l6ZV90IGRvdE9mZnNldCA9IGxhc3RQYXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcu
Jyk7CiAgICAgaWYgKGRvdE9mZnNldCAhPSBub3RGb3VuZCkKLSAgICAgICAgZXh0ZW5zaW9uID0g
bGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEpOworICAgICAgICBleHRl
bnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoZG90T2Zmc2V0ICsgMSkudG9TdHJp
bmcoKTsKIAogICAgIFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0
eSgpICYmIHVybC5wcm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9t
RGF0YVVSTCh1cmwuc3RyaW5nKCkpOworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVS
TCh1cmwpOwogICAgIAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1w
dHkoKSkgewogICAgICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRl
eCBlN2E1MTZlYmEyMjg0OWZjZDM3MzQ2NTkzOTRiN2M0OWU3Zjk3Y2UxLi41Yjg0NTQxZWEwZGNm
NTIyNDI4MmMzMWNmNzRiYjQ2ZWEyNTUyZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTk4LDkgKzk4LDcgQEAgTWVkaWFUaW1lIE1l
ZGlhRnJhZ21lbnRVUklQYXJzZXI6OmVuZFRpbWUoKQogCiB2b2lkIE1lZGlhRnJhZ21lbnRVUklQ
YXJzZXI6OnBhcnNlRnJhZ21lbnRzKCkKIHsKLSAgICBpZiAoIW1fdXJsLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQotICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIGZyYWdtZW50U3RyaW5nID0g
bV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBmcmFnbWVudFN0cmluZyA9IG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudFN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCmluZGV4IGI3MGU1ZGNi
ZTgyNzU4MTAwYjA3MmQyZjRmMGYwZTQ2ODBjMDEwOTcuLjJiZDkyZTFkNTFiMzQwMjRiODNlYjky
MmE3NmRjMGYwOTJlYmE5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRp
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25z
dDsKICAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6dXNlcm5hbWUoKSBjb25z
dAogewotICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFVzZXIoKTsKKyAgICByZXR1cm4gaHJlZigp
LmVuY29kZWRVc2VyKCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBA
IC0xMjIsNyArMTIyLDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3QgU3Ry
aW5nJiB1c2VyKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnBh
c3N3b3JkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzKCk7CisgICAg
cmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzc3dvcmQoKS50b1N0cmluZygpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQ
YXNzd29yZChjb25zdCBTdHJpbmcmIHBhc3MpCiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBp
ZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHVybC5zZXRQ
YXNzKHBhc3MpOworICAgIHVybC5zZXRQYXNzd29yZChwYXNzKTsKICAgICBzZXRIcmVmKHVybCk7
CiB9CiAKQEAgLTE0MSwxNyArMTQxLDE4IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6aG9zdCgpIGNv
bnN0CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0QW5kUG9ydCgpOwogfQogCi0vLyBUaGlzIGZ1bmN0
aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2VzIGJlZm9yZSB0aGUgcG9ydCBudW1iZXIu
Ci1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlvbihjb25z
dCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCBwb3J0U3RhcnQsIHVuc2lnbmVkJiBwb3J0RW5kKQor
c3RhdGljIGlubGluZSB1bnNpZ25lZCBjb3VudEFTQ0lJRGlnaXRzKFN0cmluZ1ZpZXcgc3RyaW5n
KQogewotICAgIHBvcnRFbmQgPSBwb3J0U3RhcnQ7Ci0gICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh2
YWx1ZVtwb3J0RW5kXSkpCi0gICAgICAgICsrcG9ydEVuZDsKLSAgICByZXR1cm4gdmFsdWUuc3Vi
c3RyaW5nKHBvcnRTdGFydCwgcG9ydEVuZCAtIHBvcnRTdGFydCkudG9VSW50KCk7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgY291bnQg
PSAwOyBjb3VudCA8IGxlbmd0aDsgKytjb3VudCkgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdp
dChzdHJpbmdbY291bnRdKSkKKyAgICAgICAgICAgIHJldHVybiBjb3VudDsKKyAgICB9CisgICAg
cmV0dXJuIGxlbmd0aDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxz
PFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIFVSTFV0aWxzPFQ+OjpzZXRI
b3N0KFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTY4LDE4ICsxNjksMTkgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9z
dChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmIChzZXBhcmF0b3IgPT0gbm90Rm91bmQpCiAg
ICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVu
c2lnbmVkIHBvcnRFbmQ7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnQgPSBwYXJzZVBvcnRGcm9tU3Ry
aW5nUG9zaXRpb24odmFsdWUsIHNlcGFyYXRvciArIDEsIHBvcnRFbmQpOwotICAgICAgICBpZiAo
IXBvcnQpIHsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHMo
dmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEpKTsKKyAgICAgICAgaWYgKCFwb3J0TGVuZ3Ro
KSB7CiAgICAgICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3Ry
dWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKICAgICAgICAgICAg
IC8vIHNwZWNpZmljYWxseSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAogICAgICAg
ICAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRv
IGVtcHR5IHN0cmluZy4KLSAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJz
dHJpbmcoMCwgc2VwYXJhdG9yICsgMSkgKyAnMCcpOworICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2VlbXMgbGlrZSBzb21ldGhpbmcgdGhhdCBoYXMgc2luY2UgYmVlbiBjaGFuZ2VkIGFuZCB0
aGlzIHJ1bGUgYW5kIGNvZGUgbWF5IGJlIG9ic29sZXRlLgorICAgICAgICAgICAgdXJsLnNldEhv
c3RBbmRQb3J0KG1ha2VTdHJpbmcodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpLCAn
MCcpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICBhdXRvIHBv
cnROdW1iZXIgPSBwYXJzZVVJbnQxNih2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSwgcG9y
dExlbmd0aCkpOworICAgICAgICAgICAgaWYgKHBvcnROdW1iZXIgJiYgV1RGOjppc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2woKnBvcnROdW1iZXIsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAg
ICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1
ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkpOworICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5k
UG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CkBAIC0yMjcsMTcgKzIy
OSwxMyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIGlmICh1
cmwuY2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgaWYgKHVybC5j
YW5ub3RCZUFCYXNlVVJMKCkgfHwgdXJsLnByb3RvY29sSXMoImZpbGUiKSB8fCAhdXJsLmNhblNl
dEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzdWNjZXNzID0gdHJ1
ZTsKLSAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCZzdWNjZXNzKTsKLSAgICBpZiAo
IXN1Y2Nlc3MgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3Rv
Y29sKCkpKQotICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwotICAgIGVsc2UKLSAgICAgICAgdXJs
LnNldFBvcnQocG9ydCk7CisgICAgYXV0byBwb3J0ID0gcGFyc2VVSW50MTYodmFsdWUubGVmdChj
b3VudEFTQ0lJRGlnaXRzKHZhbHVlKSkpOworICAgIGlmIChwb3J0ICYmIFdURjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKCpwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHBvcnQgPSBX
VEY6Om51bGxvcHQ7CisgICAgdXJsLnNldFBvcnQocG9ydCk7CiAKICAgICBzZXRIcmVmKHVybC5z
dHJpbmcoKSk7CiB9CkBAIC0yNTcsMTAgKzI1NSwxMCBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQ
YXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1l
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2YWx1ZVswVV0gPT0gJy8nKQorICAgIGlm
ICh2YWx1ZS5zdGFydHNXaXRoKCcvJykpCiAgICAgICAgIHVybC5zZXRQYXRoKHZhbHVlKTsKICAg
ICBlbHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiArIHZhbHVlKTsKKyAgICAgICAgdXJsLnNl
dFBhdGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7CiAKICAgICBzZXRIcmVmKHVybC5zdHJpbmco
KSk7CiB9CkBAIC0yNjgsOCArMjY2LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0
aWxzPFQ+OjpzZWFyY2goKSBjb25zdAogewotICAgIFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVy
eSgpOwotICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsg
cXVlcnk7CisgICAgcmV0dXJuIGhyZWYoKS5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5n
KCkgOiBocmVmKCkucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMjgwLDcgKzI3Nyw3IEBAIHZvaWQgVVJMVXRp
bHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAvLyBJZiB0aGUg
Z2l2ZW4gdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgc2V0IHVybCdzIHF1ZXJ5IHRvIG51bGwu
CiAgICAgICAgIHVybC5zZXRRdWVyeSh7IH0pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmlu
ZyBuZXdTZWFyY2ggPSAodmFsdWVbMFVdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2
YWx1ZTsKKyAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9IHZhbHVlLnN0YXJ0c1dpdGgoJz8nKSA/
IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOwogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCAn
IycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhlIGhhc2guCiAgICAgICAgIHVybC5z
ZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZVdpdGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKICAgICB9
CkBAIC0yOTEsMTcgKzI4OCwxNSBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRTZWFyY2goY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+
OjpoYXNoKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gaHJlZigp
LmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gQXRvbVN0cmlu
ZyhTdHJpbmcoIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgLy8gRklYTUU6IFdoeSBj
b252ZXJ0IHRoaXMgc3RyaW5nIHRvIGFuIGF0b20gaGVyZSBpbnN0ZWFkIG9mIGp1c3QgYSBzdHJp
bmc/IEp1c3QgYW4gZXJyb3I/IEludGVudGlvbmFsbHkgdG8gc2F2ZSBtZW1vcnk/CisgICAgcmV0
dXJuIGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0eUF0b20oKSA6
IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24oKS50b0F0b21T
dHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIFVSTFV0aWxzPFQ+Ojpz
ZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKLSAg
ICBTdHJpbmcgbmV3RnJhZ21lbnQgPSB2YWx1ZVswVV0gPT0gJyMnID8gdmFsdWUuc3Vic3RyaW5n
KDEpIDogdmFsdWU7CisgICAgYXV0byBuZXdGcmFnbWVudCA9IHZhbHVlLnN0YXJ0c1dpdGgoJyMn
KSA/IFN0cmluZ1ZpZXcodmFsdWUpLnN1YnN0cmluZygxKSA6IFN0cmluZ1ZpZXcodmFsdWUpOwog
ICAgIGlmIChuZXdGcmFnbWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNr
QXR0cmlidXRpb24uY3BwCmluZGV4IDYzM2U3NzVhNTQ1NDRmY2ZkNjY4N2FiYmVjZjlhZDg2ODlh
NmRkMmYuLjc2ZDRhZmI5NWZmNGI0NmRjMDJhY2NlMDdkZjRhZWM5YzU0YmYxNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIGJvb2wgQWRDbGlja0F0dHJpYnV0aW9uOjppc1ZhbGlkKCkgY29uc3QKIAogRXhwZWN0ZWQ8
QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uLCBTdHJpbmc+IEFkQ2xpY2tBdHRyaWJ1dGlv
bjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogewotICAg
IGlmICghcmVkaXJlY3RVUkwucHJvdG9jb2xJcygiaHR0cHMiX3MpIHx8IHJlZGlyZWN0VVJMLmhh
c1VzZXJuYW1lKCkgfHwgcmVkaXJlY3RVUkwuaGFzUGFzc3dvcmQoKSB8fCByZWRpcmVjdFVSTC5o
YXNRdWVyeSgpIHx8IHJlZGlyZWN0VVJMLmhhc0ZyYWdtZW50KCkpIHsKKyAgICBpZiAoIXJlZGly
ZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgfHwgcmVkaXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMo
KSB8fCByZWRpcmVjdFVSTC5oYXNRdWVyeSgpIHx8IHJlZGlyZWN0VVJMLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKEFkQ2xpY2tBdHRyaWJ1dGlvbiwgIkNvbnZl
cnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3Qg
SFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dv
cmQsIHF1ZXJ5IHN0cmluZywgYW5kIGZyYWdtZW50LiIpOwogICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJbQWQgQ2xpY2sgQXR0cmlidXRpb25dIENvbnZlcnNpb24gd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVS
TCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIHF1ZXJ5IHN0cmlu
ZywgYW5kIGZyYWdtZW50LiJfcyk7CkBAIC0xODksMTcgKzE4OSwxMiBAQCBVUkwgQWRDbGlja0F0
dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nKGNvbnN0IFVSTCYgYmFzZVVSTCkgY29uc3QKICAgICBh
dXRvIGhvc3QgPSBtX3NvdXJjZS5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKTsKICAgICBpZiAo
aG9zdCAhPSAibG9jYWxob3N0IiAmJiBob3N0ICE9ICIxMjcuMC4wLjEiKQogICAgICAgICByZXR1
cm4gVVJMKCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI/Y29udmVyc2lvbj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2Nv
bnZlcnNpb24udmFsdWUoKS5kYXRhKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiZjYW1w
YWlnbj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NhbXBhaWduLmlkKTsKLSAgICBp
ZiAoYmFzZVVSTC5oYXNRdWVyeSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcmJyk7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJhc2VVUkwucXVlcnkoKSk7Ci0gICAgfQotICAgIHJldHVy
biBVUkwoYmFzZVVSTCwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBTdHJpbmcgcmVsYXRpdmVV
Ukw7CisgICAgaWYgKCFiYXNlVVJMLmhhc1F1ZXJ5KCkpCisgICAgICAgIHJlbGF0aXZlVVJMID0g
bWFrZVN0cmluZygiP2NvbnZlcnNpb249IiwgbV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSwgIiZj
YW1wYWlnbj0iLCBtX2NhbXBhaWduLmlkKTsKKyAgICBlbHNlCisgICAgICAgIHJlbGF0aXZlVVJM
ID0gbWFrZVN0cmluZygiP2NvbnZlcnNpb249IiwgbV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSwg
IiZjYW1wYWlnbj0iLCBtX2NhbXBhaWduLmlkLCAnJicsIGJhc2VVUkwucXVlcnkoKSk7CisgICAg
cmV0dXJuIFVSTChiYXNlVVJMLCByZWxhdGl2ZVVSTCk7CiB9CiAKIHZvaWQgQWRDbGlja0F0dHJp
YnV0aW9uOjptYXJrQ29udmVyc2lvbkFzU2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IDgyOTA2MjhjNGVkNDVlMDUz
MWM0Nzk2ZmEyNmFkNWFjNGExZDYzMzguLmUwNTNjOWIwM2YwNDY1MGRlZjU1YmVjZDU4ZDFjNjM2
OWM2MzBhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgU3RyaW5nIHZhbGlkYXRlQ3Jvc3NP
cmlnaW5SZWRpcmVjdGlvblVSTChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogICAgIGlmICghTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChyZWRp
cmVjdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJub3QgYWxsb3dlZCB0byBmb2xsb3cgYSBjcm9zcy1vcmlnaW4gQ09S
UyByZWRpcmVjdGlvbiB3aXRoIG5vbiBDT1JTIHNjaGVtZSIpOwogCi0gICAgaWYgKHJlZGlyZWN0
VVJMLmhhc1VzZXJuYW1lKCkgfHwgcmVkaXJlY3RVUkwuaGFzUGFzc3dvcmQoKSkKKyAgICBpZiAo
cmVkaXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
InJlZGlyZWN0aW9uIFVSTCAiLCByZWRpcmVjdFVSTC5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlh
bHMiKTsKIAogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDIxNzdmNGI2ZGI2YjE5NWNhOWRmODI3
OWI1YWY3YmIxNTZmNWI1MGEuLmRmM2QwOGM3NGZlYmMxYjU0ZTI0NGU2M2ZjNDk2ZmU2MzBjNDMw
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC01MzIsOCArNTMyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAg
ICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY3Jv
c3Mtc2l0ZSByZXF1ZXN0cy4KICAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVy
bCgpOwogICAgIG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlDaGVjazsKLSAgICBB
U1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkp
OwotICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlz
RW1wdHkoKSk7CisgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgIXJlcXVlc3RVUkwu
aGFzQ3JlZGVudGlhbHMoKSk7CiAKICAgICBpZiAoIW1fcmVmZXJyZXIuaXNOdWxsKCkpCiAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1fcmVmZXJyZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggM2FhYThlZWQ4YzMzN2U3OWQ5ODg4YTQ1NWYz
OWZmM2ZlZTRiNWEzNi4uMzBhZjkwMDgwNDlhOGUzOTgyZjljOWJmNDlkYWViZmM5MmVhNjgwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC03OCwxMSArNzgs
MTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoVVJMJiB1cmws
IGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAogICAgIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2Rl
U3RyaW5nQXNGb3JtRGF0YShib2R5RGF0YSwgYm9keS51dGY4KCkpOwogICAgIGJvZHkgPSBTdHJp
bmcoYm9keURhdGEuZGF0YSgpLCBib2R5RGF0YS5zaXplKCkpLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
KycsICIlMjAiKTsKIAotICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGF1dG8g
cXVlcnkgPSB1cmwucXVlcnkoKTsKICAgICBpZiAocXVlcnkuaXNFbXB0eSgpKQogICAgICAgICB1
cmwuc2V0UXVlcnkoYm9keSk7CiAgICAgZWxzZQotICAgICAgICB1cmwuc2V0UXVlcnkocXVlcnkg
KyAnJicgKyBib2R5KTsKKyAgICAgICAgdXJsLnNldFF1ZXJ5KG1ha2VTdHJpbmcocXVlcnksICcm
JywgYm9keSkpOwogfQogCiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFj
dGlvbihjb25zdCBTdHJpbmcmIGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDMyM2RiNDYzNjAy
OThiOGE5MWJiMDBhNDc5MjRiYjJlODExMWYzMzguLjQ4ODJkNzdlMTI3MTY5ODVjNDY0NTFkZjBl
Yzc0MGE3OTM5M2M0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjQ2LDE1ICsyNDYsMTIgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2EKIAogVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVG
aWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3Qg
dXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGggaW5zdGVhZD8KICNpZiBVU0UoQ0YpICYmIFBM
QVRGT1JNKFdJTikKLSAgICBVUkwgdXJsKGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3Rl
bVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0
eWxlLCBmYWxzZSkpLmdldCgpKTsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyBTZWVt
cyBpbXByb2JhYmxlIHRoYXQgdGhlIHBhc3NlZC1pbiBwYXRocyB3b3VsZCBiZSBpbiB0aGUgV2lu
ZG93cyBwYXRoIHN0eWxlLgorICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1Bh
dGhTdHlsZSwgZmFsc2UpKS5nZXQoKTsKICNlbHNlCi0gICAgVVJMIHVybDsKLSAgICB1cmwuc2V0
UHJvdG9jb2woImZpbGUiX3MpOwotICAgIHVybC5zZXRQYXRoKHBhdGgpOworICAgIHJldHVybiBV
Ukw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgocGF0aCk7CiAjZW5kaWYKLSAgICByZXR1cm4g
dXJsOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21S
ZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggZmFhZTUx
Zjk5ZjYyYjJmMjlkNWNiYjhhZWNmY2ViMTZhZGMyZWI1NC4uNzM0ZGE3NjYyZDQ5YTYyMjU5ZGU2
MWZlZDhjYmViNzAwZWQyYWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBlbnVtIE1vZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9ubGluZVdoaXRlbGlz
dCwgVW5rbm93biB9OwogCi1zdGF0aWMgU3RyaW5nIG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1h
bmlmZXN0VVJMKQorc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFu
aWZlc3RVUkwpCiB7CiAgICAgYXV0byBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFVSTC5wYXRoKCk7
CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSAnLycpOwogICAgIG1hbmlmZXN0UGF0aCA9
IG1hbmlmZXN0UGF0aC5zdWJzdHJpbmcoMCwgbWFuaWZlc3RQYXRoLnJldmVyc2VGaW5kKCcvJykg
KyAxKTsKICAgICBBU1NFUlQobWFuaWZlc3RQYXRoWzBdID09IG1hbmlmZXN0UGF0aFttYW5pZmVz
dFBhdGgubGVuZ3RoKCkgLSAxXSk7Ci0gICAgcmV0dXJuIG1hbmlmZXN0UGF0aC50b1N0cmluZygp
OworICAgIHJldHVybiBtYW5pZmVzdFBhdGg7CiB9CiAKIGJvb2wgcGFyc2VNYW5pZmVzdChjb25z
dCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkKQEAgLTUxLDcgKzUx
LDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0
cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QKICAgICBBU1NFUlQobWFuaWZlc3QuZmFsbGJh
Y2tVUkxzLmlzRW1wdHkoKSk7CiAgICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMg
PSBmYWxzZTsKIAotICAgIFN0cmluZyBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBh
dGgobWFuaWZlc3RVUkwpOworICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZl
c3RQYXRoKG1hbmlmZXN0VVJMKTsKIAogICAgIGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVU
eXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFt
ZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRoID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1JTUVUeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCAzZjQ2OTljZjgzMjk4ZjA0ZTI3NGFl
MDBlZjk1YTU1NDc1YTY1ZjNkLi5jZDk0OWU3YzEzMGQ5NjYyODJmMTliNTJjOGRhMzFkMDA0YTY4
MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC04
NiwxMCArODYsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0
IEF0b21TdHJpbmcmKQogCiBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgaWYgKCF1
cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICByZXR1cm4gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVybiB1cmwoKS5mcmFn
bWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCiBib29sIENhY2hlZEZvbnQ6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggNmEyOGE4
NTcxYzVlY2E2MjdkM2U2ZTdkMTRmNzlhNzYzODY5NjViMy4uZTRhOTRhNTA1OTYxYWEzNzk3ZmE2
ZDA0ZWE2NWM2NDU2NWFkOTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgU3RyaW5n
IENhY2hlZFJlc291cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVxdWVz
dFVSTChSZXNvdXJjZVJlcXUKICAgICBpZiAoIU1lbW9yeUNhY2hlOjpzaG91bGRSZW1vdmVGcmFn
bWVudElkZW50aWZpZXIocmVxdWVzdC51cmwoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
VVJMIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9
IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9
IHVybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogICAgIHVybC5yZW1vdmVGcmFn
bWVudElkZW50aWZpZXIoKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgIHJldHVybiBm
cmFnbWVudElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYjRjZmI3
NTMxNzk2OTI2ODlkM2Q2NjFhYmNkNWZkNzM3ZWIwZWRiZS4uN2MxMWRiZmI2YzRjMGY5YmJkZWM0
YTk4ZWFlZDIzNGZlMGQ5M2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjE3
OSw4ICsyMTc5LDggQEAgdm9pZCBGcmFtZVZpZXc6OnJlc3RvcmVTY3JvbGxiYXIoKQogCiBib29s
IEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJp
bmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIGlm
IChzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoZnJhZ21lbnRJZGVudGlmaWVyKSkKKyAgICBhdXRv
IGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBpZiAo
c2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGZyYWdtZW50SWRlbnRpZmllci50b1N0cmluZygpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUcnkgYWdhaW4gYWZ0ZXIgZGVjb2Rpbmcg
dGhlIHJlZiwgYmFzZWQgb24gdGhlIGRvY3VtZW50J3MgZW5jb2RpbmcuCkBAIC0yMTk1LDcgKzIx
OTUsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkK
IAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbChjb25zdCBTdHJpbmcm
IGZyYWdtZW50SWRlbnRpZmllcikKIHsKLSAgICBMT0coU2Nyb2xsaW5nLCAiRnJhbWVWaWV3Ojpz
Y3JvbGxUb0FuY2hvciAlcyIsIGZyYWdtZW50SWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKKyAg
ICBMT0coU2Nyb2xsaW5nLCAiRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwgJXMi
LCBmcmFnbWVudElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBJZiBvdXIgVVJM
IGhhcyBubyByZWYsIHRoZW4gd2UgaGF2ZSBubyBwbGFjZSB3ZSBuZWVkIHRvIGp1bXAgdG8uCiAg
ICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CmluZGV4IDljNThiMDZmNGM0NzExMzBjZTQ4MTVmMTFkMTRjYjc4ZjgxYjQ5YTAuLjM4ZmQ3YjI5
YjUzZWFiNDg0ZTMwOTYzYjUxYzhhZTUyNWM1ZDdhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cApAQCAtMjAxLDEzICsyMDEsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVP
YmplY3RBZGRlZChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICAgICAg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lID0gc3RhdGVPYmplY3RUeXBlID09IFN0YXRlT2JqZWN0
VHlwZTo6UmVwbGFjZSA/ICJoaXN0b3J5LnJlcGxhY2VTdGF0ZSgpIiA6ICJoaXN0b3J5LnB1c2hT
dGF0ZSgpIjsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsIG1ha2VT
dHJpbmcoIkJsb2NrZWQgYXR0ZW1wdCB0byB1c2UgIiwgZnVuY3Rpb25OYW1lLCAiIHRvIGNoYW5n
ZSBzZXNzaW9uIGhpc3RvcnkgVVJMIGZyb20gIiwgZG9jdW1lbnRVUkwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCksICIgdG8gIiwgZnVsbFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSwgIi4gIiwgc3VmZml4KSB9OwogICAgIH07Ci0gICAgaWYgKCFwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwudXNlcigp
ICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJMLnBhc3MoKSAhPSBkb2N1bWVudFVSTC5w
YXNzKCkpCisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9j
dW1lbnRVUkwpIHx8IGZ1bGxVUkwudXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxs
VVJMLnBhc3N3b3JkKCkgIT0gZG9jdW1lbnRVUkwucGFzc3dvcmQoKSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZUJsb2NrZWRVUkxTZWN1cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlByb3RvY29s
cywgZG9tYWlucywgcG9ydHMsIHVzZXJuYW1lcywgYW5kIHBhc3N3b3JkcyBtdXN0IG1hdGNoLiIp
OwogCiAgICAgY29uc3QgYXV0byYgZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgIC8vIFdlIGFsbG93IHNhbmRib3hlZCBkb2N1
bWVudHMsICdkYXRhOicvJ2ZpbGU6JyBVUkxzLCBldGMuIHRvIHVzZSAncHVzaFN0YXRlJy8ncmVw
bGFjZVN0YXRlJyB0byBtb2RpZnkgdGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21lbnRzLgogICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDI4IGZvciB0
aGUgY29tcGF0aWJpbGl0eSBjb25jZXJucy4KLSAgICBib29sIGFsbG93U2FuZGJveEV4Y2VwdGlv
biA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5
T3JpZ2luLmlzVW5pcXVlKCkpICYmIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGRvY3Vt
ZW50VVJMLCBmdWxsVVJMKTsKKyAgICBib29sIGFsbG93U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1
bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlz
VW5pcXVlKCkpCisgICAgICAgICYmIGRvY3VtZW50VVJMLnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJh
Z21lbnRJZGVudGlmaWVyKCkgPT0gZnVsbFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50
SWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFhbGxvd1NhbmRib3hFeGNlcHRpb24gJiYgIWRvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4uY2FuUmVxdWVzdChmdWxsVVJMKSAmJiAoZnVsbFVSTC5wYXRoKCkg
IT0gZG9jdW1lbnRVUkwucGF0aCgpIHx8IGZ1bGxVUkwucXVlcnkoKSAhPSBkb2N1bWVudFVSTC5x
dWVyeSgpKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1cml0eUVycm9yV2l0
aE1lc3NhZ2VTdWZmaXgoIlBhdGhzIGFuZCBmcmFnbWVudHMgbXVzdCBtYXRjaCBmb3IgYSBzYW5k
Ym94ZWQgZG9jdW1lbnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmluZGV4IDI4Nzg5Y2Qx
NDI5ODMyYzFmMjcyYTZhYWQ1ZWIxZThiNjI4ODJlYzcuLjM2YzFjOWJiY2NhMTA2YzhlYjU3ZjFi
ZWE2MzcwYjBlMjg3YTI4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCkBAIC02MSwxNCAr
NjEsOCBAQCBpbmxpbmUgY29uc3QgVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIAogU3RyaW5n
IExvY2F0aW9uOjpocmVmKCkgY29uc3QKIHsKLSAgICBhdXRvJiB1cmwgPSB0aGlzLT51cmwoKTsK
LQotICAgIGlmICghdXJsLmhhc1VzZXJuYW1lKCkgJiYgIXVybC5oYXNQYXNzd29yZCgpKQotICAg
ICAgICByZXR1cm4gdXJsLnN0cmluZygpOwotCi0gICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFs
cyh1cmwpOwotICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5zZXRVc2VyKFdURjo6ZW1wdHlTdHJp
bmcoKSk7Ci0gICAgdXJsV2l0aG91dENyZWRlbnRpYWxzLnNldFBhc3MoV1RGOjplbXB0eVN0cmlu
ZygpKTsKKyAgICBVUkwgdXJsV2l0aG91dENyZWRlbnRpYWxzKHVybCgpKTsKKyAgICB1cmxXaXRo
b3V0Q3JlZGVudGlhbHMucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICByZXR1cm4gdXJsV2l0aG91
dENyZWRlbnRpYWxzLnN0cmluZygpOwogfQogCkBAIC05MSwyMCArODUsMTkgQEAgU3RyaW5nIExv
Y2F0aW9uOjpob3N0bmFtZSgpIGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6cG9ydCgpIGNvbnN0
CiB7Ci0gICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICByZXR1cm4gdXJsLnBv
cnQoKSA/IFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkudmFsdWUoKSkgOiBlbXB0eVN0cmluZygp
OworICAgIGF1dG8gcG9ydCA9IHVybCgpLnBvcnQoKTsKKyAgICByZXR1cm4gcG9ydCA/IFN0cmlu
Zzo6bnVtYmVyKCpwb3J0KSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6
cGF0aG5hbWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0aCA9IHVybCgpLnBhdGgoKTsKLSAgICBy
ZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJu
IHBhdGguaXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBM
b2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVy
bCgpOwotICAgIHJldHVybiB1cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDog
Ij8iICsgdXJsLnF1ZXJ5KCk7CisgICAgcmV0dXJuIHVybCgpLnF1ZXJ5KCkuaXNFbXB0eSgpID8g
ZW1wdHlTdHJpbmcoKSA6IHVybCgpLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0
cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246Om9yaWdpbigpIGNvbnN0CkBAIC0xMjUsOCAr
MTE4LDcgQEAgUmVmPERPTVN0cmluZ0xpc3Q+IExvY2F0aW9uOjphbmNlc3Rvck9yaWdpbnMoKSBj
b25zdAogCiBTdHJpbmcgTG9jYXRpb246Omhhc2goKSBjb25zdAogewotICAgIGNvbnN0IFN0cmlu
ZyYgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAg
cmV0dXJuIGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMi
ICsgZnJhZ21lbnRJZGVudGlmaWVyOworICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZp
ZXIoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVy
V2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmcoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gTG9jYXRpb246OnNldEhyZWYoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYg
Zmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTQ0LDcgKzEzNiw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQcm90b2NvbChET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93JiBmaXJzCiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICBpZiAoIXVybC5zZXRQcm90b2NvbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTeW50YXhFcnJvciB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlv
bihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBm
aXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBob3N0KQpAQCAtMTU0LDcgKzE0Niw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBE
T01XaW5kb3cmIGZpcnN0V2luCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZy
YW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0SG9zdEFuZFBvcnQoaG9zdCk7Ci0g
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cs
IHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0bmFtZShET01X
aW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKQEAgLTE2NCw3ICsxNTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlv
bjo6c2V0SG9zdG5hbWUoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlycwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihh
Y3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRM
b2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nKQpAQCAtMTczLDEyICsx
NjUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFj
dGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKLSAg
ICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9y
dCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsLnJlbW92ZVBv
cnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAg
IHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKKyAgICByZXR1cm4gc2V0TG9j
YXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBhdGhuYW1lKQpAQCAtMTg4LDcgKzE3
Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFtZShET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
VVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRo
bmFtZSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cs
IHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmly
c3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFy
Y2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0
IFN0cmluZyYgc2VhcmNoKQpAQCAtMTk4LDcgKzE4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRTZWFyY2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKICAgICB1cmwuc2V0UXVlcnkoc2VhcmNoKTsKLSAgICByZXR1cm4gc2V0TG9jYXRp
b24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERP
TVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaGFzaCkKQEAgLTIxOCw3ICsyMDYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgogICAgIC8vIGNhc2VzIHdoZXJlIGZyYWdtZW50
IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuIAogICAgIGlmIChlcXVhbElnbm9y
aW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGFjZTViN2VkOTcwMWUyNDFlNDBhNTdkZTY0MThk
OThjMTI5ZDkzODUuLjJkNTE0Njk5YjExNzFlOWM3NDg2NjEyYTdiMWE1ZTU1YTJiYWNmZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTE0
NywyMiArMTQ3LDE5IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzSG9zdChj
b25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgcmV0dXJuIGhvc3RbaG9zdC5sZW5ndGgoKSAtIG1f
aG9zdC5sZW5ndGgoKSAtIDFdID09ICcuJzsKIH0KIAotc3RydWN0IE1hdGNoVGVzdGVyCi17Citz
dHJ1Y3QgTWF0Y2hUZXN0ZXIgewogICAgIFN0cmluZ1ZpZXcgbV9wYXR0ZXJuOwotICAgIHVuc2ln
bmVkIG1fcGF0dGVybkluZGV4OwotICAgIAorICAgIHVuc2lnbmVkIG1fcGF0dGVybkluZGV4IHsg
MCB9OworCiAgICAgU3RyaW5nVmlldyBtX3Rlc3Q7Ci0gICAgdW5zaWduZWQgbV90ZXN0SW5kZXg7
Ci0gICAgCisgICAgdW5zaWduZWQgbV90ZXN0SW5kZXggeyAwIH07CisKICAgICBNYXRjaFRlc3Rl
cihTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1ZpZXcgdGVzdCkKLSAgICA6IG1fcGF0dGVybihw
YXR0ZXJuKQotICAgICwgbV9wYXR0ZXJuSW5kZXgoMCkKLSAgICAsIG1fdGVzdCh0ZXN0KQotICAg
ICwgbV90ZXN0SW5kZXgoMCkKKyAgICAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKKyAgICAgICAg
LCBtX3Rlc3QodGVzdCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCB0ZXN0U3RyaW5n
RmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbmRleCA+PSBtX3Rlc3QubGVuZ3RoKCk7
IH0KICAgICBib29sIHBhdHRlcm5TdHJpbmdGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
dGVybkluZGV4ID49IG1fcGF0dGVybi5sZW5ndGgoKTsgfQogCkBAIC0xNzQsNyArMTcxLDcgQEAg
c3RydWN0IE1hdGNoVGVzdGVyCiAgICAgICAgICAgICBtX3BhdHRlcm5JbmRleCsrOwogICAgICAg
ICB9CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBlYXRTYW1lQ2hhcnMoKQogICAgIHsKICAgICAg
ICAgd2hpbGUgKCFwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSAmJiAhdGVzdFN0cmluZ0ZpbmlzaGVk
KCkpIHsKQEAgLTIyNiw4ICsyMjMsNyBAQCBzdHJ1Y3QgTWF0Y2hUZXN0ZXIKIAogYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKIHsK
LSAgICBNYXRjaFRlc3RlciBtYXRjaChTdHJpbmdWaWV3KG1fcGF0aCksIHRlc3QucGF0aCgpKTsK
LSAgICByZXR1cm4gbWF0Y2gudGVzdCgpOworICAgIHJldHVybiBNYXRjaFRlc3RlcihtX3BhdGgs
IHRlc3QucGF0aCgpKS50ZXN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNGEwYzM0ZWNh
NzI0MmJkYTcyNTI4NDhiM2E4Y2UyZDEzNWY3NDM1Yi4uNDcwZmU1NDk1NGUxYjNjNDdlZWYwNWU3
ODUwY2I1YmEyYzk5NWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKQEAgLTc5MCwxNiArNzkwLDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIGlmIChmaWxl
bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsIGRlZmF1bHRNSU1FVHlwZSgpKSkKLSAg
ICAgICAgcmV0dXJuIGZpbGVuYW1lOwotCi0gICAgaWYgKGZpbGVuYW1lLnJldmVyc2VGaW5kKCcu
JykgIT0gbm90Rm91bmQpCisgICAgaWYgKGZpbGVuYW1lLmlzRW1wdHkoKSB8fCBmaWxlbmFtZS5j
b250YWlucygnLicpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsIGRlZmF1bHRN
SU1FVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwogCi0gICAgU3RyaW5nIHByZWZl
cnJlZEV4dGVuc2lvbiA9IGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBl
KTsKKyAgICBhdXRvIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdldFByZWZlcnJlZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBpZiAocHJlZmVycmVkRXh0ZW5zaW9uLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggYWI3ZTYwNTQyYjAxODJjZmFiNmJm
MjIwNmY0ODc4OGYxODQxYzYzOC4uYzgyOGJiZTdlNzc1NWVlNzExMjE3MjNlOWYxNzAyN2VkMWZh
ZTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcApAQCAtNDQxLDEyICs0NDEsMTIgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25z
dCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHIKICAg
ICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUo
KTsKICAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBh
cHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkg
ewogICAgICAgICBpZiAobV91cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29u
dGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygp
KSk7CisgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9t
RGF0YVVSTChtX3VybCkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBsYXN0
UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICAgICAgYXV0
byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICAg
ICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CiAgICAg
ICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGV4
dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhwb3MgKyAxKTsKKyAgICAgICAg
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKHBv
cyArIDEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgU3RyaW5nIG1lZGlhVHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW1lZGlhVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlIHsgV1RGTW92ZShtZWRpYVR5cGUp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IDYxNjJhZGFlNmJmZjUxNjcxZTNiZTUzMjIyN2U3ZGU1Nzk5OWZkZjAuLjJlYzk3NWNiMTA0
NWFlNGM4NzQ5N2NkOWEwYWNlMDJmOTIxMWQ5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIHZv
aWQgY29udmVydFRvSW50ZXJuYWxQcm90b2NvbChVUkwmIHVybCkKICAgICBpZiAod2Via2l0R3N0
Q2hlY2tWZXJzaW9uKDEsIDEyLCAwKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICh1cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpKQotICAgICAgICB1
cmwuc2V0UHJvdG9jb2woIndlYmtpdCsiICsgdXJsLnByb3RvY29sKCkpOworICAgICAgICB1cmwu
c2V0UHJvdG9jb2wobWFrZVN0cmluZygid2Via2l0KyIsIHVybC5wcm90b2NvbCgpKSk7CiB9CiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDcyOGZhMmU4
NzliMGU3NjFhNDk1ZGM0YWNhMzA4NjQ0YmQ2NGUwMGUuLmQzYjMzODI3OTFlZjJjMDIyM2E3NjQz
MTcxM2YxOGIxZjMyZTZhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsID0gbV9maXJzdFJlcXVlc3QudXJs
KCk7CiAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzcyA9IHVybC5w
YXNzKCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICAgICAgbV9m
aXJzdFJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICB9CiAgICAgCkBAIC05Niw3ICs5
Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFN1Z2dlc3RlZCBjcmVkZW50aWFscyBmb3IgdGhlIGN1
cnJlbnQgcmVkaXJlY3Rpb24gc3RlcC4KICAgICBTdHJpbmcgbV91c2VyOwotICAgIFN0cmluZyBt
X3Bhc3M7CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CiAgICAgCiAgICAgQ3JlZGVudGlhbCBtX2lu
aXRpYWxDcmVkZW50aWFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYTkzNzMyMDM1MzEyY2M0
N2QwOTIyMGFkODRmMmZiMmU4ZjczNDJkZS4uNTMwZWNjZmFlNzkzZTM1ZGVlOTllYzA0MDc3MDdh
MzhmOWM3YzllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMCBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxzKCkKIHsKICAgICB1cGRhdGVSZXNv
dXJjZVJlcXVlc3QoKTsgCiAKLSAgICBpZiAobV91cmwudXNlcigpLmlzRW1wdHkoKSAmJiBtX3Vy
bC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmICghbV91cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV91cmwuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgbV91cmwu
c2V0UGFzcyhTdHJpbmcoKSk7Ci0KKyAgICBtX3VybC5yZW1vdmVDcmVkZW50aWFscygpOwogICAg
IG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNw
cAppbmRleCAwYzJkM2YwNDQzMDY1MWIzMzE5NTJiNmQwMTlmZTU2ZDFjNmIwNDU0Li5iYWZkMGRh
N2ExODMyNjBlNGI2YWJiYzUzYzkzMWFjYzk4YjY4NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBDdXJsUHJveHlTZXR0aW5nczo6cmVidWlsZFVybCgpCiB2
b2lkIEN1cmxQcm94eVNldHRpbmdzOjpzZXRVc2VyUGFzcyhjb25zdCBTdHJpbmcmIHVzZXIsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAgbV91cmwuc2V0VXNlcih1c2VyKTsKLSAgICBt
X3VybC5zZXRQYXNzKHBhc3N3b3JkKTsKKyAgICBtX3VybC5zZXRQYXNzd29yZChwYXNzd29yZCk7
CiAKICAgICByZWJ1aWxkVXJsKCk7CiB9CkBAIC0xMTgsOCArMTE4LDggQEAgc3RhdGljIE9wdGlv
bmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3QgVVJMICZ1cmwpCiAgICAgaWYgKCFwb3J0
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byB1c2VycGFzcyA9ICh1
cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dvcmQoKSkgPyBtYWtlU3RyaW5nKHVybC51
c2VyKCksICI6IiwgdXJsLnBhc3MoKSwgIkAiKSA6IFN0cmluZygpOwotICAgIHJldHVybiBtYWtl
U3RyaW5nKHVybC5wcm90b2NvbCgpLCAiOi8vIiwgdXNlcnBhc3MsIHVybC5ob3N0KCksICI6Iiwg
U3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKKyAgICBhdXRvIHVzZXJwYXNzID0gdXJsLmhhc0NyZWRl
bnRpYWxzKCkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJsLnBhc3N3b3JkKCksICJA
IikgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyh1cmwucHJvdG9jb2woKSwgIjov
LyIsIHVzZXJwYXNzLCB1cmwuaG9zdCgpLCAiOiIsICpwb3J0KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaAppbmRleCBhZjMxMzU0NmM0NGEzMjc3ZjA2YjQ4NTRlZjAzMDI3Yjg1ODE0NDAzLi41ODNl
MDBjNGUzMTQ2OTllYTFmNTQyZmUzNjkyNGJlZDBlMjFiMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVz
ZXJQYXNzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFN0cmluZyB1
c2VyKCkgY29uc3QgeyByZXR1cm4gbV91cmwudXNlcigpOyB9Ci0gICAgY29uc3QgU3RyaW5nIHBh
c3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwucGFzcygpOyB9CisgICAgY29uc3QgU3RyaW5n
IHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwucGFzc3dvcmQoKTsgfQogCiAgICAgdm9p
ZCBzZXREZWZhdWx0QXV0aE1ldGhvZCgpIHsgbV9hdXRoTWV0aG9kID0ga0NVUkxBVVRIX0FOWTsg
fQogICAgIHZvaWQgc2V0QXV0aE1ldGhvZChsb25nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggNzY3
YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEwNzJkNi4uZWU2MDNkNzIyZjQxZDBkNmY3
YzQ2YjkwNmZiN2E1NTEwNTIwZjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE0MiwxNSArMTQy
LDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxl
Z2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAjZW5kaWYKIHsKICAgICAvLyBDcmVkZW50
aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBjb25uZWN0aW9uOmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBt
YWRlLgotICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5
KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsK
KyAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3N3b3JkLmlzRW1wdHko
KSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewog
ICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAg
ICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIoZC0+bV91c2VyKTsKLSAgICAgICAgdXJs
V2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNzKTsKKyAgICAgICAgdXJsV2l0aENyZWRl
bnRpYWxzLnNldFBhc3N3b3JkKGQtPm1fcGFzc3dvcmQpOwogICAgICAgICBmaXJzdFJlcXVlc3Qo
KS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UgJiYgZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKSB7Ci0gICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFz
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9w
YXNzd29yZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0
MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkg
Y2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCiAgICAgICAgICAgICAv
LyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBi
eSBSRkMgMjYxNy4KICAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWwKICAgICAgICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgcG9zc2li
bGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5nIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgg
a25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQgYWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkK
ICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0
IHBvcCB1cCkuCiAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
ZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICAgICAgICAgIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2Fj
aGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVx
dWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3N3
b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZQogCiAgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAg
IGQtPm1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAg
ICBkLT5tX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhv
ZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMo
KTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gT25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBj
cmVkZW50aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVj
dAogICAgICAgICAvLyBVUkwgZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4K
LSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAm
JiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlz
RW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5p
c051bGwoKSkgewogICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOwogICAgICAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFn
ZVNlc3Npb24oKSkKICAgICAgICAgICAgICAgICBjcmVkZW50aWFsID0gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChyZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCks
IHJlcXVlc3QudXJsKCkpOwpAQCAtNTIxLDE3ICs1MjEsMTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2gKICAgICBpZiAoIWNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFz
ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxs
KCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwgPSBbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNl
cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOk5TVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl07CisgICAgaWYgKCFkLT5tX3VzZXIuaXNO
dWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBjcmVkZW50
aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhVc2VyOmQtPm1f
dXNlcgorICAgICAgICAgICAgcGFzc3dvcmQ6ZC0+bV9wYXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VS
TENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dKTsKICAgICAgICAgZC0+bV9jdXJyZW50
TWFjQ2hhbGxlbmdlID0gY2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsK
ICAgICAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotICAgICAgICBy
ZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAg
ICAgICAgW2NyZWRlbnRpYWwgcmVsZWFzZV07CisgICAgICAgIHJlY2VpdmVkQ3JlZGVudGlhbChj
aGFsbGVuZ2UsIENyZWRlbnRpYWwoY3JlZGVudGlhbC5nZXQoKSkpOwogICAgICAgICAvLyBGSVhN
RTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNlciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9y
IGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3JyZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGlj
aXRseS4KICAgICAgICAgZC0+bV91c2VyID0gU3RyaW5nKCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9
IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3b3JkID0gU3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGQ4MjhkYjc2
Njg0MDQ5MjdlNTc2YzZiMzA4ZTZmOWU3ZTc1ZmVhMmEuLjNmMmQzNmNmNTc1NTA2NTVmMzlmZDQx
MTI0YzlkNmYxYTIyYzJhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCBHVW5pcXVlUHRyPFNvdXBVUkk+IFJlc291cmNlUmVxdWVzdDo6Y3JlYXRlU291cFVS
SSgpIGNvbnN0CiAgICAgLy8gd2hlbiBib3RoIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJl
IG5vbi1udWxsLiBXaGVuIHdlIGhhdmUgY3JlZGVudGlhbHMsIGVtcHR5IHVzZXJuYW1lcyBhbmQg
cGFzc3dvcmRzCiAgICAgLy8gc2hvdWxkIGJlIGVtcHR5IHN0cmluZ3MgaW5zdGVhZCBvZiBudWxs
LgogICAgIFN0cmluZyB1cmxVc2VyID0gbV91cmwudXNlcigpOwotICAgIFN0cmluZyB1cmxQYXNz
ID0gbV91cmwucGFzcygpOworICAgIFN0cmluZyB1cmxQYXNzID0gbV91cmwucGFzc3dvcmQoKTsK
ICAgICBpZiAoIXVybFVzZXIuaXNFbXB0eSgpIHx8ICF1cmxQYXNzLmlzRW1wdHkoKSkgewogICAg
ICAgICBzb3VwX3VyaV9zZXRfdXNlcihzb3VwVVJJLmdldCgpLCB1cmxVc2VyLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBzb3VwX3VyaV9zZXRfcGFzc3dvcmQoc291cFVSSS5nZXQoKSwgdXJsUGFz
cy51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9VUkxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9VUkxTb3VwLmNwcAppbmRleCBmNTFjNGZkNTdmOGUxNGI5NjRhYjU5NmNhOWNkM2NhZmU4
MTE4NmRhLi5lODViZjQwMWYzMDEzMDIzZTA4ZTlhZmYyY2FmODcwZDMxYzg2OGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuY3BwCkBAIC00
NCw3ICs0NCw3IEBAIFVSTCBzb3VwVVJJVG9VUkwoU291cFVSSSogc291cFVSSSkKICAgICAgICAg
Ly8gYnVpbHQuIEZpeGluZyBzb3VwX3VyaV90b19zdHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFp
bnRhaW5lciBkb2VzCiAgICAgICAgIC8vIG5vdCB3YW50IHRvIGJyZWFrIGNvbXBhdGliaWxpdHkg
d2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKICAgICAgICAgaWYgKHNvdXBVUkktPnBhc3N3
b3JkKQotICAgICAgICAgICAgdXJsLnNldFBhc3MoU3RyaW5nOjpmcm9tVVRGOChzb3VwVVJJLT5w
YXNzd29yZCkpOworICAgICAgICAgICAgdXJsLnNldFBhc3N3b3JkKFN0cmluZzo6ZnJvbVVURjgo
c291cFVSSS0+cGFzc3dvcmQpKTsKICAgICB9CiAKICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDI4ZDg3M2M0NjEy
ZGJkY2U0MTc5YzNhMzhlZDBkYzBhNTBiODg3OGEuLjcxODNmOTA1NmE4MGQwZTM2ZmZkYTcwZmQy
MWI0ZGY3ZmE3MGQ1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0Rh
dGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIHRpdGxlID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gdXJsLmhvc3QoKS50b1N0cmluZygpOwogICAgIH0K
QEAgLTU3OSwxMCArNTc5LDEwIEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJs
T3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgICAgIC8v
IHRoZSBwYXRoLiBJZiB3ZSBjYW4ndCBmaW5kIGl0LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0
aGUgbmFtZSBmb3IgYSBsaW5rCiAgICAgICAgIC8vIHdlIGp1c3QgdXNlIHRoZSBlbnRpcmUgdXJs
LgogICAgICAgICBEV09SRCBsZW4gPSBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb247
Ci0gICAgICAgIFN0cmluZyBsYXN0Q29tcG9uZW50ID0ga3VybC5sYXN0UGF0aENvbXBvbmVudCgp
OworICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQgPSBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7
CiAgICAgICAgIGlmIChrdXJsLmlzTG9jYWxGaWxlKCkgfHwgKCFpc0xpbmsgJiYgIWxhc3RDb21w
b25lbnQuaXNFbXB0eSgpKSkgewogICAgICAgICAgICAgbGVuID0gc3RkOjptaW48RFdPUkQ+KGZz
UGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgbGFzdENvbXBvbmVudC5sZW5ndGgoKSk7
Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KGxhc3RDb21wb25lbnQpLnN1YnN0cmluZygwLCBsZW4p
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CisgICAgICAgICAgICBs
YXN0Q29tcG9uZW50LnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZW4gPSBzdGQ6
Om1pbjxEV09SRD4oZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uLCB1cmwubGVuZ3Ro
KCkpOwogICAgICAgICAgICAgU3RyaW5nVmlldyh1cmwpLnN1YnN0cmluZygwLCBsZW4pLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CkBAIC03MDgsNyArNzA4LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJM
KQogCiAgICAgU3RyaW5nIHRpdGxlKHBhc3RlYm9hcmRVUkwudGl0bGUpOwogICAgIGlmICh0aXRs
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5sYXN0UGF0
aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHBhc3RlYm9hcmRVUkwudXJsLmxhc3RQYXRo
Q29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVSTC51cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCmluZGV4IDJj
NmM3MGU4NDk5NWMyOWFjMThmZjNjOTU0OWM3ODk5NjhjYTAxY2EuLmRjYjQzMGIyMmY3NTQ2YmFk
Mzk3MDU4MzkzZDg0MmFiNGUwNmVhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJTdGF0ZS5jcHAKQEAgLTE2NSwxNyArMTY1LDE0IEBAIGJvb2wgQnVpbGRlclN0YXRlOjpj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVy
YXRpCiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CiAgICAgZm9yIChhdXRvJiBj
dXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGluVmFsdWUpKSB7Ci0KICAgICAg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS5pc1VSSSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBTdHJpbmcgY3NzVXJs
ID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3BlcmF0
aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgICAgICAgICBhdXRvIGZpbHRlclVSTCA9IHBy
aW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIGZyYWdtZW50ID0g
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChmaWx0ZXJVUkwpLmZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKGZpbHRlclVSTCwgZnJhZ21lbnQudG9TdHJpbmcoKSkpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmNwcAppbmRleCBkNzllODAwODgwODUwMDVmMWUyMzg1YTA4MWJhMTYwYWZh
YmYyMjM5Li44MzQ3NmZlNzY5ZDZkYmUwOWNmNTQ3OTAxNTZkYTY1ODhjMmRlN2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcApAQCAtNTMsMjMgKzUzLDI0IEBA
IFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgV29ya2Vy
TG9jYXRpb246OnBvcnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5wb3J0KCkgPyBTdHJp
bmc6Om51bWJlcihtX3VybC5wb3J0KCkudmFsdWUoKSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1
dG8gcG9ydCA9IG1fdXJsLnBvcnQoKTsKKyAgICByZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVy
KCpwb3J0KSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cGF0
aG5hbWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0aCA9IG1fdXJsLnBhdGgoKTsKLSAgICByZXR1
cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBh
dGguaXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3Jr
ZXJMb2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwucXVlcnkoKS5p
c0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgbV91cmwucXVlcnkoKTsKKyAgICByZXR1
cm4gbV91cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogbV91cmwucXVlcnlX
aXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJM
b2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBtX3VybC5mcmFnbWVudElk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0
eSgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5n
TnVtYmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6b3Jp
Z2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCAwZDUzYmNmOTIz
ZWQ2MTI2NTM5ZjM1ZGQyYjk0OWNhMTRiN2I1NjdjLi4xODk2YzI0MTFiNWRjMGJmNjgyZjQyNTA4
OGUzZTY4OTYwZDJjYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkoU2VjdXJpdHlPcmlnaW5EYXRhJiYKICAgICA6IG1fdG9wT3JpZ2luKFdURk1v
dmUodG9wT3JpZ2luKSkKICAgICAsIG1fc2NvcGUoV1RGTW92ZShzY29wZSkpCiB7Ci0gICAgQVNT
RVJUKCFtX3Njb3BlLmhhc0ZyYWdtZW50KCkpOworICAgIEFTU0VSVCghbV9zY29wZS5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNzM4NjI1NGVkYTkyZTk4N2QyNjkyNGQ4NTZmYzNlZDY0
YTMwM2ZlZi4uYmE3NGY2ZDEwMzQxMThlZjUxYzljZGFlYzdiZWRlOTdjMGM1YjI0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC00NiwxMyArNDYsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1VUkwgc3RhdGljIGlubGluZSB0b3BPcmlnaW5VUkwoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3N0YXRpYyBVUkwgdG9wT3JpZ2luVVJMKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgVVJMIHVybDsKICAgICB1cmwuc2V0UHJv
dG9jb2wob3JpZ2luLnByb3RvY29sKCkpOwogICAgIHVybC5zZXRIb3N0KG9yaWdpbi5ob3N0KCkp
OwotICAgIGlmIChvcmlnaW4ucG9ydCgpKQotICAgICAgICB1cmwuc2V0UG9ydCgqb3JpZ2luLnBv
cnQoKSk7CisgICAgdXJsLnNldFBvcnQob3JpZ2luLnBvcnQoKSk7CiAgICAgcmV0dXJuIHVybDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCAyOGQ5ZmZhZTczY2MwNGZiZWM3YzMyNjNmZThjYTUyZDkxYTE1ZTY5Li42
ZDFlNzI0Yzg2YTJjMmQzODRlNjgzYWMzNTgzNzUwNTM4OWM0ODgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzk3LDgg
KzM5Nyw3IEBAIFVSTCBzdGF0aWMgaW5saW5lIG9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdp
biYgb3JpZ2luKQogICAgIFVSTCB1cmw7CiAgICAgdXJsLnNldFByb3RvY29sKG9yaWdpbi5wcm90
b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdChvcmlnaW4uaG9zdCgpKTsKLSAgICBpZiAob3JpZ2lu
LnBvcnQoKSkKLSAgICAgICAgdXJsLnNldFBvcnQoKm9yaWdpbi5wb3J0KCkpOworICAgIHVybC5z
ZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKICAgICByZXR1cm4gdXJsOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxNTI4MTU1ODI1Njk4MWE0ODM4Y2Q2MzczYjM2
NzFhNWVkMDQwYWY5Li5hMGRlNDlmMDg4NDRhODZjNmUzMjk3NWNjNGJkNzA0Njc1YjJhZmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgaWYgKCF1c2VyLmlzTnVsbCgpKQogICAgICAgICB1
cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICBpZiAoIXBhc3N3b3JkLmlzTnVs
bCgpKQotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhwYXNzd29yZCk7CisgICAg
ICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAKICAgICByZXR1
cm4gb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4
IDllMGI2ODJjZGVkMmFmYmJmNTdhMDI4NDlkYzNiNzlkNzlhNzY3MjEuLjk1NWQzODhlNWU5NmUz
NTE5OTM2NzRmYjk0OWVhODdhZjNmZDMxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRpcmVjdGlvbihSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlcQogICAgICAgICAgICAgaGFuZGxlcihyZWRpcmVjdGlvbkVy
cm9yKHJlZGlyZWN0UmVzcG9uc2UsIG1ha2VTdHJpbmcoIkNyb3NzLW9yaWdpbiByZWRpcmVjdGlv
biB0byAiLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgZGVuaWVkIGJ5IENyb3Nz
LU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogbm90IGFsbG93ZWQgdG8gZm9sbG93IGEg
Y3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hlbWUiKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhdGlvbi5oYXNV
c2VybmFtZSgpIHx8IGxvY2F0aW9uLmhhc1Bhc3N3b3JkKCkpIHsKKyAgICAgICAgaWYgKGxvY2F0
aW9uLmhhc0NyZWRlbnRpYWxzKCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25F
cnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rp
b24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIGRlbmllZCBieSBDcm9z
cy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6IHJlZGlyZWN0aW9uIFVSTCAiLCBsb2Nh
dGlvbi5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlhbHMiKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6
OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ28K
ICAgICBodHRwc1VwZ3JhZGVDaGVja2VyLnF1ZXJ5KHVybC5ob3N0KCkudG9TdHJpbmcoKSwgbV9z
ZXNzaW9uSUQsIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUo
aGFuZGxlcildIChib29sIGZvdW5kSG9zdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChmb3VuZEhv
c3QpIHsKICAgICAgICAgICAgIGF1dG8gbmV3VVJMID0gcmVxdWVzdC51cmwoKTsKLSAgICAgICAg
ICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAgICAgICAgICAgbmV3VVJMLnNl
dFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAwYzg4MDU2M2RmZDJhNGNhN2Ex
ZTZkNmRlNjMyMzMwNGI3NWFkYzIyLi40Mzc3N2E5ZGUzYjZjZDU1OGUwOTRhZjg1NWM3YmRiZjYz
MWQ4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTIxOSw3ICsyMTksNyBAQCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVAogICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZSAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIG1fdXNl
ciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOworICAgICAg
ICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgIHJlcXVlc3QucmVtb3ZlQ3Jl
ZGVudGlhbHMoKTsKICAgICAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAKQEAgLTM3Nyw3
ICszNzcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIAogICAgIGNvbnN0IGF1dG8m
IHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBtX3Bh
c3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAg
ICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3Qu
cmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRl
eCAyZDc3NjM0NWUyMjQ5NmNiODc1MGMyZTYxNDljZDA2NmFjMGM3ODAzLi40YzgzOGFmYjczMDU5
NjM1ODkzOWFmYjViYjQ1NjRkMDBhOGE2MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5o
CkBAIC02MywyNSArNjMsMjUgQEAgcHVibGljOgogICAgIFdURjo6U3RyaW5nIGhvc3QoKSBjb25z
dAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4g
bV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5ob3N0KCkudG9TdHJpbmcoKSA6
IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aG9zdCgpLnRvU3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgcHJvdG9jb2woKSBjb25zdAogICAgIHsK
ICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4gbV9wYXJzZWRV
UkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCkgOiBXVEY6
OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnByb3RvY29sKCkudG9TdHJp
bmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBwYXRoKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5p
c1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygp
OworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnBhdGgoKS50b1N0cmluZygpOwogICAgIH0K
IAogICAgIFdURjo6U3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5p
c1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKSA6IFdURjo6U3RyaW5n
KCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKS50b1N0
cmluZygpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQu
bW0KaW5kZXggYjFjMzZkYjJjMDQ2OGE2NTFkNjQ3NmEyZjlkZWNkYjMyOTY1YmRkZC4uMDdjZDEw
ZjJhM2RmOTkwYzg2NmUwZWU4OWM5OWEwNjM1MGZiZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KQEAgLTIyMCw4ICsyMjAsOCBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewogICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5
c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAgICAgICBXVEY6
OlVSTCBkZXN0aW5hdGlvblVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KGRvd25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKLSAgICAgICAgICAgIGlmICgh
ZGVzdGluYXRpb25VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkubGVuZ3RoKCkpCisgICAgICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOworICAgICAgICAgICAgaWYg
KCFkZXN0aW5hdGlvblVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvblVSTC5zZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQcm94eS5yZXF1
ZXN0KCkudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY29udHJvbGxl
ci0+ZmluaXNoKGRlc3RpbmF0aW9uVVJMKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDQ3YjU0Y2Fk
ODQwMTE1ODZlZmI4MDk5YmExYTg5MzViNzEyNGI1ZDEuLjM5MzZlYjdiOTJmMGMzOWUyMTdhMzUx
OThhNjRhNzQwY2RkMmQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTExNCwxNSArMTE0LDkgQEAgdm9pZCBEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hNYXAKIAogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
bV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICAgICAgYXV0byBvcmln
aW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZURpcmVjdG9yeSwgIioiKTsKLQogICAgICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTYWx0Rm9yT3JpZ2luPj4gZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbnM7Ci0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7Ci0gICAg
ICAgICAgICBVUkwgdXJsOwotICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsK
LSAgICAgICAgICAgIHVybC5zZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgICAgICBTdHJp
bmcgZGV2aWNlSWRIYXNoU2FsdCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fZGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgICAgIGF1dG8gZGV2
aWNlSWRIYXNoU2FsdCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChvcmlnaW5QYXRo
KS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAKICAgICAgICAgICAgIGlmIChoYXNo
U2FsdFNpemUgIT0gZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlOiBUaGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHNhbHQgKCVkKSBpcyBkaWZmZXJlbnQgdG8gdGhl
IGxlbmd0aCBvZiB0aGUgaGFzaCBzYWx0cyBkZWZpbmVkIGluIFdlYktpdCAoJWQpIiwgZGV2aWNl
SWRIYXNoU2FsdC5sZW5ndGgoKSwgaGFzaFNhbHRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBkMzA1NTUzMDgw
NDYyMzgxMzFmMGJmZWQ0MmQ1ZjMwMTFmMmIxZTI1Li5iN2FmNWNkYWViNWQwM2IzMDliYWRiZDk2
MzUzYTU2YmZiZDJmN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC0xNDUsMTYgKzE0NSwxNSBAQCBQbHVnaW5Nb2R1
bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbgogICAgIHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCitzdGF0aWMgU3Ry
aW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nIGV4dGVuc2lv
bjsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICBp
ZiAoIWZpbGVuYW1lLmVuZHNXaXRoKCcvJykpIHsKLSAgICAgICAgc2l6ZV90IGV4dGVuc2lvblBv
cyA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgICAgIGlmIChleHRlbnNpb25Qb3Mg
IT0gbm90Rm91bmQpCi0gICAgICAgICAgICBleHRlbnNpb24gPSBmaWxlbmFtZS5zdWJzdHJpbmco
ZXh0ZW5zaW9uUG9zICsgMSk7Ci0gICAgfQotICAgIHJldHVybiBleHRlbnNpb24uY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CisgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgc2l6ZV90IGxhc3REb3RQb3NpdGlvbiA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcu
Jyk7CisgICAgaWYgKGxhc3REb3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyaW5nKGxhc3REb3RQb3NpdGlvbiArIDEp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3YzIzNWUzYjA2MjUx
ZGIyNDQ2MGI0MTQ1MDA1MzNlZTcxZDU3NGVmLi45MmRmOTk1NWI4YjgyYzRlY2FhZmE4YzRhYjlj
MGIyZWI1ZDc5ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAjZW5kaWYKIAog
ICAgIC8vIFdlIGZhaWxlZCB0byBpc3N1ZSBhbiB1bml2ZXJzYWwgZmlsZSByZWFkIGFjY2VzcyBz
YW5kYm94LCBmYWxsIGJhY2sgdG8gaXNzdWluZyBvbmUgZm9yIHRoZSBiYXNlIFVSTCBpbnN0ZWFk
LgotICAgIGF1dG8gYmFzZVVSTCA9IFVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKKyAg
ICBhdXRvIGJhc2VVUkwgPSB1cmwudHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCk7CiAgICAgYXV0byBi
YXNlUGF0aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAoYmFzZVBhdGguaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxOTMsNyArNTE5Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91
bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCiAgICAgICAg
ICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQotICAgICAgICAgICAg
JiYgKG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUtPnVybCgpLCByZXF1
ZXN0LnVybCgpKSA6IGZhbHNlKQorICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFp
bkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCiAgICAgICAgICAg
ICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZp
Z2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9u
ID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCks
IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBz
aG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZy
YW1lTmF2aWdhdGlvbik7CkBAIC01MzE5LDcgKzUzMTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRl
ZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFj
dGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUt
PnVybCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlOworICAgICAgICBib29sIHNob3VsZE9wZW5B
cHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVx
dWVzdC51cmwoKS5ob3N0KCk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6
TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBz
b3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0
KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSkpOwogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92ZShsaXN0
ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwpAQCAtNTUxNyw3ICs1NTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW8KIAogICAgICAgICByZXBseShuZXdQYWdlLT53ZWJQYWdlSUQoKSwgbmV3UGFnZS0+Y3JlYXRp
b25QYXJhbWV0ZXJzKG1fcHJvY2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVhKCkpKTsKIAotICAg
ICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVSTCksIHJlcXVl
c3QudXJsKCkpOworICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5l
eHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBVUkwoeyB9LCBtYWluRnJhbWVVUkwpLmhvc3Qo
KSA9PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKIAogI2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAg
bmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbiA9IHRydWU7CkBAIC01NTI1LDcgKzU1MjUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBPcHRpbwogICAgIH07CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJH
ZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFo
b3N0c0FyZUVxdWFsKG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVl
c3QudXJsKCkpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2luYXRpbmdGcmFt
ZUluZm8tPnJlcXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAg
ICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUo
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvLnB0cigp
LCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICB0cnlT
T0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRoaXMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVhdHVyZXMpXSAoUmVmPEFQSTo6TmF2
aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGVjYzVi
YTQ4ZmNjM2Q4YzQyOWNhZjIzZjdkODFiYjE4ZGFiMmYwMmMuLjY3YmVlNDc2NGQxMGQ2OThjOGQy
OTViYjMwMjcwZTJiMzUwOTQxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNTY5LDExICs1NjksMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJp
bmcKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJpbmcgZG9lcyBub3QgcG9p
bnQgdG8gYSBkaXJlY3RvcnkuCiAgICAgLy8gR2V0IHVybCdzIGJhc2UgVVJMIHRvIGFkZCB0byBt
X2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuCi0gICAgVVJMIGJhc2VVUkwoVVJMKCks
IHVybC5iYXNlQXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHBhdGggPSBiYXNlVVJMLmZpbGVTeXN0
ZW1QYXRoKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnRydW5jYXRlZEZvclVzZUFzQmFzZSgpLmZp
bGVTeXN0ZW1QYXRoKCk7CiAgICAgaWYgKHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRv
ZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBh
c3N1bWVkCiAgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJl
YWR5LgogICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggODdkZDg4NTFkMjg2Mjg2YTdi
MjdiZGFiNDVkMDQ3NmNkZWZjY2M2Zi4uMmVjMzVjODdlMjQ4YTQ0NmI3YjFjNmU2ODI5Njk4OGRk
YjE5MTExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDE5LDcg
KzQxOSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICBmb3IgKE5TU3Ry
aW5nICpkb21haW4gaW4gZG9tYWlucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIFVSTCB1cmwg
eyBVUkwoKSwgZG9tYWluIH07CiAgICAgICAgICAgICAgICAgaWYgKHVybC5wcm90b2NvbCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJodHRwcyJfcyk7
CisgICAgICAgICAgICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFwcEJvdW5kRG9t
YWluIHsgdXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDkwMzk5
MGJmOTRlODM4NWZkZTlmMTU0YzNkMzVkYWU1MzNkMDAwM2IuLjQ4NzUxYWJmNDgzMjQ1ODk2MWJl
NzNhYTVhNTk1YjA1ZGVjZWFmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC02MCwxOSArNjAsMTAgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKICAgICBpZiAobV9tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAot
ICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICBVUkwgdXJsOwotICAgICAgICB1
cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgICAgICB1cmwuc2V0UGF0aChvcmlnaW5QYXRo
KTsKLQotICAgICAgICBTdHJpbmcgbWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7Ci0KLSAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpOwotICAgICAg
ICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
cmVzdWx0cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpblBh
dGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
LCAiKiIpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChvcmlnaW5QYXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7Cisg
ICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQoKnNlY3VyaXR5T3JpZ2luKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IGFlZDMwMWE1NGRkOTliZWI2OGZiMTQzOGQyZDFjMjU0ZDAzMDE2ZTQuLmU0ZWZhNDgwOWYwYTNm
ZjUwYTYxNmZlMTFhNzUwNTg5YTQ3OGVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTU2MiwxMCArMTU2Miw4IEBAIHZv
aWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQogICAgIGlmIChbbV9wZGZEb2N1bWVu
dCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7CiAKLSAgICBp
ZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0
VVJMRnJhZ21lbnQ6KV0pIHsKLSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdtZW50ID0gbV9mcmFt
ZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9s
bGVyIHNldFVSTEZyYWdtZW50OnBkZlVSTEZyYWdtZW50XTsKLSAgICB9CisgICAgaWYgKFttX3Bk
ZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdt
ZW50OildKQorICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6bV9m
cmFtZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsK
IH0KIAogdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3
NjhiYTJkN2M0Njg2YzA2ZWU5NzRhYmJkNjUyNTQxMWYzYmJjYzkzLi40MWQzZWQ4NWUzMzdjNTE2
Y2I1Y2RlMGQ5N2NlMjE4Y2EyMTUxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAKQEAgLTI0LDE3ICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CiAKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgotCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnUuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQyLDcgKzM4LDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OmNvbnRleHRNZW51RGVzdHJveWVkKCkKIHsKQEAgLTU2LDE5ICs1MSwyMSBAQCB2b2lkIFdlYkNv
bnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogfQogCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShj
b25zdCBGcmFtZSogZnJhbWUpCisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdp
dGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFy
Y2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2VhcmNoU3Ry
aW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFjZSgiJTIw
Il9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93d3cuZ29v
Z2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgiOworICAg
IGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOworICAg
IHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcgPSBlbmNv
ZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNoU3RyaW5n
LnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgeyB9
LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZp
ZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9j
YXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgfQorICAg
IFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6OlByb2Nl
c3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5n
ZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlzdG9yeTo6
Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1Vw
SW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikKQEAgLTkxLDE0ICs4OCwxOCBAQCB2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CisKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykK
Kwogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKIHsKICAgICBt
X3BhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KaW5kZXggODA5NGE2MjgyMjYxYjVlODM5NzQ1ZDg2ZTYwNDNhZjRj
ZTZjNzIzOC4uMzBjNmZmZTIzZjFlNDlmMTVmNjY4MzhiNjg0MWI1NjYyYzdlZWYxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIEVsZW1lCiAKICAgICBTdHJpbmcgdGl0bGUgPSBsYWJlbDsKICAgICBpZiAodGl0bGUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Cisg
ICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAg
ICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlz
aWJsZVN0cmluZyh1cmwpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXgg
Yzg0NDhjNWFjMWY0MzYyZTQ0MDNjM2FjMjlhMjg2YTlhZjVlYmI4ZS4uY2NhZTIxMmM1NmNhNDg5
MWI2N2M2ZDNiZWU0Y2QzMzE5MmIyYTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
QEAgLTg4Miw3ICs4ODIsNyBAQCBzdGF0aWMgQk9PTCBzaG91bGRUcnlBcHBMaW5rKFdlYlZpZXcg
KndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mCiAgICAgaWYgKCFhY3Rp
b24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIGlm
ICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSAmJiBob3N0c0FyZUVxdWFs
KHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgYWN0aW9uLnVybCgpKSkKKyAgICBpZiAo
dGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgdGFyZ2V0RnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLmhvc3QoKSA9PSBhY3Rpb24udXJsKCkuaG9zdCgpKQogICAgICAgICBy
ZXR1cm4gTk87CiAKICAgICByZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNGVkODc4NDgxOWViMTBjMDY3MmNhOTcyNTg3ZjgzY2Qy
ZWI3ZjJlZi4uM2U0ZGI3ODY5OWFiYmNkMzA5OGJjYmE2NzY4ODQxZjc4ODZmMjhkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yMjk1LDE0ICsy
Mjk1LDEwIEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvcldl
YkFyY2hpdmU6KFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTooTlNEYXRhICopZGF0YSB3aXRoUmVs
YXRpdmVVUkxQYXJ0OihOU1N0cmluZyAqKXJlbGF0aXZlVVJMUGFydCBhbmRNSU1FVHlwZTooTlNT
dHJpbmcgKiltaW1lVHlwZQogewotICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9IFtbV2ViUmVz
b3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxh
dGl2ZVBhcnQocmVsYXRpdmVVUkxQYXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTptaW1lVHlwZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZU5hbWU6
bmlsXTsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiBfZGF0YVNv
dXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZV07Ci0gICAg
W3Jlc291cmNlIHJlbGVhc2VdOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBhdXRvIHJlc291
cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YQorICAg
ICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmcgeyByZWxhdGl2ZVVS
TFBhcnQgfSkKKyAgICAgICAgTUlNRVR5cGU6bWltZVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwg
ZnJhbWVOYW1lOm5pbF0pOworICAgIHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVu
dEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2UuZ2V0KCldOwogfQogCiAtIChCT09M
KWZvY3VzZWROb2RlSGFzQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNTIwZWE1NjY0YWYyODc1NjlhODU1Yzc0YjgxY2VhNTRj
N2U4ZTIwMi4uZWY4NjJlNWFhYWFhMDk0N2EzYjcxMGQwN2JiY2U3ODg4ZDczZDBiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yMzA2
LDcgKzIzMDYsNyBAQCAtICh2b2lkKWNsb3NlCiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilf
d2ViX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVi
b2FyZCBwYXN0ZWJvYXJkVHlwZTooTlNTdHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbWFnZU1JTUVU
eXBlOihOU1N0cmluZyAqKWltYWdlTUlNRVR5cGUKIHsKLSAgICBhdXRvIGZpbGVuYW1lID0gW2lt
YWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5nOkAiLyIgd2l0
aFN0cmluZzpAIi4iXTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlwZSBzdHJp
bmdCeVJlcGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAiLiJdOwog
ICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV0KICAgICAgICAgVVJM
OlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoZmlsZW5hbWUpIE1JTUVUeXBlOmltYWdlTUlN
RVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOwogICAgIHJldHVybiBb
W3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVz
b3VyY2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGFhNTFiNjM5
NDg4OGE3MGI3ZjBkOWRiYTA1MWZlMjViMWUxNmZmOTcuLmYxNDE4NjMwZWY2ZTlkYTJjMzM5ZjBh
ZDFlZDhlZTY2OWE4ODg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1
NSw3ICsyNTUsNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVy
PilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKICAgICAgICAgcmV0dXJuIFtbW1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKIAogICAgIE5TVVJMICp1
cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBOU1N0cmluZyAqYWJz
b2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBTdHJpbmcgYWJzb2x1
dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9oaXRU
ZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFi
c29sdXRlVVJMU3RyaW5nLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1t
ZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRl
eCBjMjY1ZTA4M2UxZjdjOWFmYzgzYmM4ZTAxZThmNDRlZWY3YWI1M2I5Li4xNDJlMWMzMTY2Y2Fh
ZGFjZDM1ZGE4MmNjNmIzY2U0NDJmNGI2NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwCkBAIC0yNSwyMSArMjUsMTQgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50
LmgiCiAKLSNpbmNsdWRlICJXZWJFbGVtZW50UHJvcGVydHlCYWcuaCIKLSNpbmNsdWRlICJXZWJM
b2NhbGl6YWJsZVN0cmluZ3MuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIFdlYkNvbnRleHRNZW51Q2xp
ZW50OjpXZWJDb250ZXh0TWVudUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCiB7CkBAIC01NywxNyArNTAsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUNs
aWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiAKIHZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewotICAgIFN0cmlu
ZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2Vh
cmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2Rl
V2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFj
ZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93
d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgi
OworICAgIGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
OworICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcg
PSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNo
U3RyaW5nLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJM
IHsgeyB9LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5n
ICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hh
bmdlTG9jYXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rv
cnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAg
fQorICAgIFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6
OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmNoYW5nZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlz
dG9yeTo6Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZl
cnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMTU2MDgwNzlkZDEwZTFjOWY1NDdlNTljYmMxOGQxYTM3
YzJhNGUzLi5iNzU4N2IwYjFhNmYyYzRkZTdkYWI0NDI0MTM3YjkzYmNjMDk2MTI1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMjAtMDQtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2Yg
dGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwOiBSZW1vdmVkIHRoZSB0ZXN0IGZvcgor
ICAgICAgICBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCBzaW5jZSB3ZSByZW1vdmVkIHRo
YXQgZnVuY3Rpb24uCisgICAgICAgIFVwZGF0ZWQgZm9yIHJlbmFtZSBvZiBVUkw6OnBhc3N3b3Jk
IGZyb20gVVJMOjpwYXNzLgorICAgICAgICBVcGRhdGVkIGFyZ3VtZW50cyB0byBpc01hdGNoaW5n
RG9tYWluIHRvIHBhc3MgbGl0ZXJhbHMgdGhhdCBjYW4gYmUgY29udmVydGVkCisgICAgICAgIHRv
IFN0cmluZ1ZpZXcgcmF0aGVyIHRoYW4gQVNDSUlMaXRlcmFsLCB3aGljaCBTdHJpbmdWaWV3IGRv
ZXNuJ3QgeWV0IHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrVVJMKTogVXBkYXRlZCBmb3IgcmVuYW1lIG9mIFVSTDo6cGFzc3dvcmQgZnJvbSBVUkw6OnBh
c3MuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKTogRGl0dG8uCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2VzKTogRGl0dG8uCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOiBEaXR0by4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RVc2VyUGFzc3dvcmQpOiBEaXR0by4KKwogMjAy
MC0wNC0xNyAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFVwZGF0ZSBmb3IgR2RrS2V5bWFwIEFQSSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVVJMLmNwcAppbmRleCA5MzdiOWY5NDBiZjkxMTNmY2UzNzIzZmFmMGM1ZTVi
ZjZiMWM4N2RlLi42YmYyNzVhNTE4ZDQ3YTBlMmYyMTc5NGEwNzhkNjE5Y2U3YzUxZmQxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgVEVTVF9G
KFdURl9VUkwsIFVSTENvbnN0cnVjdG9yQ29uc3RDaGFyKQogICAgIEVYUEVDVF9UUlVFKCEha3Vy
bC5wb3J0KCkpOwogICAgIEVYUEVDVF9FUSg4MDgwLCBrdXJsLnBvcnQoKS52YWx1ZSgpKTsKICAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJ1c2VybmFtZSIpLCBrdXJsLnVzZXIoKSk7Ci0gICAgRVhQRUNU
X0VRKFN0cmluZygicGFzc3dvcmQiKSwga3VybC5wYXNzKCkpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoInBhc3N3b3JkIiksIGt1cmwucGFzc3dvcmQoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygi
L2luZGV4Lmh0bWwiKSwga3VybC5wYXRoKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoImluZGV4
Lmh0bWwiKSwga3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJ2YXI9dmFsIiksIGt1cmwucXVlcnkoKSk7CkBAIC0yNjEsNTcgKzI2MSw2IEBAIFRFU1RfRihX
VEZfVVJMLCBFcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKQogICAgIH0KIH0KIAotVEVT
VF9GKFdURl9VUkwsIEVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KQotewotICAgIHN0cnVj
dCBUZXN0Q2FzZSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHVybDE7Ci0gICAgICAgIGNvbnN0IGNo
YXIqIHVybDI7Ci0gICAgICAgIGJvb2wgZXhwZWN0ZWQ7Ci0gICAgfSBjYXNlc1tdID0gewotICAg
ICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9
LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFzaCIsICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwK
LSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBs
ZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1
ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb20vb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwg
ZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4YW1w
bGUuY29tLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC8jaGFzaCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tOjgwL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZhbHNlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
IiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkiLCAi
aHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb206ODAvcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL290aGVycGF0aCIsICJodHRwOi8v
ZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vbm90LWV4YW1wbGUu
Y29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb206ODAvIiwgZmFsc2V9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZhbHNlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29t
OjgxLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbTo4MSIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5j
b206ODEvcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1w
bGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEv
cGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL290aGVycGF0aCIsICJodHRwOi8vZXhhbXBs
ZS5jb206ODEvcGF0aCIsIGZhbHNlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5o
dG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxl
Oi8vL3BhdGgvdG8vZmlsZS5odG1sI2hhc2giLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIs
IHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWw/cXVlcnkiLCAiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWw/cXVlcnkjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1
ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyX2ZpbGUuaHRtbCIsICJmaWxlOi8v
L3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9v
dGhlci9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKLSAg
ICAgICAgeyJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzZPLzc2Ty83Nk8v
IiwgImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3NjAvNzYwLzc2MC8iLCBm
YWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tIiwgImZpbGU6Ly9leGFtcGxlLmNv
bSIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vI2hhc2giLCAiZmlsZTov
L2V4YW1wbGUuY29tIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8/cXVl
cnkiLCAiZmlsZTovL2V4YW1wbGUuY29tLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhh
bXBsZS5jb20vP3F1ZXJ5I2hhc2giLCAiZmlsZTovL2V4YW1wbGUuY29tLyIsIGZhbHNlfSwKLSAg
ICB9OwotCi0gICAgZm9yIChjb25zdCBhdXRvJiB0ZXN0IDogY2FzZXMpIHsKLSAgICAgICAgVVJM
IHVybDEgPSBjcmVhdGVVUkwodGVzdC51cmwxKTsKLSAgICAgICAgVVJMIHVybDIgPSBjcmVhdGVV
UkwodGVzdC51cmwyKTsKLSAgICAgICAgRVhQRUNUX0VRKHRlc3QuZXhwZWN0ZWQsIGVxdWFsSWdu
b3JpbmdRdWVyeUFuZEZyYWdtZW50KHVybDEsIHVybDIpKQotICAgICAgICAgICAgPDwgIlRlc3Qg
ZmFpbGVkIGZvciAiIDw8IHRlc3QudXJsMSA8PCAiIHZzLiAiIDw8IHRlc3QudXJsMjsKLSAgICB9
Ci19Ci0KIFRFU1RfRihXVEZfVVJMLCBQcm90b2NvbElzSW5IVFRQRmFtaWx5KQogewogICAgIEVY
UEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoeyB9KSk7CkBAIC0zNzYsMjIg
KzMyNSwyMiBAQCBURVNUX0YoV1RGX1VSTCwgSG9zdElzTWF0Y2hpbmdEb21haW4pCiAKICAgICBF
WFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihTdHJpbmcgeyB9KSk7CiAgICAgRVhQRUNU
X1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oZW1wdHlTdHJpbmcoKSkpOwotICAgIEVYUEVDVF9U
UlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJvcmciX3MpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwu
aXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyJfcykpOwotICAgIEVYUEVDVF9UUlVFKHVybC5p
c01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyJfcykpOworICAgIEVYUEVDVF9UUlVFKHVy
bC5pc01hdGNoaW5nRG9tYWluKCJvcmciKSk7CisgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hp
bmdEb21haW4oIndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdE
b21haW4oInd3dy53ZWJraXQub3JnIikpOwogCi0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJyZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFp
bigiLm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3cu
d2Via2l0Lm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigi
aHR0cDovL3d3dy53ZWJraXQub3JnIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJyZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4o
Ii5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3dy53ZWJr
aXQub3JnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigiaHR0cDov
L3d3dy53ZWJraXQub3JnIikpOwogCiAgICAgdXJsID0gY3JlYXRlVVJMKCJmaWxlOi8vL3d3dy53
ZWJraXQub3JnIik7CiAKICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihTdHJp
bmcgeyB9KSk7CiAgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oZW1wdHlTdHJp
bmcoKSkpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIl9zKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIl9zKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyJf
cykpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIikpOworICAg
IEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyIpKTsKKyAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJraXQub3JnIikpOwogCiAg
ICAgVVJMIGVtcHR5VVJMOwogICAgIEVYUEVDVF9GQUxTRShlbXB0eVVSTC5pc01hdGNoaW5nRG9t
YWluKFN0cmluZyB7IH0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1VSTFBhcnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJz
ZXIuY3BwCmluZGV4IDEwMzllNTRiMWFlYjdjMjYxZjVhMmFjMzkyOGUxMTk4NzNiMzZjYzguLjA4
YTNhOWU5ODgzZDA2OGJjYzNlYjVkZjE1MWU2MGY3MWI0MDdjOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0
cyYgcGFydHMsIFRlc3RUYQogICAgIAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29s
LCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51
c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkp
OworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1Rf
RVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMU3RyaW4KICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwg
dXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNl
cigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VR
KHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVj
dGVkUGFydHMmIHBhCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucHJvdG9jb2ws
IHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJs
LnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFz
cygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzd29y
ZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwog
ICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIAogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBh
c3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhv
c3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQo
KS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0
aCgpKSk7CkBAIC00NjIsMTkgKzQ2MiwxOSBAQCBURVNUX0YoV1RGX1VSTFBhcnNlciwgQmFzaWMp
CiAgICAgY2hlY2tVUkwoImh0dHA6Ly86QGhvc3QiLCB7Imh0dHAiLCAiIiwgIiIsICJob3N0Iiwg
MCwgIi8iLCAiIiwgIiIsICJodHRwOi8vaG9zdC8ifSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RV
c2VyUGFzcyhjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRlY29kZWQsIGNvbnN0
IFN0cmluZyYgZW5jb2RlZCkKK3N0YXRpYyB2b2lkIHRlc3RVc2VyUGFzc3dvcmQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkZWNvZGVkLCBjb25zdCBTdHJpbmcmIGVuY29kZWQp
CiB7CiAgICAgVVJMIHVzZXJVUkwoVVJMKCksIG1ha2VTdHJpbmcoImh0dHA6Ly8iLCB2YWx1ZSwg
IkBleGFtcGxlLmNvbS8iKSk7CiAgICAgVVJMIHBhc3NVUkwoVVJMKCksIG1ha2VTdHJpbmcoImh0
dHA6Ly91c2VyOiIsIHZhbHVlLCAiQGV4YW1wbGUuY29tLyIpKTsKICAgICBFWFBFQ1RfRVEoZW5j
b2RlZCwgdXNlclVSTC5lbmNvZGVkVXNlcigpKTsKLSAgICBFWFBFQ1RfRVEoZW5jb2RlZCwgcGFz
c1VSTC5lbmNvZGVkUGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoZW5jb2RlZCwgcGFzc1VSTC5lbmNv
ZGVkUGFzc3dvcmQoKSk7CiAgICAgRVhQRUNUX0VRKGRlY29kZWQsIHVzZXJVUkwudXNlcigpKTsK
LSAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgcGFzc1VSTC5wYXNzKCkpOworICAgIEVYUEVDVF9FUShk
ZWNvZGVkLCBwYXNzVVJMLnBhc3N3b3JkKCkpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0VXNlclBh
c3MoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQorc3RhdGljIHZv
aWQgdGVzdFVzZXJQYXNzd29yZChjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVu
Y29kZWQpCiB7Ci0gICAgdGVzdFVzZXJQYXNzKHZhbHVlLCB2YWx1ZSwgZW5jb2RlZCk7CisgICAg
dGVzdFVzZXJQYXNzd29yZCh2YWx1ZSwgdmFsdWUsIGVuY29kZWQpOwogfQogCiBURVNUX0YoV1RG
X1VSTFBhcnNlciwgQ3JlZGVudGlhbHMpCkBAIC00ODMsMjAgKzQ4MywyMCBAQCBURVNUX0YoV1RG
X1VSTFBhcnNlciwgQ3JlZGVudGlhbHMpCiAgICAgYXV0byBpbnZhbGlkU3Vycm9nYXRlID0gdXRm
MTZTdHJpbmc8Mz4oezB4RDgwMCwgJ0EnLCAnXDAnfSk7CiAgICAgYXV0byByZXBsYWNlbWVudEEg
PSB1dGYxNlN0cmluZzwzPih7MHhGRkZELCAnQScsICdcMCd9KTsKIAotICAgIHRlc3RVc2VyUGFz
cygiYSIsICJhIik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlIiwgIiUiKTsKLSAgICB0ZXN0VXNlclBh
c3MoIiUyNSIsICIlIiwgIiUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJTI1MjUiLCAiJTI1Iiwg
IiUyNTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlRlgiLCAiJUZYIik7Ci0gICAgdGVzdFVzZXJQ
YXNzKCIlMDAiLCBTdHJpbmc6OmZyb21VVEY4KCJcMCIsIDEpLCAiJTAwIik7Ci0gICAgdGVzdFVz
ZXJQYXNzKCIlRiUyNSIsICIlRiUiLCAiJUYlMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiVYJTI1
IiwgIiVYJSIsICIlWCUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJSUyNSIsICIlJSIsICIlJTI1
Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCLwn5KpIiwgIiVDMyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIp
OwotICAgIHRlc3RVc2VyUGFzcygiJfCfkqkiLCAiJSVDMyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIp
OwotICAgIHRlc3RVc2VyUGFzcyh2YWxpZFN1cnJvZ2F0ZSwgIiVGMCU5MCU4NSU5NSIpOwotICAg
IHRlc3RVc2VyUGFzcyhyZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7Ci0gICAgdGVzdFVzZXJQ
YXNzKGludmFsaWRTdXJyb2dhdGUsIHJlcGxhY2VtZW50QSwgIiVFRiVCRiVCREEiKTsKKyAgICB0
ZXN0VXNlclBhc3N3b3JkKCJhIiwgImEiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlIiwgIiUi
KTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlMjUiLCAiJSIsICIlMjUiKTsKKyAgICB0ZXN0VXNl
clBhc3N3b3JkKCIlMjUyNSIsICIlMjUiLCAiJTI1MjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3Jk
KCIlRlgiLCAiJUZYIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTAwIiwgU3RyaW5nOjpmcm9t
VVRGOCgiXDAiLCAxKSwgIiUwMCIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiVGJTI1IiwgIiVG
JSIsICIlRiUyNSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiVYJTI1IiwgIiVYJSIsICIlWCUy
NSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUlMjUiLCAiJSUiLCAiJSUyNSIpOworICAgIHRl
c3RVc2VyUGFzc3dvcmQoIvCfkqkiLCAiJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7CisgICAg
dGVzdFVzZXJQYXNzd29yZCgiJfCfkqkiLCAiJSVDMyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIpOwor
ICAgIHRlc3RVc2VyUGFzc3dvcmQodmFsaWRTdXJyb2dhdGUsICIlRjAlOTAlODUlOTUiKTsKKyAg
ICB0ZXN0VXNlclBhc3N3b3JkKHJlcGxhY2VtZW50QSwgIiVFRiVCRiVCREEiKTsKKyAgICB0ZXN0
VXNlclBhc3N3b3JkKGludmFsaWRTdXJyb2dhdGUsIHJlcGxhY2VtZW50QSwgIiVFRiVCRiVCREEi
KTsKIH0KIAogVEVTVF9GKFdURl9VUkxQYXJzZXIsIFBhcnNlUmVsYXRpdmUpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5n
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5j
b2RpbmcuY3BwCmluZGV4IGEyNjgxNmRhMTQ5MWY2ZTNiMjA1N2M2NmE3ZGNhNDU5ZDEzNjE0ZDMu
LmUyNjE3OTMzNDI1MjI0M2JhNWYxNDE4MGY3MjI0ZWI3NzU0ZGNhMWYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5j
b2RpbmcuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAgICAg
YXV0byB1cmwgPSBVUkwoeyB9LCB1cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwg
dXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9z
dCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtMTE4LDcg
KzExOCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgYXV0byB1cmwgPSBVUkwoVVJM
KHsgfSwgYmFzZVVSTFN0cmluZyksIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5w
YXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5o
b3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDAp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397004</attachid>
            <date>2020-04-20 12:42:48 -0700</date>
            <delta_ts>2020-04-21 21:29:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200420124246.patch</filename>
            <type>text/plain</type>
            <size>194997</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhN2EzYmE5YTNmN2E3OTMzM2JjMWE0
ZDdhZmJmZmRlNmUxNzZmYjYuLmU3ODkzZTA1YzMzMzQzYzUzMTkzNTQ3N2IwMGFiYjY3MmFlODYz
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJZ25vcmluZ051bGxpdHkpOiBBZGRl
ZC4gQ3VycmVudGx5IHRoZSBzYW1lIGFzIGVxdWFsLCBidXQKKyAgICAgICAgY291bGQgYmUgZGlm
ZmVybmV0IGluIHRoZSBmdXR1cmUuCisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmNvbnRhaW5z
IGNvbnN0KTogQWRkZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhCisgICAgICAgIGNvbnN0IGNoYXIq
IHNvIHRoZSBjYWxsIHNpdGUgZG9lc24ndCBoYXZlIHRvIGNvbnZlcnQgaXQgdG8gYSBTdHJpbmdW
aWV3LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBVcGRhdGVkIGZvciB0aGUg
YWRkaXRpb25zIGFib3ZlLgorICAgICAgICBBbHNvIGFkZGVkIGEgZGVmYXVsdCBzdGFydCBvZiAw
IHRvIHRoZSBmaW5kIGZ1bmN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0KTogUmVtb3ZlZCB1bm5lZWRl
ZCBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludFN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGl0dG8uCisgICAg
ICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9VSW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTogRGl0
dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEaXR0by4KKwogMjAyMC0wNC0yMCAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1Mzk4Nyk6IFN0
cmluZ0ltcGw6OmFkb3B0KFZlY3RvciYmKSBjb3BpZXMgb25seSBoYWxmIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBWZWN0b3Igd2hlbiBjb3B5aW5nIGFjcm9zcyBtYWxsb2Mgem9uZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwZDJhZDkyYjQ5MjM0NGNlYjNkMGRkZTdkNzNiNzUzZTFmOWIxZmY4Li4yZjE1YWZk
MmNlYzI3MTJhYTc2ODg4YWNiYWM3OGM3MTJiNmNiOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTgyIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdz
IG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6bWF0Y2hVUkxzKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxscyB0byBo
YXNRdWVyeS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgpOiBVc2UgaGFzQ3Jl
ZGVudGlhbHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KTogVXNlIGhhc0NyZWRlbnRp
YWxzLgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZp
ZXIpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVlvdVR1
YmVVUkwpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpxdWVyeUtleXNBbmRW
YWx1ZXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3Jl
YXRlWW91VHViZVVSTCk6IFVzZSBhdXRvIHNpbmNlIFVSTCBwaWVjZXMgYXJlCisgICAgICAgIG5v
dyByZXR1cm5lZCBhcyBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdp
blJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgVXNlIFN0
cmluZ1ZpZXcgYW5kIG1ha2VTdHJpbmcgcmF0aGVyIHRoYW4gU3RyaW5nQnVpbGRlci4KKworICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVzb3VyY2VOYW1lKTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1h
cmsuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJu
YWxMaW5rRWxlbWVudCBjb25zdCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVUkwp
OiBVc2Ugc2V0SG9zdEFuZFBvcnQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmspOiBVcGRhdGUg
c2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgU3RyaW5nVmlldy4KKwor
ICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOiBBZGRlZCBhIGNvbW1lbnQuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6IFVwZGF0ZSBzaW5jZQorICAg
ICAgICBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4gQWxzbyBnb3Qgcmlk
IG9mIHNvbWUgc3RyYW5nZQorICAgICAgICB1c2Ugb2YgQXRvbVN0cmluZyB0aGF0IHdhcyBub3Qg
bmVjZXNzYXJ5IGFuZCB1c2VkIFdURk1vdmUgbW9yZS4KKworICAgICAgICAqIGVkaXRpbmcvaW9z
L0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFz
dGVib2FyZCk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5z
IGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRp
dGxlRm9yRGlzcGxheSBjb25zdCk6CisgICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2Yg
U3RyaW5nQnVpbGRlciwgYW5kIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmcg
Zm9yIG5hbWUgYW5kIGV4dGVuc2lvbiB2YWx1ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9yVHlw
ZSk6IFVwZGF0ZSBzaW5jZSBsYXN0UGF0aENvbXBvbmVudAorICAgICAgICByZXR1cm5zIGEgU3Ry
aW5nVmlldy4KKworICAgICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6
IFVwZGF0ZSBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmlu
Z1ZpZXcuCisKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6IENoYW5nZWQgc2V0SG9zdCB0byB0
YWtlIGEgU3RyaW5nVmlldywgY2hhbmdlZAorICAgICAgICB2YXJpb3VzIG90aGVyIGZ1bmN0aW9u
cyB0byBjYWxsIHRvU3RyaW5nLCBzaW5jZSB0aGUgdW5kZXJseWluZyBVUkwKKyAgICAgICAgZnVu
Y3Rpb24gbm93IHJldHVybnMgYSBTdHJpbmdWaWV3LiBVcGRhdGVkIG5hbWVzIHNpbmNlICJwYXNz
IiBpcyBub3cKKyAgICAgICAgInBhc3N3b3JkIi4KKyAgICAgICAgKFdlYkNvcmU6OmNvdW50QVND
SUlEaWdpdHMpOiBBZGRlZC4gUmVwbGFjZXMgdW51c3VhbCBmdW5jdGlvbgorICAgICAgICBuYW1l
ZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24gYmVjYXVzZSB3ZSBjYW4gdXNlIFN0cmluZ1Zp
ZXcgbm93CisgICAgICAgIGFuZCBzbyBkb24ndCBuZWVkIHN1Y2ggYW4gdW51c3VhbCBmdW5jdGlv
bi4KKworICAgICAgICAqIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25SZXF1ZXN0KTogVXNl
IGhhc0NyZWRlbnRpYWxzLgorICAgICAgICBBbHNvIHJlbW92ZWQgdW5uZWNlc3NhcnkgdXNlIG9m
IEFTQ0lJTGl0ZXJhbCB0aGF0IGh1cnRzIHBlcmZvcm1hbmNlCisgICAgICAgIGEgdGlueSBiaXQu
CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnVybEZvclRlc3RpbmcgY29u
c3QpOiBVc2UgbWFrZVN0cmluZworICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisK
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbGlkYXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlvblVSTCk6IFVzZSBoYXNDcmVk
ZW50aWFscy4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qp
OiBVc2UgaGFzQ3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwpOiBV
cGRhdGUgc2luY2UgcXVlcnkgcmV0dXJucworICAgICAgICBTdHJpbmdWaWV3LgorCisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKTogVXNlIGZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGguCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFuaWZlc3RQYXRoKTogUmV0dXJuIGEgU3Ry
aW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWFuaWZlc3QpOiBVc2UgU3RyaW5nVmll
dy4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24gY29uc3QpOiBVcGRh
dGUgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlmZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcu
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJZGVudGlm
aWVyRnJvbVJlcXVlc3RVUkwpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsKTog
VXBkYXRlZCBsb2cgbWVzc2FnZS4KKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKTogVXBkYXRlZCBmb3IgVVJM
OjpwYXNzd29yZCBuYW1lIGNoYW5nZQorICAgICAgICBhbmQgdG8gdXNlIHRoZSBuZXcgc3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIgcmF0aGVyIHRoYW4gdGhlCisgICAgICAg
IG9sZCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudC4KKworICAgICAgICAqIHBhZ2UvTG9j
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmhyZWYgY29uc3QpOiBVc2Ug
cmVtb3ZlQ3JlZGVudGlhbHMuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cG9ydCBjb25z
dCk6IFN0cmVhbWxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnBhdGhuYW1lIGNv
bnN0KTogVXNlIGFuIEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpz
ZWFyY2ggY29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldp
dGhMZWFkaW5nTnVtYmVyU2lnbi4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0
KTogVXNlIHBhcnNlVUludDE2LgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwOiBDb2Rpbmcgc3R5bGUgdHdlYWtzLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphcHBl
bmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkpOgorICAgICAgICBVc2UgY29udGFpbnMgaW5zdGVh
ZCBvZiByZXZlcnNlRmluZCB0byBjaGVjayBmb3IgYSBwZXJpb2QgaW4gdGhlIGZpbGVuYW1lLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWQpOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9u
ZW50IGlzIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvSW50ZXJuYWxQcm90b2NvbCk6IFVwZGF0ZWQgdG8gdXNlIG1ha2VTdHJpbmcgc2lu
Y2UKKyAgICAgICAgc2V0UHJvdG9jb2wgdGFrZXMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFtZWQgbV9wYXNz
IHRvIG1fcGFzc3dvcmQKKyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVhZCBvZiBwYXNz
LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxz
KTogVXNlIHJlbW92ZUNyZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzOjpzZXRVc2VyUGFzcyk6IFVwZGF0ZWQgZm9yIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJveHlVcmwpOiBVc2UgaGFzQ3JlZGVudGlhbHMs
IHVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFBy
b3h5U2V0dGluZ3M6OnBhc3N3b3JkIGNvbnN0KTogVXBkYXRlZCBmb3IgcGFzc3dvcmQgbmFtZSBj
aGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5l
Y3Rpb24pOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkCisgICAgICAgIGFuZCBzZXRQYXNzd29yZCBu
YW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRS
ZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dHJ5SGFu
ZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmNyZWF0ZVNvdXBVUkkgY29uc3QpOiBVcGRhdGVkIGZvciBw
YXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJM
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzb3VwVVJJVG9VUkwpOiBVcGRhdGVkIGZvciBz
ZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMKTogVXBkYXRlZCBzaW5jZSBs
YXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6
OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OndyaXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlclN0YXRlOjpjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50
aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpwb3J0IGNvbnN0
KTogU3RyZWFtbGluZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cGF0aG5h
bWUgY29uc3QpOiBVc2UgYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
TG9jYXRpb246OnNlYXJjaCBjb25zdCk6IFVzZSBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJr
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246Omhhc2ggY29uc3QpOiBVc2UgZnJh
Z21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSk6CisgICAgICAgIFVwZGF0ZWQgZm9yIGhhc0ZyYWdtZW50SWRlbnRpZmllciBuYW1l
IGNoYW5nZS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b3BPcmlnaW5VUkwpOiBTaW1w
bGlmaWVkIGNvZGUgdG8gc2V0IHBvcnQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcmlnaW5VUkwpOiBEaXR0by4KKwor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6b3Blbik6IFVwZGF0ZWQgZm9yIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdlLgor
CiAyMDIwLTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U2VuZGluZyBiZWFjb25zIHdoZW4gRmV0Y2ggS2VlcEFsaXZlIGZlYXR1cmUgaXMgZGlzYWJsZWQg
Y3Jhc2hlcyB0aGUgV2ViUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNmNiMGUzZTA1OWY4MDA0MjE3YTQx
YzQ4YTM4ODhkYzkxMDE2ODhmLi4wZDc2NzhiMDEzNDk3ZmZkMWUzNTZhNWZjOTg0MTUzMTUzZjdm
MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3
aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1Jl
ZGlyZWN0aW9uKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICBS
ZW1vdmUgdXNlIG9mIEFTQ0lJTGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKTogVXBkYXRl
ZAorICAgICAgICBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291
cCk6IFVwZGF0ZWQgZm9yCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a1NvdXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcgY29uc3QpOgorICAgICAgICBVc2Ug
IT0gdG8gY29tcGFyZSBob3N0cywgcmF0aGVyIHRoYW4gaG9zdHNBcmVFcXVhbC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdy
YWRlIGNvbnN0KToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgfHwgdG8gbWF0Y2ggdGhlIGZ1
bmN0aW9uIGFib3ZlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAg
KEFQSTo6VVJMOjpob3N0IGNvbnN0KTogUmVtb3ZlZCB2YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6
Omhvc3QKKyAgICAgICAgcmV0dXJucyBudWxsIGlmIHRoZSBVUkwgaXMgaW52YWxpZC4KKyAgICAg
ICAgKEFQSTo6VVJMOjpwcm90b2NvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6
OnBhdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFQSTo6VVJMOjpsYXN0UGF0aENvbXBvbmVu
dCBjb25zdCk6IERpdHRvLiBBbHNvIGFkZGVkIHRvU3RyaW5nCisgICAgICAgIHNpbmNlIFdURjo6
VVJMOjpsYXN0UGF0aENvbXBvbmVudCBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOiBVc2UgaGFzRnJhZ21lbnRJZGVudGlmaWVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2sp
OgorICAgICAgICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aCBhbmQKKyAgICAgICAgdXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5z
IGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhdGhFeHRlbnNpb24pOiBVcGRhdGVkIHNpbmNl
IGxhc3RQYXRoQ29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LiBSZWZhY3Rv
cmVkIGEgbGl0dGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZSk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
CisgICAgICAgIFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCByYXRoZXIgdGhhbiBob3N0c0FyZUVx
dWFsLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
ZU5ld1BhZ2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwpOgorICAgICAgICBVc2UgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9t
YWlucyk6CisgICAgICAgIERvbid0IHVzZSBBU0NJSUxpdGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNl
dFByb3RvY29sLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICBVc2UgZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
aW5zdGFsbFBERkRvY3VtZW50KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50
aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZAorICAgICAg
ICB0aGUgaW1wbGVtZW50YXRpb24gYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICBVcGRhdGVkIHNp
bmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCiAyMDIwLTA0LTIw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2VuZGluZyBiZWFj
b25zIHdoZW4gRmV0Y2ggS2VlcEFsaXZlIGZlYXR1cmUgaXMgZGlzYWJsZWQgY3Jhc2hlcyB0aGUg
V2ViUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDhkNWUzNDMxNjE3Yjg2
Njg1ZTkwZDIxZjFkZTVmMGI5MTNiNmJkZTYuLjllZmYyOTMyM2IxZjc5ZDk0ZDY1MjJhMzNjN2Fl
MmM1OTQ2M2U4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0
aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoc2hvdWxk
VHJ5QXBwTGluayk6IENvbXBhcmUgaG9zdHMgd2l0aCA9PSByYXRoZXIgdGhhbiB1c2luZyBob3N0
c0FyZUVxdWFsLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRGb3JJbWFnZURhdGE6d2l0aFJlbGF0aXZlVVJMUGFy
dDphbmRNSU1FVHlwZTpdKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0
aXZlUGFydCB0YWtlcyBhIFN0cmluZ1ZpZXcuIEFsc28gdXNlIFJldGFpblB0cgorICAgICAgICBp
bnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGNhbGwgdG8gcmVsZWFzZS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF93ZWJfZG9jdW1lbnRG
cmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmRUeXBlOmltYWdlTUlNRVR5cGU6XSk6Cisg
ICAgICAgIFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQgdGFrZXMgYSBTdHJp
bmdWaWV3LiBObyBjb252ZXJzaW9uCisgICAgICAgIGRpcmVjdGx5IGZyb20gTlNTdHJpbmcgdG8g
U3RyaW5nVmlldywgc28gd2UgaGF2ZSB0byBleHBsaWNpdGx5IHVzZSBhIFN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xs
ZXJdKTogVXBkYXRlCisgICAgICAgIHNpbmNlIHByb3RvY29sSXMgdGFrZXMgYSBTdHJpbmdWaWV3
LiBObyBjb252ZXJzaW9uIGRpcmVjdGx5IGZyb20KKyAgICAgICAgTlNTdHJpbmcgdG8gU3RyaW5n
Vmlldywgc28gd2UgaGF2ZSB0byBleHBsaWNpdGx5IHVzZSBhIFN0cmluZy4KKwogMjAyMC0wNC0y
MCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlICNpbXBvcnQg
aW5zdGVhZCBvZiAjaW5jbHVkZSBpbiBPYmplY3RpdmUtQyBhbmQgZG9uJ3QgdXNlICNwcmFnbWEg
b25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDJhZjJlZjhmNWNkNTdjOTU0OTAx
MjcyZTdkZGYyNTRjZDE4ZDNkYTMuLjM1Mzg3ODVjMjIyODVkMTU0YzQ2ZmMyYjIyYTU3ZjVkOTRm
MTExYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBV
UkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRN
ZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKTogU3RyZWFtbGluZWQKKyAgICAgICAgdGhlIGlt
cGxlbWVudGF0aW9uIGEgYml0LgorCiAyMDIwLTA0LTE4ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUmVkdWNlIHBhcmFtZXRlciBsaXN0IG9mIHRoZSBGcmFtZUxvYWRS
ZXF1ZXN0IGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCAyYzUwNGJjZGE4YmQzMmI3OGIzOTRhZDIyZjA3
OTEyYTgzMjEwMWQ3Li44NDk2ZjcyMDJmNjc5MWI1ODBmZDliNWQzMzgwNGFiM2ZkZDhjYjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtNDIsMjYgKzQyLDE3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10eXBlZGVm
IFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEy
PiBVQ2hhckJ1ZmZlcjsKLQotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnZhbGlkUG9ydE51
bWJlciA9IDB4RkZGRjsKLQotLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9u
LCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBh
cmUgYWxsb3dlZAotLy8gaW4gdGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1h
ZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShj
b25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdCkKKy8vIENvcGllcyB0aGUgc291cmNlIHRv
IHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUg
QVNDSUkuCisvLyBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBO
dWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgaW4gdGhlCisvLyBzb3VyY2Ugc3RyaW5nLCBhbmQg
bm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSBkZXN0aW5hdGlvbiBidWZm
ZXIuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRl
c3RpbmF0aW9uKQogewotICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5n
LmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5h
dGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAg
ICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oc3JjW2ldKTsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBzdHJpbmcuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzdGF0
aWNfY2FzdDxjaGFyPihzb3VyY2VbaV0pOwogICAgIH0KIH0KIApAQCAtODMsMTYgKzc0LDEzIEBA
IHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewot
ICAgIFVSTFBhcnNlciBwYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihyZWxhdGl2ZSwgYmFz
ZSwgZW5jb2RpbmcpLnJlc3VsdCgpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVS
TChVQ2hhciBjKQorc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgY2hhcmFjdGVy
KQogewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2Ug
YW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUgdGhhdCBjIGlz
IGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8gc28gdGhpcyBjb21wYXJpc29uIHNob3Vs
ZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICByZXR1cm4gYyA8PSAnICc7Cisg
ICAgLy8gSWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgIHJldHVybiBjaGFyYWN0ZXIgPD0gJyAnOwogfQogCiBVUkwgVVJMOjppc29s
YXRlZENvcHkoKSBjb25zdApAQCAtMTAyLDQ4ICs5MCw0MyBAQCBVUkwgVVJMOjppc29sYXRlZENv
cHkoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBVUkw6Omxhc3RQYXRo
Q29tcG9uZW50KCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFoYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVuZCAtIDE7CiAg
ICAgaWYgKG1fc3RyaW5nW2VuZF0gPT0gJy8nKQogICAgICAgICAtLWVuZDsKIAogICAgIHNpemVf
dCBzdGFydCA9IG1fc3RyaW5nLnJldmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3RhcnQg
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmIChzdGFydCA8IHBhdGhTdGFydCgpKQorICAgICAg
ICByZXR1cm4geyB9OwogICAgICsrc3RhcnQ7CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3Ry
aW5nKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CiB9CiAKIFN0cmluZ1ZpZXcg
VVJMOjpwcm90b2NvbCgpIGNvbnN0CiB7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybiB7IH07CisKICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAs
IG1fc2NoZW1lRW5kKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogeworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgdW5zaWduZWQgc3Rh
cnQgPSBob3N0U3RhcnQoKTsKICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKHN0YXJ0LCBtX2hvc3RFbmQgLSBzdGFydCk7CiB9CiAKIE9wdGlvbmFsPHVpbnQxNl90PiBV
Ukw6OnBvcnQoKSBjb25zdAogewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51
bWJlcjsKLSAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG51bWJlciA9IGNoYXJh
Y3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSBjaGFy
YWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsg
MSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICByZXR1cm4gbnVtYmVyOworICAgIHJldHVybiBtX3BvcnRMZW5ndGggPyBwYXJz
ZVVJbnQxNihTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9w
b3J0TGVuZ3RoIC0gMSkpIDogV1RGOjpudWxsb3B0OwogfQogCiBTdHJpbmcgVVJMOjpob3N0QW5k
UG9ydCgpIGNvbnN0CkBAIC0xNTUsOTQgKzEzOCwxMDAgQEAgU3RyaW5nIFVSTDo6aG9zdEFuZFBv
cnQoKSBjb25zdAogCiBTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKIHsK
LSAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1f
cG9ydExlbmd0aCk7CisgICAgaWYgKCFoYXNDcmVkZW50aWFscygpKQorICAgICAgICByZXR1cm4g
bV9zdHJpbmcuc3Vic3RyaW5nKDAsIHBhdGhTdGFydCgpKTsKIAotICAgIGlmIChtX3Bhc3N3b3Jk
RW5kIC0gbV91c2VyU3RhcnQgPiAwKSB7Ci0gICAgICAgIGNvbnN0IGludCBhbGxvd0ZvclRyYWls
aW5nQXRTaWduID0gMTsKLSAgICAgICAgcmVzdWx0LnJlbW92ZShtX3VzZXJTdGFydCwgbV9wYXNz
d29yZEVuZCAtIG1fdXNlclN0YXJ0ICsgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbik7Ci0gICAgfQor
ICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoaG9zdFN0YXJ0KCksIHBhdGhTdGFydCgpIC0gaG9zdFN0YXJ0KCkpCisgICAgKTsKK30K
IAotICAgIHJldHVybiByZXN1bHQ7CitzdGF0aWMgT3B0aW9uYWw8TENoYXI+IGRlY29kZUVzY2Fw
ZVNlcXVlbmNlKFN0cmluZ1ZpZXcgaW5wdXQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgaWYgKGluZGV4ICsgMyA+IGxlbmd0aCB8fCBpbnB1dFtpbmRleF0gIT0gJyUn
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gZGlnaXQxID0gaW5wdXRb
aW5kZXggKyAxXTsKKyAgICBhdXRvIGRpZ2l0MiA9IGlucHV0W2luZGV4ICsgMl07CisgICAgaWYg
KCFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQxKSB8fCAhaXNBU0NJSUhleERpZ2l0KGRpZ2l0MikpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHRvQVNDSUlIZXhWYWx1ZShk
aWdpdDEsIGRpZ2l0Mik7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQogewotICAgIGF1dG8gaW5wdXRMZW5ndGgg
PSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBl
cmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChp
bnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgotICAgICAgICAg
ICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0
KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsg
Ml0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJ
SUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9
IDI7Ci0gICAgICAgIH0gZWxzZQorICAgIEFTU0VSVChpbnB1dC5pc0FsbEFTQ0lJKCkpOworCisg
ICAgYXV0byBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoIDwgMyB8fCAh
aW5wdXQuY29udGFpbnMoJyUnKSkKKyAgICAgICAgcmV0dXJuIGlucHV0LnRvU3RyaW5nKCk7CisK
KyAgICBWZWN0b3I8TENoYXIsIDUxMj4gcGVyY2VudERlY29kZWQ7CisgICAgcGVyY2VudERlY29k
ZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICkgeworICAgICAgICBpZiAoYXV0byBkZWNvZGVkQ2hhcmFjdGVyID0g
ZGVjb2RlRXNjYXBlU2VxdWVuY2UoaW5wdXQsIGksIGxlbmd0aCkpIHsKKyAgICAgICAgICAgIHBl
cmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZCgqZGVjb2RlZENoYXJhY3Rlcik7CisgICAgICAg
ICAgICBpICs9IDM7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwZXJjZW50RGVjb2Rl
ZC51bmNoZWNrZWRBcHBlbmQoaW5wdXRbaV0pOworICAgICAgICAgICAgKytpOworICAgICAgICB9
CiAgICAgfQorCisgICAgLy8gRklYTUU6IElzIFVURi04IGFsd2F5cyB0aGUgY29ycmVjdCBlbmNv
ZGluZz8KKyAgICAvLyBGSVhNRTogVGhpcyByZXR1cm5zIGEgbnVsbCBzdHJpbmcgd2hlbiB3ZSBl
bmNvdW50ZXIgYW4gaW52YWxpZCBVVEYtOCBzZXF1ZW5jZS4gSXMgdGhhdCBPSz8KICAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVk
LnNpemUoKSk7CiB9CiAKIFN0cmluZyBVUkw6OnVzZXIoKSBjb25zdAogewotICAgIHJldHVybiBk
ZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpKTsKKyAgICByZXR1
cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChlbmNvZGVkVXNlcigpKTsKIH0K
IAotU3RyaW5nIFVSTDo6cGFzcygpIGNvbnN0CitTdHJpbmcgVVJMOjpwYXNzd29yZCgpIGNvbnN0
CiB7Ci0gICAgaWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29y
ZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChlbmNvZGVkUGFzc3dvcmQoKSk7CiB9CiAKLVN0cmluZyBVUkw6OmVuY29k
ZWRVc2VyKCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91
c2VyU3RhcnQpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91
c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKIH0KIAotU3RyaW5nIFVSTDo6ZW5j
b2RlZFBhc3MoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmVuY29kZWRQYXNzd29yZCgpIGNvbnN0
CiB7CiAgICAgaWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKTsKKyAg
ICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1f
cGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKTsKIH0KIAotU3RyaW5nIFVSTDo6ZnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdAogewogICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCAr
IDEpOwotfQorICAgICAgICByZXR1cm4geyB9OwogCi1ib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0
aCgpICE9IG1fcXVlcnlFbmQ7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX3F1ZXJ5RW5kICsgMSk7CiB9CiAKLVN0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNv
bnN0CitVUkwgVVJMOjp0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKSBjb25zdAogewotICAgIHJldHVy
biBtX3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKKyAgICByZXR1cm4gVVJMKFVS
TCgpLCBtX3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKSk7CiB9CiAKICNpZiAhVVNF
KENGKQogCiBTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
c1ZhbGlkKCkgfHwgIWlzTG9jYWxGaWxlKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICBpZiAoIWlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwor
ICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKHBhdGgoKSk7CiB9
CiAKICNlbmRpZgogCi0jaWZkZWYgTkRFQlVHCisjaWYgIUFTU0VSVF9FTkFCTEVECiAKIHN0YXRp
YyBpbmxpbmUgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KQogewpAQCAtMzE0
LDcgKzMwMyw3IEBAIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQs
IFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiAKIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIq
IHByb3RvY29sKSBjb25zdAogewotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcg
eyBwcm90b2NvbCB9KTsKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CiAKICAg
ICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBl
dmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCiAgICAgLy8gVGhlIGZyZWUgZnVu
Y3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKQEAg
LTM0OSw3MyArMzM4LDY1IEBAIGJvb2wgVVJMOjpwcm90b2NvbElzKFN0cmluZ1ZpZXcgcHJvdG9j
b2wpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBVUkw6OnF1ZXJ5KCkgY29u
c3QKK1N0cmluZ1ZpZXcgVVJMOjpxdWVyeSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fcXVlcnlFbmQg
PT0gbV9wYXRoRW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCArIDEsIG1fcXVl
cnlFbmQgLSAobV9wYXRoRW5kICsgMSkpOyAKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5kICsgMSkp
OwogfQogCiBTdHJpbmdWaWV3IFVSTDo6cGF0aCgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgcG9y
dEVuZCA9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKLSAgICByZXR1cm4gU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRFbmQpOworICAgIGlm
ICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSwgbV9wYXRoRW5kIC0gcGF0aFN0YXJ0
KCkpOwogfQogCi1ib29sIFVSTDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQorYm9vbCBV
Ukw6OnNldFByb3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAgLy8gRmlyZWZv
eCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXpl
X3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9j
b2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAgYXV0byBjYW5vbmlj
YWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7
Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgIGF1dG8gbmV3UHJvdG9jb2xQcmVmaXggPSBu
ZXdQcm90b2NvbC5zdWJzdHJpbmcoMCwgbmV3UHJvdG9jb2wuZmluZCgnOicpKTsKKyAgICBhdXRv
IG5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUobmV3UHJvdG9jb2xQcmVmaXgudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBp
ZiAoIW5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KCpjYW5vbmljYWxpemVkLCAiOiIsIG1fc3RyaW5nKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOworICAgICAgICBwYXJzZShtYWtlU3RyaW5nKCpuZXdQcm90b2NvbENhbm9uaWNh
bGl6ZWQsICc6JywgbV9zdHJpbmcpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaWYgKChtX3Bhc3N3b3JkRW5kICE9IG1fdXNlclN0YXJ0IHx8IHBvcnQoKSkgJiYgKmNhbm9u
aWNhbGl6ZWQgPT0gImZpbGUiKQorICAgIGlmICgobV9wYXNzd29yZEVuZCAhPSBtX3VzZXJTdGFy
dCB8fCBwb3J0KCkpICYmICpuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQgPT0gImZpbGUiKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChpc0xvY2FsRmlsZSgpICYmIGhvc3QoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKCpjYW5vbmljYWxpemVkLCBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hlbWVFbmQpKSk7
Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgcGFyc2UobWFrZVN0cmluZygqbmV3
UHJvdG9jb2xDYW5vbmljYWxpemVkLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9z
Y2hlbWVFbmQpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzQWxsQVND
SUkoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5j
aGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLX0KLSAgICAKIC8vIEFwcGVuZHMgdGhl
IHB1bnljb2RlZCBob3N0bmFtZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcgYW5kIGxl
bmd0aCB0bwogLy8gdGhlIG91dHB1dCBidWZmZXIuIFRoZSByZXN1bHQgd2lsbCBub3QgYmUgbnVs
bCB0ZXJtaW5hdGVkLgogLy8gUmV0dXJuIHZhbHVlIG9mIGZhbHNlIG1lYW5zIGVycm9yIGluIGVu
Y29kaW5nLgotc3RhdGljIGJvb2wgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBi
dWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RhdGljIGJvb2wgYXBwZW5kRW5jb2RlZEhvc3Ru
YW1lKFZlY3RvcjxVQ2hhciwgNTEyPiYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKIHsKICAg
ICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4K
ICAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4g
ZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCiAgICAgY29uc3QgdW5zaWdu
ZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKKwor
ICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBzdHJpbmcu
aXNBbGxBU0NJSSgpKSB7CiAgICAgICAgIGFwcGVuZChidWZmZXIsIHN0cmluZyk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hv
c3RuYW1lQnVmZmVyTGVuZ3RoXTsKICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9S
OwogICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTEla
RVI7CiAgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVND
SUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCiAgICAg
ICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0
bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVy
cm9yKTsKLSAgICAKKwogICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0
YWlscy5lcnJvcnMpIHsKICAgICAgICAgYnVmZmVyLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVt
Q2hhcmFjdGVyc0NvbnZlcnRlZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDI4LDEwMSAr
NDA5LDg5IEBAIHVuc2lnbmVkIFVSTDo6aG9zdFN0YXJ0KCkgY29uc3QKICAgICByZXR1cm4gKG1f
cGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRF
bmQgKyAxOwogfQogCi12b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCit1bnNpZ25l
ZCBVUkw6OmNyZWRlbnRpYWxzRW5kKCkgY29uc3QKK3sKKyAgICAvLyBJbmNsdWRlICdAJyB0b28g
aWYgd2UgaGF2ZSBpdC4KKyAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOworICAgIGlm
IChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICBlbmQg
Kz0gMTsKKyAgICByZXR1cm4gZW5kOworfQorCit2b2lkIFVSTDo6c2V0SG9zdChTdHJpbmdWaWV3
IG5ld0hvc3QpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gY29sb25JbmRleCA9IHMuZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5v
dEZvdW5kKQorICAgIGlmIChuZXdIb3N0LmNvbnRhaW5zKCc6JykpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFVDaGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKLSAgICBpZiAoIWFwcGVuZEVuY29k
ZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIHMpKQorICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBl
bmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhv
c3ROYW1lLCBuZXdIb3N0KSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGJvb2wgc2xhc2hT
bGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVt
ZUVuZCArIDEpOwotICAgIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVy
LmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7Ci0gICAgaWYgKHNsYXNoU2xhc2hO
ZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKLSAgICBidWlsZGVy
LmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFt
ZS5zaXplKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0
RW5kKSk7CiAKLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91
c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAg
ICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQoaG9zdFN0YXJ0KCkpLAorICAgICAgICBzbGFz
aFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiLAorICAgICAgICBTdHJpbmdWaWV3KGVuY29kZWRIb3N0
TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpLAorICAgICAgICBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kKQorICAgICkpOwogfQogCi12b2lkIFVSTDo6
cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybjsK
LSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lk
IFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQordm9pZCBVUkw6OnNldFBvcnQoT3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGJvb2wgY29sb25OZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOwotICAgIHVuc2lnbmVk
IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOwot
Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3Bv
cnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJM
OjpyZW1vdmVIb3N0QW5kUG9ydCgpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCisgICAgaWYgKCFw
b3J0KSB7CisgICAgICAgIHJlbW92ZShtX2hvc3RFbmQsIG1fcG9ydExlbmd0aCk7CiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoIWhvc3QoKS5pc0VtcHR5KCkpCi0gICAgICAgIHNldEhvc3QoeyB9
KTsKLSAgICByZW1vdmVQb3J0KCk7CisgICAgfQorCisgICAgcGFyc2UobWFrZVN0cmluZygKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLAorICAgICAgICAnOics
CisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqcG9ydCksCisgICAgICAgIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAgICApKTsKIH0KIAotdm9pZCBV
Ukw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCit2b2lkIFVSTDo6
c2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyBob3N0QW5kUG9ydCkKIHsKICAgICBpZiAoIW1faXNW
YWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nVmlldyBob3N0TmFtZShob3N0QW5k
UG9ydCk7Ci0gICAgU3RyaW5nVmlldyBwb3J0OwotICAgIAorICAgIGF1dG8gaG9zdE5hbWUgPSBo
b3N0QW5kUG9ydDsKKyAgICBTdHJpbmdWaWV3IHBvcnRTdHJpbmc7CiAgICAgYXV0byBjb2xvbklu
ZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwogICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5k
KSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwot
ICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qo
b2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsK
KyAgICAgICAgcG9ydFN0cmluZyA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7
CisgICAgICAgIGlmIChwYXJzZVVJbnQxNihwb3J0U3RyaW5nKSkKKyAgICAgICAgICAgIGhvc3RO
YW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGhvc3ROYW1lID0geyB9OworICAgICAgICAgICAgcG9ydFN0cmluZyA9IHsg
fTsKKyAgICAgICAgfQogICAgIH0KLQotICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpCisgICAg
aWYgKGhvc3ROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICByZW1vdmUoaG9zdFN0YXJ0KCksIHBh
dGhTdGFydCgpIC0gaG9zdFN0YXJ0KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
VUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNv
ZGVkSG9zdE5hbWU7CiAgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3RO
YW1lLCBob3N0TmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2xhc2hTbGFzaE5l
ZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCAr
IDEpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1f
c3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkp
OwotICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7
Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVk
ID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgIHBhcnNlKG1ha2VTdHJpbmco
CisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQoaG9zdFN0YXJ0KCkpLAorICAgICAg
ICBzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiLAorICAgICAgICBTdHJpbmdWaWV3KGVuY29k
ZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpLAorICAgICAgICBwb3J0
U3RyaW5nLmlzRW1wdHkoKSA/ICIiIDogIjoiLAorICAgICAgICBwb3J0U3RyaW5nLAorICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0KCkpCisgICAgKSk7CiB9
CiAKIHN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBp
bnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCkBAIC01NTEsODEgKzUyMCw4OSBAQCBz
dGF0aWMgU3RyaW5nIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQs
IGJvb2woKnNob3VsZEVuY29kZSkoVQogICAgIHJldHVybiBpbnB1dDsKIH0KIAotdm9pZCBVUkw6
OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQordm9pZCBVUkw6OnBhcnNlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewotICAgIGlmICghbV9pc1ZhbGlkKQorICAgICp0aGlzID0gVVJMUGFyc2Vy
KHN0cmluZykucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmUodW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwor
ICAgIEFTU0VSVChzdGFydCA8IG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQobGVuZ3Ro
IDw9IG1fc3RyaW5nLmxlbmd0aCgpIC0gc3RhcnQpOwogCi0gICAgLy8gRklYTUU6IE5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgp
IGV4cGVjdGF0aW9ucywKLSAgICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1
c3QgdGhlIHVzZXIgbG9naW4uCisgICAgYXV0byBzdHJpbmdBZnRlclJlbW92YWwgPSBXVEZNb3Zl
KG1fc3RyaW5nKTsKKyAgICBzdHJpbmdBZnRlclJlbW92YWwucmVtb3ZlKHN0YXJ0LCBsZW5ndGgp
OworICAgIHBhcnNlKHN0cmluZ0FmdGVyUmVtb3ZhbCk7Cit9CisKK3ZvaWQgVVJMOjpzZXRVc2Vy
KFN0cmluZ1ZpZXcgbmV3VXNlcikKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgdW5zaWduZWQgZW5kID0gbV91c2VyRW5kOwotICAgIGlmICghdXNlci5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHUgPSBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyh1c2Vy
LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7Ci0gICAgICAgIGlmIChtX3VzZXJT
dGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAg
ICAgIHUgPSAiLy8iICsgdTsKLSAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBv
bmUgYmVmb3JlLgotICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFz
c3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpKQotICAgICAgICAgICAgdS5hcHBlbmQo
J0AnKTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCB1LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBpZiAoIW5l
d1VzZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNl
clN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKyAgICAgICAgYm9vbCBuZWVkU2VwYXJhdG9yID0g
ZW5kID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5k
XSAhPSAnQCcpOworICAgICAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksCisgICAgICAgICAgICBzbGFzaFNsYXNo
TmVlZGVkID8gIi8vIiA6ICIiLAorICAgICAgICAgICAgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMo
bmV3VXNlci50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0KSwKKyAgICAgICAgICAgIG5lZWRTZXBhcmF0b3IgPyAiQCIgOiAiIiwKKyAgICAg
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpCisgICAgICAgICkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhl
ciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3Jk
RW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAgICAgICAg
ICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUg
ZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNo
YW5nZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkgewotICAgICAgICAgICAgVVJM
UGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2Vy
U3RhcnQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVtb3ZlKG1f
dXNlclN0YXJ0LCBlbmQgLSBtX3VzZXJTdGFydCk7CiAgICAgfQogfQogCi12b2lkIFVSTDo6c2V0
UGFzcyhjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQordm9pZCBVUkw6OnNldFBhc3N3b3JkKFN0cmlu
Z1ZpZXcgbmV3UGFzc3dvcmQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaWYgKCFwYXNzd29y
ZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHAgPSAiOiIgKyBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhwYXNzd29yZCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpICsgIkAi
OwotICAgICAgICBpZiAobV91c2VyRW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVt
ZUVuZCArIDEpKQotICAgICAgICAgICAgcCA9ICIvLyIgKyBwOwotICAgICAgICAvLyBFYXQgdGhl
IGV4aXN0aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCi0gICAgICAg
IGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAg
ICAgZW5kICs9IDE7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIHAsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlm
ICghbmV3UGFzc3dvcmQuaXNFbXB0eSgpKSB7CisgICAgICAgIGJvb2wgbmVlZExlYWRpbmdTbGFz
aGVzID0gbV91c2VyRW5kID09IG1fc2NoZW1lRW5kICsgMTsKKyAgICAgICAgcGFyc2UobWFrZVN0
cmluZygKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwK
KyAgICAgICAgICAgIG5lZWRMZWFkaW5nU2xhc2hlcyA/ICIvLzoiIDogIjoiLAorICAgICAgICAg
ICAgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMobmV3UGFzc3dvcmQudG9TdHJpbmdXaXRob3V0Q29w
eWluZygpLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCksCisgICAgICAgICAgICAn
QCcsCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoY3JlZGVudGlh
bHNFbmQoKSkKKyAgICAgICAgKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdA
JyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBu
b3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQp
IHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQor
ICAgICAgICB1bnNpZ25lZCBlbmQgPSBtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgPyBjcmVkZW50
aWFsc0VuZCgpIDogbV9wYXNzd29yZEVuZDsKKyAgICAgICAgcmVtb3ZlKG1fdXNlckVuZCwgZW5k
IC0gbV91c2VyRW5kKTsKICAgICB9CiB9CiAKK3ZvaWQgVVJMOjpyZW1vdmVDcmVkZW50aWFscygp
Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZSht
X3VzZXJTdGFydCwgY3JlZGVudGlhbHNFbmQoKSAtIG1fdXNlclN0YXJ0KTsKK30KKwogdm9pZCBV
Ukw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiB7CiAgICAg
aWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBPcHRpbWl6
ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1
YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRv
IHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/
Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmlu
ZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgp
OworICAgIHBhcnNlKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3F1ZXJ5
RW5kKSwgJyMnLCBpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKQogewotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9x
dWVyeUVuZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQpCi0gICAg
ICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKTsKKworICAgIG1fc3RyaW5n
ID0gbV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5
QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkKQEAgLTYzNyw2MiArNjE0LDYyIEBAIHZvaWQgVVJMOjpy
ZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCiAgICAgbV9xdWVyeUVuZCA9IG1fcGF0
aEVuZDsKIH0KIAotdm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCit2b2lk
IFVSTDo6c2V0UXVlcnkoU3RyaW5nVmlldyBuZXdRdWVyeSkKIHsKKyAgICAvLyBGSVhNRTogQ29u
c2lkZXIgcmVuYW1pbmcgdGhpcyBmdW5jdGlvbiB0byBzZXRFbmNvZGVkUXVlcnkgYW5kL29yIGNh
bGxpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMgdGhlIHdheSBzZXRQYXRoIGRvZXMuCisgICAg
Ly8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2CisKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkLgotICAgIC8vIFVzdWFsbHksIHRoZSBxdWVy
eSBpcyBlbmNvZGVkIHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBk
b24ndCBoYXZlCi0gICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9u
LgotICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3NgotICAgIGlmICgocXVlcnkuaXNF
bXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKSB7Ci0gICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
cGF0aEVuZCksICI/IiwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1
ZXJ5RW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChtX3BhdGhFbmQpLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0K
KyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fcGF0aEVuZCksCisgICAgICAgICghbmV3UXVlcnkuc3RhcnRzV2l0aCgnPycpICYmICFuZXdR
dWVyeS5pc051bGwoKSkgPyAiPyIgOiAiIiwKKyAgICAgICAgbmV3UXVlcnksCisgICAgICAgIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKQorICAgICkpOworfQogCitz
dGF0aWMgU3RyaW5nIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhTdHJpbmdWaWV3IHBhdGgpCit7
CisgICAgYXV0byBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIgY2hhcmFjdGVy
KSB7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3RlciA9PSAnIyc7
CisgICAgfTsKKyAgICByZXR1cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aC50b1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCksIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbik7CiB9CiAKLXZvaWQg
VVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKK3ZvaWQgVVJMOjpzZXRQYXRoKFN0cmluZ1Zp
ZXcgcGF0aCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcv
JykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChwYXRoU3RhcnQoKSksCisgICAgICAgIHBh
dGguc3RhcnRzV2l0aCgnLycpID8gIiIgOiAiLyIsCisgICAgICAgIGVzY2FwZVBhdGhXaXRob3V0
Q29weWluZyhwYXRoKSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1f
cGF0aEVuZCkKKyAgICApKTsKK30KIAotICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWdu
ID0gW10gKFVDaGFyIGNoYXJhY3RlcikgewotICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/
JyB8fCBjaGFyYWN0ZXIgPT0gJyMnOwotICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
KSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWdu
KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKK1N0cmluZ1ZpZXcgVVJMOjpzdHJpbmdXaXRob3V0UXVlcnlP
ckZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAg
ICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5s
ZWZ0KHBhdGhFbmQoKSk7CiB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK1N0cmluZ1ZpZXcgVVJMOjpzdHJpbmdXaXRo
b3V0RnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9
IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5
TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVy
eUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ld
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIGlmICgh
bV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChtX3F1ZXJ5RW5kKTsKIH0KIAotYm9vbCBlcXVhbElnbm9yaW5n
UXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK2Jvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsK
LSAgICBpZiAoYS5wYXRoRW5kKCkgIT0gYi5wYXRoRW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB1bnNpZ25lZCBwYXRoRW5kID0gYS5wYXRoRW5kKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhdGhFbmQ7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAh
PSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gYS5zdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVy
KCkgPT0gYi5zdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CiAKIGJvb2wgcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQpAQCAt
NzI1LDI1ICs3MDIsMTAgQEAgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3Qg
VVJMJiBhLCBjb25zdCBVUkwmIGIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgaG9zdHNB
cmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK2Jvb2wgVVJMOjppc01hdGNoaW5n
RG9tYWluKFN0cmluZ1ZpZXcgZG9tYWluKSBjb25zdAogewotICAgIHVuc2lnbmVkIGhvc3RTdGFy
dEEgPSBhLmhvc3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RF
bmQgLSBob3N0U3RhcnRBOwotICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgp
OwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBob3N0U3RhcnRCOwot
ICAgIGlmIChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAg
ICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0
YXJ0QiArIGldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOwotfQorICAgIC8vIEZJWE1FOiBDb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhbiBhcHBy
b3ByaWF0ZSBwbGFjZSBpbiBXZWJDb3JlJ3MgcGx1Zy1pbiBjb2RlOyBkb24ndCB3YW50IHBlb3Bs
ZSB0ZW1wdGVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW4uCiAKLWJvb2wg
VVJMOjppc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAotewogICAg
IGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NjAsNiArNzIyLDcg
QEAgYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
CiAgICAgcmV0dXJuIGhvc3QubGVuZ3RoKCkgPT0gZG9tYWluLmxlbmd0aCgpIHx8IGhvc3RbaG9z
dC5sZW5ndGgoKSAtIGRvbWFpbi5sZW5ndGgoKSAtIDFdID09ICcuJzsKIH0KIAorLy8gRklYTUU6
IFJlbmFtZSB0aGlzIHNvIGl0J3MgY2xlYXIgdGhhdCBpdCBkb2VzIHRoZSBhcHByb3ByaWF0ZSBl
c2NhcGluZyBmb3IgVVJMIHF1ZXJ5IGZpZWxkIHZhbHVlcy4KIFN0cmluZyBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgcmV0dXJuIHBlcmNl
bnRFbmNvZGVDaGFyYWN0ZXJzKGlucHV0LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNl
dCk7CkBAIC03ODEsNDEgKzc0NCwzNCBAQCB2b2lkIFVSTDo6Y29weVRvQnVmZmVyKFZlY3Rvcjxj
aGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0CiAgICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIu
ZGF0YSgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1ib29sIHByb3Rv
Y29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3N0YXRpYyBib29sIHByb3RvY29sSXNJbnRlcm5hbChTdHJpbmdWaWV3IHN0cmluZywgY29u
c3QgY2hhciogcHJvdG9jb2wpCiB7Ci0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBt
YWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChTdHJp
bmdWaWV3IHsgcHJvdG9jb2wgfSk7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wp
OwogICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBq
ID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2Ug
YW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRU
cmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlzTGVh
ZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgot
ICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09
ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGF1dG8gY29kZVVuaXQgOiBz
dHJpbmcuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgaWYgKGlzTGVhZGluZykgeworICAgICAgICAg
ICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAg
ICAgICAgICAgIGlmIChzaG91bGRUcmltRnJvbVVSTChjb2RlVW5pdCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgdGFicyBhbmQgbmV3bGluZXMgZXZlbiBsYXRlciBp
biB0aGUgcHJvdG9jb2wuCisgICAgICAgICAgICBpZiAoY29kZVVuaXQgPT0gJ1x0JyB8fCBjb2Rl
VW5pdCA9PSAnXHInIHx8IGNvZGVVbml0ID09ICdcbicpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoIXByb3RvY29sW2pdKQotICAgICAgICAgICAg
cmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgY2hhciBleHBlY3RlZENoYXJhY3Rl
ciA9ICpwcm90b2NvbCsrOworICAgICAgICBpZiAoIWV4cGVjdGVkQ2hhcmFjdGVyKQorICAgICAg
ICAgICAgcmV0dXJuIGNvZGVVbml0ID09ICc6JzsKKyAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKGNvZGVVbml0LCBleHBlY3RlZENoYXJhY3RlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgKytqOwogICAgIH0KLSAgICAKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciog
cHJvdG9jb2wpCi17Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsIHByb3RvY29s
KTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK2Jvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHN0cmlu
ZywgY29uc3QgY2hhciogcHJvdG9jb2wpCiB7Ci0gICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0lu
dGVybmFsKHN0cmluZywgcHJvdG9jb2wpOworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwo
c3RyaW5nLCBwcm90b2NvbCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC04MjksMTEgKzc4NSwx
OCBAQCB2b2lkIFVSTDo6cHJpbnQoKSBjb25zdAogCiBTdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVz
ZUFzUmVmZXJyZXIoKSBjb25zdAogewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVm
ZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7
Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJl
ZmVycmVyLnN0cmluZygpOworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gbV9z
dHJpbmc7CisKKyAgICB1bnNpZ25lZCBlbmQgPSBjcmVkZW50aWFsc0VuZCgpOworCisgICAgaWYg
KG1fdXNlclN0YXJ0ID09IGVuZCAmJiBtX3F1ZXJ5RW5kID09IG1fc3RyaW5nLmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAg
ICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0YXJ0KSwKKyAgICAg
ICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCAtIGVuZCkK
KyAgICApOwogfQogCiBib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdApAQCAtODQ1LDE3ICs4
MDgsMTIgQEAgYm9vbCBVUkw6OmlzTG9jYWxGaWxlKCkgY29uc3QKICAgICByZXR1cm4gcHJvdG9j
b2xJcygiZmlsZSIpOwogfQogCi1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgdXJsKQorYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHN0cmluZykKIHsK
LSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKKyAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgImphdmFzY3JpcHQiKTsKIH0KIAotYm9v
bCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4gcHJv
dG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElz
SW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQorYm9vbCBwcm90b2NvbElzSW5IVFRQRmFt
aWx5KFN0cmluZ1ZpZXcgdXJsKQogewogICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwog
ICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmpl
Y3QuCkBAIC04NjksMTMgKzgyNywxMyBAQCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29u
c3QgU3RyaW5nJiB1cmwpCiAKIGNvbnN0IFVSTCYgYWJvdXRCbGFua1VSTCgpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFu
ayIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgp
LCAiYWJvdXQ6YmxhbmsiX3MpOwogICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKIH0KIAogY29u
c3QgVVJMJiBhYm91dFNyY0RvY1VSTCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TD4gc3RhdGljQWJvdXRTcmNEb2NVUkwoVVJMKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNBYm91dFNyY0RvY1VSTChVUkwoKSwgImFib3V0
OnNyY2RvYyJfcyk7CiAgICAgcmV0dXJuIHN0YXRpY0Fib3V0U3JjRG9jVVJMOwogfQogCkBAIC05
NjQsNyArOTIyLDYgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICAgICAg
NjY2OSwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDY2NzksIC8v
IEFsdGVybmF0ZSBJUkMgU1NMIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgNjY5NywgLy8gSVJD
K1NTTCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIGludmFsaWRQb3J0TnVtYmVyLCAvLyBVc2Vk
IHRvIGJsb2NrIGFsbCBpbnZhbGlkIHBvcnQgbnVtYmVycwogICAgIH07CiAKICAgICAvLyBJZiB0
aGUgcG9ydCBpcyBub3QgaW4gdGhlIGJsb2NrZWQgcG9ydCBsaXN0LCBhbGxvdyBpdC4KQEAgLTk4
MywxNSArOTQwLDE1IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCkKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCkKIHsK
LSAgICBBU1NFUlQocHJvdG9jb2xJc0ludGVybmFsKHVybCwgImRhdGEiKSk7CisgICAgQVNTRVJU
KHByb3RvY29sSXNJbnRlcm5hbChkYXRhVVJMLCAiZGF0YSIpKTsKIAogICAgIC8vIEZJWE1FOiBX
aGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwg
YnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBi
cmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJl
Y3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7CisgICAgLy8gQ3VycmVudGx5
IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlOyBzaG91
bGQgYWRkIGEgdGVzdC4KKyAgICBhdXRvIGluZGV4ID0gZGF0YVVSTC5maW5kKCc7JywgNSk7CiAg
ICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywg
NSk7CisgICAgICAgIGluZGV4ID0gZGF0YVVSTC5maW5kKCcsJywgNSk7CiAgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1l
bnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcg
dGV4dC9wbGFpbi4KICAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkg
c3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBh
dCB0aGlzIHRpbWUuCkBAIC0xMDAwLDI1ICs5NTcsNDUgQEAgU3RyaW5nIG1pbWVUeXBlRnJvbURh
dGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKGluZGV4ID09IDUpCiAgICAgICAgIHJl
dHVybiAidGV4dC9wbGFpbiJfczsKICAgICBBU1NFUlQoaW5kZXggPj0gNSk7Ci0gICAgcmV0dXJu
IHVybC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwor
ICAgIHJldHVybiBkYXRhVVJMLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiB9CiAKIFN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgp
IDw9IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOworICAgIGlmIChtX3N0cmluZy5s
ZW5ndGgoKSA8PSBsZW5ndGgpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVy
biBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobGVuZ3RoIC8gMiAtIDEpLCAi
Li4uIiwgU3RyaW5nVmlldyhtX3N0cmluZykucmlnaHQobGVuZ3RoIC8gMiAtIDIpKTsKK30KKwor
VVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyByZWxhdGl2ZVBhcnQp
Cit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygid2Via2l0LWZha2UtdXJsOi8v
IiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFydCkpOworfQog
Ci0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJp
bmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7CitVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3Ry
aW5nKAorICAgICAgICAiZmlsZTovLyIsCisgICAgICAgIHBhdGguc3RhcnRzV2l0aCgnLycpID8g
IiIgOiAiLyIsCisgICAgICAgIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhwYXRoKQorICAgICkp
OwogfQogCi1VUkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmIHJl
bGF0aXZlUGFydCkKK1N0cmluZ1ZpZXcgVVJMOjpxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJr
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCAid2Via2l0LWZha2UtdXJsOi8vIiAr
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcvJyArIHJlbGF0aXZlUGFydCk7CisgICAg
aWYgKG1fcXVlcnlFbmQgPD0gbV9wYXRoRW5kKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQsIG1fcXVlcnlF
bmQgLSBtX3BhdGhFbmQpOwogfQogCi1VUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlm
aWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgp
LCAiZmlsZTovLy8iICsgZmlsZVBhdGgpOworICAgIGlmICghbV9pc1ZhbGlkIHx8IG1fc3RyaW5n
Lmxlbmd0aCgpIDw9IG1fcXVlcnlFbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1
cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpOwogfQogCiBib29s
IFVSTDo6aXNBYm91dEJsYW5rKCkgY29uc3QKQEAgLTEwMzgsNiArMTAxNSw3IEBAIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKFNPVVApCisKIHN0YXRpYyBib29sIGlzSVB2NEFkZHJl
c3MoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBjb3VudCA9IDA7CkBAIC0xMTI0LDEx
ICsxMTAyLDkgQEAgc3RhdGljIGJvb2wgaXNJUHY2QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykK
IAogYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCiB7Ci0gICAgaWYg
KGhvc3QuZmluZCgnOicpID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gaXNJUHY0QWRkcmVz
cyhob3N0KTsKLQotICAgIHJldHVybiBpc0lQdjZBZGRyZXNzKGhvc3QpOworICAgIHJldHVybiBo
b3N0LmNvbnRhaW5zKCc6JykgPyBpc0lQdjZBZGRyZXNzKGhvc3QpIDogaXNJUHY0QWRkcmVzcyho
b3N0KTsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRleCA5NWFmNGEzYjQ3
ZTA4ODdmNWEyYWVhMDFhMTEzNzliYmJkMTFjNmZmLi40MmVjMWZiOWVjMzdlYjgzMTNkNjkzMDE5
NTdhNDUxOTA2MTBiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9VUkwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw0NyArMzgsMzkgQEAgT0JKQ19DTEFTUyBOU1VSTDsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV1RGIHsKKwogY2xhc3MgVGV4dFN0cmVhbTsKIAogY2xhc3MgVVJMVGV4dEVuY29k
aW5nIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQ
YXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2Rp
bmcoKSB7IH07Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9
CiB9OwogCi1zdHJ1Y3QgVVJMSGFzaDsKLQotY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7
CitjbGFzcyBVUkwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgogICAgIFVS
TCgpIHsgaW52YWxpZGF0ZSgpOyB9CiAKLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7
IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3Ry
aW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IFVSTChIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQog
CiAgICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVS
TC4gSWYgcHJvdmlkZWQsIHRoZQogICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVu
Y29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVs
bCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJw
cmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJM
IGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4g
SW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBi
YXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJh
c2UgVVJMcy4KLSAgICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisgICAgLy8gbnVsbCBvciBlbXB0
eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMg
YWJzb2x1dGUuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTChjb25zdCBVUkwmIGJhc2UsIGNv
bnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsK
IAotICAgIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7
Ci0gICAgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQ
YXJ0KFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZpbGVV
UkxXaXRoRmlsZVN5c3RlbVBhdGgoU3RyaW5nVmlldyk7CiAKLSAgICBTdHJpbmcgc3RyaXBwZWRG
b3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0
aW9ucyBzaG91bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ug
b2YgbnVsbCBvciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUK
LSAgICAvLyBzdGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKIAogICAgIC8vIE1h
a2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9u
IGFub3RoZXIKICAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwg
b2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCiAgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRv
IGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0g
ICAgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAtODksMTIyICs4MSwxMjYgQEAgcHVibGljOgogICAgIGJv
b2wgY2FuU2V0SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0K
IAogICAgIGJvb2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNh
bCgpOyB9Ci0gICAgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcm
IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3Ro
ID0gMTAyNCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgU3RyaW5nVmlldyBwcm90
b2NvbCgpIGNvbnN0OwotICAgIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIE9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgdXNl
cigpIGNvbnN0OwotICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmlldyBwYXRo
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OwotICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgLy8gVW5saWtl
IHVzZXIoKSBhbmQgcGFzc3dvcmQoKSwgZW5jb2RlZFVzZXIoKSBhbmQgZW5jb2RlZFBhc3N3b3Jk
KCkgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3Nh
cnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3Qg
ZW5jb2RlICclJyBjaGFyYWN0ZXJzLgorCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1Zp
ZXcgcHJvdG9jb2woKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBl
bmNvZGVkVXNlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVu
Y29kZWRQYXNzd29yZCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3
IGhvc3QoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+
IHBvcnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwYXRoKCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgbGFzdFBhdGhDb21wb25l
bnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeSgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcXVlcnlXaXRo
TGVhZGluZ1F1ZXN0aW9uTWFyaygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRRdWVyeU9yRnJh
Z21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBzdHJpbmdXaXRob3V0RnJh
Z21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB1
c2VyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXNzd29yZCgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25z
dDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkg
Y29uc3Q7CiAKLSAgICBib29sIGhhc1VzZXJuYW1lKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXNz
d29yZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsKLSAgICBib29sIGhhc0Zy
YWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsK
ICAgICBib29sIGhhc1BhdGgoKSBjb25zdDsKIAotICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBh
c3MoKSwgdGhlc2UgZnVuY3Rpb25zIGRvbid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2VzLgotICAg
IC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywgYmVjYXVz
ZSBlbmNvZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KLSAgICBTdHJpbmcgZW5j
b2RlZFVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgZW5jb2RlZFBhc3MoKSBjb25zdDsKLQotICAg
IFN0cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKLQotICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0OworICAgIGJvb2wgaGFzQ3JlZGVudGlhbHMoKSBjb25zdDsKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0
aGUgbnVsbC0KICAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQg
bXVzdCBiZSBsb3dlci1jYXNlLgotICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29u
c3Q7Ci0gICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgYm9v
bCBwcm90b2NvbElzQmxvYigpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImJsb2IiKTsgfQog
ICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRh
Iik7IH0KLSAgICBib29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwogICAgIGJvb2wg
Y2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQog
Ci0gICAgYm9vbCBpc0Fib3V0QmxhbmsoKSBjb25zdDsKLSAgICBib29sIGlzQWJvdXRTcmNEb2Mo
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Fib3V0QmxhbmsoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CiAK
LSAgICBib29sIGlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3KSBjb25zdDsK
IAotICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0
KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldFByb3RvY29s
KFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhvc3QoU3RyaW5n
Vmlldyk7CiAKLSAgICB2b2lkIHJlbW92ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWdu
ZWQgc2hvcnQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBvcnQoT3B0aW9uYWw8
dWludDE2X3Q+KTsKIAogICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29t
OjgwMDAiLgotICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCByZW1vdmVIb3N0QW5kUG9ydCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEhv
c3RBbmRQb3J0KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRVc2VyKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNldFBhc3N3b3JkKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJl
bW92ZUNyZWRlbnRpYWxzKCk7CiAKLSAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZv
ciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAotICAgIC8vIHdpbGwgYmUg
Ii8iLgotICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKyAgICAvLyBJZiB5b3UgcGFz
cyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0
aCB3aWxsIGJlICIvIi4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXRoKFN0cmlu
Z1ZpZXcpOwogCiAgICAgLy8gVGhlIHF1ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFy
aywgb3IsIGlmIG5vdCwgb25lIHdpbGwgYmUgYWRkZWQKICAgICAvLyBmb3IgeW91LiBTZXR0aW5n
IHRoZSBxdWVyeSB0byB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCiAg
ICAgLy8gVVJMICh3aXRoIG5vdGhpbmcgYWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBh
c3MgYSBudWxsIHN0cmluZy4KLSAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFF1ZXJ5KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9p
ZCBzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7Ci0gICAgdm9pZCByZW1vdmVGcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRGcmFnbWVu
dElkZW50aWZpZXIoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlUXVlcnlB
bmRGcmFnbWVudElkZW50aWZpZXIoKTsKIAotICAgIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVz
cyhTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaG9zdElz
SVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwogCiAgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhBZnRlckxh
c3RTbGFzaCgpIGNvbnN0OwogCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsg
cmV0dXJuIHN0cmluZygpOyB9CisgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nOyB9CisgICAgb3BlcmF0b3IgU3RyaW5nVmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9CiAKICNpZiBVU0UoQ0YpCi0gICAgVVJMKENGVVJMUmVmKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFVSTChDRlVSTFJlZik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxD
RlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgVVNFKEZPVU5EQVRJ
T04pCi0gICAgVVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFVSTChOU1VSTCAqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0OwogI2VuZGlmCisKICNpZmRlZiBfX09CSkNfXwotICAg
IG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisgICAgb3Bl
cmF0b3IgTlNTdHJpbmcgKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAog
I2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHByaW50KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHRl
bXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8VVJMPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBVUkwmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8VVJMPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBV
UkxQYXJzZXI7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgc3RhdGljIGJvb2wgcHJvdG9j
b2xJcyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIs
IDUxMj4mIGJ1ZmZlcikgY29uc3Q7CiAgICAgdW5zaWduZWQgaG9zdFN0YXJ0KCkgY29uc3Q7Cisg
ICAgdW5zaWduZWQgY3JlZGVudGlhbHNFbmQoKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAgICAgZnJpZW5kIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9z
dHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogICAgIFN0cmluZyBtX3N0cmlu
ZzsKIApAQCAtMjI5LDQ5ICsyMjUsMjcgQEAgcHJpdmF0ZToKIAogc3RhdGljX2Fzc2VydChzaXpl
b2YoVVJMKSA9PSBzaXplb2YoU3RyaW5nKSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNo
b3VsZCBzdGF5IHNtYWxsIik7CiAKLXRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPgotdm9pZCBVUkw6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9zdHJp
bmc7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotYm9vbCBVUkw6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBVUkwmIHVybCkKLXsKLSAgICBhdXRvIG9wdGlvbmFsVVJMID0gVVJMOjpk
ZWNvZGUoZGVjb2Rlcik7Ci0gICAgaWYgKCFvcHRpb25hbFVSTCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHVybCA9IFdURk1vdmUoKm9wdGlvbmFsVVJMKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Ci0gICAg
ZGVjb2RlciA+PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7Ci19Citi
b29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yPT0o
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5n
JiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
Citib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJh
dG9yIT0oY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVu
dChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAK
IFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwoKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBVUkwmIGFib3V0U3JjRG9jVVJMKCk7CiAKIC8vIEZ1bmN0aW9ucyB0
byBkbyBVUkwgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLgogLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMg
dGhhdCBhcmVuJ3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KLS8vIFRoZXNlIGFyZSBhbHNvIGRp
ZmZlcmVudCBmcm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJl
IHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBl
c3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90
IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28g
ZGlmZmVyZW50IGZyb20gdGhlIFdURjo6VVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3Qg
cmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KKy8vIFRo
aXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMg
YXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFdURjo6VVJMLgogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBj
aGFyKiBwcm90b2NvbCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNj
cmlwdChjb25zdCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2Nv
bElzKFN0cmluZ1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7Ci1XVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJs
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5n
VmlldyB1cmwpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmll
dyBwcm90b2NvbCk7CkBAIC0yODAsMTQgKzI1NCw0MCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxk
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xG
b3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3Ry
aW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoU3Ry
aW5nVmlldyBkYXRhVVJMKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZy
b21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKLQotLy8gRklYTUU6IFRoaXMgaXMgYSB3cm9u
ZyBjb25jZXB0IHRvIGV4cG9zZSwgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVy
ZW50IGVzY2FwaW5nIHBlciB0aGUgVVJMIFN0YW5kYXJkLgorLy8gRklYTUU6IFRoaXMgbmVlZHMg
YSBuZXcsIG1vcmUgc3BlY2lmaWMgbmFtZS4gVGhlIGdlbmVyYWwgdGhpbmcgbmFtZWQgaGVyZSBj
YW4ndCBiZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHksIHNpbmNlIGRpZmZlcmVudCBwYXJ0cyBvZiBh
IFVSTCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZy4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKIAotLy8gSW5saW5l
cy4KK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3Rl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworLy8gRnVuY3Rpb24gdGVtcGxhdGUg
YW5kIGlubGluZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KKwordGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBVUkw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbV9zdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wg
VVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRp
b25hbFVSTCA9IGRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxVUkw+
IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBz
dHJpbmc7CisgICAgZGVjb2RlciA+PiBzdHJpbmc7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgV1RGTW92ZSgqc3Ry
aW5nKSk7Cit9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBV
UkwmIGIpCiB7CkBAIC0zMTksOCArMzE5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCiAgICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsK
IH0KIAotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMg
c28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBv
ZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KK2lubGluZSBVUkw6OlVSTChI
YXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgIDogbV9zdHJpbmcoSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKQoreworfQogCiBpbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0CiB7CkBAIC0z
MzksMTcgKzM0MSwxMiBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAogCiBpbmxp
bmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0g
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworICAgIHJldHVybiBtX3BhdGhFbmQgPiBwYXRoU3Rh
cnQoKTsKIH0KIAotaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0CitpbmxpbmUg
Ym9vbCBVUkw6Omhhc0NyZWRlbnRpYWxzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VyRW5k
ID4gbV91c2VyU3RhcnQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25z
dAotewotICAgIHJldHVybiBtX3Bhc3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworICAgIHJl
dHVybiBtX3Bhc3N3b3JkRW5kID4gbV91c2VyU3RhcnQ7CiB9CiAKIGlubGluZSBib29sIFVSTDo6
aGFzUXVlcnkoKSBjb25zdApAQCAtMzU3LDcgKzM1NCw3IEBAIGlubGluZSBib29sIFVSTDo6aGFz
UXVlcnkoKSBjb25zdAogICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwogfQogCi1p
bmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1f
c3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKIH0KQEAgLTM4MiwxMSArMzc5LDYgQEAgaW5s
aW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKICAgICByZXR1cm4g
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiB9CiAKLVdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFVSTD47Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJh
aXRzPFVSTD47Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFib3V0QmxhbmtV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKaW5kZXggMDZiMGFlYzY0ZDEwMjVkNTQzZmY5
ZGMzZDZhMWE3ZDJlNjEwYzg1NC4uZmEwOGM5Zjg4MzY1OTJiNmFjMDUzYzczZmE4NjdlNWUwMWJh
YjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29s
IGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKLSAgICBpZiAodXJsLmhh
c1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAgaWYgKHVybC5oYXNDcmVkZW50
aWFscygpKQogICAgICAgICByZXR1cm4gcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwg
VVJMIHsgY2ZVUkwgfSk7CiAKICAgICBVUkxDaGFyQnVmZmVyIGJ5dGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5jcHAKaW5kZXggZDEzYmI2YzkxZjllYmNhMzMwZGU1MWRkMDVjMjdlMDU5NmFj
YTJkYi4uMjliNDg4NTAxNmJkMjg3ZDFjZmU5NDJjNjU0OGU1NjViZjg4MzBiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zNSw2ICszNSw3IEBAIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewpAQCAtNzQsNiArNzUsMTEgQEAgYm9vbCBTdHJpbmdWaWV3OjpzdGFydHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYgcHJlZml4KSBjb25zdAogICAgIHJldHVy
biA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOwogfQog
Citib29sIFN0cmluZ1ZpZXc6OmVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9sZW5ndGggJiYgKCp0aGlzKVttX2xlbmd0aCAtIDFdID09IGNoYXJhY3RlcjsK
K30KKwogYm9vbCBTdHJpbmdWaWV3OjplbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JiBzdWZmaXgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKQEAg
LTMwNiw2ICszMTIsMzEgQEAgU3RyaW5nIG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAgICAgcmV0dXJuIHJlc3VsdC51bmRlcmx5aW5nU3RyaW5nOwogfQogCisvLyBGSVhNRTog
U2hvdWxkIHRoaXMgYmUgbmFtZWQgcGFyc2VOdW1iZXI8dWludDE2X3Q+IGluc3RlYWQ/CisvLyBG
SVhNRTogU2hvdWxkIHdlIHJlcGxhY2UgdGhlIHRvSW50IGZhbWlseSBvZiBmdW5jdGlvbnMgd2l0
aCB0aGlzIHN0eWxlPworT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcg
c3RyaW5nKQoreworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBhdXRvIG51bWJlciA9IHRvSW50
ZWdyYWxUeXBlPHVpbnQxNl90PihzdHJpbmcsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbnVtYmVyOworfQorCitib29sIGVxdWFs
SWdub3JpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQoreworICAgIC8vIEZJ
WE1FOiBUaGUgZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldykgZnVuY3Rpb24gYWxyZWFkeSBp
Z25vcmVzIG51bGxpdHkuCisgICAgLy8gVG8gZml0IGluIHdpdGggdGhlIGJlaGF2aW9yIG9mIG91
ciBvdGhlciBzdHJpbmcgY2xhc3Nlcywgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgLy8gY2hhbmdp
bmcgdGhhdCBiZWhhdmlvciBzbyB0aGF0IGEgbnVsbCBTdHJpbmdWaWV3IGlzIG5vdCBlcXVhbCB0
byBhbiBlbXB0eQorICAgIC8vIFN0cmluZ1ZpZXcsIGJ1dCBuZWVkIHRvIHRlc3Qgb3IgYXVkaXQg
aW4gY2FzZSBjb2RlIGRlcGVuZHMgb24gY3VycmVudCBiZWhhdmlvci4KKyAgICByZXR1cm4gZXF1
YWwoYSwgYik7Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoY29uc3QgY2hhciogc3Ry
aW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisK
ICNpZiBDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291
bnQgbWFudWFsbHkgc28gVW5kZXJseWluZ1N0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmlu
ZWQgaW4gdGhlIGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNmNmZWJkYmFi
N2VhNDU4ZTFkOTY4MGQxMzE2MTkxNDhmMjE3OWYwMy4uNDZhZjUyZjUwYmVkMWNjOWM4YjJjYTQ1
NTZkMWQ1MGY2OTg2NzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEzNyw4ICsx
MzcsNyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZp
bmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Owog
CiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CiAKQEAgLTE1MSw2ICsxNTAsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhVQ2hhcikgY29uc3Q7CiAgICAgYm9vbCBjb250
YWlucyhDb2RlVW5pdE1hdGNoRnVuY3Rpb24pIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoU3Ry
aW5nVmlldyBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nLCAwKSAhPSBub3RGb3Vu
ZDsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBj
b25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdDsKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGVuZHNXaXRoKFVDaGFyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRz
V2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAK
QEAgLTE5MSw2ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmlu
Zyhjb25zdCBTdHJpbmdJbXBsKikgeyB9CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNv
bnN0IFN0cmluZ1ZpZXcmKSB7IH0KICNlbmRpZgorCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAg
Y29uc3Qgdm9pZCogbV9jaGFyYWN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMjEwLDYgKzIxMiw4IEBA
IGJvb2wgZXF1YWwoU3RyaW5nVmlldywgY29uc3QgTENoYXIqIGIpOwogYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIqKTsKIAorV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CisKIHRl
bXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdWaWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0
ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdWaWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3Ro
XSk7CiAKQEAgLTIzNCw2ICsyMzgsOCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dp
dGhVbmRlcmx5aW5nU3RyaW5nIG5vcm1hbGl6ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgbm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmKTsKIAorV1RGX0VY
UE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsK
KwogfQogCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCmluZGV4IGYxMmFkMzZkMTllN2ZkNTRiNWNjYTEyNmY3MjVkMDAwNjQzODQ1ZmUu
LmFmYzkyZjU3NzY2NjIyOTJmMGNlMDY0NjI0ZTY4ZjM4NDY3MjI1ZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAKQEAgLTkyNCwxMDIgKzkyNCwxMDIgQEAgc3RhdGljIHVuc2lnbmVkIGxl
bmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXpl
X3QgbGUKIAogaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnQsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJh
Y3RlcnNUb0ludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihk
YXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50Pihk
YXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0
cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNl
KQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxl
bmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0
YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJp
Y3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkK
IHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEs
IGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7
Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVu
Z3RoLCBvaywgYmFzZSk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29u
c3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0
IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0
IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgs
IG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwg
bGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CiB9CiAKIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihk
YXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsK
KyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVy
c1RvVUludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0g
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZD
aGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJl
dHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFy
YWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykK
IHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3Rl
cnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwg
bGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTAp
OworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJh
Y3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0
X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0
YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVp
bnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hh
cj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwog
fQogCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRf
dCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwg
bGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRh
dGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ss
IDEwKTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50cHRyX3QsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0
cl90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0
aCksIG9rLCAxMCk7CiB9CiAKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
PFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlw
ZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRh
LCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2Fs
bG93VHJhaWxpbmdKdW5rLCBBbGxvd1RyYWlsaW5nSnVuayB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCBiMGRiNTdhODM3MGNlMDMw
Mjg2NGZlMDgyYjQzYTI0ZWIyOGI5ZGY5Li43ODJiMjYyZjQ4NzQxOTM4MmE3NDUwMTAzMjNlMzM1
MjJhNzU2NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcApAQCAtNzIsMTAgKzcyLDggQEAgc3RhdGljIGlubGluZSBib29sIG1hdGNoVVJM
cyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgY2FjaGVkVVIKICAg
ICBVUkwgY2FjaGVkUmVxdWVzdFVSTCA9IGNhY2hlZFVSTDsKIAogICAgIGlmIChvcHRpb25zLmln
bm9yZVNlYXJjaCkgewotICAgICAgICBpZiAocmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAgICAg
ICAgICAgcmVxdWVzdFVSTC5zZXRRdWVyeSh7IH0pOwotICAgICAgICBpZiAoY2FjaGVkUmVxdWVz
dFVSTC5oYXNRdWVyeSgpKQotICAgICAgICAgICAgY2FjaGVkUmVxdWVzdFVSTC5zZXRRdWVyeSh7
IH0pOworICAgICAgICByZXF1ZXN0VVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgICAgIGNhY2hlZFJl
cXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsKICAgICB9CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIocmVxdWVzdFVSTCwgY2FjaGVkUmVxdWVzdFVSTCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggM2E1NTIx
OGZmYmQ3MGEwZjExNTY2MTYwYWY5MzkwZWJiZDE5MWQ3My4uZGZiNzMzZTkzMDBkYTJhZTFlNjk1
ZTQxMmM5NzMyMDA4YWM2ZTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmNwcApAQCAtMTYwLDkgKzE2MCwxMCBAQCBzdGF0aWMgaW5saW5lIE9wdGlv
bmFsPEV4Y2VwdGlvbj4gcHJvY2Vzc0ludmFsaWRTaWduYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgYwogRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChjb25z
dCBTdHJpbmcmIHVybCwgSW5pdCYmIGluaXQpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7Ci0gICAgLy8gRklYTUU6IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29y
aXRobSBhY2NvcmRpbmcgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1w
YXJzZXIuCisKKyAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGht
IGFjY29yZGluZyB0byBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBh
cnNlci4KICAgICBVUkwgcmVxdWVzdFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29t
cGxldGVVUkwodXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpGb3JjZVVURjg6Olllcyk7Ci0g
ICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCAhcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0
eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFyZXF1ZXN0VVJM
LmlzVmFsaWQoKSB8fCByZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVUkwgaXMgbm90IHZhbGlkIG9yIGNvbnRhaW5zIHVz
ZXIgY3JlZGVudGlhbHMuIl9zIH07CiAKICAgICBtX29wdGlvbnMubW9kZSA9IE1vZGU6OkNvcnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRl
eCA2MDlhYThhMjg4ZmYzNTgxOWU2NzNjZjU2N2RjYjUyMGM2M2FiNDg5Li4wNWY0OWY4ODkzNmUw
OGJkZTA1YmU0ZWI2NmZhOWMxNTg4ZmNiY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBFeGNlcHRpb25P
cjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmCiAgICAgVVJMIHJlcXVlc3RVUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVy
bCk7CiAgICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygiUmVkaXJlY3Rpb24gVVJMICciLCByZXF1ZXN0
VVJMLnN0cmluZygpLCAiJyBpcyBpbnZhbGlkIikgfTsKLSAgICBpZiAoIXJlcXVlc3RVUkwudXNl
cigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmIChy
ZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJSZWRpcmVjdGlvbiBVUkwgY29udGFpbnMgY3JlZGVudGlhbHMiX3MgfTsKICAg
ICBpZiAoIVJlc291cmNlUmVzcG9uc2U6OmlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKHN0YXR1cykp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCBtYWtlU3RyaW5nKCJTdGF0
dXMgY29kZSAiLCBzdGF0dXMsICJpcyBub3QgYSByZWRpcmVjdGlvbiBzdGF0dXMgY29kZSIpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlcXVlc3QuY3BwCmluZGV4IGNhYWRmODdiMGI1NzNlMzEyZTllM2UwMzlkNmRjNmE4OGZj
NTljY2EuLmU3MTM1YmVjNjAzZjliNTNhOWQyMmE0NDNhZjM1ODIwZjFjYWNiOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
cXVlc3QuY3BwCkBAIC0yMjAsMTMgKzIyMCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRTdGFuZGFy
ZGl6ZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiAvLyBo
dHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1tZXRob2QtaWQvI3ZhbGlkYXRpb24KIHN0YXRp
YyBib29sIGlzVmFsaWRVUkxCYXNlZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFVSTCYg
dXJsKQogewotICAgIGlmICghdXJsLnByb3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmICghdXJsLnVzZXIoKS5pc0VtcHR5KCkgfHwgIXVybC5wYXNzKCku
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gdXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXVybC5oYXNDcmVkZW50aWFscygp
OwogfQogCiAvLyBJbXBsZW1lbnRzICJ2YWxpZGF0ZSBhIHBheW1lbnQgbWV0aG9kIGlkZW50aWZp
ZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDRlN2EwMjVlNDc2OTQ5MDExNWVlZjQ5ZWVj
MGE3YWZkZTFlYzNiNTMuLmFiNGQ1ZmJjMTFmOTJkOWFhZTY3YThhNGQ4OGZiMmVjYWVkY2ViZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0xMDMsMTkgKzEwMywxNCBAQCBib29sIFlvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3Qp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1zdGF0aWMgaW5saW5lIFVSTCBjcmVhdGVZb3VU
dWJlVVJMKGNvbnN0IFN0cmluZyYgdmlkZW9JRCwgY29uc3QgU3RyaW5nJiB0aW1lSUQpCitzdGF0
aWMgVVJMIGNyZWF0ZVlvdVR1YmVVUkwoU3RyaW5nVmlldyB2aWRlb0lELCBTdHJpbmdWaWV3IHRp
bWVJRCkKIHsKICAgICBBU1NFUlQoIXZpZGVvSUQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQodmlk
ZW9JRCAhPSAiLyIpOwotICAgIAotICAgIFVSTCByZXN1bHQoVVJMKCksICJ5b3V0dWJlOiIgKyB2
aWRlb0lEKTsKLSAgICBpZiAoIXRpbWVJRC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC5zZXRR
dWVyeSgidD0iICsgdGltZUlEKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBVUkwoVVJMKCksIG1ha2VTdHJpbmcoInlvdXR1YmU6IiwgdmlkZW9JRCwgdGltZUlELmlzRW1w
dHkoKSA/ICIiIDogInQ9IiwgdGltZUlEKSk7CiB9Ci0gICAgCi1zdGF0aWMgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5n
JiBxdWVyeVN0cmluZykKKworc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFs
dWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAg
WW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeURpY3Rpb25hcnk7CiAg
ICAgCkBAIC0xNTUsNyArMTUwLDcgQEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6
S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICAgICAg
Ly8gU2F2ZSB0aGUga2V5IGFuZCB0aGUgdmFsdWUuCiAgICAgICAgIGlmIChrZXlMZW5ndGggJiYg
dmFsdWVMZW5ndGgpIHsKICAgICAgICAgICAgIFN0cmluZyBrZXkgPSBxdWVyeVN0cmluZy5zdWJz
dHJpbmcoa2V5TG9jYXRpb24sIGtleUxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
LSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHF1ZXJ5U3RyaW5nLnN1YnN0cmluZyh2YWx1ZUxv
Y2F0aW9uLCB2YWx1ZUxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeVN0
cmluZy5zdWJzdHJpbmcodmFsdWVMb2NhdGlvbiwgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7CiAg
ICAgICAgICAgICB2YWx1ZS5yZXBsYWNlKCcrJywgJyAnKTsKIAogICAgICAgICAgICAgaWYgKCFr
ZXkuaXNFbXB0eSgpICYmICF2YWx1ZS5pc0VtcHR5KCkpCkBAIC0yMDksMTYgKzIwNCwxNiBAQCBz
dGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29s
JiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogCiAgICAgLy8gU2hvcnQgVVJMIG9mIHRoZSBmb3JtOiBo
dHRwOi8veW91dHUuYmUvdjFkMzAxRAogICAgIGlmIChpc1lvdVR1YmVTaG9ydGVuZWRVUkwpIHsK
LSAgICAgICAgU3RyaW5nIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAg
ICAgYXV0byB2aWRlb0lEID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmICh2
aWRlb0lELmlzRW1wdHkoKSB8fCB2aWRlb0lEID09ICIvIikKICAgICAgICAgICAgIHJldHVybiBV
UkwoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgZW1wdHlTdHJp
bmcoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHsgfSk7CiAg
ICAgfQotICAgIAorCiAgICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKLSAgICBTdHJpbmcgcXVl
cnkgPSB1cmwucXVlcnkoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCk7Ci0gICAgCisgICAgYXV0byBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGF1dG8g
ZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisKICAgICAvLyBPbiB0aGUgWW91
VHViZSBtb2JpbGUgd2ViIGFwcCwgdGhlIHBhdGggYW5kIHF1ZXJ5IHN0cmluZyBhcmUgcHV0IGlu
dG8gdGhlCiAgICAgLy8gZnJhZ21lbnQgc28gdGhhdCBvbmUgd2ViIHBhZ2UgaXMgb25seSBldmVy
IGxvYWRlZCAoc2VlIDxyZGFyOi8vcHJvYmxlbS85NTUwNjM5PikuCiAgICAgaWYgKGlzWW91VHVi
ZU1vYmlsZVdlYkFwcFVSTCkgewpAQCAtMjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vz
c0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0
ZW5lZFVSCiAgICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQ7CiAgICAgICAgICAgICBxdWVyeSA9
IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gU3Ry
aW5nVmlldyhmcmFnbWVudCkuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHBh
dGggPSBmcmFnbWVudC5zdWJzdHJpbmcoMCwgbG9jYXRpb24pOwogICAgICAgICAgICAgcXVlcnkg
PSBmcmFnbWVudC5zdWJzdHJpbmcobG9jYXRpb24gKyAxKTsKICAgICAgICAgfQogICAgICAgICBm
cmFnbWVudCA9IGVtcHR5U3RyaW5nKCk7CkBAIC0yNjAsMTAgKzI1NSwxMCBAQCBzdGF0aWMgVVJM
IHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1
YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvZS8iKSkgewotICAgICAgICBTdHJp
bmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICAgICAg
U3RyaW5nIHZpZGVvSUQ7Ci0gICAgICAgIFN0cmluZyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsK
KyAgICAgICAgU3RyaW5nVmlldyB2aWRlb0lEOworICAgICAgICBTdHJpbmdWaWV3IHBhdGhBZnRl
ckZpcnN0QW1wZXJzYW5kOwogCisgICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgc2l6ZV90IGFtcGVyc2FuZExvY2F0aW9uID0g
bGFzdFBhdGhDb21wb25lbnQuZmluZCgnJicpOwogICAgICAgICBpZiAoYW1wZXJzYW5kTG9jYXRp
b24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBjYXJlIGFib3V0
IHVzZSAmIGluIHBsYWNlIG9mID8gZm9yIHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0ZXIuCkBAIC0y
NzMsMTEgKzI2OCwxMSBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNv
bnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgdmlk
ZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50OwogCiAgICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIG91dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0gcGF0aEFmdGVy
Rmlyc3RBbXBlcnNhbmQ7CisgICAgICAgICAgICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9
IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgfQogICAg
IH0KLSAgICAKKwogICAgIHJldHVybiBVUkwoKTsKIH0KIApAQCAtMjkwLDEzICsyODUsMTMgQEAg
U3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTChjb25zdCBTdHJpbmcm
IHNyY1N0cmluZykKIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxG
cm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgc3JjU3RyaW5n
KQogewogICAgIGJvb2wgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID0gZmFsc2U7Ci0gICAgU3RyaW5n
IHBvc3NpYmxlTWFsZm9ybWVkUXVlcnk7Ci0gICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNzQW5k
Q3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9zc2libGVN
YWxmb3JtZWRRdWVyeSk7CisgICAgU3RyaW5nIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7CisgICAg
VVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91
VHViZVNob3J0ZW5lZFVSTCwgcG9zc2libHlNYWxmb3JtZWRRdWVyeSk7CiAgICAgaWYgKHNyY1VS
TC5pc0VtcHR5KCkgfHwgeW91VHViZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzcmNT
dHJpbmc7CiAKICAgICAvLyBUcmFuc2Zvcm0gdGhlIHlvdXR1YmVVUkwgKHlvdXR1YmU6VmlkZW9J
RCkgdG8gaWZyYW1lIGVtYmVkIHVybCB3aGljaCBoYXMgdGhlIGZvcm1hdDogaHR0cDovL3d3dy55
b3V0dWJlLmNvbS9lbWJlZC9WaWRlb0lECi0gICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgo
KS50b1N0cmluZygpOworICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCk7CiAgICAgY29u
c3QgU3RyaW5nJiB2aWRlb0lEID0geW91VHViZVVSTC5zdHJpbmcoKS5zdWJzdHJpbmcoeW91VHVi
ZVVSTC5wcm90b2NvbCgpLmxlbmd0aCgpICsgMSk7CiAgICAgc2l6ZV90IGxvY2F0aW9uT2ZWaWRl
b0lESW5QYXRoID0gc3JjUGF0aC5maW5kKHZpZGVvSUQpOwogCkBAIC0zMDUsNyArMzAwLDcgQEAg
U3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVS
TChjb25zdCBVUkwmIHNyY1VSTCwgY28KICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoKTsKICAgICAKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVk
IHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25P
ZlBhdGhCZWZvcmVWaWRlb0lEID0gc3JjU3RyaW5nLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwg
bG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVW
aWRlb0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwg
bG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHNyY1BhdGgsICIvd2F0Y2giKSkgewogICAgICAgICAvLyBGcm9tIHRo
ZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvd2F0Y2gvIyF2
PVZpZGVvSUQKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGJlIEFTQ0lJIGNhc2Ut
aW5zZW5zaXRpdmU/CkBAIC0zMTUsMjIgKzMxMCwyMSBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJl
cGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBj
bwogCiAgICAgQVNTRVJUKGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBub3RGb3VuZCk7
CiAKLSAgICBjb25zdCBTdHJpbmcmIHNyY1VSTFByZWZpeCA9IHNyY1N0cmluZy5zdWJzdHJpbmco
MCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKLSAgICBTdHJpbmcgcXVlcnkgPSBzcmNV
UkwucXVlcnkoKTsKKyAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5n
KS5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKKyAgICBhdXRvIHF1
ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisKICAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVyeSwg
dXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQuCiAgICAgaWYgKHF1ZXJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcXVlcnkgPSBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5OworICAg
ICAgICBxdWVyeSA9IHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7CiAKICAgICAvLyBBcHBlbmQgdGhl
IHF1ZXJ5IHN0cmluZyBpZiBpdCBpcyB2YWxpZC4KLSAgICBTdHJpbmdCdWlsZGVyIGZpbmFsVVJM
OwotICAgIGlmIChpc1lvdVR1YmVTaG9ydGVuZWRVUkwpCi0gICAgICAgIGZpbmFsVVJMLmFwcGVu
ZExpdGVyYWwoImh0dHA6Ly93d3cueW91dHViZS5jb20iKTsKLSAgICBlbHNlCi0gICAgICAgIGZp
bmFsVVJMLmFwcGVuZChzcmNVUkxQcmVmaXgpOwotICAgIGZpbmFsVVJMLmFwcGVuZCgiL2VtYmVk
LyIsIHZpZGVvSUQpOwotICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKQotICAgICAgICBmaW5hbFVS
TC5hcHBlbmQoJz8nLCBxdWVyeSk7Ci0gICAgcmV0dXJuIGZpbmFsVVJMLnRvU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA/ICJo
dHRwOi8vd3d3LnlvdXR1YmUuY29tIiA6IHNyY1VSTFByZWZpeCwKKyAgICAgICAgIi9lbWJlZC8i
LAorICAgICAgICB2aWRlb0lELAorICAgICAgICBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiwK
KyAgICAgICAgcXVlcnkKKyAgICApOwogfQogICAgIAogYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OnN1cHBvcnRzVVJMKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA5
OTI2Y2VmOTY3MTU1MzY3MmYyMzc5OWJmMmZlYmZiNWVkMTkwZjc3Li5lMjM3NDk3MTg2M2YxZGE3
MGQ3ZTlmOWM5OTY5ZGQ2YzA2NGY1MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNjQsMTUgKzY0
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUo
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBuYW1lOwotICAgIG5hbWUuYXBw
ZW5kKHVybC5wYXRoKCkpOwotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbmFtZS5h
cHBlbmQoJy8nKTsKLSAgICBpZiAoIXVybC5xdWVyeSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIG5h
bWUuYXBwZW5kKCc/Jyk7Ci0gICAgICAgIG5hbWUuYXBwZW5kKHVybC5xdWVyeSgpKTsKLSAgICB9
Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG5hbWUudG9TdHJpbmcoKTsKKyAgICBhdXRvIHBhdGggPSB1
cmwucGF0aCgpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVN0cmluZygKKyAgICAgICAgcGF0aCwK
KyAgICAgICAgcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiAiIiwKKyAgICAgICAgdXJsLnF1ZXJ5V2l0
aExlYWRpbmdRdWVzdGlvbk1hcmsoKQorICAgICk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0
eSgpKTsKICAgICBBU1NFUlQoIXJlc3VsdC5jb250YWlucygnICcpKTsKICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMzVhNjZiZTU1NWE2M2I0MDhlNmQ4YjViZmIy
YzlkNzI5YTI0YTQyYi4uY2Y2ZGM1ZGFhZWYzNjg5YzlmNjk5NTczNGFkODkxNjEwNGViZTMwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC05NDQsMjYgKzk0NCwyNyBAQCBJbnRQb2ludCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGlja1BvaW50KCkKICAgICAKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBj
b25zdAogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisgICAgYXV0
byBlbGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOworCiAgICAgLy8gUmlnaHQgbm93LCB3ZSBkbyBu
b3Qgc3VwcG9ydCBBUklBIGxpbmtzIGFzIGludGVybmFsIGxpbmsgZWxlbWVudHMKICAgICBpZiAo
IWlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgSFRNTEFuY2hvckVsZW1lbnQmIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVt
ZW50PigqZWxlbWVudCk7Ci0gICAgCi0gICAgVVJMIGxpbmtVUkwgPSBhbmNob3IuaHJlZigpOwot
ICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmll
cigpOworICAgIGF1dG8mIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxl
bWVudCk7CisKKyAgICBhdXRvIGxpbmtVUkwgPSBhbmNob3IuaHJlZigpOworICAgIGF1dG8gZnJh
Z21lbnRJZGVudGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAo
ZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgCisKICAgICAvLyBjaGVjayBpZiBVUkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAg
ICBVUkwgZG9jdW1lbnRVUkwgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOworICAgIGF1
dG8gZG9jdW1lbnRVUkwgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICgh
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIE5vZGUqIGxpbmtlZE5vZGUgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKTsKKworICAg
IGF1dG8gbGlua2VkTm9kZSA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFn
bWVudElkZW50aWZpZXIudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKICAgICBpZiAoIWxpbmtl
ZE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8gVGhlIGVsZW1l
bnQgd2UgZmluZCBtYXkgbm90IGJlIGFjY2Vzc2libGUsIHNvIGZpbmQgdGhlIGZpcnN0IGFjY2Vz
c2libGUgb2JqZWN0LgogICAgIHJldHVybiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShs
aW5rZWROb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk4YzQwZGRjMGQ2MzVl
ZGNjOGZkMTM4YmE1OTMxYWU4MzdjMmViMTIuLmYwYTBkNjE1NzkxMzVkYjIzZmM5MTFiYmU2NTgx
MWY5OWQyOGRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzI0OSw3ICszMjQ5LDcg
QEAgdm9pZCBEb2N1bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV91cmwgPSBu
ZXdVUkw7CiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRJZ25vcmVIb3N0KG1fdXJsKSkK
LSAgICAgICAgbV91cmwucmVtb3ZlSG9zdEFuZFBvcnQoKTsKKyAgICAgICAgbV91cmwuc2V0SG9z
dEFuZFBvcnQoeyB9KTsKIAogICAgIG1fZG9jdW1lbnRVUkkgPSBtX3VybC5zdHJpbmcoKTsKICAg
ICB1cGRhdGVCYXNlVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWQzNWZjZGM2ZjQ2
MjA0Y2RhYjczZjYzNGJmOWUwNTBlMTFjZDQ2Ny4uMWZmMjNlMTYwYjkxOGFiMWNkYzUwZThjM2Y3
NjFjOGQxY2E0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDQ5MSw3ICs0NDkxLDcg
QEAgRWxlbWVudCogRWxlbWVudDo6ZmluZEFuY2hvckVsZW1lbnRGb3JMaW5rKFN0cmluZyYgb3V0
QW5jaG9yTmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAodXJsLmhhc0Zy
YWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJs
LCBkb2N1bWVudC5iYXNlVVJMKCkpKSB7Ci0gICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmZpbmRBbmNo
b3Iob3V0QW5jaG9yTmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IDFkYWE4NTg4ZGY1MzkwYWY4MTMxZTBkYWYwOTdhODlmYjU3N2E1OTEuLjMwZWQ5ZjNmNjFmNDAz
ZGJiOTRlOGUzZTJmNzlmZjg5N2UxNzJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC00NDAsNiArNDQwLDggQEAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gVHJlZVNjb3BlOjplbGVt
ZW50c0Zyb21Qb2ludChjb25zdCBGbG9hdFBvaW50JiBwKQogICAgIHJldHVybiBlbGVtZW50c0Zy
b21Qb2ludChwLngoKSwgcC55KCkpOwogfQogCisvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBj
aGFuZ2UgdGhpcyB0byB0YWtlIGEgU3RyaW5nVmlldywgc2luY2UgdGhhdCdzIHdoYXQgY2FsbGVy
cyBoYXZlCisvLyBhbmQgdGhlcmUgaXMgbm8gcGFydGljdWxhciBhZHZhbnRhZ2UgdG8gYWxyZWFk
eSBoYXZpbmcgYSBTdHJpbmcuCiBFbGVtZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNob3IoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXgg
MGM5ZjlkMGU4OTAzOTcwMDMxMDkwZGIyYjhmMzBkZGRjNDJlOWRkNC4uZmE2MWM1YzYxOWUwNzRh
MWE3NTU1Nzc1YjVmZjVjZjljMWMxOTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMyOCwxMyArMzI4LDEz
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYg
ZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxU
b1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0
byBuYW1lID0gaW1hZ2UuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmFsdEF0dHIpOworICAgICAgICBTdHJpbmcgbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5s
YXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNl
VVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJtZWRpYSIpOwor
ICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mby5hcHBlbmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291
cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlv
bkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21l
bnQpKSB7CkBAIC0zNDgsMTEgKzM0OCwxMSBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAg
ICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3Ry
aW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBTdHJpbmcgbmFtZSA9IFVSTCh7IH0s
IHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJm
aWxlIik7CisgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVu
dEluc2VydGlvbkluZm8uYXBwZW5kKHsgbmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50
SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1p
bWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQogCiAg
ICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBmMmEyZDUyYWM1YWJmNGU0ZjEzMTEz
Y2EyNWQxYjIwYTE3MzhmYTY5Li5iN2QyOWNkNGJhZDk1MGQzYWJkN2RmNzllOTBmNTM0NjRjMzY4
ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yMDIsNyAr
MjAyLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYg
cGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdl
LnVybC51cmwgPSBwYXN0ZWJvYXJkSW1hZ2VVUkw7CiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51
cmwudGl0bGUgPSB0aXRsZTsKICAgICB9Ci0gICAgcGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5h
bWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIHBhc3RlYm9hcmRJ
bWFnZS5zdWdnZXN0ZWROYW1lID0gaW1hZ2VTb3VyY2VVUkwubGFzdFBhdGhDb21wb25lbnQoKS50
b1N0cmluZygpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgp
OwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNv
dXJjZU1JTUVUeXBlKGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgIHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRl
eCBiZGFkOWEwMDU0MjhmMTQ3YTgxNWVjZTAzZTdjMzlhMDdiODlhMmQ1Li5lYWM5YTBiOThjZDcw
MTljYjUyMzUyZmFjN2ExOTI0MGVkYjE0ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0xNzcsMjIgKzE3NywxNyBAQCBTdHJpbmcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGUoKSBjb25zdAogU3RyaW5nIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0CiB7CiAg
ICAgYXV0byB0aXRsZSA9IGF0dGFjaG1lbnRUaXRsZSgpOwotCiAgICAgYXV0byBpbmRleE9mTGFz
dERvdCA9IHRpdGxlLnJldmVyc2VGaW5kKCcuJyk7CiAgICAgaWYgKGluZGV4T2ZMYXN0RG90ID09
IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gdGl0bGU7CiAKLSAgICBTdHJpbmcgbmFtZSA9IHRp
dGxlLmxlZnQoaW5kZXhPZkxhc3REb3QpOwotICAgIFN0cmluZyBleHRlbnNpb24gPSB0aXRsZS5z
dWJzdHJpbmcoaW5kZXhPZkxhc3REb3QpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKGxlZnRUb1JpZ2h0TWFyayk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
Zmlyc3RTdHJvbmdJc29sYXRlKTsKLSAgICBidWlsZGVyLmFwcGVuZChuYW1lKTsKLSAgICBidWls
ZGVyLmFwcGVuZChwb3BEaXJlY3Rpb25hbElzb2xhdGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGV4
dGVuc2lvbik7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKAorICAgICAgICBsZWZ0VG9SaWdodE1hcmssCisgICAgICAgIGZpcnN0U3Ryb25n
SXNvbGF0ZSwKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkubGVmdChpbmRleE9mTGFzdERvdCks
CisgICAgICAgIHBvcERpcmVjdGlvbmFsSXNvbGF0ZSwKKyAgICAgICAgU3RyaW5nVmlldyh0aXRs
ZSkuc3Vic3RyaW5nKGluZGV4T2ZMYXN0RG90KQorICAgICk7CiB9CiAKIFN0cmluZyBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggMDNkOTA1YmJhMzc5MTI3ZDdmOTQxODkyZjc5
NzY1YTdlZjkzYzFiOS4uNmJmZTcwNzRhOTUxYWQ3YWNjZTk5Mzg0MDA2NmM4ZGI3NGQxNjExZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTM1NywxNCAr
MzU3LDE0IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW1lbnRGb3JU
eXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgU3RyaW5nIGV4dGVuc2lvbjsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0g
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgc2l6ZV90IGRvdE9mZnNldCA9IGxhc3RQYXRo
Q29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CiAgICAgaWYgKGRvdE9mZnNldCAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9m
ZnNldCArIDEpOworICAgICAgICBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJp
bmcoZG90T2Zmc2V0ICsgMSkudG9TdHJpbmcoKTsKIAogICAgIFN0cmluZyB0eXBlID0gbWltZVR5
cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmIHVybC5wcm90b2NvbElzRGF0YSgpKQotICAg
ICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwuc3RyaW5nKCkpOworICAgICAgICB0
eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwpOwogICAgIAogICAgIGlmICh0eXBlLmlzRW1w
dHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGF1dG8qIHJlcGxh
Y2VtZW50IDogcmVwbGFjZW1lbnRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZy
YWdtZW50VVJJUGFyc2VyLmNwcAppbmRleCBlN2E1MTZlYmEyMjg0OWZjZDM3MzQ2NTkzOTRiN2M0
OWU3Zjk3Y2UxLi41Yjg0NTQxZWEwZGNmNTIyNDI4MmMzMWNmNzRiYjQ2ZWEyNTUyZDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTk4
LDkgKzk4LDcgQEAgTWVkaWFUaW1lIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmVuZFRpbWUoKQog
CiB2b2lkIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKCkKIHsKLSAgICBp
ZiAoIW1fdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm47Ci0gICAg
U3RyaW5nIGZyYWdtZW50U3RyaW5nID0gbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAg
YXV0byBmcmFnbWVudFN0cmluZyA9IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlm
IChmcmFnbWVudFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxVdGlscy5oCmluZGV4IGI3MGU1ZGNiZTgyNzU4MTAwYjA3MmQyZjRmMGYwZTQ2ODBjMDEwOTcu
LjJiZDkyZTFkNTFiMzQwMjRiODNlYjkyMmE3NmRjMGYwOTJlYmE5MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFV0aWxzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFzc3dvcmQo
Y29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
SG9zdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAKICAg
ICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKICAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0
cmluZyYpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFByb3RvY29s
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxV
dGlsczxUPjo6dXNlcm5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFVz
ZXIoKTsKKyAgICByZXR1cm4gaHJlZigpLmVuY29kZWRVc2VyKCkudG9TdHJpbmcoKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBVUkxVdGlsczxU
Pjo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB1c2VyKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaHJl
ZigpLmVuY29kZWRQYXNzKCk7CisgICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzc3dvcmQoKS50
b1N0cmluZygpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEzMSw3ICsxMzEsNyBA
QCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZChjb25zdCBTdHJpbmcmIHBhc3MpCiAgICAg
VVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIHVybC5zZXRQYXNzKHBhc3MpOworICAgIHVybC5zZXRQYXNzd29yZChw
YXNzKTsKICAgICBzZXRIcmVmKHVybCk7CiB9CiAKQEAgLTE0MSwxNyArMTQxLDE4IEBAIFN0cmlu
ZyBVUkxVdGlsczxUPjo6aG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0QW5kUG9y
dCgpOwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2Vz
IGJlZm9yZSB0aGUgcG9ydCBudW1iZXIuCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHBhcnNlUG9y
dEZyb21TdHJpbmdQb3NpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCBwb3J0U3Rh
cnQsIHVuc2lnbmVkJiBwb3J0RW5kKQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb3VudEFTQ0lJ
RGlnaXRzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHBvcnRFbmQgPSBwb3J0U3RhcnQ7Ci0g
ICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh2YWx1ZVtwb3J0RW5kXSkpCi0gICAgICAgICsrcG9ydEVu
ZDsKLSAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKHBvcnRTdGFydCwgcG9ydEVuZCAtIHBvcnRT
dGFydCkudG9VSW50KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGZvciAodW5zaWduZWQgY291bnQgPSAwOyBjb3VudCA8IGxlbmd0aDsgKytjb3VudCkgewor
ICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzdHJpbmdbY291bnRdKSkKKyAgICAgICAgICAgIHJl
dHVybiBjb3VudDsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4LDE4ICsxNjksMTkgQEAg
dm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmIChz
ZXBhcmF0b3IgPT0gbm90Rm91bmQpCiAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRFbmQ7Ci0gICAgICAgIHVuc2lnbmVk
IHBvcnQgPSBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24odmFsdWUsIHNlcGFyYXRvciArIDEs
IHBvcnRFbmQpOwotICAgICAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAgdW5zaWduZWQgcG9ydExl
bmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEpKTsK
KyAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBodHRwOi8vZGV2Lncz
Lm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRs
LWF0dHJpYnV0ZXMKICAgICAgICAgICAgIC8vIHNwZWNpZmljYWxseSBnb2VzIGFnYWluc3QgUkZD
IDM5ODYgKHAzLjIpIGFuZAogICAgICAgICAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9y
dCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KLSAgICAgICAgICAgIHVybC5z
ZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSkgKyAnMCcpOwor
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlrZSBzb21ldGhpbmcgdGhhdCBoYXMg
c2luY2UgYmVlbiBjaGFuZ2VkIGFuZCB0aGlzIHJ1bGUgYW5kIGNvZGUgbWF5IGJlIG9ic29sZXRl
LgorICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KG1ha2VTdHJpbmcodmFsdWUuc3Vic3Ry
aW5nKDAsIHNlcGFyYXRvciArIDEpLCAnMCcpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2wo
KSkpCisgICAgICAgICAgICBhdXRvIHBvcnROdW1iZXIgPSBwYXJzZVVJbnQxNih2YWx1ZS5zdWJz
dHJpbmcoc2VwYXJhdG9yICsgMSwgcG9ydExlbmd0aCkpOworICAgICAgICAgICAgaWYgKHBvcnRO
dW1iZXIgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnROdW1iZXIsIHVybC5w
cm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkpOworICAgICAg
ICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9y
ICsgMSArIHBvcnRMZW5ndGgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBzZXRIcmVmKHVybC5z
dHJpbmcoKSk7CkBAIC0yMjcsMTcgKzIyOSwxMyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZv
aWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBVUkwg
dXJsID0gaHJlZigpOwotICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5wcm90
b2NvbElzKCJmaWxlIikpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIXVybC5jYW5TZXRIb3N0
T3JQb3J0KCkpCisgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgdXJsLnByb3RvY29s
SXMoImZpbGUiKSB8fCAhdXJsLmNhblNldEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9V
SW50KCZzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQotICAgICAgICB1cmwucmVtb3ZlUG9ydCgp
OwotICAgIGVsc2UKLSAgICAgICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgYXV0byBwb3J0ID0g
cGFyc2VVSW50MTYodmFsdWUubGVmdChjb3VudEFTQ0lJRGlnaXRzKHZhbHVlKSkpOworICAgIGlm
IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCB1cmwucHJvdG9j
b2woKSkpCisgICAgICAgIHBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgdXJsLnNldFBvcnQocG9y
dCk7CiAKICAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CiB9CkBAIC0yNTcsMTAgKzI1NSwxMCBA
QCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
IGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2
YWx1ZVswVV0gPT0gJy8nKQorICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcvJykpCiAgICAgICAg
IHVybC5zZXRQYXRoKHZhbHVlKTsKICAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiAr
IHZhbHVlKTsKKyAgICAgICAgdXJsLnNldFBhdGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7CiAK
ICAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CiB9CkBAIC0yNjgsOCArMjY2LDcgQEAgdm9pZCBV
UkxVdGlsczxUPjo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpzZWFyY2goKSBjb25zdAogewotICAgIFN0
cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOwotICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkg
PyBlbXB0eVN0cmluZygpIDogIj8iICsgcXVlcnk7CisgICAgcmV0dXJuIGhyZWYoKS5xdWVyeSgp
LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBocmVmKCkucXVlcnlXaXRoTGVhZGluZ1F1ZXN0
aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMjgw
LDcgKzI3Nyw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgICAgICAvLyBJZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywg
c2V0IHVybCdzIHF1ZXJ5IHRvIG51bGwuCiAgICAgICAgIHVybC5zZXRRdWVyeSh7IH0pOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBuZXdTZWFyY2ggPSAodmFsdWVbMFVdID09ICc/Jykg
PyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9
IHZhbHVlLnN0YXJ0c1dpdGgoJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOwogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8g
dGhlIGhhc2guCiAgICAgICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZVdpdGhMaXRl
cmFsKCcjJywgIiUyMyIpKTsKICAgICB9CkBAIC0yOTEsMTcgKzI4OCwxNSBAQCB2b2lkIFVSTFV0
aWxzPFQ+OjpzZXRTZWFyY2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpoYXNoKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgZnJh
Z21lbnRJZGVudGlmaWVyID0gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIGlmIChm
cmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLSAgICByZXR1cm4gQXRvbVN0cmluZyhTdHJpbmcoIiMiICsgZnJhZ21lbnRJZGVudGlmaWVy
KSk7CisgICAgLy8gRklYTUU6IFdoeSBjb252ZXJ0IHRoaXMgc3RyaW5nIHRvIGFuIGF0b20gaGVy
ZSBpbnN0ZWFkIG9mIGp1c3QgYSBzdHJpbmc/IEp1c3QgYW4gZXJyb3I/IEludGVudGlvbmFsbHkg
dG8gc2F2ZSBtZW1vcnk/CisgICAgcmV0dXJuIGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKS5p
c0VtcHR5KCkgPyBlbXB0eUF0b20oKSA6IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXJXaXRoTGVh
ZGluZ051bWJlclNpZ24oKS50b0F0b21TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgVVJMIHVybCA9IGhyZWYoKTsKLSAgICBTdHJpbmcgbmV3RnJhZ21lbnQgPSB2YWx1ZVswVV0g
PT0gJyMnID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgYXV0byBuZXdGcmFnbWVu
dCA9IHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSA/IFN0cmluZ1ZpZXcodmFsdWUpLnN1YnN0cmluZygx
KSA6IFN0cmluZ1ZpZXcodmFsdWUpOwogICAgIGlmIChuZXdGcmFnbWVudC5pc0VtcHR5KCkpCiAg
ICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCmluZGV4IDYzM2U3NzVhNTQ1
NDRmY2ZkNjY4N2FiYmVjZjlhZDg2ODlhNmRkMmYuLjc2ZDRhZmI5NWZmNGI0NmRjMDJhY2NlMDdk
ZjRhZWM5YzU0YmYxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNr
QXR0cmlidXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmli
dXRpb24uY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgQWRDbGlja0F0dHJpYnV0aW9uOjppc1Zh
bGlkKCkgY29uc3QKIAogRXhwZWN0ZWQ8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uLCBT
dHJpbmc+IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdChjb25zdCBV
UkwmIHJlZGlyZWN0VVJMKQogewotICAgIGlmICghcmVkaXJlY3RVUkwucHJvdG9jb2xJcygiaHR0
cHMiX3MpIHx8IHJlZGlyZWN0VVJMLmhhc1VzZXJuYW1lKCkgfHwgcmVkaXJlY3RVUkwuaGFzUGFz
c3dvcmQoKSB8fCByZWRpcmVjdFVSTC5oYXNRdWVyeSgpIHx8IHJlZGlyZWN0VVJMLmhhc0ZyYWdt
ZW50KCkpIHsKKyAgICBpZiAoIXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgfHwgcmVk
aXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMoKSB8fCByZWRpcmVjdFVSTC5oYXNRdWVyeSgpIHx8IHJl
ZGlyZWN0VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAgICAgICAgIGlmIChVTkxJS0VM
WShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKEFk
Q2xpY2tBdHRyaWJ1dGlvbiwgIkNvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRo
ZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3Ig
bW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIHF1ZXJ5IHN0cmluZywgYW5kIGZyYWdtZW50LiIp
OwogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbQWQgQ2xpY2sgQXR0cmlidXRp
b25dIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2Nv
bCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFt
ZSwgcGFzc3dvcmQsIHF1ZXJ5IHN0cmluZywgYW5kIGZyYWdtZW50LiJfcyk7CkBAIC0xODksMTcg
KzE4OSwxMiBAQCBVUkwgQWRDbGlja0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nKGNvbnN0IFVS
TCYgYmFzZVVSTCkgY29uc3QKICAgICBhdXRvIGhvc3QgPSBtX3NvdXJjZS5yZWdpc3RyYWJsZURv
bWFpbi5zdHJpbmcoKTsKICAgICBpZiAoaG9zdCAhPSAibG9jYWxob3N0IiAmJiBob3N0ICE9ICIx
MjcuMC4wLjEiKQogICAgICAgICByZXR1cm4gVVJMKCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Y29udmVyc2lvbj0iKTsKLSAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhKTsKLSAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiZjYW1wYWlnbj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihtX2NhbXBhaWduLmlkKTsKLSAgICBpZiAoYmFzZVVSTC5oYXNRdWVyeSgpKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcmJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJhc2VVUkwucXVl
cnkoKSk7Ci0gICAgfQotICAgIHJldHVybiBVUkwoYmFzZVVSTCwgYnVpbGRlci50b1N0cmluZygp
KTsKKyAgICBTdHJpbmcgcmVsYXRpdmVVUkw7CisgICAgaWYgKCFiYXNlVVJMLmhhc1F1ZXJ5KCkp
CisgICAgICAgIHJlbGF0aXZlVVJMID0gbWFrZVN0cmluZygiP2NvbnZlcnNpb249IiwgbV9jb252
ZXJzaW9uLnZhbHVlKCkuZGF0YSwgIiZjYW1wYWlnbj0iLCBtX2NhbXBhaWduLmlkKTsKKyAgICBl
bHNlCisgICAgICAgIHJlbGF0aXZlVVJMID0gbWFrZVN0cmluZygiP2NvbnZlcnNpb249IiwgbV9j
b252ZXJzaW9uLnZhbHVlKCkuZGF0YSwgIiZjYW1wYWlnbj0iLCBtX2NhbXBhaWduLmlkLCAnJics
IGJhc2VVUkwucXVlcnkoKSk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCByZWxhdGl2ZVVSTCk7
CiB9CiAKIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uOjptYXJrQ29udmVyc2lvbkFzU2VudCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CmluZGV4IDgyOTA2MjhjNGVkNDVlMDUzMWM0Nzk2ZmEyNmFkNWFjNGExZDYzMzguLmUwNTNjOWIw
M2YwNDY1MGRlZjU1YmVjZDU4ZDFjNjM2OWM2MzBhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0xNjcsNyArMTY3LDcg
QEAgU3RyaW5nIHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlvblVSTChjb25zdCBVUkwmIHJl
ZGlyZWN0VVJMKQogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJM
U2NoZW1lQXNDT1JTRW5hYmxlZChyZWRpcmVjdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJub3QgYWxsb3dlZCB0byBm
b2xsb3cgYSBjcm9zcy1vcmlnaW4gQ09SUyByZWRpcmVjdGlvbiB3aXRoIG5vbiBDT1JTIHNjaGVt
ZSIpOwogCi0gICAgaWYgKHJlZGlyZWN0VVJMLmhhc1VzZXJuYW1lKCkgfHwgcmVkaXJlY3RVUkwu
aGFzUGFzc3dvcmQoKSkKKyAgICBpZiAocmVkaXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJlZGlyZWN0aW9uIFVSTCAiLCByZWRpcmVjdFVSTC5z
dHJpbmcoKSwgIiBoYXMgY3JlZGVudGlhbHMiKTsKIAogICAgIHJldHVybiB7IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDIxNzdmNGI2ZGI2YjE5NWNhOWRmODI3OWI1YWY3YmIxNTZmNWI1MGEuLmRmM2QwOGM3NGZlYmMx
YjU0ZTI0NGU2M2ZjNDk2ZmU2MzBjNDMwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01MzIsOCArNTMyLDcgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBi
ZWVuIHJlbW92ZWQgZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0cy4KICAgICBjb25zdCBVUkwm
IHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1fb3B0aW9ucy5zZWN1cml0eUNoZWNr
ID0gc2VjdXJpdHlDaGVjazsKLSAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1
ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0
IHx8IHJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fc2FtZU9yaWdp
blJlcXVlc3QgfHwgIXJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSk7CiAKICAgICBpZiAoIW1f
cmVmZXJyZXIuaXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1fcmVm
ZXJyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggM2Fh
YThlZWQ4YzMzN2U3OWQ5ODg4YTQ1NWYzOWZmM2ZlZTRiNWEzNi4uMzBhZjkwMDgwNDlhOGUzOTgy
ZjljOWJmNDlkYWViZmM5MmVhNjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwCkBAIC03OCwxMSArNzgsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWFpbHRvUG9z
dEZvcm1EYXRhVG9VUkwoVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAogICAg
IEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShib2R5RGF0YSwgYm9keS51
dGY4KCkpOwogICAgIGJvZHkgPSBTdHJpbmcoYm9keURhdGEuZGF0YSgpLCBib2R5RGF0YS5zaXpl
KCkpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnKycsICIlMjAiKTsKIAotICAgIFN0cmluZyBxdWVyeSA9
IHVybC5xdWVyeSgpOworICAgIGF1dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKICAgICBpZiAocXVl
cnkuaXNFbXB0eSgpKQogICAgICAgICB1cmwuc2V0UXVlcnkoYm9keSk7CiAgICAgZWxzZQotICAg
ICAgICB1cmwuc2V0UXVlcnkocXVlcnkgKyAnJicgKyBib2R5KTsKKyAgICAgICAgdXJsLnNldFF1
ZXJ5KG1ha2VTdHJpbmcocXVlcnksICcmJywgYm9keSkpOwogfQogCiB2b2lkIEZvcm1TdWJtaXNz
aW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJpbmcmIGFjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCmluZGV4IDMyM2RiNDYzNjAyOThiOGE5MWJiMDBhNDc5MjRiYjJlODExMWYzMzguLjQ4
ODJkNzdlMTI3MTY5ODVjNDY0NTFkZjBlYzc0MGE3OTM5M2M0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApA
QCAtMjQ2LDE1ICsyNDYsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
RmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2EKIAogVVJMIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAg
ICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgdXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGggaW5z
dGVhZD8KICNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKLSAgICBVUkwgdXJsKGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpLmdldCgpKTsKKyAgICAvLyBGSVhN
RTogSXMgdGhpcyBjb3JyZWN0PyBTZWVtcyBpbXByb2JhYmxlIHRoYXQgdGhlIHBhc3NlZC1pbiBw
YXRocyB3b3VsZCBiZSBpbiB0aGUgV2luZG93cyBwYXRoIHN0eWxlLgorICAgIHJldHVybiBhZG9w
dENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKS5nZXQoKTsKICNlbHNlCi0g
ICAgVVJMIHVybDsKLSAgICB1cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgIHVybC5zZXRQ
YXRoKHBhdGgpOworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgocGF0
aCk7CiAjZW5kaWYKLSAgICByZXR1cm4gdXJsOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01h
bmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5jcHAKaW5kZXggZmFhZTUxZjk5ZjYyYjJmMjlkNWNiYjhhZWNmY2ViMTZhZGMyZWI1
NC4uNzM0ZGE3NjYyZDQ5YTYyMjU5ZGU2MWZlZDhjYmViNzAwZWQyYWM3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC0zNSwx
MyArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIE1vZGUgeyBFeHBsaWNpdCwg
RmFsbGJhY2ssIE9ubGluZVdoaXRlbGlzdCwgVW5rbm93biB9OwogCi1zdGF0aWMgU3RyaW5nIG1h
bmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQorc3RhdGljIFN0cmluZ1ZpZXcgbWFu
aWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCiB7CiAgICAgYXV0byBtYW5pZmVzdFBh
dGggPSBtYW5pZmVzdFVSTC5wYXRoKCk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSAn
LycpOwogICAgIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0UGF0aC5zdWJzdHJpbmcoMCwgbWFuaWZl
c3RQYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKICAgICBBU1NFUlQobWFuaWZlc3RQYXRoWzBd
ID09IG1hbmlmZXN0UGF0aFttYW5pZmVzdFBhdGgubGVuZ3RoKCkgLSAxXSk7Ci0gICAgcmV0dXJu
IG1hbmlmZXN0UGF0aC50b1N0cmluZygpOworICAgIHJldHVybiBtYW5pZmVzdFBhdGg7CiB9CiAK
IGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcm
IG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0
JiBtYW5pZmVzdCkKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QKICAg
ICBBU1NFUlQobWFuaWZlc3QuZmFsbGJhY2tVUkxzLmlzRW1wdHkoKSk7CiAgICAgbWFuaWZlc3Qu
YWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSBmYWxzZTsKIAotICAgIFN0cmluZyBtYW5pZmVzdFBh
dGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOworICAgIGF1dG8gbWFuaWZl
c3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKIAogICAgIGNvbnN0
IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAg
ICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRoID0gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1J
TUVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRl
eCAzZjQ2OTljZjgzMjk4ZjA0ZTI3NGFlMDBlZjk1YTU1NDc1YTY1ZjNkLi5jZDk0OWU3YzEzMGQ5
NjYyODJmMTliNTJjOGRhMzFkMDA0YTY4MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCkBAIC04NiwxMCArODYsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogCiBTdHJpbmcgQ2FjaGVkRm9u
dDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0g
dGhpcy0+dXJsKCk7Ci0gICAgaWYgKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
OworICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQog
CiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKaW5kZXggNmEyOGE4NTcxYzVlY2E2MjdkM2U2ZTdkMTRmNzlhNzYzODY5NjVi
My4uZTRhOTRhNTA1OTYxYWEzNzk3ZmE2ZDA0ZWE2NWM2NDU2NWFkOTZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgU3RyaW5nIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c3BsaXRGcmFn
bWVudElkZW50aWZpZXJGcm9tUmVxdWVzdFVSTChSZXNvdXJjZVJlcXUKICAgICBpZiAoIU1lbW9y
eUNhY2hlOjpzaG91bGRSZW1vdmVGcmFnbWVudElkZW50aWZpZXIocmVxdWVzdC51cmwoKSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgU3Ry
aW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBh
dXRvIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmlu
ZygpOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICByZXF1ZXN0LnNl
dFVSTCh1cmwpOwogICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggYjRjZmI3NTMxNzk2OTI2ODlkM2Q2NjFhYmNkNWZkNzM3ZWIwZWRi
ZS4uN2MxMWRiZmI2YzRjMGY5YmJkZWM0YTk4ZWFlZDIzNGZlMGQ5M2IzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjE3OSw4ICsyMTc5LDggQEAgdm9pZCBGcmFtZVZpZXc6OnJl
c3RvcmVTY3JvbGxiYXIoKQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25z
dCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpOwotICAgIGlmIChzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoZnJhZ21l
bnRJZGVudGlmaWVyKSkKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKTsKKyAgICBpZiAoc2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGZyYWdtZW50
SWRlbnRpZmllci50b1N0cmluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBU
cnkgYWdhaW4gYWZ0ZXIgZGVjb2RpbmcgdGhlIHJlZiwgYmFzZWQgb24gdGhlIGRvY3VtZW50J3Mg
ZW5jb2RpbmcuCkBAIC0yMTk1LDcgKzIxOTUsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9G
cmFnbWVudChjb25zdCBVUkwmIHVybCkKIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21l
bnRJbnRlcm5hbChjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllcikKIHsKLSAgICBMT0co
U2Nyb2xsaW5nLCAiRnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvciAlcyIsIGZyYWdtZW50SWRlbnRp
Zmllci51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coU2Nyb2xsaW5nLCAiRnJhbWVWaWV3OjpzY3Jv
bGxUb0ZyYWdtZW50SW50ZXJuYWwgJXMiLCBmcmFnbWVudElkZW50aWZpZXIudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAvLyBJZiBvdXIgVVJMIGhhcyBubyByZWYsIHRoZW4gd2UgaGF2ZSBubyBwbGFj
ZSB3ZSBuZWVkIHRvIGp1bXAgdG8uCiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc051bGwo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDljNThiMDZmNGM0NzExMzBjZTQ4MTVmMTFk
MTRjYjc4ZjgxYjQ5YTAuLjM4ZmQ3YjI5YjUzZWFiNDg0ZTMwOTYzYjUxYzhhZTUyNWM1ZDdhMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMjAxLDEzICsyMDEsMTQgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIGRhdGEKICAgICAgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lID0gc3RhdGVP
YmplY3RUeXBlID09IFN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSA/ICJoaXN0b3J5LnJlcGxhY2VT
dGF0ZSgpIiA6ICJoaXN0b3J5LnB1c2hTdGF0ZSgpIjsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsIG1ha2VTdHJpbmcoIkJsb2NrZWQgYXR0ZW1wdCB0byB1c2UgIiwg
ZnVuY3Rpb25OYW1lLCAiIHRvIGNoYW5nZSBzZXNzaW9uIGhpc3RvcnkgVVJMIGZyb20gIiwgZG9j
dW1lbnRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgdG8gIiwgZnVsbFVS
TC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi4gIiwgc3VmZml4KSB9OwogICAg
IH07Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1l
bnRVUkwpIHx8IGZ1bGxVUkwudXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJM
LnBhc3MoKSAhPSBkb2N1bWVudFVSTC5wYXNzKCkpCisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQ
b3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwudXNlcigpICE9IGRv
Y3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJMLnBhc3N3b3JkKCkgIT0gZG9jdW1lbnRVUkwucGFz
c3dvcmQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1cml0eUVycm9yV2l0
aE1lc3NhZ2VTdWZmaXgoIlByb3RvY29scywgZG9tYWlucywgcG9ydHMsIHVzZXJuYW1lcywgYW5k
IHBhc3N3b3JkcyBtdXN0IG1hdGNoLiIpOwogCiAgICAgY29uc3QgYXV0byYgZG9jdW1lbnRTZWN1
cml0eU9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgIC8v
IFdlIGFsbG93IHNhbmRib3hlZCBkb2N1bWVudHMsICdkYXRhOicvJ2ZpbGU6JyBVUkxzLCBldGMu
IHRvIHVzZSAncHVzaFN0YXRlJy8ncmVwbGFjZVN0YXRlJyB0byBtb2RpZnkgdGhlIFVSTCBxdWVy
eSBhbmQgZnJhZ21lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgzMDI4IGZvciB0aGUgY29tcGF0aWJpbGl0eSBjb25jZXJucy4KLSAgICBi
b29sIGFsbG93U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9j
YWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpICYmIGVxdWFsSWdub3Jp
bmdRdWVyeUFuZEZyYWdtZW50KGRvY3VtZW50VVJMLCBmdWxsVVJMKTsKKyAgICBib29sIGFsbG93
U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBk
b2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpCisgICAgICAgICYmIGRvY3VtZW50VVJM
LnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKCkgPT0gZnVsbFVSTC5zdHJp
bmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFhbGxvd1Nh
bmRib3hFeGNlcHRpb24gJiYgIWRvY3VtZW50U2VjdXJpdHlPcmlnaW4uY2FuUmVxdWVzdChmdWxs
VVJMKSAmJiAoZnVsbFVSTC5wYXRoKCkgIT0gZG9jdW1lbnRVUkwucGF0aCgpIHx8IGZ1bGxVUkwu
cXVlcnkoKSAhPSBkb2N1bWVudFVSTC5xdWVyeSgpKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUJs
b2NrZWRVUkxTZWN1cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlBhdGhzIGFuZCBmcmFnbWVu
dHMgbXVzdCBtYXRjaCBmb3IgYSBzYW5kYm94ZWQgZG9jdW1lbnQuIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwCmluZGV4IDI4Nzg5Y2QxNDI5ODMyYzFmMjcyYTZhYWQ1ZWIxZThiNjI4ODJlYzcu
LjM2YzFjOWJiY2NhMTA2YzhlYjU3ZjFiZWE2MzcwYjBlMjg3YTI4NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCkBAIC02MSwxNCArNjEsOCBAQCBpbmxpbmUgY29uc3QgVVJMJiBMb2NhdGlv
bjo6dXJsKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpocmVmKCkgY29uc3QKIHsKLSAgICBh
dXRvJiB1cmwgPSB0aGlzLT51cmwoKTsKLQotICAgIGlmICghdXJsLmhhc1VzZXJuYW1lKCkgJiYg
IXVybC5oYXNQYXNzd29yZCgpKQotICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpOwotCi0gICAg
VVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwpOwotICAgIHVybFdpdGhvdXRDcmVkZW50aWFs
cy5zZXRVc2VyKFdURjo6ZW1wdHlTdHJpbmcoKSk7Ci0gICAgdXJsV2l0aG91dENyZWRlbnRpYWxz
LnNldFBhc3MoV1RGOjplbXB0eVN0cmluZygpKTsKKyAgICBVUkwgdXJsV2l0aG91dENyZWRlbnRp
YWxzKHVybCgpKTsKKyAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMucmVtb3ZlQ3JlZGVudGlhbHMo
KTsKICAgICByZXR1cm4gdXJsV2l0aG91dENyZWRlbnRpYWxzLnN0cmluZygpOwogfQogCkBAIC05
MSwyMCArODUsMTkgQEAgU3RyaW5nIExvY2F0aW9uOjpob3N0bmFtZSgpIGNvbnN0CiAKIFN0cmlu
ZyBMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51
cmwoKTsKLSAgICByZXR1cm4gdXJsLnBvcnQoKSA/IFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCku
dmFsdWUoKSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gcG9ydCA9IHVybCgpLnBvcnQoKTsK
KyAgICByZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVyKCpwb3J0KSA6IGVtcHR5U3RyaW5nKCk7
CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6cGF0aG5hbWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0
aCA9IHVybCgpLnBhdGgoKTsKLSAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRo
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRv
U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICBj
b25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwotICAgIHJldHVybiB1cmwucXVlcnkoKS5pc0Vt
cHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgdXJsLnF1ZXJ5KCk7CisgICAgcmV0dXJuIHVy
bCgpLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IHVybCgpLnF1ZXJ5V2l0aExl
YWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246Om9y
aWdpbigpIGNvbnN0CkBAIC0xMjUsOCArMTE4LDcgQEAgUmVmPERPTVN0cmluZ0xpc3Q+IExvY2F0
aW9uOjphbmNlc3Rvck9yaWdpbnMoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246Omhhc2goKSBj
b25zdAogewotICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5
KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyOworICAgIHJldHVy
biB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDog
dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmco
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhyZWYoRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpA
QCAtMTQ0LDcgKzEzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQcm90b2Nv
bChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAgICAgVVJMIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5zZXRQcm90b2NvbChwcm90
b2NvbCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdChET01XaW5kb3cmIGFj
dGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBob3N0KQpA
QCAtMTU0LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwu
c2V0SG9zdEFuZFBvcnQoaG9zdCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRv
dywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFj
dGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRIb3N0bmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBm
aXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTE2NCw3ICsxNTYsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlycwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwot
ICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3Ry
aW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93
LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBw
b3J0U3RyaW5nKQpAQCAtMTczLDEyICsxNjUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlv
bjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKTsKLSAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsK
LSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHko
KSkKLSAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQ
b3J0KHBvcnQpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJp
bmcpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywg
dXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcm
IHBhdGhuYW1lKQpAQCAtMTg4LDcgKzE3Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRQYXRobmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFj
dGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdp
bmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgc2VhcmNoKQpAQCAtMTk4LDcgKzE4Niw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJM
IHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UXVlcnkoc2VhcmNo
KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdp
bmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmlu
ZyYgaGFzaCkKQEAgLTIxOCw3ICsyMDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgogICAg
IC8vIGNhc2VzIHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFs
aWQuIAogICAgIGlmIChlcXVhbElnbm9yaW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIs
IHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0
dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7
CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGFjZTVi
N2VkOTcwMWUyNDFlNDBhNTdkZTY0MThkOThjMTI5ZDkzODUuLjJkNTE0Njk5YjExNzFlOWM3NDg2
NjEyYTdiMWE1ZTU1YTJiYWNmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKQEAgLTE0NywyMiArMTQ3LDE5IEBAIGJvb2wgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgcmV0dXJu
IGhvc3RbaG9zdC5sZW5ndGgoKSAtIG1faG9zdC5sZW5ndGgoKSAtIDFdID09ICcuJzsKIH0KIAot
c3RydWN0IE1hdGNoVGVzdGVyCi17CitzdHJ1Y3QgTWF0Y2hUZXN0ZXIgewogICAgIFN0cmluZ1Zp
ZXcgbV9wYXR0ZXJuOwotICAgIHVuc2lnbmVkIG1fcGF0dGVybkluZGV4OwotICAgIAorICAgIHVu
c2lnbmVkIG1fcGF0dGVybkluZGV4IHsgMCB9OworCiAgICAgU3RyaW5nVmlldyBtX3Rlc3Q7Ci0g
ICAgdW5zaWduZWQgbV90ZXN0SW5kZXg7Ci0gICAgCisgICAgdW5zaWduZWQgbV90ZXN0SW5kZXgg
eyAwIH07CisKICAgICBNYXRjaFRlc3RlcihTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1ZpZXcg
dGVzdCkKLSAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICwgbV9wYXR0ZXJuSW5kZXgoMCkK
LSAgICAsIG1fdGVzdCh0ZXN0KQotICAgICwgbV90ZXN0SW5kZXgoMCkKKyAgICAgICAgOiBtX3Bh
dHRlcm4ocGF0dGVybikKKyAgICAgICAgLCBtX3Rlc3QodGVzdCkKICAgICB7CiAgICAgfQotICAg
IAorCiAgICAgYm9vbCB0ZXN0U3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJ
bmRleCA+PSBtX3Rlc3QubGVuZ3RoKCk7IH0KICAgICBib29sIHBhdHRlcm5TdHJpbmdGaW5pc2hl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybkluZGV4ID49IG1fcGF0dGVybi5sZW5ndGgoKTsg
fQogCkBAIC0xNzQsNyArMTcxLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAgICAgICAgICAgICBt
X3BhdHRlcm5JbmRleCsrOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBlYXRT
YW1lQ2hhcnMoKQogICAgIHsKICAgICAgICAgd2hpbGUgKCFwYXR0ZXJuU3RyaW5nRmluaXNoZWQo
KSAmJiAhdGVzdFN0cmluZ0ZpbmlzaGVkKCkpIHsKQEAgLTIyNiw4ICsyMjMsNyBAQCBzdHJ1Y3Qg
TWF0Y2hUZXN0ZXIKIAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNv
bnN0IFVSTCYgdGVzdCkgY29uc3QKIHsKLSAgICBNYXRjaFRlc3RlciBtYXRjaChTdHJpbmdWaWV3
KG1fcGF0aCksIHRlc3QucGF0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2gudGVzdCgpOworICAgIHJl
dHVybiBNYXRjaFRlc3RlcihtX3BhdGgsIHRlc3QucGF0aCgpKS50ZXN0KCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKaW5kZXggNGEwYzM0ZWNhNzI0MmJkYTcyNTI4NDhiM2E4Y2UyZDEzNWY3NDM1Yi4u
NDcwZmU1NDk1NGUxYjNjNDdlZWYwNWU3ODUwY2I1YmEyYzk5NWY2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTc5MCwxNiArNzkwLDEwIEBA
IFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRl
bnNpb25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewotICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUs
IGRlZmF1bHRNSU1FVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwotCi0gICAgaWYg
KGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJykgIT0gbm90Rm91bmQpCisgICAgaWYgKGZpbGVuYW1l
LmlzRW1wdHkoKSB8fCBmaWxlbmFtZS5jb250YWlucygnLicpIHx8IGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsIGRlZmF1bHRNSU1FVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZpbGVu
YW1lOwogCi0gICAgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdldFByZWZlcnJlZEV4dGVu
c2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHByZWZlcnJlZEV4dGVuc2lvbiA9
IGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBpZiAocHJl
ZmVycmVkRXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggYWI3ZTYwNTQyYjAxODJjZmFiNmJmMjIwNmY0ODc4OGYxODQxYzYzOC4uYzgyOGJiZTdlNzc1
NWVlNzExMjE3MjNlOWYxNzAyN2VkMWZhZTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNDQxLDEyICs0NDEsMTIgQEAgYm9v
bCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHIKICAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBtX2Nv
bnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5
KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwgY29udGFp
bmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwucHJvdG9jb2xJc0Rh
dGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZy
b21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0g
Q29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybCkpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBv
bmVudCgpOworICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0
aENvbXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50
LnJldmVyc2VGaW5kKCcuJyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0g
ICAgICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0
cmluZyhwb3MgKyAxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFzdFBh
dGhDb21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAg
ICAgU3RyaW5nIG1lZGlhVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lZGlhVHlwZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRU
eXBlIHsgV1RGTW92ZShtZWRpYVR5cGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYxNjJhZGFlNmJmZjUxNjcxZTNiZTUzMjIyN2U3
ZGU1Nzk5OWZkZjAuLjJlYzk3NWNiMTA0NWFlNGM4NzQ5N2NkOWEwYWNlMDJmOTIxMWQ5NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0x
NzIsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvSW50ZXJuYWxQcm90b2NvbChVUkwm
IHVybCkKICAgICBpZiAod2Via2l0R3N0Q2hlY2tWZXJzaW9uKDEsIDEyLCAwKSkKICAgICAgICAg
cmV0dXJuOwogICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90
b2NvbElzQmxvYigpKQotICAgICAgICB1cmwuc2V0UHJvdG9jb2woIndlYmtpdCsiICsgdXJsLnBy
b3RvY29sKCkpOworICAgICAgICB1cmwuc2V0UHJvdG9jb2wobWFrZVN0cmluZygid2Via2l0KyIs
IHVybC5wcm90b2NvbCgpKSk7CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oCmluZGV4IDcyOGZhMmU4NzliMGU3NjFhNDk1ZGM0YWNhMzA4NjQ0YmQ2NGUwMGUu
LmQzYjMzODI3OTFlZjJjMDIyM2E3NjQzMTcxM2YxOGIxZjMyZTZhOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGNvbnN0IFVSTCYg
dXJsID0gbV9maXJzdFJlcXVlc3QudXJsKCk7CiAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7
Ci0gICAgICAgIG1fcGFzcyA9IHVybC5wYXNzKCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwu
cGFzc3dvcmQoKTsKICAgICAgICAgbV9maXJzdFJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsK
ICAgICB9CiAgICAgCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFN1Z2dlc3Rl
ZCBjcmVkZW50aWFscyBmb3IgdGhlIGN1cnJlbnQgcmVkaXJlY3Rpb24gc3RlcC4KICAgICBTdHJp
bmcgbV91c2VyOwotICAgIFN0cmluZyBtX3Bhc3M7CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CiAg
ICAgCiAgICAgQ3JlZGVudGlhbCBtX2luaXRpYWxDcmVkZW50aWFsOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAKaW5kZXggYTkzNzMyMDM1MzEyY2M0N2QwOTIyMGFkODRmMmZiMmU4ZjczNDJkZS4uNTMwZWNj
ZmFlNzkzZTM1ZGVlOTllYzA0MDc3MDdhMzhmOWM3YzllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0x
NjUsMTIgKzE2NSwxMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRp
YWxzKCkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCiAKLSAgICBpZiAobV91cmwu
dXNlcigpLmlzRW1wdHkoKSAmJiBtX3VybC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmICghbV91
cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV91cmwuc2V0VXNl
cihTdHJpbmcoKSk7Ci0gICAgbV91cmwuc2V0UGFzcyhTdHJpbmcoKSk7Ci0KKyAgICBtX3VybC5y
ZW1vdmVDcmVkZW50aWFscygpOwogICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAppbmRleCAwYzJkM2YwNDQzMDY1MWIzMzE5NTJiNmQw
MTlmZTU2ZDFjNmIwNDU0Li5mNzUyYTZlZTM1YTcyMGM2ZDdiZDlhNGU3NTg5MWRkMGE5NGFlOGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFBy
b3h5U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogI2VuZGlmCiAKICNp
bmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdWludDE2
X3QgU29ja3NQcm94eVBvcnQgPSAxMDgwOworY29uc3RleHByIHVpbnQxNl90IFNvY2tzUHJveHlQ
b3J0ID0gMTA4MDsKIAotc3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQcm94eVBvcnQoY29u
c3QgVVJMJik7CiBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChjb25zdCBV
UkwmKTsKIAogQ3VybFByb3h5U2V0dGluZ3M6OkN1cmxQcm94eVNldHRpbmdzKFVSTCYmIHByb3h5
VXJsLCBTdHJpbmcmJiBpZ25vcmVIb3N0cykKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBDdXJsUHJv
eHlTZXR0aW5nczo6cmVidWlsZFVybCgpCiB2b2lkIEN1cmxQcm94eVNldHRpbmdzOjpzZXRVc2Vy
UGFzcyhjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAg
bV91cmwuc2V0VXNlcih1c2VyKTsKLSAgICBtX3VybC5zZXRQYXNzKHBhc3N3b3JkKTsKKyAgICBt
X3VybC5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAKICAgICByZWJ1aWxkVXJsKCk7CiB9CkBAIC0x
MTgsOCArMTE4LDggQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29u
c3QgVVJMICZ1cmwpCiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCi0gICAgYXV0byB1c2VycGFzcyA9ICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFz
c3dvcmQoKSkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJsLnBhc3MoKSwgIkAiKSA6
IFN0cmluZygpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgpLCAiOi8vIiwg
dXNlcnBhc3MsIHVybC5ob3N0KCksICI6IiwgU3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKKyAgICBh
dXRvIHVzZXJwYXNzID0gdXJsLmhhc0NyZWRlbnRpYWxzKCkgPyBtYWtlU3RyaW5nKHVybC51c2Vy
KCksICI6IiwgdXJsLnBhc3N3b3JkKCksICJAIikgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyh1cmwucHJvdG9jb2woKSwgIjovLyIsIHVzZXJwYXNzLCB1cmwuaG9zdCgpLCAiOiIs
ICpwb3J0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAppbmRleCBhZjMxMzU0NmM0NGEzMjc3ZjA2
YjQ4NTRlZjAzMDI3Yjg1ODE0NDAzLi41ODNlMDBjNGUzMTQ2OTllYTFmNTQyZmUzNjkyNGJlZDBl
MjFiMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVzZXJQYXNzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOwogICAgIGNvbnN0IFN0cmluZyB1c2VyKCkgY29uc3QgeyByZXR1cm4gbV91cmwudXNl
cigpOyB9Ci0gICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwu
cGFzcygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91
cmwucGFzc3dvcmQoKTsgfQogCiAgICAgdm9pZCBzZXREZWZhdWx0QXV0aE1ldGhvZCgpIHsgbV9h
dXRoTWV0aG9kID0ga0NVUkxBVVRIX0FOWTsgfQogICAgIHZvaWQgc2V0QXV0aE1ldGhvZChsb25n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KaW5kZXggNzY3YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJm
YTEwNzJkNi4uZWU2MDNkNzIyZjQxZDBkNmY3YzQ2YjkwNmZiN2E1NTEwNTIwZjM3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
CiAjZW5kaWYKIHsKICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3Nl
ZCBpbiBVUkwsIHRoZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTogZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgIGlmICgoIWQtPm1fdXNlci5pc0Vt
cHR5KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgp
IHx8ICFkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxz
KGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVz
ZXIoZC0+bV91c2VyKTsKLSAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9w
YXNzKTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3N3b3JkKGQtPm1fcGFzc3dv
cmQpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsK
ICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgJiYgZmlyc3RSZXF1
ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIGlmIChkLT5t
X3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGQt
Pm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhl
IHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRo
ZW50aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFs
IHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KICAgICAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9u
KCkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxD
b25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWwKICAgICAgICAg
ICAgIC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5k
aW5nIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBh
bmQgYWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1
dGhlbnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCiAgICAgICAgICAgICBpZiAoYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
KQotICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5t
X3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVz
dCgpLnVybCgpKTsKKyAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIENyZWRl
bnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAg
LTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogCiAgICAgY29uc3QgVVJM
JiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAg
ZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3Jk
KCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAg
IHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT25seSBjb25zaWRl
ciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5
IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwgZGlkbid0IGluY2x1
ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KLSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5
KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkg
eworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1w
dHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICAgICAgQ3JlZGVu
dGlhbCBjcmVkZW50aWFsOwogICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgICAgICAgICBj
cmVkZW50aWFsID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdl
dChyZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNTIxLDE3ICs1
MjEsMTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhl
bnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICBpZiAoIWNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewot
ICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBbW05TVVJMQ3JlZGVudGlhbCBh
bGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFz
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
bl07CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxs
KCkpIHsKKyAgICAgICAgYXV0byBjcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlh
bCBhbGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgorICAgICAgICAgICAgcGFzc3dvcmQ6ZC0+
bV9wYXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Np
b25dKTsKICAgICAgICAgZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlID0gY2hhbGxlbmdlLm5zVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKICAgICAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxl
bmdlID0gY2hhbGxlbmdlOwotICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBD
cmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgW2NyZWRlbnRpYWwgcmVsZWFzZV07Cisg
ICAgICAgIHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UsIENyZWRlbnRpYWwoY3JlZGVudGlh
bC5nZXQoKSkpOwogICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUg
dXNlciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5j
b3JyZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAgZC0+bV91c2VyID0gU3Ry
aW5nKCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3
b3JkID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwCmluZGV4IGQ4MjhkYjc2Njg0MDQ5MjdlNTc2YzZiMzA4ZTZmOWU3ZTc1ZmVh
MmEuLjNmMmQzNmNmNTc1NTA2NTVmMzlmZDQxMTI0YzlkNmYxYTIyYzJhNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBHVW5pcXVlUHRyPFNvdXBVUkk+IFJl
c291cmNlUmVxdWVzdDo6Y3JlYXRlU291cFVSSSgpIGNvbnN0CiAgICAgLy8gd2hlbiBib3RoIHRo
ZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJlIG5vbi1udWxsLiBXaGVuIHdlIGhhdmUgY3JlZGVu
dGlhbHMsIGVtcHR5IHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzCiAgICAgLy8gc2hvdWxkIGJlIGVt
cHR5IHN0cmluZ3MgaW5zdGVhZCBvZiBudWxsLgogICAgIFN0cmluZyB1cmxVc2VyID0gbV91cmwu
dXNlcigpOwotICAgIFN0cmluZyB1cmxQYXNzID0gbV91cmwucGFzcygpOworICAgIFN0cmluZyB1
cmxQYXNzID0gbV91cmwucGFzc3dvcmQoKTsKICAgICBpZiAoIXVybFVzZXIuaXNFbXB0eSgpIHx8
ICF1cmxQYXNzLmlzRW1wdHkoKSkgewogICAgICAgICBzb3VwX3VyaV9zZXRfdXNlcihzb3VwVVJJ
LmdldCgpLCB1cmxVc2VyLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBzb3VwX3VyaV9zZXRfcGFz
c3dvcmQoc291cFVSSS5nZXQoKSwgdXJsUGFzcy51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcAppbmRleCBmNTFjNGZk
NTdmOGUxNGI5NjRhYjU5NmNhOWNkM2NhZmU4MTE4NmRhLi5lODViZjQwMWYzMDEzMDIzZTA4ZTlh
ZmYyY2FmODcwZDMxYzg2OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1VSTFNvdXAuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFVSTCBzb3VwVVJJVG9VUkwo
U291cFVSSSogc291cFVSSSkKICAgICAgICAgLy8gYnVpbHQuIEZpeGluZyBzb3VwX3VyaV90b19z
dHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCiAgICAgICAgIC8vIG5vdCB3
YW50IHRvIGJyZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMK
ICAgICAgICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICAgICAgdXJsLnNldFBhc3Mo
U3RyaW5nOjpmcm9tVVRGOChzb3VwVVJJLT5wYXNzd29yZCkpOworICAgICAgICAgICAgdXJsLnNl
dFBhc3N3b3JkKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCmluZGV4IDI4ZDg3M2M0NjEyZGJkY2U0MTc5YzNhMzhlZDBkYzBhNTBiODg3OGEu
LjcxODNmOTA1NmE4MGQwZTM2ZmZkYTcwZmQyMWI0ZGY3ZmE3MGQ1ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM3MCw3ICszNzAsNyBA
QCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJs
LCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CisgICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmco
KTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gdXJs
Lmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KQEAgLTU3OSwxMCArNTc5LDEwIEBAIHN0YXRpYyBT
dHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsCiAgICAgICAgIC8vIHRoZSBwYXRoLiBJZiB3ZSBjYW4ndCBmaW5kIGl0
LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUgbmFtZSBmb3IgYSBsaW5rCiAgICAgICAgIC8v
IHdlIGp1c3QgdXNlIHRoZSBlbnRpcmUgdXJsLgogICAgICAgICBEV09SRCBsZW4gPSBmc1BhdGhN
YXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb247Ci0gICAgICAgIFN0cmluZyBsYXN0Q29tcG9uZW50
ID0ga3VybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQg
PSBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChrdXJsLmlzTG9jYWxGaWxl
KCkgfHwgKCFpc0xpbmsgJiYgIWxhc3RDb21wb25lbnQuaXNFbXB0eSgpKSkgewogICAgICAgICAg
ICAgbGVuID0gc3RkOjptaW48RFdPUkQ+KGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lv
biwgbGFzdENvbXBvbmVudC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KGxhc3RD
b21wb25lbnQpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZz
UGF0aEJ1ZmZlcik7CisgICAgICAgICAgICBsYXN0Q29tcG9uZW50LnN1YnN0cmluZygwLCBsZW4p
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBsZW4gPSBzdGQ6Om1pbjxEV09SRD4oZnNQYXRoTWF4TGVuZ3RoRXhj
bHVkaW5nRXh0ZW5zaW9uLCB1cmwubGVuZ3RoKCkpOwogICAgICAgICAgICAgU3RyaW5nVmlldyh1
cmwpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1
ZmZlcik7CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogCiAgICAgU3RyaW5nIHRpdGxlKHBhc3RlYm9h
cmRVUkwudGl0bGUpOwogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUg
PSBwYXN0ZWJvYXJkVVJMLnVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9
IHBhc3RlYm9hcmRVUkwudXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAg
ICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVS
TC51cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVCdWlsZGVyU3RhdGUuY3BwCmluZGV4IDJjNmM3MGU4NDk5NWMyOWFjMThmZjNjOTU0OWM3ODk5
NjhjYTAxY2EuLmRjYjQzMGIyMmY3NTQ2YmFkMzk3MDU4MzkzZDg0MmFiNGUwNmVhY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKQEAgLTE2NSwxNyArMTY1
LDE0IEBAIGJvb2wgQnVpbGRlclN0YXRlOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENT
U1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpCiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9w
ZXJhdGlvbnM7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KGluVmFsdWUpKSB7Ci0KICAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUpKSB7CiAgICAgICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZS5pc1VSSSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUo
KTsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7
Ci0KLSAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAg
ICAgICAgICBhdXRvIGZpbHRlclVSTCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7Cisg
ICAgICAgICAgICBhdXRvIGZyYWdtZW50ID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChmaWx0ZXJV
UkwpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuYXBwZW5kKFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGZpbHRlclVSTCwg
ZnJhZ21lbnQudG9TdHJpbmcoKSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAppbmRleCBkNzllODAw
ODgwODUwMDVmMWUyMzg1YTA4MWJhMTYwYWZhYmYyMjM5Li44MzQ3NmZlNzY5ZDZkYmUwOWNmNTQ3
OTAxNTZkYTY1ODhjMmRlN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmNwcApAQCAtNTMsMjMgKzUzLDI0IEBAIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aG9zdG5h
bWUoKSBjb25zdAogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnBvcnQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3VybC5wb3J0KCkgPyBTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkudmFsdWUo
KSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gcG9ydCA9IG1fdXJsLnBvcnQoKTsKKyAgICBy
ZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVyKCpwb3J0KSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cGF0aG5hbWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0
aCA9IG1fdXJsLnBhdGgoKTsKLSAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRo
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRv
U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV91cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8i
ICsgbV91cmwucXVlcnkoKTsKKyAgICByZXR1cm4gbV91cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBl
bXB0eVN0cmluZygpIDogbV91cmwucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3Ry
aW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5n
KCkgOiAiIyIgKyBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdXJsLmZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmNwcAppbmRleCAwZDUzYmNmOTIzZWQ2MTI2NTM5ZjM1ZGQyYjk0OWNhMTRiN2I1Njdj
Li4xODk2YzI0MTFiNWRjMGJmNjgyZjQyNTA4OGUzZTY4OTYwZDJjYWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkoU2VjdXJpdHlPcmlnaW5EYXRh
JiYKICAgICA6IG1fdG9wT3JpZ2luKFdURk1vdmUodG9wT3JpZ2luKSkKICAgICAsIG1fc2NvcGUo
V1RGTW92ZShzY29wZSkpCiB7Ci0gICAgQVNTRVJUKCFtX3Njb3BlLmhhc0ZyYWdtZW50KCkpOwor
ICAgIEFTU0VSVCghbV9zY29wZS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiB9CiAKIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1w
dHlLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNzM4NjI1
NGVkYTkyZTk4N2QyNjkyNGQ4NTZmYzNlZDY0YTMwM2ZlZi4uYmE3NGY2ZDEwMzQxMThlZjUxYzlj
ZGFlYzdiZWRlOTdjMGM1YjI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCkBAIC00NiwxMyArNDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1VUkwgc3Rh
dGljIGlubGluZSB0b3BPcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3N0
YXRpYyBVUkwgdG9wT3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAg
ICAgVVJMIHVybDsKICAgICB1cmwuc2V0UHJvdG9jb2wob3JpZ2luLnByb3RvY29sKCkpOwogICAg
IHVybC5zZXRIb3N0KG9yaWdpbi5ob3N0KCkpOwotICAgIGlmIChvcmlnaW4ucG9ydCgpKQotICAg
ICAgICB1cmwuc2V0UG9ydCgqb3JpZ2luLnBvcnQoKSk7CisgICAgdXJsLnNldFBvcnQob3JpZ2lu
LnBvcnQoKSk7CiAgICAgcmV0dXJuIHVybDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA5ZTM1MmZmOWQzZDJhYTIx
OGU5ZDYyNmU3ZWY1OTEyYTQ4ODI5ODlhLi42MzJhZmQ1NGZjMmY5ZjZhYzgyMzE3OGUxOWQzNGU3
NjdkZDQ4NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtNDI3LDggKzQyNyw3IEBAIFVSTCBzdGF0aWMgaW5saW5lIG9y
aWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgIFVSTCB1cmw7CiAgICAg
dXJsLnNldFByb3RvY29sKG9yaWdpbi5wcm90b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdChvcmln
aW4uaG9zdCgpKTsKLSAgICBpZiAob3JpZ2luLnBvcnQoKSkKLSAgICAgICAgdXJsLnNldFBvcnQo
Km9yaWdpbi5wb3J0KCkpOworICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKICAgICBy
ZXR1cm4gdXJsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAx
NTI4MTU1ODI1Njk4MWE0ODM4Y2Q2MzczYjM2NzFhNWVkMDQwYWY5Li5hMGRlNDlmMDg4NDRhODZj
NmUzMjk3NWNjNGJkNzA0Njc1YjJhZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVz
dDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgaWYg
KCF1c2VyLmlzTnVsbCgpKQogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2Vy
KTsKICAgICBpZiAoIXBhc3N3b3JkLmlzTnVsbCgpKQotICAgICAgICB1cmxXaXRoQ3JlZGVudGlh
bHMuc2V0UGFzcyhwYXNzd29yZCk7CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNz
d29yZChwYXNzd29yZCk7CiAKICAgICByZXR1cm4gb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50
aWFscywgYXN5bmMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IDllMGI2ODJjZGVkMmFmYmJmNTdhMDI4NDlkYzNi
NzlkNzlhNzY3MjEuLjk1NWQzODhlNWU5NmUzNTE5OTM2NzRmYjk0OWVhODdhZjNmZDMxZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tS
ZWRpcmVjdGlvbihSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcQogICAgICAg
ICAgICAgaGFuZGxlcihyZWRpcmVjdGlvbkVycm9yKHJlZGlyZWN0UmVzcG9uc2UsIG1ha2VTdHJp
bmcoIkNyb3NzLW9yaWdpbiByZWRpcmVjdGlvbiB0byAiLCByZWRpcmVjdFJlcXVlc3QudXJsKCku
c3RyaW5nKCksICIgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGlj
eTogbm90IGFsbG93ZWQgdG8gZm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24g
d2l0aCBub24gQ09SUyBzY2hlbWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChsb2NhdGlvbi5oYXNVc2VybmFtZSgpIHx8IGxvY2F0aW9uLmhhc1Bhc3N3
b3JkKCkpIHsKKyAgICAgICAgaWYgKGxvY2F0aW9uLmhhc0NyZWRlbnRpYWxzKCkpIHsKICAgICAg
ICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3Ry
aW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgp
LnN0cmluZygpLCAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xp
Y3k6IHJlZGlyZWN0aW9uIFVSTCAiLCBsb2NhdGlvbi5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlh
bHMiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcg
QEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ28KICAgICBodHRwc1VwZ3JhZGVDaGVja2VyLnF1ZXJ5
KHVybC5ob3N0KCkudG9TdHJpbmcoKSwgbV9zZXNzaW9uSUQsIFtyZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9zdCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChmb3VuZEhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gbmV3VVJM
ID0gcmVxdWVzdC51cmwoKTsKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMi
X3MpOworICAgICAgICAgICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQppbmRleCA2MjNhMWFkY2VjMGNmNDNkZTRlYTU2ZDU3Njk5MjUwY2I5Y2U1ZWUyLi5lNDQ0MDY0
NzA2NThhNjFiNzY3MzQ0OTBiMTU2MWI3ZTUzM2U1Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGF1dG8gdXJs
ID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSAmJiB1cmwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKSB7CiAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFz
c3dvcmQgPSB1cmwucGFzcygpOworICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7
CiAgICAgICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgdXJsID0gcmVx
dWVzdC51cmwoKTsKICAgICAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJgogICAgIAogICAgIGNvbnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91
c2VyID0gdXJsLnVzZXIoKTsKLSAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bh
c3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3Qu
aHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcAppbmRleCBmZTFiNjNlNzhmNjgwNDI4Y2ZmZTcwYWQ4ZjY4NTNhODFlMmRj
NzM3Li45YzA0NjUwNTg5MzljZjY1ZmMxMGY0NzcxZWQyMTY2NjJiNmI5ZjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtEYXRhVGFza1NvdXA6Ok5ldHdvcmtE
YXRhVGFza1NvdXAoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFzCiAgICAg
ICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSkgewogICAgICAgICAg
ICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICAgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFz
cygpOworICAgICAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICAg
ICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAgICAgICAgICBpZiAobV91c2Vy
LmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogCiAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwog
ICAgIHVybC5zZXRVc2VyKG1fdXNlcik7Ci0gICAgdXJsLnNldFBhc3MobV9wYXNzd29yZCk7Cisg
ICAgdXJsLnNldFBhc3N3b3JkKG1fcGFzc3dvcmQpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7
CiAKICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKIAogICAgIGNvbnN0IGF1
dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBt
X3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7
CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVl
c3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtMTExNywyNCArMTExNywyMiBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OnN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLCBOZXR3b3JrRGF0YQogfQogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQor
CiBib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmco
KSBjb25zdAogewogICAgIC8vIEZvbGxvdyBBcHBsZSdzIEhTVFMgYWJ1c2UgbWl0aWdhdGlvbiAx
OgogICAgIC8vICAiTGltaXQgSFNUUyBTdGF0ZSB0byB0aGUgSG9zdG5hbWUsIG9yIHRoZSBUb3Ag
TGV2ZWwgRG9tYWluICsgMSIKLSAgICBpZiAoaXNUb3BMZXZlbE5hdmlnYXRpb24oKSB8fCBob3N0
c0FyZUVxdWFsKG1fY3VycmVudFJlcXVlc3QudXJsKCksIG1fY3VycmVudFJlcXVlc3QuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSkgfHwgaXNQdWJsaWNTdWZmaXgobV9jdXJyZW50UmVxdWVzdC51cmwo
KS5ob3N0KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkK
KyAgICAgICAgfHwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5ob3N0KCkgPT0gbV9jdXJyZW50UmVx
dWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmhvc3QoKQorICAgICAgICB8fCBpc1B1YmxpY1N1
ZmZpeChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3QoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkpOwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1Byb3Rv
Y29sVXBncmFkZSgpIGNvbnN0CiB7Ci0gICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVzZSBt
aXRnYXRpb24gMjoKKyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGlnYXRpb24g
MjoKICAgICAvLyAiSWdub3JlIEhTVFMgU3RhdGUgZm9yIFN1YnJlc291cmNlIFJlcXVlc3RzIHRv
IEJsb2NrZWQgRG9tYWlucyIKLSAgICBpZiAoIWlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgJiYgIW1f
Y3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBpc1RvcExldmVsTmF2aWdhdGlvbigpCisgICAg
ICAgIHx8IG1fY3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCk7CiB9CiAKIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2UqIHNvdXBN
ZXNzYWdlKQpAQCAtMTE1Myw2ICsxMTUxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpo
c3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2EKICAg
ICBpZiAoc291cE1lc3NhZ2UgPT0gdGFzay0+bV9zb3VwTWVzc2FnZS5nZXQoKSkKICAgICAgICAg
dGFzay0+cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoc291cE1lc3NhZ2UpOwogfQorCiAjZW5kaWYK
IAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRTdGFydFJlcXVlc3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVVSTC5oCmluZGV4IDJkNzc2MzQ1ZTIyNDk2Y2I4NzUwYzJlNjE0OWNkMDY2YWMw
Yzc4MDMuLjRjODM4YWZiNzMwNTk2MzU4OTM5YWZiNWJiNDU2NGQwMGE4YTYyMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTYzLDI1ICs2MywyNSBAQCBwdWJsaWM6CiAgICAgV1RG
OjpTdHJpbmcgaG9zdCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5
KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwt
Pmhvc3QoKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFy
c2VkVVJMLT5ob3N0KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBwcm90
b2NvbCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAg
ICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPnByb3RvY29s
KCkudG9TdHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVS
TC0+cHJvdG9jb2woKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIHBhdGgo
KSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBy
ZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wYXRoKCkudG9TdHJp
bmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+cGF0aCgp
LnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQo
KSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBy
ZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5sYXN0UGF0aENvbXBv
bmVudCgpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5sYXN0
UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCBiMWMzNmRiMmMwNDY4YTY1MWQ2NDc2YTJmOWRl
Y2RiMzI5NjViZGRkLi4wN2NkMTBmMmEzZGY5OTBjODY2ZTBlZTg5Yzk5YTA2MzUwZmJmOWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpA
QCAtMjIwLDggKzIyMCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAo
ZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkp
IHsKLSAgICAgICAgICAgIFdURjo6VVJMIGRlc3RpbmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVV
UkxXaXRoRmlsZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkp
OwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5mcmFnbWVudElkZW50aWZpZXIoKS5s
ZW5ndGgoKSkKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25VUkwgPSBXVEY6OlVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUo
KSk7CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKQogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uVVJMLnNldEZyYWdtZW50SWRlbnRpZmll
cihkb3dubG9hZFByb3h5LnJlcXVlc3QoKS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKSk7CiAg
ICAgICAgICAgICBjb250cm9sbGVyLT5maW5pc2goZGVzdGluYXRpb25VUkwpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKaW5kZXggNDdiNTRjYWQ4NDAxMTU4NmVmYjgwOTliYTFhODkzNWI3MTI0YjVkMS4uMzkz
NmViN2I5MmYwYzM5ZTIxN2EzNTE5OGE2NGE3NDBjZGQyZDQ1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTE0LDE1
ICsxMTQsOSBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpsb2FkU3RvcmFnZUZyb21E
aXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaE1hcAogCiAgICAgICAgIEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5KTsK
IAotICAgICAgICBhdXRvIG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
X2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwotCiAgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNhbHRGb3JPcmlnaW4+PiBkZXZpY2VJZEhh
c2hTYWx0Rm9yT3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDog
b3JpZ2luUGF0aHMpIHsKLSAgICAgICAgICAgIFVSTCB1cmw7Ci0gICAgICAgICAgICB1cmwuc2V0
UHJvdG9jb2woImZpbGUiX3MpOwotICAgICAgICAgICAgdXJsLnNldFBhdGgob3JpZ2luUGF0aCk7
Ci0KLSAgICAgICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0ID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewor
ICAgICAgICAgICAgYXV0byBkZXZpY2VJZEhhc2hTYWx0ID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG9yaWdpblBhdGgpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKIAog
ICAgICAgICAgICAgaWYgKGhhc2hTYWx0U2l6ZSAhPSBkZXZpY2VJZEhhc2hTYWx0Lmxlbmd0aCgp
KSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAi
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBsZW5ndGggb2YgdGhlIGhhc2ggc2FsdCAoJWQp
IGlzIGRpZmZlcmVudCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHNhbHRzIGRlZmluZWQgaW4g
V2ViS2l0ICglZCkiLCBkZXZpY2VJZEhhc2hTYWx0Lmxlbmd0aCgpLCBoYXNoU2FsdFNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCmluZGV4IGQzMDU1NTMwODA0NjIzODEzMWYwYmZlZDQyZDVmMzAxMWYyYjFlMjUuLmI3YWY1
Y2RhZWI1ZDAzYjMwOWJhZGJkOTYzNTNhNTZiZmJkMmY3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTE0NSwxNiAr
MTQ1LDE1IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9y
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVs
ZUluZm8oKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBV
UkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBTdHJpbmcgZXh0ZW5zaW9uOwotICAgIFN0cmluZyBmaWxlbmFtZSA9IHVybC5sYXN0UGF0
aENvbXBvbmVudCgpOwotICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoJy8nKSkgewotICAgICAg
ICBzaXplX3QgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKLSAgICAg
ICAgaWYgKGV4dGVuc2lvblBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIGV4dGVuc2lvbiA9
IGZpbGVuYW1lLnN1YnN0cmluZyhleHRlbnNpb25Qb3MgKyAxKTsKLSAgICB9Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbi5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIGF1dG8gZmlsZW5hbWUg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy8n
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBzaXplX3QgbGFzdERvdFBvc2l0aW9uID0gZmls
ZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAobGFzdERvdFBvc2l0aW9uID09IG5vdEZv
dW5kKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBmaWxlbmFtZS5zdWJzdHJpbmco
bGFzdERvdFBvc2l0aW9uICsgMSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAogI2lm
ICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGMzYTNlZDRmNzdiNTFiMjFkYWQ1MmMxNmIwMjMwZjE1NGQwNGM2MzguLjA1ZDE1ZTg0
Y2IzOThiNmM0ZDcwYWRlMjliZTc1NzZiZTAwMGMzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI1Niw3ICsxMjU2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXMKICNlbmRpZgogCiAgICAgLy8gV2UgZmFpbGVkIHRvIGlzc3VlIGFuIHVuaXZlcnNh
bCBmaWxlIHJlYWQgYWNjZXNzIHNhbmRib3gsIGZhbGwgYmFjayB0byBpc3N1aW5nIG9uZSBmb3Ig
dGhlIGJhc2UgVVJMIGluc3RlYWQuCi0gICAgYXV0byBiYXNlVVJMID0gVVJMKFVSTCgpLCB1cmwu
YmFzZUFzU3RyaW5nKCkpOworICAgIGF1dG8gYmFzZVVSTCA9IHVybC50cnVuY2F0ZWRGb3JVc2VB
c0Jhc2UoKTsKICAgICBhdXRvIGJhc2VQYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0aCgpOwog
ICAgIGlmIChiYXNlUGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTIzNiw3ICs1
MjM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAgICAgICBib29sIHNob3VsZE9w
ZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24KICAgICAgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJbmZvLT5pc01haW5G
cmFtZSgpCi0gICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgPyAhaG9zdHNBcmVFcXVhbChtX21h
aW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2UpCisgICAgICAgICAgICAmJiAo
bV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgp
Lmhvc3QoKSkKICAgICAgICAgICAgICYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25U
eXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2FyZDsKIAogICAgICAgICBh
dXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5h
dGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmln
aW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlh
dGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKQEAgLTUzNjIsNyArNTM2Miw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7CiAKICAgICAg
ICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRB
Y3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7
Ci0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgPyAhaG9zdHNB
cmVFcXVhbChtX21haW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2U7CisgICAg
ICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUt
PnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICAgICAgYXV0byBuYXZp
Z2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJhbWVO
YW1lLCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uQWN0aW9u
LmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBAIC01NTYwLDcgKzU1NjAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpbwogCiAgICAgICAgIHJlcGx5KG5ld1BhZ2UtPndlYlBhZ2VJ
RCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMobV9wcm9jZXNzLCAqbmV3UGFnZS0+ZHJh
d2luZ0FyZWEoKSkpOwogCi0gICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5r
c0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJlRXF1YWwoVVJMKHsgfSwg
bWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxk
U3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IFVSTCh7IH0s
IG1haW5GcmFtZVVSTCkuaG9zdCgpID09IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogCiAjaWYgSEFW
RShBUFBfU1NPKQogICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0
aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gdHJ1ZTsKQEAgLTU1NjgsNyArNTU2
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAgICAgfTsKIAogICAgIGF1dG8gdXNlcklu
aXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdh
dGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgIGJvb2wgc2hv
dWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwob3JpZ2luYXRpbmdGcmFtZUluZm8tPnJl
cXVlc3QoKS51cmwoKSwgcmVxdWVzdC51cmwoKSk7CisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLmhvc3QoKSAhPSByZXF1
ZXN0LnVybCgpLmhvc3QoKTsKICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmln
YXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2lu
YXRpbmdGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1
ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKIAogICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b24pLCAqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHdpbmRvd0ZlYXR1cmVzID0gV1RGTW92ZSh3aW5kb3dGZWF0
dXJlcyldIChSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggYzI1ODhhOGEwOTFkNGIwODc1MjhjYzMyNTg4ZDcwZTNiNDUzMWJlZi4u
ZTRhODZmYWFmMzE4MzhjOGNmYTNlZDc5ZTg5Yjg5NGRjNWMyMDIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01NjcsMTEgKzU2NywxMCBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IFN0cmluZwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHVy
bFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KICAgICAvLyBHZXQgdXJsJ3Mg
YmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy4KLSAg
ICBVUkwgYmFzZVVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKLSAgICBTdHJpbmcgcGF0
aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICBhdXRvIHBhdGggPSB1cmwudHJ1bmNh
dGVkRm9yVXNlQXNCYXNlKCkuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAocGF0aC5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gQ2xpZW50IGxvYWRzIGFuIGFsdGVy
bmF0ZSBzdHJpbmcuIFRoaXMgZG9lc24ndCBncmFudCB1bml2ZXJzYWwgZmlsZSByZWFkLCBidXQg
dGhlIHdlYiBwcm9jZXNzIGlzIGFzc3VtZWQKICAgICAvLyB0byBoYXZlIHJlYWQgYWNjZXNzIHRv
IHRoaXMgZGlyZWN0b3J5IGFscmVhZHkuCiAgICAgbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFk
QWNjZXNzLmFkZChwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRl
eCAzMTVjZjNmZjEzNDE0YmUxODAzMWY3MDE2YWQ3MjY2NTE0YzQ0OTVjLi5mMzQyM2E5MmFiYWQ5
YmZhYTBmOGVlZDkyMTJiZTBhMmE3YzVkNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0
aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAg
ICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiBpbiBkb21haW5zLmdldCgpKSB7CiAgICAg
ICAgICAgICAgICAgVVJMIHVybCB7IFVSTCgpLCBkb21haW4gfTsKICAgICAgICAgICAgICAgICBp
ZiAodXJsLnByb3RvY29sKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICB1cmwuc2V0
UHJvdG9jb2woImh0dHBzIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgdXJsLnNldFByb3RvY29s
KCJodHRwcyIpOwogICAgICAgICAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gYXBwQm91bmREb21haW4geyB1cmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggOTAzOTkwYmY5NGU4Mzg1ZmRlOWYxNTRjM2QzNWRhZTUzM2QwMDAzYi4u
NDg3NTFhYmY0ODMyNDU4OTYxYmU3M2FhNWE1OTViMDVkZWNlYWY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYwLDE5ICs2MCwxMCBAQCBWZWN0b3I8U2VjdXJpdHlP
cmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMo
KQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwot
ICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7Ci0gICAgICAg
IFVSTCB1cmw7Ci0gICAgICAgIHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAgICAgIHVy
bC5zZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgIFN0cmluZyBtZWRpYUtleUlkZW50aWZp
ZXIgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLQotICAgICAgICBhdXRvIHNlY3VyaXR5T3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5
SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICByZXN1bHRzLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOworICAg
IGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG9yaWdpblBhdGgpLmxhc3RQYXRoQ29tcG9u
ZW50KCkudG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOwogICAgIH0KIAogICAgIHJl
dHVybiByZXN1bHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KaW5kZXggYWVkMzAxYTU0ZGQ5OWJlYjY4ZmIxNDM4ZDJkMWMyNTRkMDMw
MTZlNC4uZTRlZmE0ODA5ZjBhM2ZmNTBhNjE2ZmUxMWE3NTA1ODlhNDc4ZWFlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0x
NTYyLDEwICsxNTYyLDggQEAgdm9pZCBQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVudCgpCiAg
ICAgaWYgKFttX3BkZkRvY3VtZW50IGlzTG9ja2VkXSkKICAgICAgICAgY3JlYXRlUGFzc3dvcmRF
bnRyeUZvcm0oKTsKIAotICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDopXSkgewotICAgICAgICBTdHJpbmcgcGRm
VVJMRnJhZ21lbnQgPSBtX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6cGRmVVJMRnJhZ21lbnRdOwot
ICAgIH0KKyAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pCisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxl
ciBzZXRVUkxGcmFnbWVudDptX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLmNyZWF0
ZU5TU3RyaW5nKCkuZ2V0KCldOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c2V0U3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuY3BwCmluZGV4IDc2OGJhMmQ3YzQ2ODZjMDZlZTk3NGFiYmQ2NTI1NDExZjNiYmNj
OTMuLjQxZDNlZDg1ZTMzN2M1MTZjYjVjZGUwZDk3Y2UyMThjYTIxNTE1ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjQsMTcgKzI0LDEzIEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKIAotI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50Lmgi
Ci0KICNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250
ZXh0TWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAt
NDIsNyArMzgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBX
ZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVEZXN0cm95ZWQoKQogewpAQCAtNTYsMTkg
KzUxLDIxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVS
TCYpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKKwordm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUp
CiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKTsKLSAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgU3RyaW5nIGVu
Y29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAg
ZW5jb2RlZC5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBhdXRvIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVy
bCA9ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBlbmNvZGVkICsgIiZpZT1V
VEYtOCZvZT1VVEYtOCI7CisgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0ZWRUZXh0KCk7CisgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOworICAg
IHNlYXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5n
KTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBz
ZWFyY2hVUkwgPSBVUkwgeyB7IH0sICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIg
KyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCi0gICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGlu
ZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5tYWluRnJhbWUo
KS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihVUkwgeyBVUkwgeyB9LCB1cmwgfSwgeyB9LCBudWxs
cHRyLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmcsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93KTsKLSAgICB9CisgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNh
dG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CisgICAgcGFnZS0+bWFpbkZy
YW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VhcmNoVVJMLCB7IH0sIG51bGxwdHIsIFdl
YkNvcmU6OkxvY2tIaXN0b3J5OjpObywgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8s
IFdlYkNvcmU6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogfQogCiB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKQpAQCAtOTEs
MTQgKzg4LDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVha2luZygpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwogI2VuZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJ
TElUWV9DT05URVhUX01FTlVTKQorCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29u
dGV4dE1lbnUoKQogewogICAgIG1fcGFnZS0+Y29udGV4dE1lbnUoKS0+c2hvdygpOwogfQorCiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA4MDk0YTYyODIyNjFi
NWU4Mzk3NDVkODZlNjA0M2FmNGNlNmM3MjM4Li4zMGM2ZmZlMjNmMWU0OWYxNWY2NjgzOGI2ODQx
YjU2NjJjN2VlZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIFN0cmluZyB0aXRsZSA9IGxh
YmVsOwogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSB1cmwubGFz
dFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQo
KS50b1N0cmluZygpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
dGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQppbmRleCBjODQ0OGM1YWMxZjQzNjJlNDQwM2MzYWMyOWEyODZhOWFmNWVi
YjhlLi5jY2FlMjEyYzU2Y2E0ODkxYjY3YzZkM2JlZTRjZDMzMTkyYjJhNGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtODgyLDcgKzg4Miw3IEBAIHN0YXRpYyBCT09MIHNob3Vs
ZFRyeUFwcExpbmsoV2ViVmlldyAqd2ViVmlldywgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYKICAgICBpZiAoIWFjdGlvbi5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAg
cmV0dXJuIE5POwogCi0gICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5kb2N1bWVu
dCgpICYmIGhvc3RzQXJlRXF1YWwodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBhY3Rp
b24udXJsKCkpKQorICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQo
KSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaG9zdCgpID09IGFjdGlvbi51cmwo
KS5ob3N0KCkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIHJldHVybiBZRVM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA0M2JmZGVlOTY2ZWQ3
YTdhZTY3Njg5N2I5ZWNkOTkyYWQyOWY4YWFlLi5jNjkwNzJjNzQzYjBhZTRlZmNlMWVmMTM2MmMw
M2U3ZGI0NmI0MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTIyOTUsMTQgKzIyOTUsMTAgQEAgLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9k
b2N1bWVudEZyYWdtZW50Rm9yV2ViQXJjaGl2ZTooV2ViQXJjaGl2ZSAqKXdlYkFyY2hpdmUKIAog
LSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50Rm9ySW1hZ2VEYXRhOihO
U0RhdGEgKilkYXRhIHdpdGhSZWxhdGl2ZVVSTFBhcnQ6KE5TU3RyaW5nICopcmVsYXRpdmVVUkxQ
YXJ0IGFuZE1JTUVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlCiB7Ci0gICAgV2ViUmVzb3VyY2Ug
KnJlc291cmNlID0gW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6
VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChyZWxhdGl2ZVVSTFBhcnQpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOm1pbWVU
eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5j
b2RpbmdOYW1lOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lTmFtZTpuaWxdOwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdt
ZW50ID0gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291
cmNlOnJlc291cmNlXTsKLSAgICBbcmVzb3VyY2UgcmVsZWFzZV07Ci0gICAgcmV0dXJuIGZyYWdt
ZW50OworICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpkYXRhCisgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KFN0cmluZyB7IHJlbGF0aXZlVVJMUGFydCB9KQorICAgICAgICBNSU1FVHlwZTptaW1lVHlwZSB0
ZXh0RW5jb2RpbmdOYW1lOm5pbCBmcmFtZU5hbWU6bmlsXSk7CisgICAgcmV0dXJuIFtbc2VsZiBf
ZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZS5n
ZXQoKV07CiB9CiAKIC0gKEJPT0wpZm9jdXNlZE5vZGVIYXNDb250ZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1MjBlYTU2NjRhZjI4
NzU2OWE4NTVjNzRiODFjZWE1NGM3ZThlMjAyLi5lZjg2MmU1YWFhYWEwOTQ3YTNiNzEwZDA3YmJj
ZTc4ODhkNzNkMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KQEAgLTIzMDYsNyArMjMwNiw3IEBAIC0gKHZvaWQpY2xvc2UKIAogLSAoRE9N
RG9jdW1lbnRGcmFnbWVudCAqKV93ZWJfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihO
U1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXBhc3Rl
Ym9hcmRUeXBlIGltYWdlTUlNRVR5cGU6KE5TU3RyaW5nICopaW1hZ2VNSU1FVHlwZQogewotICAg
IGF1dG8gZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlwZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVu
Y2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAiLiJdOworICAgIFN0cmluZyBmaWxlbmFtZSA9
IFtpbWFnZU1JTUVUeXBlIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIi8i
IHdpdGhTdHJpbmc6QCIuIl07CiAgICAgYXV0byByZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJSZXNv
dXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9h
cmRUeXBlXQogICAgICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChmaWxlbmFt
ZSkgTUlNRVR5cGU6aW1hZ2VNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOm5pbCBmcmFtZU5hbWU6
bmlsXSk7CiAgICAgcmV0dXJuIFtbc2VsZiBfZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRX
aXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KaW5kZXggYWE1MWI2Mzk0ODg4YTcwYjdmMGQ5ZGJhMDUxZmUyNWIxZTE2ZmY5Ny4uZjE0
MTg2MzBlZjZlOWRhMmMzMzlmMGFkMWVkOGVlNjY5YTg4ODdhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQpAQCAtMjU1LDcgKzI1NSw3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlv
bkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgICAg
ICByZXR1cm4gW1tbV2ViQW5pbWF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOwogCiAgICAgTlNVUkwgKnVybCA9IF9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgp
OwotICAgIE5TU3RyaW5nICphYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmdd
OworICAgIFN0cmluZyBhYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwog
ICAgIGlmICh1cmwgJiYgX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKSB7CiAgICAgICAgIGlm
IChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAg
ICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCmluZGV4IGMyNjVlMDgzZTFmN2M5YWZjODNiYzhlMDFlOGY0NGVlZjdh
YjUzYjkuLjE0MmUxYzMxNjZjYWFkYWNkMzVkYTgyY2M2YjNjZTQ0MmY0YjY0N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTI1LDIxICsyNSwxNCBAQAogCiAjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVDbGllbnQuaCIKIAotI2luY2x1ZGUgIldlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5oIgotI2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgogI2luY2x1ZGUgIldlYlZp
ZXcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQogV2ViQ29udGV4dE1lbnVDbGllbnQ6OldlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTU3LDE3ICs1MCwxOCBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIAog
dm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3RlZFRleHQoKTsKLSAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgU3Ry
aW5nIGVuY29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7
Ci0gICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBhdXRvIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIHVybCA9ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBlbmNvZGVkICsg
IiZpZT1VVEYtOCZvZT1VVEYtOCI7CisgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0ZWRUZXh0KCk7CisgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgp
OworICAgIHNlYXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNo
U3RyaW5nKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAg
YXV0byBzZWFyY2hVUkwgPSBVUkwgeyB7IH0sICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJj
aD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihVUkwgeyBVUkwgeyB9LCB1cmwgfSwgeyB9
LCBudWxscHRyLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBSZWZl
cnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKLSAgICB9CisgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3Ig
aW5kaWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CisgICAgcGFnZS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VhcmNoVVJMLCB7IH0sIG51bGxw
dHIsIFdlYkNvcmU6OkxvY2tIaXN0b3J5OjpObywgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dDo6Tm8sIFdlYkNvcmU6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogfQogCiB2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgxN2UzNDE0ZjcyNGE2
ZjQ0ZTk0NDFiZDI1ODg0NWQ3OGZkYWNlY2MuLjk3ZjU3OWE0ZWNiODllNTYwYzIwYWIyZGMwY2Q1
NjEzNjQwNWY3NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1
cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHA6IFJl
bW92ZWQgdGhlIHRlc3QgZm9yCisgICAgICAgIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
IHNpbmNlIHdlIHJlbW92ZWQgdGhhdCBmdW5jdGlvbi4KKyAgICAgICAgVXBkYXRlZCBmb3IgcmVu
YW1lIG9mIFVSTDo6cGFzc3dvcmQgZnJvbSBVUkw6OnBhc3MuCisgICAgICAgIFVwZGF0ZWQgYXJn
dW1lbnRzIHRvIGlzTWF0Y2hpbmdEb21haW4gdG8gcGFzcyBsaXRlcmFscyB0aGF0IGNhbiBiZSBj
b252ZXJ0ZWQKKyAgICAgICAgdG8gU3RyaW5nVmlldyByYXRoZXIgdGhhbiBBU0NJSUxpdGVyYWws
IHdoaWNoIFN0cmluZ1ZpZXcgZG9lc24ndCB5ZXQgc3VwcG9ydC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkwpOiBVcGRhdGVkIGZvciByZW5hbWUgb2YgVVJMOjpw
YXNzd29yZCBmcm9tIFVSTDo6cGFzcy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVs
YXRpdmVVUkwpOiBEaXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVy
ZW5jZXMpOiBEaXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkxE
aWZmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFVzZXJQYXNz
d29yZCk6IERpdHRvLgorCiAyMDIwLTA0LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJzaXplZCBjYXJldCBhbmQgc2VsZWN0aW9uIHJlY3Rz
IGluIHRleHQgZmllbGRzIG9uIGdhbmppLmNvbSBhbmQgbmV0ZmxpeC5jb20vbG9naW4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCmluZGV4IDkzN2I5Zjk0MGJmOTExM2ZjZTM3MjNm
YWYwYzVlNWJmNmIxYzg3ZGUuLjZiZjI3NWE1MThkNDdhMGUyZjIxNzk0YTA3OGQ2MTljZTdjNTFm
ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBURVNUX0YoV1RGX1VSTCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAgICAgRVhQRUNUX1RS
VUUoISFrdXJsLnBvcnQoKSk7CiAgICAgRVhQRUNUX0VRKDgwODAsIGt1cmwucG9ydCgpLnZhbHVl
KCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoInVzZXJuYW1lIiksIGt1cmwudXNlcigpKTsKLSAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3MoKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygicGFzc3dvcmQiKSwga3VybC5wYXNzd29yZCgpKTsKICAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmlu
ZygiaW5kZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgIEVYUEVDVF9F
UShTdHJpbmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgpKTsKQEAgLTI2MSw1NyArMjYxLDYgQEAg
VEVTVF9GKFdURl9VUkwsIEVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIpCiAgICAgfQog
fQogCi1URVNUX0YoV1RGX1VSTCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCi17Ci0g
ICAgc3RydWN0IFRlc3RDYXNlIHsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMTsKLSAgICAgICAg
Y29uc3QgY2hhciogdXJsMjsKLSAgICAgICAgYm9vbCBleHBlY3RlZDsKLSAgICB9IGNhc2VzW10g
PSB7Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5jb20v
IiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxl
LmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIs
IHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5IiwgImh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
L3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAg
ICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29t
L3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsICJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgw
LyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8v
ZXhhbXBsZS5jb206ODAvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAg
ICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aD9x
dWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6
Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvb3RoZXJwYXRoIiwg
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9ub3Qt
ZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MC8iLCBmYWxzZX0sCi0gICAg
ICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFs
c2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFzaCIsICJodHRwOi8vZXhh
bXBsZS5jb206ODEvIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3Bh
dGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbTo4MS9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0
cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aD9xdWVyeSIsICJodHRw
Oi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxl
LmNvbTo4MS9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0
cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvb3RoZXJwYXRoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAg
ICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8vZmls
ZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVy
eSIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTov
Ly9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0
bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXJfZmlsZS5odG1sIiwg
ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTovLy9w
YXRoL3RvL290aGVyL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFs
c2V9LAotICAgICAgICB7ImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3Nk8v
NzZPLzc2Ty8iLCAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2MC83NjAv
NzYwLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZTovL2V4
YW1wbGUuY29tIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFzaCIs
ICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tLz9xdWVyeSIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbS8/cXVlcnkjaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFs
c2V9LAotICAgIH07Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgewotICAg
ICAgICBVUkwgdXJsMSA9IGNyZWF0ZVVSTCh0ZXN0LnVybDEpOwotICAgICAgICBVUkwgdXJsMiA9
IGNyZWF0ZVVSTCh0ZXN0LnVybDIpOwotICAgICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3RlZCwg
ZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQodXJsMSwgdXJsMikpCi0gICAgICAgICAgICA8
PCAiVGVzdCBmYWlsZWQgZm9yICIgPDwgdGVzdC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51cmwy
OwotICAgIH0KLX0KLQogVEVTVF9GKFdURl9VUkwsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkpCiB7
CiAgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKQEAg
LTM3NiwyMiArMzI1LDIyIEBAIFRFU1RfRihXVEZfVVJMLCBIb3N0SXNNYXRjaGluZ0RvbWFpbikK
IAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0pKTsKICAg
ICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7Ci0gICAg
RVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVDVF9U
UlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RS
VUUodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7CisgICAgRVhQRUNU
X1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwu
aXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNN
YXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UodXJs
LmlzTWF0Y2hpbmdEb21haW4oInJnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNo
aW5nRG9tYWluKCIub3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9t
YWluKCJ3dy53ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5n
RG9tYWluKCJodHRwOi8vd3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJs
LmlzTWF0Y2hpbmdEb21haW4oInJnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGlu
Z0RvbWFpbigiLm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4o
Ind3LndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWlu
KCJodHRwOi8vd3d3LndlYmtpdC5vcmciKSk7CiAKICAgICB1cmwgPSBjcmVhdGVVUkwoImZpbGU6
Ly8vd3d3LndlYmtpdC5vcmciKTsKIAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9t
YWluKFN0cmluZyB7IH0pKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihl
bXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJv
cmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5v
cmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJr
aXQub3JnIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJvcmci
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIikp
OworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmci
KSk7CiAKICAgICBVUkwgZW1wdHlVUkw7CiAgICAgRVhQRUNUX0ZBTFNFKGVtcHR5VVJMLmlzTWF0
Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VSTFBhcnNlci5jcHAKaW5kZXggMTAzOWU1NGIxYWViN2MyNjFmNWEyYWMzOTI4ZTExOTg3M2Iz
NmNjOC4uMDhhM2E5ZTk4ODNkMDY4YmNjM2ViNWRmMTUxZTYwZjcxYjQwN2M5ZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBl
Y3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNl
ciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwu
cGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29y
ZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOSw3ICsxMTksNyBAQCBz
dGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBy
b3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIs
IHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBh
c3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgRXhwZWN0ZWRQYXJ0cyYgcGEKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5w
cm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51
c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQs
IHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJs
LnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9z
dCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAt
MTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgCiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1
cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgs
IHVybC5wYXRoKCkpKTsKQEAgLTQ2MiwxOSArNDYyLDE5IEBAIFRFU1RfRihXVEZfVVJMUGFyc2Vy
LCBCYXNpYykKICAgICBjaGVja1VSTCgiaHR0cDovLzpAaG9zdCIsIHsiaHR0cCIsICIiLCAiIiwg
Imhvc3QiLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly9ob3N0LyJ9KTsKIH0KIAotc3RhdGljIHZv
aWQgdGVzdFVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZGVjb2Rl
ZCwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQorc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzd29yZChj
b25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRlY29kZWQsIGNvbnN0IFN0cmluZyYg
ZW5jb2RlZCkKIHsKICAgICBVUkwgdXNlclVSTChVUkwoKSwgbWFrZVN0cmluZygiaHR0cDovLyIs
IHZhbHVlLCAiQGV4YW1wbGUuY29tLyIpKTsKICAgICBVUkwgcGFzc1VSTChVUkwoKSwgbWFrZVN0
cmluZygiaHR0cDovL3VzZXI6IiwgdmFsdWUsICJAZXhhbXBsZS5jb20vIikpOwogICAgIEVYUEVD
VF9FUShlbmNvZGVkLCB1c2VyVVJMLmVuY29kZWRVc2VyKCkpOwotICAgIEVYUEVDVF9FUShlbmNv
ZGVkLCBwYXNzVVJMLmVuY29kZWRQYXNzKCkpOworICAgIEVYUEVDVF9FUShlbmNvZGVkLCBwYXNz
VVJMLmVuY29kZWRQYXNzd29yZCgpKTsKICAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgdXNlclVSTC51
c2VyKCkpOwotICAgIEVYUEVDVF9FUShkZWNvZGVkLCBwYXNzVVJMLnBhc3MoKSk7CisgICAgRVhQ
RUNUX0VRKGRlY29kZWQsIHBhc3NVUkwucGFzc3dvcmQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRl
c3RVc2VyUGFzcyhjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVuY29kZWQpCitz
dGF0aWMgdm9pZCB0ZXN0VXNlclBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0
cmluZyYgZW5jb2RlZCkKIHsKLSAgICB0ZXN0VXNlclBhc3ModmFsdWUsIHZhbHVlLCBlbmNvZGVk
KTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKHZhbHVlLCB2YWx1ZSwgZW5jb2RlZCk7CiB9CiAKIFRF
U1RfRihXVEZfVVJMUGFyc2VyLCBDcmVkZW50aWFscykKQEAgLTQ4MywyMCArNDgzLDIwIEBAIFRF
U1RfRihXVEZfVVJMUGFyc2VyLCBDcmVkZW50aWFscykKICAgICBhdXRvIGludmFsaWRTdXJyb2dh
dGUgPSB1dGYxNlN0cmluZzwzPih7MHhEODAwLCAnQScsICdcMCd9KTsKICAgICBhdXRvIHJlcGxh
Y2VtZW50QSA9IHV0ZjE2U3RyaW5nPDM+KHsweEZGRkQsICdBJywgJ1wwJ30pOwogCi0gICAgdGVz
dFVzZXJQYXNzKCJhIiwgImEiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUiLCAiJSIpOwotICAgIHRl
c3RVc2VyUGFzcygiJTI1IiwgIiUiLCAiJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlMjUyNSIs
ICIlMjUiLCAiJTI1MjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiVGWCIsICIlRlgiKTsKLSAgICB0
ZXN0VXNlclBhc3MoIiUwMCIsIFN0cmluZzo6ZnJvbVVURjgoIlwwIiwgMSksICIlMDAiKTsKLSAg
ICB0ZXN0VXNlclBhc3MoIiVGJTI1IiwgIiVGJSIsICIlRiUyNSIpOwotICAgIHRlc3RVc2VyUGFz
cygiJVglMjUiLCAiJVglIiwgIiVYJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlJTI1IiwgIiUl
IiwgIiUlMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIvCfkqkiLCAiJUMzJUIwJUMyJTlGJUMyJTky
JUMyJUE5Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIl8J+SqSIsICIlJUMzJUIwJUMyJTlGJUMyJTky
JUMyJUE5Iik7Ci0gICAgdGVzdFVzZXJQYXNzKHZhbGlkU3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1
Iik7Ci0gICAgdGVzdFVzZXJQYXNzKHJlcGxhY2VtZW50QSwgIiVFRiVCRiVCREEiKTsKLSAgICB0
ZXN0VXNlclBhc3MoaW52YWxpZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIp
OworICAgIHRlc3RVc2VyUGFzc3dvcmQoImEiLCAiYSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQo
IiUiLCAiJSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUyNSIsICIlIiwgIiUyNSIpOworICAg
IHRlc3RVc2VyUGFzc3dvcmQoIiUyNTI1IiwgIiUyNSIsICIlMjUyNSIpOworICAgIHRlc3RVc2Vy
UGFzc3dvcmQoIiVGWCIsICIlRlgiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlMDAiLCBTdHJp
bmc6OmZyb21VVEY4KCJcMCIsIDEpLCAiJTAwIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJUYl
MjUiLCAiJUYlIiwgIiVGJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJVglMjUiLCAiJVgl
IiwgIiVYJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJSUyNSIsICIlJSIsICIlJTI1Iik7
CisgICAgdGVzdFVzZXJQYXNzd29yZCgi8J+SqSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTki
KTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIl8J+SqSIsICIlJUMzJUIwJUMyJTlGJUMyJTkyJUMy
JUE5Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCh2YWxpZFN1cnJvZ2F0ZSwgIiVGMCU5MCU4NSU5
NSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQocmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwor
ICAgIHRlc3RVc2VyUGFzc3dvcmQoaW52YWxpZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRBLCAiJUVG
JUJGJUJEQSIpOwogfQogCiBURVNUX0YoV1RGX1VSTFBhcnNlciwgUGFyc2VSZWxhdGl2ZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0
RW5jb2RpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
clRleHRFbmNvZGluZy5jcHAKaW5kZXggYTI2ODE2ZGExNDkxZjZlM2IyMDU3YzY2YTdkY2E0NTlk
MTM2MTRkMy4uZTI2MTc5MzM0MjUyMjQzYmE1ZjE0MTgwZjcyMjRlYjc3NTRkY2ExZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNv
ZGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
clRleHRFbmNvZGluZy5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNv
bnMKICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3Qs
IHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBA
IC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBhdXRvIHVybCA9
IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9z
dCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZh
bHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397163</attachid>
            <date>2020-04-21 21:29:19 -0700</date>
            <delta_ts>2020-04-22 18:11:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200421212916.patch</filename>
            <type>text/plain</type>
            <size>203507</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY2ZTRiOTIyMTNlMzBmNjBkZjBhNDEw
NzU1NDgwNGZjNDNkNGE2MjEuLjBiY2MxMmE3MGZjN2FjNWY5ZWQ1YWQxZDJkY2Y2MWRkYzVjMGY5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJZ25vcmluZ051bGxpdHkpOiBBZGRl
ZC4gQ3VycmVudGx5IHRoZSBzYW1lIGFzIGVxdWFsLCBidXQKKyAgICAgICAgY291bGQgYmUgZGlm
ZmVybmV0IGluIHRoZSBmdXR1cmUuCisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmNvbnRhaW5z
IGNvbnN0KTogQWRkZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhCisgICAgICAgIGNvbnN0IGNoYXIq
IHNvIHRoZSBjYWxsIHNpdGUgZG9lc24ndCBoYXZlIHRvIGNvbnZlcnQgaXQgdG8gYSBTdHJpbmdW
aWV3LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBVcGRhdGVkIGZvciB0aGUg
YWRkaXRpb25zIGFib3ZlLgorICAgICAgICBBbHNvIGFkZGVkIGEgZGVmYXVsdCBzdGFydCBvZiAw
IHRvIHRoZSBmaW5kIGZ1bmN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0KTogUmVtb3ZlZCB1bm5lZWRl
ZCBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludFN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGl0dG8uCisgICAg
ICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9VSW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTogRGl0
dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEaXR0by4KKwogMjAyMC0wNC0xOSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVc2UgY3JlYXRlTlNBcnJh
eSBpbiBtYW55IG1vcmUgcGxhY2VzIHRoYXQgYnVpbGQgTlNBcnJheSBvYmplY3RzIGZyb20gQysr
IGNvbGxlY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRlYzY5OTg4NjE0OTAwMDgzMGE2NzhjZGQ1ZWU3
MjY5NThlMWU2Yi4uNDZlZDRjYWI3NDVlOTRkMjVlOGE5N2NjMDM1MTgyZjMwOWU2NGIwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiBy
ZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Om1hdGNoVVJMcyk6IFJlbW92ZWQg
dW5uZWVkZWQgY2FsbHMgdG8gaGFzUXVlcnkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmluaXRpYWxp
emVXaXRoKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpyZWRpcmVj
dCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRVUkxCYXNlZFBh
eW1lbnRNZXRob2RJZGVudGlmaWVyKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorCisgICAgICAgICog
TW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVZb3VUdWJlVVJMKTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2Vi
Q29yZTo6cXVlcnlLZXlzQW5kVmFsdWVzKTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV2Vi
Q29yZTo6cHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwpOiBVc2UgYXV0byBzaW5jZSBVUkwgcGll
Y2VzIGFyZQorICAgICAgICBub3cgcmV0dXJuZWQgYXMgU3RyaW5nVmlldy4KKyAgICAgICAgKFdl
YkNvcmU6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVS
TCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3IGFuZCBtYWtlU3RyaW5nIHJhdGhlciB0aGFuIFN0
cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc291cmNlTmFtZSk6IFVzZSBxdWVyeVdp
dGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQgY29uc3QpOgorICAgICAgICBVc2UgU3Ry
aW5nVmlldy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0VVJMKTogVXNlIHNldEhvc3RBbmRQb3J0LgorCisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZmluZEFuY2hvckVsZW1l
bnRGb3JMaW5rKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1
cm5zIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDogQWRkZWQgYSBj
b21tZW50LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMp
OiBVcGRhdGUgc2luY2UKKyAgICAgICAgbGFzdFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmlu
Z1ZpZXcuIEFsc28gZ290IHJpZCBvZiBzb21lIHN0cmFuZ2UKKyAgICAgICAgdXNlIG9mIEF0b21T
dHJpbmcgdGhhdCB3YXMgbm90IG5lY2Vzc2FyeSBhbmQgdXNlZCBXVEZNb3ZlIG1vcmUuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOiBVcGRhdGUgc2luY2UKKyAgICAgICAgbGFzdFBh
dGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBodG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkgY29uc3QpOgorICAgICAgICBVc2UgbWFr
ZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIsIGFuZCBTdHJpbmdWaWV3IGluc3RlYWQg
b2YKKyAgICAgICAgU3RyaW5nIGZvciBuYW1lIGFuZCBleHRlbnNpb24gdmFsdWVzLgorCisgICAg
ICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVn
aW5SZXBsYWNlbWVudEZvclR5cGUpOiBVcGRhdGUgc2luY2UgbGFzdFBhdGhDb21wb25lbnQKKyAg
ICAgICAgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBodG1sL01lZGlhRnJhZ21l
bnRVUklQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFGcmFnbWVudFVSSVBhcnNl
cjo6cGFyc2VGcmFnbWVudHMpOiBVcGRhdGUgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVudGlm
aWVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogaHRtbC9VUkxVdGlscy5oOiBD
aGFuZ2VkIHNldEhvc3QgdG8gdGFrZSBhIFN0cmluZ1ZpZXcsIGNoYW5nZWQKKyAgICAgICAgdmFy
aW91cyBvdGhlciBmdW5jdGlvbnMgdG8gY2FsbCB0b1N0cmluZywgc2luY2UgdGhlIHVuZGVybHlp
bmcgVVJMCisgICAgICAgIGZ1bmN0aW9uIG5vdyByZXR1cm5zIGEgU3RyaW5nVmlldy4gVXBkYXRl
ZCBuYW1lcyBzaW5jZSAicGFzcyIgaXMgbm93CisgICAgICAgICJwYXNzd29yZCIuCisgICAgICAg
IChXZWJDb3JlOjpjb3VudEFTQ0lJRGlnaXRzKTogQWRkZWQuIFJlcGxhY2VzIHVudXN1YWwgZnVu
Y3Rpb24KKyAgICAgICAgbmFtZWQgcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uIGJlY2F1c2Ug
d2UgY2FuIHVzZSBTdHJpbmdWaWV3IG5vdworICAgICAgICBhbmQgc28gZG9uJ3QgbmVlZCBzdWNo
IGFuIHVudXN1YWwgZnVuY3Rpb24uCisKKyAgICAgICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252
ZXJzaW9uUmVxdWVzdCk6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAgICAgICAgQWxzbyByZW1vdmVk
IHVubmVjZXNzYXJ5IHVzZSBvZiBBU0NJSUxpdGVyYWwgdGhhdCBodXJ0cyBwZXJmb3JtYW5jZQor
ICAgICAgICBhIHRpbnkgYml0LgorICAgICAgICAoV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
Ojp1cmxGb3JUZXN0aW5nIGNvbnN0KTogVXNlIG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBv
ZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rp
b25VUkwpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXF1ZXN0KTogVXNlIGhhc0NyZWRlbnRpYWxzLgorCisgICAgICAgICogbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bv
c3RGb3JtRGF0YVRvVVJMKTogVXBkYXRlIHNpbmNlIHF1ZXJ5IHJldHVybnMKKyAgICAgICAgU3Ry
aW5nVmlldy4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmls
ZVVSTCk6IFVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoLgorCisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hbmlmZXN0
UGF0aCk6IFJldHVybiBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlm
ZXN0KTogVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xs
ZWN0aW9uIGNvbnN0KTogVXBkYXRlIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmVyIHJl
dHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpz
cGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1ZXN0VVJMKTogRGl0dG8uCisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxU
b0ZyYWdtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRv
RnJhZ21lbnRJbnRlcm5hbCk6IFVwZGF0ZWQgbG9nIG1lc3NhZ2UuCisKKyAgICAgICAgKiBwYWdl
L0hpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRl
ZCk6IFVwZGF0ZWQgZm9yIFVSTDo6cGFzc3dvcmQgbmFtZSBjaGFuZ2UKKyAgICAgICAgYW5kIHRv
IHVzZSB0aGUgbmV3IHN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyIHJhdGhl
ciB0aGFuIHRoZQorICAgICAgICBvbGQgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQuCisK
KyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9u
OjpocmVmIGNvbnN0KTogVXNlIHJlbW92ZUNyZWRlbnRpYWxzLgorICAgICAgICAoV2ViQ29yZTo6
TG9jYXRpb246OnBvcnQgY29uc3QpOiBTdHJlYW1saW5lZC4KKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2F0aW9uOjpwYXRobmFtZSBjb25zdCk6IFVzZSBhbiBBU0NJSUxpdGVyYWwuCisgICAgICAgIChX
ZWJDb3JlOjpMb2NhdGlvbjo6c2VhcmNoIGNvbnN0KTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVz
dGlvbk1hcmsuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aGFzaCBjb25zdCk6IFVzZSBm
cmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24uCisgICAgICAgIChXZWJDb3Jl
OjpMb2NhdGlvbjo6c2V0UG9ydCk6IFVzZSBwYXJzZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2Uv
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDogQ29kaW5nIHN0eWxlIHR3ZWFrcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KToKKyAgICAgICAg
VXNlIGNvbnRhaW5zIGluc3RlYWQgb2YgcmV2ZXJzZUZpbmQgdG8gY2hlY2sgZm9yIGEgcGVyaW9k
IGluIHRoZSBmaWxlbmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkKTogVXBkYXRlZCBz
aW5jZSBsYXN0UGF0aENvbXBvbmVudCBpcyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0ludGVybmFsUHJvdG9jb2wpOiBVcGRhdGVkIHRv
IHVzZSBtYWtlU3RyaW5nIHNpbmNlCisgICAgICAgIHNldFByb3RvY29sIHRha2VzIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oOiBSZW5hbWVkIG1fcGFzcyB0byBtX3Bhc3N3b3JkCisgICAgICAgIGFuZCBjYWxsIHBhc3N3
b3JkIGluc3RlYWQgb2YgcGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
OjpyZW1vdmVDcmVkZW50aWFscyk6IFVzZSByZW1vdmVDcmVkZW50aWFscy4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKTogVXBkYXRlZCBm
b3IgbV9wYXNzd29yZAorICAgICAgICBuYW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkIGFu
ZAorICAgICAgICBwYXNzd29yZCBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKTogRGl0dG8u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M6OnNldFVzZXJQYXNzKTogVXBk
YXRlZCBmb3Igc2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVQcm94eVVybCk6IFVzZSBoYXNDcmVkZW50aWFscywgdXBkYXRlZCBmb3IgcGFzc3dvcmQgbmFt
ZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRp
bmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6cGFzc3dvcmQgY29u
c3QpOiBVcGRhdGVkIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IFVw
ZGF0ZWQgZm9yCisgICAgICAgIG1fcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q3JlZGVudGlhbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IFVwZGF0ZWQgZm9yIG1fcGFz
c3dvcmQgYW5kCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlcy4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbik6IFVwZGF0ZWQgZm9yIG1f
cGFzc3dvcmQKKyAgICAgICAgYW5kIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdlcy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVu
dGljYXRpb24pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
Y3JlYXRlU291cFVSSSBjb25zdCk6IFVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNvdXBVUklUb1VSTCk6IFVwZGF0ZWQgZm9yIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdl
LgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVVUkwpOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVy
bnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6ZmlsZXN5c3RlbVBhdGhGcm9tVXJs
T3JUaXRsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGUpOiBE
aXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyU3RhdGU6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOiBV
cGRhdGVkIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBvcnQgY29uc3QpOiBTdHJlYW1saW5lZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpwYXRobmFtZSBjb25zdCk6IFVzZSBhbiBBU0NJ
SUxpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6c2VhcmNoIGNvbnN0
KTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJMb2NhdGlvbjo6aGFzaCBjb25zdCk6IFVzZSBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVh
ZGluZ051bWJlclNpZ24uCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5KToKKyAgICAgICAgVXBk
YXRlZCBmb3IgaGFzRnJhZ21lbnRJZGVudGlmaWVyIG5hbWUgY2hhbmdlLgorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvcE9yaWdpblVSTCk6IFNpbXBsaWZpZWQgY29kZSB0byBzZXQgcG9y
dC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpblVSTCk6IERpdHRvLgorCisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKTogVXBk
YXRlZCBmb3Igc2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisKIDIwMjAtMDQtMTkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXNlIGNyZWF0ZU5TQXJy
YXkgaW4gbWFueSBtb3JlIHBsYWNlcyB0aGF0IGJ1aWxkIE5TQXJyYXkgb2JqZWN0cyBmcm9tIEMr
KyBjb2xsZWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwNmRkMWNjNzJhOWVhZGE4YzdmOGQ4YjY1OGYyMzVj
OWJjNDJkMTIyLi42MzZiZDc1YzU5YWY4ODVhYzIxZjNkMzY3YWFjZDIxOWY1OWNmODk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVy
bmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW9u
KTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNr
ZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICBSZW1vdmUgdXNl
IG9mIEFTQ0lJTGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKTogVXBkYXRlZAorICAgICAg
ICBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cCk6IFVwZGF0
ZWQgZm9yCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGly
ZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNo
b3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcgY29uc3QpOgorICAgICAgICBVc2UgIT0gdG8gY29t
cGFyZSBob3N0cywgcmF0aGVyIHRoYW4gaG9zdHNBcmVFcXVhbC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlIGNvbnN0
KToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgfHwgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIGFi
b3ZlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJM
Ojpob3N0IGNvbnN0KTogUmVtb3ZlZCB2YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6Omhvc3QKKyAg
ICAgICAgcmV0dXJucyBudWxsIGlmIHRoZSBVUkwgaXMgaW52YWxpZC4KKyAgICAgICAgKEFQSTo6
VVJMOjpwcm90b2NvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6OnBhdGggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKEFQSTo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBjb25zdCk6
IERpdHRvLiBBbHNvIGFkZGVkIHRvU3RyaW5nCisgICAgICAgIHNpbmNlIFdURjo6VVJMOjpsYXN0
UGF0aENvbXBvbmVudCBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2gpOiBVc2UgaGFzRnJhZ21lbnRJZGVudGlmaWVyLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2spOgorICAgICAg
ICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCBhbmQK
KyAgICAgICAgdXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnBhdGhFeHRlbnNpb24pOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRo
Q29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LiBSZWZhY3RvcmVkIGEgbGl0
dGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
IFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCByYXRoZXIgdGhhbiBob3N0c0FyZUVxdWFsLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Up
OiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwp
OgorICAgICAgICBVc2UgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6Cisg
ICAgICAgIERvbid0IHVzZSBBU0NJSUxpdGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNldFByb3RvY29s
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5zdGFsbFBE
RkRvY3VtZW50KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0
dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZAorICAgICAgICB0aGUgaW1w
bGVtZW50YXRpb24gYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGxhc3RQ
YXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCiAyMDIwLTA0LTE5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBjcmVhdGVOU0Fy
cmF5IGluIG1hbnkgbW9yZSBwbGFjZXMgdGhhdCBidWlsZCBOU0FycmF5IG9iamVjdHMgZnJvbSBD
KysgY29sbGVjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAyOGUxYzRhZDY3
MTU5ODdmY2NjMmMzMGE3ZDE3MGFlMmRjNDk1YmMwLi4zNmMyNjg1ZTZkODdlMzVjMDAzMjVkZWZj
NjcyN2ZiYjk0Y2I5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mg
b2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKHNo
b3VsZFRyeUFwcExpbmspOiBDb21wYXJlIGhvc3RzIHdpdGggPT0gcmF0aGVyIHRoYW4gdXNpbmcg
aG9zdHNBcmVFcXVhbC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9kb2N1bWVudEZyYWdtZW50Rm9ySW1hZ2VEYXRhOndpdGhSZWxhdGl2ZVVS
TFBhcnQ6YW5kTUlNRVR5cGU6XSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhS
ZWxhdGl2ZVBhcnQgdGFrZXMgYSBTdHJpbmdWaWV3LiBBbHNvIHVzZSBSZXRhaW5QdHIKKyAgICAg
ICAgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBjYWxsIHRvIHJlbGVhc2UuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfd2ViX2RvY3Vt
ZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkVHlwZTppbWFnZU1JTUVUeXBlOl0p
OgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEg
U3RyaW5nVmlldy4gTm8gY29udmVyc2lvbgorICAgICAgICBkaXJlY3RseSBmcm9tIE5TU3RyaW5n
IHRvIFN0cmluZ1ZpZXcsIHNvIHdlIGhhdmUgdG8gZXhwbGljaXRseSB1c2UgYSBTdHJpbmcuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250
cm9sbGVyXSk6IFVwZGF0ZQorICAgICAgICBzaW5jZSBwcm90b2NvbElzIHRha2VzIGEgU3RyaW5n
Vmlldy4gTm8gY29udmVyc2lvbiBkaXJlY3RseSBmcm9tCisgICAgICAgIE5TU3RyaW5nIHRvIFN0
cmluZ1ZpZXcsIHNvIHdlIGhhdmUgdG8gZXhwbGljaXRseSB1c2UgYSBTdHJpbmcuCisKIDIwMjAt
MDQtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
VXNlIGNyZWF0ZU5TQXJyYXkgaW4gbWFueSBtb3JlIHBsYWNlcyB0aGF0IGJ1aWxkIE5TQXJyYXkg
b2JqZWN0cyBmcm9tIEMrKyBjb2xsZWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDhhZmIzMTVhZGRmMzg0YTFhNDQ4ZjM4ODZkOTUyNjU2N2NiNTQ2ZDQuLjY0MWI3MDNlYTZl
YTU3YTJhNDIyNDRhMTg2ZDQ5YzI5OTY1YzE5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1cm5p
bmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKTogU3Ry
ZWFtbGluZWQKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIGEgYml0LgorCiAyMDIwLTA0LTIw
ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDbGFz
c2VzIG1hcmtlZCBmaW5hbCBzaG91bGQgbm90IHVzZSBwcm90ZWN0ZWQgYWNjZXNzIHNwZWNpZmll
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKaW5kZXggMmM1MDRiY2RhOGJkMzJiNzhiMzk0YWQyMmYwNzkxMmE4MzIxMDFkNy4uOGVh
NWMwNDY5NzAwOTZjMGNjNjk5MTVmMzhhOTE2ODAyNTlkMDVkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI2
ICs0MiwxNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEy
PiBDaGFyQnVmZmVyOwotdHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7Ci0K
LXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0K
LS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRo
ZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVy
IG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGlu
IHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWlu
YXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGNoYXIqIGRlc3QpCisvLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24s
IGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgorLy8gVGhlIGRl
c3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFy
ZSBhbGxvd2VkIGluIHRoZQorLy8gc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFk
ZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorc3RhdGljIHZvaWQg
Y29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0aW5hdGlvbikKIHsKLSAg
ICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBz
dHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICBjb25zdCBV
Q2hhciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7
CisgICAgICAgIGF1dG8gc291cmNlID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc291
cmNlW2ldKTsKICAgICB9CiB9CiAKQEAgLTgzLDE2ICs3NCwxMyBAQCB2b2lkIFVSTDo6aW52YWxp
ZGF0ZSgpCiAKIFVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKIHsKLSAgICBVUkxQYXJzZXIgcGFy
c2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgKnRoaXMgPSBVUkxQYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKS5yZXN1
bHQoKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKK3N0YXRp
YyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICAvLyBCcm93
c2VycyBpZ25vcmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sCi0gICAg
Ly8gY2hhcmFjdGVycyBmcm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNo
YXIgaGVyZQotICAgIC8vIHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250
cm9sIGNoYXJhY3RlcnMuCi0gICAgcmV0dXJuIGMgPD0gJyAnOworICAgIC8vIElnbm9yZSBsZWFk
aW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1
cm4gY2hhcmFjdGVyIDw9ICcgJzsKIH0KIAogVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
QEAgLTEwMiw0OCArOTAsNDMgQEAgVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0
CitTdHJpbmdWaWV3IFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAogewogICAgIGlmICgh
aGFzUGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICB1bnNpZ25lZCBlbmQgPSBtX3BhdGhFbmQgLSAxOwogICAgIGlmIChtX3N0cmluZ1tl
bmRdID09ICcvJykKICAgICAgICAgLS1lbmQ7CiAKICAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmlu
Zy5yZXZlcnNlRmluZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICBpZiAoc3RhcnQgPCBwYXRoU3RhcnQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICArK3N0YXJ0OwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0g
c3RhcnQgKyAxKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0
YXJ0LCBlbmQgLSBzdGFydCArIDEpOwogfQogCiBTdHJpbmdWaWV3IFVSTDo6cHJvdG9jb2woKSBj
b25zdAogeworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7CiB9
CiAKIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7
CiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0
RW5kIC0gc3RhcnQpOwogfQogCiBPcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1f
c3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAx
LCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmlj
dChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAt
IDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJu
IG51bWJlcjsKKyAgICByZXR1cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VVSW50MTYoU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEpKSA6
IFdURjo6bnVsbG9wdDsKIH0KIAogU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdApAQCAt
MTU1LDk0ICsxMzgsMTAwIEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIAogU3Ry
aW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3Vs
dCA9IG1fc3RyaW5nLnN1YnN0cmluZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOworICAg
IGlmICghaGFzQ3JlZGVudGlhbHMoKSkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
ZygwLCBwYXRoU3RhcnQoKSk7CiAKLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0
ID4gMCkgewotICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0g
ICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJT
dGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0KKyAgICByZXR1cm4gbWFrZVN0
cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0
YXJ0KSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgp
LCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKQorICAgICk7Cit9CiAKLSAgICByZXR1cm4gcmVz
dWx0Oworc3RhdGljIE9wdGlvbmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdW
aWV3IGlucHV0LCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChp
bmRleCArIDMgPiBsZW5ndGggfHwgaW5wdXRbaW5kZXhdICE9ICclJykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIGRpZ2l0MSA9IGlucHV0W2luZGV4ICsgMV07CisgICAg
YXV0byBkaWdpdDIgPSBpbnB1dFtpbmRleCArIDJdOworICAgIGlmICghaXNBU0NJSUhleERpZ2l0
KGRpZ2l0MSkgfHwgIWlzQVNDSUlIZXhEaWdpdChkaWdpdDIpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiB0b0FTQ0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwog
fQogCiBzdGF0aWMgU3RyaW5nIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3Ry
aW5nVmlldyBpbnB1dCkKIHsKLSAgICBhdXRvIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7
Ci0gICAgaWYgKCFpbnB1dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0g
ICAgVmVjdG9yPExDaGFyPiBwZXJjZW50RGVjb2RlZDsKLSAgICBwZXJjZW50RGVjb2RlZC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGlucHV0TGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaW5wdXRMZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaW5wdXRbaV0gPT0gJyUnCi0g
ICAgICAgICAgICAmJiBpbnB1dExlbmd0aCA+IDIKLSAgICAgICAgICAgICYmIGkgPCBpbnB1dExl
bmd0aCAtIDIKLSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pCi0g
ICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAg
ICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtp
ICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVs
c2UKKyAgICBBU1NFUlQoaW5wdXQuaXNBbGxBU0NJSSgpKTsKKworICAgIGF1dG8gbGVuZ3RoID0g
aW5wdXQubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDMgfHwgIWlucHV0LmNvbnRhaW5zKCcl
JykpCisgICAgICAgIHJldHVybiBpbnB1dC50b1N0cmluZygpOworCisgICAgVmVjdG9yPExDaGFy
LCA1MTI+IHBlcmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAp
IHsKKyAgICAgICAgaWYgKGF1dG8gZGVjb2RlZENoYXJhY3RlciA9IGRlY29kZUVzY2FwZVNlcXVl
bmNlKGlucHV0LCBpLCBsZW5ndGgpKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNo
ZWNrZWRBcHBlbmQoKmRlY29kZWRDaGFyYWN0ZXIpOworICAgICAgICAgICAgaSArPSAzOworICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5k
KGlucHV0W2ldKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQogICAgIH0KKworICAgIC8v
IEZJWE1FOiBJcyBVVEYtOCBhbHdheXMgdGhlIGNvcnJlY3QgZW5jb2Rpbmc/CisgICAgLy8gRklY
TUU6IFRoaXMgcmV0dXJucyBhIG51bGwgc3RyaW5nIHdoZW4gd2UgZW5jb3VudGVyIGFuIGludmFs
aWQgVVRGLTggc2VxdWVuY2UuIElzIHRoYXQgT0s/CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQogCiBT
dHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVu
Y2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3Rh
cnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNl
cXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5jb2RlZFVzZXIoKSk7CiB9CiAKLVN0cmluZyBVUkw6OnBh
c3MoKSBjb25zdAorU3RyaW5nIFVSTDo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIGlmIChtX3Bh
c3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQg
LSAxKSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5j
b2RlZFBhc3N3b3JkKCkpOwogfQogCi1TdHJpbmcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CitT
dHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmlu
Zy5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKKyAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJF
bmQgLSBtX3VzZXJTdGFydCk7CiB9CiAKLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QK
K1N0cmluZ1ZpZXcgVVJMOjplbmNvZGVkUGFzc3dvcmQoKSBjb25zdAogewogICAgIGlmIChtX3Bh
c3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQg
KyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91
c2VyRW5kIC0gMSk7CiB9CiAKLVN0cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
CitTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICBpZiAo
IWhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxKTsKLX0KKyAgICAgICAg
cmV0dXJuIHsgfTsKIAotYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSAhPSBtX3F1ZXJ5RW5k
OworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCAr
IDEpOwogfQogCi1TdHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAorVVJMIFVSTDo6dHJ1
bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdCht
X3BhdGhBZnRlckxhc3RTbGFzaCk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbV9zdHJpbmcubGVm
dChtX3BhdGhBZnRlckxhc3RTbGFzaCkpOwogfQogCiAjaWYgIVVTRShDRikKIAogU3RyaW5nIFVS
TDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAogewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xv
Y2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFpc0xvY2FsRmls
ZSgpKQorICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVl
bmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhwYXRoKCkpKTsKKyAgICByZXR1cm4gZGVjb2Rl
RXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChwYXRoKCkpOwogfQogCiAjZW5kaWYKIAotI2lm
ZGVmIE5ERUJVRworI2lmICFBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXNz
ZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKIHsKQEAgLTMxNCw3ICszMDMsNyBAQCBib29s
IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3Rv
Y29sKQogCiBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QK
IHsKLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3IHsgcHJvdG9jb2wgfSk7Cisg
ICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBV
UkxzIGFyZSAidmFsaWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRl
cyB0aGV5IGFyZSBpbnZhbGlkLgogICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNK
YXZhU2NyaXB0KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gCkBAIC0zNDksNzMgKzMzOCw2NSBA
QCBib29sIFVSTDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1TdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CitTdHJpbmdWaWV3IFVS
TDo6cXVlcnkoKSBjb25zdAogewogICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJu
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVu
ZCArIDEpKTsgCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Bh
dGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsKIH0KIAogU3RyaW5nVmll
dyBVUkw6OnBhdGgoKSBjb25zdAogewotICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGg7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
Zyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcocGF0aFN0YXJ0KCksIG1fcGF0aEVuZCAtIHBhdGhTdGFydCgpKTsKIH0KIAotYm9vbCBV
Ukw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChT
dHJpbmdWaWV3IG5ld1Byb3RvY29sKQogewogICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBl
dmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCAnOicuCi0gICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0
aW9uID0gcy5maW5kKCc6Jyk7Ci0gICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmco
MCwgc2VwYXJhdG9yUG9zaXRpb24pOwotICAgIGF1dG8gY2Fub25pY2FsaXplZCA9IFVSTFBhcnNl
cjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2wpOwotICAgIGlmICghY2Fub25p
Y2FsaXplZCkKKyAgICBhdXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3Ry
aW5nKDAsIG5ld1Byb3RvY29sLmZpbmQoJzonKSk7CisgICAgYXV0byBuZXdQcm90b2NvbENhbm9u
aWNhbGl6ZWQgPSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29s
UHJlZml4LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgaWYgKCFuZXdQcm90b2NvbENh
bm9uaWNhbGl6ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlk
KSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwg
IjoiLCBtX3N0cmluZykpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAg
ICAgcGFyc2UobWFrZVN0cmluZygqbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkLCAnOicsIG1fc3Ry
aW5nKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICgobV9wYXNzd29y
ZEVuZCAhPSBtX3VzZXJTdGFydCB8fCBwb3J0KCkpICYmICpjYW5vbmljYWxpemVkID09ICJmaWxl
IikKKyAgICBpZiAoKG1fcGFzc3dvcmRFbmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAq
bmV3UHJvdG9jb2xDYW5vbmljYWxpemVkID09ICJmaWxlIikKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBpZiAoaXNMb2NhbEZpbGUoKSAmJiBob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2Fs
aXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOworICAgIHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2Fs
aXplZCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3Ry
aW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCiAvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5h
bWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KIC8vIHRoZSBv
dXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KIC8v
IFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBi
b29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3
IHN0cmluZykKK3N0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShWZWN0b3I8VUNoYXIs
IDUxMj4mIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gTmVlZHMgdG8gYmUg
YmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCiAgICAgLy8gRm9yIGhvc3Qg
bmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBp
cyBhbG1vc3QgY2VydGFpbmx5IE9LLgogICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVy
TGVuZ3RoID0gMjA0ODsKLSAgICAKLSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVC
dWZmZXJMZW5ndGggfHwgaXNBbGxBU0NJSShzdHJpbmcpKSB7CisKKyAgICBpZiAoc3RyaW5nLmxl
bmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgc3RyaW5nLmlzQWxsQVNDSUkoKSkgewog
ICAgICAgICBhcHBlbmQoYnVmZmVyLCBzdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0gICAgCisKICAgICBVQ2hhciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0
aF07CiAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAgICBVSUROQUluZm8g
cHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwogICAgIGludDMyX3Qg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6Omlu
dGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLAogICAgICAgICBzdHJpbmcudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3Ru
YW1lQnVmZmVyTGVuZ3RoLCAmcHJvY2Vzc2luZ0RldGFpbHMsICZlcnJvcik7Ci0gICAgCisKICAg
ICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CiAg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0
ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyOCwxMDEgKzQwOSw4NiBAQCB1bnNpZ25l
ZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1f
dXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKIH0KIAotdm9p
ZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQordW5zaWduZWQgVVJMOjpjcmVkZW50aWFs
c0VuZCgpIGNvbnN0Cit7CisgICAgLy8gSW5jbHVkZSAnQCcgdG9vIGlmIHdlIGhhdmUgaXQuCisg
ICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoZW5kICE9IG1faG9zdEVu
ZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgZW5kICs9IDE7CisgICAgcmV0dXJu
IGVuZDsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQogewogICAg
IGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNvbG9uSW5kZXgg
PSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICBpZiAo
bmV3SG9zdC5jb250YWlucygnOicpKQogICAgICAgICByZXR1cm47CiAKLSAgICBVQ2hhckJ1ZmZl
ciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2Rl
ZEhvc3ROYW1lLCBzKSkKKyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOwor
ICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3Vz
ZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAK
LSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcu
bGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmll
dyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAg
YnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogCi0gICAgVVJM
UGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2No
ZW1lRW5kICsgMTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KGhvc3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIv
LyIgOiAiIiwKKyAgICAgICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNv
ZGVkSG9zdE5hbWUuc2l6ZSgpKSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKG1faG9zdEVuZCkKKyAgICApKTsKIH0KIAotdm9pZCBVUkw6OnJlbW92ZVBvcnQoKQotewot
ICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsK
LSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6OnNldFBvcnQodW5z
aWduZWQgc2hvcnQgaSkKK3ZvaWQgVVJMOjpzZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
KQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNv
bG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29s
b25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBw
YXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChj
b2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlSG9zdEFuZFBv
cnQoKQotewotICAgIGlmICghbV9pc1ZhbGlkKQorICAgIGlmICghcG9ydCkgeworICAgICAgICBy
ZW1vdmUobV9ob3N0RW5kLCBtX3BvcnRMZW5ndGgpOwogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KCFob3N0KCkuaXNFbXB0eSgpKQotICAgICAgICBzZXRIb3N0KHsgfSk7Ci0gICAgcmVtb3ZlUG9y
dCgpOworICAgIH0KKworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwKKyAgICAgICAgJzonLAorICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oKnBvcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcocGF0aFN0YXJ0KCkpCisgICAgKSk7CiB9CiAKLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9y
dChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQordm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KFN0
cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUoaG9zdEFuZFBvcnQpOwotICAgIFN0cmlu
Z1ZpZXcgcG9ydDsKLSAgICAKKyAgICBhdXRvIGhvc3ROYW1lID0gaG9zdEFuZFBvcnQ7CisgICAg
U3RyaW5nVmlldyBwb3J0U3RyaW5nOwogICAgIGF1dG8gY29sb25JbmRleCA9IGhvc3ROYW1lLmZp
bmQoJzonKTsKICAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICBwb3J0
ID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKLSAgICAgICAgYm9vbCBvazsK
LSAgICAgICAgaW50IHBvcnRJbnQgPSBwb3J0LnRvSW50U3RyaWN0KG9rKTsKLSAgICAgICAgaWYg
KCFvayB8fCBwb3J0SW50IDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcG9ydFN0
cmluZyA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7CiAgICAgICAgIGhvc3RO
YW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpOworICAgICAgICBpZiAoIXBh
cnNlVUludDE2KHBvcnRTdHJpbmcpKQorICAgICAgICAgICAgcG9ydFN0cmluZyA9IHsgfTsKICAg
ICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAgIGlmIChob3N0TmFtZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgcmVtb3ZlKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RT
dGFydCgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFVDaGFyQnVmZmVyIGVuY29k
ZWRIb3N0TmFtZTsKKyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOwogICAg
IGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgaG9zdE5hbWUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFy
dCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RT
dGFydCgpKSk7Ci0gICAgaWYgKHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLy8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRI
b3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBpZiAoIXBvcnQu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChwb3J0KTsKLSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwotCi0g
ICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09
IG1fc2NoZW1lRW5kICsgMTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KGhvc3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRl
ZCA/ICIvLyIgOiAiIiwKKyAgICAgICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgp
LCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSwKKyAgICAgICAgcG9ydFN0cmluZy5pc0VtcHR5KCkg
PyAiIiA6ICI6IiwKKyAgICAgICAgcG9ydFN0cmluZywKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQogCiBzdGF0aWMgU3RyaW5n
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2woKnNob3Vs
ZEVuY29kZSkoVUNoYXIpKQpAQCAtNTUxLDgxICs1MTcsODkgQEAgc3RhdGljIFN0cmluZyBwZXJj
ZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNv
ZGUpKFUKICAgICByZXR1cm4gaW5wdXQ7CiB9CiAKLXZvaWQgVVJMOjpzZXRVc2VyKGNvbnN0IFN0
cmluZyYgdXNlcikKK3ZvaWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICBpZiAoIW1faXNWYWxpZCkKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihzdHJpbmcpLnJlc3VsdCgp
OworfQorCit2b2lkIFVSTDo6cmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoc3RhcnQg
PCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBtX3N0cmluZy5sZW5n
dGgoKSAtIHN0YXJ0KTsKKworICAgIGF1dG8gc3RyaW5nQWZ0ZXJSZW1vdmFsID0gV1RGTW92ZSht
X3N0cmluZyk7CisgICAgc3RyaW5nQWZ0ZXJSZW1vdmFsLnJlbW92ZShzdGFydCwgbGVuZ3RoKTsK
KyAgICBwYXJzZShzdHJpbmdBZnRlclJlbW92YWwpOworfQogCi0gICAgLy8gRklYTUU6IE5vbi1B
U0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJz
ZSgpIGV4cGVjdGF0aW9ucywKLSAgICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFu
IGp1c3QgdGhlIHVzZXIgbG9naW4uCit2b2lkIFVSTDo6c2V0VXNlcihTdHJpbmdWaWV3IG5ld1Vz
ZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKIAogICAgIHVuc2ln
bmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0lu
VXNlckluZm9FbmNvZGVTZXQpOwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7
Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAg
ICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3Ry
aW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNl
clN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgaWYgKCFuZXdVc2VyLmlzRW1wdHkoKSkg
eworICAgICAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVt
ZUVuZCArIDE7CisgICAgICAgIGJvb2wgbmVlZFNlcGFyYXRvciA9IGVuZCA9PSBtX2hvc3RFbmQg
fHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKTsKKyAgICAg
ICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQobV91c2VyU3RhcnQpLAorICAgICAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAi
IiwKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKG5ld1VzZXIudG9TdHJpbmdX
aXRob3V0Q29weWluZygpLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCksCisgICAg
ICAgICAgICBuZWVkU2VwYXJhdG9yID8gIkAiIDogIiIsCisgICAgICAgICAgICBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKQorICAgICAgICApKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dv
cmQuCiAgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9o
b3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQogICAgICAgICAgICAgZW5kICs9IDE7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24g
Y2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlm
IChtX3VzZXJTdGFydCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOwotICAgICAgICB9CisgICAgICAgIHJlbW92ZShtX3VzZXJTdGFydCwgZW5kIC0g
bV91c2VyU3RhcnQpOwogICAgIH0KIH0KIAotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5n
JiBwYXNzd29yZCkKK3ZvaWQgVVJMOjpzZXRQYXNzd29yZChTdHJpbmdWaWV3IG5ld1Bhc3N3b3Jk
KQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1bnNpZ25l
ZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFN0cmluZyBwID0gIjoiICsgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGFzc3dvcmQs
IFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSArICJAIjsKLSAgICAgICAgaWYgKG1f
dXNlckVuZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAg
ICAgICAgIHAgPSAiLy8iICsgcDsKLSAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2lu
Y2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgotICAgICAgICBpZiAoZW5kICE9IG1faG9z
dEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAg
ICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX3VzZXJFbmQpLCBwLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwot
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBpZiAoIW5ld1Bhc3N3b3JkLmlz
RW1wdHkoKSkgeworICAgICAgICBib29sIG5lZWRMZWFkaW5nU2xhc2hlcyA9IG1fdXNlckVuZCA9
PSBtX3NjaGVtZUVuZCArIDE7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksCisgICAgICAgICAgICBuZWVk
TGVhZGluZ1NsYXNoZXMgPyAiLy86IiA6ICI6IiwKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVD
aGFyYWN0ZXJzKG5ld1Bhc3N3b3JkLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgVVJMUGFyc2Vy
Ojppc0luVXNlckluZm9FbmNvZGVTZXQpLAorICAgICAgICAgICAgJ0AnLAorICAgICAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGNyZWRlbnRpYWxzRW5kKCkpCisgICAgICAg
ICkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUg
bmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1f
dXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAg
ICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4g
dGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2Ug
YSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBV
UkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3Vz
ZXJFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQg
ZW5kID0gbV91c2VyU3RhcnQgPT0gbV91c2VyRW5kID8gY3JlZGVudGlhbHNFbmQoKSA6IG1fcGFz
c3dvcmRFbmQ7CisgICAgICAgIHJlbW92ZShtX3VzZXJFbmQsIGVuZCAtIG1fdXNlckVuZCk7CiAg
ICAgfQogfQogCit2b2lkIFVSTDo6cmVtb3ZlQ3JlZGVudGlhbHMoKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdmUobV91c2VyU3RhcnQsIGNyZWRl
bnRpYWxzRW5kKCkgLSBtX3VzZXJTdGFydCk7Cit9CisKIHZvaWQgVVJMOjpzZXRGcmFnbWVudElk
ZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9pc1ZhbGlkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNhc2Ugd2hlcmUg
dGhlIGlkZW50aWZpZXIgYWxyZWFkeSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvIHdoYXQgd2FzIHBh
c3NlZD8KLSAgICAvLyBGSVhNRTogSXMgaXQgY29ycmVjdCB0byBkbyB0aGlzIHdpdGhvdXQgZW5j
b2RpbmcgYW5kIGVzY2FwaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzPwotICAgICp0aGlzID0gVVJM
UGFyc2VyIHsgbWFrZVN0cmluZyhTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5zdWJzdHJpbmcoMCwg
bV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmllcikgfS5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCksICcjJywgaWRlbnRp
ZmllcikpOwogfQogCiB2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKIHsKLSAg
ICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQg
JiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1f
c3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7CisKKyAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQo
bV9xdWVyeUVuZCk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRp
ZmllcigpCkBAIC02MzcsNjIgKzYxMSw2MiBAQCB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlBbmRGcmFn
bWVudElkZW50aWZpZXIoKQogICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7CiB9CiAKLXZvaWQg
VVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQordm9pZCBVUkw6OnNldFF1ZXJ5KFN0
cmluZ1ZpZXcgbmV3UXVlcnkpCiB7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRo
aXMgZnVuY3Rpb24gdG8gc2V0RW5jb2RlZFF1ZXJ5IGFuZC9vciBjYWxsaW5nIHBlcmNlbnRFbmNv
ZGVDaGFyYWN0ZXJzIHRoZSB3YXkgc2V0UGF0aCBkb2VzLgorICAgIC8vIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE2MTE3NgorCiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2Rl
ZCBhbmQgZXNjYXBlZC4KLSAgICAvLyBVc3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5jb2RlZCB1c2lu
ZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2ZQotICAgIC8v
IGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICAvLyBodHRwczov
L3dlYmtpdC5vcmcvYi8xNjExNzYKLSAgICBpZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVsw
XSAhPSAnPycpICYmICFxdWVyeS5pc051bGwoKSkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQpLCAiPyIsIHF1
ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5k
KSwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwot
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9CisgICAgcGFyc2UobWFrZVN0
cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQpLAorICAg
ICAgICAoIW5ld1F1ZXJ5LnN0YXJ0c1dpdGgoJz8nKSAmJiAhbmV3UXVlcnkuaXNOdWxsKCkpID8g
Ij8iIDogIiIsCisgICAgICAgIG5ld1F1ZXJ5LAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9xdWVyeUVuZCkKKyAgICApKTsKK30KIAorc3RhdGljIFN0cmluZyBlc2Nh
cGVQYXRoV2l0aG91dENvcHlpbmcoU3RyaW5nVmlldyBwYXRoKQoreworICAgIGF1dG8gcXVlc3Rp
b25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNoYXJhY3RlcikgeworICAgICAgICByZXR1
cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIgPT0gJyMnOworICAgIH07CisgICAgcmV0
dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgudG9TdHJpbmdXaXRob3V0Q29weWluZygp
LCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pOwogfQogCi12b2lkIFVSTDo6c2V0UGF0aChjb25z
dCBTdHJpbmcmIHMpCit2b2lkIFVSTDo6c2V0UGF0aChTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAg
aWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBwYXRoID0gczsK
LSAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCi0gICAgICAgIHBhdGgg
PSAiLyIgKyBwYXRoOworICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQocGF0aFN0YXJ0KCkpLAorICAgICAgICBwYXRoLnN0YXJ0c1dpdGgoJy8n
KSA/ICIiIDogIi8iLAorICAgICAgICBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcocGF0aCksCisg
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpCisgICAgKSk7
Cit9CiAKLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFy
YWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09
ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVD
aGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CitTdHJpbmdWaWV3IFVSTDo6c3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gbV9zdHJp
bmc7CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChwYXRoRW5kKCkpOwog
fQogCi1ib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBj
b25zdCBVUkwmIGIpCitTdHJpbmdWaWV3IFVSTDo6c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRp
ZmllcigpIGNvbnN0CiB7Ci0gICAgaWYgKGEubV9xdWVyeUVuZCAhPSBiLm1fcXVlcnlFbmQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVy
eUVuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVlcnlMZW5ndGg7ICsraSkKLSAg
ICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAg
ICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQobV9xdWVyeUVuZCk7CiB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQo
Y29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiB7Ci0gICAgaWYgKGEucGF0aEVu
ZCgpICE9IGIucGF0aEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQg
cGF0aEVuZCA9IGEucGF0aEVuZCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRo
RW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGEuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpID09IGIuc3RyaW5nV2l0
aG91dEZyYWdtZW50SWRlbnRpZmllcigpOwogfQogCiBib29sIHByb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKQEAgLTcyNSwyNSArNjk5LDEwIEBA
IGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJM
JiBiKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJM
JiBhLCBjb25zdCBVUkwmIGIpCitib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3
IGRvbWFpbikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQo
KTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsK
LSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBo
b3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0
aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmlu
ZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAv
LyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4g
V2ViQ29yZSdzIHBsdWctaW4gY29kZTsgZG9uJ3Qgd2FudCBwZW9wbGUgdGVtcHRlZCB0byB1c2Ug
dGhpcyBpbnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luLgogCi1ib29sIFVSTDo6aXNNYXRjaGluZ0Rv
bWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKLXsKICAgICBpZiAoaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzYwLDYgKzcxOSw3IEBAIGJvb2wgVVJMOjppc01h
dGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAogICAgIHJldHVybiBob3N0
Lmxlbmd0aCgpID09IGRvbWFpbi5sZW5ndGgoKSB8fCBob3N0W2hvc3QubGVuZ3RoKCkgLSBkb21h
aW4ubGVuZ3RoKCkgLSAxXSA9PSAnLic7CiB9CiAKKy8vIEZJWE1FOiBSZW5hbWUgdGhpcyBzbyBp
dCdzIGNsZWFyIHRoYXQgaXQgZG9lcyB0aGUgYXBwcm9wcmlhdGUgZXNjYXBpbmcgZm9yIFVSTCBx
dWVyeSBmaWVsZCB2YWx1ZXMuCiBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhj
b25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVy
cyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwpAQCAtNzgxLDQxICs3
NDEsMzQgQEAgdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVy
KSBjb25zdAogICAgIGNvcHlBU0NJSShtX3N0cmluZywgYnVmZmVyLmRhdGEoKSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPgotYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoY29u
c3QgU3RyaW5nQ2xhc3MmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCitzdGF0aWMgYm9vbCBw
cm90b2NvbElzSW50ZXJuYWwoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29s
KQogewotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmlu
ZyBvYmplY3QuCi0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyB7IHByb3RvY29s
IH0pOworICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKICAgICBib29sIGlzTGVh
ZGluZyA9IHRydWU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgaiA9IDA7IHVybFtpXTsgKytp
KSB7Ci0gICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJh
Y3RlcnMuCi0gICAgICAgIGlmIChpc0xlYWRpbmcgJiYgc2hvdWxkVHJpbUZyb21VUkwodXJsW2ld
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKLQot
ICAgICAgICAvLyBTa2lwIGFueSB0YWJzIGFuZCBuZXdsaW5lcy4KLSAgICAgICAgaWYgKHVybFtp
XSA9PSAnXHQnIHx8IHVybFtpXSA9PSAnXHInIHx8IHVybFtpXSA9PSAnXG4nKQotICAgICAgICAg
ICAgY29udGludWU7CisgICAgZm9yIChhdXRvIGNvZGVVbml0IDogc3RyaW5nLmNvZGVVbml0cygp
KSB7CisgICAgICAgIGlmIChpc0xlYWRpbmcpIHsKKyAgICAgICAgICAgIC8vIFNraXAgbGVhZGlu
ZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCisgICAgICAgICAgICBpZiAoc2hv
dWxkVHJpbUZyb21VUkwoY29kZVVuaXQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBTa2lwIHRhYnMgYW5kIG5ld2xpbmVzIGV2ZW4gbGF0ZXIgaW4gdGhlIHByb3RvY29sLgor
ICAgICAgICAgICAgaWYgKGNvZGVVbml0ID09ICdcdCcgfHwgY29kZVVuaXQgPT0gJ1xyJyB8fCBj
b2RlVW5pdCA9PSAnXG4nKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAK
LSAgICAgICAgaWYgKCFwcm90b2NvbFtqXSkKLSAgICAgICAgICAgIHJldHVybiB1cmxbaV0gPT0g
JzonOwotICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsW2ldLCBwcm90
b2NvbFtqXSkpCisgICAgICAgIGNoYXIgZXhwZWN0ZWRDaGFyYWN0ZXIgPSAqcHJvdG9jb2wrKzsK
KyAgICAgICAgaWYgKCFleHBlY3RlZENoYXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiBjb2Rl
VW5pdCA9PSAnOic7CisgICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjb2Rl
VW5pdCwgZXhwZWN0ZWRDaGFyYWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICsrajsKICAgICB9Ci0gICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHBy
b3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCBwcm90b2NvbCk7Ci19Ci0KLWlubGluZSBi
b29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgY2hhciogcHJv
dG9jb2wpCitib29sIHByb3RvY29sSXMoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIHBy
b3RvY29sKQogewotICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHBy
b3RvY29sKTsKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgcHJvdG9jb2wp
OwogfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtODI5LDExICs3ODIsMTggQEAgdm9pZCBVUkw6OnBy
aW50KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29u
c3QKIHsKLSAgICBVUkwgcmVmZXJyZXIoKnRoaXMpOwotICAgIHJlZmVycmVyLnNldFVzZXIoU3Ry
aW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBhc3MoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnJl
bW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIHJldHVybiByZWZlcnJlci5zdHJpbmcoKTsK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgdW5z
aWduZWQgZW5kID0gY3JlZGVudGlhbHNFbmQoKTsKKworICAgIGlmIChtX3VzZXJTdGFydCA9PSBl
bmQgJiYgbV9xdWVyeUVuZCA9PSBtX3N0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG1f
c3RyaW5nOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhlbmQsIG1fcXVlcnlFbmQgLSBlbmQpCisgICAgKTsKIH0KIAogYm9v
bCBVUkw6OmlzTG9jYWxGaWxlKCkgY29uc3QKQEAgLTg0NSwxNyArODA1LDEyIEBAIGJvb2wgVVJM
Ojppc0xvY2FsRmlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKIH0K
IAotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJv
dG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHByb3Rv
Y29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0Iik7CisgICAgcmV0dXJuIHByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsICJqYXZhc2NyaXB0Iik7CiB9CiAKLWJvb2wgcHJvdG9jb2xJc0phdmFT
Y3JpcHQoU3RyaW5nVmlldyB1cmwpCi17Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1
cmwsICJqYXZhc2NyaXB0Iik7Ci19Ci0KLWJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25z
dCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVy
bCkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKICAgICAvLyBEbyB0aGUgY29t
cGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgpAQCAtODY5LDEzICs4
MjQsMTMgQEAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQog
CiBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNCbGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIl9z
KTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKIGNvbnN0IFVSTCYgYWJvdXRTcmNE
b2NVUkwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Fib3V0U3Jj
RG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9jIik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVSTD4gc3RhdGljQWJvdXRTcmNEb2NVUkwoVVJMKCksICJhYm91dDpzcmNkb2MiX3MpOwogICAg
IHJldHVybiBzdGF0aWNBYm91dFNyY0RvY1VSTDsKIH0KIApAQCAtOTY0LDcgKzkxOSw2IEBAIGJv
b2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0
ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQogICAgICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNT
TCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0
aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52
YWxpZCBwb3J0IG51bWJlcnMKICAgICB9OwogCiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGlu
IHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCkBAIC05ODMsMTUgKzkzNywxNSBAQCBi
b29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
U3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpCitTdHJpbmcgbWlt
ZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3IGRhdGFVUkwpCiB7Ci0gICAgQVNTRVJUKHByb3Rv
Y29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikpOworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJu
YWwoZGF0YVVSTCwgImRhdGEiKSk7CiAKICAgICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCBi
ZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEgY29tbWEgZmlyc3QsIGJ1dCBhIHNlbWljb2xvbiBs
YXRlcj8KLSAgICAvLyBDdXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWlj
b2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJlIHRoYXQncyBjb3JyZWN0LgotICAgIGF1dG8gaW5k
ZXggPSB1cmwuZmluZCgnOycsIDUpOworICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBi
cmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZTsgc2hvdWxkIGFkZCBhIHRlc3QuCisg
ICAgYXV0byBpbmRleCA9IGRhdGFVUkwuZmluZCgnOycsIDUpOwogICAgIGlmIChpbmRleCA9PSBu
b3RGb3VuZCkKLSAgICAgICAgaW5kZXggPSB1cmwuZmluZCgnLCcsIDUpOworICAgICAgICBpbmRl
eCA9IGRhdGFVUkwuZmluZCgnLCcsIDUpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgewog
ICAgICAgICAvLyBGSVhNRTogVGhlcmUgd2FzIGFuIG9sZCBjb21tZW50IGhlcmUgdGhhdCBtYWRl
IGl0IHNvdW5kIGxpa2UgdGhpcyBzaG91bGQgYmUgcmV0dXJuaW5nIHRleHQvcGxhaW4uCiAgICAg
ICAgIC8vIEJ1dCB3ZSBoYXZlIGJlZW4gcmV0dXJuaW5nIGVtcHR5IHN0cmluZyBoZXJlIGZvciBz
b21lIHRpbWUsIHNvIG5vdCBjaGFuZ2luZyBpdHMgYmVoYXZpb3IgYXQgdGhpcyB0aW1lLgpAQCAt
MTAwMCwyNSArOTU0LDQ1IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgIGlmIChpbmRleCA9PSA1KQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4i
X3M7CiAgICAgQVNTRVJUKGluZGV4ID49IDUpOwotICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUs
IGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICByZXR1cm4gZGF0YVVS
TC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQog
CiBTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVu
Z3RoKSBjb25zdAogewotICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAg
ICAgIHJldHVybiBzdHJpbmcoKTsKKyAgICBpZiAobV9zdHJpbmcubGVuZ3RoKCkgPD0gbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSwgIi4uLiIsIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKSk7Cit9CisKK1VSTCBVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KFN0cmluZ1ZpZXcgcmVsYXRpdmVQYXJ0KQoreworICAgIHJldHVybiBV
UkwoVVJMKCksIG1ha2VTdHJpbmcoIndlYmtpdC1mYWtlLXVybDovLyIsIGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKSwgJy8nLCByZWxhdGl2ZVBhcnQpKTsKK30KIAotICAgIHJldHVybiBzdHJp
bmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3Ro
IC8gMiAtIDIpOworVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3
IHBhdGgpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygKKyAgICAgICAgImZp
bGU6Ly8iLAorICAgICAgICBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/ICIiIDogIi8iLAorICAgICAg
ICBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcocGF0aCkKKyAgICApKTsKIH0KIAotVVJMIFVSTDo6
ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCitTdHJp
bmdWaWV3IFVSTDo6cXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOworICAgIGlmIChtX3F1ZXJ5RW5kIDw9
IG1fcGF0aEVuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kLCBtX3F1ZXJ5RW5kIC0gbV9wYXRoRW5kKTsK
IH0KIAotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQorU3RyaW5nVmlldyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVt
YmVyU2lnbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZp
bGVQYXRoKTsKKyAgICBpZiAoIW1faXNWYWxpZCB8fCBtX3N0cmluZy5sZW5ndGgoKSA8PSBtX3F1
ZXJ5RW5kKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKTsKIH0KIAogYm9vbCBVUkw6OmlzQWJvdXRCbGFu
aygpIGNvbnN0CkBAIC0xMDM4LDYgKzEwMTIsNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBVUkwmIHVybCkKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkg
JiYgIVVTRShTT1VQKQorCiBzdGF0aWMgYm9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIGF1dG8gY291bnQgPSAwOwpAQCAtMTEyNCwxMSArMTA5OSw5IEBAIHN0YXRp
YyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCiAKIGJvb2wgVVJMOjpob3N0
SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQogewotICAgIGlmIChob3N0LmZpbmQoJzonKSA9
PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGlzSVB2NEFkZHJlc3MoaG9zdCk7Ci0KLSAgICBy
ZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0KTsKKyAgICByZXR1cm4gaG9zdC5jb250YWlucygnOicp
ID8gaXNJUHY2QWRkcmVzcyhob3N0KSA6IGlzSVB2NEFkZHJlc3MoaG9zdCk7CiB9CisKICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5o
IGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggOTVhZjRhM2I0N2UwODg3ZjVhMmFlYTAxYTEx
Mzc5YmJiZDExYzZmZi4uNDJlYzFmYjllYzM3ZWI4MzEzZDY5MzAxOTU3YTQ1MTkwNjEwYjNlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJM
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNDcg
KzM4LDM5IEBAIE9CSkNfQ0xBU1MgTlNVUkw7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CisK
IGNsYXNzIFRleHRTdHJlYW07CiAKIGNsYXNzIFVSTFRleHRFbmNvZGluZyB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9OworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfQogfTsKIAotc3RydWN0IFVS
TEhhc2g7Ci0KLWNsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgeworY2xhc3MgVVJMIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBHZW5lcmF0ZXMgYSBV
Ukwgd2hpY2ggY29udGFpbnMgYSBudWxsIHN0cmluZy4KICAgICBVUkwoKSB7IGludmFsaWRhdGUo
KTsgfQogCi0gICAgZXhwbGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkg
OiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7IH0KKyAgICBleHBsaWNpdCBVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSk7CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogICAgIC8vIFJlc29sdmVz
IHRoZSByZWxhdGl2ZSBVUkwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0
aGUKICAgICAvLyBVUkxUZXh0RW5jb2RpbmcgaXMgdXNlZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNo
YXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNhbiBiZQotICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdo
aWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVkIGFzCi0gICAgLy8g
YWJzb2x1dGUuCi0gICAgLy8gRklYTUU6IElmIHRoZSBiYXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlz
IGFsd2F5cyBjcmVhdGVzIGFuIGludmFsaWQKLSAgICAvLyBVUkwuIEluc3RlYWQgSSB0aGluayBp
dCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGludmFsaWQgYmFzZSBVUkxzCi0gICAgLy8g
dGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBlbXB0eSBiYXNlIFVSTHMuCi0gICAgVVJM
KGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVu
Y29kaW5nKiA9IG51bGxwdHIpOworICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2Ug
dGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFic29sdXRlLgorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0
aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgVVJM
IGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBVUkwg
ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3KTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1Q
YXRoKFN0cmluZ1ZpZXcpOwogCi0gICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigp
IGNvbnN0OwotCi0gICAgLy8gRklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhh
cm1vbml6ZWQgc28gdGhhdCBwYXNzaW5nIGEKLSAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVt
cHR5IHN0cmluZyBnaXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlCi0gICAgLy8gc3RhbmRhcmQg
U3RyaW5nIGNvbnN0cnVjdG9yLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7CiAKICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4g
SGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFVSTCBvbiBhbm90aGVyCiAgICAgLy8g
dGhyZWFkLiBTaW5jZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0
YWJsZSwgdGhlcmUncwogICAgIC8vIG5vIG90aGVyIHJlYXNvbiB0byBldmVyIHByZWZlciBpc29s
YXRlZENvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFVSTCBpc29sYXRlZENv
cHkoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKQEAgLTg5LDEyMiArODEsMTI2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblNldEhvc3RPclBv
cnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CiAKICAgICBib29sIGNhblNl
dFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotICAgIGJvb2wg
aXNIaWVyYXJjaGljYWwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hp
ZXJhcmNoaWNhbCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0Owog
Ci0gICAgU3RyaW5nIHN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5n
dGggPSAxMDI0KSBjb25zdDsKLQotICAgIFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKLSAg
ICBTdHJpbmdWaWV3IGhvc3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgp
IGNvbnN0OwotICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyBwcm90
b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBT
dHJpbmcgcGFzcygpIGNvbnN0OwotICAgIFN0cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OwotICAgIFN0
cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0
OwotICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBib29sIGhhc0Zy
YWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3N3
b3JkKCksIGVuY29kZWRVc2VyKCkgYW5kIGVuY29kZWRQYXNzd29yZCgpIGRvbid0IGRlY29kZSBl
c2NhcGUgc2VxdWVuY2VzLgorICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSBy
b3VuZC10cmlwcGluZywgYmVjYXVzZSBlbmNvZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFj
dGVycy4KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBlbmNvZGVkUGFzc3dvcmQoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgcXVlcnkoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1h
cmsoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBmcmFnbWVudElk
ZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nVmlldyBzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQ
b3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBob3N0QW5kUG9ydCgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdXNlcigpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVVJMIHRydW5jYXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0OwogCi0gICAgYm9v
bCBoYXNVc2VybmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKICAg
ICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0Owor
ICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQYXRo
KCkgY29uc3Q7CiAKLSAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0
aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAvLyBUaGlzIGlzIG5lY2Vz
c2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24n
dCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCi0gICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgYmFzZUFzU3Ry
aW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKyAgICBi
b29sIGhhc0NyZWRlbnRpYWxzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8g
dGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2Fz
ZS4KLSAgICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJv
dG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2Io
KSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29s
SXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBw
cm90b2NvbElzQWJvdXQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90
b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBj
b25zdDsKLSAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKICAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwo
KSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KIAotICAgIGJvb2wgaXNBYm91
dEJsYW5rKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBYm91dEJsYW5rKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNBYm91dFNyY0RvYygpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdGNo
aW5nRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzTWF0Y2hpbmdEb21haW4oU3RyaW5nVmlldykgY29uc3Q7CiAKLSAgICBib29sIHNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9p
ZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90Pik7CiAKICAg
ICAvLyBJbnB1dCBpcyBsaWtlICJmb28uY29tIiBvciAiZm9vLmNvbTo4MDAwIi4KLSAgICB2b2lk
IHNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVtb3ZlSG9zdEFuZFBv
cnQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRIb3N0QW5kUG9ydChTdHJpbmdW
aWV3KTsKIAotICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBh
c3MoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXNlcihT
dHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXNzd29yZChTdHJp
bmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVDcmVkZW50aWFscygp
OwogCi0gICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBV
UkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNl
dFBhdGgoY29uc3QgU3RyaW5nJik7CisgICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBm
b3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGggd2lsbCBiZSAiLyIuCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UGF0aChTdHJpbmdWaWV3KTsKIAogICAgIC8v
IFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9u
ZSB3aWxsIGJlIGFkZGVkCiAgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhl
IGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQogICAgIC8vIFVSTCAod2l0aCBu
b3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcu
Ci0gICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRRdWVyeShTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVu
dGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmlu
Z1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCi0gICAgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlm
aWVyKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdW
aWV3KTsKIAogICAgIHVuc2lnbmVkIHBhdGhTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBh
dGhFbmQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsK
IAotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsg
fQorICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsg
fQorICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQog
CiAjaWYgVVNFKENGKQotICAgIFVSTChDRlVSTFJlZik7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBjcmVhdGVDRlVSTCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoQ0ZVUkxS
ZWYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNG
VVJMKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFVSTChOU1VS
TCopOwotICAgIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBVUkwoTlNVUkwgKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9yIE5TVVJMICoo
KSBjb25zdDsKICNlbmRpZgorCiAjaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmlu
ZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorICAgIG9wZXJhdG9yIE5TU3RyaW5nICoo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgdm9pZCBwcmludCgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBV
UkwmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVSTD4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5n
JiwgY29uc3QgY2hhciopOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW52YWxpZGF0
ZSgpOwogICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNv
bnN0OwogICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGNyZWRl
bnRpYWxzRW5kKCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGZyaWVu
ZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
Ci0gICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJik7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAKQEAgLTIyOSw0OSAr
MjI1LDI3IEBAIHByaXZhdGU6CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9m
KFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIp
OwogCi10ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJM
JiB1cmwpCi17Ci0gICAgYXV0byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOwot
ICAgIGlmICghb3B0aW9uYWxVUkwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1cmwgPSBX
VEZNb3ZlKCpvcHRpb25hbFVSTCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxj
bGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwotICAgIGRlY29kZXIgPj4gc3RyaW5n
OwotICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJl
dHVybiBVUkwoVVJMKCksIFdURk1vdmUoKnN0cmluZykpOwotfQorYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYpOworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwor
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29u
c3QgVVJMJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBo
b3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCiBXVEZfRVhQT1JUX1BSSVZB
VEUgY29uc3QgVVJMJiBhYm91dEJsYW5rVVJMKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
VVJMJiBhYm91dFNyY0RvY1VSTCgpOwogCiAvLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlv
bnMgb24gc3RyaW5ncy4KIC8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3Rl
ciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUg
VVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJl
IGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRh
bnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25z
aWRlcmVkIHZhbGlkIGJ5IFVSTC4KKy8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRo
ZSBXVEY6OlVSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmlu
ZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkg
aW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJp
bHkgY29uc2lkZXJlZCB2YWxpZCBieSBXVEY6OlVSTC4KIAotV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwot
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5n
JiB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVy
bCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIAogV1RG
X0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29s
KFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwpAQCAt
MjgwLDE0ICsyNTQsNDAgQEAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQoY29u
c3QgVVJMJik7IC8vIEJsYWNrbGlzdCBwb3J0cyB0aGF0IHNob3VsZAogV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKIAotV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCk7
CiAKLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBT
dHJpbmcmIHVybCk7Ci0KLS8vIEZJWE1FOiBUaGlzIGlzIGEgd3JvbmcgY29uY2VwdCB0byBleHBv
c2UsIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZyBwZXIg
dGhlIFVSTCBTdGFuZGFyZC4KKy8vIEZJWE1FOiBUaGlzIG5lZWRzIGEgbmV3LCBtb3JlIHNwZWNp
ZmljIG5hbWUuIFRoZSBnZW5lcmFsIHRoaW5nIG5hbWVkIGhlcmUgY2FuJ3QgYmUgaW1wbGVtZW50
ZWQgY29ycmVjdGx5LCBzaW5jZSBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJl
bnQgZXNjYXBpbmcuCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CiAKLS8vIElubGluZXMuCitXVEZfRVhQT1JUX1BS
SVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisK
K3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFVSTD47CisKKy8vIEZ1bmN0aW9uIHRlbXBsYXRlIGFuZCBpbmxpbmUgZnVuY3Rp
b24gZGVmaW5pdGlvbnMuCisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVVJMOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3RyaW5n
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBib29sIFVSTDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFVSTCYgdXJsKQoreworICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBkZWNvZGUo
ZGVjb2Rlcik7CisgICAgaWYgKCFvcHRpb25hbFVSTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHVybCA9IFdURk1vdmUoKm9wdGlvbmFsVVJMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgIGRlY29k
ZXIgPj4gc3RyaW5nOworICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBVUkwoVVJMKCksIFdURk1vdmUoKnN0cmluZykpOworfQogCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewpAQCAtMzE5
LDggKzMxOSwxMCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29u
c3QgVVJMJiBiKQogICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7CiB9CiAKLS8vIElubGluZSB2
ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5s
aW5pbmcKLS8vIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4g
dGhlIGNsYXNzIGRlZmluaXRpb24uCitpbmxpbmUgVVJMOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlVHlwZSkKKyAgICA6IG1fc3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKK3sKK30KIAog
aW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAogewpAQCAtMzM5LDE3ICszNDEsMTIgQEAg
aW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkgY29uc3QKIAogaW5saW5lIGJvb2wgVVJMOjpoYXNQ
YXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aDsKKyAgICByZXR1cm4gbV9wYXRoRW5kID4gcGF0aFN0YXJ0KCk7CiB9CiAKLWlubGlu
ZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNDcmVk
ZW50aWFscygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0Owot
fQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc1Bhc3N3b3JkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wYXNzd29yZEVuZCA+IChtX3VzZXJFbmQgKyAxKTsKKyAgICByZXR1cm4gbV9wYXNzd29yZEVu
ZCA+IG1fdXNlclN0YXJ0OwogfQogCiBpbmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QK
QEAgLTM1Nyw3ICszNTQsNyBAQCBpbmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKICAg
ICByZXR1cm4gbV9xdWVyeUVuZCA+IG1fcGF0aEVuZDsKIH0KIAotaW5saW5lIGJvb2wgVVJMOjpo
YXNGcmFnbWVudCgpIGNvbnN0CitpbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+
IG1fcXVlcnlFbmQ7CiB9CkBAIC0zODIsMTEgKzM3OSw2IEBAIGlubGluZSB1bnNpZ25lZCBVUkw6
OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNs
YXNoOwogfQogCi1XVEZfRVhQT1JUX1BSSVZBVEUgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxVUkw+OwotCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjphYm91dEJsYW5rVVJMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZV
UkxFeHRyYXMuY3BwCmluZGV4IDA2YjBhZWM2NGQxMDI1ZDU0M2ZmOWRjM2Q2YTFhN2QyZTYxMGM4
NTQuLmZhMDhjOWY4ODM2NTkyYjZhYzA1M2M3M2ZhODY3ZTVlMDFiYWI3YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
Zi9DRlVSTEV4dHJhcy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBpc0NGVVJMU2FtZU9yaWdp
bihDRlVSTFJlZiBjZlVSTCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCi0gICAgaWYgKHVybC5oYXNVc2VybmFtZSgpIHx8IHVy
bC5oYXNQYXNzd29yZCgpKQorICAgIGlmICh1cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAg
cmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJMIH0pOwog
CiAgICAgVVJMQ2hhckJ1ZmZlciBieXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmlu
ZGV4IGQxM2JiNmM5MWY5ZWJjYTMzMGRlNTFkZDA1YzI3ZTA1OTZhY2EyZGIuLjI5YjQ4ODUwMTZi
ZDI4N2QxY2ZlOTQyYzY1NDhlNTY1YmY4ODMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcApAQCAtMzUsNiArMzUsNyBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc0LDYg
Kzc1LDExIEBAIGJvb2wgU3RyaW5nVmlldzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ1ZpZXcmIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgcHJlZml4KTsKIH0KIAorYm9vbCBTdHJpbmdWaWV3
OjplbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGVuZ3Ro
ICYmICgqdGhpcylbbV9sZW5ndGggLSAxXSA9PSBjaGFyYWN0ZXI7Cit9CisKIGJvb2wgU3RyaW5n
Vmlldzo6ZW5kc1dpdGgoY29uc3QgU3RyaW5nVmlldyYgc3VmZml4KSBjb25zdAogewogICAgIHJl
dHVybiA6OldURjo6ZW5kc1dpdGgoKnRoaXMsIHN1ZmZpeCk7CkBAIC0zMDYsNiArMzEyLDMxIEBA
IFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBy
ZXN1bHQudW5kZXJseWluZ1N0cmluZzsKIH0KIAorLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG5h
bWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90PiBpbnN0ZWFkPworLy8gRklYTUU6IFNob3VsZCB3ZSBy
ZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHlsZT8KK09w
dGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBi
b29sIG9rID0gZmFsc2U7CisgICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1aW50MTZf
dD4oc3RyaW5nLCAmb2spOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShT
dHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikKK3sKKyAgICAvLyBGSVhNRTogVGhlIGVxdWFsKFN0
cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpIGZ1bmN0aW9uIGFscmVhZHkgaWdub3JlcyBudWxsaXR5Lgor
ICAgIC8vIFRvIGZpdCBpbiB3aXRoIHRoZSBiZWhhdmlvciBvZiBvdXIgb3RoZXIgc3RyaW5nIGNs
YXNzZXMsIHdlIHNob3VsZCBjb25zaWRlcgorICAgIC8vIGNoYW5naW5nIHRoYXQgYmVoYXZpb3Ig
c28gdGhhdCBhIG51bGwgU3RyaW5nVmlldyBpcyBub3QgZXF1YWwgdG8gYW4gZW1wdHkKKyAgICAv
LyBTdHJpbmdWaWV3LCBidXQgbmVlZCB0byB0ZXN0IG9yIGF1ZGl0IGluIGNhc2UgY29kZSBkZXBl
bmRzIG9uIGN1cnJlbnQgYmVoYXZpb3IuCisgICAgcmV0dXJuIGVxdWFsKGEsIGIpOworfQorCiti
b29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0cmluZykgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCiAjaWYgQ0hFQ0tfU1RSSU5H
VklFV19MSUZFVElNRQogCiAvLyBNYW5hZ2UgcmVmZXJlbmNlIGNvdW50IG1hbnVhbGx5IHNvIFVu
ZGVybHlpbmdTdHJpbmcgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIGluIHRoZSBoZWFkZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDZjZmViZGJhYjdlYTQ1OGUxZDk2ODBkMTMx
NjE5MTQ4ZjIxNzlmMDMuLjQ2YWY1MmY1MGJlZDFjYzljOGIyY2E0NTU2ZDFkNTBmNjk4NjcxOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMzcsOCArMTM3LDcgQEAgcHVibGljOgog
CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAg
c2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0OwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVu
c2lnbmVkIHN0YXJ0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQo
U3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKIAogICAgIHNpemVfdCByZXZl
cnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIGNvbnN0OwogCkBAIC0xNTEsNiArMTUwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgY29udGFpbnMoVUNoYXIpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoQ29kZVVuaXRNYXRj
aEZ1bmN0aW9uKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcgc3RyaW5nKSBj
b25zdCB7IHJldHVybiBmaW5kKHN0cmluZywgMCkgIT0gbm90Rm91bmQ7IH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3Q7CkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3
JikgY29uc3Q7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChVQ2hhcikg
Y29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5n
VmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogCkBAIC0xOTEsNiArMTkyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nSW1w
bCopIHsgfQogICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdWaWV3Jikg
eyB9CiAjZW5kaWYKKwogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIGNvbnN0IHZvaWQqIG1fY2hh
cmFjdGVycyB7IG51bGxwdHIgfTsKQEAgLTIxMCw2ICsyMTIsOCBAQCBib29sIGVxdWFsKFN0cmlu
Z1ZpZXcsIGNvbnN0IExDaGFyKiBiKTsKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCBTdHJpbmdWaWV3KTsKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3LCBjb25zdCBjaGFyKik7CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3Jp
bmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOworCiB0ZW1wbGF0ZTx1bnNpZ25lZCBs
ZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29u
c3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwogdGVtcGxhdGU8dW5zaWduZWQg
bGVuZ3RoPiBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwogCkBAIC0yMzQsNiAr
MjM4LDggQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyBub3JtYWxpemVkTkZDKFN0cmluZ1ZpZXcpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IG5vcm1hbGl6ZWRORkMoY29uc3QgU3RyaW5nJik7CiAKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDx1aW50MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyk7CisKIH0KIAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBm
MTJhZDM2ZDE5ZTdmZDU0YjVjY2ExMjZmNzI1ZDAwMDY0Mzg0NWZlLi5hZmM5MmY1Nzc2NjYyMjky
ZjBjZTA2NDYyNGU2OGYzODQ2NzIyNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBA
IC05MjQsMTAyICs5MjQsMTAyIEBAIHN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlCiAKIGludCBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBMQ2hhcj4o
ZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4o
ZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3Qo
Y29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsK
KyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJh
c2UpOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwog
fQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludDY0X3QsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnRwdHJfdCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnRwdHJfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIExDaGFyPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQgY2hhcmFj
dGVyc1RvSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdl
cjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0
YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25z
dCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFy
PihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0
KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVy
c0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0lu
dDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFj
dGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
PFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50NjRfdCBjaGFyYWN0ZXJz
VG9VSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9m
Q2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdWludDY0X3QgY2hh
cmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIFVDaGFyPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJh
Y3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludHB0
cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBMQ2hhcj4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQog
CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwg
VUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEs
IGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEw
KTsKIH0KIAogZW51bSBUcmFpbGluZ0p1bmtQb2xpY3kgeyBEaXNhbGxvd1RyYWlsaW5nSnVuaywg
QWxsb3dUcmFpbGluZ0p1bmsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKaW5kZXggYjBkYjU3YTgzNzBjZTAzMDI4NjRmZTA4MmI0M2EyNGVi
MjhiOWRmOS4uNzgyYjI2MmY0ODc0MTkzODJhNzQ1MDEwMzIzZTMzNTIyYTc1NjU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTcy
LDEwICs3Miw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaFVSTHMoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIGNhY2hlZFVSCiAgICAgVVJMIGNhY2hlZFJlcXVl
c3RVUkwgPSBjYWNoZWRVUkw7CiAKICAgICBpZiAob3B0aW9ucy5pZ25vcmVTZWFyY2gpIHsKLSAg
ICAgICAgaWYgKHJlcXVlc3RVUkwuaGFzUXVlcnkoKSkKLSAgICAgICAgICAgIHJlcXVlc3RVUkwu
c2V0UXVlcnkoeyB9KTsKLSAgICAgICAgaWYgKGNhY2hlZFJlcXVlc3RVUkwuaGFzUXVlcnkoKSkK
LSAgICAgICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICAgICAgcmVx
dWVzdFVSTC5zZXRRdWVyeSh7IH0pOworICAgICAgICBjYWNoZWRSZXF1ZXN0VVJMLnNldFF1ZXJ5
KHsgfSk7CiAgICAgfQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHJlcXVlc3RVUkwsIGNhY2hlZFJlcXVlc3RVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDNhNTUyMThmZmJkNzBhMGYxMTU2NjE2
MGFmOTM5MGViYmQxOTFkNzMuLmRmYjczM2U5MzAwZGEyYWUxZTY5NWU0MTJjOTczMjAwOGFjNmUw
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAK
QEAgLTE2MCw5ICsxNjAsMTAgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxFeGNlcHRpb24+IHBy
b2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKIEV4Y2VwdGlvbk9y
PHZvaWQ+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIElu
aXQmJiBpbml0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAg
IC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIGh0
dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtcGFyc2VyLgorCisgICAgLy8g
RklYTUU6IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgdG8gaHR0
cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCiAgICAgVVJMIHJl
cXVlc3RVUkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Rm9yY2VVVEY4OjpZZXMpOwotICAgIGlmICghcmVxdWVzdFVS
TC5pc1ZhbGlkKCkgfHwgIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVS
TC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmICghcmVxdWVzdFVSTC5pc1ZhbGlkKCkgfHwgcmVx
dWVzdFVSTC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVVJMIGlzIG5vdCB2YWxpZCBvciBjb250YWlucyB1c2VyIGNyZWRlbnRpYWxzLiJf
cyB9OwogCiAgICAgbV9vcHRpb25zLm1vZGUgPSBNb2RlOjpDb3JzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNjA5YWE4YTI4OGZmMzU4
MTllNjczY2Y1NjdkY2I1MjBjNjNhYjQ4OS4uMDVmNDlmODg5MzZlMDhiZGUwNWJlNGViNjZmYTlj
MTU4OGZjYmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9u
c2U+PiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAg
IFVSTCByZXF1ZXN0VVJMID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICghcmVx
dWVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IG1ha2VTdHJpbmcoIlJlZGlyZWN0aW9uIFVSTCAnIiwgcmVxdWVzdFVSTC5zdHJpbmcoKSwgIicg
aXMgaW52YWxpZCIpIH07Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkgfHwg
IXJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAocmVxdWVzdFVSTC5oYXNDcmVk
ZW50aWFscygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVkaXJl
Y3Rpb24gVVJMIGNvbnRhaW5zIGNyZWRlbnRpYWxzIl9zIH07CiAgICAgaWYgKCFSZXNvdXJjZVJl
c3BvbnNlOjppc1JlZGlyZWN0aW9uU3RhdHVzQ29kZShzdGF0dXMpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgbWFrZVN0cmluZygiU3RhdHVzIGNvZGUgIiwgc3RhdHVz
LCAiaXMgbm90IGEgcmVkaXJlY3Rpb24gc3RhdHVzIGNvZGUiKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApp
bmRleCBjYWFkZjg3YjBiNTczZTMxMmU5ZTNlMDM5ZDZkYzZhODhmYzU5Y2NhLi5lNzEzNWJlYzYw
M2Y5YjUzYTlkMjJhNDQzYWYzNTgyMGYxY2FjYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMjIw
LDEzICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RhbmRhcmRpemVkUGF5bWVudE1ldGhv
ZElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQogLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3BheW1lbnQtbWV0aG9kLWlkLyN2YWxpZGF0aW9uCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJM
QmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAo
IXVybC5wcm90b2NvbElzKCJodHRwcyIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIXVybC51c2VyKCkuaXNFbXB0eSgpIHx8ICF1cmwucGFzcygpLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHVybC5wcm90
b2NvbElzKCJodHRwcyIpICYmICF1cmwuaGFzQ3JlZGVudGlhbHMoKTsKIH0KIAogLy8gSW1wbGVt
ZW50cyAidmFsaWRhdGUgYSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAppbmRleCA0ZTdhMDI1ZTQ3Njk0OTAxMTVlZWY0OWVlYzBhN2FmZGUxZWMzYjUzLi5h
YjRkNWZiYzExZjkyZDlhYWU2N2E4YTRkODhmYjJlY2FlZGNlYmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApAQCAtMTAzLDE5ICsxMDMsMTQgQEAgYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KQogICAgIHJldHVybiB0cnVl
OwogfQogICAgIAotc3RhdGljIGlubGluZSBVUkwgY3JlYXRlWW91VHViZVVSTChjb25zdCBTdHJp
bmcmIHZpZGVvSUQsIGNvbnN0IFN0cmluZyYgdGltZUlEKQorc3RhdGljIFVSTCBjcmVhdGVZb3VU
dWJlVVJMKFN0cmluZ1ZpZXcgdmlkZW9JRCwgU3RyaW5nVmlldyB0aW1lSUQpCiB7CiAgICAgQVNT
RVJUKCF2aWRlb0lELmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHZpZGVvSUQgIT0gIi8iKTsKLSAg
ICAKLSAgICBVUkwgcmVzdWx0KFVSTCgpLCAieW91dHViZToiICsgdmlkZW9JRCk7Ci0gICAgaWYg
KCF0aW1lSUQuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuc2V0UXVlcnkoInQ9IiArIHRpbWVJ
RCk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtl
U3RyaW5nKCJ5b3V0dWJlOiIsIHZpZGVvSUQsIHRpbWVJRC5pc0VtcHR5KCkgPyAiIiA6ICJ0PSIs
IHRpbWVJRCkpOwogfQotICAgIAotc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5
VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCisK
K3N0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0Fu
ZFZhbHVlcyhTdHJpbmdWaWV3IHF1ZXJ5U3RyaW5nKQogewogICAgIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlEaWN0aW9uYXJ5OwogICAgIApAQCAtMTU1LDcgKzE1
MCw3IEBAIHN0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5
S2V5c0FuZFZhbHVlcyhjb25zdCBTdHJpbmcmIHF1CiAgICAgICAgIC8vIFNhdmUgdGhlIGtleSBh
bmQgdGhlIHZhbHVlLgogICAgICAgICBpZiAoa2V5TGVuZ3RoICYmIHZhbHVlTGVuZ3RoKSB7CiAg
ICAgICAgICAgICBTdHJpbmcga2V5ID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKGtleUxvY2F0aW9u
LCBrZXlMZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVMb2NhdGlvbiwgdmFsdWVMZW5n
dGgpOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKHZh
bHVlTG9jYXRpb24sIHZhbHVlTGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgdmFsdWUu
cmVwbGFjZSgnKycsICcgJyk7CiAKICAgICAgICAgICAgIGlmICgha2V5LmlzRW1wdHkoKSAmJiAh
dmFsdWUuaXNFbXB0eSgpKQpAQCAtMjA5LDE2ICsyMDQsMTYgQEAgc3RhdGljIFVSTCBwcm9jZXNz
QW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRl
bmVkVVIKIAogICAgIC8vIFNob3J0IFVSTCBvZiB0aGUgZm9ybTogaHR0cDovL3lvdXR1LmJlL3Yx
ZDMwMUQKICAgICBpZiAoaXNZb3VUdWJlU2hvcnRlbmVkVVJMKSB7Ci0gICAgICAgIFN0cmluZyB2
aWRlb0lEID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1dG8gdmlkZW9JRCA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodmlkZW9JRC5pc0VtcHR5KCkg
fHwgdmlkZW9JRCA9PSAiLyIpCiAgICAgICAgICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIHJl
dHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCB7IH0pOwogICAgIH0KLSAgICAKKwogICAg
IGF1dG8gcGF0aCA9IHVybC5wYXRoKCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7
Ci0gICAgU3RyaW5nIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIAor
ICAgIGF1dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpOworCiAgICAgLy8gT24gdGhlIFlvdVR1YmUgbW9iaWxlIHdlYiBh
cHAsIHRoZSBwYXRoIGFuZCBxdWVyeSBzdHJpbmcgYXJlIHB1dCBpbnRvIHRoZQogICAgIC8vIGZy
YWdtZW50IHNvIHRoYXQgb25lIHdlYiBwYWdlIGlzIG9ubHkgZXZlciBsb2FkZWQgKHNlZSA8cmRh
cjovL3Byb2JsZW0vOTU1MDYzOT4pLgogICAgIGlmIChpc1lvdVR1YmVNb2JpbGVXZWJBcHBVUkwp
IHsKQEAgLTIyNyw3ICsyMjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJl
VVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAg
ICAgcGF0aCA9IGZyYWdtZW50OwogICAgICAgICAgICAgcXVlcnkgPSBlbXB0eVN0cmluZygpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IFN0cmluZ1ZpZXcoZnJhZ21lbnQp
LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQuc3Vi
c3RyaW5nKDAsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3Ry
aW5nKGxvY2F0aW9uICsgMSk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQgPSBlbXB0eVN0
cmluZygpOwpAQCAtMjYwLDEwICsyNTUsMTAgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRl
WW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwYXRoLCAiL2UvIikpIHsKLSAgICAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9u
ZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgICAgIFN0cmluZyB2aWRlb0lEOwot
ICAgICAgICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAgICAgIFN0cmluZ1Zp
ZXcgdmlkZW9JRDsKKyAgICAgICAgU3RyaW5nVmlldyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsK
IAorICAgICAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CiAgICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQYXRoQ29tcG9uZW50
LmZpbmQoJyYnKTsKICAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9IG5vdEZvdW5kKSB7
CiAgICAgICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2UgJiBpbiBwbGFjZSBv
ZiA/IGZvciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgpAQCAtMjczLDExICsyNjgsMTEgQEAg
c3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9v
bCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENv
bXBvbmVudDsKIAogICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwor
ICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFt
cGVyc2FuZC50b1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwo
dmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gVVJMKCk7CiB9CiAKQEAgLTI5MCwxMyArMjg1LDEzIEBAIFN0cmluZyBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkwoY29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCiBTdHJp
bmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIHsKICAgICBib29sIGlz
WW91VHViZVNob3J0ZW5lZFVSTCA9IGZhbHNlOwotICAgIFN0cmluZyBwb3NzaWJsZU1hbGZvcm1l
ZFF1ZXJ5OwotICAgIFVSTCB5b3VUdWJlVVJMID0gcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwo
c3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIHBvc3NpYmxlTWFsZm9ybWVkUXVlcnkpOwor
ICAgIFN0cmluZyBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OworICAgIFVSTCB5b3VUdWJlVVJMID0g
cHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRVUkws
IHBvc3NpYmx5TWFsZm9ybWVkUXVlcnkpOwogICAgIGlmIChzcmNVUkwuaXNFbXB0eSgpIHx8IHlv
dVR1YmVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3JjU3RyaW5nOwogCiAgICAgLy8g
VHJhbnNmb3JtIHRoZSB5b3V0dWJlVVJMICh5b3V0dWJlOlZpZGVvSUQpIHRvIGlmcmFtZSBlbWJl
ZCB1cmwgd2hpY2ggaGFzIHRoZSBmb3JtYXQ6IGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQv
VmlkZW9JRAotICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCkudG9TdHJpbmcoKTsKKyAg
ICBhdXRvIHNyY1BhdGggPSBzcmNVUkwucGF0aCgpOwogICAgIGNvbnN0IFN0cmluZyYgdmlkZW9J
RCA9IHlvdVR1YmVVUkwuc3RyaW5nKCkuc3Vic3RyaW5nKHlvdVR1YmVVUkwucHJvdG9jb2woKS5s
ZW5ndGgoKSArIDEpOwogICAgIHNpemVfdCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCA9IHNyY1Bh
dGguZmluZCh2aWRlb0lEKTsKIApAQCAtMzA1LDcgKzMwMCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNV
UkwsIGNvCiAgICAgICAgIEFTU0VSVChsb2NhdGlvbk9mVmlkZW9JREluUGF0aCk7CiAgICAgCiAg
ICAgICAgIC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQg
YmVmb3JlIC9wYXRoL1ZpZGVvSWQuCi0gICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9J
RCA9IHNyY1N0cmluZy5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoKSk7CisgICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1Zp
ZXcoc3JjU3RyaW5nKS5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoKSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShz
cmNQYXRoLCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3
ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECiAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlPwpAQCAt
MzE1LDIyICszMTAsMjEgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHVi
ZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY28KIAogICAgIEFTU0VSVChs
b2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgIT0gbm90Rm91bmQpOwogCi0gICAgY29uc3QgU3Ry
aW5nJiBzcmNVUkxQcmVmaXggPSBzcmNTdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRo
QmVmb3JlVmlkZW9JRCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisgICAg
YXV0byBzcmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuc3Vic3RyaW5nKDAsIGxv
Y2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7CisgICAgYXV0byBxdWVyeSA9IHNyY1VSTC5xdWVy
eSgpOworCiAgICAgLy8gSWYgdGhlIFVSTCBoYXMgbm8gcXVlcnksIHVzZSB0aGUgcG9zc2libHkg
bWFsZm9ybWVkIHF1ZXJ5IHdlIGZvdW5kLgogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHF1ZXJ5ID0gcG9zc2libGVNYWxmb3JtZWRRdWVyeTsKKyAgICAgICAgcXVlcnkgPSBwb3Nz
aWJseU1hbGZvcm1lZFF1ZXJ5OwogCiAgICAgLy8gQXBwZW5kIHRoZSBxdWVyeSBzdHJpbmcgaWYg
aXQgaXMgdmFsaWQuCi0gICAgU3RyaW5nQnVpbGRlciBmaW5hbFVSTDsKLSAgICBpZiAoaXNZb3VU
dWJlU2hvcnRlbmVkVVJMKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmRMaXRlcmFsKCJodHRwOi8v
d3d3LnlvdXR1YmUuY29tIik7Ci0gICAgZWxzZQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoc3Jj
VVJMUHJlZml4KTsKLSAgICBmaW5hbFVSTC5hcHBlbmQoIi9lbWJlZC8iLCB2aWRlb0lEKTsKLSAg
ICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKCc/JywgcXVl
cnkpOwotICAgIHJldHVybiBmaW5hbFVSTC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3Ry
aW5nKAorICAgICAgICBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPyAiaHR0cDovL3d3dy55b3V0dWJl
LmNvbSIgOiBzcmNVUkxQcmVmaXgsCisgICAgICAgICIvZW1iZWQvIiwKKyAgICAgICAgdmlkZW9J
RCwKKyAgICAgICAgcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIsCisgICAgICAgIHF1ZXJ5Cisg
ICAgKTsKIH0KICAgICAKIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c1VS
TChjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggOTkyNmNlZjk2NzE1NTM2NzJm
MjM3OTliZjJmZWJmYjVlZDE5MGY3Ny4uZTIzNzQ5NzE4NjNmMWRhNzBkN2U5ZjljOTk2OWRkNmMw
NjRmNTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTY0LDE1ICs2NCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIFN0cmluZ0J1aWxkZXIgbmFtZTsKLSAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsK
LSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG5hbWUuYXBwZW5kKCcvJyk7Ci0gICAg
aWYgKCF1cmwucXVlcnkoKS5pc051bGwoKSkgewotICAgICAgICBuYW1lLmFwcGVuZCgnPycpOwot
ICAgICAgICBuYW1lLmFwcGVuZCh1cmwucXVlcnkoKSk7Ci0gICAgfQotICAgIFN0cmluZyByZXN1
bHQgPSBuYW1lLnRvU3RyaW5nKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1ha2VTdHJpbmcoCisgICAgICAgIHBhdGgsCisgICAgICAgIHBhdGguaXNF
bXB0eSgpID8gIi8iIDogIiIsCisgICAgICAgIHVybC5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25N
YXJrKCkKKyAgICApOwogICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFyZXN1bHQuY29udGFpbnMoJyAnKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDM1YTY2YmU1NTVhNjNiNDA4ZTZkOGI1YmZiMmM5ZDcyOWEyNGE0MmIuLmNm
NmRjNWRhYWVmMzY4OWM5ZjY5OTU3MzRhZDg5MTYxMDRlYmUzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcApAQCAtOTQ0LDI2ICs5NDQsMjcgQEAgSW50UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y2xpY2tQb2ludCgpCiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKIHsKLSAgICBFbGVt
ZW50KiBlbGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9IGFuY2hv
ckVsZW1lbnQoKTsKKwogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1cHBvcnQgQVJJQSBs
aW5rcyBhcyBpbnRlcm5hbCBsaW5rIGVsZW1lbnRzCiAgICAgaWYgKCFpczxIVE1MQW5jaG9yRWxl
bWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEhUTUxBbmNob3JF
bGVtZW50JiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOwot
ICAgIAotICAgIFVSTCBsaW5rVVJMID0gYW5jaG9yLmhyZWYoKTsKLSAgICBTdHJpbmcgZnJhZ21l
bnRJZGVudGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvJiBh
bmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOworCisgICAgYXV0
byBsaW5rVVJMID0gYW5jaG9yLmhyZWYoKTsKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9
IGxpbmtVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmll
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8gY2hl
Y2sgaWYgVVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0gICAgVVJMIGRvY3VtZW50VVJM
ID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBhdXRvIGRvY3VtZW50VVJMID0g
bV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKLSAgICBOb2RlKiBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQo
KS5maW5kQW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CisKKyAgICBhdXRvIGxpbmtlZE5vZGUg
PSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKCFsaW5rZWROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIC8vIFRoZSBlbGVtZW50IHdlIGZpbmQgbWF5IG5v
dCBiZSBhY2Nlc3NpYmxlLCBzbyBmaW5kIHRoZSBmaXJzdCBhY2Nlc3NpYmxlIG9iamVjdC4KICAg
ICByZXR1cm4gZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUobGlua2VkTm9kZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NWE0ZmMxNWE4YTc5NGVhMGNmNmViZmYxNTc1Njk4
M2U2YjY3YjA2Li4wNGU1NTI4Y2VlODFmYzVmNjgyOTJhMmJhZTFhZTBiODU0MzRiZGE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMyNDksNyArMzI0OSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldFVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fdXJsID0gbmV3VVJMOwogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSWdub3JlSG9zdChtX3VybCkpCi0gICAgICAgIG1fdXJsLnJl
bW92ZUhvc3RBbmRQb3J0KCk7CisgICAgICAgIG1fdXJsLnNldEhvc3RBbmRQb3J0KHsgfSk7CiAK
ICAgICBtX2RvY3VtZW50VVJJID0gbV91cmwuc3RyaW5nKCk7CiAgICAgdXBkYXRlQmFzZVVSTCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGVkMzVmY2RjNmY0NjIwNGNkYWI3M2Y2MzRiZjll
MDUwZTExY2Q0NjcuLjFmZjIzZTE2MGI5MThhYjFjZGM1MGU4YzNmNzYxYzhkMWNhNDJhMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ0OTEsNyArNDQ5MSw3IEBAIEVsZW1lbnQqIEVsZW1l
bnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5hbWUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgZG9jdW1lbnQuYmFzZVVS
TCgpKSkgewotICAgICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
OworICAgICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC5maW5kQW5jaG9yKG91dEFuY2hvck5hbWUp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAxZGFhODU4OGRmNTM5MGFm
ODEzMWUwZGFmMDk3YTg5ZmI1NzdhNTkxLi4zMGVkOWYzZjYxZjQwM2RiYjk0ZThlM2UyZjc5ZmY4
OTdlMTcyYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNDQwLDYgKzQ0MCw4IEBA
IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IFRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQoY29u
c3QgRmxvYXRQb2ludCYgcCkKICAgICByZXR1cm4gZWxlbWVudHNGcm9tUG9pbnQocC54KCksIHAu
eSgpKTsKIH0KIAorLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gY2hhbmdlIHRoaXMgdG8gdGFr
ZSBhIFN0cmluZ1ZpZXcsIHNpbmNlIHRoYXQncyB3aGF0IGNhbGxlcnMgaGF2ZQorLy8gYW5kIHRo
ZXJlIGlzIG5vIHBhcnRpY3VsYXIgYWR2YW50YWdlIHRvIGFscmVhZHkgaGF2aW5nIGEgU3RyaW5n
LgogRWxlbWVudCogVHJlZVNjb3BlOjpmaW5kQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDBjOWY5ZDBlODkwMzk3MDAz
MTA5MGRiMmI4ZjMwZGRkYzQyZTlkZDQuLmZhNjFjNWM2MTllMDc0YTFhNzU1NTc3NWI1ZmY1Y2Y5
YzFjMTk1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCkBAIC0zMjgsMTMgKzMyOCwxMyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKKyAgICAg
ICAgU3RyaW5nIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBh
dGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBuYW1lID0gQXRvbVN0cmluZygibWVkaWEiKTsKKyAgICAgICAgICAgIG5hbWUg
PSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
bmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEo
KSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdU
Rk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzQ4LDEx
ICszNDgsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291cmNl
ID09IHVybFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21w
b25lbnQoKTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmlu
ZykubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBuYW1lID0gQXRvbVN0cmluZygiZmlsZSIpOworICAgICAgICAg
ICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IG5hbWUsIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5m
byA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KaW5kZXggZjJhMmQ1MmFjNWFiZjRlNGYxMzExM2NhMjVkMWIyMGExNzM4ZmE2
OS4uYjdkMjljZDRiYWQ5NTBkM2FiZDdkZjc5ZTkwZjUzNDY0YzM2ODg0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1l
bnQmIGltYWdlRWxlbWVuCiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gcGFzdGVi
b2FyZEltYWdlVVJMOwogICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7
CiAgICAgfQotICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0gaW1hZ2VTb3VyY2VV
UkwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFt
ZSA9IGltYWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICBw
YXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IHBhc3RlYm9hcmQucmVzb3VyY2VNSU1FVHlwZShjYWNo
ZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggM2ExMWQ5MjBiMDc4MGVk
Y2Q3NjRiMTlhMDRjM2FmZTA5ZTkyNmNiMy4uOTAyMTBmNTViMTcyYTIwYWI2ZjU3YTI0MjUxNzM0
YTEwNjY4ZTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcApAQCAtMTc3LDIyICsxNzcsMTcgQEAgU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6YXR0YWNobWVudFRpdGxlKCkgY29uc3QKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OmF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdAogewogICAgIGF1dG8gdGl0bGUgPSBh
dHRhY2htZW50VGl0bGUoKTsKLQogICAgIGF1dG8gaW5kZXhPZkxhc3REb3QgPSB0aXRsZS5yZXZl
cnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleE9mTGFzdERvdCA9PSBub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuIHRpdGxlOwogCi0gICAgU3RyaW5nIG5hbWUgPSB0aXRsZS5sZWZ0KGluZGV4T2ZM
YXN0RG90KTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gdGl0bGUuc3Vic3RyaW5nKGluZGV4T2ZM
YXN0RG90KTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVu
ZChsZWZ0VG9SaWdodE1hcmspOwotICAgIGJ1aWxkZXIuYXBwZW5kKGZpcnN0U3Ryb25nSXNvbGF0
ZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQocG9wRGly
ZWN0aW9uYWxJc29sYXRlKTsKLSAgICBidWlsZGVyLmFwcGVuZChleHRlbnNpb24pOwotCi0gICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAg
ICAgbGVmdFRvUmlnaHRNYXJrLAorICAgICAgICBmaXJzdFN0cm9uZ0lzb2xhdGUsCisgICAgICAg
IFN0cmluZ1ZpZXcodGl0bGUpLmxlZnQoaW5kZXhPZkxhc3REb3QpLAorICAgICAgICBwb3BEaXJl
Y3Rpb25hbElzb2xhdGUsCisgICAgICAgIFN0cmluZ1ZpZXcodGl0bGUpLnN1YnN0cmluZyhpbmRl
eE9mTGFzdERvdCkKKyAgICApOwogfQogCiBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojph
dHRhY2htZW50VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuY3BwCmluZGV4IDAzZDkwNWJiYTM3OTEyN2Q3Zjk0MTg5MmY3OTc2NWE3ZWY5M2MxYjkuLjZi
ZmU3MDc0YTk1MWFkN2FjY2U5OTM4NDAwNjZjOGRiNzRkMTYxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNTcsMTQgKzM1NywxNCBAQCBzdGF0aWMg
UmVwbGFjZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBl
eHRlbnNpb247Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7CisgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBv
bmVudCgpOwogICAgIHNpemVfdCBkb3RPZmZzZXQgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNl
RmluZCgnLicpOwogICAgIGlmIChkb3RPZmZzZXQgIT0gbm90Rm91bmQpCi0gICAgICAgIGV4dGVu
c2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZzZXQgKyAxKTsKKyAgICAg
ICAgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEp
LnRvU3RyaW5nKCk7CiAKICAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlOwogICAgIGlmICh0eXBl
LmlzRW1wdHkoKSAmJiB1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgdHlwZSA9IG1pbWVU
eXBlRnJvbURhdGFVUkwodXJsLnN0cmluZygpKTsKKyAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJv
bURhdGFVUkwodXJsKTsKICAgICAKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgIWV4dGVuc2lv
bi5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZXBsYWNlbWVudCA6IHJlcGxhY2Vt
ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJ
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5j
cHAKaW5kZXggZTdhNTE2ZWJhMjI4NDlmY2QzNzM0NjU5Mzk0YjdjNDllN2Y5N2NlMS4uNWI4NDU0
MWVhMGRjZjUyMjQyODJjMzFjZjc0YmI0NmVhMjU1MmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC05OCw5ICs5OCw3IEBAIE1lZGlh
VGltZSBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjplbmRUaW1lKCkKIAogdm9pZCBNZWRpYUZyYWdt
ZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cygpCiB7Ci0gICAgaWYgKCFtX3VybC5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFN0cmluZyBmcmFnbWVudFN0
cmluZyA9IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRTdHJp
bmcgPSBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRTdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAppbmRleCBi
NzBlNWRjYmU4Mjc1ODEwMGIwNzJkMmY0ZjBmMGU0NjgwYzAxMDk3Li5lOGY0ZGE4N2ZhMWExOWUy
MDFiM2JjYWUxNTYyNDA1ZDJkN2U1MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIGhvc3RuYW1l
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTEwNiw3
ICsxMDYsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZh
bHVlKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnVzZXJuYW1l
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRVc2VyKCk7CisgICAgcmV0dXJu
IGhyZWYoKS5lbmNvZGVkVXNlcigpLnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFVzZXJuYW1lKGNv
bnN0IFN0cmluZyYgdXNlcikKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxz
PFQ+OjpwYXNzd29yZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzcygp
OworICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFBhc3N3b3JkKCkudG9TdHJpbmcoKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBVUkxVdGlsczxU
Pjo6c2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzKQogICAgIFVSTCB1cmwgPSBocmVmKCk7
CiAgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB1
cmwuc2V0UGFzcyhwYXNzKTsKKyAgICB1cmwuc2V0UGFzc3dvcmQocGFzcyk7CiAgICAgc2V0SHJl
Zih1cmwpOwogfQogCkBAIC0xNDEsMTcgKzE0MSwxOCBAQCBTdHJpbmcgVVJMVXRpbHM8VD46Omhv
c3QoKSBjb25zdAogICAgIHJldHVybiBocmVmKCkuaG9zdEFuZFBvcnQoKTsKIH0KIAotLy8gVGhp
cyBmdW5jdGlvbiBkb2VzIG5vdCBhbGxvdyBsZWFkaW5nIHNwYWNlcyBiZWZvcmUgdGhlIHBvcnQg
bnVtYmVyLgotc3RhdGljIGlubGluZSB1bnNpZ25lZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRp
b24oY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQgcG9ydFN0YXJ0LCB1bnNpZ25lZCYgcG9y
dEVuZCkKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY291bnRBU0NJSURpZ2l0cyhTdHJpbmdWaWV3
IHN0cmluZykKIHsKLSAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OwotICAgIHdoaWxlIChpc0FTQ0lJ
RGlnaXQodmFsdWVbcG9ydEVuZF0pKQotICAgICAgICArK3BvcnRFbmQ7Ci0gICAgcmV0dXJuIHZh
bHVlLnN1YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGNvdW50ID0gMDsgY291bnQgPCBsZW5ndGg7ICsrY291bnQpIHsKKyAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoc3RyaW5nW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAg
fQorICAgIHJldHVybiBsZW5ndGg7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBV
UkxVdGlsczxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBVUkxVdGlsczxU
Pjo6c2V0SG9zdChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE2OCwxOCArMTY5LDE5IEBAIHZvaWQgVVJMVXRpbHM8VD46
OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAoc2VwYXJhdG9yID09IG5vdEZv
dW5kKQogICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOwogICAgIGVsc2UgewotICAg
ICAgICB1bnNpZ25lZCBwb3J0RW5kOwotICAgICAgICB1bnNpZ25lZCBwb3J0ID0gcGFyc2VQb3J0
RnJvbVN0cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0b3IgKyAxLCBwb3J0RW5kKTsKLSAgICAg
ICAgaWYgKCFwb3J0KSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjb3VudEFTQ0lJ
RGlnaXRzKHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxKSk7CisgICAgICAgIGlmICghcG9y
dExlbmd0aCkgewogICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9p
bmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzCiAgICAg
ICAgICAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChwMy4yKSBhbmQK
ICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlz
IHNldCB0byBlbXB0eSBzdHJpbmcuCi0gICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFs
dWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNlZW1zIGxpa2Ugc29tZXRoaW5nIHRoYXQgaGFzIHNpbmNlIGJlZW4gY2hhbmdl
ZCBhbmQgdGhpcyBydWxlIGFuZCBjb2RlIG1heSBiZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgIHVy
bC5zZXRIb3N0QW5kUG9ydChtYWtlU3RyaW5nKHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3Ig
KyAxKSwgJzAnKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjppc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAg
YXV0byBwb3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciAr
IDEsIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChwb3J0TnVtYmVyICYmIFdURjo6aXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCB1cmwucHJvdG9jb2woKSkpCiAgICAg
ICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0
b3IpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBv
cnQodmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEgKyBwb3J0TGVuZ3Ro
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwpAQCAtMjI3
LDE3ICsyMjksMTggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIFVSTFV0aWxzPFQ+Ojpz
ZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKLSAg
ICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSB8fCB1cmwucHJvdG9jb2xJcygiZmlsZSIpKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgIGlm
ICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikgfHwgIXVy
bC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3VjY2Vz
cyA9IHRydWU7Ci0gICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnRvVUludCgmc3VjY2Vzcyk7Ci0g
ICAgaWYgKCFzdWNjZXNzIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVy
bC5wcm90b2NvbCgpKSkKLSAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0OworICAg
IGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHBvcnQgPSBwYXJzZVVJbnQxNih2YWx1
ZS5sZWZ0KGNvdW50QVNDSUlEaWdpdHModmFsdWUpKSk7CisgICAgICAgIGlmICghcG9ydCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKCpwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICBwb3J0ID0gV1RGOjpudWxs
b3B0OworICAgIH0KKyAgICB1cmwuc2V0UG9ydChwb3J0KTsKIAogICAgIHNldEhyZWYodXJsLnN0
cmluZygpKTsKIH0KQEAgLTI1NywxMCArMjYwLDEwIEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBh
dGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHZhbHVlWzBVXSA9PSAnLycpCisgICAgaWYg
KHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkKICAgICAgICAgdXJsLnNldFBhdGgodmFsdWUpOwogICAg
IGVsc2UKLSAgICAgICAgdXJsLnNldFBhdGgoIi8iICsgdmFsdWUpOworICAgICAgICB1cmwuc2V0
UGF0aChtYWtlU3RyaW5nKCcvJywgdmFsdWUpKTsKIAogICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKIH0KQEAgLTI2OCw4ICsyNzEsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZShj
b25zdCBTdHJpbmcmIHZhbHVlKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRp
bHM8VD46OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1ZXJ5
KCk7Ci0gICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyBx
dWVyeTsKKyAgICByZXR1cm4gaHJlZigpLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmco
KSA6IGhyZWYoKS5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0yODAsNyArMjgyLDcgQEAgdm9pZCBVUkxVdGls
czxUPjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIC8vIElmIHRoZSBn
aXZlbiB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBzZXQgdXJsJ3MgcXVlcnkgdG8gbnVsbC4K
ICAgICAgICAgdXJsLnNldFF1ZXJ5KHsgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5n
IG5ld1NlYXJjaCA9ICh2YWx1ZVswVV0gPT0gJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZh
bHVlOworICAgICAgICBTdHJpbmcgbmV3U2VhcmNoID0gdmFsdWUuc3RhcnRzV2l0aCgnPycpID8g
dmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0ICcj
JyBpbiB0aGUgcXVlcnkgZG9lcyBub3QgbGVhayB0byB0aGUgaGFzaC4KICAgICAgICAgdXJsLnNl
dFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOwogICAgIH0K
QEAgLTI5MSwxNyArMjkzLDE1IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBT
dHJpbmcmIHZhbHVlKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46
Omhhc2goKSBjb25zdAogewotICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSBocmVmKCku
ZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBBdG9tU3RyaW5n
KFN0cmluZygiIyIgKyBmcmFnbWVudElkZW50aWZpZXIpKTsKKyAgICAvLyBGSVhNRTogV2h5IGNv
bnZlcnQgdGhpcyBzdHJpbmcgdG8gYW4gYXRvbSBoZXJlIGluc3RlYWQgb2YganVzdCBhIHN0cmlu
Zz8gSnVzdCBhbiBlcnJvcj8gSW50ZW50aW9uYWxseSB0byBzYXZlIG1lbW9yeT8KKyAgICByZXR1
cm4gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5QXRvbSgpIDog
aHJlZigpLmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvQXRvbVN0
cmluZygpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQgVVJMVXRpbHM8VD46OnNl
dEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBVUkwgdXJsID0gaHJlZigpOwotICAg
IFN0cmluZyBuZXdGcmFnbWVudCA9IHZhbHVlWzBVXSA9PSAnIycgPyB2YWx1ZS5zdWJzdHJpbmco
MSkgOiB2YWx1ZTsKKyAgICBhdXRvIG5ld0ZyYWdtZW50ID0gdmFsdWUuc3RhcnRzV2l0aCgnIycp
ID8gU3RyaW5nVmlldyh2YWx1ZSkuc3Vic3RyaW5nKDEpIDogU3RyaW5nVmlldyh2YWx1ZSk7CiAg
ICAgaWYgKG5ld0ZyYWdtZW50LmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcigpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9BZENsaWNrQXR0cmlidXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tB
dHRyaWJ1dGlvbi5jcHAKaW5kZXggNjMzZTc3NWE1NDU0NGZjZmQ2Njg3YWJiZWNmOWFkODY4OWE2
ZGQyZi4uNzZkNGFmYjk1ZmY0YjQ2ZGMwMmFjY2UwN2RmNGFlYzljNTRiZjE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgYm9vbCBBZENsaWNrQXR0cmlidXRpb246OmlzVmFsaWQoKSBjb25zdAogCiBFeHBlY3RlZDxB
ZENsaWNrQXR0cmlidXRpb246OkNvbnZlcnNpb24sIFN0cmluZz4gQWRDbGlja0F0dHJpYnV0aW9u
OjpwYXJzZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiB7Ci0gICAg
aWYgKCFyZWRpcmVjdFVSTC5wcm90b2NvbElzKCJodHRwcyJfcykgfHwgcmVkaXJlY3RVUkwuaGFz
VXNlcm5hbWUoKSB8fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpIHx8IHJlZGlyZWN0VVJMLmhh
c1F1ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnQoKSkgeworICAgIGlmICghcmVkaXJl
Y3RVUkwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCByZWRpcmVjdFVSTC5oYXNDcmVkZW50aWFscygp
IHx8IHJlZGlyZWN0VVJMLmhhc1F1ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oQWRDbGlja0F0dHJpYnV0aW9uLCAiQ29udmVy
c2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBI
VFRQUyBvciB0aGUgVVJMIGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29y
ZCwgcXVlcnkgc3RyaW5nLCBhbmQgZnJhZ21lbnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIltBZCBDbGljayBBdHRyaWJ1dGlvbl0gQ29udmVyc2lvbiB3YXMgbm90IGFj
Y2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQUyBvciB0aGUgVVJM
IGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwgcXVlcnkgc3RyaW5n
LCBhbmQgZnJhZ21lbnQuIl9zKTsKQEAgLTE4OSwxNyArMTg5LDEyIEBAIFVSTCBBZENsaWNrQXR0
cmlidXRpb246OnVybEZvclRlc3RpbmcoY29uc3QgVVJMJiBiYXNlVVJMKSBjb25zdAogICAgIGF1
dG8gaG9zdCA9IG1fc291cmNlLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpOwogICAgIGlmICho
b3N0ICE9ICJsb2NhbGhvc3QiICYmIGhvc3QgIT0gIjEyNy4wLjAuMSIpCiAgICAgICAgIHJldHVy
biBVUkwoKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIj9jb252ZXJzaW9uPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY29u
dmVyc2lvbi52YWx1ZSgpLmRhdGEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJmNhbXBh
aWduPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOwotICAgIGlm
IChiYXNlVVJMLmhhc1F1ZXJ5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyYnKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoYmFzZVVSTC5xdWVyeSgpKTsKLSAgICB9Ci0gICAgcmV0dXJu
IFVSTChiYXNlVVJMLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIFN0cmluZyByZWxhdGl2ZVVS
TDsKKyAgICBpZiAoIWJhc2VVUkwuaGFzUXVlcnkoKSkKKyAgICAgICAgcmVsYXRpdmVVUkwgPSBt
YWtlU3RyaW5nKCI/Y29udmVyc2lvbj0iLCBtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhLCAiJmNh
bXBhaWduPSIsIG1fY2FtcGFpZ24uaWQpOworICAgIGVsc2UKKyAgICAgICAgcmVsYXRpdmVVUkwg
PSBtYWtlU3RyaW5nKCI/Y29udmVyc2lvbj0iLCBtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhLCAi
JmNhbXBhaWduPSIsIG1fY2FtcGFpZ24uaWQsICcmJywgYmFzZVVSTC5xdWVyeSgpKTsKKyAgICBy
ZXR1cm4gVVJMKGJhc2VVUkwsIHJlbGF0aXZlVVJMKTsKIH0KIAogdm9pZCBBZENsaWNrQXR0cmli
dXRpb246Om1hcmtDb252ZXJzaW9uQXNTZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggODI5MDYyOGM0ZWQ0NWUwNTMx
YzQ3OTZmYTI2YWQ1YWM0YTFkNjMzOC4uZTA1M2M5YjAzZjA0NjUwZGVmNTViZWNkNThkMWM2MzY5
YzYzMGEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcgdmFsaWRhdGVDcm9zc09y
aWdpblJlZGlyZWN0aW9uVVJMKGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiAgICAgaWYgKCFMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlZGly
ZWN0VVJMLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoIm5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JT
IHJlZGlyZWN0aW9uIHdpdGggbm9uIENPUlMgc2NoZW1lIik7CiAKLSAgICBpZiAocmVkaXJlY3RV
UkwuaGFzVXNlcm5hbWUoKSB8fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpKQorICAgIGlmIChy
ZWRpcmVjdFVSTC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygi
cmVkaXJlY3Rpb24gVVJMICIsIHJlZGlyZWN0VVJMLnN0cmluZygpLCAiIGhhcyBjcmVkZW50aWFs
cyIpOwogCiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjE3N2Y0YjZkYjZiMTk1Y2E5ZGY4Mjc5
YjVhZjdiYjE1NmY1YjUwYS4uZGYzZDA4Yzc0ZmViYzFiNTRlMjQ0ZTYzZmM0OTZmZTYzMGM0MzAy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTUzMiw4ICs1MzIsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAg
IC8vIEFueSBjcmVkZW50aWFsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjcm9z
cy1zaXRlIHJlcXVlc3RzLgogICAgIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJs
KCk7CiAgICAgbV9vcHRpb25zLnNlY3VyaXR5Q2hlY2sgPSBzZWN1cml0eUNoZWNrOwotICAgIEFT
U0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSk7
Ci0gICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC5wYXNzKCkuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCAhcmVxdWVzdFVSTC5o
YXNDcmVkZW50aWFscygpKTsKIAogICAgIGlmICghbV9yZWZlcnJlci5pc051bGwoKSkKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIobV9yZWZlcnJlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCAzYWFhOGVlZDhjMzM3ZTc5ZDk4ODhhNDU1ZjM5
ZmYzZmVlNGI1YTM2Li4zMGFmOTAwODA0OWE4ZTM5ODJmOWM5YmY0OWRhZWJmYzkyZWE2ODBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTc4LDExICs3OCwx
MSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwg
Y29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAgICAgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVT
dHJpbmdBc0Zvcm1EYXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7CiAgICAgYm9keSA9IFN0cmlu
Zyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcr
JywgIiUyMCIpOwogCi0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CisgICAgYXV0byBx
dWVyeSA9IHVybC5xdWVyeSgpOwogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCiAgICAgICAgIHVy
bC5zZXRRdWVyeShib2R5KTsKICAgICBlbHNlCi0gICAgICAgIHVybC5zZXRRdWVyeShxdWVyeSAr
ICcmJyArIGJvZHkpOworICAgICAgICB1cmwuc2V0UXVlcnkobWFrZVN0cmluZyhxdWVyeSwgJyYn
LCBib2R5KSk7CiB9CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlQWN0
aW9uKGNvbnN0IFN0cmluZyYgYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggMzIzZGI0NjM2MDI5
OGI4YTkxYmIwMGE0NzkyNGJiMmU4MTExZjMzOC4uNDg4MmQ3N2UxMjcxNjk4NWM0NjQ1MWRmMGVj
NzQwYTc5MzkzYzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNDYsMTUgKzI0NiwxMiBAQCBib29s
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNl
TG9hZGVyKiByZXNvdXJjZUxvYQogCiBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZp
bGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCB1
c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCBpbnN0ZWFkPwogI2lmIFVTRShDRikgJiYgUExB
VEZPUk0oV0lOKQotICAgIFVSTCB1cmwoYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5
bGUsIGZhbHNlKSkuZ2V0KCkpOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/IFNlZW1z
IGltcHJvYmFibGUgdGhhdCB0aGUgcGFzc2VkLWluIHBhdGhzIHdvdWxkIGJlIGluIHRoZSBXaW5k
b3dzIHBhdGggc3R5bGUuCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0
aFN0eWxlLCBmYWxzZSkpLmdldCgpOwogI2Vsc2UKLSAgICBVUkwgdXJsOwotICAgIHVybC5zZXRQ
cm90b2NvbCgiZmlsZSJfcyk7Ci0gICAgdXJsLnNldFBhdGgocGF0aCk7CisgICAgcmV0dXJuIFVS
TDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChwYXRoKTsKICNlbmRpZgotICAgIHJldHVybiB1
cmw7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJl
c291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmYWFlNTFm
OTlmNjJiMmYyOWQ1Y2JiOGFlY2ZjZWIxNmFkYzJlYjU0Li43MzRkYTc2NjJkNDlhNjIyNTlkZTYx
ZmVkOGNiZWI3MDBlZDJhYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25saW5lV2hpdGVsaXN0
LCBVbmtub3duIH07CiAKLXN0YXRpYyBTdHJpbmcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFu
aWZlc3RVUkwpCitzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5p
ZmVzdFVSTCkKIHsKICAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0VVJMLnBhdGgoKTsK
ICAgICBBU1NFUlQobWFuaWZlc3RQYXRoWzBdID09ICcvJyk7CiAgICAgbWFuaWZlc3RQYXRoID0g
bWFuaWZlc3RQYXRoLnN1YnN0cmluZygwLCBtYW5pZmVzdFBhdGgucmV2ZXJzZUZpbmQoJy8nKSAr
IDEpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gbWFuaWZlc3RQYXRoW21hbmlmZXN0
UGF0aC5sZW5ndGgoKSAtIDFdKTsKLSAgICByZXR1cm4gbWFuaWZlc3RQYXRoLnRvU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1hbmlmZXN0UGF0aDsKIH0KIAogYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQpAQCAtNTEsNyArNTEs
NyBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3Ry
aW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdAogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFj
a1VSTHMuaXNFbXB0eSgpKTsKICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9
IGZhbHNlOwogCi0gICAgU3RyaW5nIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0
aChtYW5pZmVzdFVSTCk7CisgICAgYXV0byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVz
dFBhdGgobWFuaWZlc3RVUkwpOwogCiAgICAgY29uc3QgY2hhciBjYWNoZU1hbmlmZXN0TUlNRVR5
cGVbXSA9ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IjsKICAgICBib29sIGFsbG93RmFsbGJhY2tOYW1l
c3BhY2VPdXRzaWRlTWFuZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
YW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0YWUw
MGVmOTVhNTU0NzVhNjVmM2QuLmNkOTQ5ZTdjMTMwZDk2NjI4MmYxOWI1MmM4ZGEzMWQwMDRhNjgx
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTg2
LDEwICs4Niw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYpCiAKIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0
aW9uKCkgY29uc3QKIHsKLSAgICBhdXRvJiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICBpZiAoIXVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybCgpLmZyYWdt
ZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA2YTI4YTg1
NzFjNWVjYTYyN2QzZTZlN2QxNGY3OWE3NjM4Njk2NWIzLi5lNGE5NGE1MDU5NjFhYTM3OTdmYTZk
MDRlYTY1YzY0NTY1YWQ5NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBTdHJpbmcg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzcGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1ZXN0
VVJMKFJlc291cmNlUmVxdQogICAgIGlmICghTWVtb3J5Q2FjaGU6OnNob3VsZFJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcihyZXF1ZXN0LnVybCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBV
UkwgdXJsID0gcmVxdWVzdC51cmwoKTsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0g
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0g
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiAgICAgdXJsLnJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcigpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgcmV0dXJuIGZy
YWdtZW50SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBiNGNmYjc1
MzE3OTY5MjY4OWQzZDY2MWFiY2Q1ZmQ3MzdlYjBlZGJlLi43YzExZGJmYjZjNGMwZjliYmRlYzRh
OThlYWVkMjM0ZmUwZDkzYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMTc5
LDggKzIxNzksOCBAQCB2b2lkIEZyYW1lVmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAKIGJvb2wg
RnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50KGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0cmlu
ZyBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgaWYg
KHNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbChmcmFnbWVudElkZW50aWZpZXIpKQorICAgIGF1dG8g
ZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGlmIChz
Y3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoZnJhZ21lbnRJZGVudGlmaWVyLnRvU3RyaW5nKCkpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRyeSBhZ2FpbiBhZnRlciBkZWNvZGluZyB0
aGUgcmVmLCBiYXNlZCBvbiB0aGUgZG9jdW1lbnQncyBlbmNvZGluZy4KQEAgLTIxOTUsNyArMjE5
NSw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50KGNvbnN0IFVSTCYgdXJsKQog
CiBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGNvbnN0IFN0cmluZyYg
ZnJhZ21lbnRJZGVudGlmaWVyKQogewotICAgIExPRyhTY3JvbGxpbmcsICJGcmFtZVZpZXc6OnNj
cm9sbFRvQW5jaG9yICVzIiwgZnJhZ21lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOworICAg
IExPRyhTY3JvbGxpbmcsICJGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbCAlcyIs
IGZyYWdtZW50SWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIElmIG91ciBVUkwg
aGFzIG5vIHJlZiwgdGhlbiB3ZSBoYXZlIG5vIHBsYWNlIHdlIG5lZWQgdG8ganVtcCB0by4KICAg
ICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAK
aW5kZXggOWM1OGIwNmY0YzQ3MTEzMGNlNDgxNWYxMWQxNGNiNzhmODFiNDlhMC4uMzhmZDdiMjli
NTNlYWI0ODRlMzA5NjNiNTFjOGFlNTI1YzVkN2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CkBAIC0yMDEsMTMgKzIwMSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9i
amVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQogICAgICAgICBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUgPSBzdGF0ZU9iamVjdFR5cGUgPT0gU3RhdGVPYmplY3RU
eXBlOjpSZXBsYWNlID8gImhpc3RvcnkucmVwbGFjZVN0YXRlKCkiIDogImhpc3RvcnkucHVzaFN0
YXRlKCkiOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgbWFrZVN0
cmluZygiQmxvY2tlZCBhdHRlbXB0IHRvIHVzZSAiLCBmdW5jdGlvbk5hbWUsICIgdG8gY2hhbmdl
IHNlc3Npb24gaGlzdG9yeSBVUkwgZnJvbSAiLCBkb2N1bWVudFVSTC5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKSwgIiB0byAiLCBmdWxsVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRU
b0xlbmd0aCgpLCAiLiAiLCBzdWZmaXgpIH07CiAgICAgfTsKLSAgICBpZiAoIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChmdWxsVVJMLCBkb2N1bWVudFVSTCkgfHwgZnVsbFVSTC51c2VyKCkg
IT0gZG9jdW1lbnRVUkwudXNlcigpIHx8IGZ1bGxVUkwucGFzcygpICE9IGRvY3VtZW50VVJMLnBh
c3MoKSkKKyAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChmdWxsVVJMLCBkb2N1
bWVudFVSTCkgfHwgZnVsbFVSTC51c2VyKCkgIT0gZG9jdW1lbnRVUkwudXNlcigpIHx8IGZ1bGxV
UkwucGFzc3dvcmQoKSAhPSBkb2N1bWVudFVSTC5wYXNzd29yZCgpKQogICAgICAgICByZXR1cm4g
Y3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JXaXRoTWVzc2FnZVN1ZmZpeCgiUHJvdG9jb2xz
LCBkb21haW5zLCBwb3J0cywgdXNlcm5hbWVzLCBhbmQgcGFzc3dvcmRzIG11c3QgbWF0Y2guIik7
CiAKICAgICBjb25zdCBhdXRvJiBkb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgLy8gV2UgYWxsb3cgc2FuZGJveGVkIGRvY3Vt
ZW50cywgJ2RhdGE6Jy8nZmlsZTonIFVSTHMsIGV0Yy4gdG8gdXNlICdwdXNoU3RhdGUnLydyZXBs
YWNlU3RhdGUnIHRvIG1vZGlmeSB0aGUgVVJMIHF1ZXJ5IGFuZCBmcmFnbWVudHMuCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwMjggZm9yIHRo
ZSBjb21wYXRpYmlsaXR5IGNvbmNlcm5zLgotICAgIGJvb2wgYWxsb3dTYW5kYm94RXhjZXB0aW9u
ID0gKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNMb2NhbCgpIHx8IGRvY3VtZW50U2VjdXJpdHlP
cmlnaW4uaXNVbmlxdWUoKSkgJiYgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoZG9jdW1l
bnRVUkwsIGZ1bGxVUkwpOworICAgIGJvb2wgYWxsb3dTYW5kYm94RXhjZXB0aW9uID0gKGRvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4uaXNMb2NhbCgpIHx8IGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNV
bmlxdWUoKSkKKyAgICAgICAgJiYgZG9jdW1lbnRVUkwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFn
bWVudElkZW50aWZpZXIoKSA9PSBmdWxsVVJMLnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJ
ZGVudGlmaWVyKCk7CiAKICAgICBpZiAoIWFsbG93U2FuZGJveEV4Y2VwdGlvbiAmJiAhZG9jdW1l
bnRTZWN1cml0eU9yaWdpbi5jYW5SZXF1ZXN0KGZ1bGxVUkwpICYmIChmdWxsVVJMLnBhdGgoKSAh
PSBkb2N1bWVudFVSTC5wYXRoKCkgfHwgZnVsbFVSTC5xdWVyeSgpICE9IGRvY3VtZW50VVJMLnF1
ZXJ5KCkpKQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JXaXRo
TWVzc2FnZVN1ZmZpeCgiUGF0aHMgYW5kIGZyYWdtZW50cyBtdXN0IG1hdGNoIGZvciBhIHNhbmRi
b3hlZCBkb2N1bWVudC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggMjg3ODljZDE0
Mjk4MzJjMWYyNzJhNmFhZDVlYjFlOGI2Mjg4MmVjNy4uMzZjMWM5YmJjY2ExMDZjOGViNTdmMWJl
YTYzNzBiMGUyODdhMjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTYxLDE0ICs2
MSw4IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiBTdHJpbmcg
TG9jYXRpb246OmhyZWYoKSBjb25zdAogewotICAgIGF1dG8mIHVybCA9IHRoaXMtPnVybCgpOwot
Ci0gICAgaWYgKCF1cmwuaGFzVXNlcm5hbWUoKSAmJiAhdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAg
ICAgIHJldHVybiB1cmwuc3RyaW5nKCk7Ci0KLSAgICBVUkwgdXJsV2l0aG91dENyZWRlbnRpYWxz
KHVybCk7Ci0gICAgdXJsV2l0aG91dENyZWRlbnRpYWxzLnNldFVzZXIoV1RGOjplbXB0eVN0cmlu
ZygpKTsKLSAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc2V0UGFzcyhXVEY6OmVtcHR5U3RyaW5n
KCkpOworICAgIFVSTCB1cmxXaXRob3V0Q3JlZGVudGlhbHModXJsKCkpOworICAgIHVybFdpdGhv
dXRDcmVkZW50aWFscy5yZW1vdmVDcmVkZW50aWFscygpOwogICAgIHJldHVybiB1cmxXaXRob3V0
Q3JlZGVudGlhbHMuc3RyaW5nKCk7CiB9CiAKQEAgLTkxLDIwICs4NSwxOSBAQCBTdHJpbmcgTG9j
YXRpb246Omhvc3RuYW1lKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkgY29uc3QK
IHsKLSAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwotICAgIHJldHVybiB1cmwucG9y
dCgpID8gU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKS52YWx1ZSgpKSA6IGVtcHR5U3RyaW5nKCk7
CisgICAgYXV0byBwb3J0ID0gdXJsKCkucG9ydCgpOworICAgIHJldHVybiBwb3J0ID8gU3RyaW5n
OjpudW1iZXIoKnBvcnQpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpw
YXRobmFtZSgpIGNvbnN0CiB7CiAgICAgYXV0byBwYXRoID0gdXJsKCkucGF0aCgpOwotICAgIHJl
dHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIiA6IHBhdGgudG9TdHJpbmcoKTsKKyAgICByZXR1cm4g
cGF0aC5pc0VtcHR5KCkgPyAiLyJfcyA6IHBhdGgudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIExv
Y2F0aW9uOjpzZWFyY2goKSBjb25zdAogewotICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJs
KCk7Ci0gICAgcmV0dXJuIHVybC5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAi
PyIgKyB1cmwucXVlcnkoKTsKKyAgICByZXR1cm4gdXJsKCkucXVlcnkoKS5pc0VtcHR5KCkgPyBl
bXB0eVN0cmluZygpIDogdXJsKCkucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3Ry
aW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKQEAgLTEyNSw4ICsx
MTgsNyBAQCBSZWY8RE9NU3RyaW5nTGlzdD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNv
bnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgU3RyaW5n
JiBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBy
ZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIg
KyBmcmFnbWVudElkZW50aWZpZXI7CisgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXJX
aXRoTGVhZGluZ051bWJlclNpZ24oKS50b1N0cmluZygpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0SHJlZihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBm
aXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNDQsNyArMTM2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFByb3RvY29sKERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBET01XaW5kb3cmIGZpcnMKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
OwogICAgIGlmICghdXJsLnNldFByb3RvY29sKHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRIb3N0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZp
cnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhvc3QpCkBAIC0xNTQsNyArMTQ2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3QoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERP
TVdpbmRvdyYgZmlyc3RXaW4KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0KTsKLSAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmlu
ZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywg
dXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1lKERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQpAQCAtMTY0LDcgKzE1Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRIb3N0bmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICB1cmwuc2V0SG9zdChob3N0bmFtZSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFj
dGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5k
b3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBvcnRTdHJpbmcpCkBAIC0xNzMsMTIgKzE2
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwotICAg
IGludCBwb3J0ID0gcG9ydFN0cmluZy50b0ludCgpOwotICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0
ID4gMHhGRkZGIHx8IHBvcnRTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICB1cmwucmVtb3ZlUG9y
dCgpOwotICAgIGVsc2UKLSAgICAgICAgdXJsLnNldFBvcnQocG9ydCk7Ci0gICAgcmV0dXJuIHNl
dExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAg
dXJsLnNldFBvcnQocGFyc2VVSW50MTYocG9ydFN0cmluZykpOworICAgIHJldHVybiBzZXRMb2Nh
dGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBMb2NhdGlvbjo6c2V0UGF0aG5hbWUoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdp
bmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcGF0aG5hbWUpCkBAIC0xODgsNyArMTc2
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRvdyYg
YWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnMKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBV
UkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhu
YW1lKTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywg
dXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJz
dFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJj
aChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3Qg
U3RyaW5nJiBzZWFyY2gpCkBAIC0xOTgsNyArMTg2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9j
YXRpb246OnNldFNlYXJjaChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwotICAgIHJldHVybiBzZXRMb2NhdGlv
bihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9N
V2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBoYXNoKQpAQCAtMjE4LDcgKzIwNiw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZl
V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAgICAgLy8gY2FzZXMgd2hlcmUgZnJhZ21lbnQg
aWRlbnRpZmllcnMgYXJlIGlnbm9yZWQgb3IgaW52YWxpZC4gCiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdOdWxsaXR5KG9sZEZyYWdtZW50SWRlbnRpZmllciwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24o
YWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OmFzc2lnbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYWNlNWI3ZWQ5NzAxZTI0MWU0MGE1N2RlNjQxOGQ5
OGMxMjlkOTM4NS4uMmQ1MTQ2OTliMTE3MWU5Yzc0ODY2MTJhN2IxYTVlNTVhMmJhY2ZkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMTQ3
LDIyICsxNDcsMTkgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0KGNv
bnN0IFVSTCYgdGVzdCkgY29uc3QKICAgICByZXR1cm4gaG9zdFtob3N0Lmxlbmd0aCgpIC0gbV9o
b3N0Lmxlbmd0aCgpIC0gMV0gPT0gJy4nOwogfQogCi1zdHJ1Y3QgTWF0Y2hUZXN0ZXIKLXsKK3N0
cnVjdCBNYXRjaFRlc3RlciB7CiAgICAgU3RyaW5nVmlldyBtX3BhdHRlcm47Ci0gICAgdW5zaWdu
ZWQgbV9wYXR0ZXJuSW5kZXg7Ci0gICAgCisgICAgdW5zaWduZWQgbV9wYXR0ZXJuSW5kZXggeyAw
IH07CisKICAgICBTdHJpbmdWaWV3IG1fdGVzdDsKLSAgICB1bnNpZ25lZCBtX3Rlc3RJbmRleDsK
LSAgICAKKyAgICB1bnNpZ25lZCBtX3Rlc3RJbmRleCB7IDAgfTsKKwogICAgIE1hdGNoVGVzdGVy
KFN0cmluZ1ZpZXcgcGF0dGVybiwgU3RyaW5nVmlldyB0ZXN0KQotICAgIDogbV9wYXR0ZXJuKHBh
dHRlcm4pCi0gICAgLCBtX3BhdHRlcm5JbmRleCgwKQotICAgICwgbV90ZXN0KHRlc3QpCi0gICAg
LCBtX3Rlc3RJbmRleCgwKQorICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQorICAgICAgICAs
IG1fdGVzdCh0ZXN0KQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBib29sIHRlc3RTdHJpbmdG
aW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEluZGV4ID49IG1fdGVzdC5sZW5ndGgoKTsg
fQogICAgIGJvb2wgcGF0dGVyblN0cmluZ0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0
ZXJuSW5kZXggPj0gbV9wYXR0ZXJuLmxlbmd0aCgpOyB9CiAKQEAgLTE3NCw3ICsxNzEsNyBAQCBz
dHJ1Y3QgTWF0Y2hUZXN0ZXIKICAgICAgICAgICAgIG1fcGF0dGVybkluZGV4Kys7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKICAgICB2b2lkIGVhdFNhbWVDaGFycygpCiAgICAgewogICAgICAg
ICB3aGlsZSAoIXBhdHRlcm5TdHJpbmdGaW5pc2hlZCgpICYmICF0ZXN0U3RyaW5nRmluaXNoZWQo
KSkgewpAQCAtMjI2LDggKzIyMyw3IEBAIHN0cnVjdCBNYXRjaFRlc3RlcgogCiBib29sIFVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdGgoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewot
ICAgIE1hdGNoVGVzdGVyIG1hdGNoKFN0cmluZ1ZpZXcobV9wYXRoKSwgdGVzdC5wYXRoKCkpOwot
ICAgIHJldHVybiBtYXRjaC50ZXN0KCk7CisgICAgcmV0dXJuIE1hdGNoVGVzdGVyKG1fcGF0aCwg
dGVzdC5wYXRoKCkpLnRlc3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA0YTBjMzRlY2E3
MjQyYmRhNzI1Mjg0OGIzYThjZTJkMTM1Zjc0MzViLi40NzBmZTU0OTU0ZTFiM2M0N2VlZjA1ZTc4
NTBjYjViYTJjOTk1ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcApAQCAtNzkwLDE2ICs3OTAsMTAgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBTdHJpbmcg
TUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKGZpbGVu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgZGVmYXVsdE1JTUVUeXBlKCkpKQotICAg
ICAgICByZXR1cm4gZmlsZW5hbWU7Ci0KLSAgICBpZiAoZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4n
KSAhPSBub3RGb3VuZCkKKyAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpIHx8IGZpbGVuYW1lLmNv
bnRhaW5zKCcuJykgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgZGVmYXVsdE1J
TUVUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmlsZW5hbWU7CiAKLSAgICBTdHJpbmcgcHJlZmVy
cmVkRXh0ZW5zaW9uID0gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUp
OworICAgIGF1dG8gcHJlZmVycmVkRXh0ZW5zaW9uID0gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9y
TUlNRVR5cGUobWltZVR5cGUpOwogICAgIGlmIChwcmVmZXJyZWRFeHRlbnNpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmlsZW5hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBhYjdlNjA1NDJiMDE4MmNmYWI2YmYy
MjA2ZjQ4Nzg4ZjE4NDFjNjM4Li5jODI4YmJlN2U3NzU1ZWU3MTEyMTcyM2U5ZjE3MDI3ZWQxZmFl
MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCkBAIC00NDEsMTIgKzQ0MSwxMiBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cgogICAg
IEF0b21TdHJpbmcgY29udGFpbmVyVHlwZSA9IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgp
OwogICAgIGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFw
cGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7
CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQotICAgICAgICAgICAgbV9jb250
ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkp
KTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZyb21E
YXRhVVJMKG1fdXJsKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIGxhc3RQ
YXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBhdXRv
IGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgICAg
ICBzaXplX3QgcG9zID0gbGFzdFBhdGhDb21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsKICAgICAg
ICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgZXh0
ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpOworICAgICAgICAg
ICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcocG9z
ICsgMSkudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICBTdHJpbmcgbWVkaWFUeXBlID0gTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwog
ICAgICAgICAgICAgICAgIGlmICghbWVkaWFUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUgeyBXVEZNb3ZlKG1lZGlhVHlwZSkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggNjE2MmFkYWU2YmZmNTE2NzFlM2JlNTMyMjI3ZTdkZTU3OTk5ZmRmMC4uMmVjOTc1Y2IxMDQ1
YWU0Yzg3NDk3Y2Q5YTBhY2UwMmY5MjExZDk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgdm9p
ZCBjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKFVSTCYgdXJsKQogICAgIGlmICh3ZWJraXRHc3RD
aGVja1ZlcnNpb24oMSwgMTIsIDApKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHVybC5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkpCi0gICAgICAgIHVy
bC5zZXRQcm90b2NvbCgid2Via2l0KyIgKyB1cmwucHJvdG9jb2woKSk7CisgICAgICAgIHVybC5z
ZXRQcm90b2NvbChtYWtlU3RyaW5nKCJ3ZWJraXQrIiwgdXJsLnByb3RvY29sKCkpKTsKIH0KIAog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzI4ZmEyZTg3
OWIwZTc2MWE0OTVkYzRhY2EzMDg2NDRiZDY0ZTAwZS4uZDNiMzM4Mjc5MWVmMmMwMjIzYTc2NDMx
NzEzZjE4YjFmMzJlNmE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51cmwo
KTsKICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICAgICAgbV9wYXNzID0gdXJsLnBh
c3MoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICBtX2Zp
cnN0UmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogICAgIH0KICAgICAKQEAgLTk2LDcgKzk2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gU3VnZ2VzdGVkIGNyZWRlbnRpYWxzIGZvciB0aGUgY3Vy
cmVudCByZWRpcmVjdGlvbiBzdGVwLgogICAgIFN0cmluZyBtX3VzZXI7Ci0gICAgU3RyaW5nIG1f
cGFzczsKKyAgICBTdHJpbmcgbV9wYXNzd29yZDsKICAgICAKICAgICBDcmVkZW50aWFsIG1faW5p
dGlhbENyZWRlbnRpYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBhOTM3MzIwMzUzMTJjYzQ3
ZDA5MjIwYWQ4NGYyZmIyZThmNzM0MmRlLi41MzBlY2NmYWU3OTNlMzVkZWU5OWVjMDQwNzcwN2Ez
OGY5YzdjOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTE2NSwxMiArMTY1LDEwIEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6cmVtb3ZlQ3JlZGVudGlhbHMoKQogewogICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOyAKIAotICAgIGlmIChtX3VybC51c2VyKCkuaXNFbXB0eSgpICYmIG1fdXJs
LnBhc3MoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3VybC5oYXNDcmVkZW50aWFscygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3VybC5zZXRVc2VyKFN0cmluZygpKTsKLSAgICBtX3VybC5z
ZXRQYXNzKFN0cmluZygpKTsKLQorICAgIG1fdXJsLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAg
bV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CmluZGV4IDkwMDgxY2JlYzA5ZjEwMDI0YmU4YTAwZDc3YmE5MmFmM2Q3ZTdkYjIuLjNlY2Y3MWU5
MTQ3ZjI0NGNhYTJlNGUyYjZkOTYwMjI3YzIzNzZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApA
QCAtMjQsNyArMjQsNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0Yu
aCIKQEAgLTU5LDcgKzU4LDYgQEAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8cHJvY2Vz
cy5oPgogCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVjbGFyYXRpb24gb25jZSBpdCdzIGluIFdl
YktpdFN1cHBvcnRMaWJyYXJ5LgogZXh0ZXJuICJDIiB7CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Q0ZVUkxDb25uZWN0aW9uUmVmIENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKAog
ICBDRkFsbG9jYXRvclJlZiAgICAgICAgICAgYWxsb2MsCkBAIC0xMzMsMTEgKzEzMSwxMSBAQCBz
dGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIHNzbFByb3BzLAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVS
TENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIFJlZlB0cjxTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4mJiBtZXNzYWdlUXVldWUsIENGRGljdGlvbmFyeVJl
ZiBjbGllbnRQcm9wZXJ0aWVzKQogewotICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwg
IWQtPm1fcGFzcy5pc0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5t
X3Bhc3N3b3JkLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkgewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5
IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
ZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgogICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRp
YWxzKGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNl
dFVzZXIoZC0+bV91c2VyKTsKLSAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+
bV9wYXNzKTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3N3b3JkKGQtPm1fcGFz
c3dvcmQpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxz
KTsKICAgICB9CiAKQEAgLTE0Niw3ICsxNDQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVh
dGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAog
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhl
IHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRo
ZW50aWNhdGlvbiwKICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRp
dmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UgJiYgZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
KSB7Ci0gICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZv
ciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdl
ZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5k
IHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYx
Ny4KICAgICAgICAgICAgIGQtPm1faW5pdGlhbENyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwgZmlyc3RS
ZXF1ZXN0KCkudXJsKCkpOwpAQCAtMTU0LDcgKzE1Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBi
b29sCiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcHJvdGVjdGlvbiBzcGFj
ZSBrbm93biBmb3IgdGhlIFVSTCwgdXBkYXRlIHN0b3JlZCBjcmVkZW50aWFscyBiZWZvcmUgc2Vu
ZGluZyBhIHJlcXVlc3QuCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRv
IGltcGxlbWVudCBsb2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtub3du
IGluY29ycmVjdCBjcmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5CiAgICAg
ICAgICAgICAvLyAoc28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3Ag
dXApLgotICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50
aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bh
c3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7Cisg
ICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkuc2V0KHBhcnRpdGlvbiwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzc3dvcmQs
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgICAgIApAQCAtMjkyLDcgKzI5MCw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlCiB7CiAgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQt
Pm1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICBk
LT5tX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9
IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsK
IApAQCAtMzA2LDcgKzMwNCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gT25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVk
ZW50aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAog
ICAgICAgICAvLyBVUkwgZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KLSAg
ICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAh
cmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1w
dHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051
bGwoKSkgewogICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChwYXJ0aXRpb24sIHJl
cXVlc3QudXJsKCkpOwogICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIGQtPm1faW5pdGlhbENyZWRlbnRpYWwgPSBjcmVkZW50aWFsOwpAQCAt
MzcxLDggKzM2OSw4IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoCiAKICAgICBTdHJpbmcgcGFy
dGl0aW9uID0gZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKTsKIAotICAgIGlmICghZC0+
bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRl
bnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYg
IWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3Vz
ZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzd29yZC5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoY2ZD
cmVkZW50aWFsLmdldCgpKTsKICNlbHNlCkBAIC0zODYsNyArMzg0LDcgQEAgYm9vbCBSZXNvdXJj
ZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2gKICAgICAgICAgCiAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRp
YWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5j
ZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwot
ICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmcoKTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0
cmluZygpOwogICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNl
ciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3Jy
ZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQ
cm94eVNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUHJveHlTZXR0aW5ncy5jcHAKaW5kZXggMGMyZDNmMDQ0MzA2NTFiMzMxOTUyYjZkMDE5ZmU1
NmQxYzZiMDQ1NC4uZjc1MmE2ZWUzNWE3MjBjNmQ3YmQ5YTRlNzU4OTFkZDBhOTRhZThkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFByb3h5U2V0dGluZ3MuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNlbmRpZgogCiAjaW5jbHVk
ZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1i
ZXJzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQxNl90IFNv
Y2tzUHJveHlQb3J0ID0gMTA4MDsKK2NvbnN0ZXhwciB1aW50MTZfdCBTb2Nrc1Byb3h5UG9ydCA9
IDEwODA7CiAKLXN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0IFVS
TCYpOwogc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3QgVVJMJik7
CiAKIEN1cmxQcm94eVNldHRpbmdzOjpDdXJsUHJveHlTZXR0aW5ncyhVUkwmJiBwcm94eVVybCwg
U3RyaW5nJiYgaWdub3JlSG9zdHMpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQ3VybFByb3h5U2V0
dGluZ3M6OnJlYnVpbGRVcmwoKQogdm9pZCBDdXJsUHJveHlTZXR0aW5nczo6c2V0VXNlclBhc3Mo
Y29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQogewogICAgIG1fdXJs
LnNldFVzZXIodXNlcik7Ci0gICAgbV91cmwuc2V0UGFzcyhwYXNzd29yZCk7CisgICAgbV91cmwu
c2V0UGFzc3dvcmQocGFzc3dvcmQpOwogCiAgICAgcmVidWlsZFVybCgpOwogfQpAQCAtMTE4LDgg
KzExOCw4IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVS
TCAmdXJsKQogICAgIGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIGF1dG8gdXNlcnBhc3MgPSAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3Jk
KCkpID8gbWFrZVN0cmluZyh1cmwudXNlcigpLCAiOiIsIHVybC5wYXNzKCksICJAIikgOiBTdHJp
bmcoKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyh1cmwucHJvdG9jb2woKSwgIjovLyIsIHVzZXJw
YXNzLCB1cmwuaG9zdCgpLCAiOiIsIFN0cmluZzo6bnVtYmVyKCpwb3J0KSk7CisgICAgYXV0byB1
c2VycGFzcyA9IHVybC5oYXNDcmVkZW50aWFscygpID8gbWFrZVN0cmluZyh1cmwudXNlcigpLCAi
OiIsIHVybC5wYXNzd29yZCgpLCAiQCIpIDogU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcodXJsLnByb3RvY29sKCksICI6Ly8iLCB1c2VycGFzcywgdXJsLmhvc3QoKSwgIjoiLCAqcG9y
dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUHJveHlTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmgKaW5kZXggYWYzMTM1NDZjNDRhMzI3N2YwNmI0ODU0
ZWYwMzAyN2I4NTgxNDQwMy4uNTgzZTAwYzRlMzE0Njk5ZWExZjU0MmZlMzY5MjRiZWQwZTIxYjM4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQ
cm94eVNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxQcm94eVNldHRpbmdzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyUGFzcyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKICAgICBjb25zdCBTdHJpbmcgdXNlcigpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnVzZXIoKTsg
fQotICAgIGNvbnN0IFN0cmluZyBwYXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnBhc3Mo
KTsgfQorICAgIGNvbnN0IFN0cmluZyBwYXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnBh
c3N3b3JkKCk7IH0KIAogICAgIHZvaWQgc2V0RGVmYXVsdEF1dGhNZXRob2QoKSB7IG1fYXV0aE1l
dGhvZCA9IGtDVVJMQVVUSF9BTlk7IH0KICAgICB2b2lkIHNldEF1dGhNZXRob2QobG9uZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDQ5MTVkOTBkZmFiMmNhNDVmZGZjY2M5MTgyZGZhZmEz
OGZlNjRhYTYuLjQwYzc5OGEzYTU0Y2NlMTJlYjc3MDViNjFhMTEzMzYyZGJmNmEwYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0yMTQsOCArMjE0LDggQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGwKIAogICAgIFN0cmluZyBwYXJ0aXRpb24gPSBmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRp
dGlvbigpOwogCi0gICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051
bGwoKSkgewotICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bh
c3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOworICAgIGlmICghZC0+bV91c2VyLmlzTnVs
bCgpICYmICFkLT5tX3Bhc3N3b3JkLmlzTnVsbCgpKSB7CisgICAgICAgIENyZWRlbnRpYWwgY3Jl
ZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUpOwogCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZh
aWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMjI1LDcgKzIyNSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgICAgIHJlc3RhcnRSZXF1ZXN0V2l0aENy
ZWRlbnRpYWwoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjcmVkZW50aWFsKTsKIAogICAg
ICAgICBkLT5tX3VzZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgZC0+bV9wYXNzID0gU3RyaW5nKCk7
CisgICAgICAgIGQtPm1fcGFzc3dvcmQgPSBTdHJpbmcoKTsKICAgICAgICAgLy8gRklYTUU6IFBl
ciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2VkIGZvciBjcmVk
ZW50aWFscyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4cGxpY2l0bHku
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKQogT3B0aW9uYWw8Q3JlZGVudGlhbD4gUmVzb3VyY2VIYW5kbGU6OmdldENyZWRl
bnRpYWwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHJlZGlyZWN0KQogewog
ICAgIC8vIG1fdXNlci9tX3Bhc3MgYXJlIGNyZWRlbnRpYWxzIGdpdmVuIG1hbnVhbGx5LCBmb3Ig
aW5zdGFuY2UsIGJ5IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIFhNTEh0dHBSZXF1ZXN0Lm9wZW4o
KS4KLSAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgeyBkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSB9OworICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCB7IGQt
Pm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSB9OwogCiAg
ICAgaWYgKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkpIHsKICAgICAgICAgU3RyaW5nIHBh
cnRpdGlvbiA9IHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgICAgICBuZXdSZXF1ZXN0
LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBkLT5tX3VzZXIgPSBuZXdVUkwudXNlcigpOwot
ICAgIGQtPm1fcGFzcyA9IG5ld1VSTC5wYXNzKCk7CisgICAgZC0+bV9wYXNzd29yZCA9IG5ld1VS
TC5wYXNzd29yZCgpOwogICAgIG5ld1JlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAogICAg
IGlmIChjcm9zc09yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCA3NjdjNTc5NDk5OWM5NDYx
MTgwYmNmZWYwYzJhMTkyMmZhMTA3MmQ2Li5lZTYwM2Q3MjJmNDFkMGQ2ZjdjNDZiOTA2ZmI3YTU1
MTA1MjBmMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWwKICNlbmRpZgogewogICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAg
Y2FuIG9ubHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOiBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCi0gICAgaWYg
KCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0
UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgoIWQt
Pm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpKSAmJiAhZmlyc3RS
ZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIFVSTCB1
cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRo
Q3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIpOwotICAgICAgICB1cmxXaXRoQ3JlZGVudGlh
bHMuc2V0UGFzcyhkLT5tX3Bhc3MpOworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFz
c3dvcmQoZC0+bV9wYXNzd29yZCk7CiAgICAgICAgIGZpcnN0UmVxdWVzdCgpLnNldFVSTCh1cmxX
aXRoQ3JlZGVudGlhbHMpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSAmJiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsK
LSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVS
THMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZv
ciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKICAgICAgICAgICAgIC8vIHRyeSBhbmQgcmV1
c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3Lgog
ICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKSkKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbAogICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1l
bnQgbG9nb3V0IGJ5IHNlbmRpbmcgYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJl
Y3QgY3JlZGVudGlhbHMsIGFuZCBhYm9ydGluZyBpdCBpbW1lZGlhdGVseQogICAgICAgICAgICAg
Ly8gKHNvIHRoYXQgYW4gYXV0aGVudGljYXRpb24gZGlhbG9nIGRvZXNuJ3QgcG9wIHVwKS4KICAg
ICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigp
LCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQ
YXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzc3dvcmQsIENyZWRlbnRp
YWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgICAgIApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
CiAKICAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgZC0+bV91c2VyID0g
dXJsLnVzZXIoKTsKLSAgICBkLT5tX3Bhc3MgPSB1cmwucGFzcygpOworICAgIGQtPm1fcGFzc3dv
cmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5o
dHRwTWV0aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCkBAIC00NDcs
NyArNDQ3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBPbmx5IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlm
IHRoaXMgaXMgYWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8v
IFVSTCBkaWRuJ3QgaW5jbHVkZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgotICAgICAgICBpZiAo
ZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQt
Pm1fcGFzc3dvcmQuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7CiAgICAgICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQog
ICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRl
bnRpYWxTdG9yYWdlKCkuZ2V0KHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSwgcmVxdWVzdC51cmwo
KSk7CkBAIC01MjEsMTcgKzUyMSwxNSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQ
YXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogICAgIGlm
ICghY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9w
YXNzLmlzTnVsbCgpKSB7Ci0gICAgICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtb
TlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6ZC0+bV91c2VyCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzc3dvcmQ6ZC0+bV9wYXNzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uXTsKKyAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+
bV9wYXNzd29yZC5pc051bGwoKSkgeworICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBhZG9wdE5T
KFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6ZC0+bV91c2VyCisgICAgICAg
ICAgICBwYXNzd29yZDpkLT5tX3Bhc3N3b3JkIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBl
cnNpc3RlbmNlRm9yU2Vzc2lvbl0pOwogICAgICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgICAgICBkLT5t
X2N1cnJlbnRXZWJDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci0gICAgICAgIHJlY2VpdmVkQ3JlZGVu
dGlhbChjaGFsbGVuZ2UsIENyZWRlbnRpYWwoY3JlZGVudGlhbCkpOwotICAgICAgICBbY3JlZGVu
dGlhbCByZWxlYXNlXTsKKyAgICAgICAgcmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgQ3Jl
ZGVudGlhbChjcmVkZW50aWFsLmdldCgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNw
ZWNpZmljYXRpb24sIHRoZSB1c2VyIHNob3VsZG4ndCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMg
aWYgdGhlcmUgd2VyZSBpbmNvcnJlY3Qgb25lcyBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgICAg
ICBkLT5tX3VzZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgZC0+bV9wYXNzID0gU3RyaW5nKCk7Cisg
ICAgICAgIGQtPm1fcGFzc3dvcmQgPSBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggZDgyOGRiNzY2ODQwNDkyN2U1NzZj
NmIzMDhlNmY5ZTdlNzVmZWEyYS4uM2YyZDM2Y2Y1NzU1MDY1NWYzOWZkNDExMjRjOWQ2ZjFhMjJj
MmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIEdVbmlx
dWVQdHI8U291cFVSST4gUmVzb3VyY2VSZXF1ZXN0OjpjcmVhdGVTb3VwVVJJKCkgY29uc3QKICAg
ICAvLyB3aGVuIGJvdGggdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhcmUgbm9uLW51bGwuIFdo
ZW4gd2UgaGF2ZSBjcmVkZW50aWFscywgZW1wdHkgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMKICAg
ICAvLyBzaG91bGQgYmUgZW1wdHkgc3RyaW5ncyBpbnN0ZWFkIG9mIG51bGwuCiAgICAgU3RyaW5n
IHVybFVzZXIgPSBtX3VybC51c2VyKCk7Ci0gICAgU3RyaW5nIHVybFBhc3MgPSBtX3VybC5wYXNz
KCk7CisgICAgU3RyaW5nIHVybFBhc3MgPSBtX3VybC5wYXNzd29yZCgpOwogICAgIGlmICghdXJs
VXNlci5pc0VtcHR5KCkgfHwgIXVybFBhc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNvdXBfdXJp
X3NldF91c2VyKHNvdXBVUkkuZ2V0KCksIHVybFVzZXIudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IHNvdXBfdXJpX3NldF9wYXNzd29yZChzb3VwVVJJLmdldCgpLCB1cmxQYXNzLnV0ZjgoKS5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VS
TFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAu
Y3BwCmluZGV4IGY1MWM0ZmQ1N2Y4ZTE0Yjk2NGFiNTk2Y2E5Y2QzY2FmZTgxMTg2ZGEuLmU4NWJm
NDAxZjMwMTMwMjNlMDhlOWFmZjJjYWY4NzBkMzFjODY4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
VVJMIHNvdXBVUklUb1VSTChTb3VwVVJJKiBzb3VwVVJJKQogICAgICAgICAvLyBidWlsdC4gRml4
aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMK
ICAgICAgICAgLy8gbm90IHdhbnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3Vz
IGltcGxlbWVudGF0aW9ucwogICAgICAgICBpZiAoc291cFVSSS0+cGFzc3dvcmQpCi0gICAgICAg
ICAgICB1cmwuc2V0UGFzcyhTdHJpbmc6OmZyb21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7Cisg
ICAgICAgICAgICB1cmwuc2V0UGFzc3dvcmQoU3RyaW5nOjpmcm9tVVRGOChzb3VwVVJJLT5wYXNz
d29yZCkpOwogICAgIH0KIAogICAgIHJldHVybiB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMjhkODczYzQ2MTJkYmRjZTQxNzljM2Ez
OGVkMGRjMGE1MGI4ODc4YS4uNzE4M2Y5MDU2YTgwZDBlMzZmZmRhNzBmZDIxYjRkZjdmYTcwZDVk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApA
QCAtMzcwLDcgKzM3MCw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0
YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSB1
cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21w
b25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgdGl0bGUgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgfQpAQCAtNTc5LDEwICs1
NzksMTAgQEAgc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICAgICAgLy8gdGhlIHBhdGguIElm
IHdlIGNhbid0IGZpbmQgaXQsIG9yIHdlJ3JlIGNvbWluZyB1cCB3aXRoIHRoZSBuYW1lIGZvciBh
IGxpbmsKICAgICAgICAgLy8gd2UganVzdCB1c2UgdGhlIGVudGlyZSB1cmwuCiAgICAgICAgIERX
T1JEIGxlbiA9IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbjsKLSAgICAgICAgU3Ry
aW5nIGxhc3RDb21wb25lbnQgPSBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1
dG8gbGFzdENvbXBvbmVudCA9IGt1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KGt1cmwuaXNMb2NhbEZpbGUoKSB8fCAoIWlzTGluayAmJiAhbGFzdENvbXBvbmVudC5pc0VtcHR5
KCkpKSB7CiAgICAgICAgICAgICBsZW4gPSBzdGQ6Om1pbjxEV09SRD4oZnNQYXRoTWF4TGVuZ3Ro
RXhjbHVkaW5nRXh0ZW5zaW9uLCBsYXN0Q29tcG9uZW50Lmxlbmd0aCgpKTsKLSAgICAgICAgICAg
IFN0cmluZ1ZpZXcobGFzdENvbXBvbmVudCkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgICAgIGxhc3RDb21wb25lbnQu
c3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVy
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihm
c1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIHVybC5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICBTdHJpbmdWaWV3KHVybCkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAKICAgICBTdHJp
bmcgdGl0bGUocGFzdGVib2FyZFVSTC50aXRsZSk7CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkg
ewotICAgICAgICB0aXRsZSA9IHBhc3RlYm9hcmRVUkwudXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7
CisgICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVSTC51cmwubGFzdFBhdGhDb21wb25lbnQoKS50
b1N0cmluZygpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGl0
bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5ob3N0KCkudG9TdHJpbmcoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKaW5kZXggMmM2YzcwZTg0OTk1YzI5
YWMxOGZmM2M5NTQ5Yzc4OTk2OGNhMDFjYS4uZGNiNDMwYjIyZjc1NDZiYWQzOTcwNTgzOTNkODQy
YWI0ZTA2ZWFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNw
cApAQCAtMTY1LDE3ICsxNjUsMTQgQEAgYm9vbCBCdWlsZGVyU3RhdGU6OmNyZWF0ZUZpbHRlck9w
ZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdGkKIAogICAgIEZp
bHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6
IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oaW5WYWx1ZSkpIHsKLQogICAgICAgICBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLmlzVVJJKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVW
YWx1ZS5zdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29t
cGxldGVVUkwoY3NzVXJsKTsKLQotICAgICAgICAgICAgYXV0byBvcGVyYXRpb24gPSBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShjc3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoV1RGTW92ZShv
cGVyYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZmlsdGVyVVJMID0gcHJpbWl0aXZlVmFsdWUu
c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGZpbHRlclVSTCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBv
cGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUoZmlsdGVyVVJMLCBmcmFnbWVudC50b1N0cmluZygpKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24u
Y3BwCmluZGV4IGQ3OWU4MDA4ODA4NTAwNWYxZTIzODVhMDgxYmExNjBhZmFiZjIyMzkuLjgzNDc2
ZmU3NjlkNmRiZTA5Y2Y1NDc5MDE1NmRhNjU4OGMyZGU3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTG9jYXRpb24uY3BwCkBAIC01MywyMyArNTMsMjQgQEAgU3RyaW5nIFdvcmtl
ckxvY2F0aW9uOjpob3N0bmFtZSgpIGNvbnN0CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cG9y
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLnBvcnQoKSA/IFN0cmluZzo6bnVtYmVyKG1f
dXJsLnBvcnQoKS52YWx1ZSgpKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byBwb3J0ID0gbV91
cmwucG9ydCgpOworICAgIHJldHVybiBwb3J0ID8gU3RyaW5nOjpudW1iZXIoKnBvcnQpIDogZW1w
dHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0
CiB7CiAgICAgYXV0byBwYXRoID0gbV91cmwucGF0aCgpOwotICAgIHJldHVybiBwYXRoLmlzRW1w
dHkoKSA/ICIvIiA6IHBhdGgudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkg
PyAiLyJfcyA6IHBhdGgudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpz
ZWFyY2goKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5xdWVyeSgpLmlzRW1wdHkoKSA/IGVt
cHR5U3RyaW5nKCkgOiAiPyIgKyBtX3VybC5xdWVyeSgpOworICAgIHJldHVybiBtX3VybC5xdWVy
eSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBtX3VybC5xdWVyeVdpdGhMZWFkaW5nUXVl
c3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpoYXNo
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0
eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgIHJldHVybiBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0eVN0
cmluZygpIDogbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCku
dG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpvcmlnaW4oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDBkNTNiY2Y5MjNlZDYxMjY1MzlmMzVk
ZDJiOTQ5Y2ExNGI3YjU2N2MuLjE4OTZjMjQxMWI1ZGMwYmY2ODJmNDI1MDg4ZTNlNjg5NjBkMmNh
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleShT
ZWN1cml0eU9yaWdpbkRhdGEmJgogICAgIDogbV90b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4p
KQogICAgICwgbV9zY29wZShXVEZNb3ZlKHNjb3BlKSkKIHsKLSAgICBBU1NFUlQoIW1fc2NvcGUu
aGFzRnJhZ21lbnQoKSk7CisgICAgQVNTRVJUKCFtX3Njb3BlLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKTsKIH0KIAogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5OjplbXB0eUtleSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcAppbmRleCA3Mzg2MjU0ZWRhOTJlOTg3ZDI2OTI0ZDg1NmZjM2VkNjRhMzAzZmVmLi5iYTc0
ZjZkMTAzNDExOGVmNTFjOWNkYWVjN2JlZGU5N2MwYzViMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTQ2LDEzICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVVSTCBzdGF0aWMgaW5saW5lIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQorc3RhdGljIFVSTCB0b3BPcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKIHsKICAgICBVUkwgdXJsOwogICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4u
cHJvdG9jb2woKSk7CiAgICAgdXJsLnNldEhvc3Qob3JpZ2luLmhvc3QoKSk7Ci0gICAgaWYgKG9y
aWdpbi5wb3J0KCkpCi0gICAgICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICB1
cmwuc2V0UG9ydChvcmlnaW4ucG9ydCgpKTsKICAgICByZXR1cm4gdXJsOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4
IDllMzUyZmY5ZDNkMmFhMjE4ZTlkNjI2ZTdlZjU5MTJhNDg4Mjk4OWEuLjYzMmFmZDU0ZmMyZjlm
NmFjODIzMTc4ZTE5ZDM0ZTc2N2RkNDg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00MjcsOCArNDI3LDcgQEAgVVJM
IHN0YXRpYyBpbmxpbmUgb3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAg
ICAgVVJMIHVybDsKICAgICB1cmwuc2V0UHJvdG9jb2wob3JpZ2luLnByb3RvY29sKCkpOwogICAg
IHVybC5zZXRIb3N0KG9yaWdpbi5ob3N0KCkpOwotICAgIGlmIChvcmlnaW4ucG9ydCgpKQotICAg
ICAgICB1cmwuc2V0UG9ydCgqb3JpZ2luLnBvcnQoKSk7CisgICAgdXJsLnNldFBvcnQoKm9yaWdp
bi5wb3J0KCkpOwogICAgIHJldHVybiB1cmw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IDE1MjgxNTU4MjU2OTgxYTQ4MzhjZDYzNzNiMzY3MWE1ZWQwNDBhZjku
LmEwZGU0OWYwODg0NGE4NmM2ZTMyOTc1Y2M0YmQ3MDQ2NzViMmFmYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJp
bmcmIHVybCwKICAgICBpZiAoIXVzZXIuaXNOdWxsKCkpCiAgICAgICAgIHVybFdpdGhDcmVkZW50
aWFscy5zZXRVc2VyKHVzZXIpOwogICAgIGlmICghcGFzc3dvcmQuaXNOdWxsKCkpCi0gICAgICAg
IHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKHBhc3N3b3JkKTsKKyAgICAgICAgdXJsV2l0aENy
ZWRlbnRpYWxzLnNldFBhc3N3b3JkKHBhc3N3b3JkKTsKIAogICAgIHJldHVybiBvcGVuKG1ldGhv
ZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBhc3luYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggOWUwYjY4MmNkZWQy
YWZiYmY1N2EwMjg0OWRjM2I3OWQ3OWE3NjcyMS4uOTU1ZDM4OGU1ZTk2ZTM1MTk5MzY3NGZiOTQ5
ZWE4N2FmM2ZkMzFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29ya0xv
YWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW9uKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJl
c291cmNlUmVxCiAgICAgICAgICAgICBoYW5kbGVyKHJlZGlyZWN0aW9uRXJyb3IocmVkaXJlY3RS
ZXNwb25zZSwgbWFrZVN0cmluZygiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIHJlZGly
ZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291
cmNlIFNoYXJpbmcgcG9saWN5OiBub3QgYWxsb3dlZCB0byBmb2xsb3cgYSBjcm9zcy1vcmlnaW4g
Q09SUyByZWRpcmVjdGlvbiB3aXRoIG5vbiBDT1JTIHNjaGVtZSIpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxvY2F0aW9uLmhhc1VzZXJuYW1lKCkgfHwg
bG9jYXRpb24uaGFzUGFzc3dvcmQoKSkgeworICAgICAgICBpZiAobG9jYXRpb24uaGFzQ3JlZGVu
dGlhbHMoKSkgewogICAgICAgICAgICAgaGFuZGxlcihyZWRpcmVjdGlvbkVycm9yKHJlZGlyZWN0
UmVzcG9uc2UsIG1ha2VTdHJpbmcoIkNyb3NzLW9yaWdpbiByZWRpcmVjdGlvbiB0byAiLCByZWRp
cmVjdFJlcXVlc3QudXJsKCkuc3RyaW5nKCksICIgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNv
dXJjZSBTaGFyaW5nIHBvbGljeTogcmVkaXJlY3Rpb24gVVJMICIsIGxvY2F0aW9uLnN0cmluZygp
LCAiIGhhcyBjcmVkZW50aWFscyIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQU1Vw
Z3JhZGVJZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDbwogICAgIGh0dHBzVXBn
cmFkZUNoZWNrZXIucXVlcnkodXJsLmhvc3QoKS50b1N0cmluZygpLCBtX3Nlc3Npb25JRCwgW3Jl
cXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGJv
b2wgZm91bmRIb3N0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGZvdW5kSG9zdCkgewogICAgICAg
ICAgICAgYXV0byBuZXdVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgICAgICAgICAgbmV3VVJMLnNl
dFByb3RvY29sKCJodHRwcyJfcyk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0
dHBzIik7CiAgICAgICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDRhZjlkYjI1YjYxOWQ0ZTEzNmRhZmY5NWExMDRlMDUz
ZmY3OWVhMDguLjdlYTM4N2RjOWE3ZGQyNGRhODJkMzc1Y2UxODRhZmIxZmYwY2E3MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUCiAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGlmIChzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlICYmIHVy
bC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIo
KTsKLSAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgICAgIG1fcGFzc3dvcmQg
PSB1cmwucGFzc3dvcmQoKTsKICAgICAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwog
ICAgICAgICB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIApAQCAtMzcxLDcgKzM3MSw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgCiAgICAgY29uc3QgYXV0byYgdXJsID0gcmVxdWVz
dC51cmwoKTsKICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgIG1fcGFzc3dvcmQgPSB1cmwu
cGFzcygpOworICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICBtX2xhc3RIVFRQ
TWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50
aWFscygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGZlMWI2M2U3OGY2ODA0MjhjZmZl
NzBhZDhmNjg1M2E4MWUyZGM3MzcuLjljMDQ2NTA1ODkzOWNmNjVmYzEwZjQ3NzFlZDIxNjY2MmI2
YjlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgTmV0d29ya0RhdGFU
YXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0
d29ya0RhdGFUYXMKICAgICAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICBp
ZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlKSB7CiAgICAgICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICAgICAgbV9w
YXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3
b3JkKCk7CiAgICAgICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKICAgICAg
ICAgICAgIGlmIChtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpKQpAQCAt
NDY3LDcgKzQ2Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6YXBwbHlBdXRoZW50aWNh
dGlvblRvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBhdXRvIHVybCA9
IHJlcXVlc3QudXJsKCk7CiAgICAgdXJsLnNldFVzZXIobV91c2VyKTsKLSAgICB1cmwuc2V0UGFz
cyhtX3Bhc3N3b3JkKTsKKyAgICB1cmwuc2V0UGFzc3dvcmQobV9wYXNzd29yZCk7CiAgICAgcmVx
dWVzdC5zZXRVUkwodXJsKTsKIAogICAgIG1fdXNlciA9IFN0cmluZygpOwpAQCAtNjg4LDcgKzY4
OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24o
KQogCiAgICAgY29uc3QgYXV0byYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBtX3VzZXIgPSB1
cmwudXNlcigpOwotICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOworICAgIG1fcGFzc3dvcmQg
PSB1cmwucGFzc3dvcmQoKTsKICAgICBtX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0
aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCkBAIC0xMTE3LDI0ICsx
MTE3LDIyIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c3RhcnRpbmdDYWxsYmFjayhTb3Vw
TWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhCiB9CiAKICNpZiBTT1VQX0NIRUNLX1ZF
UlNJT04oMiwgNjcsIDEpCisKIGJvb2wgTmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dI
U1RTUG9saWN5U2V0dGluZygpIGNvbnN0CiB7CiAgICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBh
YnVzZSBtaXRpZ2F0aW9uIDE6CiAgICAgLy8gICJMaW1pdCBIU1RTIFN0YXRlIHRvIHRoZSBIb3N0
bmFtZSwgb3IgdGhlIFRvcCBMZXZlbCBEb21haW4gKyAxIgotICAgIGlmIChpc1RvcExldmVsTmF2
aWdhdGlvbigpIHx8IGhvc3RzQXJlRXF1YWwobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgbV9jdXJy
ZW50UmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSB8fCBpc1B1YmxpY1N1ZmZpeChtX2N1
cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3QoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNUb3BM
ZXZlbE5hdmlnYXRpb24oKQorICAgICAgICB8fCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3Qo
KSA9PSBtX2N1cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkuaG9zdCgpCisgICAg
ICAgIHx8IGlzUHVibGljU3VmZml4KG1fY3VycmVudFJlcXVlc3QudXJsKCkuaG9zdCgpLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7CiB9CiAKIGJvb2wgTmV0d29ya0RhdGFUYXNrU291cDo6c2hv
dWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlKCkgY29uc3QKIHsKLSAgICAvLyBGb2xsb3cgQXBw
bGUncyBIU1RTIGFidXNlIG1pdGdhdGlvbiAyOgorICAgIC8vIEZvbGxvdyBBcHBsZSdzIEhTVFMg
YWJ1c2UgbWl0aWdhdGlvbiAyOgogICAgIC8vICJJZ25vcmUgSFNUUyBTdGF0ZSBmb3IgU3VicmVz
b3VyY2UgUmVxdWVzdHMgdG8gQmxvY2tlZCBEb21haW5zIgotICAgIGlmICghaXNUb3BMZXZlbE5h
dmlnYXRpb24oKSAmJiAhbV9jdXJyZW50UmVxdWVzdC5hbGxvd0Nvb2tpZXMoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzVG9wTGV2ZWxO
YXZpZ2F0aW9uKCkKKyAgICAgICAgfHwgbV9jdXJyZW50UmVxdWVzdC5hbGxvd0Nvb2tpZXMoKTsK
IH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpwcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhT
b3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCkBAIC0xMTUzLDYgKzExNTEsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OmhzdHNFbmZvcmNlZChTb3VwSFNUU0VuZm9yY2VyKiwgU291cE1lc3Nh
Z2UqIHNvdXBNZXNzYQogICAgIGlmIChzb3VwTWVzc2FnZSA9PSB0YXNrLT5tX3NvdXBNZXNzYWdl
LmdldCgpKQogICAgICAgICB0YXNrLT5wcm90b2NvbFVwZ3JhZGVkVmlhSFNUUyhzb3VwTWVzc2Fn
ZSk7CiB9CisKICNlbmRpZgogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFN0YXJ0UmVx
dWVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggMmQ3NzYzNDVlMjI0OTZjYjg3
NTBjMmU2MTQ5Y2QwNjZhYzBjNzgwMy4uNGM4MzhhZmI3MzA1OTYzNTg5MzlhZmI1YmI0NTY0ZDAw
YThhNjIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaApAQCAtNjMsMjUgKzYzLDI1IEBA
IHB1YmxpYzoKICAgICBXVEY6OlN0cmluZyBob3N0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBh
cnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlk
KCkgPyBtX3BhcnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygpOworICAg
ICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KIAogICAg
IFdURjo6U3RyaW5nIHByb3RvY29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3Bh
cnNlZFVSTC0+cHJvdG9jb2woKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAg
cmV0dXJuIG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAg
V1RGOjpTdHJpbmcgcGF0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNz
YXJ5KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRV
UkwtPnBhdGgoKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1f
cGFyc2VkVVJMLT5wYXRoKCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBs
YXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNz
YXJ5KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRV
UkwtPmxhc3RQYXRoQ29tcG9uZW50KCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1cm4g
bV9wYXJzZWRVUkwtPmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IGIxYzM2ZGIyYzA0
NjhhNjUxZDY0NzZhMmY5ZGVjZGIzMjk2NWJkZGQuLjA3Y2QxMGYyYTNkZjk5MGM4NjZlMGVlODlj
OTlhMDYzNTBmYmY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rv
d25sb2FkQ2xpZW50Lm1tCkBAIC0yMjAsOCArMjIwLDggQEAgdm9pZCBEb3dubG9hZENsaWVudDo6
ZGlkRmluaXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cihkb3dubG9hZFByb3h5KSkgewotICAgICAgICAgICAgV1RGOjpVUkwgZGVzdGluYXRpb25VUkwg
PSBXVEY6OlVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRlc3Rp
bmF0aW9uRmlsZW5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmZyYWdt
ZW50SWRlbnRpZmllcigpLmxlbmd0aCgpKQorICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvblVS
TCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVz
dGluYXRpb25GaWxlbmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25VUkwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VUkwuc2V0
RnJhZ21lbnRJZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLnVybCgpLmZyYWdtZW50
SWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXItPmZpbmlzaChkZXN0aW5hdGlv
blVSTCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCA0N2I1NGNhZDg0MDExNTg2ZWZiODA5OWJhMWE4
OTM1YjcxMjRiNWQxLi4zOTM2ZWI3YjkyZjBjMzllMjE3YTM1MTk4YTY0YTc0MGNkZDJkNDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UuY3BwCkBAIC0xMTQsMTUgKzExNCw5IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6
OmxvYWRTdG9yYWdlRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoTWFwCiAKICAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fZGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2VEaXJlY3RvcnkpOwogCi0gICAgICAgIGF1dG8gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIik7
Ci0KICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2FsdEZvck9y
aWdpbj4+IGRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5zOwotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICAgICAgVVJMIHVybDsKLSAg
ICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAgICAgICAgICB1cmwuc2V0
UGF0aChvcmlnaW5QYXRoKTsKLQotICAgICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRo
IDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGly
ZWN0b3J5LCAiKiIpKSB7CisgICAgICAgICAgICBhdXRvIGRldmljZUlkSGFzaFNhbHQgPSBVUkw6
OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0aCkubGFzdFBhdGhDb21wb25lbnQo
KS50b1N0cmluZygpOwogCiAgICAgICAgICAgICBpZiAoaGFzaFNhbHRTaXplICE9IGRldmljZUlk
SGFzaFNhbHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihE
aXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIGxlbmd0aCBvZiB0
aGUgaGFzaCBzYWx0ICglZCkgaXMgZGlmZmVyZW50IHRvIHRoZSBsZW5ndGggb2YgdGhlIGhhc2gg
c2FsdHMgZGVmaW5lZCBpbiBXZWJLaXQgKCVkKSIsIGRldmljZUlkSGFzaFNhbHQubGVuZ3RoKCks
IGhhc2hTYWx0U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggZDMwNTU1MzA4MDQ2MjM4MTMxZjBiZmVkNDJkNWYz
MDExZjJiMWUyNS4uYjdhZjVjZGFlYjVkMDNiMzA5YmFkYmQ5NjM1M2E1NmJmYmQyZjdhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmNwcApAQCAtMTQ1LDE2ICsxNDUsMTUgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3Rv
cmU6OmZpbmRQbHVnaW5Gb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24KICAgICBy
ZXR1cm4gUGx1Z2luTW9kdWxlSW5mbygpOwogfQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBwYXRo
RXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNv
bnN0IFVSTCYgdXJsKQogewotICAgIFN0cmluZyBleHRlbnNpb247Ci0gICAgU3RyaW5nIGZpbGVu
YW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0
aCgnLycpKSB7Ci0gICAgICAgIHNpemVfdCBleHRlbnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNl
RmluZCgnLicpOwotICAgICAgICBpZiAoZXh0ZW5zaW9uUG9zICE9IG5vdEZvdW5kKQotICAgICAg
ICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGV4dGVuc2lvblBvcyArIDEpOwot
ICAgIH0KLSAgICByZXR1cm4gZXh0ZW5zaW9uLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cisg
ICAgYXV0byBmaWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGlmIChmaWxl
bmFtZS5lbmRzV2l0aCgnLycpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHNpemVfdCBsYXN0
RG90UG9zaXRpb24gPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIGlmIChsYXN0RG90
UG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGZp
bGVuYW1lLnN1YnN0cmluZyhsYXN0RG90UG9zaXRpb24gKyAxKS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2JkMzdlZDVkMDkzZWYxYmJhM2U0MjlmYWUwYjIyZDQ3
MGY3ZTNhNy4uZTVjZTU2NmRkNzE5M2JmYTRlZDViZmUxMjgxZDYyMmUzZDg2ODI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjU2LDcgKzEyNTYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZShXZWJQcm9jZXNzUHJveHkmIHByb2NlcwogI2VuZGlmCiAKICAgICAvLyBXZSBmYWlsZWQgdG8g
aXNzdWUgYW4gdW5pdmVyc2FsIGZpbGUgcmVhZCBhY2Nlc3Mgc2FuZGJveCwgZmFsbCBiYWNrIHRv
IGlzc3Vpbmcgb25lIGZvciB0aGUgYmFzZSBVUkwgaW5zdGVhZC4KLSAgICBhdXRvIGJhc2VVUkwg
PSBVUkwoVVJMKCksIHVybC5iYXNlQXNTdHJpbmcoKSk7CisgICAgYXV0byBiYXNlVVJMID0gdXJs
LnRydW5jYXRlZEZvclVzZUFzQmFzZSgpOwogICAgIGF1dG8gYmFzZVBhdGggPSBiYXNlVVJMLmZp
bGVTeXN0ZW1QYXRoKCk7CiAgICAgaWYgKGJhc2VQYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CkBAIC01MjQ3LDcgKzUyNDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAg
ICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0lu
TmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgogICAgICAgICAgICAgJiYgZGVzdGluYXRpb25G
cmFtZUluZm8tPmlzTWFpbkZyYW1lKCkKLSAgICAgICAgICAgICYmIChtX21haW5GcmFtZSA/ICFo
b3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZSkK
KyAgICAgICAgICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgp
ICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpKQogICAgICAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3
YXJkOwogCiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFj
dGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUlu
Zm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFdURk1v
dmUocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBX
VEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwpAQCAt
NTM3Myw3ICs1MzczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNv
dXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8p
LCB0aGlzKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vz
cy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJl
VG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21h
aW5GcmFtZSA/ICFob3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51cmwo
KSkgOiBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwog
ICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNy
ZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgp
LCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9w
ZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMs
IG5hdmlnYXRpb25BY3Rpb24uZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKQEAgLTU1
NzEsNyArNTU3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5m
b0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAKICAgICAgICAgcmVwbHko
bmV3UGFnZS0+d2ViUGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycyhtX3Byb2Nl
c3MsICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CiAKLSAgICAgICAgbmV3UGFnZS0+bV9zaG91
bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNB
cmVFcXVhbChVUkwoeyB9LCBtYWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKKyAgICAgICAg
bmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uID0gVVJMKHsgfSwgbWFpbkZyYW1lVVJMKS5ob3N0KCkgPT0gcmVxdWVzdC51cmwoKS5o
b3N0KCk7CiAKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3Vw
cHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSB0cnVl
OwpAQCAtNTU3OSw3ICs1NTc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Uo
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW8KICAgICB9Owog
CiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0
ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmll
cik7Ci0gICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChvcmlnaW5h
dGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKTsKKyAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJs
KCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgIGF1dG8gbmF2aWdhdGlvbkFj
dGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3Zl
KHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbiksICp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2luZG93RmVhdHVyZXMgPSBX
VEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKV0gKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2
aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjMjU4OGE4YTA5MWQ0YjA4NzUyOGNjMzI1
ODhkNzBlM2I0NTMxYmVmLi5lNGE4NmZhYWYzMTgzOGM4Y2ZhM2VkNzllODliODk0ZGM1YzIwMjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU2
NywxMSArNTY3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nCiAKICAgICAvLyBUaGVyZSdz
IGEgY2hhbmNlIHRoYXQgdXJsU3RyaW5nIGRvZXMgbm90IHBvaW50IHRvIGEgZGlyZWN0b3J5Lgog
ICAgIC8vIEdldCB1cmwncyBiYXNlIFVSTCB0byBhZGQgdG8gbV9sb2NhbFBhdGhzV2l0aEFzc3Vt
ZWRSZWFkQWNjZXNzLgotICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkp
OwotICAgIFN0cmluZyBwYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0aCgpOworICAgIGF1dG8g
cGF0aCA9IHVybC50cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKS5maWxlU3lzdGVtUGF0aCgpOwogICAg
IGlmIChwYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDbGll
bnQgbG9hZHMgYW4gYWx0ZXJuYXRlIHN0cmluZy4gVGhpcyBkb2Vzbid0IGdyYW50IHVuaXZlcnNh
bCBmaWxlIHJlYWQsIGJ1dCB0aGUgd2ViIHByb2Nlc3MgaXMgYXNzdW1lZAogICAgIC8vIHRvIGhh
dmUgcmVhZCBhY2Nlc3MgdG8gdGhpcyBkaXJlY3RvcnkgYWxyZWFkeS4KICAgICBtX2xvY2FsUGF0
aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuYWRkKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCmluZGV4IDMxNWNmM2ZmMTM0MTRiZTE4MDMxZjcwMTZhZDcyNjY1MTRjNDQ5
NWMuLmYzNDIzYTkyYWJhZDliZmFhMGY4ZWVkOTIxMmJlMGEyYTdjNWQ0MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0
aW9uIGZvcmNlUmVpbgogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZG9tYWluIGluIGRvbWFp
bnMuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBVUkwgdXJsIHsgVVJMKCksIGRvbWFpbiB9Owog
ICAgICAgICAgICAgICAgIGlmICh1cmwucHJvdG9jb2woKS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAgICAgICAgICAgICAgICAg
ICB1cmwuc2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBhcHBCb3VuZERvbWFpbiB7IHVybCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA5MDM5OTBiZjk0ZTgzODVmZGU5ZjE1NGMz
ZDM1ZGFlNTMzZDAwMDNiLi40ODc1MWFiZjQ4MzI0NTg5NjFiZTczYWE1YTU5NWIwNWRlY2VhZjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjAsMTkgKzYwLDEwIEBA
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6Omdl
dE1lZGlhS2V5T3JpZ2lucygpCiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBv
cmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnksICIqIik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2lu
UGF0aHMpIHsKLSAgICAgICAgVVJMIHVybDsKLSAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxl
Il9zKTsKLSAgICAgICAgdXJsLnNldFBhdGgob3JpZ2luUGF0aCk7Ci0KLSAgICAgICAgU3RyaW5n
IG1lZGlhS2V5SWRlbnRpZmllciA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotCi0gICAgICAg
IGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdp
bikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKCpzZWN1
cml0eU9yaWdpbik7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBh
dXRvIGlkZW50aWZpZXIgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0
aCkubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOworICAgICAgICBpZiAoYXV0byBzZWN1
cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihp
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7
CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZWQzMDFhNTRkZDk5YmViNjhm
YjE0MzhkMmQxYzI1NGQwMzAxNmU0Li5lNGVmYTQ4MDlmMGEzZmY1MGE2MTZmZTExYTc1MDU4OWE0
NzhlYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KQEAgLTE1NjIsMTAgKzE1NjIsOCBAQCB2b2lkIFBERlBsdWdpbjo6aW5zdGFs
bFBERkRvY3VtZW50KCkKICAgICBpZiAoW21fcGRmRG9jdW1lbnQgaXNMb2NrZWRdKQogICAgICAg
ICBjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpOwogCi0gICAgaWYgKFttX3BkZkxheWVyQ29udHJv
bGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50OildKSB7Ci0g
ICAgICAgIFN0cmluZyBwZGZVUkxGcmFnbWVudCA9IG1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVu
dGlmaWVyKCk7Ci0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRVUkxGcmFnbWVudDpw
ZGZVUkxGcmFnbWVudF07Ci0gICAgfQorICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDopXSkKKyAgICAgICAgW21f
cGRmTGF5ZXJDb250cm9sbGVyIHNldFVSTEZyYWdtZW50Om1fZnJhbWUudXJsKCkuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9CiAKIHZvaWQgUERGUGx1Z2lu
OjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggNzY4YmEyZDdjNDY4NmMwNmVlOTc0
YWJiZDY1MjU0MTFmM2JiY2M5My4uNDFkM2VkODVlMzM3YzUxNmNiNWNkZTBkOTdjZTIxOGNhMjE1
MTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yNCwxNyArMjQsMTMg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVD
bGllbnQuaCIKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCi0jaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCIKLQogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51LmgiCi0jaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CkBAIC00Miw3ICszOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlc3Ryb3ll
ZCgpCiB7CkBAIC01NiwxOSArNTEsMjEgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93
bmxvYWRVUkwoY29uc3QgVVJMJikKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQor
Cit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2Uo
KTsKLSAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2Vh
cmNoU3RyaW5nKTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1
dG8gcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiAr
IGVuY29kZWQgKyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0cmluZyA9
IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcuc3RyaXBX
aGl0ZVNwYWNlKCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhzZWFyY2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3MsICIr
Il9zKTsKKyAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3Lmdvb2ds
ZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgiIH07
CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAg
IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVSTCB7IH0s
IHVybCB9LCB7IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlz
dDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2VyR2VzdHVy
ZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsK
KyAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFyY2hVUkws
IHsgfSwgbnVsbHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpMb2NrQmFj
a0ZvcndhcmRMaXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiB9
CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShXZWJDb3Jl
OjpGcmFtZSopCkBAIC05MSwxNCArODgsMTggQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
c3RvcFNwZWFraW5nKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQorCiAjZW5kaWYKIAog
I2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCisKIHZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpCiB7CiAgICAgbV9wYWdlLT5jb250ZXh0TWVudSgp
LT5zaG93KCk7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwogI2VuZGlm
IC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmlu
ZGV4IDgwOTRhNjI4MjI2MWI1ZTgzOTc0NWQ4NmU2MDQzYWY0Y2U2YzcyMzguLjMwYzZmZmUyM2Yx
ZTQ5ZjE1ZjY2ODM4YjY4NDFiNTY2MmM3ZWVmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAg
U3RyaW5nIHRpdGxlID0gbGFiZWw7CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewotICAgICAg
ICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHVybC5s
YXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGM4NDQ4YzVhYzFmNDM2MmU0NDAz
YzNhYzI5YTI4NmE5YWY1ZWJiOGUuLmNjYWUyMTJjNTZjYTQ4OTFiNjdjNmQzYmVlNGNkMzMxOTJi
MmE0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04ODIsNyArODgyLDcgQEAg
c3RhdGljIEJPT0wgc2hvdWxkVHJ5QXBwTGluayhXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJgogICAgIGlmICghYWN0aW9uLnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFy
Z2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgaG9zdHNBcmVFcXVhbCh0YXJnZXRGcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCksIGFjdGlvbi51cmwoKSkpCisgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdl
dEZyYW1lLT5kb2N1bWVudCgpICYmIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5ob3N0
KCkgPT0gYWN0aW9uLnVybCgpLmhvc3QoKSkKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgcmV0
dXJuIFlFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IDUzNjczZTllMmY1ZWQzYmY0Y2E1MTI0YzkyZjQxNmNmM2MzNzJlZmYuLjdkNDg5ZTYwZmY1
YTgxMjVjNGQyY2ZkYWFhNjQxYzU3YTE4YTk0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjI4NiwxNCArMjI4NiwxMCBAQCAtIChET01Eb2N1
bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRGb3JXZWJBcmNoaXZlOihXZWJBcmNoaXZl
ICopd2ViQXJjaGl2ZQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21l
bnRGb3JJbWFnZURhdGE6KE5TRGF0YSAqKWRhdGEgd2l0aFJlbGF0aXZlVVJMUGFydDooTlNTdHJp
bmcgKilyZWxhdGl2ZVVSTFBhcnQgYW5kTUlNRVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKIHsK
LSAgICBXZWJSZXNvdXJjZSAqcmVzb3VyY2UgPSBbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0
aERhdGE6ZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJM
UGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTUlNRVR5cGU6bWltZVR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVOYW1lOm5pbF07Ci0gICAgRE9NRG9jdW1l
bnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdt
ZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2VdOwotICAgIFtyZXNvdXJjZSByZWxlYXNlXTsK
LSAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgYXV0byByZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJS
ZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEKKyAgICAgICAgVVJMOlVSTDo6ZmFrZVVS
TFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nIHsgcmVsYXRpdmVVUkxQYXJ0IH0pCisgICAgICAgIE1J
TUVUeXBlOm1pbWVUeXBlIHRleHRFbmNvZGluZ05hbWU6bmlsIGZyYW1lTmFtZTpuaWxdKTsKKyAg
ICByZXR1cm4gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJl
c291cmNlOnJlc291cmNlLmdldCgpXTsKIH0KIAogLSAoQk9PTClmb2N1c2VkTm9kZUhhc0NvbnRl
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDRiNmExMTVmYzkzNjM3ZDM4M2VhZGNkZTU4ZGViYzlkNWFmZWQ5YTYuLjUxM2IzZDVlNTJm
NmJkMTNmNDRkOTVkOWNiNjM0MzdjODc5YTFlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjMwNiw3ICsyMzA2LDcgQEAgLSAodm9p
ZCljbG9zZQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX3dlYl9kb2N1bWVudEZyYWdtZW50
RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGU6
KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW1hZ2VNSU1FVHlwZTooTlNTdHJpbmcgKilpbWFn
ZU1JTUVUeXBlCiB7Ci0gICAgYXV0byBmaWxlbmFtZSA9IFtpbWFnZU1JTUVUeXBlIHN0cmluZ0J5
UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIi8iIHdpdGhTdHJpbmc6QCIuIl07CisgICAg
U3RyaW5nIGZpbGVuYW1lID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJl
bmNlc09mU3RyaW5nOkAiLyIgd2l0aFN0cmluZzpAIi4iXTsKICAgICBhdXRvIHJlc291cmNlID0g
YWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6W3Bhc3RlYm9hcmQgZGF0
YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdCiAgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVs
YXRpdmVQYXJ0KGZpbGVuYW1lKSBNSU1FVHlwZTppbWFnZU1JTUVUeXBlIHRleHRFbmNvZGluZ05h
bWU6bmlsIGZyYW1lTmFtZTpuaWxdKTsKICAgICByZXR1cm4gW1tzZWxmIF9kYXRhU291cmNlXSBf
ZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlOnJlc291cmNlLmdldCgpXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBhYTUxYjYzOTQ4ODhhNzBiN2YwZDlkYmEwNTFm
ZTI1YjFlMTZmZjk3Li5mMTQxODYzMGVmNmU5ZGEyYzMzOWYwYWQxZWQ4ZWU2NjlhODg4N2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgLSAoaWQg
PE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2RlZmF1bHRBbmltYXRpb25D
b250cm9sbGVyCiAgICAgICAgIHJldHVybiBbW1tXZWJBbmltYXRpb25Db250cm9sbGVyIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CiAKICAgICBOU1VSTCAqdXJsID0gX2hpdFRlc3RSZXN1bHQu
YWJzb2x1dGVMaW5rVVJMKCk7Ci0gICAgTlNTdHJpbmcgKmFic29sdXRlVVJMU3RyaW5nID0gW3Vy
bCBhYnNvbHV0ZVN0cmluZ107CisgICAgU3RyaW5nIGFic29sdXRlVVJMU3RyaW5nID0gW3VybCBh
YnNvbHV0ZVN0cmluZ107CiAgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50
KCkpIHsKICAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1h
aWx0byIpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbk1haWx0b0xp
bms7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYzI2NWUwODNlMWY3YzlhZmM4
M2JjOGUwMWU4ZjQ0ZWVmN2FiNTNiOS4uMTQyZTFjMzE2NmNhYWRhY2QzNWRhODJjYzZiM2NlNDQy
ZjRiNjQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjUsMjEgKzI1LDE0
IEBACiAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCi0jaW5jbHVkZSAiV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmgiCi0jaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgi
CiAjaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250
cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCiBXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVD
bGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewpAQCAt
NTcsMTcgKzUwLDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNv
bnN0IFVSTCYgdXJsKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29v
Z2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRl
U3BhY2UoKTsKLSAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMoc2VhcmNoU3RyaW5nKTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOwor
ICAgIGF1dG8gcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNo
P3E9IiArIGVuY29kZWQgKyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0
cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcu
c3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAi
X3MsICIrIl9zKTsKKyAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3
Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRG
LTgiIH07CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0g
ICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVS
TCB7IH0sIHVybCB9LCB7IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3
YXJkTGlzdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2Vy
R2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1
cmUgfTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFy
Y2hVUkwsIHsgfSwgbnVsbHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dyk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShG
cmFtZSopCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZTNiZDIzZjAxZGM1ZmFlNjRmODY4ZGMwNDQ5YjQ3NmU2NWRjNTIzOS4uNDM4MmRjMmFmNGNj
ZGM2ODUyYTNjNDA5MDJkYzYzMTkyYTY4ODY2NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTIwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3Ry
aW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVVJMLmNwcDogUmVtb3ZlZCB0aGUgdGVzdCBmb3IKKyAgICAgICAgZXF1YWxJZ25vcmlu
Z1F1ZXJ5QW5kRnJhZ21lbnQgc2luY2Ugd2UgcmVtb3ZlZCB0aGF0IGZ1bmN0aW9uLgorICAgICAg
ICBVcGRhdGVkIGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBmcm9tIFVSTDo6cGFzcy4KKyAg
ICAgICAgVXBkYXRlZCBhcmd1bWVudHMgdG8gaXNNYXRjaGluZ0RvbWFpbiB0byBwYXNzIGxpdGVy
YWxzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZAorICAgICAgICB0byBTdHJpbmdWaWV3IHJhdGhlciB0
aGFuIEFTQ0lJTGl0ZXJhbCwgd2hpY2ggU3RyaW5nVmlldyBkb2Vzbid0IHlldCBzdXBwb3J0Lgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNv
ZGluZy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6IFVwZGF0ZWQgZm9y
IHJlbmFtZSBvZiBVUkw6OnBhc3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTCk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKTogRGl0dG8uCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjp0ZXN0VXNlclBhc3N3b3JkKTogRGl0dG8uCisKIDIwMjAtMDQtMTkgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXNlIGNyZWF0ZU5TQXJyYXkg
aW4gbWFueSBtb3JlIHBsYWNlcyB0aGF0IGJ1aWxkIE5TQXJyYXkgb2JqZWN0cyBmcm9tIEMrKyBj
b2xsZWN0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKaW5kZXggOTM3Yjlm
OTQwYmY5MTEzZmNlMzcyM2ZhZjBjNWU1YmY2YjFjODdkZS4uNmJmMjc1YTUxOGQ0N2EwZTJmMjE3
OTRhMDc4ZDYxOWNlN2M1MWZkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVVJMLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIFRFU1RfRihXVEZfVVJMLCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hh
cikKICAgICBFWFBFQ1RfVFJVRSghIWt1cmwucG9ydCgpKTsKICAgICBFWFBFQ1RfRVEoODA4MCwg
a3VybC5wb3J0KCkudmFsdWUoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUiKSwg
a3VybC51c2VyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwucGFz
cygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3N3b3JkKCkp
OwogICAgIEVYUEVDVF9FUShTdHJpbmcoIi9pbmRleC5odG1sIiksIGt1cmwucGF0aCgpKTsKICAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmRleC5odG1sIiksIGt1cmwubGFzdFBhdGhDb21wb25lbnQo
KSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygidmFyPXZhbCIpLCBrdXJsLnF1ZXJ5KCkpOwpAQCAt
MjYxLDU3ICsyNjEsNiBAQCBURVNUX0YoV1RGX1VSTCwgRXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcikKICAgICB9CiB9CiAKLVRFU1RfRihXVEZfVVJMLCBFcXVhbElnbm9yaW5nUXVlcnlB
bmRGcmFnbWVudCkKLXsKLSAgICBzdHJ1Y3QgVGVzdENhc2UgewotICAgICAgICBjb25zdCBjaGFy
KiB1cmwxOwotICAgICAgICBjb25zdCBjaGFyKiB1cmwyOwotICAgICAgICBib29sIGV4cGVjdGVk
OwotICAgIH0gY2FzZXNbXSA9IHsKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20v
I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0
cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCNoYXNoIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGg/cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9w
YXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL290aGVycGF0aCIsICJo
dHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRw
Oi8vZXhhbXBsZS5jb206ODAvI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAot
ICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgjaGFzaCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MC9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0s
Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkjaGFzaCIsICJodHRw
Oi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MC9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCi0gICAg
ICAgIHsiaHR0cDovL25vdC1leGFtcGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUuY29tOjgw
LyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyNo
YXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8v
ZXhhbXBsZS5jb206ODEvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEiLCBmYWxzZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBs
ZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9w
YXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBs
ZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9v
dGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCi0gICAgICAg
IHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1s
IiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCNoYXNoIiwgImZp
bGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwK
LSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5I2hhc2giLCAiZmlsZTov
Ly9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9v
dGhlcl9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKLSAg
ICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXIvZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9
dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYt
ODtiYXNlNjQsNzYwLzc2MC83NjAvIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxl
LmNvbSIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tLyNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbSIsIGZhbHNlfSwKLSAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb20vP3F1ZXJ5IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxz
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSNoYXNoIiwgImZpbGU6Ly9l
eGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgfTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgdGVz
dCA6IGNhc2VzKSB7Ci0gICAgICAgIFVSTCB1cmwxID0gY3JlYXRlVVJMKHRlc3QudXJsMSk7Ci0g
ICAgICAgIFVSTCB1cmwyID0gY3JlYXRlVVJMKHRlc3QudXJsMik7Ci0gICAgICAgIEVYUEVDVF9F
USh0ZXN0LmV4cGVjdGVkLCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCh1cmwxLCB1cmwy
KSkKLSAgICAgICAgICAgIDw8ICJUZXN0IGZhaWxlZCBmb3IgIiA8PCB0ZXN0LnVybDEgPDwgIiB2
cy4gIiA8PCB0ZXN0LnVybDI7Ci0gICAgfQotfQotCiBURVNUX0YoV1RGX1VSTCwgUHJvdG9jb2xJ
c0luSFRUUEZhbWlseSkKIHsKICAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KHsgfSkpOwpAQCAtMzc2LDIyICszMjUsMjIgQEAgVEVTVF9GKFdURl9VUkwsIEhvc3RJ
c01hdGNoaW5nRG9tYWluKQogCiAgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4o
U3RyaW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5
U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIl9z
KSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciX3Mp
KTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmci
X3MpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIikpOworICAg
IEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIikpOworICAgIEVY
UEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsKIAotICAg
IEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigicmciX3MpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIi5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
dXJsLmlzTWF0Y2hpbmdEb21haW4oInd3LndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFM
U0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0dHA6Ly93d3cud2Via2l0Lm9yZyJfcykpOworICAg
IEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigicmciKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCIub3JnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwu
aXNNYXRjaGluZ0RvbWFpbigid3cud2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJs
LmlzTWF0Y2hpbmdEb21haW4oImh0dHA6Ly93d3cud2Via2l0Lm9yZyIpKTsKIAogICAgIHVybCA9
IGNyZWF0ZVVSTCgiZmlsZTovLy93d3cud2Via2l0Lm9yZyIpOwogCiAgICAgRVhQRUNUX1RSVUUo
dXJsLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHVybC5p
c01hdGNoaW5nRG9tYWluKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlz
TWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGlu
Z0RvbWFpbigid2Via2l0Lm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGlu
Z0RvbWFpbigid3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0
Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21h
aW4oIndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWlu
KCJ3d3cud2Via2l0Lm9yZyIpKTsKIAogICAgIFVSTCBlbXB0eVVSTDsKICAgICBFWFBFQ1RfRkFM
U0UoZW1wdHlVUkwuaXNNYXRjaGluZ0RvbWFpbihTdHJpbmcgeyB9KSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAppbmRleCAxMDM5ZTU0YjFhZWI3YzI2MWY1
YTJhYzM5MjhlMTE5ODczYjM2Y2M4Li4wOGEzYTllOTg4M2QwNjhiY2MzZWI1ZGYxNTFlNjBmNzFi
NDA3YzlkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJz
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICAKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1
cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVP
cigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAt
MTE5LDcgKzExOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgCiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dv
cmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTE0
OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIAogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJs
LnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1
cmwucGF0aCgpKSk7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2
ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIK
ICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3RvY29s
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VR
KHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtNDYyLDE5ICs0NjIsMTkgQEAgVEVT
VF9GKFdURl9VUkxQYXJzZXIsIEJhc2ljKQogICAgIGNoZWNrVVJMKCJodHRwOi8vOkBob3N0Iiwg
eyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hvc3QvIn0p
OwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0VXNlclBhc3MoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBkZWNvZGVkLCBjb25zdCBTdHJpbmcmIGVuY29kZWQpCitzdGF0aWMgdm9pZCB0
ZXN0VXNlclBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZGVjb2Rl
ZCwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQogewogICAgIFVSTCB1c2VyVVJMKFVSTCgpLCBtYWtl
U3RyaW5nKCJodHRwOi8vIiwgdmFsdWUsICJAZXhhbXBsZS5jb20vIikpOwogICAgIFVSTCBwYXNz
VVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwOi8vdXNlcjoiLCB2YWx1ZSwgIkBleGFtcGxlLmNv
bS8iKSk7CiAgICAgRVhQRUNUX0VRKGVuY29kZWQsIHVzZXJVUkwuZW5jb2RlZFVzZXIoKSk7Ci0g
ICAgRVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwuZW5jb2RlZFBhc3MoKSk7CisgICAgRVhQRUNU
X0VRKGVuY29kZWQsIHBhc3NVUkwuZW5jb2RlZFBhc3N3b3JkKCkpOwogICAgIEVYUEVDVF9FUShk
ZWNvZGVkLCB1c2VyVVJMLnVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKGRlY29kZWQsIHBhc3NVUkwu
cGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgcGFzc1VSTC5wYXNzd29yZCgpKTsKIH0K
IAotc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0
cmluZyYgZW5jb2RlZCkKK3N0YXRpYyB2b2lkIHRlc3RVc2VyUGFzc3dvcmQoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQogewotICAgIHRlc3RVc2VyUGFzcyh2YWx1
ZSwgdmFsdWUsIGVuY29kZWQpOworICAgIHRlc3RVc2VyUGFzc3dvcmQodmFsdWUsIHZhbHVlLCBl
bmNvZGVkKTsKIH0KIAogVEVTVF9GKFdURl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQpAQCAtNDgz
LDIwICs0ODMsMjAgQEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQogICAgIGF1
dG8gaW52YWxpZFN1cnJvZ2F0ZSA9IHV0ZjE2U3RyaW5nPDM+KHsweEQ4MDAsICdBJywgJ1wwJ30p
OwogICAgIGF1dG8gcmVwbGFjZW1lbnRBID0gdXRmMTZTdHJpbmc8Mz4oezB4RkZGRCwgJ0EnLCAn
XDAnfSk7CiAKLSAgICB0ZXN0VXNlclBhc3MoImEiLCAiYSIpOwotICAgIHRlc3RVc2VyUGFzcygi
JSIsICIlIik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlMjUiLCAiJSIsICIlMjUiKTsKLSAgICB0ZXN0
VXNlclBhc3MoIiUyNTI1IiwgIiUyNSIsICIlMjUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJUZY
IiwgIiVGWCIpOwotICAgIHRlc3RVc2VyUGFzcygiJTAwIiwgU3RyaW5nOjpmcm9tVVRGOCgiXDAi
LCAxKSwgIiUwMCIpOwotICAgIHRlc3RVc2VyUGFzcygiJUYlMjUiLCAiJUYlIiwgIiVGJTI1Iik7
Ci0gICAgdGVzdFVzZXJQYXNzKCIlWCUyNSIsICIlWCUiLCAiJVglMjUiKTsKLSAgICB0ZXN0VXNl
clBhc3MoIiUlMjUiLCAiJSUiLCAiJSUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygi8J+SqSIsICIl
QzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiXwn5KpIiwgIiUl
QzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKLSAgICB0ZXN0VXNlclBhc3ModmFsaWRTdXJyb2dh
dGUsICIlRjAlOTAlODUlOTUiKTsKLSAgICB0ZXN0VXNlclBhc3MocmVwbGFjZW1lbnRBLCAiJUVG
JUJGJUJEQSIpOwotICAgIHRlc3RVc2VyUGFzcyhpbnZhbGlkU3Vycm9nYXRlLCByZXBsYWNlbWVu
dEEsICIlRUYlQkYlQkRBIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiYSIsICJhIik7CisgICAg
dGVzdFVzZXJQYXNzd29yZCgiJSIsICIlIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTI1Iiwg
IiUiLCAiJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTI1MjUiLCAiJTI1IiwgIiUyNTI1
Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJUZYIiwgIiVGWCIpOworICAgIHRlc3RVc2VyUGFz
c3dvcmQoIiUwMCIsIFN0cmluZzo6ZnJvbVVURjgoIlwwIiwgMSksICIlMDAiKTsKKyAgICB0ZXN0
VXNlclBhc3N3b3JkKCIlRiUyNSIsICIlRiUiLCAiJUYlMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3
b3JkKCIlWCUyNSIsICIlWCUiLCAiJVglMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlJTI1
IiwgIiUlIiwgIiUlMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCLwn5KpIiwgIiVDMyVCMCVD
MiU5RiVDMiU5MiVDMiVBOSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiXwn5KpIiwgIiUlQzMl
QjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKHZhbGlkU3Vycm9n
YXRlLCAiJUYwJTkwJTg1JTk1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZChyZXBsYWNlbWVudEEs
ICIlRUYlQkYlQkRBIik7CisgICAgdGVzdFVzZXJQYXNzd29yZChpbnZhbGlkU3Vycm9nYXRlLCBy
ZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBQ
YXJzZVJlbGF0aXZlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAppbmRleCBhMjY4MTZkYTE0OTFmNmUz
YjIwNTdjNjZhN2RjYTQ1OWQxMzYxNGQzLi5lMjYxNzkzMzQyNTIyNDNiYTVmMTQxODBmNzIyNGVi
Nzc1NGRjYTFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0
aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29k
aW5nKiBlbmNvZGluZywgY29ucwogICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgdXJsU3RyaW5nLCBl
bmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2Nv
bCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgs
IHVybC5wYXRoKCkpKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25z
dAogICAgIGF1dG8gdXJsID0gVVJMKFVSTCh7IH0sIGJhc2VVUkxTdHJpbmcpLCB1cmxTdHJpbmcs
IGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3Rv
Y29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBv
cnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0
aCwgdXJsLnBhdGgoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397297</attachid>
            <date>2020-04-22 18:11:05 -0700</date>
            <delta_ts>2020-04-22 22:00:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200422181104.patch</filename>
            <type>text/plain</type>
            <size>214172</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiYzgyZjE4ZTBjMmUzYmJhM2U2OWFm
Y2QwMzUwOTBiN2MwYjg4NjAuLjRjN2E1ZmRjZTIwMGQ4MDFiNDFmMTc2Njk2ZmQzMTFlNjhmYWUy
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxJZ25vcmluZ051bGxpdHkpOiBBZGRl
ZC4gQ3VycmVudGx5IHRoZSBzYW1lIGFzIGVxdWFsLCBidXQKKyAgICAgICAgY291bGQgYmUgZGlm
ZmVybmV0IGluIHRoZSBmdXR1cmUuCisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmNvbnRhaW5z
IGNvbnN0KTogQWRkZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhCisgICAgICAgIGNvbnN0IGNoYXIq
IHNvIHRoZSBjYWxsIHNpdGUgZG9lc24ndCBoYXZlIHRvIGNvbnZlcnQgaXQgdG8gYSBTdHJpbmdW
aWV3LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOiBVcGRhdGVkIGZvciB0aGUg
YWRkaXRpb25zIGFib3ZlLgorICAgICAgICBBbHNvIGFkZGVkIGEgZGVmYXVsdCBzdGFydCBvZiAw
IHRvIHRoZSBmaW5kIGZ1bmN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0KTogUmVtb3ZlZCB1bm5lZWRl
ZCBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
VUludFN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmlj
dCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KTogRGl0dG8uCisgICAg
ICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9VSW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb0ludDY0KTogRGl0
dG8uCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHIpOiBEaXR0by4KKwogMjAyMC0wNC0yMiAgQ2xhdWRpbyBT
YWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBTZXZlcmFs
IGZpeGVzIHRvIEdka0V2ZW50IEFQSXMgZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMmNkNDEwZWI5
ODJkYjU5MmVhZWJhMjhiNWM2YjUxMmU0MzJjOGQyLi4wOTI2ODRhM2VlZWY1YzRkNDk3NzUyYzcw
NDFiMjFjZTg1MDQ3ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTk2IEBACisyMDIwLTA0LTIy
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1
c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
bWF0Y2hVUkxzKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxscyB0byBoYXNRdWVyeS4KKworICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoUmVzcG9uc2U6OnJlZGlyZWN0KTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAqIE1v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZpZXIpOiBVc2UgaGFzQ3JlZGVu
dGlhbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVlvdVR1YmVVUkwpOiBUYWtlIFN0cmlu
Z1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpxdWVyeUtleXNBbmRWYWx1ZXMpOiBUYWtlIFN0cmlu
Z1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6IFVz
ZSBhdXRvIHNpbmNlIFVSTCBwaWVjZXMgYXJlCisgICAgICAgIG5vdyByZXR1cm5lZCBhcyBTdHJp
bmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VU
dWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgVXNlIFN0cmluZ1ZpZXcgYW5kIG1ha2VT
dHJpbmcgcmF0aGVyIHRoYW4gU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb3Vy
Y2VOYW1lKTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCBjb25z
dCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVUkwpOiBVc2Ugc2V0SG9zdEFuZFBv
cnQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmspOiBVcGRhdGUgc2luY2UKKyAgICAgICAgZnJh
Z21lbnRJZGVudGlmaWVyIHJldHVybnMgU3RyaW5nVmlldy4KKworICAgICAgICAqIGRvbS9UcmVl
U2NvcGUuY3BwOiBBZGRlZCBhIGNvbW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENvbXBv
bmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4gQWxzbyBnb3QgcmlkIG9mIHNvbWUgc3RyYW5nZQor
ICAgICAgICB1c2Ugb2YgQXRvbVN0cmluZyB0aGF0IHdhcyBub3QgbmVjZXNzYXJ5IGFuZCB1c2Vk
IFdURk1vdmUgbW9yZS4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IFVwZGF0ZSBz
aW5jZQorICAgICAgICBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSBjb25z
dCk6CisgICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5k
IFN0cmluZ1ZpZXcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmcgZm9yIG5hbWUgYW5kIGV4dGVu
c2lvbiB2YWx1ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZSk6IFVwZGF0ZSBzaW5jZSBs
YXN0UGF0aENvbXBvbmVudAorICAgICAgICByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAg
ICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6IFVwZGF0ZSBzaW5jZQorICAg
ICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAg
KiBodG1sL1VSTFV0aWxzLmg6IENoYW5nZWQgbWFueSBmdW5jdGlvbnMgdG8gdGFrZSBhIFN0cmlu
Z1ZpZXcsIGNoYW5nZWQKKyAgICAgICAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgdG8gY2FsbCB0
b1N0cmluZywgc2luY2UgdGhlIHVuZGVybHlpbmcgVVJMCisgICAgICAgIGZ1bmN0aW9uIG5vdyBy
ZXR1cm5zIGEgU3RyaW5nVmlldy4gVXBkYXRlZCBuYW1lcyBzaW5jZSAicGFzcyIgaXMgbm93Cisg
ICAgICAgICJwYXNzd29yZCIuCisgICAgICAgIChXZWJDb3JlOjpjb3VudEFTQ0lJRGlnaXRzKTog
QWRkZWQuIFJlcGxhY2VzIHVudXN1YWwgZnVuY3Rpb24KKyAgICAgICAgbmFtZWQgcGFyc2VQb3J0
RnJvbVN0cmluZ1Bvc2l0aW9uIGJlY2F1c2Ugd2UgY2FuIHVzZSBTdHJpbmdWaWV3IG5vdworICAg
ICAgICBhbmQgc28gZG9uJ3QgbmVlZCBzdWNoIGFuIHVudXN1YWwgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFk
Q2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdCk6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgQWxzbyByZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZiBBU0NJSUxpdGVy
YWwgdGhhdCBodXJ0cyBwZXJmb3JtYW5jZQorICAgICAgICBhIHRpbnkgYml0LgorICAgICAgICAo
V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nIGNvbnN0KTogVXNlIG1h
a2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICog
bG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2
YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogVXNlIGhhc0Ny
ZWRlbnRpYWxzLgorCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKTogVXBkYXRlIHNpbmNl
IHF1ZXJ5IHJldHVybnMKKyAgICAgICAgU3RyaW5nVmlldy4KKworICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTCk6IFVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1hbmlmZXN0UGF0aCk6IFJldHVybiBhIFN0cmluZ1ZpZXcuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KTogVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uIGNvbnN0KTogVXBkYXRlIHNpbmNlCisg
ICAgICAgIGZyYWdtZW50SWRlbnRpZmVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzcGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1
ZXN0VVJMKTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbCk6IFVwZGF0ZWQgbG9n
IG1lc3NhZ2UuCisKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6IFVwZGF0ZWQgZm9yIFVSTDo6cGFzc3dvcmQg
bmFtZSBjaGFuZ2UKKyAgICAgICAgYW5kIHRvIHVzZSB0aGUgbmV3IHN0cmluZ1dpdGhvdXRRdWVy
eU9yRnJhZ21lbnRJZGVudGlmaWVyIHJhdGhlciB0aGFuIHRoZQorICAgICAgICBvbGQgZXF1YWxJ
Z25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQuCisKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpocmVmIGNvbnN0KTogVXNlIHJlbW92ZUNyZWRl
bnRpYWxzLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnBvcnQgY29uc3QpOiBTdHJlYW1s
aW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwYXRobmFtZSBjb25zdCk6IFVzZSBh
biBBU0NJSUxpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2VhcmNoIGNvbnN0
KTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisgICAgICAgIChXZWJDb3JlOjpM
b2NhdGlvbjo6aGFzaCBjb25zdCk6IFVzZSBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051
bWJlclNpZ24uCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UG9ydCk6IFVzZSBwYXJz
ZVVJbnQxNi4KKworICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDogQ29k
aW5nIHN0eWxlIHR3ZWFrcy4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVu
c2lvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgVXNlIGNvbnRhaW5zIGluc3RlYWQgb2YgcmV2ZXJz
ZUZpbmQgdG8gY2hlY2sgZm9yIGEgcGVyaW9kIGluIHRoZSBmaWxlbmFtZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpsb2FkKTogVXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCBpcyBhIFN0
cmluZ1ZpZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0lu
dGVybmFsUHJvdG9jb2wpOiBVcGRhdGVkIHRvIHVzZSBtYWtlU3RyaW5nIHNpbmNlCisgICAgICAg
IHNldFByb3RvY29sIHRha2VzIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOiBSZW5hbWVkIG1fcGFzcyB0byBtX3Bhc3N3
b3JkCisgICAgICAgIGFuZCBjYWxsIHBhc3N3b3JkIGluc3RlYWQgb2YgcGFzcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZW1vdmVDcmVkZW50aWFscyk6IFVzZSByZW1v
dmVDcmVkZW50aWFscy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
Q0ZVUkxDb25uZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZAorICAgICAgICBuYW1lIGNo
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3Qp
OiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkIGFuZAorICAgICAgICBwYXNzd29yZCBuYW1lIGNoYW5n
ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRC
YXNlZEF1dGhlbnRpY2F0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFByb3h5
U2V0dGluZ3M6OnNldFVzZXJQYXNzKTogVXBkYXRlZCBmb3Igc2V0UGFzc3dvcmQgbmFtZSBjaGFu
Z2UuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcm94eVVybCk6IFVzZSBoYXNDcmVkZW50aWFs
cywgdXBkYXRlZCBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
UHJveHlTZXR0aW5nczo6cGFzc3dvcmQgY29uc3QpOiBVcGRhdGVkIGZvciBwYXNzd29yZCBuYW1l
IGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IFVwZGF0ZWQgZm9yCisgICAgICAgIG1fcGFzc3dvcmQg
bmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q3JlZGVu
dGlhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5k
UmVxdWVzdCk6IFVwZGF0ZWQgZm9yIG1fcGFzc3dvcmQgYW5kCisgICAgICAgIHBhc3N3b3JkIG5h
bWUgY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJM
Q29ubmVjdGlvbik6IFVwZGF0ZWQgZm9yIG1fcGFzc3dvcmQKKyAgICAgICAgYW5kIHNldFBhc3N3
b3JkIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6Y3JlYXRlU291cFVSSSBjb25zdCk6IFVwZGF0ZWQg
Zm9yIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9VUkxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNvdXBVUklUb1VSTCk6IFVwZGF0ZWQg
Zm9yIHNldFBhc3N3b3JkIG5hbWUgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVVUkwpOiBVcGRhdGVkIHNp
bmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGUpOiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1N0eWxl
QnVpbGRlclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyU3RhdGU6
OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIGZyYWdtZW50
SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIHdvcmtlcnMvV29y
a2VyTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBvcnQg
Y29uc3QpOiBTdHJlYW1saW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpw
YXRobmFtZSBjb25zdCk6IFVzZSBhbiBBU0NJSUxpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJMb2NhdGlvbjo6c2VhcmNoIGNvbnN0KTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlv
bk1hcmsuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6aGFzaCBjb25zdCk6IFVz
ZSBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24uCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5KToKKyAgICAgICAgVXBkYXRlZCBmb3IgaGFzRnJhZ21lbnRJZGVudGlmaWVy
IG5hbWUgY2hhbmdlLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvcE9yaWdpblVSTCk6
IFNpbXBsaWZpZWQgY29kZSB0byBzZXQgcG9ydC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWdpblVSTCk6IERpdHRv
LgorCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKTogVXBkYXRlZCBmb3Igc2V0UGFzc3dvcmQgbmFtZSBjaGFu
Z2UuCisKIDIwMjAtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgdG9nZ2xpbmcgZGVidWcgb3ZlcmxheSBmb3IgdG91Y2ggYWN0aW9uIHJl
Z2lvbiBhbmQgZWRpdGFibGUgZWxlbWVudCByZWdpb24gaW5kZXBlbmRlbnQgZnJvbSBub24tZmFz
dCBzY3JvbGxhYmxlIHJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNTFiNGM0ZmNmMTZhZmFjOWI0MTlhYzIy
ZmQ5ZTFjNTI3Y2RiZDM2Li5jMzVlYjA1YTZkNGYzZmY4ODkwY2ExZjM5M2NjN2U3YWE0YTQ2MDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVu
IHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGly
ZWN0aW9uKTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICBSZW1v
dmUgdXNlIG9mIEFTQ0lJTGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKTogVXBkYXRlZAor
ICAgICAgICBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cCk6
IFVwZGF0ZWQgZm9yCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRU
UFJlZGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcgY29uc3QpOgorICAgICAgICBVc2UgIT0g
dG8gY29tcGFyZSBob3N0cywgcmF0aGVyIHRoYW4gaG9zdHNBcmVFcXVhbC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRl
IGNvbnN0KToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgfHwgdG8gbWF0Y2ggdGhlIGZ1bmN0
aW9uIGFib3ZlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQ
STo6VVJMOjpob3N0IGNvbnN0KTogUmVtb3ZlZCB2YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6Omhv
c3QKKyAgICAgICAgcmV0dXJucyBudWxsIGlmIHRoZSBVUkwgaXMgaW52YWxpZC4KKyAgICAgICAg
KEFQSTo6VVJMOjpwcm90b2NvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6OnBh
dGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEFQSTo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBj
b25zdCk6IERpdHRvLiBBbHNvIGFkZGVkIHRvU3RyaW5nCisgICAgICAgIHNpbmNlIFdURjo6VVJM
OjpsYXN0UGF0aENvbXBvbmVudCBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOiBVc2UgaGFzRnJhZ21lbnRJZGVudGlmaWVyLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2spOgor
ICAgICAgICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aCBhbmQKKyAgICAgICAgdXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhdGhFeHRlbnNpb24pOiBVcGRhdGVkIHNpbmNlIGxh
c3RQYXRoQ29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LiBSZWZhY3RvcmVk
IGEgbGl0dGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCByYXRoZXIgdGhhbiBob3N0c0FyZUVxdWFs
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5l
d1BhZ2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jh
c2VVUkwpOgorICAgICAgICBVc2UgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cyk6CisgICAgICAgIERvbid0IHVzZSBBU0NJSUxpdGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNldFBy
b3RvY29sLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyOjpnZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICBVc2UgZmlsZVVSTFdpdGhGaWxlU3lz
dGVtUGF0aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5z
dGFsbFBERkRvY3VtZW50KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZp
ZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZAorICAgICAgICB0
aGUgaW1wbGVtZW50YXRpb24gYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICBVcGRhdGVkIHNpbmNl
IGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCiAyMDIwLTA0LTIyICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHRvZ2ds
aW5nIGRlYnVnIG92ZXJsYXkgZm9yIHRvdWNoIGFjdGlvbiByZWdpb24gYW5kIGVkaXRhYmxlIGVs
ZW1lbnQgcmVnaW9uIGluZGVwZW5kZW50IGZyb20gbm9uLWZhc3Qgc2Nyb2xsYWJsZSByZWdpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4MTA4OWRmMzdjYmRjNTJmZWEzMWI2M2Nh
YmEzNDc0MDBkODU4MDkwLi42OTE4MzI3YWU4MzQ4M2EyZjU1NmM5YjhlYzVjNWVjM2U3Zjc4ZTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDQt
MjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRv
IHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKHNob3VsZFRyeUFwcExpbmsp
OiBDb21wYXJlIGhvc3RzIHdpdGggPT0gcmF0aGVyIHRoYW4gdXNpbmcgaG9zdHNBcmVFcXVhbC4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
b2N1bWVudEZyYWdtZW50Rm9ySW1hZ2VEYXRhOndpdGhSZWxhdGl2ZVVSTFBhcnQ6YW5kTUlNRVR5
cGU6XSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQgdGFr
ZXMgYSBTdHJpbmdWaWV3LiBBbHNvIHVzZSBSZXRhaW5QdHIKKyAgICAgICAgaW5zdGVhZCBvZiBh
biBleHBsaWNpdCBjYWxsIHRvIHJlbGVhc2UuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfd2ViX2RvY3VtZW50RnJhZ21lbnRGcm9t
UGFzdGVib2FyZDpwYXN0ZWJvYXJkVHlwZTppbWFnZU1JTUVUeXBlOl0pOgorICAgICAgICBVcGRh
dGVkIHNpbmNlIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gTm8g
Y29udmVyc2lvbgorICAgICAgICBkaXJlY3RseSBmcm9tIE5TU3RyaW5nIHRvIFN0cmluZ1ZpZXcs
IHNvIHdlIGhhdmUgdG8gZXhwbGljaXRseSB1c2UgYSBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6IFVwZGF0
ZQorICAgICAgICBzaW5jZSBwcm90b2NvbElzIHRha2VzIGEgU3RyaW5nVmlldy4gTm8gY29udmVy
c2lvbiBkaXJlY3RseSBmcm9tCisgICAgICAgIE5TU3RyaW5nIHRvIFN0cmluZ1ZpZXcsIHNvIHdl
IGhhdmUgdG8gZXhwbGljaXRseSB1c2UgYSBTdHJpbmcuCisKIDIwMjAtMDQtMjIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUkVHUkVTU0lPTiAocjI2
MDQ4NSk6IENyYXNoIGluIExlZ2FjeSBXZWJLaXQgY3JlYXRlTWVudSBpdGVtIGZ1bmN0aW9uIChy
ZXByb2R1Y2libGUgdW5kZXIgQXNhbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4
YWZiMzE1YWRkZjM4NGExYTQ0OGYzODg2ZDk1MjY1NjdjYjU0NmQ0Li5mY2U3NDEzMjY5Y2YzMDhj
ZmFkNTBiYjk5MDk3MzRlYjc4MmUzMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMjAtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1
YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFzZSk6IE1vdmVkIGluaXRpYWxpemF0aW9u
IG9mCisgICAgICAgIG1fcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVJc0xvYWRlZCB0byB0aGUgY2xh
c3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpNSU1FVHlw
ZUZvckV4dGVuc2lvbiBjb25zdCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKTogVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6IENoYW5nZWQgTUlNRVR5cGVGb3JFeHRlbnNpb24g
dG8gdGFrZQorICAgICAgICBhIFN0cmluZ1ZpZXcgYW5kIG1hZGUgaXQgcHJpdmF0ZS4gVG9vayBv
dXQgc29tZSB1bm5lZWRlZCBkZWNsYXJhdGlvbnMuCisgICAgICAgIEluaXRpYWxpemVkIG1fcGVy
c2lzdGVudE1ldGFkYXRhQ2FjaGVJc0xvYWRlZCBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9u
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1s
aW5lZCB0aGUgaW1wbGVtZW50YXRpb24gYSBiaXQuCisgICAgICAgIChXZWJDb250ZXh0TWVudUNs
aWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KTogQWRkZWQgInVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
Ii4KKwogMjAyMC0wNC0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgQ2xhc3NlcyBtYXJrZWQgZmluYWwgc2hvdWxkIG5vdCB1c2UgcHJvdGVjdGVk
IGFjY2VzcyBzcGVjaWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDJjNTA0YmNkYThiZDMyYjc4YjM5NGFkMjJmMDc5
MTJhODMyMTAxZDcuLjhlYTVjMDQ2OTcwMDk2YzBjYzY5OTE1ZjM4YTkxNjgwMjU5ZDA1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJM
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC00MiwyNiArNDIsMTcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXR5cGVkZWYg
VmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+
IFVDaGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludmFsaWRQb3J0TnVt
YmVyID0gMHhGRkZGOwotCi0vLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24s
IGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlCi0vLyBBU0NJSS4gVGhlIGRl
c3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFy
ZSBhbGxvd2VkCi0vLyBpbiB0aGUgc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFk
ZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgcmVzdWx0Lgotc3RhdGljIHZvaWQgY29weUFTQ0lJKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0KQorLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8g
dGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZSBB
U0NJSS4KKy8vIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51
bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZCBpbiB0aGUKKy8vIHNvdXJjZSBzdHJpbmcsIGFuZCBu
byBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZl
ci4KK3N0YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVz
dGluYXRpb24pCiB7Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0
aW9uLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICBlbHNlIHsK
LSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2Fz
dDxjaGFyPihzcmNbaV0pOworICAgICAgICBhdXRvIHNvdXJjZSA9IHN0cmluZy5jaGFyYWN0ZXJz
MTYoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHN0YXRp
Y19jYXN0PGNoYXI+KHNvdXJjZVtpXSk7CiAgICAgfQogfQogCkBAIC04MywxNiArNzQsMTMgQEAg
dm9pZCBVUkw6OmludmFsaWRhdGUoKQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogZW5jb2RpbmcpCiB7Ci0g
ICAgVVJMUGFyc2VyIHBhcnNlcihyZWxhdGl2ZSwgYmFzZSwgZW5jb2RpbmcpOwotICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOworICAgICp0aGlzID0gVVJMUGFyc2VyKHJlbGF0aXZlLCBiYXNl
LCBlbmNvZGluZykucmVzdWx0KCk7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJM
KFVDaGFyIGMpCitzdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVSTChVQ2hhciBjaGFyYWN0ZXIp
CiB7Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBh
bmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMg
YW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxk
IG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKKyAg
ICAvLyBJZ25vcmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJh
Y3RlcnMuCisgICAgcmV0dXJuIGNoYXJhY3RlciA8PSAnICc7CiB9CiAKIFVSTCBVUkw6Omlzb2xh
dGVkQ29weSgpIGNvbnN0CkBAIC0xMDIsNDggKzkwLDQzIEBAIFVSTCBVUkw6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFVSTDo6bGFzdFBhdGhD
b21wb25lbnQoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29u
c3QKIHsKICAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKICAg
ICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCiAgICAgICAgIC0tZW5kOwogCiAgICAgc2l6ZV90
IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKHN0YXJ0IDwgcGF0aFN0YXJ0KCkpCisgICAgICAg
IHJldHVybiB7IH07CiAgICAgKytzdGFydDsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKIH0KIAogU3RyaW5nVmlldyBV
Ukw6OnByb3RvY29sKCkgY29uc3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKwogICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwg
bV9zY2hlbWVFbmQpOwogfQogCiBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiB7CisgICAg
aWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICB1bnNpZ25lZCBzdGFy
dCA9IGhvc3RTdGFydCgpOwogICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IFVS
TDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVt
YmVyOwotICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hhcmFj
dGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwg
bV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKLSAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNoYXJh
Y3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAx
LCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIHJldHVybiBudW1iZXI7CisgICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/IHBhcnNl
VUludDE2KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyAxLCBtX3Bv
cnRMZW5ndGggLSAxKSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBVUkw6Omhvc3RBbmRQ
b3J0KCkgY29uc3QKQEAgLTE1NSw5NCArMTM4LDEwMCBAQCBTdHJpbmcgVVJMOjpob3N0QW5kUG9y
dCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogewot
ICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoKTsKKyAgICBpZiAoIWhhc0NyZWRlbnRpYWxzKCkpCisgICAgICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcoMCwgcGF0aFN0YXJ0KCkpOwogCi0gICAgaWYgKG1fcGFzc3dvcmRF
bmQgLSBtX3VzZXJTdGFydCA+IDApIHsKLSAgICAgICAgY29uc3QgaW50IGFsbG93Rm9yVHJhaWxp
bmdBdFNpZ24gPSAxOwotICAgICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0YXJ0LCBtX3Bhc3N3
b3JkRW5kIC0gbV91c2VyU3RhcnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWduKTsKLSAgICB9Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhob3N0U3RhcnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSkKKyAgICApOworfQog
Ci0gICAgcmV0dXJuIHJlc3VsdDsKK3N0YXRpYyBPcHRpb25hbDxMQ2hhcj4gZGVjb2RlRXNjYXBl
U2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBpZiAoaW5kZXggKyAzID4gbGVuZ3RoIHx8IGlucHV0W2luZGV4XSAhPSAnJScp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBkaWdpdDEgPSBpbnB1dFtp
bmRleCArIDFdOworICAgIGF1dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAyXTsKKyAgICBpZiAo
IWlzQVNDSUlIZXhEaWdpdChkaWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQyKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdG9BU0NJSUhleFZhbHVlKGRp
Z2l0MSwgZGlnaXQyKTsKIH0KIAogc3RhdGljIFN0cmluZyBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNG
cm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcgaW5wdXQpCiB7Ci0gICAgYXV0byBpbnB1dExlbmd0aCA9
IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmICghaW5wdXRMZW5ndGgpCi0gICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwotICAgIFZlY3RvcjxMQ2hhcj4gcGVyY2VudERlY29kZWQ7Ci0gICAgcGVy
Y2VudERlY29kZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dExlbmd0aCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGlu
cHV0W2ldID09ICclJwotICAgICAgICAgICAgJiYgaW5wdXRMZW5ndGggPiAyCi0gICAgICAgICAg
ICAmJiBpIDwgaW5wdXRMZW5ndGggLSAyCi0gICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRbaSArIDFdKQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAy
XSkpIHsKLSAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJ
SGV4VmFsdWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsKLSAgICAgICAgICAgIGkgKz0g
MjsKLSAgICAgICAgfSBlbHNlCisgICAgQVNTRVJUKGlucHV0LmlzQWxsQVNDSUkoKSk7CisKKyAg
ICBhdXRvIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPCAzIHx8ICFp
bnB1dC5jb250YWlucygnJScpKQorICAgICAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoKTsKKwor
ICAgIFZlY3RvcjxMQ2hhciwgNTEyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBwZXJjZW50RGVjb2Rl
ZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKSB7CisgICAgICAgIGlmIChhdXRvIGRlY29kZWRDaGFyYWN0ZXIgPSBk
ZWNvZGVFc2NhcGVTZXF1ZW5jZShpbnB1dCwgaSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgcGVy
Y2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKCpkZWNvZGVkQ2hhcmFjdGVyKTsKKyAgICAgICAg
ICAgIGkgKz0gMzsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBlcmNlbnREZWNvZGVk
LnVuY2hlY2tlZEFwcGVuZChpbnB1dFtpXSk7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0K
ICAgICB9CisKKyAgICAvLyBGSVhNRTogSXMgVVRGLTggYWx3YXlzIHRoZSBjb3JyZWN0IGVuY29k
aW5nPworICAgIC8vIEZJWE1FOiBUaGlzIHJldHVybnMgYSBudWxsIHN0cmluZyB3aGVuIHdlIGVu
Y291bnRlciBhbiBpbnZhbGlkIFVURi04IHNlcXVlbmNlLiBJcyB0aGF0IE9LPwogICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQu
c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFVSTDo6dXNlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRl
Y29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOworICAgIHJldHVy
biBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRVc2VyKCkpOwogfQog
Ci1TdHJpbmcgVVJMOjpwYXNzKCkgY29uc3QKK1N0cmluZyBVUkw6OnBhc3N3b3JkKCkgY29uc3QK
IHsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJM
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3Jk
RW5kIC0gbV91c2VyRW5kIC0gMSkpOworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNG
cm9tUGFyc2VkVVJMKGVuY29kZWRQYXNzd29yZCgpKTsKIH0KIAotU3RyaW5nIFVSTDo6ZW5jb2Rl
ZFVzZXIoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3Vz
ZXJTdGFydCk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Vz
ZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpOwogfQogCi1TdHJpbmcgVVJMOjplbmNv
ZGVkUGFzcygpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFBhc3N3b3JkKCkgY29uc3QK
IHsKICAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworICAg
IHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9w
YXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwogfQogCi1TdHJpbmcgVVJMOjpmcmFnbWVudElk
ZW50aWZpZXIoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNv
bnN0CiB7CiAgICAgaWYgKCFoYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsg
MSk7Ci19CisgICAgICAgIHJldHVybiB7IH07CiAKLWJvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50
aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3Ro
KCkgIT0gbV9xdWVyeUVuZDsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKG1fcXVlcnlFbmQgKyAxKTsKIH0KIAotU3RyaW5nIFVSTDo6YmFzZUFzU3RyaW5nKCkgY29u
c3QKK1VSTCBVUkw6OnRydW5jYXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIHJldHVybiBVUkwoVVJM
KCksIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpKTsKIH0KIAogI2lmICFVU0Uo
Q0YpCiAKIFN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsKLSAgICBpZiAoIWlz
VmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IGlmICghaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBk
ZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcocGF0aCgpKSk7Cisg
ICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwocGF0aCgpKTsKIH0K
IAogI2VuZGlmCiAKLSNpZmRlZiBOREVCVUcKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogc3RhdGlj
IGlubGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcpCiB7CkBAIC0zMTQs
NyArMzAzLDcgQEAgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwg
U3RyaW5nVmlldyBwcm90b2NvbCkKIAogYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciog
cHJvdG9jb2wpIGNvbnN0CiB7Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyB7
IHByb3RvY29sIH0pOworICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKIAogICAg
IC8vIEphdmFTY3JpcHQgVVJMcyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2
ZW4gaWYgVVJMIGRlY2lkZXMgdGhleSBhcmUgaW52YWxpZC4KICAgICAvLyBUaGUgZnJlZSBmdW5j
dGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIApAQCAt
MzQ5LDczICszMzgsNjUgQEAgYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2Nv
bCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFVSTDo6cXVlcnkoKSBjb25z
dAorU3RyaW5nVmlldyBVUkw6OnF1ZXJ5KCkgY29uc3QKIHsKICAgICBpZiAobV9xdWVyeUVuZCA9
PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVy
eUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7
CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpwYXRoKCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBwb3J0
RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7CisgICAgaWYg
KCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpLCBtX3BhdGhFbmQgLSBwYXRoU3RhcnQo
KSk7CiB9CiAKLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCitib29sIFVS
TDo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyBuZXdQcm90b2NvbCkKIHsKICAgICAvLyBGaXJlZm94
IGFuZCBJRSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgotICAgIHNpemVf
dCBzZXBhcmF0b3JQb3NpdGlvbiA9IHMuZmluZCgnOicpOwotICAgIFN0cmluZyBuZXdQcm90b2Nv
bCA9IHMuc3Vic3RyaW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKLSAgICBhdXRvIGNhbm9uaWNh
bGl6ZWQgPSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sKTsK
LSAgICBpZiAoIWNhbm9uaWNhbGl6ZWQpCisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5l
d1Byb3RvY29sLnN1YnN0cmluZygwLCBuZXdQcm90b2NvbC5maW5kKCc6JykpOworICAgIGF1dG8g
bmV3UHJvdG9jb2xDYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShuZXdQcm90b2NvbFByZWZpeC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIGlm
ICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
KmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2Fs
aXplZCwgJzonLCBtX3N0cmluZykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAoKG1fcGFzc3dvcmRFbmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqY2Fub25p
Y2FsaXplZCA9PSAiZmlsZSIpCisgICAgaWYgKChtX3Bhc3N3b3JkRW5kICE9IG1fdXNlclN0YXJ0
IHx8IHBvcnQoKSkgJiYgKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9PSAiZmlsZSIpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGlzTG9jYWxGaWxlKCkgJiYgaG9zdCgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoKmNhbm9uaWNhbGl6ZWQsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsK
LSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKCpuZXdQ
cm90b2NvbENhbm9uaWNhbGl6ZWQsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Nj
aGVtZUVuZCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNBbGxBU0NJ
SShTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwotfQotICAgIAogLy8gQXBwZW5kcyB0aGUg
cHVueWNvZGVkIGhvc3RuYW1lIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHN0cmluZyBhbmQgbGVu
Z3RoIHRvCiAvLyB0aGUgb3V0cHV0IGJ1ZmZlci4gVGhlIHJlc3VsdCB3aWxsIG5vdCBiZSBudWxs
IHRlcm1pbmF0ZWQuCiAvLyBSZXR1cm4gdmFsdWUgb2YgZmFsc2UgbWVhbnMgZXJyb3IgaW4gZW5j
b2RpbmcuCi1zdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1
ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9zdG5h
bWUoVmVjdG9yPFVDaGFyLCA1MTI+JiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAg
IC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgog
ICAgIC8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBl
bmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KICAgICBjb25zdCB1bnNpZ25l
ZCBob3N0bmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7Ci0gICAgCi0gICAgaWYgKHN0cmluZy5sZW5n
dGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3RyaW5nKSkgeworCisg
ICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IHN0cmluZy5p
c0FsbEFTQ0lJKCkpIHsKICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgIAorCiAgICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9z
dG5hbWVCdWZmZXJMZW5ndGhdOwogICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7
CiAgICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpF
UjsKICAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJ
SSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwKICAgICAg
ICAgc3RyaW5nLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksIGhvc3Ru
YW1lQnVmZmVyLCBob3N0bmFtZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJy
b3IpOwotICAgIAorCiAgICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXByb2Nlc3NpbmdEZXRh
aWxzLmVycm9ycykgewogICAgICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1D
aGFyYWN0ZXJzQ29udmVydGVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MjgsMTAxICs0
MDksODYgQEAgdW5zaWduZWQgVVJMOjpob3N0U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAobV9w
YXNzd29yZEVuZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVu
ZCArIDE7CiB9CiAKLXZvaWQgVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKK3Vuc2lnbmVk
IFVSTDo6Y3JlZGVudGlhbHNFbmQoKSBjb25zdAoreworICAgIC8vIEluY2x1ZGUgJ0AnIHRvbyBp
ZiB3ZSBoYXZlIGl0LgorICAgIHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7CisgICAgaWYg
KGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgIGVuZCAr
PSAxOworICAgIHJldHVybiBlbmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0KFN0cmluZ1ZpZXcg
bmV3SG9zdCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBjb2xvbkluZGV4ID0gcy5maW5kKCc6Jyk7Ci0gICAgaWYgKGNvbG9uSW5kZXggIT0gbm90
Rm91bmQpCisgICAgaWYgKG5ld0hvc3QuY29udGFpbnMoJzonKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5kRW5jb2Rl
ZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVu
Y29kZWRIb3N0TmFtZTsKKyAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9z
dE5hbWUsIG5ld0hvc3QpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBzbGFzaFNs
YXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1l
RW5kICsgMSk7Ci0gICAgCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIu
YXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5l
ZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1l
LnNpemUoKSkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RF
bmQpKTsKIAotICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3Vz
ZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAg
ICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChob3N0U3RhcnQoKSksCisgICAgICAgIHNsYXNo
U2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgIFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3RO
YW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisgICAgICAgIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQpCisgICAgKSk7CiB9CiAKLXZvaWQgVVJMOjpy
ZW1vdmVQb3J0KCkKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1faG9zdEVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBt
X3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQg
VVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCit2b2lkIFVSTDo6c2V0UG9ydChPcHRpb25h
bDx1aW50MTZfdD4gcG9ydCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYm9vbCBjb2xvbk5lZWRlZCA9ICFtX3BvcnRMZW5ndGg7Ci0gICAgdW5zaWduZWQg
cG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7Ci0K
LSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChwb3J0U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6
OnJlbW92ZUhvc3RBbmRQb3J0KCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKKyAgICBpZiAoIXBv
cnQpIHsKKyAgICAgICAgcmVtb3ZlKG1faG9zdEVuZCwgbV9wb3J0TGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuOwotICAgIGlmICghaG9zdCgpLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0SG9zdCh7IH0p
OwotICAgIHJlbW92ZVBvcnQoKTsKKyAgICB9CisKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksCisgICAgICAgICc6JywK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpwb3J0KSwKKyAgICAgICAgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQogCi12b2lkIFVS
TDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3ZvaWQgVVJMOjpz
ZXRIb3N0QW5kUG9ydChTdHJpbmdWaWV3IGhvc3RBbmRQb3J0KQogewogICAgIGlmICghbV9pc1Zh
bGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQ
b3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCisgICAgYXV0byBob3N0TmFtZSA9IGhv
c3RBbmRQb3J0OworICAgIFN0cmluZ1ZpZXcgcG9ydFN0cmluZzsKICAgICBhdXRvIGNvbG9uSW5k
ZXggPSBob3N0TmFtZS5maW5kKCc6Jyk7CiAgICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQp
IHsKLSAgICAgICAgcG9ydCA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7Ci0g
ICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0ludFN0cmljdChv
ayk7Ci0gICAgICAgIGlmICghb2sgfHwgcG9ydEludCA8IDApCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHBvcnRTdHJpbmcgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEp
OwogICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsK
KyAgICAgICAgaWYgKCFwYXJzZVVJbnQxNihwb3J0U3RyaW5nKSkKKyAgICAgICAgICAgIHBvcnRT
dHJpbmcgPSB7IH07CiAgICAgfQotCi0gICAgaWYgKGhvc3ROYW1lLmlzRW1wdHkoKSkKKyAgICBp
ZiAoaG9zdE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlbW92ZShob3N0U3RhcnQoKSwgcGF0
aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBV
Q2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVuY29k
ZWRIb3N0TmFtZTsKICAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5h
bWUsIGhvc3ROYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVl
ZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsg
MSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9z
dHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3Ry
aW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7
Ci0gICAgaWYgKCFwb3J0LmlzRW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocG9ydCk7Ci0gICAgfQotICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3Bv
cnRMZW5ndGgpKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsK
LSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQg
PSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2UobWFrZVN0cmluZygK
KyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChob3N0U3RhcnQoKSksCisgICAgICAg
IHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgIFN0cmluZ1ZpZXcoZW5jb2Rl
ZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisgICAgICAgIHBvcnRT
dHJpbmcuaXNFbXB0eSgpID8gIiIgOiAiOiIsCisgICAgICAgIHBvcnRTdHJpbmcsCisgICAgICAg
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAgICApKTsKIH0K
IAogc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGlu
cHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFVDaGFyKSkKQEAgLTU1MSw4MSArNTE3LDg5IEBAIHN0
YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwg
Ym9vbCgqc2hvdWxkRW5jb2RlKShVCiAgICAgcmV0dXJuIGlucHV0OwogfQogCi12b2lkIFVSTDo6
c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCit2b2lkIFVSTDo6cGFyc2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQpCisgICAgKnRoaXMgPSBVUkxQYXJzZXIo
c3RyaW5nKS5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnJlbW92ZSh1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47Cisg
ICAgQVNTRVJUKHN0YXJ0IDwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VSVChsZW5ndGgg
PD0gbV9zdHJpbmcubGVuZ3RoKCkgLSBzdGFydCk7CisKKyAgICBhdXRvIHN0cmluZ0FmdGVyUmVt
b3ZhbCA9IFdURk1vdmUobV9zdHJpbmcpOworICAgIHN0cmluZ0FmdGVyUmVtb3ZhbC5yZW1vdmUo
c3RhcnQsIGxlbmd0aCk7CisgICAgcGFyc2Uoc3RyaW5nQWZ0ZXJSZW1vdmFsKTsKK30KIAotICAg
IC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2Fw
ZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNo
YW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2VyIGxvZ2luLgordm9pZCBVUkw6OnNldFVzZXIo
U3RyaW5nVmlldyBuZXdVc2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1
cm47CiAKICAgICB1bnNpZ25lZCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYgKCF1c2VyLmlzRW1w
dHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHVzZXIs
IFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKLSAgICAgICAgaWYgKG1fdXNlclN0
YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQotICAgICAgICAg
ICAgdSA9ICIvLyIgKyB1OwotICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZlIG9u
ZSBiZWZvcmUuCi0gICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNz
d29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCi0gICAgICAgICAgICB1LmFwcGVuZCgn
QCcpOwotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3VzZXJTdGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhlbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlmICghbmV3
VXNlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2Vy
U3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgICAgICBib29sIG5lZWRTZXBhcmF0b3IgPSBl
bmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRd
ICE9ICdAJyk7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKKyAgICAgICAgICAgIHNsYXNoU2xhc2hO
ZWVkZWQgPyAiLy8iIDogIiIsCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhu
ZXdVc2VyLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0luVXNlckluZm9F
bmNvZGVTZXQpLAorICAgICAgICAgICAgbmVlZFNlcGFyYXRvciA/ICJAIiA6ICIiLAorICAgICAg
ICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkKKyAgICAgICAgKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVy
IHVzZXIgbm9yIHBhc3N3b3JkLgogICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRF
bmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAg
ICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBl
eHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hh
bmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJT
dGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICByZW1vdmUobV91
c2VyU3RhcnQsIGVuZCAtIG1fdXNlclN0YXJ0KTsKICAgICB9CiB9CiAKLXZvaWQgVVJMOjpzZXRQ
YXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit2b2lkIFVSTDo6c2V0UGFzc3dvcmQoU3RyaW5n
VmlldyBuZXdQYXNzd29yZCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3Jk
LmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFy
YWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7
Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1l
RW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUg
ZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAg
aWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAg
ICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgaWYg
KCFuZXdQYXNzd29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBuZWVkTGVhZGluZ1NsYXNo
ZXMgPSBtX3VzZXJFbmQgPT0gbV9zY2hlbWVFbmQgKyAxOworICAgICAgICBwYXJzZShtYWtlU3Ry
aW5nKAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLAor
ICAgICAgICAgICAgbmVlZExlYWRpbmdTbGFzaGVzID8gIi8vOiIgOiAiOiIsCisgICAgICAgICAg
ICBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhuZXdQYXNzd29yZC50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCksIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwKKyAgICAgICAgICAgICdA
JywKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhjcmVkZW50aWFs
c0VuZCgpKQorICAgICAgICApKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0An
IGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmICht
X3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tl
bmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3
YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5v
dCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkg
ewotICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQobV91c2VyRW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVu
ZCkpKTsKLSAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9Cisg
ICAgICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCA/IGNyZWRlbnRp
YWxzRW5kKCkgOiBtX3Bhc3N3b3JkRW5kOworICAgICAgICByZW1vdmUobV91c2VyRW5kLCBlbmQg
LSBtX3VzZXJFbmQpOwogICAgIH0KIH0KIAordm9pZCBVUkw6OnJlbW92ZUNyZWRlbnRpYWxzKCkK
K3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlKG1f
dXNlclN0YXJ0LCBjcmVkZW50aWFsc0VuZCgpIC0gbV91c2VyU3RhcnQpOworfQorCiB2b2lkIFVS
TDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IE9wdGltaXpl
IHRoZSBjYXNlIHdoZXJlIHRoZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0byBiZSBlcXVh
bCB0byB3aGF0IHdhcyBwYXNzZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJlY3QgdG8gZG8g
dGhpcyB3aXRob3V0IGVuY29kaW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hhcmFjdGVycz8K
LSAgICAqdGhpcyA9IFVSTFBhcnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7IG1fc3RyaW5n
IH0uc3Vic3RyaW5nKDAsIG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0ucmVzdWx0KCk7
CisgICAgcGFyc2UobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcXVlcnlF
bmQpLCAnIycsIGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpCiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX3F1
ZXJ5RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAobV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZCkKLSAgICAg
ICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworCisgICAgbV9zdHJpbmcg
PSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOwogfQogCiB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlB
bmRGcmFnbWVudElkZW50aWZpZXIoKQpAQCAtNjM3LDYyICs2MTEsNjIgQEAgdm9pZCBVUkw6OnJl
bW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkKICAgICBtX3F1ZXJ5RW5kID0gbV9wYXRo
RW5kOwogfQogCi12b2lkIFVSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVyeSkKK3ZvaWQg
VVJMOjpzZXRRdWVyeShTdHJpbmdWaWV3IG5ld1F1ZXJ5KQogeworICAgIC8vIEZJWE1FOiBDb25z
aWRlciByZW5hbWluZyB0aGlzIGZ1bmN0aW9uIHRvIHNldEVuY29kZWRRdWVyeSBhbmQvb3IgY2Fs
bGluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyB0aGUgd2F5IHNldFBhdGggZG9lcy4KKyAgICAv
LyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKKwogICAgIGlmICghbV9pc1ZhbGlkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVy
cyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5
IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRv
bid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24u
Ci0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0Vt
cHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9w
YXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVl
cnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQor
ICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV9wYXRoRW5kKSwKKyAgICAgICAgKCFuZXdRdWVyeS5zdGFydHNXaXRoKCc/JykgJiYgIW5ld1F1
ZXJ5LmlzTnVsbCgpKSA/ICI/IiA6ICIiLAorICAgICAgICBuZXdRdWVyeSwKKyAgICAgICAgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpCisgICAgKSk7Cit9CiAKK3N0
YXRpYyBTdHJpbmcgZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKFN0cmluZ1ZpZXcgcGF0aCkKK3sK
KyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIp
IHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsK
KyAgICB9OworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXRoLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKTsKIH0KIAotdm9pZCBV
Ukw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBzKQordm9pZCBVUkw6OnNldFBhdGgoU3RyaW5nVmll
dyBwYXRoKQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
dHJpbmcgcGF0aCA9IHM7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8n
KQotICAgICAgICBwYXRoID0gIi8iICsgcGF0aDsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBhdGhTdGFydCgpKSwKKyAgICAgICAgcGF0
aC5zdGFydHNXaXRoKCcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAgZXNjYXBlUGF0aFdpdGhvdXRD
b3B5aW5nKHBhdGgpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9w
YXRoRW5kKQorICAgICkpOworfQogCi0gICAgYXV0byBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24g
PSBbXSAoVUNoYXIgY2hhcmFjdGVyKSB7Ci0gICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJz8n
IHx8IGNoYXJhY3RlciA9PSAnIyc7Ci0gICAgfTsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgp
LCBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24p
LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOwotICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOworU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhvdXRRdWVyeU9y
RnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAg
ICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQocGF0aEVuZCgpKTsKIH0KIAotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhv
dXRGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAogewotICAgIGlmIChhLm1fcXVlcnlFbmQgIT0g
Yi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVlcnlM
ZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5
TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0p
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFt
X2lzVmFsaWQpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fcXVlcnlFbmQpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdR
dWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorYm9vbCBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewot
ICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9
IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBhLnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIo
KSA9PSBiLnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKTsKIH0KIAogYm9vbCBwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBAIC03
MjUsMjUgKzY5OSwxMCBAQCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBob3N0c0Fy
ZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorYm9vbCBVUkw6OmlzTWF0Y2hpbmdE
b21haW4oU3RyaW5nVmlldyBkb21haW4pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgaG9zdFN0YXJ0
QSA9IGEuaG9zdFN0YXJ0KCk7Ci0gICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVu
ZCAtIGhvc3RTdGFydEE7Ci0gICAgdW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7
Ci0gICAgdW5zaWduZWQgaG9zdExlbmd0aEIgPSBiLm1faG9zdEVuZCAtIGhvc3RTdGFydEI7Ci0g
ICAgaWYgKGhvc3RMZW5ndGhBICE9IGhvc3RMZW5ndGhCKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgewotICAg
ICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3Rh
cnRCICsgaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19CisgICAgLy8gRklYTUU6IENvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGFuIGFwcHJv
cHJpYXRlIHBsYWNlIGluIFdlYkNvcmUncyBwbHVnLWluIGNvZGU7IGRvbid0IHdhbnQgcGVvcGxl
IHRlbXB0ZWQgdG8gdXNlIHRoaXMgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbi4KIAotYm9vbCBV
Ukw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17CiAgICAg
aWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc2MCw2ICs3MTksNyBA
QCBib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QK
ICAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0
Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOwogfQogCisvLyBGSVhNRTog
UmVuYW1lIHRoaXMgc28gaXQncyBjbGVhciB0aGF0IGl0IGRvZXMgdGhlIGFwcHJvcHJpYXRlIGVz
Y2FwaW5nIGZvciBVUkwgcXVlcnkgZmllbGQgdmFsdWVzLgogU3RyaW5nIGVuY29kZVdpdGhVUkxF
c2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICByZXR1cm4gcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnMoaW5wdXQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0
KTsKQEAgLTc4MSw0MSArNzQxLDM0IEBAIHZvaWQgVVJMOjpjb3B5VG9CdWZmZXIoVmVjdG9yPGNo
YXIsIDUxMj4mIGJ1ZmZlcikgY29uc3QKICAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5k
YXRhKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KLWJvb2wgcHJvdG9j
b2xJc0ludGVybmFsKGNvbnN0IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29s
KQorc3RhdGljIGJvb2wgcHJvdG9jb2xJc0ludGVybmFsKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKIHsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1h
a2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmlu
Z1ZpZXcgeyBwcm90b2NvbCB9KTsKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7
CiAgICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGog
PSAwOyB1cmxbaV07ICsraSkgewotICAgICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBh
bmQgY29udHJvbCBjaGFyYWN0ZXJzLgotICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRy
aW1Gcm9tVVJMKHVybFtpXSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaXNMZWFk
aW5nID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCi0g
ICAgICAgIGlmICh1cmxbaV0gPT0gJ1x0JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0g
J1xuJykKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGZvciAoYXV0byBjb2RlVW5pdCA6IHN0
cmluZy5jb2RlVW5pdHMoKSkgeworICAgICAgICBpZiAoaXNMZWFkaW5nKSB7CisgICAgICAgICAg
ICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAg
ICAgICAgICAgaWYgKHNob3VsZFRyaW1Gcm9tVVJMKGNvZGVVbml0KSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gU2tpcCB0YWJzIGFuZCBuZXdsaW5lcyBldmVuIGxhdGVyIGlu
IHRoZSBwcm90b2NvbC4KKyAgICAgICAgICAgIGlmIChjb2RlVW5pdCA9PSAnXHQnIHx8IGNvZGVV
bml0ID09ICdccicgfHwgY29kZVVuaXQgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmICghcHJvdG9jb2xbal0pCi0gICAgICAgICAgICBy
ZXR1cm4gdXJsW2ldID09ICc6JzsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0Vx
dWFsKHVybFtpXSwgcHJvdG9jb2xbal0pKQorICAgICAgICBjaGFyIGV4cGVjdGVkQ2hhcmFjdGVy
ID0gKnByb3RvY29sKys7CisgICAgICAgIGlmICghZXhwZWN0ZWRDaGFyYWN0ZXIpCisgICAgICAg
ICAgICByZXR1cm4gY29kZVVuaXQgPT0gJzonOworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwoY29kZVVuaXQsIGV4cGVjdGVkQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICArK2o7CiAgICAgfQotICAgIAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBw
cm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wp
OwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IGNoYXIqIHByb3RvY29sKQorYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcgc3RyaW5n
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsKLSAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW50
ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChz
dHJpbmcsIHByb3RvY29sKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTgyOSwxMSArNzgyLDE4
IEBAIHZvaWQgVVJMOjpwcmludCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNl
QXNSZWZlcnJlcigpIGNvbnN0CiB7Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAgICByZWZl
cnJlci5zZXRVc2VyKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsK
LSAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gcmVm
ZXJyZXIuc3RyaW5nKCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBtX3N0
cmluZzsKKworICAgIHVuc2lnbmVkIGVuZCA9IGNyZWRlbnRpYWxzRW5kKCk7CisKKyAgICBpZiAo
bV91c2VyU3RhcnQgPT0gZW5kICYmIG1fcXVlcnlFbmQgPT0gbV9zdHJpbmcubGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAg
ICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kIC0gZW5kKQor
ICAgICk7CiB9CiAKIGJvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CkBAIC04NDUsMTcgKzgw
NSwxMiBAQCBib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAogICAgIHJldHVybiBwcm90b2Nv
bElzKCJmaWxlIik7CiB9CiAKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5n
JiB1cmwpCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgc3RyaW5nKQogewot
ICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworICAgIHJl
dHVybiBwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCAiamF2YXNjcmlwdCIpOwogfQogCi1ib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQotewotICAgIHJldHVybiBwcm90
b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoU3RyaW5nVmlldyB1cmwpCiB7CiAgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CiAg
ICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVj
dC4KQEAgLTg2OSwxMyArODI0LDEzIEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25z
dCBTdHJpbmcmIHVybCkKIAogY29uc3QgVVJMJiBhYm91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNCbGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5r
Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCks
ICJhYm91dDpibGFuayJfcyk7CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCiBjb25z
dCBVUkwmIGFib3V0U3JjRG9jVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
PiBzdGF0aWNBYm91dFNyY0RvY1VSTChVUkwoKSwgImFib3V0OnNyY2RvYyIpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6
c3JjZG9jIl9zKTsKICAgICByZXR1cm4gc3RhdGljQWJvdXRTcmNEb2NVUkw7CiB9CiAKQEAgLTk2
NCw3ICs5MTksNiBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA2
NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgNjY3OSwgLy8g
QWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQogICAgICAgICA2Njk3LCAvLyBJUkMr
U1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQg
dG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCiAgICAgfTsKIAogICAgIC8vIElmIHRo
ZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgpAQCAtOTgz
LDE1ICs5MzcsMTUgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYg
dXJsKQorU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKQogewot
ICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKKyAgICBBU1NFUlQo
cHJvdG9jb2xJc0ludGVybmFsKGRhdGFVUkwsICJkYXRhIikpOwogCiAgICAgLy8gRklYTUU6IFdo
YXQncyB0aGUgcmlnaHQgYmVoYXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBi
dXQgYSBzZW1pY29sb24gbGF0ZXI/Ci0gICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJy
ZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVj
dC4KLSAgICBhdXRvIGluZGV4ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICAvLyBDdXJyZW50bHkg
dGhpcyBjb2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2U7IHNob3Vs
ZCBhZGQgYSB0ZXN0LgorICAgIGF1dG8gaW5kZXggPSBkYXRhVVJMLmZpbmQoJzsnLCA1KTsKICAg
ICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywnLCA1
KTsKKyAgICAgICAgaW5kZXggPSBkYXRhVVJMLmZpbmQoJywnLCA1KTsKICAgICBpZiAoaW5kZXgg
PT0gbm90Rm91bmQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVu
dCBoZXJlIHRoYXQgbWFkZSBpdCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0
ZXh0L3BsYWluLgogICAgICAgICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBz
dHJpbmcgaGVyZSBmb3Igc29tZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0
IHRoaXMgdGltZS4KQEAgLTEwMDAsMjUgKzk1NCw0NSBAQCBTdHJpbmcgbWltZVR5cGVGcm9tRGF0
YVVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoaW5kZXggPT0gNSkKICAgICAgICAgcmV0
dXJuICJ0ZXh0L3BsYWluIl9zOwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4g
dXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cisg
ICAgcmV0dXJuIGRhdGFVUkwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKIH0KIAogU3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKLSAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkg
PD0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RyaW5nKCk7CisgICAgaWYgKG1fc3RyaW5nLmxl
bmd0aCgpIDw9IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChsZW5ndGggLyAyIC0gMSksICIu
Li4iLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5yaWdodChsZW5ndGggLyAyIC0gMikpOworfQorCitV
UkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkK
K3sKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJ3ZWJraXQtZmFrZS11cmw6Ly8i
LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICcvJywgcmVsYXRpdmVQYXJ0KSk7Cit9CiAK
LSAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmlu
ZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgoU3RyaW5nVmlldyBwYXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJp
bmcoCisgICAgICAgICJmaWxlOi8vIiwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykgPyAi
IiA6ICIvIiwKKyAgICAgICAgZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpCisgICAgKSk7
CiB9CiAKLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVQYXJ0KQorU3RyaW5nVmlldyBVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmso
KSBjb25zdAogewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKKyAgICBp
ZiAobV9xdWVyeUVuZCA8PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCwgbV9xdWVyeUVu
ZCAtIG1fcGF0aEVuZCk7CiB9CiAKLVVSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZp
ZXJXaXRoTGVhZGluZ051bWJlclNpZ24oKSBjb25zdAogewotICAgIHJldHVybiBVUkwoVVJMKCks
ICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgbV9zdHJpbmcu
bGVuZ3RoKCkgPD0gbV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVy
biBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCk7CiB9CiAKIGJvb2wg
VVJMOjppc0Fib3V0QmxhbmsoKSBjb25zdApAQCAtMTAzOCw2ICsxMDEyLDcgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKKwogc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVz
cyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBhdXRvIGNvdW50ID0gMDsKQEAgLTExMjQsMTEg
KzEwOTksOSBAQCBzdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQog
CiBib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKIHsKLSAgICBpZiAo
aG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNz
KGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7CisgICAgcmV0dXJuIGhv
c3QuY29udGFpbnMoJzonKSA/IGlzSVB2NkFkZHJlc3MoaG9zdCkgOiBpc0lQdjRBZGRyZXNzKGhv
c3QpOwogfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCmluZGV4IDk1YWY0YTNiNDdl
MDg4N2Y1YTJhZWEwMWExMTM3OWJiYmQxMWM2ZmYuLjQyZWMxZmI5ZWMzN2ViODMxM2Q2OTMwMTk1
N2E0NTE5MDYxMGIzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDQ3ICszOCwzOSBAQCBPQkpDX0NMQVNTIE5TVVJMOwogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXVEYgeworCiBjbGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBVUkxUZXh0RW5jb2Rp
bmcgewogcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBh
cnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGlu
ZygpIHsgfTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH0K
IH07CiAKLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHsK
K2NsYXNzIFVSTCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Ly8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCiAgICAgVVJM
KCkgeyBpbnZhbGlkYXRlKCk7IH0KIAotICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsg
fQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJp
bmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgZXhwbGljaXQgVVJMKEhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpOworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAK
ICAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJM
LiBJZiBwcm92aWRlZCwgdGhlCiAgICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5j
b2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAvLyBudWxs
IG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnBy
ZXRlZCBhcwotICAgIC8vIGFic29sdXRlLgotICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwg
aXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCi0gICAgLy8gVVJMLiBJ
bnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJh
c2UgVVJMcwotICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFz
ZSBVUkxzLgotICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUs
IGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKyAgICAvLyBudWxsIG9yIGVtcHR5
LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBh
YnNvbHV0ZS4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwog
Ci0gICAgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsK
LSAgICBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBh
cnQoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVUkwgZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KTsKIAotICAgIFN0cmluZyBzdHJpcHBlZEZv
clVzZUFzUmVmZXJyZXIoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rp
b25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBv
ZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQot
ICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwogCiAgICAgLy8gTWFr
ZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24g
YW5vdGhlcgogICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBv
YmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKICAgICAvLyBubyBvdGhlciByZWFzb24gdG8g
ZXZlciBwcmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAg
ICBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCBp
c29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7CkBAIC04OSwxMjIgKzgxLDEyNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQog
CiAgICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2Fs
KCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYg
c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIHN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgg
PSAxMDI0KSBjb25zdDsKIAotICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7Ci0KLSAgICBTdHJpbmdWaWV3IHByb3Rv
Y29sKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsK
LSAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyB1c2Vy
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBhc3MoKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IHBhdGgo
KSBjb25zdDsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKLSAgICBTdHJp
bmcgcXVlcnkoKSBjb25zdDsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICAvLyBVbmxpa2Ug
dXNlcigpIGFuZCBwYXNzd29yZCgpLCBlbmNvZGVkVXNlcigpIGFuZCBlbmNvZGVkUGFzc3dvcmQo
KSBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2Fy
eSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBl
bmNvZGUgJyUnIGNoYXJhY3RlcnMuCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmll
dyBwcm90b2NvbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVu
Y29kZWRVc2VyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5j
b2RlZFBhc3N3b3JkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcg
aG9zdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4g
cG9ydCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHBhdGgoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBsYXN0UGF0aENvbXBvbmVu
dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHF1ZXJ5KCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeVdpdGhM
ZWFkaW5nUXVlc3Rpb25NYXJrKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
Z1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRGcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVz
ZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhc3N3b3JkKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKSBj
b25zdDsKIAotICAgIGJvb2wgaGFzVXNlcm5hbWUoKSBjb25zdDsKLSAgICBib29sIGhhc1Bhc3N3
b3JkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNRdWVyeSgpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJh
Z21lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Owog
ICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwogCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFz
cygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAg
Ly8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNl
IGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyBlbmNv
ZGVkVXNlcigpIGNvbnN0OwotICAgIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAg
U3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwotCi0gICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
KCkgY29uc3Q7CisgICAgYm9vbCBoYXNDcmVkZW50aWFscygpIGNvbnN0OwogCiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRo
ZSBudWxsLQogICAgIC8vIHRlcm1pbmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBt
dXN0IGJlIGxvd2VyLWNhc2UuCi0gICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25z
dDsKLSAgICBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29s
IHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CiAg
ICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEi
KTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0Fib3V0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHJvdG9jb2xJc0Fib3V0KCkgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBj
YW5ub3RCZUFCYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CiAK
LSAgICBib29sIGlzQWJvdXRCbGFuaygpIGNvbnN0OwotICAgIGJvb2wgaXNBYm91dFNyY0RvYygp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzQWJvdXRCbGFuaygpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsKIAot
ICAgIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc01hdGNoaW5nRG9tYWluKFN0cmluZ1ZpZXcpIGNvbnN0Owog
Ci0gICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEhvc3Qo
Y29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0UHJvdG9jb2wo
U3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdChTdHJpbmdW
aWV3KTsKIAotICAgIHZvaWQgcmVtb3ZlUG9ydCgpOwotICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25l
ZCBzaG9ydCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1
aW50MTZfdD4pOwogCiAgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206
ODAwMCIuCi0gICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IHJlbW92ZUhvc3RBbmRQb3J0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9z
dEFuZFBvcnQoU3RyaW5nVmlldyk7CiAKLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7
Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldFVzZXIoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0UGFzc3dvcmQoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVt
b3ZlQ3JlZGVudGlhbHMoKTsKIAotICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9y
IEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoCi0gICAgLy8gd2lsbCBiZSAi
LyIuCi0gICAgdm9pZCBzZXRQYXRoKGNvbnN0IFN0cmluZyYpOworICAgIC8vIElmIHlvdSBwYXNz
IGFuIGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRo
IHdpbGwgYmUgIi8iLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBhdGgoU3RyaW5n
Vmlldyk7CiAKICAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJr
LCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAogICAgIC8vIGZvciB5b3UuIFNldHRpbmcg
dGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKICAg
ICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFz
cyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UXVlcnkoU3RyaW5nVmlldyk7CiAKLSAgICB2b2lk
IHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICB2b2lkIHJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEZyYWdtZW50
SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAotICAgIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVu
dElkZW50aWZpZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVRdWVyeUFu
ZEZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNz
KFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBob3N0SXNJ
UEFkZHJlc3MoU3RyaW5nVmlldyk7CiAKICAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsK
ICAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFz
dFNsYXNoKCkgY29uc3Q7CiAKLSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gc3RyaW5nKCk7IH0KKyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBvcGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmc7IH0KIAogI2lmIFVTRShDRikKLSAgICBVUkwoQ0ZVUkxSZWYpOwotICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgVVJMKENGVVJMUmVmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENG
VVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBVU0UoRk9VTkRBVElP
TikKLSAgICBVUkwoTlNVUkwqKTsKLSAgICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgVVJMKE5TVVJMICopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBv
cGVyYXRvciBOU1VSTCAqKCkgY29uc3Q7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JKQ19fCi0gICAg
b3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKyAgICBvcGVy
YXRvciBOU1N0cmluZyAqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICNlbmRpZgogCiAj
aWZuZGVmIE5ERUJVRwogICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdGVt
cGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgVVJMJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFVSTCYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxVUkw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFVS
TFBhcnNlcjsKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2Nv
bElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwg
NTEyPiYgYnVmZmVyKSBjb25zdDsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjcmVkZW50aWFsc0VuZCgpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlKHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKICAgICBmcmllbmQgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOwotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0
c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5n
OwogCkBAIC0yMjksNDkgKzIyNSwyNyBAQCBwcml2YXRlOgogCiBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hv
dWxkIHN0YXkgc21hbGwiKTsKIAotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmlu
ZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRl
Y29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKLSAgICBk
ZWNvZGVyID4+IHN0cmluZzsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKLX0KK2Jv
b2wgb3BlcmF0b3I9PShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3I9PShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
K2Jvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAog
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRCbGFua1VSTCgpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRv
IGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCiAvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0
aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFsc28gZGlm
ZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUg
dGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCi0vLyBUaGlzIGlzIGVz
cGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3Qg
bmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwuCisvLyBUaGVzZSBhcmUgYWxzbyBk
aWZmZXJlbnQgZnJvbSB0aGUgV1RGOjpVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCBy
ZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgorLy8gVGhp
cyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBh
cmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgV1RGOjpVUkwuCiAKLVdURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNo
YXIqIHByb3RvY29sKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXMoU3RyaW5nVmlldyB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdW
aWV3IHVybCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3
IHByb3RvY29sKTsKQEAgLTI4MCwxNCArMjU0LDQwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQK
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZv
clRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJp
bmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJp
bmdWaWV3IGRhdGFVUkwpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJv
bURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25n
IGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJl
bnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCisvLyBGSVhNRTogVGhpcyBuZWVkcyBh
IG5ldywgbW9yZSBzcGVjaWZpYyBuYW1lLiBUaGUgZ2VuZXJhbCB0aGluZyBuYW1lZCBoZXJlIGNh
bid0IGJlIGltcGxlbWVudGVkIGNvcnJlY3RseSwgc2luY2UgZGlmZmVyZW50IHBhcnRzIG9mIGEg
VVJMIG5lZWQgZGlmZmVyZW50IGVzY2FwaW5nLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBl
bmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogCi0vLyBJbmxpbmVz
LgorV1RGX0VYUE9SVF9QUklWQVRFIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IFVSTCYpOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwordGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxVUkw+OworCisvLyBGdW5jdGlvbiB0ZW1wbGF0ZSBh
bmQgaW5saW5lIGZ1bmN0aW9uIGRlZmluaXRpb25zLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPiB2b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBtX3N0cmluZzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gYm9vbCBV
Ukw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIG9wdGlv
bmFsVVJMID0gZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4g
VVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHN0
cmluZzsKKyAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJp
bmcpKTsKK30KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVS
TCYgYikKIHsKQEAgLTMxOSw4ICszMTksMTAgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKICAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwog
fQogCi0vLyBJbmxpbmUgdmVyc2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBz
byB3ZSBjYW4gZ2V0IGlubGluaW5nCi0vLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9m
IHVnbHkgaWZkZWZzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgoraW5saW5lIFVSTDo6VVJMKEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgOiBtX3N0cmluZyhIYXNoVGFibGVEZWxldGVk
VmFsdWUpCit7Cit9CiAKIGlubGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKIHsKQEAgLTMz
OSwxNyArMzQxLDEyIEBAIGlubGluZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0CiAKIGlubGlu
ZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBt
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CisgICAgcmV0dXJuIG1fcGF0aEVuZCA+IHBhdGhTdGFy
dCgpOwogfQogCi1pbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKK2lubGluZSBi
b29sIFVSTDo6aGFzQ3JlZGVudGlhbHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZXJFbmQg
PiBtX3VzZXJTdGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7CisgICAgcmV0
dXJuIG1fcGFzc3dvcmRFbmQgPiBtX3VzZXJTdGFydDsKIH0KIAogaW5saW5lIGJvb2wgVVJMOjpo
YXNRdWVyeSgpIGNvbnN0CkBAIC0zNTcsNyArMzU0LDcgQEAgaW5saW5lIGJvb2wgVVJMOjpoYXNR
dWVyeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhFbmQ7CiB9CiAKLWlu
bGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnQoKSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNG
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9z
dHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kOwogfQpAQCAtMzgyLDExICszNzksNiBAQCBpbmxp
bmUgdW5zaWduZWQgVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAogICAgIHJldHVybiBt
X3BhdGhBZnRlckxhc3RTbGFzaDsKIH0KIAotV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8VVJMPjsKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YWJvdXRCbGFua1VS
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAppbmRleCAwNmIwYWVjNjRkMTAyNWQ1NDNmZjlk
YzNkNmExYTdkMmU2MTBjODU0Li5mYTA4YzlmODgzNjU5MmI2YWMwNTNjNzNmYTg2N2U1ZTAxYmFi
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wg
aXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYgY2ZVUkwsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKIAotICAgIGlmICh1cmwuaGFz
VXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dvcmQoKSkKKyAgICBpZiAodXJsLmhhc0NyZWRlbnRp
YWxzKCkpCiAgICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBV
UkwgeyBjZlVSTCB9KTsKIAogICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcAppbmRleCBkMTNiYjZjOTFmOWViY2EzMzBkZTUxZGQwNWMyN2UwNTk2YWNh
MmRiLi4yOWI0ODg1MDE2YmQyODdkMWNmZTk0MmM2NTQ4ZTU2NWJmODgzMGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNl
IFdURiB7CkBAIC03NCw2ICs3NSwxMSBAQCBib29sIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJu
IDo6V1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIHByZWZpeCk7CiB9CiAK
K2Jvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAoreworICAg
IHJldHVybiBtX2xlbmd0aCAmJiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOwor
fQorCiBib29sIFN0cmluZ1ZpZXc6OmVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZpeCkg
Y29uc3QKIHsKICAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRoKCp0aGlzLCBzdWZmaXgpOwpAQCAt
MzA2LDYgKzMxMiwzMSBAQCBTdHJpbmcgbm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICByZXR1cm4gcmVzdWx0LnVuZGVybHlpbmdTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBT
aG91bGQgdGhpcyBiZSBuYW1lZCBwYXJzZU51bWJlcjx1aW50MTZfdD4gaW5zdGVhZD8KKy8vIEZJ
WE1FOiBTaG91bGQgd2UgcmVwbGFjZSB0aGUgdG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aXRo
IHRoaXMgc3R5bGU/CitPcHRpb25hbDx1aW50MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyBz
dHJpbmcpCit7CisgICAgYm9vbCBvayA9IGZhbHNlOworICAgIGF1dG8gbnVtYmVyID0gdG9JbnRl
Z3JhbFR5cGU8dWludDE2X3Q+KHN0cmluZywgJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBudW1iZXI7Cit9CisKK2Jvb2wgZXF1YWxJ
Z25vcmluZ051bGxpdHkoU3RyaW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpCit7CisgICAgLy8gRklY
TUU6IFRoZSBlcXVhbChTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KSBmdW5jdGlvbiBhbHJlYWR5IGln
bm9yZXMgbnVsbGl0eS4KKyAgICAvLyBUbyBmaXQgaW4gd2l0aCB0aGUgYmVoYXZpb3Igb2Ygb3Vy
IG90aGVyIHN0cmluZyBjbGFzc2VzLCB3ZSBzaG91bGQgY29uc2lkZXIKKyAgICAvLyBjaGFuZ2lu
ZyB0aGF0IGJlaGF2aW9yIHNvIHRoYXQgYSBudWxsIFN0cmluZ1ZpZXcgaXMgbm90IGVxdWFsIHRv
IGFuIGVtcHR5CisgICAgLy8gU3RyaW5nVmlldywgYnV0IG5lZWQgdG8gdGVzdCBvciBhdWRpdCBp
biBjYXNlIGNvZGUgZGVwZW5kcyBvbiBjdXJyZW50IGJlaGF2aW9yLgorICAgIHJldHVybiBlcXVh
bChhLCBiKTsKK30KKworYm9vbCBTdHJpbmdWaWV3Ojpjb250YWlucyhjb25zdCBjaGFyKiBzdHJp
bmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsKK30KKwog
I2lmIENIRUNLX1NUUklOR1ZJRVdfTElGRVRJTUUKIAogLy8gTWFuYWdlIHJlZmVyZW5jZSBjb3Vu
dCBtYW51YWxseSBzbyBVbmRlcmx5aW5nU3RyaW5nIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVmaW5l
ZCBpbiB0aGUgaGVhZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA2Y2ZlYmRiYWI3
ZWE0NThlMWQ5NjgwZDEzMTYxOTE0OGYyMTc5ZjAzLi40NmFmNTJmNTBiZWQxY2M5YzhiMmNhNDU1
NmQxZDUwZjY5ODY3MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTM3LDggKzEz
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9
IDApIGNvbnN0OwogICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWdu
ZWQgc3RhcnQgPSAwKSBjb25zdDsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAK
ICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKIApAQCAtMTUxLDYgKzE1MCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zKFVDaGFyKSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zKENvZGVVbml0TWF0Y2hGdW5jdGlvbikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhTdHJp
bmdWaWV3IHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcsIDApICE9IG5vdEZvdW5k
OyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNv
bnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0OwpAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNX
aXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIApA
QCAtMTkxLDYgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5n
KGNvbnN0IFN0cmluZ0ltcGwqKSB7IH0KICAgICB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29u
c3QgU3RyaW5nVmlldyYpIHsgfQogI2VuZGlmCisKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBj
b25zdCB2b2lkKiBtX2NoYXJhY3RlcnMgeyBudWxscHRyIH07CkBAIC0yMTAsNiArMjEyLDggQEAg
Ym9vbCBlcXVhbChTdHJpbmdWaWV3LCBjb25zdCBMQ2hhciogYik7CiBib29sIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CiBib29sIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nVmlldywgY29uc3QgY2hhciopOwogCitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKKwogdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIHRl
bXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhd
KTsKIApAQCAtMjM0LDYgKzIzOCw4IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0
aFVuZGVybHlpbmdTdHJpbmcgbm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCitXVEZfRVhQ
T1JUX1BSSVZBVEUgT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOwor
CiB9CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKaW5kZXggZjEyYWQzNmQxOWU3ZmQ1NGI1Y2NhMTI2ZjcyNWQwMDA2NDM4NDVmZS4u
YWZjOTJmNTc3NjY2MjI5MmYwY2UwNjQ2MjRlNjhmMzg0NjcyMjVkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcApAQCAtOTI0LDEwMiArOTI0LDEwMiBAQCBzdGF0aWMgdW5zaWduZWQgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVf
dCBsZQogCiBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnQgY2hhcmFj
dGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgVUNoYXI+KGRh
dGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRh
dGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3Ry
aWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2Up
CiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVu
Z3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmlj
dChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCwgVUNoYXI+KGRhdGEsIGxlbmd0
aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwg
bGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3Qo
Y29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5n
dGgsIG9rLCBiYXNlKTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25z
dCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3Qg
TENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3Qg
VUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3Qg
TENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3Qg
VUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBi
YXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwg
b2ssIGJhc2UpOwogfQogCiBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IExDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50
LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxl
bmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsK
IH0KIAogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgVUNoYXI+KGRh
dGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwor
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJz
VG9VSW50KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0
dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVuc2lnbmVkIGNoYXJh
Y3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCwgVUNoYXI+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVy
c0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50NjRfdCBj
aGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFj
dGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50NjRf
dCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9v
bCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3QsIFVDaGFyPihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIExDaGFy
PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCks
IG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9
CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90
LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0
YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywg
MTApOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxp
bnRwdHJfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4o
ZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRy
X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3Ro
KSwgb2ssIDEwKTsKIH0KIAogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50cHRyX3QsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8
VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEs
IGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGVudW0gVHJhaWxpbmdKdW5rUG9saWN5IHsgRGlzYWxs
b3dUcmFpbGluZ0p1bmssIEFsbG93VHJhaWxpbmdKdW5rIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IGIwZGI1N2E4MzcwY2UwMzAy
ODY0ZmUwODJiNDNhMjRlYjI4YjlkZjkuLjc4MmIyNjJmNDg3NDE5MzgyYTc0NTAxMDMyM2UzMzUy
MmE3NTY1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCkBAIC03MiwxMCArNzIsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hVUkxz
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiBjYWNoZWRVUgogICAg
IFVSTCBjYWNoZWRSZXF1ZXN0VVJMID0gY2FjaGVkVVJMOwogCiAgICAgaWYgKG9wdGlvbnMuaWdu
b3JlU2VhcmNoKSB7Ci0gICAgICAgIGlmIChyZXF1ZXN0VVJMLmhhc1F1ZXJ5KCkpCi0gICAgICAg
ICAgICByZXF1ZXN0VVJMLnNldFF1ZXJ5KHsgfSk7Ci0gICAgICAgIGlmIChjYWNoZWRSZXF1ZXN0
VVJMLmhhc1F1ZXJ5KCkpCi0gICAgICAgICAgICBjYWNoZWRSZXF1ZXN0VVJMLnNldFF1ZXJ5KHsg
fSk7CisgICAgICAgIHJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICAgICAgY2FjaGVkUmVx
dWVzdFVSTC5zZXRRdWVyeSh7IH0pOwogICAgIH0KICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihyZXF1ZXN0VVJMLCBjYWNoZWRSZXF1ZXN0VVJMKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAzYTU1MjE4
ZmZiZDcwYTBmMTE1NjYxNjBhZjkzOTBlYmJkMTkxZDczLi5kZmI3MzNlOTMwMGRhMmFlMWU2OTVl
NDEyYzk3MzIwMDhhYzZlMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCkBAIC0xNjAsOSArMTYwLDEwIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8RXhjZXB0aW9uPiBwcm9jZXNzSW52YWxpZFNpZ25hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjCiBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKGNvbnN0
IFN0cmluZyYgdXJsLCBJbml0JiYgaW5pdCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKLSAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3Jp
dGhtIGFjY29yZGluZyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBh
cnNlci4KKworICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdvcml0aG0g
YWNjb3JkaW5nIHRvIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtcGFy
c2VyLgogICAgIFVSTCByZXF1ZXN0VVJMID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21w
bGV0ZVVSTCh1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OkZvcmNlVVRGODo6WWVzKTsKLSAg
ICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgpIHx8ICFyZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5
KCkgfHwgIXJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIXJlcXVlc3RVUkwu
aXNWYWxpZCgpIHx8IHJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVSTCBpcyBub3QgdmFsaWQgb3IgY29udGFpbnMgdXNl
ciBjcmVkZW50aWFscy4iX3MgfTsKIAogICAgIG1fb3B0aW9ucy5tb2RlID0gTW9kZTo6Q29yczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4
IDYwOWFhOGEyODhmZjM1ODE5ZTY3M2NmNTY3ZGNiNTIwYzYzYWI0ODkuLjA1ZjQ5Zjg4OTM2ZTA4
YmRlMDViZTRlYjY2ZmE5YzE1ODhmY2JjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYKICAgICBVUkwgcmVxdWVzdFVSTCA9IGNvbnRleHQuY29tcGxldGVVUkwodXJs
KTsKICAgICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJSZWRpcmVjdGlvbiBVUkwgJyIsIHJlcXVlc3RV
Ukwuc3RyaW5nKCksICInIGlzIGludmFsaWQiKSB9OwotICAgIGlmICghcmVxdWVzdFVSTC51c2Vy
KCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpCisgICAgaWYgKHJl
cXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgIlJlZGlyZWN0aW9uIFVSTCBjb250YWlucyBjcmVkZW50aWFscyJfcyB9OwogICAg
IGlmICghUmVzb3VyY2VSZXNwb25zZTo6aXNSZWRpcmVjdGlvblN0YXR1c0NvZGUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsIG1ha2VTdHJpbmcoIlN0YXR1
cyBjb2RlICIsIHN0YXR1cywgImlzIG5vdCBhIHJlZGlyZWN0aW9uIHN0YXR1cyBjb2RlIikgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdC5jcHAKaW5kZXggY2FhZGY4N2IwYjU3M2UzMTJlOWUzZTAzOWQ2ZGM2YTg4ZmM1
OWNjYS4uZTcxMzViZWM2MDNmOWI1M2E5ZDIyYTQ0M2FmMzU4MjBmMWNhY2I5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5jcHAKQEAgLTIyMCwxMyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFN0YW5kYXJk
aXplZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKIC8vIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LW1ldGhvZC1pZC8jdmFsaWRhdGlvbgogc3RhdGlj
IGJvb2wgaXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZpZXIoY29uc3QgVVJMJiB1
cmwpCiB7Ci0gICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCF1cmwudXNlcigpLmlzRW1wdHkoKSB8fCAhdXJsLnBhc3MoKS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSAmJiAhdXJsLmhhc0NyZWRlbnRpYWxzKCk7
CiB9CiAKIC8vIEltcGxlbWVudHMgInZhbGlkYXRlIGEgcGF5bWVudCBtZXRob2QgaWRlbnRpZmll
ciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggNGU3YTAyNWU0NzY5NDkwMTE1ZWVmNDllZWMw
YTdhZmRlMWVjM2I1My4uYWI0ZDVmYmMxMWY5MmQ5YWFlNjdhOGE0ZDg4ZmIyZWNhZWRjZWJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTEwMywxOSArMTAzLDE0IEBAIGJvb2wgWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLXN0YXRpYyBpbmxpbmUgVVJMIGNyZWF0ZVlvdVR1
YmVVUkwoY29uc3QgU3RyaW5nJiB2aWRlb0lELCBjb25zdCBTdHJpbmcmIHRpbWVJRCkKK3N0YXRp
YyBVUkwgY3JlYXRlWW91VHViZVVSTChTdHJpbmdWaWV3IHZpZGVvSUQsIFN0cmluZ1ZpZXcgdGlt
ZUlEKQogewogICAgIEFTU0VSVCghdmlkZW9JRC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCh2aWRl
b0lEICE9ICIvIik7Ci0gICAgCi0gICAgVVJMIHJlc3VsdChVUkwoKSwgInlvdXR1YmU6IiArIHZp
ZGVvSUQpOwotICAgIGlmICghdGltZUlELmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LnNldFF1
ZXJ5KCJ0PSIgKyB0aW1lSUQpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IFVSTChVUkwoKSwgbWFrZVN0cmluZygieW91dHViZToiLCB2aWRlb0lELCB0aW1lSUQuaXNFbXB0
eSgpID8gIiIgOiAidD0iLCB0aW1lSUQpKTsKIH0KLSAgICAKLXN0YXRpYyBZb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0FuZFZhbHVlcyhjb25zdCBTdHJpbmcm
IHF1ZXJ5U3RyaW5nKQorCitzdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1
ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoU3RyaW5nVmlldyBxdWVyeVN0cmluZykKIHsKICAgICBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5RGljdGlvbmFyeTsKICAg
ICAKQEAgLTE1NSw3ICsxNTAsNyBAQCBzdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpL
ZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5nJiBxdQogICAgICAgICAv
LyBTYXZlIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZS4KICAgICAgICAgaWYgKGtleUxlbmd0aCAmJiB2
YWx1ZUxlbmd0aCkgewogICAgICAgICAgICAgU3RyaW5nIGtleSA9IHF1ZXJ5U3RyaW5nLnN1YnN0
cmluZyhrZXlMb2NhdGlvbiwga2V5TGVuZ3RoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwot
ICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKHZhbHVlTG9j
YXRpb24sIHZhbHVlTGVuZ3RoKTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHF1ZXJ5U3Ry
aW5nLnN1YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCkudG9TdHJpbmcoKTsKICAg
ICAgICAgICAgIHZhbHVlLnJlcGxhY2UoJysnLCAnICcpOwogCiAgICAgICAgICAgICBpZiAoIWtl
eS5pc0VtcHR5KCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTIwOSwxNiArMjA0LDE2IEBAIHN0
YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wm
IGlzWW91VHViZVNob3J0ZW5lZFVSCiAKICAgICAvLyBTaG9ydCBVUkwgb2YgdGhlIGZvcm06IGh0
dHA6Ly95b3V0dS5iZS92MWQzMDFECiAgICAgaWYgKGlzWW91VHViZVNob3J0ZW5lZFVSTCkgewot
ICAgICAgICBTdHJpbmcgdmlkZW9JRCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAg
ICBhdXRvIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKHZp
ZGVvSUQuaXNFbXB0eSgpIHx8IHZpZGVvSUQgPT0gIi8iKQogICAgICAgICAgICAgcmV0dXJuIFVS
TCgpOwotICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCBlbXB0eVN0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgeyB9KTsKICAg
ICB9Ci0gICAgCisKICAgICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOwotICAgIFN0cmluZyBxdWVy
eSA9IHVybC5xdWVyeSgpOwotICAgIFN0cmluZyBmcmFnbWVudCA9IHVybC5mcmFnbWVudElkZW50
aWZpZXIoKTsKLSAgICAKKyAgICBhdXRvIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CisgICAgYXV0byBm
cmFnbWVudCA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKwogICAgIC8vIE9uIHRoZSBZb3VU
dWJlIG1vYmlsZSB3ZWIgYXBwLCB0aGUgcGF0aCBhbmQgcXVlcnkgc3RyaW5nIGFyZSBwdXQgaW50
byB0aGUKICAgICAvLyBmcmFnbWVudCBzbyB0aGF0IG9uZSB3ZWIgcGFnZSBpcyBvbmx5IGV2ZXIg
bG9hZGVkIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzk1NTA2Mzk+KS4KICAgICBpZiAoaXNZb3VUdWJl
TW9iaWxlV2ViQXBwVVJMKSB7CkBAIC0yMjcsNyArMjIyLDcgQEAgc3RhdGljIFVSTCBwcm9jZXNz
QW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRl
bmVkVVIKICAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudDsKICAgICAgICAgICAgIHF1ZXJ5ID0g
ZW1wdHlTdHJpbmcoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBTdHJp
bmdWaWV3KGZyYWdtZW50KS5zdWJzdHJpbmcoMCwgbG9jYXRpb24pOworICAgICAgICAgICAgcGF0
aCA9IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CiAgICAgICAgICAgICBxdWVyeSA9
IGZyYWdtZW50LnN1YnN0cmluZyhsb2NhdGlvbiArIDEpOwogICAgICAgICB9CiAgICAgICAgIGZy
YWdtZW50ID0gZW1wdHlTdHJpbmcoKTsKQEAgLTI2MCwxMCArMjU1LDEwIEBAIHN0YXRpYyBVUkwg
cHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHVi
ZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi92LyIpIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi9lLyIpKSB7Ci0gICAgICAgIFN0cmlu
ZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgICAgICBT
dHJpbmcgdmlkZW9JRDsKLSAgICAgICAgU3RyaW5nIHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwor
ICAgICAgICBTdHJpbmdWaWV3IHZpZGVvSUQ7CisgICAgICAgIFN0cmluZ1ZpZXcgcGF0aEFmdGVy
Rmlyc3RBbXBlcnNhbmQ7CiAKKyAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5s
YXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24gPSBs
YXN0UGF0aENvbXBvbmVudC5maW5kKCcmJyk7CiAgICAgICAgIGlmIChhbXBlcnNhbmRMb2NhdGlv
biAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJvdXQg
dXNlICYgaW4gcGxhY2Ugb2YgPyBmb3IgdGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KQEAgLTI3
MywxMSArMjY4LDExIEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29u
c3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICB2aWRl
b0lEID0gbGFzdFBhdGhDb21wb25lbnQ7CiAKICAgICAgICAgaWYgKCF2aWRlb0lELmlzRW1wdHko
KSkgewotICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJG
aXJzdEFtcGVyc2FuZDsKKyAgICAgICAgICAgIG91dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0g
cGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICB9CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIFVSTCgpOwogfQogCkBAIC0yOTAsMTMgKzI4NSwxMyBAQCBT
dHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYg
c3JjU3RyaW5nKQogU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZy
b21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBzcmNTdHJpbmcp
CiB7CiAgICAgYm9vbCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPSBmYWxzZTsKLSAgICBTdHJpbmcg
cG9zc2libGVNYWxmb3JtZWRRdWVyeTsKLSAgICBVUkwgeW91VHViZVVSTCA9IHByb2Nlc3NBbmRD
cmVhdGVZb3VUdWJlVVJMKHNyY1VSTCwgaXNZb3VUdWJlU2hvcnRlbmVkVVJMLCBwb3NzaWJsZU1h
bGZvcm1lZFF1ZXJ5KTsKKyAgICBTdHJpbmcgcG9zc2libHlNYWxmb3JtZWRRdWVyeTsKKyAgICBV
UkwgeW91VHViZVVSTCA9IHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKHNyY1VSTCwgaXNZb3VU
dWJlU2hvcnRlbmVkVVJMLCBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5KTsKICAgICBpZiAoc3JjVVJM
LmlzRW1wdHkoKSB8fCB5b3VUdWJlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHNyY1N0
cmluZzsKIAogICAgIC8vIFRyYW5zZm9ybSB0aGUgeW91dHViZVVSTCAoeW91dHViZTpWaWRlb0lE
KSB0byBpZnJhbWUgZW1iZWQgdXJsIHdoaWNoIGhhcyB0aGUgZm9ybWF0OiBodHRwOi8vd3d3Lnlv
dXR1YmUuY29tL2VtYmVkL1ZpZGVvSUQKLSAgICBhdXRvIHNyY1BhdGggPSBzcmNVUkwucGF0aCgp
LnRvU3RyaW5nKCk7CisgICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgoKTsKICAgICBjb25z
dCBTdHJpbmcmIHZpZGVvSUQgPSB5b3VUdWJlVVJMLnN0cmluZygpLnN1YnN0cmluZyh5b3VUdWJl
VVJMLnByb3RvY29sKCkubGVuZ3RoKCkgKyAxKTsKICAgICBzaXplX3QgbG9jYXRpb25PZlZpZGVv
SURJblBhdGggPSBzcmNQYXRoLmZpbmQodmlkZW9JRCk7CiAKQEAgLTMwNSw3ICszMDAsNyBAQCBT
dHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJM
KGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogICAgICAgICBBU1NFUlQobG9jYXRpb25PZlZpZGVvSURJ
blBhdGgpOwogICAgIAogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQg
dG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRlb0lkLgotICAgICAgICBsb2NhdGlvbk9m
UGF0aEJlZm9yZVZpZGVvSUQgPSBzcmNTdHJpbmcuZmluZChzcmNQYXRoLnN1YnN0cmluZygwLCBs
b2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOworICAgICAgICBsb2NhdGlvbk9mUGF0aEJlZm9yZVZp
ZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQYXRoLnN1YnN0cmluZygwLCBs
b2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIpKSB7CiAgICAgICAgIC8vIEZyb20gdGhl
IG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC93YXRjaC8jIXY9
VmlkZW9JRAogICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgQVNDSUkgY2FzZS1p
bnNlbnNpdGl2ZT8KQEAgLTMxNSwyMiArMzEwLDIxIEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNv
CiAKICAgICBBU1NFUlQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEICE9IG5vdEZvdW5kKTsK
IAotICAgIGNvbnN0IFN0cmluZyYgc3JjVVJMUHJlZml4ID0gc3JjU3RyaW5nLnN1YnN0cmluZygw
LCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOwotICAgIFN0cmluZyBxdWVyeSA9IHNyY1VS
TC5xdWVyeSgpOworICAgIGF1dG8gc3JjVVJMUHJlZml4ID0gU3RyaW5nVmlldyhzcmNTdHJpbmcp
LnN1YnN0cmluZygwLCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOworICAgIGF1dG8gcXVl
cnkgPSBzcmNVUkwucXVlcnkoKTsKKwogICAgIC8vIElmIHRoZSBVUkwgaGFzIG5vIHF1ZXJ5LCB1
c2UgdGhlIHBvc3NpYmx5IG1hbGZvcm1lZCBxdWVyeSB3ZSBmb3VuZC4KICAgICBpZiAocXVlcnku
aXNFbXB0eSgpKQotICAgICAgICBxdWVyeSA9IHBvc3NpYmxlTWFsZm9ybWVkUXVlcnk7CisgICAg
ICAgIHF1ZXJ5ID0gcG9zc2libHlNYWxmb3JtZWRRdWVyeTsKIAogICAgIC8vIEFwcGVuZCB0aGUg
cXVlcnkgc3RyaW5nIGlmIGl0IGlzIHZhbGlkLgotICAgIFN0cmluZ0J1aWxkZXIgZmluYWxVUkw7
Ci0gICAgaWYgKGlzWW91VHViZVNob3J0ZW5lZFVSTCkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5k
TGl0ZXJhbCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbSIpOwotICAgIGVsc2UKLSAgICAgICAgZmlu
YWxVUkwuYXBwZW5kKHNyY1VSTFByZWZpeCk7Ci0gICAgZmluYWxVUkwuYXBwZW5kKCIvZW1iZWQv
IiwgdmlkZW9JRCk7Ci0gICAgaWYgKCFxdWVyeS5pc0VtcHR5KCkpCi0gICAgICAgIGZpbmFsVVJM
LmFwcGVuZCgnPycsIHF1ZXJ5KTsKLSAgICByZXR1cm4gZmluYWxVUkwudG9TdHJpbmcoKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID8gImh0
dHA6Ly93d3cueW91dHViZS5jb20iIDogc3JjVVJMUHJlZml4LAorICAgICAgICAiL2VtYmVkLyIs
CisgICAgICAgIHZpZGVvSUQsCisgICAgICAgIHF1ZXJ5LmlzRW1wdHkoKSA/ICIiIDogIj8iLAor
ICAgICAgICBxdWVyeQorICAgICk7CiB9CiAgICAgCiBib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudDo6c3VwcG9ydHNVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDk5
MjZjZWY5NjcxNTUzNjcyZjIzNzk5YmYyZmViZmI1ZWQxOTBmNzcuLmUyMzc0OTcxODYzZjFkYTcw
ZDdlOWY5Yzk5NjlkZDZjMDY0ZjUxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC02NCwxNSArNjQs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIHJlc291cmNlTmFtZShj
b25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG5hbWU7Ci0gICAgbmFtZS5hcHBl
bmQodXJsLnBhdGgoKSk7Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICBuYW1lLmFw
cGVuZCgnLycpOwotICAgIGlmICghdXJsLnF1ZXJ5KCkuaXNOdWxsKCkpIHsKLSAgICAgICAgbmFt
ZS5hcHBlbmQoJz8nKTsKLSAgICAgICAgbmFtZS5hcHBlbmQodXJsLnF1ZXJ5KCkpOwotICAgIH0K
LSAgICBTdHJpbmcgcmVzdWx0ID0gbmFtZS50b1N0cmluZygpOworICAgIGF1dG8gcGF0aCA9IHVy
bC5wYXRoKCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlU3RyaW5nKAorICAgICAgICBwYXRoLAor
ICAgICAgICBwYXRoLmlzRW1wdHkoKSA/ICIvIiA6ICIiLAorICAgICAgICB1cmwucXVlcnlXaXRo
TGVhZGluZ1F1ZXN0aW9uTWFyaygpCisgICAgKTsKICAgICBBU1NFUlQoIXJlc3VsdC5pc0VtcHR5
KCkpOwogICAgIEFTU0VSVCghcmVzdWx0LmNvbnRhaW5zKCcgJykpOwogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzNWE2NmJlNTU1YTYzYjQwOGU2ZDhiNWJmYjJj
OWQ3MjlhMjRhNDJiLi5jZjZkYzVkYWFlZjM2ODljOWY2OTk1NzM0YWQ4OTE2MTA0ZWJlMzBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTk0NCwyNiArOTQ0LDI3IEBAIEludFBvaW50IEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsaWNrUG9pbnQoKQogICAgIAogQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCgpIGNv
bnN0CiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGFuY2hvckVsZW1lbnQoKTsKKyAgICBhdXRv
IGVsZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisKICAgICAvLyBSaWdodCBub3csIHdlIGRvIG5v
dCBzdXBwb3J0IEFSSUEgbGlua3MgYXMgaW50ZXJuYWwgbGluayBlbGVtZW50cwogICAgIGlmICgh
aXM8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBIVE1MQW5jaG9yRWxlbWVudCYgYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1l
bnQ+KCplbGVtZW50KTsKLSAgICAKLSAgICBVUkwgbGlua1VSTCA9IGFuY2hvci5ocmVmKCk7Ci0g
ICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IGxpbmtVUkwuZnJhZ21lbnRJZGVudGlmaWVy
KCk7CisgICAgYXV0byYgYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVt
ZW50KTsKKworICAgIGF1dG8gbGlua1VSTCA9IGFuY2hvci5ocmVmKCk7CisgICAgYXV0byBmcmFn
bWVudElkZW50aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChm
cmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAKKwogICAgIC8vIGNoZWNrIGlmIFVSTCBpcyB0aGUgc2FtZSBhcyBjdXJyZW50IFVSTAotICAg
IFVSTCBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CisgICAgYXV0
byBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CiAgICAgaWYgKCFl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGRvY3VtZW50VVJMLCBsaW5rVVJMKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgTm9kZSogbGlua2VkTm9kZSA9IG1fcmVu
ZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIpOworCisgICAg
YXV0byBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5maW5kQW5jaG9yKGZyYWdt
ZW50SWRlbnRpZmllci50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgIGlmICghbGlua2Vk
Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAvLyBUaGUgZWxlbWVu
dCB3ZSBmaW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSwgc28gZmluZCB0aGUgZmlyc3QgYWNjZXNz
aWJsZSBvYmplY3QuCiAgICAgcmV0dXJuIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGxp
bmtlZE5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTk3MmFlZDkwOWUwOTdh
NjViN2VhMWU0YjVmOTNhYmE2OGU5NGUxZS4uZTQ0NTRlNmQ1Yjc1ZWYwMjE4YmYwMmM5NzJmMTM1
ZGNkYjNiZjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMjUxLDcgKzMyNTEsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3VybCA9IG5l
d1VSTDsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZElnbm9yZUhvc3QobV91cmwpKQot
ICAgICAgICBtX3VybC5yZW1vdmVIb3N0QW5kUG9ydCgpOworICAgICAgICBtX3VybC5zZXRIb3N0
QW5kUG9ydCh7IH0pOwogCiAgICAgbV9kb2N1bWVudFVSSSA9IG1fdXJsLnN0cmluZygpOwogICAg
IHVwZGF0ZUJhc2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlZDM1ZmNkYzZmNDYy
MDRjZGFiNzNmNjM0YmY5ZTA1MGUxMWNkNDY3Li4xZmYyM2UxNjBiOTE4YWIxY2RjNTBlOGMzZjc2
MWM4ZDFjYTQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NDkxLDcgKzQ0OTEsNyBA
QCBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBvdXRB
bmNob3JOYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICh1cmwuaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmws
IGRvY3VtZW50LmJhc2VVUkwoKSkpIHsKLSAgICAgICAgb3V0QW5jaG9yTmFtZSA9IHVybC5mcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgb3V0QW5jaG9yTmFtZSA9IHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKS50b1N0cmluZygpOwogICAgICAgICByZXR1cm4gZG9jdW1lbnQuZmluZEFuY2hv
cihvdXRBbmNob3JOYW1lKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXgg
MWRhYTg1ODhkZjUzOTBhZjgxMzFlMGRhZjA5N2E4OWZiNTc3YTU5MS4uMzBlZDlmM2Y2MWY0MDNk
YmI5NGU4ZTNlMmY3OWZmODk3ZTE3MmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAg
LTQ0MCw2ICs0NDAsOCBAQCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVsZW1l
bnRzRnJvbVBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHApCiAgICAgcmV0dXJuIGVsZW1lbnRzRnJv
bVBvaW50KHAueCgpLCBwLnkoKSk7CiB9CiAKKy8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIGNo
YW5nZSB0aGlzIHRvIHRha2UgYSBTdHJpbmdWaWV3LCBzaW5jZSB0aGF0J3Mgd2hhdCBjYWxsZXJz
IGhhdmUKKy8vIGFuZCB0aGVyZSBpcyBubyBwYXJ0aWN1bGFyIGFkdmFudGFnZSB0byBhbHJlYWR5
IGhhdmluZyBhIFN0cmluZy4KIEVsZW1lbnQqIFRyZWVTY29wZTo6ZmluZEFuY2hvcihjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAw
YzlmOWQwZTg5MDM5NzAwMzEwOTBkYjJiOGYzMGRkZGM0MmU5ZGQ0Li5mYTYxYzVjNjE5ZTA3NGEx
YTc1NTU3NzViNWZmNWNmOWMxYzE5NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMzI4LDEzICszMjgsMTMg
QEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBm
cmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291cmNlID09IHVybFRv
UmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
YWx0QXR0cik7CisgICAgICAgIFN0cmluZyBuYW1lID0gaW1hZ2UuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOwogICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxh
c3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VV
UkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IEF0b21TdHJpbmcoIm1lZGlhIik7Cisg
ICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvLmFwcGVuZCh7IG5hbWUsIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9u
SW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCks
IHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVu
dCkpIHsKQEAgLTM0OCwxMSArMzQ4LDExIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAg
ICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJp
bmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIFN0cmluZyBuYW1lID0gVVJMKHsgfSwg
cmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IEF0b21TdHJpbmcoImZp
bGUiKTsKKyAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50
SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCks
IHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYyYTJkNTJhYzVhYmY0ZTRmMTMxMTNj
YTI1ZDFiMjBhMTczOGZhNjkuLmI3ZDI5Y2Q0YmFkOTUwZDNhYmQ3ZGY3OWU5MGY1MzQ2NGMzNjg4
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTIwMiw3ICsy
MDIsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBw
YXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnVybCA9IHBhc3RlYm9hcmRJbWFnZVVSTDsKICAgICAgICAgcGFzdGVib2FyZEltYWdlLnVy
bC50aXRsZSA9IHRpdGxlOwogICAgIH0KLSAgICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFt
ZSA9IGltYWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgcGFzdGVib2FyZElt
YWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgpLnRv
U3RyaW5nKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7
CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJlc291
cmNlTUlNRVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAgICAgcGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4
IDNhMTFkOTIwYjA3ODBlZGNkNzY0YjE5YTA0YzNhZmUwOWU5MjZjYjMuLjkwMjEwZjU1YjE3MmEy
MGFiNmY1N2EyNDI1MTczNGExMDY2OGUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTE3NywyMiArMTc3LDE3IEBAIFN0cmluZyBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRUaXRsZSgpIGNvbnN0CiBTdHJpbmcgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVGb3JEaXNwbGF5KCkgY29uc3QKIHsKICAg
ICBhdXRvIHRpdGxlID0gYXR0YWNobWVudFRpdGxlKCk7Ci0KICAgICBhdXRvIGluZGV4T2ZMYXN0
RG90ID0gdGl0bGUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXhPZkxhc3REb3QgPT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybiB0aXRsZTsKIAotICAgIFN0cmluZyBuYW1lID0gdGl0
bGUubGVmdChpbmRleE9mTGFzdERvdCk7Ci0gICAgU3RyaW5nIGV4dGVuc2lvbiA9IHRpdGxlLnN1
YnN0cmluZyhpbmRleE9mTGFzdERvdCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgYnVpbGRlci5hcHBlbmQobGVmdFRvUmlnaHRNYXJrKTsKLSAgICBidWlsZGVyLmFwcGVuZChm
aXJzdFN0cm9uZ0lzb2xhdGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKHBvcERpcmVjdGlvbmFsSXNvbGF0ZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoZXh0
ZW5zaW9uKTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoCisgICAgICAgIGxlZnRUb1JpZ2h0TWFyaywKKyAgICAgICAgZmlyc3RTdHJvbmdJ
c29sYXRlLAorICAgICAgICBTdHJpbmdWaWV3KHRpdGxlKS5sZWZ0KGluZGV4T2ZMYXN0RG90KSwK
KyAgICAgICAgcG9wRGlyZWN0aW9uYWxJc29sYXRlLAorICAgICAgICBTdHJpbmdWaWV3KHRpdGxl
KS5zdWJzdHJpbmcoaW5kZXhPZkxhc3REb3QpCisgICAgKTsKIH0KIAogU3RyaW5nIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6YXR0YWNobWVudFR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCAwM2Q5MDViYmEzNzkxMjdkN2Y5NDE4OTJmNzk3
NjVhN2VmOTNjMWI5Li42YmZlNzA3NGE5NTFhZDdhY2NlOTkzODQwMDY2YzhkYjc0ZDE2MTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMzU3LDE0ICsz
NTcsMTQgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2luKiBwbHVnaW5SZXBsYWNlbWVudEZvclR5
cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBTdHJpbmcgZXh0ZW5zaW9uOwotICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1
cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICBzaXplX3QgZG90T2Zmc2V0ID0gbGFzdFBhdGhD
b21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoZG90T2Zmc2V0ICE9IG5vdEZvdW5k
KQotICAgICAgICBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoZG90T2Zm
c2V0ICsgMSk7CisgICAgICAgIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmlu
Zyhkb3RPZmZzZXQgKyAxKS50b1N0cmluZygpOwogCiAgICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlw
ZTsKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAg
ICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybC5zdHJpbmcoKSk7CisgICAgICAgIHR5
cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybCk7CiAgICAgCiAgICAgaWYgKHR5cGUuaXNFbXB0
eSgpICYmICFleHRlbnNpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVwbGFj
ZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuY3BwCmluZGV4IGU3YTUxNmViYTIyODQ5ZmNkMzczNDY1OTM5NGI3YzQ5
ZTdmOTdjZTEuLjViODQ1NDFlYTBkY2Y1MjI0MjgyYzMxY2Y3NGJiNDZlYTI1NTJkM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAtOTgs
OSArOTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6ZW5kVGltZSgpCiAK
IHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMoKQogewotICAgIGlm
ICghbV91cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBT
dHJpbmcgZnJhZ21lbnRTdHJpbmcgPSBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBh
dXRvIGZyYWdtZW50U3RyaW5nID0gbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgaWYg
KGZyYWdtZW50U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFV0aWxzLmgKaW5kZXggYjcwZTVkY2JlODI3NTgxMDBiMDcyZDJmNGYwZjBlNDY4MGMwMTA5Ny4u
MzkwYjk4ZDViZmU0NDY1OTRmN2Y5M2IxNTYyN2Y3ZDgzZGViZDQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOSw4ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBVUkxVdGlscyB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBVUkxVdGlscyB7CiBwdWJsaWM6CiAgICAgVVJMIGhyZWYoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBUKj4odGhpcyktPmhyZWYoKTsgfQogICAgIHZvaWQgc2V0SHJlZihjb25z
dCBTdHJpbmcmIHVybCkgeyBzdGF0aWNfY2FzdDxUKj4odGhpcyktPnNldEhyZWYodXJsKTsgfQpA
QCAtNDEsMzEgKzQwLDMxIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAK
ICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKLSAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc2V0UHJvdG9jb2woU3RyaW5nVmlldyk7CiAKICAgICBTdHJp
bmcgdXNlcm5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgc2V0VXNlcm5hbWUoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgcGFzc3dv
cmQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgc2V0UGFzc3dvcmQoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoU3RyaW5n
Vmlldyk7CiAKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3Ru
YW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SG9zdG5hbWUoU3RyaW5nVmlldyk7CiAK
ICAgICBTdHJpbmcgcG9ydCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldFBvcnQoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgcGF0aG5hbWUo
KSBjb25zdDsKLSAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
c2V0UGF0aG5hbWUoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgaGFzaCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhhc2go
U3RyaW5nVmlldyk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTk1LDggKzk0LDcg
QEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojpwcm90b2NvbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoaHJlZigpLnByb3RvY29sKCksICc6Jyk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotdm9pZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldFByb3RvY29sKFN0cmluZ1Zp
ZXcgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICB1cmwuc2V0UHJvdG9jb2wo
dmFsdWUpOwpAQCAtMTA2LDExICsxMDQsMTAgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVS
TFV0aWxzPFQ+Ojp1c2VybmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVk
VXNlcigpOworICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFVzZXIoKS50b1N0cmluZygpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldFVzZXJuYW1lKGNv
bnN0IFN0cmluZyYgdXNlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46
OnNldFVzZXJuYW1lKFN0cmluZ1ZpZXcgdXNlcikKIHsKICAgICBVUkwgdXJsID0gaHJlZigpOwog
ICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQpAQCAtMTIyLDE2ICsxMTksMTUgQEAgdm9p
ZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB1c2VyKQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzKCk7CisgICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVk
UGFzc3dvcmQoKS50b1N0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQg
VVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzcykKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKFN0cmluZ1ZpZXcgcGFzc3dv
cmQpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VV
UkwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHVybC5zZXRQYXNzKHBhc3MpOworICAgIHVybC5z
ZXRQYXNzd29yZChwYXNzd29yZCk7CiAgICAgc2V0SHJlZih1cmwpOwogfQogCkBAIC0xNDEsMTcg
KzEzNywxNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46Omhvc3QoKSBjb25zdAogICAgIHJldHVybiBo
cmVmKCkuaG9zdEFuZFBvcnQoKTsKIH0KIAotLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhbGxv
dyBsZWFkaW5nIHNwYWNlcyBiZWZvcmUgdGhlIHBvcnQgbnVtYmVyLgotc3RhdGljIGlubGluZSB1
bnNpZ25lZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24oY29uc3QgU3RyaW5nJiB2YWx1ZSwg
dW5zaWduZWQgcG9ydFN0YXJ0LCB1bnNpZ25lZCYgcG9ydEVuZCkKK3N0YXRpYyBpbmxpbmUgdW5z
aWduZWQgY291bnRBU0NJSURpZ2l0cyhTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBwb3J0RW5k
ID0gcG9ydFN0YXJ0OwotICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodmFsdWVbcG9ydEVuZF0pKQot
ICAgICAgICArK3BvcnRFbmQ7Ci0gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZyhwb3J0U3RhcnQs
IHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBsZW5n
dGg7ICsrY291bnQpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3RyaW5nW2NvdW50XSkp
CisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChjb25z
dCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6
c2V0SG9zdChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE2OCwxOCArMTY0LDE5IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNl
dEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBpZiAoc2VwYXJhdG9yID09IG5vdEZvdW5k
KQogICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOwogICAgIGVsc2UgewotICAgICAg
ICB1bnNpZ25lZCBwb3J0RW5kOwotICAgICAgICB1bnNpZ25lZCBwb3J0ID0gcGFyc2VQb3J0RnJv
bVN0cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0b3IgKyAxLCBwb3J0RW5kKTsKLSAgICAgICAg
aWYgKCFwb3J0KSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjb3VudEFTQ0lJRGln
aXRzKHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxKSk7CisgICAgICAgIGlmICghcG9ydExl
bmd0aCkgewogICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9pbmZy
YXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9uLWlkbC1hdHRyaWJ1dGVzCiAgICAgICAg
ICAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChwMy4yKSBhbmQKICAg
ICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNl
dCB0byBlbXB0eSBzdHJpbmcuCi0gICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNlZW1zIGxpa2Ugc29tZXRoaW5nIHRoYXQgaGFzIHNpbmNlIGJlZW4gY2hhbmdlZCBh
bmQgdGhpcyBydWxlIGFuZCBjb2RlIG1heSBiZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgIHVybC5z
ZXRIb3N0QW5kUG9ydChtYWtlU3RyaW5nKHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAx
KSwgJzAnKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjppc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgYXV0
byBwb3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEs
IHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChwb3J0TnVtYmVyICYmIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCB1cmwucHJvdG9jb2woKSkpCiAgICAgICAg
ICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3Ip
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQo
dmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAgICAgICAgICAgICAgICB1cmwuc2V0SG9z
dEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEgKyBwb3J0TGVuZ3RoKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwpAQCAtMTkxLDE3
ICsxODgsMTQgQEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojpob3N0bmFtZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGhyZWYoKS5ob3N0KCkudG9TdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdG5hbWUoU3RyaW5nVmll
dyB2YWx1ZSkKIHsKICAgICAvLyBCZWZvcmUgc2V0dGluZyBuZXcgdmFsdWU6CiAgICAgLy8gUmVt
b3ZlIGFsbCBsZWFkaW5nIFUrMDAyRiBTT0xJRFVTICgiLyIpIGNoYXJhY3RlcnMuCiAgICAgdW5z
aWduZWQgaSA9IDA7Ci0gICAgdW5zaWduZWQgaG9zdExlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwog
ICAgIHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCiAgICAgICAgIGkrKzsKLQotICAgIGlmIChpID09
IGhvc3RMZW5ndGgpCisgICAgaWYgKGkgPT0gdmFsdWUubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFVSTCB1cmwgPSBocmVmKCk7CkBAIC0yMjMsMjEgKzIxNywyMiBAQCBTdHJpbmcg
VVJMVXRpbHM8VD46OnBvcnQoKSBjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNl
dFBvcnQoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIGlm
ICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgaWYgKHVy
bC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgdXJsLnByb3RvY29sSXMoImZpbGUiKSB8fCAhdXJsLmNh
blNldEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzdWNjZXNzID0g
dHJ1ZTsKLSAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCZzdWNjZXNzKTsKLSAgICBp
ZiAoIXN1Y2Nlc3MgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnBy
b3RvY29sKCkpKQotICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwotICAgIGVsc2UKLSAgICAgICAg
dXJsLnNldFBvcnQocG9ydCk7CisgICAgYXV0byBkaWdpdHNPbmx5ID0gdmFsdWUubGVmdChjb3Vu
dEFTQ0lJRGlnaXRzKHZhbHVlKSk7CisgICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CisgICAg
aWYgKCFkaWdpdHNPbmx5LmlzRW1wdHkoKSkgeworICAgICAgICBwb3J0ID0gcGFyc2VVSW50MTYo
ZGlnaXRzT25seSk7CisgICAgICAgIGlmICghcG9ydCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCB1cmwucHJvdG9j
b2woKSkpCisgICAgICAgICAgICBwb3J0ID0gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICB1cmwu
c2V0UG9ydChwb3J0KTsKIAogICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKIH0KQEAgLTI0OCw4
ICsyNDMsNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46OnBhdGhuYW1lKCkgY29uc3QKICAgICByZXR1
cm4gaHJlZigpLnBhdGgoKS50b1N0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZShTdHJpbmdWaWV3
IHZhbHVlKQogewogICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKHVybC5jYW5ub3RCZUFC
YXNlVVJMKCkpCkBAIC0yNTcsMTAgKzI1MSwxMCBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRo
bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2YWx1ZVswVV0gPT0gJy8nKQorICAgIGlmICh2
YWx1ZS5zdGFydHNXaXRoKCcvJykpCiAgICAgICAgIHVybC5zZXRQYXRoKHZhbHVlKTsKICAgICBl
bHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiArIHZhbHVlKTsKKyAgICAgICAgdXJsLnNldFBh
dGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7CiAKICAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7
CiB9CkBAIC0yNjgsOCArMjYyLDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxz
PFQ+OjpzZWFyY2goKSBjb25zdAogewotICAgIFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgp
OwotICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgcXVl
cnk7CisgICAgcmV0dXJuIGhyZWYoKS5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkg
OiBocmVmKCkucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMjgwLDcgKzI3Myw3IEBAIHZvaWQgVVJMVXRpbHM8
VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAvLyBJZiB0aGUgZ2l2
ZW4gdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgc2V0IHVybCdzIHF1ZXJ5IHRvIG51bGwuCiAg
ICAgICAgIHVybC5zZXRRdWVyeSh7IH0pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBu
ZXdTZWFyY2ggPSAodmFsdWVbMFVdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1
ZTsKKyAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9IHZhbHVlLnN0YXJ0c1dpdGgoJz8nKSA/IHZh
bHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOwogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycg
aW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhlIGhhc2guCiAgICAgICAgIHVybC5zZXRR
dWVyeShuZXdTZWFyY2gucmVwbGFjZVdpdGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKICAgICB9CkBA
IC0yOTEsMTcgKzI4NCwxNCBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRTZWFyY2goY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojpo
YXNoKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gaHJlZigpLmZy
YWdtZW50SWRlbnRpZmllcigpOwotICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gQXRvbVN0cmluZyhT
dHJpbmcoIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgLy8gRklYTUU6IFdoeSBjb252
ZXJ0IHRoaXMgc3RyaW5nIHRvIGFuIGF0b20gaGVyZSBpbnN0ZWFkIG9mIGp1c3QgYSBzdHJpbmc/
IEludGVudGlvbmFsbHkgdG8gc2F2ZSBtZW1vcnk/IEFuIGVycm9yPworICAgIHJldHVybiBocmVm
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlBdG9tKCkgOiBocmVmKCku
ZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9BdG9tU3RyaW5nKCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0SGFzaChj
b25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxU
Pjo6c2V0SGFzaChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0g
ICAgU3RyaW5nIG5ld0ZyYWdtZW50ID0gdmFsdWVbMFVdID09ICcjJyA/IHZhbHVlLnN1YnN0cmlu
ZygxKSA6IHZhbHVlOworICAgIGF1dG8gbmV3RnJhZ21lbnQgPSB2YWx1ZS5zdGFydHNXaXRoKCcj
JykgPyBTdHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJpbmcoMSkgOiBTdHJpbmdWaWV3KHZhbHVlKTsK
ICAgICBpZiAobmV3RnJhZ21lbnQuaXNFbXB0eSgpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmNwcAppbmRleCA2MzNlNzc1YTU0NTQ0ZmNmZDY2ODdhYmJlY2Y5YWQ4Njg5
YTZkZDJmLi43NmQ0YWZiOTVmZjRiNDZkYzAyYWNjZTA3ZGY0YWVjOWM1NGJmMTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcApAQCAtNTMsNyArNTMs
NyBAQCBib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aXNWYWxpZCgpIGNvbnN0CiAKIEV4cGVjdGVk
PEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbiwgU3RyaW5nPiBBZENsaWNrQXR0cmlidXRp
b246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKLSAg
ICBpZiAoIXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIl9zKSB8fCByZWRpcmVjdFVSTC5o
YXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0VVJMLmhhc1Bhc3N3b3JkKCkgfHwgcmVkaXJlY3RVUkwu
aGFzUXVlcnkoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudCgpKSB7CisgICAgaWYgKCFyZWRp
cmVjdFVSTC5wcm90b2NvbElzKCJodHRwcyIpIHx8IHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxz
KCkgfHwgcmVkaXJlY3RVUkwuaGFzUXVlcnkoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhBZENsaWNrQXR0cmlidXRpb24sICJDb252
ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90
IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3
b3JkLCBxdWVyeSBzdHJpbmcsIGFuZCBmcmFnbWVudC4iKTsKICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiW0FkIENsaWNrIEF0dHJpYnV0aW9uXSBDb252ZXJzaW9uIHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBV
UkwgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBxdWVyeSBzdHJp
bmcsIGFuZCBmcmFnbWVudC4iX3MpOwpAQCAtMTg5LDE3ICsxODksMTIgQEAgVVJMIEFkQ2xpY2tB
dHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyhjb25zdCBVUkwmIGJhc2VVUkwpIGNvbnN0CiAgICAg
YXV0byBob3N0ID0gbV9zb3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCk7CiAgICAgaWYg
KGhvc3QgIT0gImxvY2FsaG9zdCIgJiYgaG9zdCAhPSAiMTI3LjAuMC4xIikKICAgICAgICAgcmV0
dXJuIFVSTCgpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiP2NvbnZlcnNpb249Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9j
b252ZXJzaW9uLnZhbHVlKCkuZGF0YSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCImY2Ft
cGFpZ249Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jYW1wYWlnbi5pZCk7Ci0gICAg
aWYgKGJhc2VVUkwuaGFzUXVlcnkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnJicpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChiYXNlVVJMLnF1ZXJ5KCkpOwotICAgIH0KLSAgICByZXR1
cm4gVVJMKGJhc2VVUkwsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgU3RyaW5nIHJlbGF0aXZl
VVJMOworICAgIGlmICghYmFzZVVSTC5oYXNRdWVyeSgpKQorICAgICAgICByZWxhdGl2ZVVSTCA9
IG1ha2VTdHJpbmcoIj9jb252ZXJzaW9uPSIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICIm
Y2FtcGFpZ249IiwgbV9jYW1wYWlnbi5pZCk7CisgICAgZWxzZQorICAgICAgICByZWxhdGl2ZVVS
TCA9IG1ha2VTdHJpbmcoIj9jb252ZXJzaW9uPSIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEs
ICImY2FtcGFpZ249IiwgbV9jYW1wYWlnbi5pZCwgJyYnLCBiYXNlVVJMLnF1ZXJ5KCkpOworICAg
IHJldHVybiBVUkwoYmFzZVVSTCwgcmVsYXRpdmVVUkwpOwogfQogCiB2b2lkIEFkQ2xpY2tBdHRy
aWJ1dGlvbjo6bWFya0NvbnZlcnNpb25Bc1NlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCA4MjkwNjI4YzRlZDQ1ZTA1
MzFjNDc5NmZhMjZhZDVhYzRhMWQ2MzM4Li5lMDUzYzliMDNmMDQ2NTBkZWY1NWJlY2Q1OGQxYzYz
NjljNjMwYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIFN0cmluZyB2YWxpZGF0ZUNyb3Nz
T3JpZ2luUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKICAgICBpZiAoIUxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQocmVk
aXJlY3RVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygibm90IGFsbG93ZWQgdG8gZm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENP
UlMgcmVkaXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hlbWUiKTsKIAotICAgIGlmIChyZWRpcmVj
dFVSTC5oYXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0VVJMLmhhc1Bhc3N3b3JkKCkpCisgICAgaWYg
KHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCJyZWRpcmVjdGlvbiBVUkwgIiwgcmVkaXJlY3RVUkwuc3RyaW5nKCksICIgaGFzIGNyZWRlbnRp
YWxzIik7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyMTc3ZjRiNmRiNmIxOTVjYTlkZjgy
NzliNWFmN2JiMTU2ZjViNTBhLi5kZjNkMDhjNzRmZWJjMWI1NGUyNDRlNjNmYzQ5NmZlNjMwYzQz
MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNTMyLDggKzUzMiw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAg
ICAgLy8gQW55IGNyZWRlbnRpYWwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNy
b3NzLXNpdGUgcmVxdWVzdHMuCiAgICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51
cmwoKTsKICAgICBtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9IHNlY3VyaXR5Q2hlY2s7Ci0gICAg
QVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgp
KTsKLSAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5p
c0VtcHR5KCkpOworICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8ICFyZXF1ZXN0VVJM
Lmhhc0NyZWRlbnRpYWxzKCkpOwogCiAgICAgaWYgKCFtX3JlZmVycmVyLmlzTnVsbCgpKQogICAg
ICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtX3JlZmVycmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDNhYWE4ZWVkOGMzMzdlNzlkOTg4OGE0NTVm
MzlmZjNmZWU0YjVhMzYuLjMwYWY5MDA4MDQ5YThlMzk4MmY5YzliZjQ5ZGFlYmZjOTJlYTY4MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtNzgsMTEgKzc4
LDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVSTCYgdXJs
LCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAgICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29k
ZVN0cmluZ0FzRm9ybURhdGEoYm9keURhdGEsIGJvZHkudXRmOCgpKTsKICAgICBib2R5ID0gU3Ry
aW5nKGJvZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6ZSgpKS5yZXBsYWNlV2l0aExpdGVyYWwo
JysnLCAiJTIwIik7CiAKLSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAgICBhdXRv
IHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKICAgICAgICAg
dXJsLnNldFF1ZXJ5KGJvZHkpOwogICAgIGVsc2UKLSAgICAgICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5
ICsgJyYnICsgYm9keSk7CisgICAgICAgIHVybC5zZXRRdWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAn
JicsIGJvZHkpKTsKIH0KIAogdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VB
Y3Rpb24oY29uc3QgU3RyaW5nJiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCAzMjNkYjQ2MzYw
Mjk4YjhhOTFiYjAwYTQ3OTI0YmIyZTgxMTFmMzM4Li40ODgyZDc3ZTEyNzE2OTg1YzQ2NDUxZGYw
ZWM3NDBhNzkzOTNjNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI0NiwxNSArMjQ2LDEyIEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3Vy
Y2VMb2FkZXIqIHJlc291cmNlTG9hCiAKIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRl
RmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBqdXN0
IHVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoIGluc3RlYWQ/CiAjaWYgVVNFKENGKSAmJiBQ
TEFURk9STShXSU4pCi0gICAgVVJMIHVybChhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhT
dHlsZSwgZmFsc2UpKS5nZXQoKSk7CisgICAgLy8gRklYTUU6IElzIHRoaXMgY29ycmVjdD8gU2Vl
bXMgaW1wcm9iYWJsZSB0aGF0IHRoZSBwYXNzZWQtaW4gcGF0aHMgd291bGQgYmUgaW4gdGhlIFdp
bmRvd3MgcGF0aCBzdHlsZS4KKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGUsIGZhbHNlKSkuZ2V0KCk7CiAjZWxzZQotICAgIFVSTCB1cmw7Ci0gICAgdXJsLnNl
dFByb3RvY29sKCJmaWxlIl9zKTsKLSAgICB1cmwuc2V0UGF0aChwYXRoKTsKKyAgICByZXR1cm4g
VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKHBhdGgpOwogI2VuZGlmCi0gICAgcmV0dXJu
IHVybDsKIH0KIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9t
UmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGZhYWU1
MWY5OWY2MmIyZjI5ZDVjYmI4YWVjZmNlYjE2YWRjMmViNTQuLjczNGRhNzY2MmQ0OWE2MjI1OWRl
NjFmZWQ4Y2JlYjcwMGVkMmFjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVXaGl0ZWxp
c3QsIFVua25vd24gfTsKIAotc3RhdGljIFN0cmluZyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBt
YW5pZmVzdFVSTCkKK3N0YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1h
bmlmZXN0VVJMKQogewogICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RVUkwucGF0aCgp
OwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gJy8nKTsKICAgICBtYW5pZmVzdFBhdGgg
PSBtYW5pZmVzdFBhdGguc3Vic3RyaW5nKDAsIG1hbmlmZXN0UGF0aC5yZXZlcnNlRmluZCgnLycp
ICsgMSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSBtYW5pZmVzdFBhdGhbbWFuaWZl
c3RQYXRoLmxlbmd0aCgpIC0gMV0pOwotICAgIHJldHVybiBtYW5pZmVzdFBhdGgudG9TdHJpbmco
KTsKKyAgICByZXR1cm4gbWFuaWZlc3RQYXRoOwogfQogCiBib29sIHBhcnNlTWFuaWZlc3QoY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCkBAIC01MSw3ICs1
MSw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBT
dHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0CiAgICAgQVNTRVJUKG1hbmlmZXN0LmZhbGxi
YWNrVVJMcy5pc0VtcHR5KCkpOwogICAgIG1hbmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3Rz
ID0gZmFsc2U7CiAKLSAgICBTdHJpbmcgbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQ
YXRoKG1hbmlmZXN0VVJMKTsKKyAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlm
ZXN0UGF0aChtYW5pZmVzdFVSTCk7CiAKICAgICBjb25zdCBjaGFyIGNhY2hlTWFuaWZlc3RNSU1F
VHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJvb2wgYWxsb3dGYWxsYmFja05h
bWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggM2Y0Njk5Y2Y4MzI5OGYwNGUyNzRh
ZTAwZWY5NWE1NTQ3NWE2NWYzZC4uY2Q5NDllN2MxMzBkOTY2MjgyZjE5YjUyYzhkYTMxZDAwNGE2
ODE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAt
ODYsMTAgKzg2LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJikKIAogU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxl
Y3Rpb24oKSBjb25zdAogewotICAgIGF1dG8mIHVybCA9IHRoaXMtPnVybCgpOwotICAgIGlmICgh
dXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gdXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IGViNWMx
MWJhNTRhODA1NGU0ZWFlNTdhODEzZGY3ZjY2NjNlY2ViMzkuLjAzYWMwYTUwNWM3ZDViOTgwNzY2
ZjEwNDg1NmExNzI4Zjc1Y2FmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFN0cmlu
ZyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJZGVudGlmaWVyRnJvbVJlcXVl
c3RVUkwoUmVzb3VyY2VSZXF1CiAgICAgaWYgKCFNZW1vcnlDYWNoZTo6c2hvdWxkUmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKHJlcXVlc3QudXJsKCkpKQogICAgICAgICByZXR1cm4geyB9OwogICAg
IFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwotICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIg
PSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBmcmFnbWVudElkZW50aWZpZXIg
PSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKICAgICByZXR1cm4g
ZnJhZ21lbnRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGI0Y2Zi
NzUzMTc5NjkyNjg5ZDNkNjYxYWJjZDVmZDczN2ViMGVkYmUuLjdjMTFkYmZiNmM0YzBmOWJiZGVj
NGE5OGVhZWQyMzRmZTBkOTNiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIx
NzksOCArMjE3OSw4IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN0b3JlU2Nyb2xsYmFyKCkKIAogYm9v
bCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3Ry
aW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBp
ZiAoc2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGZyYWdtZW50SWRlbnRpZmllcikpCisgICAgYXV0
byBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgaWYg
KHNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbChmcmFnbWVudElkZW50aWZpZXIudG9TdHJpbmcoKSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIGRlY29kaW5n
IHRoZSByZWYsIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIGVuY29kaW5nLgpAQCAtMjE5NSw3ICsy
MTk1LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwp
CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBmcmFnbWVudElkZW50aWZpZXIpCiB7Ci0gICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6
c2Nyb2xsVG9BbmNob3IgJXMiLCBmcmFnbWVudElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsICVz
IiwgZnJhZ21lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gSWYgb3VyIFVS
TCBoYXMgbm8gcmVmLCB0aGVuIHdlIGhhdmUgbm8gcGxhY2Ugd2UgbmVlZCB0byBqdW1wIHRvLgog
ICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAppbmRleCA5YzU4YjA2ZjRjNDcxMTMwY2U0ODE1ZjExZDE0Y2I3OGY4MWI0OWEwLi4zOGZkN2Iy
OWI1M2VhYjQ4NGUzMDk2M2I1MWM4YWU1MjVjNWQ3YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKQEAgLTIwMSwxMyArMjAxLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRl
T2JqZWN0QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAgICAgICAg
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSA9IHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVj
dFR5cGU6OlJlcGxhY2UgPyAiaGlzdG9yeS5yZXBsYWNlU3RhdGUoKSIgOiAiaGlzdG9yeS5wdXNo
U3RhdGUoKSI7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBtYWtl
U3RyaW5nKCJCbG9ja2VkIGF0dGVtcHQgdG8gdXNlICIsIGZ1bmN0aW9uTmFtZSwgIiB0byBjaGFu
Z2Ugc2Vzc2lvbiBoaXN0b3J5IFVSTCBmcm9tICIsIGRvY3VtZW50VVJMLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCAiIHRvICIsIGZ1bGxVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCksICIuICIsIHN1ZmZpeCkgfTsKICAgICB9OwotICAgIGlmICghcHJvdG9jb2xI
b3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIo
KSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0gZG9jdW1lbnRVUkwu
cGFzcygpKQorICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRv
Y3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVs
bFVSTC5wYXNzd29yZCgpICE9IGRvY3VtZW50VVJMLnBhc3N3b3JkKCkpCiAgICAgICAgIHJldHVy
biBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQcm90b2Nv
bHMsIGRvbWFpbnMsIHBvcnRzLCB1c2VybmFtZXMsIGFuZCBwYXNzd29yZHMgbXVzdCBtYXRjaC4i
KTsKIAogICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAvLyBXZSBhbGxvdyBzYW5kYm94ZWQgZG9j
dW1lbnRzLCAnZGF0YTonLydmaWxlOicgVVJMcywgZXRjLiB0byB1c2UgJ3B1c2hTdGF0ZScvJ3Jl
cGxhY2VTdGF0ZScgdG8gbW9kaWZ5IHRoZSBVUkwgcXVlcnkgYW5kIGZyYWdtZW50cy4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzAyOCBmb3Ig
dGhlIGNvbXBhdGliaWxpdHkgY29uY2VybnMuCi0gICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRp
b24gPSAoZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0
eU9yaWdpbi5pc1VuaXF1ZSgpKSAmJiBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChkb2N1
bWVudFVSTCwgZnVsbFVSTCk7CisgICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRpb24gPSAoZG9j
dW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5p
c1VuaXF1ZSgpKQorICAgICAgICAmJiBkb2N1bWVudFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZy
YWdtZW50SWRlbnRpZmllcigpID09IGZ1bGxVUkwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAogICAgIGlmICghYWxsb3dTYW5kYm94RXhjZXB0aW9uICYmICFkb2N1
bWVudFNlY3VyaXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0aCgp
ICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRVUkwu
cXVlcnkoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldp
dGhNZXNzYWdlU3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3QgbWF0Y2ggZm9yIGEgc2Fu
ZGJveGVkIGRvY3VtZW50LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCAyODc4OWNk
MTQyOTgzMmMxZjI3MmE2YWFkNWViMWU4YjYyODgyZWM3Li4zNmMxYzliYmNjYTEwNmM4ZWI1N2Yx
YmVhNjM3MGIwZTI4N2EyODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtNjEsMTQg
KzYxLDggQEAgaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiAKIFN0cmlu
ZyBMb2NhdGlvbjo6aHJlZigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0gdGhpcy0+dXJsKCk7
Ci0KLSAgICBpZiAoIXVybC5oYXNVc2VybmFtZSgpICYmICF1cmwuaGFzUGFzc3dvcmQoKSkKLSAg
ICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLQotICAgIFVSTCB1cmxXaXRob3V0Q3JlZGVudGlh
bHModXJsKTsKLSAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc2V0VXNlcihXVEY6OmVtcHR5U3Ry
aW5nKCkpOwotICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5zZXRQYXNzKFdURjo6ZW1wdHlTdHJp
bmcoKSk7CisgICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwoKSk7CisgICAgdXJsV2l0
aG91dENyZWRlbnRpYWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgcmV0dXJuIHVybFdpdGhv
dXRDcmVkZW50aWFscy5zdHJpbmcoKTsKIH0KIApAQCAtOTEsMjAgKzg1LDE5IEBAIFN0cmluZyBM
b2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25z
dAogewotICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJuIHVybC5w
b3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpLnZhbHVlKCkpIDogZW1wdHlTdHJpbmco
KTsKKyAgICBhdXRvIHBvcnQgPSB1cmwoKS5wb3J0KCk7CisgICAgcmV0dXJuIHBvcnQgPyBTdHJp
bmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246
OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSB1cmwoKS5wYXRoKCk7Ci0gICAg
cmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmluZygpOworICAgIHJldHVy
biBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygpOwogfQogCiBTdHJpbmcg
TG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51
cmwoKTsKLSAgICByZXR1cm4gdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6
ICI/IiArIHVybC5xdWVyeSgpOworICAgIHJldHVybiB1cmwoKS5xdWVyeSgpLmlzRW1wdHkoKSA/
IGVtcHR5U3RyaW5nKCkgOiB1cmwoKS5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkudG9T
dHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpvcmlnaW4oKSBjb25zdApAQCAtMTI1LDgg
KzExOCw3IEBAIFJlZjxET01TdHJpbmdMaXN0PiBMb2NhdGlvbjo6YW5jZXN0b3JPcmlnaW5zKCkg
Y29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpoYXNoKCkgY29uc3QKIHsKLSAgICBjb25zdCBTdHJp
bmcmIGZyYWdtZW50SWRlbnRpZmllciA9IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAg
IHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIj
IiArIGZyYWdtZW50SWRlbnRpZmllcjsKKyAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlm
aWVyKCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IHVybCgpLmZyYWdtZW50SWRlbnRpZmll
cldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IExvY2F0aW9uOjpzZXRIcmVmKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cm
IGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKQEAgLTE0NCw3ICsxMzYsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UHJvdG9jb2woRE9NV2luZG93JiBhY3RpdmVXaW5k
b3csIERPTVdpbmRvdyYgZmlycwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9jb2wocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZl
V2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRp
b24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gTG9jYXRpb246OnNldEhvc3QoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYg
Zmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTE1NCw3ICsxNDYsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93JiBmaXJzdFdpbgogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwot
ICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3Ry
aW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93
LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCkBAIC0xNjQsNyArMTU2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRp
b246OnNldEhvc3RuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnMK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24o
YWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0
TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdp
bmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcG9ydFN0cmluZykKQEAgLTE3MywxMiAr
MTY1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0g
ICAgaW50IHBvcnQgPSBwb3J0U3RyaW5nLnRvSW50KCk7Ci0gICAgaWYgKHBvcnQgPCAwIHx8IHBv
cnQgPiAweEZGRkYgfHwgcG9ydFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHVybC5yZW1vdmVQ
b3J0KCk7Ci0gICAgZWxzZQotICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKLSAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAg
ICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5nKSk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9N
V2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwYXRobmFtZSkKQEAgLTE4OCw3ICsx
NzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UGF0aG5hbWUoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlycwogICAgICAgICByZXR1cm4geyB9OwogICAg
IFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFBhdGgocGF0
aG5hbWUpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93
LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZp
cnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0U2Vh
cmNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25z
dCBTdHJpbmcmIHNlYXJjaCkKQEAgLTE5OCw3ICsxODYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBM
b2NhdGlvbjo6c2V0U2VhcmNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZp
cnN0VwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0gICAgcmV0dXJuIHNldExvY2F0
aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJu
IHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBE
T01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhhc2gpCkBAIC0yMTgsNyArMjA2
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KICAgICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVu
dCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZhbGlkLiAKICAgICBpZiAoZXF1YWxJZ25v
cmluZ051bGxpdHkob2xkRnJhZ21lbnRJZGVudGlmaWVyLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlv
bihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZp
cnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCBhY2U1YjdlZDk3MDFlMjQxZTQwYTU3ZGU2NDE4
ZDk4YzEyOWQ5Mzg1Li4yZDUxNDY5OWIxMTcxZTljNzQ4NjYxMmE3YjFhNWU1NWEyYmFjZmRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0x
NDcsMjIgKzE0NywxOSBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3Qo
Y29uc3QgVVJMJiB0ZXN0KSBjb25zdAogICAgIHJldHVybiBob3N0W2hvc3QubGVuZ3RoKCkgLSBt
X2hvc3QubGVuZ3RoKCkgLSAxXSA9PSAnLic7CiB9CiAKLXN0cnVjdCBNYXRjaFRlc3Rlcgotewor
c3RydWN0IE1hdGNoVGVzdGVyIHsKICAgICBTdHJpbmdWaWV3IG1fcGF0dGVybjsKLSAgICB1bnNp
Z25lZCBtX3BhdHRlcm5JbmRleDsKLSAgICAKKyAgICB1bnNpZ25lZCBtX3BhdHRlcm5JbmRleCB7
IDAgfTsKKwogICAgIFN0cmluZ1ZpZXcgbV90ZXN0OwotICAgIHVuc2lnbmVkIG1fdGVzdEluZGV4
OwotICAgIAorICAgIHVuc2lnbmVkIG1fdGVzdEluZGV4IHsgMCB9OworCiAgICAgTWF0Y2hUZXN0
ZXIoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHRlc3QpCi0gICAgOiBtX3BhdHRlcm4o
cGF0dGVybikKLSAgICAsIG1fcGF0dGVybkluZGV4KDApCi0gICAgLCBtX3Rlc3QodGVzdCkKLSAg
ICAsIG1fdGVzdEluZGV4KDApCisgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCisgICAgICAg
ICwgbV90ZXN0KHRlc3QpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGJvb2wgdGVzdFN0cmlu
Z0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW5kZXggPj0gbV90ZXN0Lmxlbmd0aCgp
OyB9CiAgICAgYm9vbCBwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
dHRlcm5JbmRleCA+PSBtX3BhdHRlcm4ubGVuZ3RoKCk7IH0KIApAQCAtMTc0LDcgKzE3MSw3IEBA
IHN0cnVjdCBNYXRjaFRlc3RlcgogICAgICAgICAgICAgbV9wYXR0ZXJuSW5kZXgrKzsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIHZvaWQgZWF0U2FtZUNoYXJzKCkKICAgICB7CiAgICAg
ICAgIHdoaWxlICghcGF0dGVyblN0cmluZ0ZpbmlzaGVkKCkgJiYgIXRlc3RTdHJpbmdGaW5pc2hl
ZCgpKSB7CkBAIC0yMjYsOCArMjIzLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAKIGJvb2wgVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0aChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7
Ci0gICAgTWF0Y2hUZXN0ZXIgbWF0Y2goU3RyaW5nVmlldyhtX3BhdGgpLCB0ZXN0LnBhdGgoKSk7
Ci0gICAgcmV0dXJuIG1hdGNoLnRlc3QoKTsKKyAgICByZXR1cm4gTWF0Y2hUZXN0ZXIobV9wYXRo
LCB0ZXN0LnBhdGgoKSkudGVzdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDRhMGMzNGVj
YTcyNDJiZGE3MjUyODQ4YjNhOGNlMmQxMzVmNzQzNWIuLjQ3MGZlNTQ5NTRlMWIzYzQ3ZWVmMDVl
Nzg1MGNiNWJhMmM5OTVmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCkBAIC03OTAsMTYgKzc5MCwxMCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIFN0cmlu
ZyBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoZmls
ZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkpCi0g
ICAgICAgIHJldHVybiBmaWxlbmFtZTsKLQotICAgIGlmIChmaWxlbmFtZS5yZXZlcnNlRmluZCgn
LicpICE9IG5vdEZvdW5kKQorICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkgfHwgZmlsZW5hbWUu
Y29udGFpbnMoJy4nKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0
TUlNRVR5cGUoKSkpCiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsKIAotICAgIFN0cmluZyBwcmVm
ZXJyZWRFeHRlbnNpb24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlw
ZSk7CisgICAgYXV0byBwcmVmZXJyZWRFeHRlbnNpb24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25G
b3JNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgaWYgKHByZWZlcnJlZEV4dGVuc2lvbi5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGFiN2U2MDU0MmIwMTgyY2ZhYjZi
ZjIyMDZmNDg3ODhmMTg0MWM2MzguLmM4MjhiYmU3ZTc3NTVlZTcxMTIxNzIzZTlmMTcwMjdlZDFm
YWUyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTQ0MSwxMiArNDQxLDEyIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAg
ICAgQXRvbVN0cmluZyBjb250YWluZXJUeXBlID0gbV9jb250ZW50VHlwZS5jb250YWluZXJUeXBl
KCk7CiAgICAgaWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8IGNvbnRhaW5lclR5cGUgPT0g
YXBwbGljYXRpb25PY3RldFN0cmVhbSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gdGV4dFBsYWluKCkp
IHsKICAgICAgICAgaWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgICAgICBtX2Nv
bnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmco
KSkpOworICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJv
bURhdGFVUkwobV91cmwpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgbGFz
dFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIGF1
dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAg
ICAgIHNpemVfdCBwb3MgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwogICAg
ICAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgIFN0cmluZyBl
eHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcocG9zICsgMSk7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhw
b3MgKyAxKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgIFN0cmluZyBtZWRpYVR5cGUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7
CiAgICAgICAgICAgICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZSB7IFdURk1vdmUobWVkaWFUeXBl
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA2MTYyYWRhZTZiZmY1MTY3MWUzYmU1MzIyMjdlN2RlNTc5OTlmZGYwLi4yZWM5NzVjYjEw
NDVhZTRjODc0OTdjZDlhMGFjZTAyZjkyMTFkOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyB2
b2lkIGNvbnZlcnRUb0ludGVybmFsUHJvdG9jb2woVVJMJiB1cmwpCiAgICAgaWYgKHdlYmtpdEdz
dENoZWNrVmVyc2lvbigxLCAxMiwgMCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodXJsLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSkKLSAgICAgICAg
dXJsLnNldFByb3RvY29sKCJ3ZWJraXQrIiArIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgdXJs
LnNldFByb3RvY29sKG1ha2VTdHJpbmcoIndlYmtpdCsiLCB1cmwucHJvdG9jb2woKSkpOwogfQog
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA3MjhmYTJl
ODc5YjBlNzYxYTQ5NWRjNGFjYTMwODY0NGJkNjRlMDBlLi5kM2IzMzgyNzkxZWYyYzAyMjNhNzY0
MzE3MTNmMThiMWYzMmU2YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtODAsNyArODAsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1fZmlyc3RSZXF1ZXN0LnVy
bCgpOwogICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICBtX3Bhc3MgPSB1cmwu
cGFzcygpOworICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgIG1f
Zmlyc3RSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgfQogICAgIApAQCAtOTYsNyAr
OTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdWdnZXN0ZWQgY3JlZGVudGlhbHMgZm9yIHRoZSBj
dXJyZW50IHJlZGlyZWN0aW9uIHN0ZXAuCiAgICAgU3RyaW5nIG1fdXNlcjsKLSAgICBTdHJpbmcg
bV9wYXNzOworICAgIFN0cmluZyBtX3Bhc3N3b3JkOwogICAgIAogICAgIENyZWRlbnRpYWwgbV9p
bml0aWFsQ3JlZGVudGlhbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGE5MzczMjAzNTMxMmNj
NDdkMDkyMjBhZDg0ZjJmYjJlOGY3MzQyZGUuLjUzMGVjY2ZhZTc5M2UzNWRlZTk5ZWMwNDA3NzA3
YTM4ZjljN2M5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTY1LDEyICsxNjUsMTAgQEAgdm9pZCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpyZW1vdmVDcmVkZW50aWFscygpCiB7CiAgICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7IAogCi0gICAgaWYgKG1fdXJsLnVzZXIoKS5pc0VtcHR5KCkgJiYgbV91
cmwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fdXJsLmhhc0NyZWRlbnRpYWxzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdXJsLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIG1fdXJs
LnNldFBhc3MoU3RyaW5nKCkpOwotCisgICAgbV91cmwucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAg
ICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAKaW5kZXggOTAwODFjYmVjMDlmMTAwMjRiZThhMDBkNzdiYTkyYWYzZDdlN2RiMi4uM2VjZjcx
ZTkxNDdmMjQ0Y2FhMmU0ZTJiNmQ5NjAyMjdjMjM3NmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
Ri5oIgpAQCAtNTksNyArNTgsNiBAQAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxwcm9j
ZXNzLmg+CiAKLS8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4g
V2ViS2l0U3VwcG9ydExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDRlVSTENvbm5lY3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMo
CiAgIENGQWxsb2NhdG9yUmVmICAgICAgICAgICBhbGxvYywKQEAgLTEzMywxMSArMTMxLDExIEBA
IHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0aWVzKENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgc3NsUHJvcHMsCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNG
VVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3Vs
ZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgUmVmUHRyPFN5
bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiYmIG1lc3NhZ2VRdWV1ZSwgQ0ZEaWN0aW9uYXJ5
UmVmIGNsaWVudFByb3BlcnRpZXMpCiB7Ci0gICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8
fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQt
Pm1fcGFzc3dvcmQuaXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2FuIG9u
bHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCiAgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVu
dGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMu
c2V0VXNlcihkLT5tX3VzZXIpOwotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhk
LT5tX3Bhc3MpOworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzc3dvcmQoZC0+bV9w
YXNzd29yZCk7CiAgICAgICAgIGZpcnN0UmVxdWVzdCgpLnNldFVSTCh1cmxXaXRoQ3JlZGVudGlh
bHMpOwogICAgIH0KIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29s
CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0
aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1
dGhlbnRpY2F0aW9uLAogICAgIC8vIHRyeSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1w
dGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgogICAgIGlmIChzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZSAmJiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpIHsKLSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3Jk
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0g
Rm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVu
Z2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKICAgICAgICAgICAgIC8vIHRyeSBh
bmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAy
NjE3LgogICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCBmaXJz
dFJlcXVlc3QoKS51cmwoKSk7CkBAIC0xNTQsNyArMTUyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IGJvb2wKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSBwcm90ZWN0aW9uIHNw
YWNlIGtub3duIGZvciB0aGUgVVJMLCB1cGRhdGUgc3RvcmVkIGNyZWRlbnRpYWxzIGJlZm9yZSBz
ZW5kaW5nIGEgcmVxdWVzdC4KICAgICAgICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUg
dG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5nIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgga25v
d24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQgYWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkKICAg
ICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBv
cCB1cCkuCi0gICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1f
cGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsK
KyAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzd29y
ZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC0yOTIsNyArMjkwLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UKIHsKICAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAg
ZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBkLT5tX3Bhc3MgPSB1cmwucGFzcygpOworICAg
IGQtPm1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9k
ID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygp
OwogCkBAIC0zMDYsNyArMzA0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNy
ZWRlbnRpYWxzIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0
CiAgICAgICAgIC8vIFVSTCBkaWRuJ3QgaW5jbHVkZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgot
ICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYm
ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNF
bXB0eSgpICYmIGQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwg
cmVxdWVzdC51cmwoKSk7CiAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7CkBA
IC0zNzEsOCArMzY5LDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRC
YXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAgIFN0cmluZyBw
YXJ0aXRpb24gPSBmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpOwogCi0gICAgaWYgKCFk
LT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBSZXRh
aW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3Jl
ZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENy
ZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKKyAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAm
JiAhZC0+bV9wYXNzd29yZC5pc051bGwoKSkgeworICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1f
dXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3N3b3JkLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChj
ZkNyZWRlbnRpYWwuZ2V0KCkpOwogI2Vsc2UKQEAgLTM4Niw3ICszODQsNyBAQCBib29sIFJlc291
cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaAogICAgICAgICAKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgZC0+bV91c2VyID0gU3RyaW5nKCk7
Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3b3JkID0g
U3RyaW5nKCk7CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWNpZmljYXRpb24sIHRoZSB1
c2VyIHNob3VsZG4ndCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMgaWYgdGhlcmUgd2VyZSBpbmNv
cnJlY3Qgb25lcyBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFByb3h5U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxQcm94eVNldHRpbmdzLmNwcAppbmRleCAwYzJkM2YwNDQzMDY1MWIzMzE5NTJiNmQwMTlm
ZTU2ZDFjNmIwNDU0Li5mNzUyYTZlZTM1YTcyMGM2ZDdiZDlhNGU3NTg5MWRkMGE5NGFlOGRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5
U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUHJveHlTZXR0aW5ncy5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogI2VuZGlmCiAKICNpbmNs
dWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdWludDE2X3Qg
U29ja3NQcm94eVBvcnQgPSAxMDgwOworY29uc3RleHByIHVpbnQxNl90IFNvY2tzUHJveHlQb3J0
ID0gMTA4MDsKIAotc3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQcm94eVBvcnQoY29uc3Qg
VVJMJik7CiBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChjb25zdCBVUkwm
KTsKIAogQ3VybFByb3h5U2V0dGluZ3M6OkN1cmxQcm94eVNldHRpbmdzKFVSTCYmIHByb3h5VXJs
LCBTdHJpbmcmJiBpZ25vcmVIb3N0cykKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBDdXJsUHJveHlT
ZXR0aW5nczo6cmVidWlsZFVybCgpCiB2b2lkIEN1cmxQcm94eVNldHRpbmdzOjpzZXRVc2VyUGFz
cyhjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAgbV91
cmwuc2V0VXNlcih1c2VyKTsKLSAgICBtX3VybC5zZXRQYXNzKHBhc3N3b3JkKTsKKyAgICBtX3Vy
bC5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAKICAgICByZWJ1aWxkVXJsKCk7CiB9CkBAIC0xMTgs
OCArMTE4LDggQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3Qg
VVJMICZ1cmwpCiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byB1c2VycGFzcyA9ICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dv
cmQoKSkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJsLnBhc3MoKSwgIkAiKSA6IFN0
cmluZygpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgpLCAiOi8vIiwgdXNl
cnBhc3MsIHVybC5ob3N0KCksICI6IiwgU3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKKyAgICBhdXRv
IHVzZXJwYXNzID0gdXJsLmhhc0NyZWRlbnRpYWxzKCkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCks
ICI6IiwgdXJsLnBhc3N3b3JkKCksICJAIikgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyh1cmwucHJvdG9jb2woKSwgIjovLyIsIHVzZXJwYXNzLCB1cmwuaG9zdCgpLCAiOiIsICpw
b3J0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAppbmRleCBhZjMxMzU0NmM0NGEzMjc3ZjA2YjQ4
NTRlZjAzMDI3Yjg1ODE0NDAzLi41ODNlMDBjNGUzMTQ2OTllYTFmNTQyZmUzNjkyNGJlZDBlMjFi
Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFVzZXJQYXNzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIGNvbnN0IFN0cmluZyB1c2VyKCkgY29uc3QgeyByZXR1cm4gbV91cmwudXNlcigp
OyB9Ci0gICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwucGFz
cygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwu
cGFzc3dvcmQoKTsgfQogCiAgICAgdm9pZCBzZXREZWZhdWx0QXV0aE1ldGhvZCgpIHsgbV9hdXRo
TWV0aG9kID0ga0NVUkxBVVRIX0FOWTsgfQogICAgIHZvaWQgc2V0QXV0aE1ldGhvZChsb25nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggNDkxNWQ5MGRmYWIyY2E0NWZkZmNjYzkxODJkZmFm
YTM4ZmU2NGFhNi4uNDBjNzk4YTNhNTRjY2UxMmViNzcwNWI2MWExMTMzNjJkYmY2YTBjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTIxNCw4ICsyMTQsOCBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbAogCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFy
dGl0aW9uKCk7CiAKLSAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlz
TnVsbCgpKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1f
cGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgaWYgKCFkLT5tX3VzZXIuaXNO
dWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgQ3JlZGVudGlhbCBj
cmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Tm9uZSk7CiAKICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2Uu
ZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCkBAIC0yMjUsNyArMjI1
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICAgICAgcmVzdGFydFJlcXVlc3RXaXRo
Q3JlZGVudGlhbChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNyZWRlbnRpYWwpOwogCiAg
ICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmco
KTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAgICAvLyBGSVhNRTog
UGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNlciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNy
ZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3JyZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRs
eS4KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpCiBPcHRpb25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q3Jl
ZGVudGlhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcmVkaXJlY3QpCiB7
CiAgICAgLy8gbV91c2VyL21fcGFzcyBhcmUgY3JlZGVudGlhbHMgZ2l2ZW4gbWFudWFsbHksIGZv
ciBpbnN0YW5jZSwgYnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gWE1MSHR0cFJlcXVlc3Qub3Bl
bigpLgotICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCB7IGQtPm1fdXNlciwgZC0+bV9wYXNzLCBD
cmVkZW50aWFsUGVyc2lzdGVuY2VOb25lIH07CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsIHsg
ZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lIH07CiAK
ICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSkgewogICAgICAgICBTdHJpbmcg
cGFydGl0aW9uID0gcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpOwpAQCAtNDc2LDcgKzQ3Niw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCgpCiAgICAgICAgIG5ld1JlcXVl
c3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKIAogICAgIGQtPm1fdXNlciA9IG5ld1VSTC51c2VyKCk7
Ci0gICAgZC0+bV9wYXNzID0gbmV3VVJMLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3JkID0gbmV3
VVJMLnBhc3N3b3JkKCk7CiAgICAgbmV3UmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCiAg
ICAgaWYgKGNyb3NzT3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IDc2N2M1Nzk0OTk5Yzk0
NjExODBiY2ZlZjBjMmExOTIyZmExMDcyZDYuLmVlNjAzZDcyMmY0MWQwZDZmN2M0NmI5MDZmYjdh
NTUxMDUyMGYzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNDIsMTUgKzE0MiwxNSBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbAogI2VuZGlmCiB7CiAgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0
cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29uJ3QgYmUgbWFkZS4KLSAgICBp
ZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSAmJiAhZmly
c3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCgh
ZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkpICYmICFmaXJz
dFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgVVJM
IHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIHVybFdp
dGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7Ci0gICAgICAgIHVybFdpdGhDcmVkZW50
aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQ
YXNzd29yZChkLT5tX3Bhc3N3b3JkKTsKICAgICAgICAgZmlyc3RSZXF1ZXN0KCkuc2V0VVJMKHVy
bFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlICYmIGZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
ewotICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzc3dvcmQuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3Ig
VVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQg
Zm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFuZCBy
ZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcu
CiAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcGxl
bWVudCBsb2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtub3duIGluY29y
cmVjdCBjcmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5CiAgICAgICAgICAg
ICAvLyAoc28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3AgdXApLgog
ICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9u
KCksIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNo
ZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICAgICAgCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIg
PSB1cmwudXNlcigpOwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CisgICAgZC0+bV9wYXNz
d29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIGQtPm1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0
Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIE9ubHkgY29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMg
aWYgdGhpcyBpcyBhY3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVkaXJlY3QKICAgICAgICAg
Ly8gVVJMIGRpZG4ndCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBvd24uCi0gICAgICAgIGlm
IChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0
UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYg
ZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsK
ICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAgICAgICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkp
CiAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3Jl
ZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLCByZXF1ZXN0LnVy
bCgpKTsKQEAgLTUyMSwxNyArNTIxLDE1IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRs
ZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoCiAgICAg
aWYgKCFjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJhc2VkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5t
X3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0g
W1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpkLT5tX3VzZXIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXNzd29yZDpkLT5tX3Bhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZUZvclNlc3Npb25dOworICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFk
LT5tX3Bhc3N3b3JkLmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGFkb3B0
TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpkLT5tX3VzZXIKKyAgICAg
ICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzc3dvcmQgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFs
UGVyc2lzdGVuY2VGb3JTZXNzaW9uXSk7CiAgICAgICAgIGQtPm1fY3VycmVudE1hY0NoYWxsZW5n
ZSA9IGNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAgICAgICAgIGQt
Pm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICAgICAgcmVjZWl2ZWRDcmVk
ZW50aWFsKGNoYWxsZW5nZSwgQ3JlZGVudGlhbChjcmVkZW50aWFsKSk7Ci0gICAgICAgIFtjcmVk
ZW50aWFsIHJlbGVhc2VdOworICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBD
cmVkZW50aWFsKGNyZWRlbnRpYWwuZ2V0KCkpKTsKICAgICAgICAgLy8gRklYTUU6IFBlciB0aGUg
c3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2VkIGZvciBjcmVkZW50aWFs
cyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4cGxpY2l0bHkuCiAgICAg
ICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmcoKTsK
KyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCBkODI4ZGI3NjY4NDA0OTI3ZTU3
NmM2YjMwOGU2ZjllN2U3NWZlYTJhLi4zZjJkMzZjZjU3NTUwNjU1ZjM5ZmQ0MTEyNGM5ZDZmMWEy
MmMyYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgR1Vu
aXF1ZVB0cjxTb3VwVVJJPiBSZXNvdXJjZVJlcXVlc3Q6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAog
ICAgIC8vIHdoZW4gYm90aCB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSBub24tbnVsbC4g
V2hlbiB3ZSBoYXZlIGNyZWRlbnRpYWxzLCBlbXB0eSB1c2VybmFtZXMgYW5kIHBhc3N3b3Jkcwog
ICAgIC8vIHNob3VsZCBiZSBlbXB0eSBzdHJpbmdzIGluc3RlYWQgb2YgbnVsbC4KICAgICBTdHJp
bmcgdXJsVXNlciA9IG1fdXJsLnVzZXIoKTsKLSAgICBTdHJpbmcgdXJsUGFzcyA9IG1fdXJsLnBh
c3MoKTsKKyAgICBTdHJpbmcgdXJsUGFzcyA9IG1fdXJsLnBhc3N3b3JkKCk7CiAgICAgaWYgKCF1
cmxVc2VyLmlzRW1wdHkoKSB8fCAhdXJsUGFzcy5pc0VtcHR5KCkpIHsKICAgICAgICAgc291cF91
cmlfc2V0X3VzZXIoc291cFVSSS5nZXQoKSwgdXJsVXNlci51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgc291cF91cmlfc2V0X3Bhc3N3b3JkKHNvdXBVUkkuZ2V0KCksIHVybFBhc3MudXRmOCgpLmRh
dGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
VVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291
cC5jcHAKaW5kZXggZjUxYzRmZDU3ZjhlMTRiOTY0YWI1OTZjYTljZDNjYWZlODExODZkYS4uZTg1
YmY0MDFmMzAxMzAyM2UwOGU5YWZmMmNhZjg3MGQzMWM4NjhmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcApAQCAtNDQsNyArNDQsNyBA
QCBVUkwgc291cFVSSVRvVVJMKFNvdXBVUkkqIHNvdXBVUkkpCiAgICAgICAgIC8vIGJ1aWx0LiBG
aXhpbmcgc291cF91cmlfdG9fc3RyaW5nIGlzIGEgbm8tbm8gYXMgdGhlIG1haW50YWluZXIgZG9l
cwogICAgICAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlv
dXMgaW1wbGVtZW50YXRpb25zCiAgICAgICAgIGlmIChzb3VwVVJJLT5wYXNzd29yZCkKLSAgICAg
ICAgICAgIHVybC5zZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsK
KyAgICAgICAgICAgIHVybC5zZXRQYXNzd29yZChTdHJpbmc6OmZyb21VVEY4KHNvdXBVUkktPnBh
c3N3b3JkKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAyOGQ4NzNjNDYxMmRiZGNlNDE3OWMz
YTM4ZWQwZGMwYTUwYjg4NzhhLi43MTgzZjkwNTZhODBkMGUzNmZmZGE3MGZkMjFiNGRmN2ZhNzBk
NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpk
YXRhLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdGgKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aXRsZSA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICB0aXRsZSA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKICAgICB9CkBAIC01NzksMTAg
KzU3OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAgICAvLyB0aGUgcGF0aC4g
SWYgd2UgY2FuJ3QgZmluZCBpdCwgb3Igd2UncmUgY29taW5nIHVwIHdpdGggdGhlIG5hbWUgZm9y
IGEgbGluawogICAgICAgICAvLyB3ZSBqdXN0IHVzZSB0aGUgZW50aXJlIHVybC4KICAgICAgICAg
RFdPUkQgbGVuID0gZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uOwotICAgICAgICBT
dHJpbmcgbGFzdENvbXBvbmVudCA9IGt1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAg
YXV0byBsYXN0Q29tcG9uZW50ID0ga3VybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBp
ZiAoa3VybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0Q29tcG9uZW50LmlzRW1w
dHkoKSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5n
dGhFeGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgU3RyaW5nVmlldyhsYXN0Q29tcG9uZW50KS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0
ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBvbmVu
dC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZm
ZXIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGVuID0gc3RkOjptaW48RFdPUkQ+
KGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgdXJsLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgIFN0cmluZ1ZpZXcodXJsKS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIAogICAgIFN0
cmluZyB0aXRsZShwYXN0ZWJvYXJkVVJMLnRpdGxlKTsKICAgICBpZiAodGl0bGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVSTC51cmwubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICAgICAgdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5sYXN0UGF0aENvbXBvbmVudCgp
LnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0
aXRsZSA9IHBhc3RlYm9hcmRVUkwudXJsLmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcAppbmRleCAyYzZjNzBlODQ5OTVj
MjlhYzE4ZmYzYzk1NDljNzg5OTY4Y2EwMWNhLi5kY2I0MzBiMjJmNzU0NmJhZDM5NzA1ODM5M2Q4
NDJhYjRlMDZlYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUu
Y3BwCkBAIC0xNjUsMTcgKzE2NSwxNCBAQCBib29sIEJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVy
T3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aQogCiAgICAg
RmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVl
IDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PihpblZhbHVlKSkgewotCiAgICAgICAgIGlmIChpczxD
U1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlKSkgewogICAgICAgICAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdl
dCgpKTsKICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUuaXNVUkkoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2
ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChjc3NVcmwpOwotCi0gICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3Zl
KG9wZXJhdGlvbikpOworICAgICAgICAgICAgYXV0byBmaWx0ZXJVUkwgPSBwcmltaXRpdmVWYWx1
ZS5zdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50KCku
Y29tcGxldGVVUkwoZmlsdGVyVVJMKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZShmaWx0ZXJVUkwsIGZyYWdtZW50LnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlv
bi5jcHAKaW5kZXggZDc5ZTgwMDg4MDg1MDA1ZjFlMjM4NWEwODFiYTE2MGFmYWJmMjIzOS4uODM0
NzZmZTc2OWQ2ZGJlMDljZjU0NzkwMTU2ZGE2NTg4YzJkZTdmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKQEAgLTUzLDIzICs1MywyNCBAQCBTdHJpbmcgV29y
a2VyTG9jYXRpb246Omhvc3RuYW1lKCkgY29uc3QKIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpw
b3J0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwucG9ydCgpID8gU3RyaW5nOjpudW1iZXIo
bV91cmwucG9ydCgpLnZhbHVlKCkpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIHBvcnQgPSBt
X3VybC5wb3J0KCk7CisgICAgcmV0dXJuIHBvcnQgPyBTdHJpbmc6Om51bWJlcigqcG9ydCkgOiBl
bXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnBhdGhuYW1lKCkgY29u
c3QKIHsKICAgICBhdXRvIHBhdGggPSBtX3VybC5wYXRoKCk7Ci0gICAgcmV0dXJuIHBhdGguaXNF
bXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmluZygpOworICAgIHJldHVybiBwYXRoLmlzRW1wdHko
KSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246
OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8g
ZW1wdHlTdHJpbmcoKSA6ICI/IiArIG1fdXJsLnF1ZXJ5KCk7CisgICAgcmV0dXJuIG1fdXJsLnF1
ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdXJsLnF1ZXJ5V2l0aExlYWRpbmdR
dWVzdGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhh
c2goKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS5pc0Vt
cHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7
CisgICAgcmV0dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5
U3RyaW5nKCkgOiBtX3VybC5mcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24o
KS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246Om9yaWdpbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggMGQ1M2JjZjkyM2VkNjEyNjUzOWYz
NWRkMmI5NDljYTE0YjdiNTY3Yy4uMTg5NmMyNDExYjVkYzBiZjY4MmY0MjUwODhlM2U2ODk2MGQy
Y2FmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtMzcsNyArMzcsNyBAQCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
KFNlY3VyaXR5T3JpZ2luRGF0YSYmCiAgICAgOiBtX3RvcE9yaWdpbihXVEZNb3ZlKHRvcE9yaWdp
bikpCiAgICAgLCBtX3Njb3BlKFdURk1vdmUoc2NvcGUpKQogewotICAgIEFTU0VSVCghbV9zY29w
ZS5oYXNGcmFnbWVudCgpKTsKKyAgICBBU1NFUlQoIW1fc2NvcGUuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpOwogfQogCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCmluZGV4IDczODYyNTRlZGE5MmU5ODdkMjY5MjRkODU2ZmMzZWQ2NGEzMDNmZWYuLmJh
NzRmNmQxMDM0MTE4ZWY1MWM5Y2RhZWM3YmVkZTk3YzBjNWIyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtNDYsMTMgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotVVJMIHN0YXRpYyBpbmxpbmUgdG9wT3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4pCitzdGF0aWMgVVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQogewogICAgIFVSTCB1cmw7CiAgICAgdXJsLnNldFByb3RvY29sKG9yaWdp
bi5wcm90b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdChvcmlnaW4uaG9zdCgpKTsKLSAgICBpZiAo
b3JpZ2luLnBvcnQoKSkKLSAgICAgICAgdXJsLnNldFBvcnQoKm9yaWdpbi5wb3J0KCkpOworICAg
IHVybC5zZXRQb3J0KG9yaWdpbi5wb3J0KCkpOwogICAgIHJldHVybiB1cmw7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggYmZjMTU3MjExNmNmMjk2N2FjODU2NjM1NGZlNDk0NzQ4N2RjZTI1Yy4uZGJiNTk1YjMxMjdi
ZjIxYTNkYjQxOWI2NWM2ZGM0NzFjOGEyZWIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQyNyw4ICs0MjcsNyBAQCBV
Ukwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikK
ICAgICBVUkwgdXJsOwogICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJvdG9jb2woKSk7CiAg
ICAgdXJsLnNldEhvc3Qob3JpZ2luLmhvc3QoKSk7Ci0gICAgaWYgKG9yaWdpbi5wb3J0KCkpCi0g
ICAgICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICB1cmwuc2V0UG9ydCgqb3Jp
Z2luLnBvcnQoKSk7CiAgICAgcmV0dXJuIHVybDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggMTUyODE1NTgyNTY5ODFhNDgzOGNkNjM3M2IzNjcxYTVlZDA0MGFm
OS4uYTBkZTQ5ZjA4ODQ0YTg2YzZlMzI5NzVjYzRiZDcwNDY3NWIyYWZjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0
cmluZyYgdXJsLAogICAgIGlmICghdXNlci5pc051bGwoKSkKICAgICAgICAgdXJsV2l0aENyZWRl
bnRpYWxzLnNldFVzZXIodXNlcik7CiAgICAgaWYgKCFwYXNzd29yZC5pc051bGwoKSkKLSAgICAg
ICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOworICAgICAgICB1cmxXaXRo
Q3JlZGVudGlhbHMuc2V0UGFzc3dvcmQocGFzc3dvcmQpOwogCiAgICAgcmV0dXJuIG9wZW4obWV0
aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA5ZTBiNjgyY2Rl
ZDJhZmJiZjU3YTAyODQ5ZGMzYjc5ZDc5YTc2NzIxLi45NTVkMzg4ZTVlOTZlMzUxOTkzNjc0ZmI5
NDllYTg3YWYzZmQzMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXEKICAgICAgICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVj
dFJlc3BvbnNlLCBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgcmVk
aXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVz
b3VyY2UgU2hhcmluZyBwb2xpY3k6IG5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdp
biBDT1JTIHJlZGlyZWN0aW9uIHdpdGggbm9uIENPUlMgc2NoZW1lIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAobG9jYXRpb24uaGFzVXNlcm5hbWUoKSB8
fCBsb2NhdGlvbi5oYXNQYXNzd29yZCgpKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5oYXNDcmVk
ZW50aWFscygpKSB7CiAgICAgICAgICAgICBoYW5kbGVyKHJlZGlyZWN0aW9uRXJyb3IocmVkaXJl
Y3RSZXNwb25zZSwgbWFrZVN0cmluZygiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIHJl
ZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJl
c291cmNlIFNoYXJpbmcgcG9saWN5OiByZWRpcmVjdGlvbiBVUkwgIiwgbG9jYXRpb24uc3RyaW5n
KCksICIgaGFzIGNyZWRlbnRpYWxzIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBT
VXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvCiAgICAgaHR0cHNV
cGdyYWRlQ2hlY2tlci5xdWVyeSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIG1fc2Vzc2lvbklELCBb
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAo
Ym9vbCBmb3VuZEhvc3QpIG11dGFibGUgewogICAgICAgICBpZiAoZm91bmRIb3N0KSB7CiAgICAg
ICAgICAgICBhdXRvIG5ld1VSTCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgICAgICAgICBuZXdVUkwu
c2V0UHJvdG9jb2woImh0dHBzIl9zKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgi
aHR0cHMiKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNjIzYTFhZGNlYzBjZjQzZGU0ZWE1NmQ1NzY5OTI1
MGNiOWNlNWVlMi4uZTQ0NDA2NDcwNjU4YTYxYjc2NzM0NDkwYjE1NjFiN2U1MzNlNWNhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVQKICAgICBhdXRvIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgJiYg
dXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBtX3VzZXIgPSB1cmwudXNl
cigpOwotICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICAgICAgbV9wYXNzd29y
ZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7
CiAgICAgICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgCkBAIC0zNjUsNyArMzY1LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1
ZXN0LnVybCgpOwogICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9IHVy
bC5wYXNzKCk7CisgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFzdEhU
VFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRl
bnRpYWxzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggZmUxYjYzZTc4ZjY4MDQyOGNm
ZmU3MGFkOGY2ODUzYTgxZTJkYzczNy4uOWMwNDY1MDU4OTM5Y2Y2NWZjMTBmNDc3MWVkMjE2NjYy
YjZiOWY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrRGF0
YVRhc2tTb3VwOjpOZXR3b3JrRGF0YVRhc2tTb3VwKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhcwogICAgICAgICBhdXRvIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgICAg
IGlmIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpVc2UpIHsKICAgICAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgICAgICBt
X3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICAgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFz
c3dvcmQoKTsKICAgICAgICAgICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAogICAg
ICAgICAgICAgaWYgKG1fdXNlci5pc0VtcHR5KCkgJiYgbV9wYXNzd29yZC5pc0VtcHR5KCkpCkBA
IC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjphcHBseUF1dGhlbnRp
Y2F0aW9uVG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIGF1dG8gdXJs
ID0gcmVxdWVzdC51cmwoKTsKICAgICB1cmwuc2V0VXNlcihtX3VzZXIpOwotICAgIHVybC5zZXRQ
YXNzKG1fcGFzc3dvcmQpOworICAgIHVybC5zZXRQYXNzd29yZChtX3Bhc3N3b3JkKTsKICAgICBy
ZXF1ZXN0LnNldFVSTCh1cmwpOwogCiAgICAgbV91c2VyID0gU3RyaW5nKCk7CkBAIC02ODgsNyAr
Njg4LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVjdGlv
bigpCiAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1fdXNlciA9
IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgbV9wYXNzd29y
ZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBN
ZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKQEAgLTExMTcsMjQg
KzExMTcsMjIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpzdGFydGluZ0NhbGxiYWNrKFNv
dXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGEKIH0KIAogI2lmIFNPVVBfQ0hFQ0tf
VkVSU0lPTigyLCA2NywgMSkKKwogYm9vbCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxv
d0hTVFNQb2xpY3lTZXR0aW5nKCkgY29uc3QKIHsKICAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RT
IGFidXNlIG1pdGlnYXRpb24gMToKICAgICAvLyAgIkxpbWl0IEhTVFMgU3RhdGUgdG8gdGhlIEhv
c3RuYW1lLCBvciB0aGUgVG9wIExldmVsIERvbWFpbiArIDEiCi0gICAgaWYgKGlzVG9wTGV2ZWxO
YXZpZ2F0aW9uKCkgfHwgaG9zdHNBcmVFcXVhbChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBtX2N1
cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpIHx8IGlzUHVibGljU3VmZml4KG1f
Y3VycmVudFJlcXVlc3QudXJsKCkuaG9zdCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc1Rv
cExldmVsTmF2aWdhdGlvbigpCisgICAgICAgIHx8IG1fY3VycmVudFJlcXVlc3QudXJsKCkuaG9z
dCgpID09IG1fY3VycmVudFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5ob3N0KCkKKyAg
ICAgICAgfHwgaXNQdWJsaWNTdWZmaXgobV9jdXJyZW50UmVxdWVzdC51cmwoKS5ob3N0KCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKTsKIH0KIAogYm9vbCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpz
aG91bGRBbGxvd0hTVFNQcm90b2NvbFVwZ3JhZGUoKSBjb25zdAogewotICAgIC8vIEZvbGxvdyBB
cHBsZSdzIEhTVFMgYWJ1c2UgbWl0Z2F0aW9uIDI6CisgICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNU
UyBhYnVzZSBtaXRpZ2F0aW9uIDI6CiAgICAgLy8gIklnbm9yZSBIU1RTIFN0YXRlIGZvciBTdWJy
ZXNvdXJjZSBSZXF1ZXN0cyB0byBCbG9ja2VkIERvbWFpbnMiCi0gICAgaWYgKCFpc1RvcExldmVs
TmF2aWdhdGlvbigpICYmICFtX2N1cnJlbnRSZXF1ZXN0LmFsbG93Q29va2llcygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaXNUb3BMZXZl
bE5hdmlnYXRpb24oKQorICAgICAgICB8fCBtX2N1cnJlbnRSZXF1ZXN0LmFsbG93Q29va2llcygp
OwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnByb3RvY29sVXBncmFkZWRWaWFIU1RT
KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKQEAgLTExNTMsNiArMTE1MSw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6aHN0c0VuZm9yY2VkKFNvdXBIU1RTRW5mb3JjZXIqLCBTb3VwTWVz
c2FnZSogc291cE1lc3NhCiAgICAgaWYgKHNvdXBNZXNzYWdlID09IHRhc2stPm1fc291cE1lc3Nh
Z2UuZ2V0KCkpCiAgICAgICAgIHRhc2stPnByb3RvY29sVXBncmFkZWRWaWFIU1RTKHNvdXBNZXNz
YWdlKTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkU3RhcnRS
ZXF1ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCAyZDc3NjM0NWUyMjQ5NmNi
ODc1MGMyZTYxNDljZDA2NmFjMGM3ODAzLi40YzgzOGFmYjczMDU5NjM1ODkzOWFmYjViYjQ1NjRk
MDBhOGE2MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC02MywyNSArNjMsMjUg
QEAgcHVibGljOgogICAgIFdURjo6U3RyaW5nIGhvc3QoKSBjb25zdAogICAgIHsKICAgICAgICAg
cGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFs
aWQoKSA/IG1fcGFyc2VkVVJMLT5ob3N0KCkudG9TdHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7Cisg
ICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAg
ICAgV1RGOjpTdHJpbmcgcHJvdG9jb2woKSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJ
Zk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1f
cGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygpOworICAgICAg
ICByZXR1cm4gbV9wYXJzZWRVUkwtPnByb3RvY29sKCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAg
ICBXVEY6OlN0cmluZyBwYXRoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNl
c3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNl
ZFVSTC0+cGF0aCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygpOworICAgICAgICByZXR1cm4g
bV9wYXJzZWRVUkwtPnBhdGgoKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5n
IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNl
c3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNl
ZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVy
biBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgIH0KIAog
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KaW5kZXggYjFjMzZkYjJj
MDQ2OGE2NTFkNjQ3NmEyZjlkZWNkYjMyOTY1YmRkZC4uMDdjZDEwZjJhM2RmOTkwYzg2NmUwZWU4
OWM5OWEwNjM1MGZiZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
RG93bmxvYWRDbGllbnQubW0KQEAgLTIyMCw4ICsyMjAsOCBAQCB2b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNpZiBVU0UoU1lTVEVN
X1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQo
KSkgewogICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdDb250cm9s
bGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAgICAgICBXVEY6OlVSTCBkZXN0aW5hdGlvblVS
TCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVz
dGluYXRpb25GaWxlbmFtZSgpKTsKLSAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25VUkwuZnJh
Z21lbnRJZGVudGlmaWVyKCkubGVuZ3RoKCkpCisgICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9u
VVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5k
ZXN0aW5hdGlvbkZpbGVuYW1lKCkpOworICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblVSTC5z
ZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQcm94eS5yZXF1ZXN0KCkudXJsKCkuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY29udHJvbGxlci0+ZmluaXNoKGRlc3RpbmF0
aW9uVVJMKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDQ3YjU0Y2FkODQwMTE1ODZlZmI4MDk5YmEx
YTg5MzViNzEyNGI1ZDEuLjM5MzZlYjdiOTJmMGMzOWUyMTdhMzUxOThhNjRhNzQwY2RkMmQ0NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAKQEAgLTExNCwxNSArMTE0LDkgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hNYXAKIAog
ICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9kZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICAgICAgYXV0byBvcmlnaW5QYXRocyA9IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSwgIioi
KTsKLQogICAgICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEhhc2hTYWx0Rm9y
T3JpZ2luPj4gZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3Qg
YXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7Ci0gICAgICAgICAgICBVUkwgdXJsOwot
ICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsKLSAgICAgICAgICAgIHVybC5z
ZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2Fs
dCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBmb3IgKGF1dG8mIG9yaWdpblBh
dGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VE
aXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgICAgIGF1dG8gZGV2aWNlSWRIYXNoU2FsdCA9IFVS
TDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChvcmlnaW5QYXRoKS5sYXN0UGF0aENvbXBvbmVu
dCgpLnRvU3RyaW5nKCk7CiAKICAgICAgICAgICAgIGlmIChoYXNoU2FsdFNpemUgIT0gZGV2aWNl
SWRIYXNoU2FsdC5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBUaGUgbGVuZ3RoIG9m
IHRoZSBoYXNoIHNhbHQgKCVkKSBpcyBkaWZmZXJlbnQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgaGFz
aCBzYWx0cyBkZWZpbmVkIGluIFdlYktpdCAoJWQpIiwgZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgo
KSwgaGFzaFNhbHRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBkMzA1NTUzMDgwNDYyMzgxMzFmMGJmZWQ0MmQ1
ZjMwMTFmMmIxZTI1Li5iN2FmNWNkYWViNWQwM2IzMDliYWRiZDk2MzUzYTU2YmZiZDJmN2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwCkBAIC0xNDUsMTYgKzE0NSwxNSBAQCBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9T
dG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbgogICAg
IHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHBh
dGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHBhdGhFeHRlbnNpb24o
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nIGV4dGVuc2lvbjsKLSAgICBTdHJpbmcgZmls
ZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICBpZiAoIWZpbGVuYW1lLmVuZHNX
aXRoKCcvJykpIHsKLSAgICAgICAgc2l6ZV90IGV4dGVuc2lvblBvcyA9IGZpbGVuYW1lLnJldmVy
c2VGaW5kKCcuJyk7Ci0gICAgICAgIGlmIChleHRlbnNpb25Qb3MgIT0gbm90Rm91bmQpCi0gICAg
ICAgICAgICBleHRlbnNpb24gPSBmaWxlbmFtZS5zdWJzdHJpbmcoZXh0ZW5zaW9uUG9zICsgMSk7
Ci0gICAgfQotICAgIHJldHVybiBleHRlbnNpb24uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
KyAgICBhdXRvIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgaWYgKGZp
bGVuYW1lLmVuZHNXaXRoKCcvJykpCisgICAgICAgIHJldHVybiB7IH07CisgICAgc2l6ZV90IGxh
c3REb3RQb3NpdGlvbiA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKGxhc3RE
b3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4g
ZmlsZW5hbWUuc3Vic3RyaW5nKGxhc3REb3RQb3NpdGlvbiArIDEpLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ZTFiODY3YzU2NzJhMWVhNWVmMzQ3ODVkMWMwNjY1
ZTIxZWExYTZhLi42OTE0MTJmMzhmOGVjZTIwNTVhNDE0OGNlOGU1OGNlNGQ3Yjc5NWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyNTYsNyArMTI1Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAjZW5kaWYKIAogICAgIC8vIFdlIGZhaWxlZCB0
byBpc3N1ZSBhbiB1bml2ZXJzYWwgZmlsZSByZWFkIGFjY2VzcyBzYW5kYm94LCBmYWxsIGJhY2sg
dG8gaXNzdWluZyBvbmUgZm9yIHRoZSBiYXNlIFVSTCBpbnN0ZWFkLgotICAgIGF1dG8gYmFzZVVS
TCA9IFVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKKyAgICBhdXRvIGJhc2VVUkwgPSB1
cmwudHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCk7CiAgICAgYXV0byBiYXNlUGF0aCA9IGJhc2VVUkwu
ZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAoYmFzZVBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTUyNDcsNyArNTI0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAg
ICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtz
SW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCiAgICAgICAgICAgICAmJiBkZXN0aW5hdGlv
bkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQotICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lID8g
IWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUtPnVybCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNl
KQorICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0
KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCiAgICAgICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6QmFja0Zv
cndhcmQ7CiAKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1l
SW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9wdCwgV1RG
TW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3Ms
IFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7CkBA
IC01MzczLDcgKzUzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgICAgICAgICAg
c291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
byksIHRoaXMpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9j
ZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1
cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1f
bWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUtPnVybCgpLCByZXF1ZXN0LnVy
bCgpKSA6IGZhbHNlOworICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZy
YW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7
CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6
Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0
KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxk
T3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhp
cywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAt
NTU3MSw3ICs1NTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW8KIAogICAgICAgICByZXBs
eShuZXdQYWdlLT53ZWJQYWdlSUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKG1fcHJv
Y2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVhKCkpKTsKIAotICAgICAgICBuZXdQYWdlLT5tX3No
b3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBob3N0
c0FyZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOworICAgICAg
ICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24gPSBVUkwoeyB9LCBtYWluRnJhbWVVUkwpLmhvc3QoKSA9PSByZXF1ZXN0LnVybCgp
Lmhvc3QoKTsKIAogI2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRT
dXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IHRy
dWU7CkBAIC01NTc5LDcgKzU1NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFn
ZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpbwogICAgIH07
CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRp
YXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlm
aWVyKTsKLSAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFob3N0c0FyZUVxdWFsKG9yaWdp
bmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOworICAgIGJv
b2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2luYXRpbmdGcmFtZUluZm8tPnJlcXVlc3QoKS51
cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAgICAgYXV0byBuYXZpZ2F0aW9u
QWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBXVEY6Om51
bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICB0cnlTT0F1dGhvcml6YXRpb24oV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRoaXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3aW5kb3dGZWF0dXJlcyA9
IFdURk1vdmUod2luZG93RmVhdHVyZXMpXSAoUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBu
YXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJv
eHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMyNTg4YThhMDkxZDRiMDg3NTI4Y2Mz
MjU4OGQ3MGUzYjQ1MzFiZWYuLmU0YTg2ZmFhZjMxODM4YzhjZmEzZWQ3OWU4OWI4OTRkYzVjMjAy
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NTY3LDExICs1NjcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcKIAogICAgIC8vIFRoZXJl
J3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJpbmcgZG9lcyBub3QgcG9pbnQgdG8gYSBkaXJlY3Rvcnku
CiAgICAgLy8gR2V0IHVybCdzIGJhc2UgVVJMIHRvIGFkZCB0byBtX2xvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3MuCi0gICAgVVJMIGJhc2VVUkwoVVJMKCksIHVybC5iYXNlQXNTdHJpbmco
KSk7Ci0gICAgU3RyaW5nIHBhdGggPSBiYXNlVVJMLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgYXV0
byBwYXRoID0gdXJsLnRydW5jYXRlZEZvclVzZUFzQmFzZSgpLmZpbGVTeXN0ZW1QYXRoKCk7CiAg
ICAgaWYgKHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENs
aWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVy
c2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCiAgICAgLy8gdG8g
aGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgogICAgIG1fbG9jYWxQ
YXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KaW5kZXggMzE1Y2YzZmYxMzQxNGJlMTgwMzFmNzAxNmFkNzI2NjUxNGM0
NDk1Yy4uZjM0MjNhOTJhYmFkOWJmYWEwZjhlZWQ5MjEyYmUwYTJhN2M1ZDQwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6
YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gaW4gZG9t
YWlucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBVUkwoKSwgZG9tYWluIH07
CiAgICAgICAgICAgICAgICAgaWYgKHVybC5wcm90b2NvbCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJodHRwcyJfcyk7CisgICAgICAgICAgICAgICAg
ICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgICAgICAgICBpZiAoIXVybC5p
c1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFwcEJvdW5kRG9tYWluIHsgdXJsIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDkwMzk5MGJmOTRlODM4NWZkZTlmMTU0
YzNkMzVkYWU1MzNkMDAwM2IuLjQ4NzUxYWJmNDgzMjQ1ODk2MWJlNzNhYTVhNTk1YjA1ZGVjZWFm
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MCwxOSArNjAsMTAg
QEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6
Z2V0TWVkaWFLZXlPcmlnaW5zKCkKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAotICAgIFZlY3RvcjxTdHJpbmc+
IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSwgIioiKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBvcmln
aW5QYXRocykgewotICAgICAgICBVUkwgdXJsOwotICAgICAgICB1cmwuc2V0UHJvdG9jb2woImZp
bGUiX3MpOwotICAgICAgICB1cmwuc2V0UGF0aChvcmlnaW5QYXRoKTsKLQotICAgICAgICBTdHJp
bmcgbWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0KLSAgICAg
ICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNl
SWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpOwotICAgICAgICBpZiAoIXNlY3VyaXR5T3Jp
Z2luKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoKnNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChvcmlnaW5Q
YXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CisgICAgICAgIGlmIChhdXRvIHNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2lu
KTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGFlZDMwMWE1NGRkOTliZWI2
OGZiMTQzOGQyZDFjMjU0ZDAzMDE2ZTQuLmU0ZWZhNDgwOWYwYTNmZjUwYTYxNmZlMTFhNzUwNTg5
YTQ3OGVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQpAQCAtMTU2MiwxMCArMTU2Miw4IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0
YWxsUERGRG9jdW1lbnQoKQogICAgIGlmIChbbV9wZGZEb2N1bWVudCBpc0xvY2tlZF0pCiAgICAg
ICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7CiAKLSAgICBpZiAoW21fcGRmTGF5ZXJDb250
cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pIHsK
LSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdtZW50ID0gbV9mcmFtZS51cmwoKS5mcmFnbWVudElk
ZW50aWZpZXIoKTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldFVSTEZyYWdtZW50
OnBkZlVSTEZyYWdtZW50XTsKLSAgICB9CisgICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50OildKQorICAgICAgICBb
bV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6bV9mcmFtZS51cmwoKS5mcmFnbWVu
dElkZW50aWZpZXIoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsKIH0KIAogdm9pZCBQREZQbHVn
aW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3NjhiYTJkN2M0Njg2YzA2ZWU5
NzRhYmJkNjUyNTQxMWYzYmJjYzkzLi40MWQzZWQ4NWUzMzdjNTE2Y2I1Y2RlMGQ5N2NlMjE4Y2Ey
MTUxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTI0LDE3ICsyNCwx
MyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dUNsaWVudC5oIgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKLSNpbmNsdWRlICJXZWJD
b250ZXh0TWVudUNsaWVudC5oIgotCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKLSNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KQEAgLTQyLDcgKzM4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGVzdHJv
eWVkKCkKIHsKQEAgLTU2LDE5ICs1MSwyMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpk
b3dubG9hZFVSTChjb25zdCBVUkwmKQogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUp
CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2Vi
Q29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFj
ZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhz
ZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAg
YXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVy
bjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0i
ICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgiOworICAgIGF1dG8gc2VhcmNoU3RyaW5n
ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOworICAgIHNlYXJjaFN0cmluZy5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2Vx
dWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJfcywg
IisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgeyB9LCAiaHR0cHM6Ly93d3cuZ29v
Z2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZpZT1VVEYtOCZvZT1VVEYtOCIg
fTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAg
ICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oVVJMIHsgVVJMIHsg
fSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRM
aXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlVzZXJHZXN0
dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9
OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlYXJjaFVS
TCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlzdG9yeTo6Tm8sIFdlYkNvcmU6OkxvY2tC
YWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcs
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
IH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNv
cmU6OkZyYW1lKikKQEAgLTkxLDE0ICs4OCwxOCBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
OjpzdG9wU3BlYWtpbmcoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CisKICNlbmRpZgog
CiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKKwogdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKIHsKICAgICBtX3BhZ2UtPmNvbnRleHRNZW51
KCktPnNob3coKTsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAorCiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
aW5kZXggODA5NGE2MjgyMjYxYjVlODM5NzQ1ZDg2ZTYwNDNhZjRjZTZjNzIzOC4uMzBjNmZmZTIz
ZjFlNDlmMTVmNjY4MzhiNjg0MWI1NjYyYzdlZWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAg
ICBTdHJpbmcgdGl0bGUgPSBsYWJlbDsKICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIHRpdGxlID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYzg0NDhjNWFjMWY0MzYyZTQ0
MDNjM2FjMjlhMjg2YTlhZjVlYmI4ZS4uY2NhZTIxMmM1NmNhNDg5MWI2N2M2ZDNiZWU0Y2QzMzE5
MmIyYTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTg4Miw3ICs4ODIsNyBA
QCBzdGF0aWMgQk9PTCBzaG91bGRUcnlBcHBMaW5rKFdlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdl
YkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mCiAgICAgaWYgKCFhY3Rpb24ucHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0
YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSAmJiBob3N0c0FyZUVxdWFsKHRhcmdldEZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSwgYWN0aW9uLnVybCgpKSkKKyAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFy
Z2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnVybCgpLmhv
c3QoKSA9PSBhY3Rpb24udXJsKCkuaG9zdCgpKQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBy
ZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggNTM2NzNlOWUyZjVlZDNiZjRjYTUxMjRjOTJmNDE2Y2YzYzM3MmVmZi4uN2Q0ODllNjBm
ZjVhODEyNWM0ZDJjZmRhYWE2NDFjNTdhMThhOTQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yMjg2LDE0ICsyMjg2LDEwIEBAIC0gKERPTURv
Y3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvcldlYkFyY2hpdmU6KFdlYkFyY2hp
dmUgKil3ZWJBcmNoaXZlCiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFn
bWVudEZvckltYWdlRGF0YTooTlNEYXRhICopZGF0YSB3aXRoUmVsYXRpdmVVUkxQYXJ0OihOU1N0
cmluZyAqKXJlbGF0aXZlVVJMUGFydCBhbmRNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQog
ewotICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9IFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRX
aXRoRGF0YTpkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQocmVsYXRpdmVV
UkxQYXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNSU1FVHlwZTptaW1lVHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZU5hbWU6bmlsXTsKLSAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiBfZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJh
Z21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZV07Ci0gICAgW3Jlc291cmNlIHJlbGVhc2Vd
OwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBhdXRvIHJlc291cmNlID0gYWRvcHROUyhbW1dl
YlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YQorICAgICAgICBVUkw6VVJMOjpmYWtl
VVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmcgeyByZWxhdGl2ZVVSTFBhcnQgfSkKKyAgICAgICAg
TUlNRVR5cGU6bWltZVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOwor
ICAgIHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdl
UmVzb3VyY2U6cmVzb3VyY2UuZ2V0KCldOwogfQogCiAtIChCT09MKWZvY3VzZWROb2RlSGFzQ29u
dGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggYWM2YjcxMzhiODg5N2MzODkyNTNlMjUyNDUwNGQzNDBlMDY2OWI3YS4uN2E0ZjVhOGVm
MmUwYzVlNmM1OWFhY2RmMmEwMTQ4YTY2MTdiMjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yMzA2LDcgKzIzMDYsNyBAQCAtICh2
b2lkKWNsb3NlCiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfd2ViX2RvY3VtZW50RnJhZ21l
bnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlw
ZTooTlNTdHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbWFnZU1JTUVUeXBlOihOU1N0cmluZyAqKWlt
YWdlTUlNRVR5cGUKIHsKLSAgICBhdXRvIGZpbGVuYW1lID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5n
QnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5nOkAiLyIgd2l0aFN0cmluZzpAIi4iXTsKKyAg
ICBTdHJpbmcgZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlwZSBzdHJpbmdCeVJlcGxhY2luZ09jY3Vy
cmVuY2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAiLiJdOwogICAgIGF1dG8gcmVzb3VyY2Ug
PSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbcGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV0KICAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhS
ZWxhdGl2ZVBhcnQoZmlsZW5hbWUpIE1JTUVUeXBlOmltYWdlTUlNRVR5cGUgdGV4dEVuY29kaW5n
TmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOwogICAgIHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2Vd
IF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2UuZ2V0KCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGFhNTFiNjM5NDg4OGE3MGI3ZjBkOWRiYTA1
MWZlMjViMWUxNmZmOTcuLmYxNDE4NjMwZWY2ZTlkYTJjMzM5ZjBhZDFlZDhlZTY2OWE4ODg3YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1NSw3ICsyNTUsNyBAQCAtIChp
ZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlv
bkNvbnRyb2xsZXIKICAgICAgICAgcmV0dXJuIFtbW1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKIAogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBOU1N0cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBb
dXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBTdHJpbmcgYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJs
IGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1l
bnQoKSkgewogICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAi
bWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0aW9uTWFpbHRv
TGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKaW5kZXggNjQxYWMzNTRjMzQxOTY3ZWE2Y2VkNjkwZDVlNmQ0NWM2YzJjMmExYS4u
Y2M4Nzc1M2EyODQ3MjhjOTJiNjcwOGJiNGEwNjhjODBjYTU3MzVhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEs
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzgsMTEgKzM4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4gUGx1Z2luUGFja2FnZUJ5TmFt
ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbHVnaW5QYWNrYWdlPj4gUGx1
Z2luUGFja2FnZUJ5TmFtZU1hcDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURB
VEFfQ0FDSEUpCiAKLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVBlcnNpc3RlbnRQbHVnaW5N
ZXRhZGF0YUNhY2hlU2l6ZSA9IDMyNzY4OworY29uc3RleHByIHNpemVfdCBtYXhpbXVtUGVyc2lz
dGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVTaXplID0gMzI3Njg7CiAKIHN0YXRpYyBib29sIGdQZXJz
aXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUlzRW5hYmxlZDsKIApAQCAtNTUsOSArNTUsNiBAQCBT
dHJpbmcmIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlUGF0aCgpCiAjZW5kaWYKIAogUGx1
Z2luRGF0YWJhc2U6OlBsdWdpbkRhdGFiYXNlKCkKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X01FVEFEQVRBX0NBQ0hFKQotICAgIDogbV9wZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUlzTG9hZGVk
KGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKQEAgLTIyOCw3ICsyMjUsNyBAQCBQbHVnaW5QYWNrYWdl
KiBQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICByZXR1cm4gcGx1Z2luQ2hvaWNlc1swXTsKIH0KIAotU3RyaW5nIFBsdWdpbkRhdGFi
YXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3QK
K1N0cmluZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBl
eHRlbnNpb24pIGNvbnN0CiB7CiAgICAgaWYgKGV4dGVuc2lvbi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTI1MCw3ICsyNDcsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJh
c2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAog
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMgPSBtaW1lX2l0LT52
YWx1ZTsKICAgICAgICAgICAgIGJvb2wgZm91bmRNYXBwaW5nID0gZmFsc2U7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewotICAg
ICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGV4dGVuc2lvbnNbaV0sIGV4
dGVuc2lvbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IHsgZXh0ZW5zaW9uc1tpXSB9LCBleHRlbnNpb24pKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbiA9ICgqaXQpLmdldCgpOwogCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwcmVmZXJyZWRQbHVnaW4gJiYgUGx1Z2luUGFja2FnZTo6ZXF1YWwoKnBs
dWdpbiwgKnByZWZlcnJlZFBsdWdpbikpCkBAIC0yODQsMjAgKzI4MSwxOSBAQCBQbHVnaW5QYWNr
YWdlKiBQbHVnaW5EYXRhYmFzZTo6ZmluZFBsdWdpbihjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHBs
dWdpbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICAKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSB1
cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRo
Q29tcG9uZW50KCk7CiAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBpbnQgZXh0ZW5zaW9u
UG9zID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKLSAgICBpZiAoZXh0ZW5zaW9uUG9zID09
IC0xKQotICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvIGRvdFBvc2l0aW9uID0gZmlsZW5hbWUu
cmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoZG90UG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lv
biA9IE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVuYW1lLnN1YnN0cmluZyhleHRlbnNpb25Qb3Mg
KyAxKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uID0gTUlNRVR5cGVGb3JFeHRl
bnNpb24oZmlsZW5hbWUuc3Vic3RyaW5nKGRvdFBvc2l0aW9uICsgMSkpOwogICAgIFBsdWdpblBh
Y2thZ2UqIHBsdWdpbiA9IHBsdWdpbkZvck1JTUVUeXBlKG1pbWVUeXBlRm9yRXh0ZW5zaW9uKTsK
ICAgICBpZiAoIXBsdWdpbikgewotICAgICAgICAvLyBGSVhNRTogaWYgbm8gcGx1Z2luIGNvdWxk
IGJlIGZvdW5kLCBxdWVyeSBXaW5kb3dzIGZvciB0aGUgbWltZSB0eXBlCi0gICAgICAgIC8vIGNv
cnJlc3BvbmRpbmcgdG8gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IC8vIEZJWE1FOiBJZiBubyBwbHVnaW4gY291bGQgYmUgZm91bmQsIHF1ZXJ5IFdpbmRvd3MgZm9y
IHRoZSBNSU1FIHR5cGUgY29ycmVzcG9uZGluZyB0byB0aGUgZXh0ZW5zaW9uLgorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCiAgICAgbWltZVR5cGUgPSBtaW1lVHlwZUZvckV4
dGVuc2lvbjsKQEAgLTM3NCw2ICszNzAsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjphZGREaXNh
YmxlZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIH0KIAogI2lmICFFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKKwogLy8gRm9yIFNhZmFyaS9XaW4gdGhlIGZvbGxvd2luZyB0
aHJlZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZAogLy8gaW4gUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
LCBidXQgaWYgd2UgY2FuIHVzZSBXZWJDb3JlIGNvbnN0cnVjdHMKIC8vIGZvciB0aGUgbG9naWMg
d2Ugc2hvdWxkIHBlcmhhcHMgbW92ZSBpdCBoZXJlIHVuZGVyIFhQX1dJTj8KQEAgLTQ3MCw4ICs0
NjcsOCBAQCBzdGF0aWMgYm9vbCByZWFkVGltZSh0aW1lX3QmIHJlc3VsdFRpbWUsIGNoYXIqJiBz
dGFydCwgY29uc3QgY2hhciogZW5kKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgY29u
c3QgY2hhciBzY2hlbWFWZXJzaW9uID0gJzEnOwotc3RhdGljIGNvbnN0IGNoYXIgcGVyc2lzdGVu
dFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZVtdID0gIlBsdWdpbk1ldGFkYXRhQ2FjaGUuYmlu
IjsKK2NvbnN0ZXhwciBjaGFyIHNjaGVtYVZlcnNpb24gPSAnMSc7Citjb25zdGV4cHIgY2hhciBw
ZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lW10gPSAiUGx1Z2luTWV0YWRhdGFD
YWNoZS5iaW4iOwogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRh
Q2FjaGUoKQogewpAQCAtNjE3LDUgKzYxNCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnNldFBl
cnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aChjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRNZXRhCiB7
CiAgICAgV2ViQ29yZTo6cGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRoKCkgPSBwZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZVBhdGg7CiB9CisKICNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggYWNjMGUxZmJh
NzQ2NDI5NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNy4uZTg0MTc3ZTRlNjE5ZTY4NDliMDZhNTYz
MGY4YzViMzU4NTg4MjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjUsMjEgKzI1LDE0IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgUGx1Z2luRGF0YWJhc2VfaAotI2RlZmluZSBQbHVnaW5E
YXRhYmFzZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIEZy
YW1lOwotICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgUGx1Z2luRGF0YWJhc2VDbGllbnQ7
Ci0gICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKIAogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8
UGx1Z2luUGFja2FnZT4sIFBsdWdpblBhY2thZ2VIYXNoLCBQbHVnaW5QYWNrYWdlSGFzaFRyYWl0
cz4gUGx1Z2luU2V0OwogCkBAIC03OSw3ICs3Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpOwog
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcygpIGNvbnN0IHsgcmV0dXJu
IG1fcGx1Z2luRGlyZWN0b3JpZXM7IH0KIAotICAgICAgICBTdHJpbmcgTUlNRVR5cGVGb3JFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGNvbnN0OwogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAgICAgICAgIHN0YXRpYyBib29sIGlzUGVyc2lzdGVu
dE1ldGFkYXRhQ2FjaGVFbmFibGVkKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldFBlcnNpc3Rl
bnRNZXRhZGF0YUNhY2hlRW5hYmxlZChib29sIGlzRW5hYmxlZCk7CkBAIC04OCw2ICs4MCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgU3Ry
aW5nIE1JTUVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKSBjb25zdDsKKwog
ICAgICAgICB2b2lkIGdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4m
KSBjb25zdDsKICAgICAgICAgdm9pZCBnZXREZWxldGVkUGx1Z2lucyhQbHVnaW5TZXQmKSBjb25z
dDsKICAgICAgICAgYm9vbCBmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZChjb25zdCBTdHJpbmcm
KSBjb25zdDsKQEAgLTEwOCwxMCArMTAyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBIYXNoTWFwPFN0cmluZywgdGltZV90PiBtX3BsdWdpblBhdGhzV2l0aFRpbWVzOwogICAgICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+LCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+IG1fcHJlZmVycmVkUGx1Z2luczsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X01FVEFEQVRBX0NBQ0hFKQotICAgICAgICBib29sIG1fcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVJ
c0xvYWRlZDsKKyAgICAgICAgYm9vbCBtX3BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlSXNMb2FkZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBjMjY1ZTA4M2UxZjdjOWFm
YzgzYmM4ZTAxZThmNDRlZWY3YWI1M2I5Li43ZjM4YmJhOTg2NDlmNDhlNzlkYzZkZDljOTNkZjY1
MGU1ODNkMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yNSwyMSArMjUs
MTQgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKLSNpbmNsdWRlICJX
ZWJFbGVtZW50UHJvcGVydHlCYWcuaCIKLSNpbmNsdWRlICJXZWJMb2NhbGl6YWJsZVN0cmluZ3Mu
aCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KIFdlYkNvbnRleHRNZW51Q2xpZW50OjpXZWJDb250ZXh0TWVu
dUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBA
IC01NSwyMiArNDgsMjMgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwo
Y29uc3QgVVJMJiB1cmwpCiAgICAgbV93ZWJWaWV3LT5kb3dubG9hZFVSTCh1cmwpOwogfQogCi12
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBm
cmFtZSkKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVT
cGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNl
cyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7Cisg
ICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/
cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgiOworICAgIGF1dG8gc2VhcmNoU3Ry
aW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOworICAgIHNlYXJjaFN0cmluZy5z
dHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNjYXBl
U2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUyMCJf
cywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgeyB9LCAiaHR0cHM6Ly93d3cu
Z29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZpZT1VVEYtOCZvZT1VVEYt
OCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAg
ICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oVVJMIHsgVVJM
IHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zvcndh
cmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlVzZXJH
ZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlYXJj
aFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlzdG9yeTo6Tm8sIFdlYkNvcmU6Okxv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJp
bmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93
KTsKIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KEZy
YW1lKikKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShXZWJD
b3JlOjpGcmFtZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOWRiNTU3MDlkOTc2NjYzOGJi
MDZmMzkxNmY4MjJjN2M4MmNkOGU4Li45ZDlkZGY5ZjI5YzYyY2VkOTZkNDE4N2UzZmM5ZjZhMTdl
MmU4Zjc5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5n
IHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwOiBSZW1vdmVk
IHRoZSB0ZXN0IGZvcgorICAgICAgICBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCBzaW5j
ZSB3ZSByZW1vdmVkIHRoYXQgZnVuY3Rpb24uCisgICAgICAgIFVwZGF0ZWQgZm9yIHJlbmFtZSBv
ZiBVUkw6OnBhc3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAgICAgICBVcGRhdGVkIGFyZ3VtZW50
cyB0byBpc01hdGNoaW5nRG9tYWluIHRvIHBhc3MgbGl0ZXJhbHMgdGhhdCBjYW4gYmUgY29udmVy
dGVkCisgICAgICAgIHRvIFN0cmluZ1ZpZXcgcmF0aGVyIHRoYW4gQVNDSUlMaXRlcmFsLCB3aGlj
aCBTdHJpbmdWaWV3IGRvZXNuJ3QgeWV0IHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNoZWNrVVJMKTogVXBkYXRlZCBmb3IgcmVuYW1lIG9mIFVSTDo6cGFzc3dv
cmQgZnJvbSBVUkw6OnBhc3MuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZl
VVJMKTogRGl0dG8uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2Vz
KTogRGl0dG8uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVy
ZW5jZXMpOiBEaXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RVc2VyUGFzc3dvcmQp
OiBEaXR0by4KKwogMjAyMC0wNC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIEV4cG9zZSAtX3dlYlZpZXc6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtOmluUGFnZUNhY2hlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKaW5kZXgg
OTM3YjlmOTQwYmY5MTEzZmNlMzcyM2ZhZjBjNWU1YmY2YjFjODdkZS4uNmJmMjc1YTUxOGQ0N2Ew
ZTJmMjE3OTRhMDc4ZDYxOWNlN2M1MWZkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVVJMLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
UkwuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRFU1RfRihXVEZfVVJMLCBVUkxDb25zdHJ1Y3RvckNv
bnN0Q2hhcikKICAgICBFWFBFQ1RfVFJVRSghIWt1cmwucG9ydCgpKTsKICAgICBFWFBFQ1RfRVEo
ODA4MCwga3VybC5wb3J0KCkudmFsdWUoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5h
bWUiKSwga3VybC51c2VyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1
cmwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3N3
b3JkKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoIi9pbmRleC5odG1sIiksIGt1cmwucGF0aCgp
KTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmRleC5odG1sIiksIGt1cmwubGFzdFBhdGhDb21w
b25lbnQoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygidmFyPXZhbCIpLCBrdXJsLnF1ZXJ5KCkp
OwpAQCAtMjYxLDU3ICsyNjEsNiBAQCBURVNUX0YoV1RGX1VSTCwgRXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcikKICAgICB9CiB9CiAKLVRFU1RfRihXVEZfVVJMLCBFcXVhbElnbm9yaW5n
UXVlcnlBbmRGcmFnbWVudCkKLXsKLSAgICBzdHJ1Y3QgVGVzdENhc2UgewotICAgICAgICBjb25z
dCBjaGFyKiB1cmwxOwotICAgICAgICBjb25zdCBjaGFyKiB1cmwyOwotICAgICAgICBib29sIGV4
cGVjdGVkOwotICAgIH0gY2FzZXNbXSA9IHsKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20v
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb20vI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCNoYXNoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL290aGVycGF0
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8v
ZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODAvI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRy
dWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoIiwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgj
aGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6
Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwg
dHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkjaGFzaCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MC9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0s
Ci0gICAgICAgIHsiaHR0cDovL25vdC1leGFtcGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUu
Y29tOjgwLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
OjgxLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCB0cnVlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEiLCBmYWxz
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgjaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCi0g
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCi0g
ICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmls
ZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCNoYXNo
IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8v
L3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0
cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5I2hhc2giLCAi
ZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0
aC90by9vdGhlcl9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNl
fSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXIvZmlsZS5odG1sIiwgImZpbGU6Ly8v
cGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZGF0YTp0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNl
dD11dGYtODtiYXNlNjQsNzYwLzc2MC83NjAvIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbSIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0
cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbSIsIGZhbHNlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vP3F1ZXJ5IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8i
LCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSNoYXNoIiwgImZp
bGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgfTsKLQotICAgIGZvciAoY29uc3QgYXV0
byYgdGVzdCA6IGNhc2VzKSB7Ci0gICAgICAgIFVSTCB1cmwxID0gY3JlYXRlVVJMKHRlc3QudXJs
MSk7Ci0gICAgICAgIFVSTCB1cmwyID0gY3JlYXRlVVJMKHRlc3QudXJsMik7Ci0gICAgICAgIEVY
UEVDVF9FUSh0ZXN0LmV4cGVjdGVkLCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCh1cmwx
LCB1cmwyKSkKLSAgICAgICAgICAgIDw8ICJUZXN0IGZhaWxlZCBmb3IgIiA8PCB0ZXN0LnVybDEg
PDwgIiB2cy4gIiA8PCB0ZXN0LnVybDI7Ci0gICAgfQotfQotCiBURVNUX0YoV1RGX1VSTCwgUHJv
dG9jb2xJc0luSFRUUEZhbWlseSkKIHsKICAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KHsgfSkpOwpAQCAtMzc2LDIyICszMjUsMjIgQEAgVEVTVF9GKFdURl9VUkws
IEhvc3RJc01hdGNoaW5nRG9tYWluKQogCiAgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdE
b21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWlu
KGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigi
b3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5v
cmciX3MpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtp
dC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIikp
OworICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIikpOwor
ICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsK
IAotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigicmciX3MpKTsKLSAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIi5vcmciX3MpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3LndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBF
Q1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0dHA6Ly93d3cud2Via2l0Lm9yZyJfcykp
OworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigicmciKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCIub3JnIikpOworICAgIEVYUEVDVF9GQUxT
RSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3cud2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFM
U0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0dHA6Ly93d3cud2Via2l0Lm9yZyIpKTsKIAogICAg
IHVybCA9IGNyZWF0ZVVSTCgiZmlsZTovLy93d3cud2Via2l0Lm9yZyIpOwogCiAgICAgRVhQRUNU
X1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVF
KHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
dXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNN
YXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNN
YXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJs
LmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hp
bmdEb21haW4oIndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5n
RG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsKIAogICAgIFVSTCBlbXB0eVVSTDsKICAgICBFWFBF
Q1RfRkFMU0UoZW1wdHlVUkwuaXNNYXRjaGluZ0RvbWFpbihTdHJpbmcgeyB9KSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAppbmRleCAxMDM5ZTU0YjFhZWI3
YzI2MWY1YTJhYzM5MjhlMTE5ODczYjM2Y2M4Li4wOGEzYTllOTg4M2QwNjhiY2MzZWI1ZGYxNTFl
NjBmNzFiNDA3YzlkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
UkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNl
ci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICAKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5o
b3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCku
dmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkp
OwpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgCiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9z
dCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZh
bHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsK
QEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIAogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9y
dCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5w
YXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tS
ZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGIKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnBy
b3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQ
RUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtNDYyLDE5ICs0NjIsMTkg
QEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIEJhc2ljKQogICAgIGNoZWNrVVJMKCJodHRwOi8vOkBo
b3N0IiwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hv
c3QvIn0pOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0VXNlclBhc3MoY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBkZWNvZGVkLCBjb25zdCBTdHJpbmcmIGVuY29kZWQpCitzdGF0aWMg
dm9pZCB0ZXN0VXNlclBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
ZGVjb2RlZCwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQogewogICAgIFVSTCB1c2VyVVJMKFVSTCgp
LCBtYWtlU3RyaW5nKCJodHRwOi8vIiwgdmFsdWUsICJAZXhhbXBsZS5jb20vIikpOwogICAgIFVS
TCBwYXNzVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwOi8vdXNlcjoiLCB2YWx1ZSwgIkBleGFt
cGxlLmNvbS8iKSk7CiAgICAgRVhQRUNUX0VRKGVuY29kZWQsIHVzZXJVUkwuZW5jb2RlZFVzZXIo
KSk7Ci0gICAgRVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwuZW5jb2RlZFBhc3MoKSk7CisgICAg
RVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwuZW5jb2RlZFBhc3N3b3JkKCkpOwogICAgIEVYUEVD
VF9FUShkZWNvZGVkLCB1c2VyVVJMLnVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKGRlY29kZWQsIHBh
c3NVUkwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgcGFzc1VSTC5wYXNzd29yZCgp
KTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNv
bnN0IFN0cmluZyYgZW5jb2RlZCkKK3N0YXRpYyB2b2lkIHRlc3RVc2VyUGFzc3dvcmQoY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQogewotICAgIHRlc3RVc2VyUGFz
cyh2YWx1ZSwgdmFsdWUsIGVuY29kZWQpOworICAgIHRlc3RVc2VyUGFzc3dvcmQodmFsdWUsIHZh
bHVlLCBlbmNvZGVkKTsKIH0KIAogVEVTVF9GKFdURl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQpA
QCAtNDgzLDIwICs0ODMsMjAgQEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQog
ICAgIGF1dG8gaW52YWxpZFN1cnJvZ2F0ZSA9IHV0ZjE2U3RyaW5nPDM+KHsweEQ4MDAsICdBJywg
J1wwJ30pOwogICAgIGF1dG8gcmVwbGFjZW1lbnRBID0gdXRmMTZTdHJpbmc8Mz4oezB4RkZGRCwg
J0EnLCAnXDAnfSk7CiAKLSAgICB0ZXN0VXNlclBhc3MoImEiLCAiYSIpOwotICAgIHRlc3RVc2Vy
UGFzcygiJSIsICIlIik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlMjUiLCAiJSIsICIlMjUiKTsKLSAg
ICB0ZXN0VXNlclBhc3MoIiUyNTI1IiwgIiUyNSIsICIlMjUyNSIpOwotICAgIHRlc3RVc2VyUGFz
cygiJUZYIiwgIiVGWCIpOwotICAgIHRlc3RVc2VyUGFzcygiJTAwIiwgU3RyaW5nOjpmcm9tVVRG
OCgiXDAiLCAxKSwgIiUwMCIpOwotICAgIHRlc3RVc2VyUGFzcygiJUYlMjUiLCAiJUYlIiwgIiVG
JTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlWCUyNSIsICIlWCUiLCAiJVglMjUiKTsKLSAgICB0
ZXN0VXNlclBhc3MoIiUlMjUiLCAiJSUiLCAiJSUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygi8J+S
qSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiXwn5Kp
IiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKLSAgICB0ZXN0VXNlclBhc3ModmFsaWRT
dXJyb2dhdGUsICIlRjAlOTAlODUlOTUiKTsKLSAgICB0ZXN0VXNlclBhc3MocmVwbGFjZW1lbnRB
LCAiJUVGJUJGJUJEQSIpOwotICAgIHRlc3RVc2VyUGFzcyhpbnZhbGlkU3Vycm9nYXRlLCByZXBs
YWNlbWVudEEsICIlRUYlQkYlQkRBIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiYSIsICJhIik7
CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJSIsICIlIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgi
JTI1IiwgIiUiLCAiJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTI1MjUiLCAiJTI1Iiwg
IiUyNTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJUZYIiwgIiVGWCIpOworICAgIHRlc3RV
c2VyUGFzc3dvcmQoIiUwMCIsIFN0cmluZzo6ZnJvbVVURjgoIlwwIiwgMSksICIlMDAiKTsKKyAg
ICB0ZXN0VXNlclBhc3N3b3JkKCIlRiUyNSIsICIlRiUiLCAiJUYlMjUiKTsKKyAgICB0ZXN0VXNl
clBhc3N3b3JkKCIlWCUyNSIsICIlWCUiLCAiJVglMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3Jk
KCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCLwn5KpIiwgIiVD
MyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiXwn5KpIiwg
IiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKHZhbGlk
U3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZChyZXBsYWNl
bWVudEEsICIlRUYlQkYlQkRBIik7CisgICAgdGVzdFVzZXJQYXNzd29yZChpbnZhbGlkU3Vycm9n
YXRlLCByZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFy
c2VyLCBQYXJzZVJlbGF0aXZlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAppbmRleCBhMjY4MTZkYTE0
OTFmNmUzYjIwNTdjNjZhN2RjYTQ1OWQxMzYxNGQzLi5lMjYxNzkzMzQyNTIyNDNiYTVmMTQxODBm
NzIyNGViNzc1NGRjYTFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcApAQCAtOTQsNyArOTQsNyBA
QCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4
dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwogICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgdXJsU3Ry
aW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5w
cm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkp
OwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5n
LCBjb25zdAogICAgIGF1dG8gdXJsID0gVVJMKFVSTCh7IH0sIGJhc2VVUkxTdHJpbmcpLCB1cmxT
dHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJs
LnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBh
cnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGF0aCwgdXJsLnBhdGgoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397316</attachid>
            <date>2020-04-22 22:00:46 -0700</date>
            <delta_ts>2020-04-23 18:40:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200422220045.patch</filename>
            <type>text/plain</type>
            <size>222568</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjN2QwM2YwNjhjMDI4MTk4ODI0OTE1
NGVkM2Q5MWUwMDdjNGQwMzkuLjU4ZjI2MWIzZWRjZWU5MWUzZjE0ZjY4MDBmZGQzZjJhMWQxZTUy
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSk6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25zdCk6IEFkZGVkIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0aGUgY2FsbCBzaXRl
IGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4KKworICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0aW9ucyBhYm92ZS4K
KyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0aGUgZmluZCBmdW5j
dGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgdGVtcGxh
dGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludCk6IERpdHRv
LgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gQnVpbGQgd2l0aCBVQ2hhciBhcyBjaGFyMTZfdCBldmVu
IGluIGJ1aWxkcyB0aGF0IHVzZSBBcHBsZSdzIGludGVybmFsIFNESwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNk
Y2ViMzdiODkxYjg0MzM1OGIwZWVmYjFkZTUzODkxYWY1MDBjMzIuLmQ2NTg5NGFjNTliZjY0MWE1
MmE3NTU4OGQ0ZTYxZWJmZjc2NzRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMDEgQEAKKzIw
MjAtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
VVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVS
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjptYXRjaFVSTHMpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGxzIHRvIGhhc1F1ZXJ5Lgor
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aCk6IFVzZSBoYXNDcmVkZW50aWFscy4K
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1ZhbGlkVVJMQmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcik6IFVzZSBo
YXNDcmVkZW50aWFscy4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWW91VHViZVVSTCk6IFRh
a2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OnF1ZXJ5S2V5c0FuZFZhbHVlcyk6IFRh
a2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NBbmRDcmVhdGVZb3VUdWJl
VVJMKTogVXNlIGF1dG8gc2luY2UgVVJMIHBpZWNlcyBhcmUKKyAgICAgICAgbm93IHJldHVybmVk
IGFzIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwpOgorICAgICAgICBVc2UgU3RyaW5nVmlldyBh
bmQgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNvdXJjZU5hbWUpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVt
ZW50IGNvbnN0KToKKyAgICAgICAgVXNlIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6IFVzZSBzZXRI
b3N0QW5kUG9ydC4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayk6IFVwZGF0ZSBzaW5jZQorICAg
ICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBTdHJpbmdWaWV3LgorCisgICAgICAgICog
ZG9tL1RyZWVTY29wZS5jcHA6IEFkZGVkIGEgY29tbWVudC4KKworICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIGxhc3RQ
YXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LiBBbHNvIGdvdCByaWQgb2Ygc29tZSBz
dHJhbmdlCisgICAgICAgIHVzZSBvZiBBdG9tU3RyaW5nIHRoYXQgd2FzIG5vdCBuZWNlc3Nhcnkg
YW5kIHVzZWQgV1RGTW92ZSBtb3JlLgorCisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKTog
VXBkYXRlIHNpbmNlCisgICAgICAgIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdW
aWV3LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVGb3JEaXNw
bGF5IGNvbnN0KToKKyAgICAgICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWls
ZGVyLCBhbmQgU3RyaW5nVmlldyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZyBmb3IgbmFtZSBh
bmQgZXh0ZW5zaW9uIHZhbHVlcy4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogVXBkYXRl
IHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3Lgor
CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKTogVXBkYXRlIHNp
bmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKwor
ICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDogQ2hhbmdlZCBtYW55IGZ1bmN0aW9ucyB0byB0YWtl
IGEgU3RyaW5nVmlldywgY2hhbmdlZAorICAgICAgICB2YXJpb3VzIG90aGVyIGZ1bmN0aW9ucyB0
byBjYWxsIHRvU3RyaW5nLCBzaW5jZSB0aGUgdW5kZXJseWluZyBVUkwKKyAgICAgICAgZnVuY3Rp
b24gbm93IHJldHVybnMgYSBTdHJpbmdWaWV3LiBVcGRhdGVkIG5hbWVzIHNpbmNlICJwYXNzIiBp
cyBub3cKKyAgICAgICAgInBhc3N3b3JkIi4KKyAgICAgICAgKFdlYkNvcmU6OmNvdW50QVNDSUlE
aWdpdHMpOiBBZGRlZC4gUmVwbGFjZXMgdW51c3VhbCBmdW5jdGlvbgorICAgICAgICBuYW1lZCBw
YXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24gYmVjYXVzZSB3ZSBjYW4gdXNlIFN0cmluZ1ZpZXcg
bm93CisgICAgICAgIGFuZCBzbyBkb24ndCBuZWVkIHN1Y2ggYW4gdW51c3VhbCBmdW5jdGlvbi4K
KworICAgICAgICAqIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25SZXF1ZXN0KTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorICAgICAgICBBbHNvIHJlbW92ZWQgdW5uZWNlc3NhcnkgdXNlIG9mIEFT
Q0lJTGl0ZXJhbCB0aGF0IGh1cnRzIHBlcmZvcm1hbmNlCisgICAgICAgIGEgdGlueSBiaXQuCisg
ICAgICAgIChXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OnVybEZvclRlc3RpbmcgY29uc3Qp
OiBVc2UgbWFrZVN0cmluZworICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlvblVSTCk6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOiBV
c2UgaGFzQ3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwpOiBVcGRh
dGUgc2luY2UgcXVlcnkgcmV0dXJucworICAgICAgICBTdHJpbmdWaWV3LgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjps
b2FkSW5TYW1lRG9jdW1lbnQpOiBVc2UgZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSBvbgorICAgICAg
ICBmcmFnbWVudCBpZGVudGlmaWVycyB0byBwcmVzZXJ2ZSBiZWhhdmlvciwgc2luY2UgYXQgdGhp
cyB0aW1lCisgICAgICAgIFN0cmluZ1ZpZXcgPT0gU3RyaW5nVmlldyBkb2VzIG5vdCByZXNwZWN0
IG51bGxpdHksIGJ1dCBTdHJpbmcgPT0gU3RyaW5nIGRvZXMuCisKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwpOiBVc2UgZmlsZVVSTFdpdGhGaWxlU3lz
dGVtUGF0aC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYW5pZmVzdFBhdGgpOiBSZXR1cm4gYSBTdHJpbmdWaWV3Lgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYW5pZmVzdCk6IFVzZSBTdHJpbmdWaWV3LgorCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbiBjb25zdCk6IFVwZGF0ZSBzaW5jZQor
ICAgICAgICBmcmFnbWVudElkZW50aWZlciByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVx
dWVzdFVSTCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwpOiBVcGRhdGVkIGxv
ZyBtZXNzYWdlLgorCisgICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQpOiBVcGRhdGVkIGZvciBVUkw6OnBhc3N3b3Jk
IG5hbWUgY2hhbmdlCisgICAgICAgIGFuZCB0byB1c2UgdGhlIG5ldyBzdHJpbmdXaXRob3V0UXVl
cnlPckZyYWdtZW50SWRlbnRpZmllciByYXRoZXIgdGhhbiB0aGUKKyAgICAgICAgb2xkIGVxdWFs
SWdub3JpbmdRdWVyeUFuZEZyYWdtZW50LgorCisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6aHJlZiBjb25zdCk6IFVzZSByZW1vdmVDcmVk
ZW50aWFscy4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpwb3J0IGNvbnN0KTogU3RyZWFt
bGluZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cGF0aG5hbWUgY29uc3QpOiBVc2Ug
YW4gQVNDSUlMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNlYXJjaCBjb25z
dCk6IFVzZSBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrLgorICAgICAgICAoV2ViQ29yZTo6
TG9jYXRpb246Omhhc2ggY29uc3QpOiBVc2UgZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdO
dW1iZXJTaWduLgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQpOiBVc2UgcGFy
c2VVSW50MTYuCisKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6IENv
ZGluZyBzdHlsZSB0d2Vha3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRl
bnNpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIFVzZSBjb250YWlucyBpbnN0ZWFkIG9mIHJldmVy
c2VGaW5kIHRvIGNoZWNrIGZvciBhIHBlcmlvZCBpbiB0aGUgZmlsZW5hbWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bG9hZCk6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQgaXMgYSBT
dHJpbmdWaWV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9J
bnRlcm5hbFByb3RvY29sKTogVXBkYXRlZCB0byB1c2UgbWFrZVN0cmluZyBzaW5jZQorICAgICAg
ICBzZXRQcm90b2NvbCB0YWtlcyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDogUmVuYW1lZCBtX3Bhc3MgdG8gbV9wYXNz
d29yZAorICAgICAgICBhbmQgY2FsbCBwYXNzd29yZCBpbnN0ZWFkIG9mIHBhc3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6cmVtb3ZlQ3JlZGVudGlhbHMpOiBVc2UgcmVt
b3ZlQ3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUNGVVJMQ29ubmVjdGlvbik6IFVwZGF0ZWQgZm9yIG1fcGFzc3dvcmQKKyAgICAgICAgbmFtZSBj
aGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0
KTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZCBhbmQKKyAgICAgICAgcGFzc3dvcmQgbmFtZSBjaGFu
Z2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3Jk
QmFzZWRBdXRoZW50aWNhdGlvbik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxQcm94
eVNldHRpbmdzOjpzZXRVc2VyUGFzcyk6IFVwZGF0ZWQgZm9yIHNldFBhc3N3b3JkIG5hbWUgY2hh
bmdlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJveHlVcmwpOiBVc2UgaGFzQ3JlZGVudGlh
bHMsIHVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFByb3h5U2V0dGluZ3M6OnBhc3N3b3JkIGNvbnN0KTogVXBkYXRlZCBmb3IgcGFzc3dvcmQgbmFt
ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBVcGRhdGVkIGZvcgorICAgICAgICBtX3Bhc3N3b3Jk
IG5hbWUgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmdldENyZWRl
bnRpYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2Vu
ZFJlcXVlc3QpOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkIGFuZAorICAgICAgICBwYXNzd29yZCBu
YW1lIGNoYW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VS
TENvbm5lY3Rpb24pOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkCisgICAgICAgIGFuZCBzZXRQYXNz
d29yZCBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKTogRGl0dG8uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmNyZWF0ZVNvdXBVUkkgY29uc3QpOiBVcGRhdGVk
IGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvVVJMU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzb3VwVVJJVG9VUkwpOiBVcGRhdGVk
IGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMKTogVXBkYXRlZCBz
aW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4KKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9TdHls
ZUJ1aWxkZXJTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlclN0YXRl
OjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVu
dElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpwb3J0
IGNvbnN0KTogU3RyZWFtbGluZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6
cGF0aG5hbWUgY29uc3QpOiBVc2UgYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTG9jYXRpb246OnNlYXJjaCBjb25zdCk6IFVzZSBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rp
b25NYXJrLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246Omhhc2ggY29uc3QpOiBV
c2UgZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduLgorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSk6CisgICAgICAgIFVwZGF0ZWQgZm9yIGhhc0ZyYWdtZW50SWRlbnRpZmll
ciBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b3BPcmlnaW5VUkwp
OiBTaW1wbGlmaWVkIGNvZGUgdG8gc2V0IHBvcnQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcmlnaW5VUkwpOiBEaXR0
by4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6IFVwZGF0ZWQgZm9yIHNldFBhc3N3b3JkIG5hbWUgY2hh
bmdlLgorCiAyMDIwLTA0LTIyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2MDUzNS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YTJiY2FkMjgxYTlhMmZhNmYxN2QxMDNhZjhiYTYyMDRmMDQ4N2UyNC4uOGE5OGM1NmVkYjkxZDg5
ODRlZTVkZWM0M2JlZmFhMTI0YjEwMjY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAy
MC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBV
UkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRpcmVjdGlvbik6IFVzZSBoYXNDcmVkZW50aWFscy4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVl
ZGVkIGNvbnN0KToKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBBU0NJSUxpdGVyYWwgZm9yIHNldFBy
b3RvY29sLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYSk6IFVwZGF0ZWQKKyAgICAgICAgZm9yIHBhc3N3b3JkIG5hbWUgY2hhbmdl
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pOiBEaXR0by4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6Ok5ldHdvcmtEYXRhVGFza1NvdXApOiBVcGRhdGVkIGZvcgorICAgICAgICBwYXNzd29yZCBu
YW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6YXBwbHlB
dXRoZW50aWNhdGlvblRvUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQb2xpY3lTZXR0aW5n
IGNvbnN0KToKKyAgICAgICAgVXNlICE9IHRvIGNvbXBhcmUgaG9zdHMsIHJhdGhlciB0aGFuIGhv
c3RzQXJlRXF1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3Vs
ZEFsbG93SFNUU1Byb3RvY29sVXBncmFkZSBjb25zdCk6CisgICAgICAgIFJlZmFjdG9yZWQgdG8g
dXNlIHx8IHRvIG1hdGNoIHRoZSBmdW5jdGlvbiBhYm92ZS4KKworICAgICAgICAqIFNoYXJlZC9B
UEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6aG9zdCBjb25zdCk6IFJlbW92ZWQgdmFs
aWRpdHkgY2hlY2s7IFdURjo6VVJMOjpob3N0CisgICAgICAgIHJldHVybnMgbnVsbCBpZiB0aGUg
VVJMIGlzIGludmFsaWQuCisgICAgICAgIChBUEk6OlVSTDo6cHJvdG9jb2wgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKEFQSTo6VVJMOjpwYXRoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBUEk6
OlVSTDo6bGFzdFBhdGhDb21wb25lbnQgY29uc3QpOiBEaXR0by4gQWxzbyBhZGRlZCB0b1N0cmlu
ZworICAgICAgICBzaW5jZSBXVEY6OlVSTDo6bGFzdFBhdGhDb21wb25lbnQgbm93IHJldHVybnMg
YSBTdHJpbmdWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKTogVXNlIGhh
c0ZyYWdtZW50SWRlbnRpZmllci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdl
Ojpsb2FkU3RvcmFnZUZyb21EaXNrKToKKyAgICAgICAgUmVmYWN0b3JlZCBhIGJpdCBhbmQgdXNl
IGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGggYW5kCisgICAgICAgIHVwZGF0ZWQgc2luY2UgbGFz
dFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYXRoRXh0
ZW5zaW9uKTogVXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudAorICAgICAgICByZXR1cm5z
IGEgU3RyaW5nVmlldy4gUmVmYWN0b3JlZCBhIGxpdHRsZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJl
SW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOgorICAgICAgICBVc2UgdHJ1bmNhdGVk
Rm9yVXNlQXNCYXNlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBVc2UgIT0gdG8gY29tcGFyZSBob3N0cywg
cmF0aGVyIHRoYW4gaG9zdHNBcmVFcXVhbC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKToKKyAgICAgICAgVXNlIHRydW5jYXRlZEZv
clVzZUFzQmFzZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICBEb24ndCB1c2UgQVNDSUlMaXRl
cmFsIGZvciBhcmd1bWVudCB0byBzZXRQcm90b2NvbC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKToKKyAgICAg
ICAgVXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgsIGFsc28gcmVmYWN0b3JlZCBhIGJpdC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6IFVwZGF0ZWQgc2luY2UK
KyAgICAgICAgZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xl
KTogU3RyZWFtbGluZWQKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIGEgYml0LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3Ry
aW5nVmlldy4KKwogMjAyMC0wNC0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvY29hXSBCdWlsZCB3aXRoIFVDaGFyIGFzIGNoYXIxNl90IGV2ZW4gaW4gYnVp
bGRzIHRoYXQgdXNlIEFwcGxlJ3MgaW50ZXJuYWwgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggNGEzYWZkZTc4NmU3ZGU1ZGUwMmE2MzdkNmIzNDcxZGU0YWE4YTllOC4uYWVlMjA3
MzFlNWIxMTQwN2ViZGZkZTQzODgyMmUzNDM2YjI3MzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChzaG91bGRUcnlBcHBMaW5rKTogQ29tcGFyZSBob3N0cyB3aXRoID09
IHJhdGhlciB0aGFuIHVzaW5nIGhvc3RzQXJlRXF1YWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudEZvckltYWdl
RGF0YTp3aXRoUmVsYXRpdmVVUkxQYXJ0OmFuZE1JTUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVk
IHNpbmNlIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gQWxzbyB1
c2UgUmV0YWluUHRyCisgICAgICAgIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgY2FsbCB0byByZWxl
YXNlLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgX3dlYl9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZFR5
cGU6aW1hZ2VNSU1FVHlwZTpdKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBmYWtlVVJMV2l0aFJl
bGF0aXZlUGFydCB0YWtlcyBhIFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24KKyAgICAgICAgZGly
ZWN0bHkgZnJvbSBOU1N0cmluZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0
bHkgdXNlIGEgU3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9k
ZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOiBVcGRhdGUKKyAgICAgICAgc2luY2UgcHJvdG9j
b2xJcyB0YWtlcyBhIFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24gZGlyZWN0bHkgZnJvbQorICAg
ICAgICBOU1N0cmluZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNl
IGEgU3RyaW5nLgorCiAyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIEJ1aWxkIHdpdGggVUNoYXIgYXMgY2hhcjE2X3QgZXZlbiBpbiBi
dWlsZHMgdGhhdCB1c2UgQXBwbGUncyBpbnRlcm5hbCBTREsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCA4YWZiMzE1YWRkZjM4NGExYTQ0OGYzODg2ZDk1MjY1NjdjYjU0NmQ0Li40NDE1
MzhmOWMzYmJhMWRjODMyMTMzZTA2ZWQxMzQ0OGFiMGVlMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4g
cmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFzZSk6IE1vdmVkIGlu
aXRpYWxpemF0aW9uIG9mCisgICAgICAgIG1fcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVJc0xvYWRl
ZCB0byB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbiBjb25zdCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKTogVXNlIFN0cmluZ1ZpZXcu
CisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6IENoYW5nZWQgTUlNRVR5cGVG
b3JFeHRlbnNpb24gdG8gdGFrZQorICAgICAgICBhIFN0cmluZ1ZpZXcuIFRvb2sgb3V0IHNvbWUg
dW5uZWVkZWQgZGVjbGFyYXRpb25zLiBJbml0aWFsaXplZAorICAgICAgICBtX3BlcnNpc3RlbnRN
ZXRhZGF0YUNhY2hlSXNMb2FkZWQgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZSk6IFVzZSBTdHJpbmdWaWV3
IGEgbGl0dGxlIG1vcmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdv
b2dsZSk6IFN0cmVhbWxpbmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBhIGJpdC4KKyAgICAgICAgKFdl
YkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkpOiBBZGRlZCAidXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmUiLgorCiAyMDIwLTA0LTIwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDbGFzc2VzIG1hcmtlZCBmaW5hbCBzaG91bGQgbm90
IHVzZSBwcm90ZWN0ZWQgYWNjZXNzIHNwZWNpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggNjEwZDFjNDY4YmIyNDBi
OGMzOTI3OTU1ODI3NThkYmRkMjhmZjU1Ni4uODEyZmE0Y2Y3MDY4YmM4MmFjNWEzNTUxNDAzODE1
MGFjMmY4YTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI2ICs0MiwxNyBAQAogCiBuYW1lc3BhY2UgV1RG
IHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwotdHlwZWRlZiBWZWN0
b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7Ci0KLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
aW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRo
ZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8v
IEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxs
IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8g
YXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9p
ZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCisvLyBDb3BpZXMg
dGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNo
YXJhY3RlcnMgYXJlIEFTQ0lJLgorLy8gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxh
cmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGluIHRoZQorLy8gc291cmNl
IHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgZGVz
dGluYXRpb24gYnVmZmVyLgorc3RhdGljIHZvaWQgY29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjaGFyKiBkZXN0aW5hdGlvbikKIHsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5
KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBt
ZW1jcHkoZGVzdGluYXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
OwogICAgIGVsc2UgewotICAgICAgICBjb25zdCBVQ2hhciogc3JjID0gc3RyaW5nLmNoYXJhY3Rl
cnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgZGVzdFtp
XSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7CisgICAgICAgIGF1dG8gc291cmNlID0gc3Ry
aW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RpbmF0
aW9uW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc291cmNlW2ldKTsKICAgICB9CiB9CiAKQEAgLTgz
LDE2ICs3NCwxMyBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAKIFVSTDo6VVJMKGNvbnN0IFVS
TCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBl
bmNvZGluZykKIHsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGlu
Zyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgKnRoaXMgPSBVUkxQYXJzZXIo
cmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKS5yZXN1bHQoKTsKIH0KIAotc3RhdGljIGJvb2wgc2hv
dWxkVHJpbUZyb21VUkwoVUNoYXIgYykKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVD
aGFyIGNoYXJhY3RlcikKIHsKLSAgICAvLyBCcm93c2VycyBpZ25vcmUgbGVhZGluZy90cmFpbGlu
ZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sCi0gICAgLy8gY2hhcmFjdGVycyBmcm9tIFVSTHMuICBO
b3RlIHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNoYXIgaGVyZQotICAgIC8vIHNvIHRoaXMgY29t
cGFyaXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgcmV0dXJu
IGMgPD0gJyAnOworICAgIC8vIElnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5k
IGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1cm4gY2hhcmFjdGVyIDw9ICcgJzsKIH0KIAog
VVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAgLTEwMiw0OCArOTAsNDMgQEAgVVJMIFVS
TDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcg
VVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6bGFzdFBhdGhD
b21wb25lbnQoKSBjb25zdAogewogICAgIGlmICghaGFzUGF0aCgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICB1bnNpZ25lZCBlbmQgPSBtX3Bh
dGhFbmQgLSAxOwogICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKICAgICAgICAgLS1lbmQ7
CiAKICAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7Ci0g
ICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faG9zdEVuZCArIG1fcG9ydExl
bmd0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoc3RhcnQgPCBwYXRoU3Rh
cnQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICArK3N0YXJ0OwogCi0gICAgcmV0dXJuIG1f
c3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKKyAgICByZXR1cm4gU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpOwogfQog
CiBTdHJpbmdWaWV3IFVSTDo6cHJvdG9jb2woKSBjb25zdAogeworICAgIGlmICghbV9pc1ZhbGlk
KQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkg
Y29uc3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAg
IHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7CiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOwogfQogCiBPcHRpb25h
bDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAg
ICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBu
dW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBt
X2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAg
bnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSAr
IG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBu
dW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKKyAgICByZXR1cm4gbV9wb3J0
TGVuZ3RoID8gcGFyc2VVSW50MTYoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9z
dEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEpKSA6IFdURjo6bnVsbG9wdDsKIH0KIAogU3RyaW5n
IFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdApAQCAtMTU1LDk0ICsxMzgsMTAwIEBAIFN0cmluZyBV
Ukw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5kUG9y
dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1YnN0cmluZygwLCBt
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOworICAgIGlmICghaGFzQ3JlZGVudGlhbHMoKSkKKyAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRoU3RhcnQoKSk7CiAKLSAgICBp
ZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBpbnQg
YWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2Vy
U3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNp
Z24pOwotICAgIH0KKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0YXJ0KSwKKyAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgp
KQorICAgICk7Cit9CiAKLSAgICByZXR1cm4gcmVzdWx0Oworc3RhdGljIE9wdGlvbmFsPExDaGFy
PiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25lZCBpbmRleCwg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChpbmRleCArIDMgPiBsZW5ndGggfHwgaW5wdXRb
aW5kZXhdICE9ICclJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIGRp
Z2l0MSA9IGlucHV0W2luZGV4ICsgMV07CisgICAgYXV0byBkaWdpdDIgPSBpbnB1dFtpbmRleCAr
IDJdOworICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGRpZ2l0MSkgfHwgIWlzQVNDSUlIZXhEaWdp
dChkaWdpdDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB0b0FT
Q0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwogfQogCiBzdGF0aWMgU3RyaW5nIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyBpbnB1dCkKIHsKLSAgICBhdXRv
IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7Ci0gICAgaWYgKCFpbnB1dExlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgVmVjdG9yPExDaGFyPiBwZXJjZW50RGVj
b2RlZDsKLSAgICBwZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0TGVu
Z3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5wdXRMZW5ndGg7ICsraSkgewot
ICAgICAgICBpZiAoaW5wdXRbaV0gPT0gJyUnCi0gICAgICAgICAgICAmJiBpbnB1dExlbmd0aCA+
IDIKLSAgICAgICAgICAgICYmIGkgPCBpbnB1dExlbmd0aCAtIDIKLSAgICAgICAgICAgICYmIGlz
QVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pCi0gICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGln
aXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2Vk
QXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAg
ICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2UKKyAgICBBU1NFUlQoaW5wdXQuaXNBbGxB
U0NJSSgpKTsKKworICAgIGF1dG8gbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CisgICAgaWYgKGxl
bmd0aCA8IDMgfHwgIWlucHV0LmNvbnRhaW5zKCclJykpCisgICAgICAgIHJldHVybiBpbnB1dC50
b1N0cmluZygpOworCisgICAgVmVjdG9yPExDaGFyLCA1MTI+IHBlcmNlbnREZWNvZGVkOworICAg
IHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAgICAgaWYgKGF1dG8gZGVjb2Rl
ZENoYXJhY3RlciA9IGRlY29kZUVzY2FwZVNlcXVlbmNlKGlucHV0LCBpLCBsZW5ndGgpKSB7Cisg
ICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQoKmRlY29kZWRDaGFyYWN0
ZXIpOworICAgICAgICAgICAgaSArPSAzOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICAgICAgICAgICsr
aTsKKyAgICAgICAgfQogICAgIH0KKworICAgIC8vIEZJWE1FOiBJcyBVVEYtOCBhbHdheXMgdGhl
IGNvcnJlY3QgZW5jb2Rpbmc/CisgICAgLy8gRklYTUU6IFRoaXMgcmV0dXJucyBhIG51bGwgc3Ry
aW5nIHdoZW4gd2UgZW5jb3VudGVyIGFuIGludmFsaWQgVVRGLTggc2VxdWVuY2UuIElzIHRoYXQg
T0s/CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQogCiBTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0
KSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5jb2Rl
ZFVzZXIoKSk7CiB9CiAKLVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAorU3RyaW5nIFVSTDo6cGFz
c3dvcmQoKSBjb25zdAogewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNl
c0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCAr
IDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7CisgICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5jb2RlZFBhc3N3b3JkKCkpOwogfQogCi1TdHJp
bmcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFVzZXIo
KSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1f
dXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7CiB9CiAKLVN0
cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJMOjplbmNvZGVkUGFz
c3dvcmQoKSBjb25zdAogewogICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJu
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2Vy
RW5kIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Vz
ZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7CiB9CiAKLVN0cmluZyBV
Ukw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICBpZiAoIWhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcXVlcnlFbmQgKyAxKTsKLX0KKyAgICAgICAgcmV0dXJuIHsgfTsKIAotYm9vbCBVUkw6Omhh
c0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNWYWxpZCAmJiBt
X3N0cmluZy5sZW5ndGgoKSAhPSBtX3F1ZXJ5RW5kOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwogfQogCi1TdHJpbmcgVVJMOjpiYXNl
QXNTdHJpbmcoKSBjb25zdAorVVJMIFVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxhc3RTbGFzaCk7CisgICAg
cmV0dXJuIFVSTChVUkwoKSwgbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxhc3RTbGFzaCkpOwog
fQogCiAjaWYgIVVTRShDRikKIAogU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAog
ewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgaWYgKCFpc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmll
dyhwYXRoKCkpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TChwYXRoKCkpOwogfQogCiAjZW5kaWYKIAotI2lmZGVmIE5ERUJVRworI2lmICFBU1NFUlRfRU5B
QkxFRAogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmll
dykKIHsKQEAgLTMxNCw3ICszMDMsNyBAQCBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1
aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQogCiBib29sIFVSTDo6cHJvdG9jb2xJ
cyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKLSAgICBhc3NlcnRQcm90b2NvbElzR29v
ZChTdHJpbmdWaWV3IHsgcHJvdG9jb2wgfSk7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJv
dG9jb2wpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQiIGFuZCBzaG91bGQg
YmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZhbGlkLgogICAgIC8v
IFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hvdWxkIGJlIHVzZWQg
aW5zdGVhZC4gCkBAIC0zNDksNzMgKzMzOCw2NSBAQCBib29sIFVSTDo6cHJvdG9jb2xJcyhTdHJp
bmdWaWV3IHByb3RvY29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgVVJM
OjpxdWVyeSgpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6cXVlcnkoKSBjb25zdAogewogICAgIGlm
IChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhF
bmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCisgICAgcmV0dXJuIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1f
cGF0aEVuZCArIDEpKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBjb25zdAogewotICAg
IHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci0gICAgcmV0dXJu
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0
RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0KCksIG1fcGF0aEVu
ZCAtIHBhdGhTdGFydCgpKTsKIH0KIAotYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgcykKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChTdHJpbmdWaWV3IG5ld1Byb3RvY29sKQogewog
ICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCAn
OicuCi0gICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0aW9uID0gcy5maW5kKCc6Jyk7Ci0gICAgU3Ry
aW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24pOwotICAg
IGF1dG8gY2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUo
bmV3UHJvdG9jb2wpOwotICAgIGlmICghY2Fub25pY2FsaXplZCkKKyAgICBhdXRvIG5ld1Byb3Rv
Y29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5ld1Byb3RvY29sLmZpbmQoJzon
KSk7CisgICAgYXV0byBuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQgPSBVUkxQYXJzZXI6Om1heWJl
Q2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sUHJlZml4LnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSk7CisgICAgaWYgKCFuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgIjoiLCBtX3N0cmluZykpOwotICAgICAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgcGFyc2UobWFrZVN0cmluZygqbmV3UHJv
dG9jb2xDYW5vbmljYWxpemVkLCAnOicsIG1fc3RyaW5nKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIGlmICgobV9wYXNzd29yZEVuZCAhPSBtX3VzZXJTdGFydCB8fCBwb3J0
KCkpICYmICpjYW5vbmljYWxpemVkID09ICJmaWxlIikKKyAgICBpZiAoKG1fcGFzc3dvcmRFbmQg
IT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkID09
ICJmaWxlIikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoaXNMb2NhbEZpbGUoKSAm
JiBob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIHBhcnNlKG1h
a2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCwgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
Ym9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCiAv
LyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4g
c3RyaW5nIGFuZCBsZW5ndGggdG8KIC8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdp
bGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KIC8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFu
cyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShV
Q2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBib29sIGFwcGVu
ZEVuY29kZWRIb3N0bmFtZShWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlciwgU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1l
bmNvZGVkIG5hbWUuCiAgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ug
d29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgogICAg
IGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKLSAgICAKLSAgICBp
ZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgaXNBbGxBU0NJSShz
dHJpbmcpKSB7CisKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5n
dGggfHwgc3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBhcHBlbmQoYnVmZmVyLCBzdHJp
bmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICBVQ2hhciBob3N0
bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CiAgICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKICAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9J
TkZPX0lOSVRJQUxJWkVSOwogICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVp
ZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNj
b2RlcigpLAogICAgICAgICBzdHJpbmcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHN0cmluZy5s
ZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3RuYW1lQnVmZmVyTGVuZ3RoLCAmcHJvY2Vzc2lu
Z0RldGFpbHMsICZlcnJvcik7Ci0gICAgCisKICAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAh
cHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5h
bWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTQyOCwxMDEgKzQwOSw4NiBAQCB1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0CiAg
ICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQg
OiBtX3Bhc3N3b3JkRW5kICsgMTsKIH0KIAotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5n
JiBzKQordW5zaWduZWQgVVJMOjpjcmVkZW50aWFsc0VuZCgpIGNvbnN0Cit7CisgICAgLy8gSW5j
bHVkZSAnQCcgdG9vIGlmIHdlIGhhdmUgaXQuCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29y
ZEVuZDsKKyAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykK
KyAgICAgICAgZW5kICs9IDE7CisgICAgcmV0dXJuIGVuZDsKK30KKwordm9pZCBVUkw6OnNldEhv
c3QoU3RyaW5nVmlldyBuZXdIb3N0KQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29s
b25JbmRleCAhPSBub3RGb3VuZCkKKyAgICBpZiAobmV3SG9zdC5jb250YWlucygnOicpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYg
KCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBzKSkKKyAgICBWZWN0b3I8
VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3Ru
YW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlm
IChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7
Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBl
bmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vi
c3RyaW5nKG1faG9zdEVuZCkpOwogCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3Ry
aW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGJvb2wgc2xhc2hTbGFz
aE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKyAgICBwYXJzZShtYWtl
U3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGhvc3RTdGFydCgpKSwK
KyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwKKyAgICAgICAgU3RyaW5nVmll
dyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSwKKyAgICAg
ICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCkKKyAgICApKTsKIH0K
IAotdm9pZCBVUkw6OnJlbW92ZVBvcnQoKQotewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAg
ICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKLX0KLQotdm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hvcnQgaSkKK3ZvaWQgVVJMOjpz
ZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAgIGlmICghbV9pc1ZhbGlkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsK
LSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hv
c3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6cmVtb3ZlSG9zdEFuZFBvcnQoKQotewotICAgIGlmICghbV9pc1ZhbGlk
KQorICAgIGlmICghcG9ydCkgeworICAgICAgICByZW1vdmUobV9ob3N0RW5kLCBtX3BvcnRMZW5n
dGgpOwogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFob3N0KCkuaXNFbXB0eSgpKQotICAgICAg
ICBzZXRIb3N0KHsgfSk7Ci0gICAgcmVtb3ZlUG9ydCgpOworICAgIH0KKworICAgIHBhcnNlKG1h
a2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwK
KyAgICAgICAgJzonLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnBvcnQpLAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0KCkpCisgICAgKSk7
CiB9CiAKLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0
KQordm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiB7CiAg
ICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ1ZpZXcgaG9z
dE5hbWUoaG9zdEFuZFBvcnQpOwotICAgIFN0cmluZ1ZpZXcgcG9ydDsKLSAgICAKKyAgICBhdXRv
IGhvc3ROYW1lID0gaG9zdEFuZFBvcnQ7CisgICAgU3RyaW5nVmlldyBwb3J0U3RyaW5nOwogICAg
IGF1dG8gY29sb25JbmRleCA9IGhvc3ROYW1lLmZpbmQoJzonKTsKICAgICBpZiAoY29sb25JbmRl
eCAhPSBub3RGb3VuZCkgewotICAgICAgICBwb3J0ID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9u
SW5kZXggKyAxKTsKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgaW50IHBvcnRJbnQgPSBwb3J0
LnRvSW50U3RyaWN0KG9rKTsKLSAgICAgICAgaWYgKCFvayB8fCBwb3J0SW50IDwgMCkKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgcG9ydFN0cmluZyA9IGhvc3ROYW1lLnN1YnN0cmluZyhj
b2xvbkluZGV4ICsgMSk7CiAgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAs
IGNvbG9uSW5kZXgpOworICAgICAgICBpZiAoIXBhcnNlVUludDE2KHBvcnRTdHJpbmcpKQorICAg
ICAgICAgICAgcG9ydFN0cmluZyA9IHsgfTsKICAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNF
bXB0eSgpKQorICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVtb3ZlKGhv
c3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotICAgIFVDaGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKKyAgICBWZWN0b3I8VUNo
YXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOwogICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1l
KGVuY29kZWRIb3N0TmFtZSwgaG9zdE5hbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29s
IHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9zY2hlbWVFbmQgKyAxKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWls
ZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7Ci0gICAgaWYgKHNsYXNoU2xh
c2hOZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKLSAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0
TmFtZS5zaXplKCkpKTsKLSAgICBpZiAoIXBvcnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChwb3J0KTsKLSAg
ICB9Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1f
aG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVy
LnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGJvb2wgc2xh
c2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKyAgICBwYXJz
ZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGhvc3RTdGFy
dCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwKKyAgICAgICAgU3Ry
aW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSwK
KyAgICAgICAgcG9ydFN0cmluZy5pc0VtcHR5KCkgPyAiIiA6ICI6IiwKKyAgICAgICAgcG9ydFN0
cmluZywKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHBhdGhTdGFydCgp
KQorICAgICkpOwogfQogCiBzdGF0aWMgU3RyaW5nIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNv
bnN0IFN0cmluZyYgaW5wdXQsIGJvb2woKnNob3VsZEVuY29kZSkoVUNoYXIpKQpAQCAtNTUxLDgx
ICs1MTcsODkgQEAgc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBT
dHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFUKICAgICByZXR1cm4gaW5wdXQ7CiB9
CiAKLXZvaWQgVVJMOjpzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikKK3ZvaWQgVVJMOjpwYXJz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAqdGhp
cyA9IFVSTFBhcnNlcihzdHJpbmcpLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQoc3RhcnQgPCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
QVNTRVJUKGxlbmd0aCA8PSBtX3N0cmluZy5sZW5ndGgoKSAtIHN0YXJ0KTsKKworICAgIGF1dG8g
c3RyaW5nQWZ0ZXJSZW1vdmFsID0gV1RGTW92ZShtX3N0cmluZyk7CisgICAgc3RyaW5nQWZ0ZXJS
ZW1vdmFsLnJlbW92ZShzdGFydCwgbGVuZ3RoKTsKKyAgICBwYXJzZShzdHJpbmdBZnRlclJlbW92
YWwpOworfQogCi0gICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5j
b2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKLSAgICAvLyBh
bmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIgbG9naW4uCit2b2lk
IFVSTDo6c2V0VXNlcihTdHJpbmdWaWV3IG5ld1VzZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQp
CisgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBp
ZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNo
YXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotICAgICAg
ICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsg
MSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2Ug
ZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwg
KGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAg
ICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgaWYgKCFuZXdVc2VyLmlzRW1wdHkoKSkgeworICAgICAgICBib29sIHNsYXNoU2xhc2hO
ZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgICAgIGJvb2wgbmVl
ZFNlcGFyYXRvciA9IGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYm
IG1fc3RyaW5nW2VuZF0gIT0gJ0AnKTsKKyAgICAgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAg
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLAorICAgICAgICAg
ICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwKKyAgICAgICAgICAgIHBlcmNlbnRFbmNv
ZGVDaGFyYWN0ZXJzKG5ld1VzZXIudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCksCisgICAgICAgICAgICBuZWVkU2VwYXJhdG9yID8gIkAi
IDogIiIsCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKQor
ICAgICAgICApKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5v
dyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCiAgICAgICAgIGlmIChtX3VzZXJFbmQg
PT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0g
J0AnKQogICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5n
IHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpIHsKLSAg
ICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fdXNlclN0YXJ0KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkp
KTsKLSAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9CisgICAg
ICAgIHJlbW92ZShtX3VzZXJTdGFydCwgZW5kIC0gbV91c2VyU3RhcnQpOwogICAgIH0KIH0KIAot
dm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3ZvaWQgVVJMOjpzZXRQ
YXNzd29yZChTdHJpbmdWaWV3IG5ld1Bhc3N3b3JkKQogewogICAgIGlmICghbV9pc1ZhbGlkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOwotICAg
IGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBwID0gIjoiICsgcGVy
Y2VudEVuY29kZUNoYXJhY3RlcnMocGFzc3dvcmQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5j
b2RlU2V0KSArICJAIjsKLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAgICAgIHAgPSAiLy8iICsgcDsKLSAgICAg
ICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIg
b3duLgotICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdA
JykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBwLCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICBpZiAoIW5ld1Bhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBib29sIG5l
ZWRMZWFkaW5nU2xhc2hlcyA9IG1fdXNlckVuZCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAgICAg
IHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlckVuZCksCisgICAgICAgICAgICBuZWVkTGVhZGluZ1NsYXNoZXMgPyAiLy86IiA6ICI6
IiwKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKG5ld1Bhc3N3b3JkLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpLAor
ICAgICAgICAgICAgJ0AnLAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKGNyZWRlbnRpYWxzRW5kKCkpCisgICAgICAgICkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4K
LSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5k
ICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3
aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3Vz
ZXJFbmQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgZW5kID0gbV91c2VyU3RhcnQgPT0gbV91c2Vy
RW5kID8gY3JlZGVudGlhbHNFbmQoKSA6IG1fcGFzc3dvcmRFbmQ7CisgICAgICAgIHJlbW92ZSht
X3VzZXJFbmQsIGVuZCAtIG1fdXNlckVuZCk7CiAgICAgfQogfQogCit2b2lkIFVSTDo6cmVtb3Zl
Q3JlZGVudGlhbHMoKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICByZW1vdmUobV91c2VyU3RhcnQsIGNyZWRlbnRpYWxzRW5kKCkgLSBtX3VzZXJTdGFydCk7
Cit9CisKIHZvaWQgVVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlm
aWVyKQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBG
SVhNRTogT3B0aW1pemUgdGhlIGNhc2Ugd2hlcmUgdGhlIGlkZW50aWZpZXIgYWxyZWFkeSBoYXBw
ZW5zIHRvIGJlIGVxdWFsIHRvIHdoYXQgd2FzIHBhc3NlZD8KLSAgICAvLyBGSVhNRTogSXMgaXQg
Y29ycmVjdCB0byBkbyB0aGlzIHdpdGhvdXQgZW5jb2RpbmcgYW5kIGVzY2FwaW5nIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzPwotICAgICp0aGlzID0gVVJMUGFyc2VyIHsgbWFrZVN0cmluZyhTdHJpbmdW
aWV3IHsgbV9zdHJpbmcgfS5zdWJzdHJpbmcoMCwgbV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmll
cikgfS5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcp
LmxlZnQobV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmllcikpOwogfQogCiB2b2lkIFVSTDo6cmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKIHsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAg
ICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1
ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7CisK
KyAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7CiB9CiAKIHZvaWQgVVJM
OjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCkBAIC02MzcsNjIgKzYxMSw2MiBA
QCB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKQogICAgIG1fcXVl
cnlFbmQgPSBtX3BhdGhFbmQ7CiB9CiAKLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcm
IHF1ZXJ5KQordm9pZCBVUkw6OnNldFF1ZXJ5KFN0cmluZ1ZpZXcgbmV3UXVlcnkpCiB7CisgICAg
Ly8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRoaXMgZnVuY3Rpb24gdG8gc2V0RW5jb2RlZFF1
ZXJ5IGFuZC9vciBjYWxsaW5nIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzIHRoZSB3YXkgc2V0UGF0
aCBkb2VzLgorICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3NgorCiAgICAgaWYgKCFt
X2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1B
U0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4KLSAgICAvLyBVc3Vh
bGx5LCB0aGUgcXVlcnkgaXMgZW5jb2RlZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVU
Ri04LCBidXQgd2UgZG9uJ3QgaGF2ZQotICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4g
dGhpcyBmdW5jdGlvbi4KLSAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKLSAgICBp
ZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwo
KSkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3BhdGhFbmQpLCAiPyIsIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKLSAgICB9CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX3BhdGhFbmQpLAorICAgICAgICAoIW5ld1F1ZXJ5LnN0YXJ0c1dpdGgo
Jz8nKSAmJiAhbmV3UXVlcnkuaXNOdWxsKCkpID8gIj8iIDogIiIsCisgICAgICAgIG5ld1F1ZXJ5
LAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkKKyAg
ICApKTsKK30KIAorc3RhdGljIFN0cmluZyBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcoU3RyaW5n
VmlldyBwYXRoKQoreworICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVD
aGFyIGNoYXJhY3RlcikgeworICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFy
YWN0ZXIgPT0gJyMnOworICAgIH07CisgICAgcmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJz
KHBhdGgudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24p
OwogfQogCi12b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMpCit2b2lkIFVSTDo6c2V0
UGF0aChTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyBwYXRoID0gczsKLSAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwg
cGF0aFswXSAhPSAnLycpCi0gICAgICAgIHBhdGggPSAiLyIgKyBwYXRoOworICAgIHBhcnNlKG1h
a2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocGF0aFN0YXJ0KCkp
LAorICAgICAgICBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/ICIiIDogIi8iLAorICAgICAgICBlc2Nh
cGVQYXRoV2l0aG91dENvcHlpbmcocGF0aCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX3BhdGhFbmQpCisgICAgKSk7Cit9CiAKLSAgICBhdXRvIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQp
KSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CitTdHJpbmdWaWV3IFVSTDo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChwYXRoRW5kKCkpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitTdHJpbmdWaWV3IFVS
TDo6c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgaWYgKGEu
bV9xdWVyeUVuZCAhPSBiLm1fcXVlcnlFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1
bnNpZ25lZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVyeUVuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcXVlcnlMZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0g
Yi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCk7CiB9CiAKLWJvb2wg
ZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIp
Citib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25z
dCBVUkwmIGIpCiB7Ci0gICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVuZCgpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEu
c3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGEuc3RyaW5nV2l0aG91dEZyYWdt
ZW50SWRlbnRpZmllcigpID09IGIuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpOwog
fQogCiBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKQEAgLTcyNSwyNSArNjk5LDEwIEBAIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitib29sIFVS
TDo6aXNNYXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3IGRvbWFpbikgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3Ro
QSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0g
Yi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0g
aG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3Ro
QTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0
cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIHRo
aXMgdG8gYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4gV2ViQ29yZSdzIHBsdWctaW4gY29kZTsgZG9u
J3Qgd2FudCBwZW9wbGUgdGVtcHRlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luLgogCi1ib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikg
Y29uc3QKLXsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzYwLDYgKzcxOSw3IEBAIGJvb2wgVVJMOjppc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYg
ZG9tYWluKSBjb25zdAogICAgIHJldHVybiBob3N0Lmxlbmd0aCgpID09IGRvbWFpbi5sZW5ndGgo
KSB8fCBob3N0W2hvc3QubGVuZ3RoKCkgLSBkb21haW4ubGVuZ3RoKCkgLSAxXSA9PSAnLic7CiB9
CiAKKy8vIEZJWE1FOiBSZW5hbWUgdGhpcyBzbyBpdCdzIGNsZWFyIHRoYXQgaXQgZG9lcyB0aGUg
YXBwcm9wcmlhdGUgZXNjYXBpbmcgZm9yIFVSTCBxdWVyeSBmaWVsZCB2YWx1ZXMuCiBTdHJpbmcg
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAg
IHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNl
ckluZm9FbmNvZGVTZXQpOwpAQCAtNzgxLDQxICs3NDEsMzQgQEAgdm9pZCBVUkw6OmNvcHlUb0J1
ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAogICAgIGNvcHlBU0NJSShtX3N0
cmluZywgYnVmZmVyLmRhdGEoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNz
PgotYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoY29uc3QgU3RyaW5nQ2xhc3MmIHVybCwgY29uc3Qg
Y2hhciogcHJvdG9jb2wpCitzdGF0aWMgYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoU3RyaW5nVmll
dyBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQogewotICAgIC8vIERvIHRoZSBjb21wYXJp
c29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgYXNzZXJ0UHJvdG9j
b2xJc0dvb2QoU3RyaW5nVmlldyB7IHByb3RvY29sIH0pOworICAgIGFzc2VydFByb3RvY29sSXNH
b29kKHByb3RvY29sKTsKICAgICBib29sIGlzTGVhZGluZyA9IHRydWU7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgaiA9IDA7IHVybFtpXTsgKytpKSB7Ci0gICAgICAgIC8vIFNraXAgbGVhZGlu
ZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgICAgIGlmIChpc0xlYWRp
bmcgJiYgc2hvdWxkVHJpbUZyb21VUkwodXJsW2ldKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKLQotICAgICAgICAvLyBTa2lwIGFueSB0YWJzIGFu
ZCBuZXdsaW5lcy4KLSAgICAgICAgaWYgKHVybFtpXSA9PSAnXHQnIHx8IHVybFtpXSA9PSAnXHIn
IHx8IHVybFtpXSA9PSAnXG4nKQotICAgICAgICAgICAgY29udGludWU7CisgICAgZm9yIChhdXRv
IGNvZGVVbml0IDogc3RyaW5nLmNvZGVVbml0cygpKSB7CisgICAgICAgIGlmIChpc0xlYWRpbmcp
IHsKKyAgICAgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNo
YXJhY3RlcnMuCisgICAgICAgICAgICBpZiAoc2hvdWxkVHJpbUZyb21VUkwoY29kZVVuaXQpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTa2lwIHRhYnMgYW5kIG5ld2xpbmVz
IGV2ZW4gbGF0ZXIgaW4gdGhlIHByb3RvY29sLgorICAgICAgICAgICAgaWYgKGNvZGVVbml0ID09
ICdcdCcgfHwgY29kZVVuaXQgPT0gJ1xyJyB8fCBjb2RlVW5pdCA9PSAnXG4nKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFwcm90b2NvbFtqXSkK
LSAgICAgICAgICAgIHJldHVybiB1cmxbaV0gPT0gJzonOwotICAgICAgICBpZiAoIWlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsW2ldLCBwcm90b2NvbFtqXSkpCisgICAgICAgIGNoYXIgZXhw
ZWN0ZWRDaGFyYWN0ZXIgPSAqcHJvdG9jb2wrKzsKKyAgICAgICAgaWYgKCFleHBlY3RlZENoYXJh
Y3RlcikKKyAgICAgICAgICAgIHJldHVybiBjb2RlVW5pdCA9PSAnOic7CisgICAgICAgIGlmICgh
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjb2RlVW5pdCwgZXhwZWN0ZWRDaGFyYWN0ZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICsrajsKICAgICB9Ci0gICAgCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwo
dXJsLCBwcm90b2NvbCk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgY29uc3QgY2hhciogcHJvdG9jb2wpCitib29sIHByb3RvY29sSXMoU3Ry
aW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQogewotICAgIHJldHVybiBXVEY6
OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKKyAgICByZXR1cm4gcHJvdG9j
b2xJc0ludGVybmFsKHN0cmluZywgcHJvdG9jb2wpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAt
ODI5LDExICs3ODIsMTggQEAgdm9pZCBVUkw6OnByaW50KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6
c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3QKIHsKLSAgICBVUkwgcmVmZXJyZXIoKnRo
aXMpOwotICAgIHJlZmVycmVyLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBh
c3MoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwot
ICAgIHJldHVybiByZWZlcnJlci5zdHJpbmcoKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAg
ICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgdW5zaWduZWQgZW5kID0gY3JlZGVudGlhbHNFbmQo
KTsKKworICAgIGlmIChtX3VzZXJTdGFydCA9PSBlbmQgJiYgbV9xdWVyeUVuZCA9PSBtX3N0cmlu
Zy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJT
dGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQsIG1fcXVl
cnlFbmQgLSBlbmQpCisgICAgKTsKIH0KIAogYm9vbCBVUkw6OmlzTG9jYWxGaWxlKCkgY29uc3QK
QEAgLTg0NSwxNyArODA1LDEyIEBAIGJvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKIH0KIAotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlw
dChjb25zdCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmll
dyBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2Ny
aXB0Iik7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsICJqYXZhc2NyaXB0
Iik7CiB9CiAKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpCi17Ci0g
ICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0Iik7Ci19Ci0KLWJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJvdG9j
b2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHVy
bC5sZW5ndGgoKTsKICAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5l
dyBzdHJpbmcgb2JqZWN0LgpAQCAtODY5LDEzICs4MjQsMTMgQEAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQogCiBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgp
LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNC
bGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIl9zKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtV
Ukw7CiB9CiAKIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9j
Iik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQWJvdXRTcmNEb2NVUkwo
VVJMKCksICJhYm91dDpzcmNkb2MiX3MpOwogICAgIHJldHVybiBzdGF0aWNBYm91dFNyY0RvY1VS
TDsKIH0KIApAQCAtOTY0LDcgKzkxOSw2IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQogICAg
ICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAg
IDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51
bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKICAgICB9Owog
CiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxs
b3cgaXQuCkBAIC05ODMsMTUgKzkzNywxNSBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYg
dXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCitTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3
IGRhdGFVUkwpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikp
OworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwoZGF0YVVSTCwgImRhdGEiKSk7CiAKICAg
ICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEg
Y29tbWEgZmlyc3QsIGJ1dCBhIHNlbWljb2xvbiBsYXRlcj8KLSAgICAvLyBDdXJyZW50bHkgdGhp
cyBjb2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJl
IHRoYXQncyBjb3JyZWN0LgotICAgIGF1dG8gaW5kZXggPSB1cmwuZmluZCgnOycsIDUpOworICAg
IC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRo
YXQgY2FzZTsgc2hvdWxkIGFkZCBhIHRlc3QuCisgICAgYXV0byBpbmRleCA9IGRhdGFVUkwuZmlu
ZCgnOycsIDUpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgaW5kZXggPSB1
cmwuZmluZCgnLCcsIDUpOworICAgICAgICBpbmRleCA9IGRhdGFVUkwuZmluZCgnLCcsIDUpOwog
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICAvLyBGSVhNRTogVGhlcmUgd2Fz
IGFuIG9sZCBjb21tZW50IGhlcmUgdGhhdCBtYWRlIGl0IHNvdW5kIGxpa2UgdGhpcyBzaG91bGQg
YmUgcmV0dXJuaW5nIHRleHQvcGxhaW4uCiAgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIGJlZW4gcmV0
dXJuaW5nIGVtcHR5IHN0cmluZyBoZXJlIGZvciBzb21lIHRpbWUsIHNvIG5vdCBjaGFuZ2luZyBp
dHMgYmVoYXZpb3IgYXQgdGhpcyB0aW1lLgpAQCAtMTAwMCwyNSArOTU0LDQ1IEBAIFN0cmluZyBt
aW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmIChpbmRleCA9PSA1
KQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CiAgICAgQVNTRVJUKGluZGV4ID49IDUp
OwotICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKKyAgICByZXR1cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCiBTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewotICAgIGlmIChzdHJp
bmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdHJpbmcoKTsKKyAgICBp
ZiAobV9zdHJpbmcubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7
CisKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGxlbmd0
aCAvIDIgLSAxKSwgIi4uLiIsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnJpZ2h0KGxlbmd0aCAvIDIg
LSAyKSk7Cit9CisKK1VSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmluZ1ZpZXcg
cmVsYXRpdmVQYXJ0KQoreworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoIndlYmtp
dC1mYWtlLXVybDovLyIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgJy8nLCByZWxhdGl2
ZVBhcnQpKTsKK30KIAotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSAr
ICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOworVVJMIFVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3IHBhdGgpCit7CisgICAgcmV0dXJuIFVSTChV
UkwoKSwgbWFrZVN0cmluZygKKyAgICAgICAgImZpbGU6Ly8iLAorICAgICAgICBwYXRoLnN0YXJ0
c1dpdGgoJy8nKSA/ICIiIDogIi8iLAorICAgICAgICBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmco
cGF0aCkKKyAgICApKTsKIH0KIAotVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29u
c3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCitTdHJpbmdWaWV3IFVSTDo6cXVlcnlXaXRoTGVhZGlu
Z1F1ZXN0aW9uTWFyaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1m
YWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2
ZVBhcnQpOworICAgIGlmIChtX3F1ZXJ5RW5kIDw9IG1fcGF0aEVuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRo
RW5kLCBtX3F1ZXJ5RW5kIC0gbV9wYXRoRW5kKTsKIH0KIAotVVJMIFVSTDo6ZmlsZVVSTFdpdGhG
aWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorU3RyaW5nVmlldyBVUkw6OmZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRoKTsKKyAgICBpZiAoIW1faXNWYWxp
ZCB8fCBtX3N0cmluZy5sZW5ndGgoKSA8PSBtX3F1ZXJ5RW5kKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5k
KTsKIH0KIAogYm9vbCBVUkw6OmlzQWJvdXRCbGFuaygpIGNvbnN0CkBAIC0xMDM4LDYgKzEwMTIs
NyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBVUkwmIHVy
bCkKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShTT1VQKQorCiBzdGF0aWMgYm9v
bCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1dG8gY291bnQgPSAw
OwpAQCAtMTEyNCwxMSArMTA5OSw5IEBAIHN0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5n
VmlldyBzdHJpbmcpCiAKIGJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0
KQogewotICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
IGlzSVB2NEFkZHJlc3MoaG9zdCk7Ci0KLSAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0KTsK
KyAgICByZXR1cm4gaG9zdC5jb250YWlucygnOicpID8gaXNJUHY2QWRkcmVzcyhob3N0KSA6IGlz
SVB2NEFkZHJlc3MoaG9zdCk7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5k
ZXggOTVhZjRhM2I0N2UwODg3ZjVhMmFlYTAxYTExMzc5YmJiZDExYzZmZi4uNDJlYzFmYjllYzM3
ZWI4MzEzZDY5MzAxOTU3YTQ1MTkwNjEwYjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNDcgKzM4LDM5IEBAIE9CSkNfQ0xBU1MgTlNVUkw7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CisKIGNsYXNzIFRleHRTdHJlYW07CiAKIGNsYXNz
IFVSTFRleHRFbmNvZGluZyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4g
ZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB+
VVJMVGV4dEVuY29kaW5nKCkgeyB9OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflVSTFRleHRF
bmNvZGluZygpIHsgfQogfTsKIAotc3RydWN0IFVSTEhhc2g7Ci0KLWNsYXNzIFdURl9FWFBPUlRf
UFJJVkFURSBVUkwgeworY2xhc3MgVVJMIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICAvLyBHZW5lcmF0ZXMgYSBVUkwgd2hpY2ggY29udGFpbnMgYSBudWxsIHN0
cmluZy4KICAgICBVUkwoKSB7IGludmFsaWRhdGUoKTsgfQogCi0gICAgZXhwbGljaXQgVVJMKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBleHBs
aWNpdCBVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CisgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCk7IH0KIAogICAgIC8vIFJlc29sdmVzIHRoZSByZWxhdGl2ZSBVUkwgd2l0aCB0aGUg
Z2l2ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKICAgICAvLyBVUkxUZXh0RW5jb2Rpbmcg
aXMgdXNlZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNhbiBi
ZQotICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3
aWxsIGJlIGludGVycHJldGVkIGFzCi0gICAgLy8gYWJzb2x1dGUuCi0gICAgLy8gRklYTUU6IElm
IHRoZSBiYXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVzIGFuIGludmFsaWQK
LSAgICAvLyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJlYXQg
YWxsIGludmFsaWQgYmFzZSBVUkxzCi0gICAgLy8gdGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBudWxs
IGFuZCBlbXB0eSBiYXNlIFVSTHMuCi0gICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOworICAgIC8v
IG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGlu
dGVycHJldGVkIGFzIGFic29sdXRlLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoY29uc3Qg
VVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2Rpbmcq
ID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNv
bnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChj
b25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmYWtlVVJM
V2l0aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcpOwogCi0gICAgU3Ry
aW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwotCi0gICAgLy8gRklYTUU6IFRo
ZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBwYXNzaW5nIGEK
LSAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0aGUgc2FtZSBy
ZXN1bHQgYXMgdGhlCi0gICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7
CiAKICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRv
IHVzZSBhIFVSTCBvbiBhbm90aGVyCiAgICAgLy8gdGhyZWFkLiBTaW5jZSB0aGUgdW5kZXJseWlu
ZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncwogICAgIC8vIG5vIG90
aGVyIHJlYXNvbiB0byBldmVyIHByZWZlciBpc29sYXRlZENvcHkoKSBvdmVyIHBsYWluIG9sZCBh
c3NpZ25tZW50LgotICAgIFVSTCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc051bGwoKSBj
b25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTg5LDEyMiArODEsMTI2IEBAIHB1
YmxpYzoKICAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJh
cmNoaWNhbCgpOyB9CiAKICAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4g
aXNIaWVyYXJjaGljYWwoKTsgfQotICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OwogCiAgICAg
Y29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVu
c2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCi0gICAgU3RyaW5nIHN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKLQotICAgIFN0
cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IGhvc3QoKSBjb25zdDsK
LSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyBob3N0QW5k
UG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygpIGNvbnN0OwotICAgIFN0
cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OwotICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNv
bnN0OwotICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFN0cmluZyBmcmFnbWVudElkZW50
aWZpZXIoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Owor
ICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3N3b3JkKCksIGVuY29kZWRVc2VyKCkgYW5kIGVu
Y29kZWRQYXNzd29yZCgpIGRvbid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2VzLgorICAgIC8vIFRo
aXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywgYmVjYXVzZSBlbmNv
ZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZ1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nVmlldyBlbmNvZGVkUGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
Z1ZpZXcgcGF0aCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGxh
c3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1Zp
ZXcgcXVlcnkoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBmcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdW
aWV3IHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNp
Z24oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBzdHJpbmdXaXRo
b3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3Ry
aW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgdXNlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
cGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVTeXN0
ZW1QYXRoKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHRydW5jYXRlZEZv
clVzZUFzQmFzZSgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0OwotICAg
IGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKICAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0g
ICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7CiAKLSAgICAvLyBVbmxpa2Ug
dXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNl
cXVlbmNlcy4KLSAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJp
cHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCi0g
ICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGVuY29kZWRQYXNzKCkg
Y29uc3Q7Ci0KLSAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcg
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKyAgICBib29sIGhhc0NyZWRlbnRpYWxzKCkgY29uc3Q7
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMg
dGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4g
VGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBib29sIHByb3RvY29sSXMoY29u
c3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNv
bnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElz
KCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBi
b29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdDsKLSAgICBib29sIGlzTG9jYWxGaWxl
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25z
dDsKICAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJl
QUJhc2VVUkw7IH0KIAotICAgIGJvb2wgaXNBYm91dEJsYW5rKCkgY29uc3Q7Ci0gICAgYm9vbCBp
c0Fib3V0U3JjRG9jKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBYm91
dEJsYW5rKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBYm91dFNyY0Rv
YygpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWF0Y2hpbmdEb21haW4oU3RyaW5n
VmlldykgY29uc3Q7CiAKLSAgICBib29sIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwotICAg
IHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRIb3N0KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBz
ZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQ
b3J0KE9wdGlvbmFsPHVpbnQxNl90Pik7CiAKICAgICAvLyBJbnB1dCBpcyBsaWtlICJmb28uY29t
IiBvciAiZm9vLmNvbTo4MDAwIi4KLSAgICB2b2lkIHNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZvaWQgcmVtb3ZlSG9zdEFuZFBvcnQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRIb3N0QW5kUG9ydChTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQgc2V0VXNlcihj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXNlcihTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRQYXNzd29yZChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCByZW1vdmVDcmVkZW50aWFscygpOwogCi0gICAgLy8gSWYgeW91IHBhc3MgYW4g
ZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKLSAg
ICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7CisgICAg
Ly8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUg
cmVzdWx0aW5nIHBhdGggd2lsbCBiZSAiLyIuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0UGF0aChTdHJpbmdWaWV3KTsKIAogICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBh
IHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCiAgICAgLy8gZm9y
IHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEg
Ij8iIGluIHRoZQogICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIg
dGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCi0gICAgdm9pZCBzZXRRdWVyeShjb25zdCBT
dHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRRdWVyeShTdHJpbmdWaWV3
KTsKIAotICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIHZv
aWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgdm9pZCByZW1vdmVR
dWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBo
b3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3KTsKIAogICAgIHVuc2lnbmVkIHBhdGhT
dGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsKICAgICB1bnNpZ25l
ZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmlu
ZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorICAgIG9wZXJhdG9yIGNvbnN0IFN0cmlu
ZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXco
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogCiAjaWYgVVNFKENGKQotICAgIFVSTChDRlVS
TFJlZik7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBVUkwoQ0ZVUkxSZWYpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lm
IFVTRShGT1VOREFUSU9OKQotICAgIFVSTChOU1VSTCopOwotICAgIG9wZXJhdG9yIE5TVVJMKigp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoTlNVUkwgKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIG9wZXJhdG9yIE5TVVJMICooKSBjb25zdDsKICNlbmRpZgorCiAjaWZkZWYg
X19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmco
KTsgfQorICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsg
fQogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwcmludCgpIGNvbnN0OwogI2Vu
ZGlmCiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHN0YXRp
YyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworCisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgY29weVRvQnVmZmVy
KFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwogICAgIHVuc2lnbmVkIGhvc3RTdGFy
dCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGNyZWRlbnRpYWxzRW5kKCkgY29uc3Q7CisgICAgdm9p
ZCByZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBwYXJz
ZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwog
ICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKICAgICBT
dHJpbmcgbV9zdHJpbmc7CiAKQEAgLTIyOSw0OSArMjI1LDI3IEBAIHByaXZhdGU6CiAKIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2ln
bmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOwogCi10ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rl
cj4KLXZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNv
ZGVyIDw8IG1fc3RyaW5nOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgVVJM
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCi17Ci0gICAgYXV0byBvcHRpb25h
bFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICghb3B0aW9uYWxVUkwpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8VVJM
PiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmluZz4g
c3RyaW5nOwotICAgIGRlY29kZXIgPj4gc3RyaW5nOwotICAgIGlmICghc3RyaW5nKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIFdURk1vdmUoKnN0
cmluZykpOwotfQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogCiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ1F1
ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVJMJiBhYm91dEJsYW5rVVJM
KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVJMJiBhYm91dFNyY0RvY1VSTCgpOwogCiAv
LyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KIC8vIFRoZXNlIGFy
ZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVz
ZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkg
ZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4K
LS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0
IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KKy8vIFRo
ZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBXVEY6OlVSTCBmdW5jdGlvbnMgaW4gdGhh
dCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJs
ZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2
YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBXVEY6
OlVSTC4KIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJv
dG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1
cmwpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25z
dCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPHVp
bnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBv
cnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwpAQCAtMjgwLDE0ICsyNTQsNDAgQEAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNrbGlzdCBwb3J0
cyB0aGF0IHNob3VsZAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9y
dEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3Rv
Y29sKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZy
b21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7Ci0KLS8vIEZJWE1FOiBU
aGlzIGlzIGEgd3JvbmcgY29uY2VwdCB0byBleHBvc2UsIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVS
TCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZyBwZXIgdGhlIFVSTCBTdGFuZGFyZC4KKy8vIEZJWE1F
OiBUaGlzIG5lZWRzIGEgbmV3LCBtb3JlIHNwZWNpZmljIG5hbWUuIFRoZSBnZW5lcmFsIHRoaW5n
IG5hbWVkIGhlcmUgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LCBzaW5jZSBkaWZmZXJl
bnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcuCiBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7
CiAKLS8vIElubGluZXMuCitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47CisKKy8vIEZ1bmN0
aW9uIHRlbXBsYXRlIGFuZCBpbmxpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWNvZGVyPiBib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQorewor
ICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFvcHRpb25h
bFVSTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVybCA9IFdURk1vdmUoKm9wdGlvbmFs
VVJMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
T3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlv
bmFsPFN0cmluZz4gc3RyaW5nOworICAgIGRlY29kZXIgPj4gc3RyaW5nOworICAgIGlmICghc3Ry
aW5nKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBVUkwoVVJMKCks
IFdURk1vdmUoKnN0cmluZykpOworfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQogewpAQCAtMzE5LDggKzMxOSwxMCBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVybiBhICE9
IGIuc3RyaW5nKCk7CiB9CiAKLS8vIElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29nbGVV
UkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKLS8vIHdpdGhvdXQgaGF2aW5nIHRv
IGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCitpbmxp
bmUgVVJMOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6IG1fc3RyaW5nKEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSkKK3sKK30KIAogaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBj
b25zdAogewpAQCAtMzM5LDE3ICszNDEsMTIgQEAgaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkg
Y29uc3QKIAogaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wYXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICByZXR1cm4gbV9wYXRo
RW5kID4gcGF0aFN0YXJ0KCk7CiB9CiAKLWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBj
b25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNDcmVkZW50aWFscygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0OwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc1Bh
c3N3b3JkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IChtX3VzZXJFbmQg
KyAxKTsKKyAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IG1fdXNlclN0YXJ0OwogfQogCiBpbmxp
bmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKQEAgLTM1Nyw3ICszNTQsNyBAQCBpbmxpbmUg
Ym9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKICAgICByZXR1cm4gbV9xdWVyeUVuZCA+IG1fcGF0
aEVuZDsKIH0KIAotaW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0CitpbmxpbmUg
Ym9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
aXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7CiB9CkBAIC0zODIsMTEg
KzM3OSw2IEBAIGlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogfQogCi1XVEZfRVhQT1JUX1BSSVZB
VEUgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFVS
TCYpOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgSGFzaFRyYWl0czxVUkw+OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjphYm91dEJsYW5rVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCmluZGV4IDA2YjBhZWM2
NGQxMDI1ZDU0M2ZmOWRjM2Q2YTFhN2QyZTYxMGM4NTQuLmZhMDhjOWY4ODM2NTkyYjZhYzA1M2M3
M2ZhODY3ZTVlMDFiYWI3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0
cmFzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiBjZlVSTCwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCi0g
ICAgaWYgKHVybC5oYXNVc2VybmFtZSgpIHx8IHVybC5oYXNQYXNzd29yZCgpKQorICAgIGlmICh1
cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJMIH0pOwogCiAgICAgVVJMQ2hhckJ1ZmZlciBieXRlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGQxM2JiNmM5MWY5ZWJjYTMzMGRlNTFk
ZDA1YzI3ZTA1OTZhY2EyZGIuLmNiMjA1YWRhN2FhOTJiODFlNThlMDU4MTM3MmVmMGJlZWY2ZDA5
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMzUsNiArMzUsNyBAQCBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50
ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc0LDYgKzc1LDExIEBAIGJvb2wgU3RyaW5nVmlldzo6
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHByZWZpeCkgY29u
c3QKICAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywg
cHJlZml4KTsKIH0KIAorYm9vbCBTdHJpbmdWaWV3OjplbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGVuZ3RoICYmICgqdGhpcylbbV9sZW5ndGggLSAxXSA9
PSBjaGFyYWN0ZXI7Cit9CisKIGJvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgoY29uc3QgU3RyaW5n
VmlldyYgc3VmZml4KSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGgoKnRoaXMs
IHN1ZmZpeCk7CkBAIC0zMDYsNiArMzEyLDMyIEBAIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQudW5kZXJseWluZ1N0cmluZzsKIH0K
IAorLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG5hbWVkIHBhcnNlTnVtYmVyPHVpbnQxNl90PiBp
bnN0ZWFkPworLy8gRklYTUU6IFNob3VsZCB3ZSByZXBsYWNlIHRoZSB0b0ludCBmYW1pbHkgb2Yg
ZnVuY3Rpb25zIHdpdGggdGhpcyBzdHlsZT8KK09wdGlvbmFsPHVpbnQxNl90PiBwYXJzZVVJbnQx
NihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgYXV0byBu
dW1iZXIgPSB0b0ludGVncmFsVHlwZTx1aW50MTZfdD4oc3RyaW5nLCAmb2spOworICAgIGlmICgh
b2spCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30K
KworYm9vbCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBi
KQoreworICAgIGlmIChhLm1fY2hhcmFjdGVycyA9PSBiLm1fY2hhcmFjdGVycykgeworICAgICAg
ICBBU1NFUlQoYS5pczhCaXQoKSA9PSBiLmlzOEJpdCgpKTsKKyAgICAgICAgcmV0dXJuIGEubGVu
Z3RoKCkgPT0gYi5sZW5ndGgoKTsKKyAgICB9CisKKyAgICByZXR1cm4gIWEuaXNOdWxsKCkgJiYg
ZXF1YWxDb21tb24oYSwgYik7Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoY29uc3Qg
Y2hhciogc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91
bmQ7Cit9CisKICNpZiBDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKIC8vIE1hbmFnZSByZWZl
cmVuY2UgY291bnQgbWFudWFsbHkgc28gVW5kZXJseWluZ1N0cmluZyBkb2VzIG5vdCBuZWVkIHRv
IGJlIGRlZmluZWQgaW4gdGhlIGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXgg
NmNmZWJkYmFiN2VhNDU4ZTFkOTY4MGQxMzE2MTkxNDhmMjE3OWYwMy4uN2Y2ZjkzMTQ3ZTVmYWI0
YjMzZmQ5ZTNmZWRkZDI4ZGY3YjA0MzQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAg
LTEzNyw4ICsxMzcsNyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWdu
ZWQgc3RhcnQgPSAwKSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0OwogCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CiAKQEAgLTE1MSw2
ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhVQ2hhcikgY29uc3Q7CiAgICAg
Ym9vbCBjb250YWlucyhDb2RlVW5pdE1hdGNoRnVuY3Rpb24pIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nLCAwKSAh
PSBub3RGb3VuZDsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zKGNvbnN0
IGNoYXIqKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdWaWV3
JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIAorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3Jikg
Y29uc3Q7CiAKQEAgLTE3NCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGJvb2wgZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CisgICAgZnJpZW5kIGJvb2wg
ZXF1YWxSZXNwZWN0aW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKIAogICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdm9pZCBp
bml0aWFsaXplKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTE5MSw2ICsxOTMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdJ
bXBsKikgeyB9CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcm
KSB7IH0KICNlbmRpZgorCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgY29uc3Qgdm9pZCogbV9j
aGFyYWN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMjEwLDYgKzIxMyw5IEBAIGJvb2wgZXF1YWwoU3Ry
aW5nVmlldywgY29uc3QgTENoYXIqIGIpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIGNvbnN0IGNoYXIqKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxSZXNw
ZWN0aW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKK2Jvb2wgZXF1YWxJZ25vcmlu
Z051bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CisKIHRlbXBsYXRlPHVuc2lnbmVkIGxl
bmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25z
dCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0ZTx1bnNpZ25lZCBs
ZW5ndGg+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3
LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiAKQEAgLTIzNCw2ICsy
NDAsOCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5n
IG5vcm1hbGl6ZWRORkMoU3RyaW5nVmlldyk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
bm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlv
bmFsPHVpbnQxNl90PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3KTsKKwogfQogCiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZy5oPgpAQCAtMTA0Myw2ICsxMDUxLDEyIEBAIHRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2VDb21tb24oc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzKTsKIH0KIAoraW5saW5lIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpCit7CisgICAgLy8g
RklYTUU6IGVxdWFsKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpIGlnbm9yZXMgbnVsbGl0eTsgY29u
c2lkZXIgY2hhbmdpbmcgdG8gYmUgbGlrZSBvdGhlciBzdHJpbmcgY2xhc3NlcyBhbmQgcmVzcGVj
dGluZyBpdC4KKyAgICByZXR1cm4gZXF1YWwoYSwgYik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBm
MTJhZDM2ZDE5ZTdmZDU0YjVjY2ExMjZmNzI1ZDAwMDY0Mzg0NWZlLi5hZmM5MmY1Nzc2NjYyMjky
ZjBjZTA2NDYyNGU2OGYzODQ2NzIyNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBA
IC05MjQsMTAyICs5MjQsMTAyIEBAIHN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZkNoYXJhY3RlcnNB
c0ludGVnZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlCiAKIGludCBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBMQ2hhcj4o
ZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4o
ZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3Qo
Y29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoLCBvaywg
YmFzZSk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsK
KyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJh
c2UpOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwog
fQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludDY0X3QsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTx1aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnRwdHJfdCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnRwdHJfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIExDaGFyPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQgY2hhcmFj
dGVyc1RvSW50KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsK
LSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdl
cjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0
YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25z
dCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVuc2lnbmVkLCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFy
PihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0
KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVy
c0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9J
bnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0lu
dDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFj
dGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4g
dG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2Vy
PFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50NjRfdCBjaGFyYWN0ZXJz
VG9VSW50NjQoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewot
ICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9m
Q2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogdWludDY0X3QgY2hh
cmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIFVDaGFyPihkYXRhLCBs
ZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7
CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJh
Y3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludHB0
cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBMQ2hhcj4o
ZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBv
aywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVuZ3Ro
T2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQog
CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwg
VUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEs
IGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEw
KTsKIH0KIAogZW51bSBUcmFpbGluZ0p1bmtQb2xpY3kgeyBEaXNhbGxvd1RyYWlsaW5nSnVuaywg
QWxsb3dUcmFpbGluZ0p1bmsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKaW5kZXggYjBkYjU3YTgzNzBjZTAzMDI4NjRmZTA4MmI0M2EyNGVi
MjhiOWRmOS4uNzgyYjI2MmY0ODc0MTkzODJhNzQ1MDEwMzIzZTMzNTIyYTc1NjU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTcy
LDEwICs3Miw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaFVSTHMoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIGNhY2hlZFVSCiAgICAgVVJMIGNhY2hlZFJlcXVl
c3RVUkwgPSBjYWNoZWRVUkw7CiAKICAgICBpZiAob3B0aW9ucy5pZ25vcmVTZWFyY2gpIHsKLSAg
ICAgICAgaWYgKHJlcXVlc3RVUkwuaGFzUXVlcnkoKSkKLSAgICAgICAgICAgIHJlcXVlc3RVUkwu
c2V0UXVlcnkoeyB9KTsKLSAgICAgICAgaWYgKGNhY2hlZFJlcXVlc3RVUkwuaGFzUXVlcnkoKSkK
LSAgICAgICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICAgICAgcmVx
dWVzdFVSTC5zZXRRdWVyeSh7IH0pOworICAgICAgICBjYWNoZWRSZXF1ZXN0VVJMLnNldFF1ZXJ5
KHsgfSk7CiAgICAgfQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHJlcXVlc3RVUkwsIGNhY2hlZFJlcXVlc3RVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDNhNTUyMThmZmJkNzBhMGYxMTU2NjE2
MGFmOTM5MGViYmQxOTFkNzMuLmRmYjczM2U5MzAwZGEyYWUxZTY5NWU0MTJjOTczMjAwOGFjNmUw
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAK
QEAgLTE2MCw5ICsxNjAsMTAgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxFeGNlcHRpb24+IHBy
b2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGMKIEV4Y2VwdGlvbk9y
PHZvaWQ+IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIElu
aXQmJiBpbml0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAg
IC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIGh0
dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtcGFyc2VyLgorCisgICAgLy8g
RklYTUU6IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgdG8gaHR0
cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCiAgICAgVVJMIHJl
cXVlc3RVUkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Rm9yY2VVVEY4OjpZZXMpOwotICAgIGlmICghcmVxdWVzdFVS
TC5pc1ZhbGlkKCkgfHwgIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVxdWVzdFVS
TC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmICghcmVxdWVzdFVSTC5pc1ZhbGlkKCkgfHwgcmVx
dWVzdFVSTC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVVJMIGlzIG5vdCB2YWxpZCBvciBjb250YWlucyB1c2VyIGNyZWRlbnRpYWxzLiJf
cyB9OwogCiAgICAgbV9vcHRpb25zLm1vZGUgPSBNb2RlOjpDb3JzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNjA5YWE4YTI4OGZmMzU4
MTllNjczY2Y1NjdkY2I1MjBjNjNhYjQ4OS4uMDVmNDlmODg5MzZlMDhiZGUwNWJlNGViNjZmYTlj
MTU4OGZjYmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9u
c2U+PiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAg
IFVSTCByZXF1ZXN0VVJMID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICghcmVx
dWVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IG1ha2VTdHJpbmcoIlJlZGlyZWN0aW9uIFVSTCAnIiwgcmVxdWVzdFVSTC5zdHJpbmcoKSwgIicg
aXMgaW52YWxpZCIpIH07Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkgfHwg
IXJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAocmVxdWVzdFVSTC5oYXNDcmVk
ZW50aWFscygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVkaXJl
Y3Rpb24gVVJMIGNvbnRhaW5zIGNyZWRlbnRpYWxzIl9zIH07CiAgICAgaWYgKCFSZXNvdXJjZVJl
c3BvbnNlOjppc1JlZGlyZWN0aW9uU3RhdHVzQ29kZShzdGF0dXMpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgbWFrZVN0cmluZygiU3RhdHVzIGNvZGUgIiwgc3RhdHVz
LCAiaXMgbm90IGEgcmVkaXJlY3Rpb24gc3RhdHVzIGNvZGUiKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApp
bmRleCBjYWFkZjg3YjBiNTczZTMxMmU5ZTNlMDM5ZDZkYzZhODhmYzU5Y2NhLi5lNzEzNWJlYzYw
M2Y5YjUzYTlkMjJhNDQzYWYzNTgyMGYxY2FjYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMjIw
LDEzICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU3RhbmRhcmRpemVkUGF5bWVudE1ldGhv
ZElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQogLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3BheW1lbnQtbWV0aG9kLWlkLyN2YWxpZGF0aW9uCiBzdGF0aWMgYm9vbCBpc1ZhbGlkVVJM
QmFzZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcihjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAo
IXVybC5wcm90b2NvbElzKCJodHRwcyIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIXVybC51c2VyKCkuaXNFbXB0eSgpIHx8ICF1cmwucGFzcygpLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHVybC5wcm90
b2NvbElzKCJodHRwcyIpICYmICF1cmwuaGFzQ3JlZGVudGlhbHMoKTsKIH0KIAogLy8gSW1wbGVt
ZW50cyAidmFsaWRhdGUgYSBwYXltZW50IG1ldGhvZCBpZGVudGlmaWVyIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAppbmRleCA0ZTdhMDI1ZTQ3Njk0OTAxMTVlZWY0OWVlYzBhN2FmZGUxZWMzYjUzLi5h
YjRkNWZiYzExZjkyZDlhYWU2N2E4YTRkODhmYjJlY2FlZGNlYmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApAQCAtMTAzLDE5ICsxMDMsMTQgQEAgYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KQogICAgIHJldHVybiB0cnVl
OwogfQogICAgIAotc3RhdGljIGlubGluZSBVUkwgY3JlYXRlWW91VHViZVVSTChjb25zdCBTdHJp
bmcmIHZpZGVvSUQsIGNvbnN0IFN0cmluZyYgdGltZUlEKQorc3RhdGljIFVSTCBjcmVhdGVZb3VU
dWJlVVJMKFN0cmluZ1ZpZXcgdmlkZW9JRCwgU3RyaW5nVmlldyB0aW1lSUQpCiB7CiAgICAgQVNT
RVJUKCF2aWRlb0lELmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHZpZGVvSUQgIT0gIi8iKTsKLSAg
ICAKLSAgICBVUkwgcmVzdWx0KFVSTCgpLCAieW91dHViZToiICsgdmlkZW9JRCk7Ci0gICAgaWYg
KCF0aW1lSUQuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuc2V0UXVlcnkoInQ9IiArIHRpbWVJ
RCk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtl
U3RyaW5nKCJ5b3V0dWJlOiIsIHZpZGVvSUQsIHRpbWVJRC5pc0VtcHR5KCkgPyAiIiA6ICJ0PSIs
IHRpbWVJRCkpOwogfQotICAgIAotc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5
VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCisK
K3N0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5c0Fu
ZFZhbHVlcyhTdHJpbmdWaWV3IHF1ZXJ5U3RyaW5nKQogewogICAgIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlEaWN0aW9uYXJ5OwogICAgIApAQCAtMTU1LDcgKzE1
MCw3IEBAIHN0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5
S2V5c0FuZFZhbHVlcyhjb25zdCBTdHJpbmcmIHF1CiAgICAgICAgIC8vIFNhdmUgdGhlIGtleSBh
bmQgdGhlIHZhbHVlLgogICAgICAgICBpZiAoa2V5TGVuZ3RoICYmIHZhbHVlTGVuZ3RoKSB7CiAg
ICAgICAgICAgICBTdHJpbmcga2V5ID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKGtleUxvY2F0aW9u
LCBrZXlMZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVMb2NhdGlvbiwgdmFsdWVMZW5n
dGgpOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3RyaW5nKHZh
bHVlTG9jYXRpb24sIHZhbHVlTGVuZ3RoKS50b1N0cmluZygpOwogICAgICAgICAgICAgdmFsdWUu
cmVwbGFjZSgnKycsICcgJyk7CiAKICAgICAgICAgICAgIGlmICgha2V5LmlzRW1wdHkoKSAmJiAh
dmFsdWUuaXNFbXB0eSgpKQpAQCAtMjA5LDE2ICsyMDQsMTYgQEAgc3RhdGljIFVSTCBwcm9jZXNz
QW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRl
bmVkVVIKIAogICAgIC8vIFNob3J0IFVSTCBvZiB0aGUgZm9ybTogaHR0cDovL3lvdXR1LmJlL3Yx
ZDMwMUQKICAgICBpZiAoaXNZb3VUdWJlU2hvcnRlbmVkVVJMKSB7Ci0gICAgICAgIFN0cmluZyB2
aWRlb0lEID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1dG8gdmlkZW9JRCA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodmlkZW9JRC5pc0VtcHR5KCkg
fHwgdmlkZW9JRCA9PSAiLyIpCiAgICAgICAgICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIHJl
dHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCB7IH0pOwogICAgIH0KLSAgICAKKwogICAg
IGF1dG8gcGF0aCA9IHVybC5wYXRoKCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7
Ci0gICAgU3RyaW5nIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIAor
ICAgIGF1dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpOworCiAgICAgLy8gT24gdGhlIFlvdVR1YmUgbW9iaWxlIHdlYiBh
cHAsIHRoZSBwYXRoIGFuZCBxdWVyeSBzdHJpbmcgYXJlIHB1dCBpbnRvIHRoZQogICAgIC8vIGZy
YWdtZW50IHNvIHRoYXQgb25lIHdlYiBwYWdlIGlzIG9ubHkgZXZlciBsb2FkZWQgKHNlZSA8cmRh
cjovL3Byb2JsZW0vOTU1MDYzOT4pLgogICAgIGlmIChpc1lvdVR1YmVNb2JpbGVXZWJBcHBVUkwp
IHsKQEAgLTIyNyw3ICsyMjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJl
VVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAg
ICAgcGF0aCA9IGZyYWdtZW50OwogICAgICAgICAgICAgcXVlcnkgPSBlbXB0eVN0cmluZygpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IFN0cmluZ1ZpZXcoZnJhZ21lbnQp
LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQuc3Vi
c3RyaW5nKDAsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3Ry
aW5nKGxvY2F0aW9uICsgMSk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQgPSBlbXB0eVN0
cmluZygpOwpAQCAtMjYwLDEwICsyNTUsMTAgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRl
WW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwYXRoLCAiL2UvIikpIHsKLSAgICAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9u
ZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgICAgIFN0cmluZyB2aWRlb0lEOwot
ICAgICAgICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAgICAgIFN0cmluZ1Zp
ZXcgdmlkZW9JRDsKKyAgICAgICAgU3RyaW5nVmlldyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsK
IAorICAgICAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CiAgICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQYXRoQ29tcG9uZW50
LmZpbmQoJyYnKTsKICAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9IG5vdEZvdW5kKSB7
CiAgICAgICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2UgJiBpbiBwbGFjZSBv
ZiA/IGZvciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgpAQCAtMjczLDExICsyNjgsMTEgQEAg
c3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9v
bCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENv
bXBvbmVudDsKIAogICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwor
ICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFt
cGVyc2FuZC50b1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwo
dmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gVVJMKCk7CiB9CiAKQEAgLTI5MCwxMyArMjg1LDEzIEBAIFN0cmluZyBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkwoY29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCiBTdHJp
bmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIHsKICAgICBib29sIGlz
WW91VHViZVNob3J0ZW5lZFVSTCA9IGZhbHNlOwotICAgIFN0cmluZyBwb3NzaWJsZU1hbGZvcm1l
ZFF1ZXJ5OwotICAgIFVSTCB5b3VUdWJlVVJMID0gcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwo
c3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIHBvc3NpYmxlTWFsZm9ybWVkUXVlcnkpOwor
ICAgIFN0cmluZyBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OworICAgIFVSTCB5b3VUdWJlVVJMID0g
cHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRVUkws
IHBvc3NpYmx5TWFsZm9ybWVkUXVlcnkpOwogICAgIGlmIChzcmNVUkwuaXNFbXB0eSgpIHx8IHlv
dVR1YmVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3JjU3RyaW5nOwogCiAgICAgLy8g
VHJhbnNmb3JtIHRoZSB5b3V0dWJlVVJMICh5b3V0dWJlOlZpZGVvSUQpIHRvIGlmcmFtZSBlbWJl
ZCB1cmwgd2hpY2ggaGFzIHRoZSBmb3JtYXQ6IGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQv
VmlkZW9JRAotICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCkudG9TdHJpbmcoKTsKKyAg
ICBhdXRvIHNyY1BhdGggPSBzcmNVUkwucGF0aCgpOwogICAgIGNvbnN0IFN0cmluZyYgdmlkZW9J
RCA9IHlvdVR1YmVVUkwuc3RyaW5nKCkuc3Vic3RyaW5nKHlvdVR1YmVVUkwucHJvdG9jb2woKS5s
ZW5ndGgoKSArIDEpOwogICAgIHNpemVfdCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCA9IHNyY1Bh
dGguZmluZCh2aWRlb0lEKTsKIApAQCAtMzA1LDcgKzMwMCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNV
UkwsIGNvCiAgICAgICAgIEFTU0VSVChsb2NhdGlvbk9mVmlkZW9JREluUGF0aCk7CiAgICAgCiAg
ICAgICAgIC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQg
YmVmb3JlIC9wYXRoL1ZpZGVvSWQuCi0gICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9J
RCA9IHNyY1N0cmluZy5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoKSk7CisgICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1Zp
ZXcoc3JjU3RyaW5nKS5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoKSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShz
cmNQYXRoLCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3
ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECiAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlPwpAQCAt
MzE1LDIyICszMTAsMjEgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHVi
ZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY28KIAogICAgIEFTU0VSVChs
b2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgIT0gbm90Rm91bmQpOwogCi0gICAgY29uc3QgU3Ry
aW5nJiBzcmNVUkxQcmVmaXggPSBzcmNTdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRo
QmVmb3JlVmlkZW9JRCk7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CisgICAg
YXV0byBzcmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuc3Vic3RyaW5nKDAsIGxv
Y2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7CisgICAgYXV0byBxdWVyeSA9IHNyY1VSTC5xdWVy
eSgpOworCiAgICAgLy8gSWYgdGhlIFVSTCBoYXMgbm8gcXVlcnksIHVzZSB0aGUgcG9zc2libHkg
bWFsZm9ybWVkIHF1ZXJ5IHdlIGZvdW5kLgogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHF1ZXJ5ID0gcG9zc2libGVNYWxmb3JtZWRRdWVyeTsKKyAgICAgICAgcXVlcnkgPSBwb3Nz
aWJseU1hbGZvcm1lZFF1ZXJ5OwogCiAgICAgLy8gQXBwZW5kIHRoZSBxdWVyeSBzdHJpbmcgaWYg
aXQgaXMgdmFsaWQuCi0gICAgU3RyaW5nQnVpbGRlciBmaW5hbFVSTDsKLSAgICBpZiAoaXNZb3VU
dWJlU2hvcnRlbmVkVVJMKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmRMaXRlcmFsKCJodHRwOi8v
d3d3LnlvdXR1YmUuY29tIik7Ci0gICAgZWxzZQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoc3Jj
VVJMUHJlZml4KTsKLSAgICBmaW5hbFVSTC5hcHBlbmQoIi9lbWJlZC8iLCB2aWRlb0lEKTsKLSAg
ICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKCc/JywgcXVl
cnkpOwotICAgIHJldHVybiBmaW5hbFVSTC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3Ry
aW5nKAorICAgICAgICBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPyAiaHR0cDovL3d3dy55b3V0dWJl
LmNvbSIgOiBzcmNVUkxQcmVmaXgsCisgICAgICAgICIvZW1iZWQvIiwKKyAgICAgICAgdmlkZW9J
RCwKKyAgICAgICAgcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIsCisgICAgICAgIHF1ZXJ5Cisg
ICAgKTsKIH0KICAgICAKIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c1VS
TChjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggOTkyNmNlZjk2NzE1NTM2NzJm
MjM3OTliZjJmZWJmYjVlZDE5MGY3Ny4uZTIzNzQ5NzE4NjNmMWRhNzBkN2U5ZjljOTk2OWRkNmMw
NjRmNTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTY0LDE1ICs2NCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIFN0cmluZ0J1aWxkZXIgbmFtZTsKLSAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsK
LSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG5hbWUuYXBwZW5kKCcvJyk7Ci0gICAg
aWYgKCF1cmwucXVlcnkoKS5pc051bGwoKSkgewotICAgICAgICBuYW1lLmFwcGVuZCgnPycpOwot
ICAgICAgICBuYW1lLmFwcGVuZCh1cmwucXVlcnkoKSk7Ci0gICAgfQotICAgIFN0cmluZyByZXN1
bHQgPSBuYW1lLnRvU3RyaW5nKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1ha2VTdHJpbmcoCisgICAgICAgIHBhdGgsCisgICAgICAgIHBhdGguaXNF
bXB0eSgpID8gIi8iIDogIiIsCisgICAgICAgIHVybC5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25N
YXJrKCkKKyAgICApOwogICAgIEFTU0VSVCghcmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFyZXN1bHQuY29udGFpbnMoJyAnKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDM1YTY2YmU1NTVhNjNiNDA4ZTZkOGI1YmZiMmM5ZDcyOWEyNGE0MmIuLmNm
NmRjNWRhYWVmMzY4OWM5ZjY5OTU3MzRhZDg5MTYxMDRlYmUzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcApAQCAtOTQ0LDI2ICs5NDQsMjcgQEAgSW50UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y2xpY2tQb2ludCgpCiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKIHsKLSAgICBFbGVt
ZW50KiBlbGVtZW50ID0gYW5jaG9yRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9IGFuY2hv
ckVsZW1lbnQoKTsKKwogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1cHBvcnQgQVJJQSBs
aW5rcyBhcyBpbnRlcm5hbCBsaW5rIGVsZW1lbnRzCiAgICAgaWYgKCFpczxIVE1MQW5jaG9yRWxl
bWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEhUTUxBbmNob3JF
bGVtZW50JiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOwot
ICAgIAotICAgIFVSTCBsaW5rVVJMID0gYW5jaG9yLmhyZWYoKTsKLSAgICBTdHJpbmcgZnJhZ21l
bnRJZGVudGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvJiBh
bmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpOworCisgICAgYXV0
byBsaW5rVVJMID0gYW5jaG9yLmhyZWYoKTsKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9
IGxpbmtVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmll
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8gY2hl
Y2sgaWYgVVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0gICAgVVJMIGRvY3VtZW50VVJM
ID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBhdXRvIGRvY3VtZW50VVJMID0g
bV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKLSAgICBOb2RlKiBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQo
KS5maW5kQW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CisKKyAgICBhdXRvIGxpbmtlZE5vZGUg
PSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKCFsaW5rZWROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIC8vIFRoZSBlbGVtZW50IHdlIGZpbmQgbWF5IG5v
dCBiZSBhY2Nlc3NpYmxlLCBzbyBmaW5kIHRoZSBmaXJzdCBhY2Nlc3NpYmxlIG9iamVjdC4KICAg
ICByZXR1cm4gZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUobGlua2VkTm9kZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxOTcyYWVkOTA5ZTA5N2E2NWI3ZWExZTRiNWY5M2Fi
YTY4ZTk0ZTFlLi5lNDQ1NGU2ZDViNzVlZjAyMThiZjAyYzk3MmYxMzVkY2RiM2JmM2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMyNTEsNyArMzI1MSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldFVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fdXJsID0gbmV3VVJMOwogICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSWdub3JlSG9zdChtX3VybCkpCi0gICAgICAgIG1fdXJsLnJl
bW92ZUhvc3RBbmRQb3J0KCk7CisgICAgICAgIG1fdXJsLnNldEhvc3RBbmRQb3J0KHsgfSk7CiAK
ICAgICBtX2RvY3VtZW50VVJJID0gbV91cmwuc3RyaW5nKCk7CiAgICAgdXBkYXRlQmFzZVVSTCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGVkMzVmY2RjNmY0NjIwNGNkYWI3M2Y2MzRiZjll
MDUwZTExY2Q0NjcuLjFmZjIzZTE2MGI5MThhYjFjZGM1MGU4YzNmNzYxYzhkMWNhNDJhMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ0OTEsNyArNDQ5MSw3IEBAIEVsZW1lbnQqIEVsZW1l
bnQ6OmZpbmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5hbWUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgZG9jdW1lbnQuYmFzZVVS
TCgpKSkgewotICAgICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
OworICAgICAgICBvdXRBbmNob3JOYW1lID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudC5maW5kQW5jaG9yKG91dEFuY2hvck5hbWUp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAxZGFhODU4OGRmNTM5MGFm
ODEzMWUwZGFmMDk3YTg5ZmI1NzdhNTkxLi4zMGVkOWYzZjYxZjQwM2RiYjk0ZThlM2UyZjc5ZmY4
OTdlMTcyYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNDQwLDYgKzQ0MCw4IEBA
IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IFRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQoY29u
c3QgRmxvYXRQb2ludCYgcCkKICAgICByZXR1cm4gZWxlbWVudHNGcm9tUG9pbnQocC54KCksIHAu
eSgpKTsKIH0KIAorLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gY2hhbmdlIHRoaXMgdG8gdGFr
ZSBhIFN0cmluZ1ZpZXcsIHNpbmNlIHRoYXQncyB3aGF0IGNhbGxlcnMgaGF2ZQorLy8gYW5kIHRo
ZXJlIGlzIG5vIHBhcnRpY3VsYXIgYWR2YW50YWdlIHRvIGFscmVhZHkgaGF2aW5nIGEgU3RyaW5n
LgogRWxlbWVudCogVHJlZVNjb3BlOjpmaW5kQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDBjOWY5ZDBlODkwMzk3MDAz
MTA5MGRiMmI4ZjMwZGRkYzQyZTlkZDQuLmZhNjFjNWM2MTllMDc0YTFhNzU1NTc3NWI1ZmY1Y2Y5
YzFjMTk1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCkBAIC0zMjgsMTMgKzMyOCwxMyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKKyAgICAg
ICAgU3RyaW5nIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBh
dGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBuYW1lID0gQXRvbVN0cmluZygibWVkaWEiKTsKKyAgICAgICAgICAgIG5hbWUg
PSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
bmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEo
KSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdU
Rk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzQ4LDEx
ICszNDgsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291cmNl
ID09IHVybFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21w
b25lbnQoKTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmlu
ZykubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBuYW1lID0gQXRvbVN0cmluZygiZmlsZSIpOworICAgICAgICAg
ICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IG5hbWUsIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5m
byA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KaW5kZXggZjJhMmQ1MmFjNWFiZjRlNGYxMzExM2NhMjVkMWIyMGExNzM4ZmE2
OS4uYjdkMjljZDRiYWQ5NTBkM2FiZDdkZjc5ZTkwZjUzNDY0YzM2ODg0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1l
bnQmIGltYWdlRWxlbWVuCiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gcGFzdGVi
b2FyZEltYWdlVVJMOwogICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7
CiAgICAgfQotICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0gaW1hZ2VTb3VyY2VV
UkwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFt
ZSA9IGltYWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICBw
YXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IHBhc3RlYm9hcmQucmVzb3VyY2VNSU1FVHlwZShjYWNo
ZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggM2ExMWQ5MjBiMDc4MGVk
Y2Q3NjRiMTlhMDRjM2FmZTA5ZTkyNmNiMy4uOTAyMTBmNTViMTcyYTIwYWI2ZjU3YTI0MjUxNzM0
YTEwNjY4ZTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcApAQCAtMTc3LDIyICsxNzcsMTcgQEAgU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6YXR0YWNobWVudFRpdGxlKCkgY29uc3QKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OmF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdAogewogICAgIGF1dG8gdGl0bGUgPSBh
dHRhY2htZW50VGl0bGUoKTsKLQogICAgIGF1dG8gaW5kZXhPZkxhc3REb3QgPSB0aXRsZS5yZXZl
cnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleE9mTGFzdERvdCA9PSBub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuIHRpdGxlOwogCi0gICAgU3RyaW5nIG5hbWUgPSB0aXRsZS5sZWZ0KGluZGV4T2ZM
YXN0RG90KTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gdGl0bGUuc3Vic3RyaW5nKGluZGV4T2ZM
YXN0RG90KTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVu
ZChsZWZ0VG9SaWdodE1hcmspOwotICAgIGJ1aWxkZXIuYXBwZW5kKGZpcnN0U3Ryb25nSXNvbGF0
ZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQocG9wRGly
ZWN0aW9uYWxJc29sYXRlKTsKLSAgICBidWlsZGVyLmFwcGVuZChleHRlbnNpb24pOwotCi0gICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAg
ICAgbGVmdFRvUmlnaHRNYXJrLAorICAgICAgICBmaXJzdFN0cm9uZ0lzb2xhdGUsCisgICAgICAg
IFN0cmluZ1ZpZXcodGl0bGUpLmxlZnQoaW5kZXhPZkxhc3REb3QpLAorICAgICAgICBwb3BEaXJl
Y3Rpb25hbElzb2xhdGUsCisgICAgICAgIFN0cmluZ1ZpZXcodGl0bGUpLnN1YnN0cmluZyhpbmRl
eE9mTGFzdERvdCkKKyAgICApOwogfQogCiBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojph
dHRhY2htZW50VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuY3BwCmluZGV4IDAzZDkwNWJiYTM3OTEyN2Q3Zjk0MTg5MmY3OTc2NWE3ZWY5M2MxYjkuLjZi
ZmU3MDc0YTk1MWFkN2FjY2U5OTM4NDAwNjZjOGRiNzRkMTYxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNTcsMTQgKzM1NywxNCBAQCBzdGF0aWMg
UmVwbGFjZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBl
eHRlbnNpb247Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7CisgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBv
bmVudCgpOwogICAgIHNpemVfdCBkb3RPZmZzZXQgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNl
RmluZCgnLicpOwogICAgIGlmIChkb3RPZmZzZXQgIT0gbm90Rm91bmQpCi0gICAgICAgIGV4dGVu
c2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZzZXQgKyAxKTsKKyAgICAg
ICAgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEp
LnRvU3RyaW5nKCk7CiAKICAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlOwogICAgIGlmICh0eXBl
LmlzRW1wdHkoKSAmJiB1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgdHlwZSA9IG1pbWVU
eXBlRnJvbURhdGFVUkwodXJsLnN0cmluZygpKTsKKyAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJv
bURhdGFVUkwodXJsKTsKICAgICAKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgIWV4dGVuc2lv
bi5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZXBsYWNlbWVudCA6IHJlcGxhY2Vt
ZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJ
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5j
cHAKaW5kZXggZTdhNTE2ZWJhMjI4NDlmY2QzNzM0NjU5Mzk0YjdjNDllN2Y5N2NlMS4uNWI4NDU0
MWVhMGRjZjUyMjQyODJjMzFjZjc0YmI0NmVhMjU1MmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCkBAIC05OCw5ICs5OCw3IEBAIE1lZGlh
VGltZSBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjplbmRUaW1lKCkKIAogdm9pZCBNZWRpYUZyYWdt
ZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cygpCiB7Ci0gICAgaWYgKCFtX3VybC5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFN0cmluZyBmcmFnbWVudFN0
cmluZyA9IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8gZnJhZ21lbnRTdHJp
bmcgPSBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRTdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAppbmRleCBi
NzBlNWRjYmU4Mjc1ODEwMGIwNzJkMmY0ZjBmMGU0NjgwYzAxMDk3Li4zOTBiOThkNWJmZTQ0NjU5
NGY3ZjkzYjE1NjI3ZjdkODNkZWJkNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDggKzI5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIFVSTFV0aWxzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVSTFV0aWxzIHsKIHB1
YmxpYzoKICAgICBVUkwgaHJlZigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFQq
Pih0aGlzKS0+aHJlZigpOyB9CiAgICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYgdXJsKSB7
IHN0YXRpY19jYXN0PFQqPih0aGlzKS0+c2V0SHJlZih1cmwpOyB9CkBAIC00MSwzMSArNDAsMzEg
QEAgcHVibGljOgogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKIAogICAgIFN0cmluZyBwcm90
b2NvbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKIAogICAgIFN0cmluZyB1c2VybmFtZSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRV
c2VybmFtZShTdHJpbmdWaWV3KTsKIAogICAgIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRQYXNzd29yZChT
dHJpbmdWaWV3KTsKIAogICAgIFN0cmluZyBob3N0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIb3N0
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SG9zdChTdHJpbmdWaWV3KTsKIAogICAgIFN0
cmluZyBob3N0bmFtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBzZXRIb3N0bmFtZShTdHJpbmdWaWV3KTsKIAogICAgIFN0cmluZyBwb3J0
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0
UG9ydChTdHJpbmdWaWV3KTsKIAogICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRQYXRobmFtZShTdHJp
bmdWaWV3KTsKIAogICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsKICAgICB2b2lkIHNldFNlYXJj
aChjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyBoYXNoKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRIYXNoKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SGFzaChTdHJpbmdWaWV3KTsKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtOTUsOCArOTQsNyBAQCBTdHJpbmcgVVJMVXRp
bHM8VD46OnByb3RvY29sKCkgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyhocmVmKCkucHJv
dG9jb2woKSwgJzonKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxz
PFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAg
ICBVUkwgdXJsID0gaHJlZigpOwogICAgIHVybC5zZXRQcm90b2NvbCh2YWx1ZSk7CkBAIC0xMDYs
MTEgKzEwNCwxMCBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHZhbHVlKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnVzZXJu
YW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRVc2VyKCk7CisgICAgcmV0
dXJuIGhyZWYoKS5lbmNvZGVkVXNlcigpLnRvU3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB1c2Vy
KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoU3Ry
aW5nVmlldyB1c2VyKQogewogICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKHVybC5jYW5u
b3RCZUFCYXNlVVJMKCkpCkBAIC0xMjIsMTYgKzExOSwxNSBAQCB2b2lkIFVSTFV0aWxzPFQ+Ojpz
ZXRVc2VybmFtZShjb25zdCBTdHJpbmcmIHVzZXIpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0
cmluZyBVUkxVdGlsczxUPjo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIHJldHVybiBocmVmKCku
ZW5jb2RlZFBhc3MoKTsKKyAgICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzd29yZCgpLnRvU3Ry
aW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0
UGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBV
UkxVdGlsczxUPjo6c2V0UGFzc3dvcmQoU3RyaW5nVmlldyBwYXNzd29yZCkKIHsKICAgICBVUkwg
dXJsID0gaHJlZigpOwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgdXJsLnNldFBhc3MocGFzcyk7CisgICAgdXJsLnNldFBhc3N3b3JkKHBhc3N3
b3JkKTsKICAgICBzZXRIcmVmKHVybCk7CiB9CiAKQEAgLTE0MSwxNyArMTM3LDE3IEBAIFN0cmlu
ZyBVUkxVdGlsczxUPjo6aG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0QW5kUG9y
dCgpOwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2Vz
IGJlZm9yZSB0aGUgcG9ydCBudW1iZXIuCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHBhcnNlUG9y
dEZyb21TdHJpbmdQb3NpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCBwb3J0U3Rh
cnQsIHVuc2lnbmVkJiBwb3J0RW5kKQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb3VudEFTQ0lJ
RGlnaXRzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHBvcnRFbmQgPSBwb3J0U3RhcnQ7Ci0g
ICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh2YWx1ZVtwb3J0RW5kXSkpCi0gICAgICAgICsrcG9ydEVu
ZDsKLSAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKHBvcnRTdGFydCwgcG9ydEVuZCAtIHBvcnRT
dGFydCkudG9VSW50KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGZvciAodW5zaWduZWQgY291bnQgPSAwOyBjb3VudCA8IGxlbmd0aDsgKytjb3VudCkgewor
ICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzdHJpbmdbY291bnRdKSkKKyAgICAgICAgICAgIHJl
dHVybiBjb3VudDsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KFN0cmluZ1Zp
ZXcgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTY4LDE4ICsxNjQsMTkgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgIGlmIChzZXBhcmF0b3IgPT0gbm90Rm91bmQpCiAgICAgICAgIHVybC5z
ZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRF
bmQ7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnQgPSBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRpb24o
dmFsdWUsIHNlcGFyYXRvciArIDEsIHBvcnRFbmQpOwotICAgICAgICBpZiAoIXBvcnQpIHsKKyAg
ICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3Ry
aW5nKHNlcGFyYXRvciArIDEpKTsKKyAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7CiAgICAgICAg
ICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwj
dXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKICAgICAgICAgICAgIC8vIHNwZWNpZmlj
YWxseSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAogICAgICAgICAgICAgLy8gcmVx
dWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmlu
Zy4KLSAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2Vw
YXJhdG9yICsgMSkgKyAnMCcpOworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlr
ZSBzb21ldGhpbmcgdGhhdCBoYXMgc2luY2UgYmVlbiBjaGFuZ2VkIGFuZCB0aGlzIHJ1bGUgYW5k
IGNvZGUgbWF5IGJlIG9ic29sZXRlLgorICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KG1h
a2VTdHJpbmcodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpLCAnMCcpKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICBhdXRvIHBvcnROdW1iZXIgPSBw
YXJzZVVJbnQxNih2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSwgcG9ydExlbmd0aCkpOwor
ICAgICAgICAgICAgaWYgKHBvcnROdW1iZXIgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woKnBvcnROdW1iZXIsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmco
MCwgcG9ydEVuZCkpOworICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5z
dWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAgICAgICAgfQogICAg
IH0KICAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CkBAIC0xOTEsMTcgKzE4OCwxNCBAQCBTdHJp
bmcgVVJMVXRpbHM8VD46Omhvc3RuYW1lKCkgY29uc3QKICAgICByZXR1cm4gaHJlZigpLmhvc3Qo
KS50b1N0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8
VD46OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0bmFtZShTdHJpbmdWaWV3IHZhbHVlKQogewogICAg
IC8vIEJlZm9yZSBzZXR0aW5nIG5ldyB2YWx1ZToKICAgICAvLyBSZW1vdmUgYWxsIGxlYWRpbmcg
VSswMDJGIFNPTElEVVMgKCIvIikgY2hhcmFjdGVycy4KICAgICB1bnNpZ25lZCBpID0gMDsKLSAg
ICB1bnNpZ25lZCBob3N0TGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CiAgICAgd2hpbGUgKHZhbHVl
W2ldID09ICcvJykKICAgICAgICAgaSsrOwotCi0gICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKKyAg
ICBpZiAoaSA9PSB2YWx1ZS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVVJMIHVy
bCA9IGhyZWYoKTsKQEAgLTIyMywyMSArMjE3LDIyIEBAIFN0cmluZyBVUkxVdGlsczxUPjo6cG9y
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0UG9ydChTdHJpbmdWaWV3
IHZhbHVlKQogewogICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgaWYgKHVybC5jYW5ub3RCZUFC
YXNlVVJMKCkgfHwgdXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VV
UkwoKSB8fCB1cmwucHJvdG9jb2xJcygiZmlsZSIpIHx8ICF1cmwuY2FuU2V0SG9zdE9yUG9ydCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIHVuc2ln
bmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoJnN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcyB8fCBX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCi0gICAg
ICAgIHVybC5yZW1vdmVQb3J0KCk7Ci0gICAgZWxzZQotICAgICAgICB1cmwuc2V0UG9ydChwb3J0
KTsKKyAgICBhdXRvIGRpZ2l0c09ubHkgPSB2YWx1ZS5sZWZ0KGNvdW50QVNDSUlEaWdpdHModmFs
dWUpKTsKKyAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydDsKKyAgICBpZiAoIWRpZ2l0c09ubHku
aXNFbXB0eSgpKSB7CisgICAgICAgIHBvcnQgPSBwYXJzZVVJbnQxNihkaWdpdHNPbmx5KTsKKyAg
ICAgICAgaWYgKCFwb3J0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV1RGOjpp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAg
ICAgIHBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgfQorICAgIHVybC5zZXRQb3J0KHBvcnQpOwog
CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtMjQ4LDggKzI0Myw3IEBAIFN0cmlu
ZyBVUkxVdGlsczxUPjo6cGF0aG5hbWUoKSBjb25zdAogICAgIHJldHVybiBocmVmKCkucGF0aCgp
LnRvU3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxU
Pjo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAg
VVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSkKQEAgLTI1
NywxMCArMjUxLDEwIEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgaWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKHZhbHVlWzBVXSA9PSAnLycpCisgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgo
Jy8nKSkKICAgICAgICAgdXJsLnNldFBhdGgodmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgdXJs
LnNldFBhdGgoIi8iICsgdmFsdWUpOworICAgICAgICB1cmwuc2V0UGF0aChtYWtlU3RyaW5nKCcv
JywgdmFsdWUpKTsKIAogICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKIH0KQEAgLTI2OCw4ICsy
NjIsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVl
KQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46OnNlYXJjaCgpIGNv
bnN0CiB7Ci0gICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1ZXJ5KCk7Ci0gICAgcmV0dXJuIHF1
ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyBxdWVyeTsKKyAgICByZXR1cm4g
aHJlZigpLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IGhyZWYoKS5xdWVyeVdp
dGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CkBAIC0yODAsNyArMjczLDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0U2VhcmNoKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIC8vIElmIHRoZSBnaXZlbiB2YWx1ZSBpcyB0aGUg
ZW1wdHkgc3RyaW5nLCBzZXQgdXJsJ3MgcXVlcnkgdG8gbnVsbC4KICAgICAgICAgdXJsLnNldFF1
ZXJ5KHsgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1
ZVswVV0gPT0gJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOworICAgICAgICBTdHJp
bmcgbmV3U2VhcmNoID0gdmFsdWUuc3RhcnRzV2l0aCgnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEp
IDogdmFsdWU7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0ICcjJyBpbiB0aGUgcXVlcnkgZG9l
cyBub3QgbGVhayB0byB0aGUgaGFzaC4KICAgICAgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5y
ZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOwogICAgIH0KQEAgLTI5MSwxNyArMjg0LDE0
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46Omhhc2goKSBjb25zdAogewot
ICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCk7Ci0gICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBBdG9tU3RyaW5nKFN0cmluZygiIyIgKyBmcmFn
bWVudElkZW50aWZpZXIpKTsKKyAgICAvLyBGSVhNRTogV2h5IGNvbnZlcnQgdGhpcyBzdHJpbmcg
dG8gYW4gYXRvbSBoZXJlIGluc3RlYWQgb2YganVzdCBhIHN0cmluZz8gSW50ZW50aW9uYWxseSB0
byBzYXZlIG1lbW9yeT8gQW4gZXJyb3I/CisgICAgcmV0dXJuIGhyZWYoKS5mcmFnbWVudElkZW50
aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0eUF0b20oKSA6IGhyZWYoKS5mcmFnbWVudElkZW50aWZp
ZXJXaXRoTGVhZGluZ051bWJlclNpZ24oKS50b0F0b21TdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFs
dWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIYXNoKFN0cmlu
Z1ZpZXcgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKLSAgICBTdHJpbmcgbmV3RnJh
Z21lbnQgPSB2YWx1ZVswVV0gPT0gJyMnID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7Cisg
ICAgYXV0byBuZXdGcmFnbWVudCA9IHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSA/IFN0cmluZ1ZpZXco
dmFsdWUpLnN1YnN0cmluZygxKSA6IFN0cmluZ1ZpZXcodmFsdWUpOwogICAgIGlmIChuZXdGcmFn
bWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsK
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJp
YnV0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3Bw
CmluZGV4IDYzM2U3NzVhNTQ1NDRmY2ZkNjY4N2FiYmVjZjlhZDg2ODlhNmRkMmYuLjc2ZDRhZmI5
NWZmNGI0NmRjMDJhY2NlMDdkZjRhZWM5YzU0YmYxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9BZENsaWNrQXR0cmlidXRpb24uY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgQWRDbGlj
a0F0dHJpYnV0aW9uOjppc1ZhbGlkKCkgY29uc3QKIAogRXhwZWN0ZWQ8QWRDbGlja0F0dHJpYnV0
aW9uOjpDb252ZXJzaW9uLCBTdHJpbmc+IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJz
aW9uUmVxdWVzdChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogewotICAgIGlmICghcmVkaXJlY3RV
UkwucHJvdG9jb2xJcygiaHR0cHMiX3MpIHx8IHJlZGlyZWN0VVJMLmhhc1VzZXJuYW1lKCkgfHwg
cmVkaXJlY3RVUkwuaGFzUGFzc3dvcmQoKSB8fCByZWRpcmVjdFVSTC5oYXNRdWVyeSgpIHx8IHJl
ZGlyZWN0VVJMLmhhc0ZyYWdtZW50KCkpIHsKKyAgICBpZiAoIXJlZGlyZWN0VVJMLnByb3RvY29s
SXMoImh0dHBzIikgfHwgcmVkaXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMoKSB8fCByZWRpcmVjdFVS
TC5oYXNRdWVyeSgpIHx8IHJlZGlyZWN0VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JTkZPKEFkQ2xpY2tBdHRyaWJ1dGlvbiwgIkNvbnZlcnNpb24gd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVS
TCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIHF1ZXJ5IHN0cmlu
ZywgYW5kIGZyYWdtZW50LiIpOwogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJb
QWQgQ2xpY2sgQXR0cmlidXRpb25dIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNl
IHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUg
b3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIHF1ZXJ5IHN0cmluZywgYW5kIGZyYWdtZW50
LiJfcyk7CkBAIC0xODksMTcgKzE4OSwxMiBAQCBVUkwgQWRDbGlja0F0dHJpYnV0aW9uOjp1cmxG
b3JUZXN0aW5nKGNvbnN0IFVSTCYgYmFzZVVSTCkgY29uc3QKICAgICBhdXRvIGhvc3QgPSBtX3Nv
dXJjZS5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKTsKICAgICBpZiAoaG9zdCAhPSAibG9jYWxo
b3N0IiAmJiBob3N0ICE9ICIxMjcuMC4wLjEiKQogICAgICAgICByZXR1cm4gVVJMKCk7Ci0KLSAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI/Y29u
dmVyc2lvbj0iKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2NvbnZlcnNpb24udmFsdWUo
KS5kYXRhKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiZjYW1wYWlnbj0iKTsKLSAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihtX2NhbXBhaWduLmlkKTsKLSAgICBpZiAoYmFzZVVSTC5oYXNR
dWVyeSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcmJyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGJhc2VVUkwucXVlcnkoKSk7Ci0gICAgfQotICAgIHJldHVybiBVUkwoYmFzZVVSTCwg
YnVpbGRlci50b1N0cmluZygpKTsKKyAgICBTdHJpbmcgcmVsYXRpdmVVUkw7CisgICAgaWYgKCFi
YXNlVVJMLmhhc1F1ZXJ5KCkpCisgICAgICAgIHJlbGF0aXZlVVJMID0gbWFrZVN0cmluZygiP2Nv
bnZlcnNpb249IiwgbV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSwgIiZjYW1wYWlnbj0iLCBtX2Nh
bXBhaWduLmlkKTsKKyAgICBlbHNlCisgICAgICAgIHJlbGF0aXZlVVJMID0gbWFrZVN0cmluZygi
P2NvbnZlcnNpb249IiwgbV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSwgIiZjYW1wYWlnbj0iLCBt
X2NhbXBhaWduLmlkLCAnJicsIGJhc2VVUkwucXVlcnkoKSk7CisgICAgcmV0dXJuIFVSTChiYXNl
VVJMLCByZWxhdGl2ZVVSTCk7CiB9CiAKIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uOjptYXJrQ29u
dmVyc2lvbkFzU2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IDgyOTA2MjhjNGVkNDVlMDUzMWM0Nzk2ZmEyNmFkNWFj
NGExZDYzMzguLmUwNTNjOWIwM2YwNDY1MGRlZjU1YmVjZDU4ZDFjNjM2OWM2MzBhM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgU3RyaW5nIHZhbGlkYXRlQ3Jvc3NPcmlnaW5SZWRpcmVjdGlv
blVSTChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChyZWRpcmVjdFVSTC5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCJub3QgYWxsb3dlZCB0byBmb2xsb3cgYSBjcm9zcy1vcmlnaW4gQ09SUyByZWRpcmVjdGlvbiB3
aXRoIG5vbiBDT1JTIHNjaGVtZSIpOwogCi0gICAgaWYgKHJlZGlyZWN0VVJMLmhhc1VzZXJuYW1l
KCkgfHwgcmVkaXJlY3RVUkwuaGFzUGFzc3dvcmQoKSkKKyAgICBpZiAocmVkaXJlY3RVUkwuaGFz
Q3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJlZGlyZWN0aW9uIFVS
TCAiLCByZWRpcmVjdFVSTC5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlhbHMiKTsKIAogICAgIHJl
dHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDIxNzdmNGI2ZGI2YjE5NWNhOWRmODI3OWI1YWY3YmIxNTZmNWI1
MGEuLmRmM2QwOGM3NGZlYmMxYjU0ZTI0NGU2M2ZjNDk2ZmU2MzBjNDMwMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01
MzIsOCArNTMyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAvLyBBbnkgY3JlZGVu
dGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0
cy4KICAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1fb3B0
aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlDaGVjazsKLSAgICBBU1NFUlQobV9zYW1lT3Jp
Z2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVCht
X3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgIXJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMo
KSk7CiAKICAgICBpZiAoIW1fcmVmZXJyZXIuaXNOdWxsKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFJlZmVycmVyKG1fcmVmZXJyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlz
c2lvbi5jcHAKaW5kZXggM2FhYThlZWQ4YzMzN2U3OWQ5ODg4YTQ1NWYzOWZmM2ZlZTRiNWEzNi4u
MzBhZjkwMDgwNDlhOGUzOTgyZjljOWJmNDlkYWViZmM5MmVhNjgwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC03OCwxMSArNzgsMTEgQEAgc3RhdGljIHZv
aWQgYXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRh
JiBkYXRhLCBjb25zdAogICAgIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0
YShib2R5RGF0YSwgYm9keS51dGY4KCkpOwogICAgIGJvZHkgPSBTdHJpbmcoYm9keURhdGEuZGF0
YSgpLCBib2R5RGF0YS5zaXplKCkpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnKycsICIlMjAiKTsKIAot
ICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGF1dG8gcXVlcnkgPSB1cmwucXVl
cnkoKTsKICAgICBpZiAocXVlcnkuaXNFbXB0eSgpKQogICAgICAgICB1cmwuc2V0UXVlcnkoYm9k
eSk7CiAgICAgZWxzZQotICAgICAgICB1cmwuc2V0UXVlcnkocXVlcnkgKyAnJicgKyBib2R5KTsK
KyAgICAgICAgdXJsLnNldFF1ZXJ5KG1ha2VTdHJpbmcocXVlcnksICcmJywgYm9keSkpOwogfQog
CiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJp
bmcmIGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM4MWY1
ZDNmNTViN2YzNWQ1MGQ1MjA5NjBjM2Q1YTUxNzBhNmYxMzkuLjUwYWE0M2RkZjRmZDgxYTEzNTE5
OTVlZTQ0YzU3MjUzOTI5NTNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTE1MSw5ICsxMTUxLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3Vt
ZW50KGNvbnN0IFVSTCYgdXJsLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXQKIAogICAgICAg
ICBoaXN0b3J5KCkudXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAg
ICB9Ci0gICAgCi0gICAgYm9vbCBoYXNoQ2hhbmdlID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcih1cmwsIG9sZFVSTCkgJiYgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpICE9IG9sZFVS
TC5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAKKworICAgIGJvb2wgaGFzaENoYW5nZSA9IGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBvbGRVUkwpICYmICFlcXVhbFJlc3Bl
Y3RpbmdOdWxsaXR5KHVybC5mcmFnbWVudElkZW50aWZpZXIoKSwgb2xkVVJMLmZyYWdtZW50SWRl
bnRpZmllcigpKTsKKwogICAgIGhpc3RvcnkoKS51cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uKCk7CiAKICAgICAvLyBJZiB3ZSB3ZXJlIGluIHRoZSBhdXRvc2Nyb2xsL3BhblNjcm9sbCBt
b2RlIHdlIHdhbnQgdG8gc3RvcCBpdCBiZWZvcmUgZm9sbG93aW5nIHRoZSBsaW5rIHRvIHRoZSBh
bmNob3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDMyM2RiNDYzNjAyOThiOGE5MWJiMDBhNDc5MjRiYjJl
ODExMWYzMzguLjQ4ODJkNzdlMTI3MTY5ODVjNDY0NTFkZjBlYzc0MGE3OTM5M2M0MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcApAQCAtMjQ2LDE1ICsyNDYsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2EK
IAogVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgdXNlIGZpbGVVUkxXaXRoRmlsZVN5
c3RlbVBhdGggaW5zdGVhZD8KICNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKLSAgICBVUkwg
dXJsKGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpLmdldCgpKTsK
KyAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyBTZWVtcyBpbXByb2JhYmxlIHRoYXQgdGhl
IHBhc3NlZC1pbiBwYXRocyB3b3VsZCBiZSBpbiB0aGUgV2luZG93cyBwYXRoIHN0eWxlLgorICAg
IHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKS5nZXQo
KTsKICNlbHNlCi0gICAgVVJMIHVybDsKLSAgICB1cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwot
ICAgIHVybC5zZXRQYXRoKHBhdGgpOworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5
c3RlbVBhdGgocGF0aCk7CiAjZW5kaWYKLSAgICByZXR1cm4gdXJsOwogfQogCiBzdGF0aWMgaW5s
aW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UmIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggZmFhZTUxZjk5ZjYyYjJmMjlkNWNiYjhhZWNm
Y2ViMTZhZGMyZWI1NC4uNzM0ZGE3NjYyZDQ5YTYyMjU5ZGU2MWZlZDhjYmViNzAwZWQyYWM3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIu
Y3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIE1vZGUg
eyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9ubGluZVdoaXRlbGlzdCwgVW5rbm93biB9OwogCi1zdGF0
aWMgU3RyaW5nIG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQorc3RhdGljIFN0
cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCiB7CiAgICAgYXV0
byBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFVSTC5wYXRoKCk7CiAgICAgQVNTRVJUKG1hbmlmZXN0
UGF0aFswXSA9PSAnLycpOwogICAgIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0UGF0aC5zdWJzdHJp
bmcoMCwgbWFuaWZlc3RQYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKICAgICBBU1NFUlQobWFu
aWZlc3RQYXRoWzBdID09IG1hbmlmZXN0UGF0aFttYW5pZmVzdFBhdGgubGVuZ3RoKCkgLSAxXSk7
Ci0gICAgcmV0dXJuIG1hbmlmZXN0UGF0aC50b1N0cmluZygpOworICAgIHJldHVybiBtYW5pZmVz
dFBhdGg7CiB9CiAKIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBj
b25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBwYXJzZU1hbmlm
ZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlw
ZSwgY29uc3QKICAgICBBU1NFUlQobWFuaWZlc3QuZmFsbGJhY2tVUkxzLmlzRW1wdHkoKSk7CiAg
ICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSBmYWxzZTsKIAotICAgIFN0cmlu
ZyBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOworICAg
IGF1dG8gbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsK
IAogICAgIGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1t
YW5pZmVzdCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmZlc3RQ
YXRoID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2Fj
aGVNYW5pZmVzdE1JTUVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcAppbmRleCAzZjQ2OTljZjgzMjk4ZjA0ZTI3NGFlMDBlZjk1YTU1NDc1YTY1ZjNkLi5j
ZDk0OWU3YzEzMGQ5NjYyODJmMTliNTJjOGRhMzFkMDA0YTY4MTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC04NiwxMCArODYsNyBAQCBib29sIENh
Y2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogCiBTdHJp
bmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiB7Ci0gICAg
YXV0byYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgaWYgKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpOworICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0
cmluZygpOwogfQogCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggZWI1YzExYmE1NGE4MDU0ZTRlYWU1N2E4MTNk
ZjdmNjY2M2VjZWIzOS4uMDNhYzBhNTA1YzdkNWI5ODA3NjZmMTA0ODU2YTE3MjhmNzVjYWZjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgU3RyaW5nIENhY2hlZFJlc291cmNlUmVxdWVz
dDo6c3BsaXRGcmFnbWVudElkZW50aWZpZXJGcm9tUmVxdWVzdFVSTChSZXNvdXJjZVJlcXUKICAg
ICBpZiAoIU1lbW9yeUNhY2hlOjpzaG91bGRSZW1vdmVGcmFnbWVudElkZW50aWZpZXIocmVxdWVz
dC51cmwoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IHJlcXVlc3QudXJs
KCk7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZp
ZXIoKTsKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAg
ICByZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYjRjZmI3NTMxNzk2OTI2ODlkM2Q2NjFhYmNk
NWZkNzM3ZWIwZWRiZS4uN2MxMWRiZmI2YzRjMGY5YmJkZWM0YTk4ZWFlZDIzNGZlMGQ5M2IzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjE3OSw4ICsyMTc5LDggQEAgdm9pZCBG
cmFtZVZpZXc6OnJlc3RvcmVTY3JvbGxiYXIoKQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9G
cmFnbWVudChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVy
ID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIGlmIChzY3JvbGxUb0ZyYWdtZW50SW50
ZXJuYWwoZnJhZ21lbnRJZGVudGlmaWVyKSkKKyAgICBhdXRvIGZyYWdtZW50SWRlbnRpZmllciA9
IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBpZiAoc2Nyb2xsVG9GcmFnbWVudEludGVy
bmFsKGZyYWdtZW50SWRlbnRpZmllci50b1N0cmluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBUcnkgYWdhaW4gYWZ0ZXIgZGVjb2RpbmcgdGhlIHJlZiwgYmFzZWQgb24gdGhl
IGRvY3VtZW50J3MgZW5jb2RpbmcuCkBAIC0yMTk1LDcgKzIxOTUsNyBAQCBib29sIEZyYW1lVmll
dzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKIAogYm9vbCBGcmFtZVZpZXc6OnNj
cm9sbFRvRnJhZ21lbnRJbnRlcm5hbChjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllcikK
IHsKLSAgICBMT0coU2Nyb2xsaW5nLCAiRnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvciAlcyIsIGZy
YWdtZW50SWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coU2Nyb2xsaW5nLCAiRnJh
bWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwgJXMiLCBmcmFnbWVudElkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBJZiBvdXIgVVJMIGhhcyBubyByZWYsIHRoZW4gd2Ug
aGF2ZSBubyBwbGFjZSB3ZSBuZWVkIHRvIGp1bXAgdG8uCiAgICAgaWYgKGZyYWdtZW50SWRlbnRp
Zmllci5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDljNThiMDZmNGM0NzEx
MzBjZTQ4MTVmMTFkMTRjYjc4ZjgxYjQ5YTAuLjM4ZmQ3YjI5YjUzZWFiNDg0ZTMwOTYzYjUxYzhh
ZTUyNWM1ZDdhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMjAxLDEzICsyMDEsMTQg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICAgICAgY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lID0gc3RhdGVPYmplY3RUeXBlID09IFN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSA/ICJoaXN0
b3J5LnJlcGxhY2VTdGF0ZSgpIiA6ICJoaXN0b3J5LnB1c2hTdGF0ZSgpIjsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsIG1ha2VTdHJpbmcoIkJsb2NrZWQgYXR0ZW1w
dCB0byB1c2UgIiwgZnVuY3Rpb25OYW1lLCAiIHRvIGNoYW5nZSBzZXNzaW9uIGhpc3RvcnkgVVJM
IGZyb20gIiwgZG9jdW1lbnRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIg
dG8gIiwgZnVsbFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi4gIiwgc3Vm
Zml4KSB9OwogICAgIH07Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVs
bFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwudXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIo
KSB8fCBmdWxsVVJMLnBhc3MoKSAhPSBkb2N1bWVudFVSTC5wYXNzKCkpCisgICAgaWYgKCFwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwu
dXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJMLnBhc3N3b3JkKCkgIT0gZG9j
dW1lbnRVUkwucGFzc3dvcmQoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1
cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlByb3RvY29scywgZG9tYWlucywgcG9ydHMsIHVz
ZXJuYW1lcywgYW5kIHBhc3N3b3JkcyBtdXN0IG1hdGNoLiIpOwogCiAgICAgY29uc3QgYXV0byYg
ZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpOwogICAgIC8vIFdlIGFsbG93IHNhbmRib3hlZCBkb2N1bWVudHMsICdkYXRhOicvJ2ZpbGU6
JyBVUkxzLCBldGMuIHRvIHVzZSAncHVzaFN0YXRlJy8ncmVwbGFjZVN0YXRlJyB0byBtb2RpZnkg
dGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDI4IGZvciB0aGUgY29tcGF0aWJpbGl0eSBjb25j
ZXJucy4KLSAgICBib29sIGFsbG93U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5
T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpICYm
IGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGRvY3VtZW50VVJMLCBmdWxsVVJMKTsKKyAg
ICBib29sIGFsbG93U2FuZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlz
TG9jYWwoKSB8fCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpCisgICAgICAgICYm
IGRvY3VtZW50VVJMLnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKCkgPT0g
ZnVsbFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpOwogCiAgICAg
aWYgKCFhbGxvd1NhbmRib3hFeGNlcHRpb24gJiYgIWRvY3VtZW50U2VjdXJpdHlPcmlnaW4uY2Fu
UmVxdWVzdChmdWxsVVJMKSAmJiAoZnVsbFVSTC5wYXRoKCkgIT0gZG9jdW1lbnRVUkwucGF0aCgp
IHx8IGZ1bGxVUkwucXVlcnkoKSAhPSBkb2N1bWVudFVSTC5xdWVyeSgpKSkKICAgICAgICAgcmV0
dXJuIGNyZWF0ZUJsb2NrZWRVUkxTZWN1cml0eUVycm9yV2l0aE1lc3NhZ2VTdWZmaXgoIlBhdGhz
IGFuZCBmcmFnbWVudHMgbXVzdCBtYXRjaCBmb3IgYSBzYW5kYm94ZWQgZG9jdW1lbnQuIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uY3BwCmluZGV4IDI4Nzg5Y2QxNDI5ODMyYzFmMjcyYTZhYWQ1ZWIx
ZThiNjI4ODJlYzcuLjM2YzFjOWJiY2NhMTA2YzhlYjU3ZjFiZWE2MzcwYjBlMjg3YTI4NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCkBAIC02MSwxNCArNjEsOCBAQCBpbmxpbmUgY29uc3Qg
VVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpocmVmKCkgY29u
c3QKIHsKLSAgICBhdXRvJiB1cmwgPSB0aGlzLT51cmwoKTsKLQotICAgIGlmICghdXJsLmhhc1Vz
ZXJuYW1lKCkgJiYgIXVybC5oYXNQYXNzd29yZCgpKQotICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpOwotCi0gICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwpOwotICAgIHVybFdpdGhv
dXRDcmVkZW50aWFscy5zZXRVc2VyKFdURjo6ZW1wdHlTdHJpbmcoKSk7Ci0gICAgdXJsV2l0aG91
dENyZWRlbnRpYWxzLnNldFBhc3MoV1RGOjplbXB0eVN0cmluZygpKTsKKyAgICBVUkwgdXJsV2l0
aG91dENyZWRlbnRpYWxzKHVybCgpKTsKKyAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMucmVtb3Zl
Q3JlZGVudGlhbHMoKTsKICAgICByZXR1cm4gdXJsV2l0aG91dENyZWRlbnRpYWxzLnN0cmluZygp
OwogfQogCkBAIC05MSwyMCArODUsMTkgQEAgU3RyaW5nIExvY2F0aW9uOjpob3N0bmFtZSgpIGNv
bnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJMJiB1
cmwgPSB0aGlzLT51cmwoKTsKLSAgICByZXR1cm4gdXJsLnBvcnQoKSA/IFN0cmluZzo6bnVtYmVy
KHVybC5wb3J0KCkudmFsdWUoKSkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gcG9ydCA9IHVy
bCgpLnBvcnQoKTsKKyAgICByZXR1cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVyKCpwb3J0KSA6IGVt
cHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6cGF0aG5hbWUoKSBjb25zdAogewog
ICAgIGF1dG8gcGF0aCA9IHVybCgpLnBhdGgoKTsKLSAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkg
PyAiLyIgOiBwYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8i
X3MgOiBwYXRoLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2NhdGlvbjo6c2VhcmNoKCkgY29u
c3QKIHsKLSAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwotICAgIHJldHVybiB1cmwu
cXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgdXJsLnF1ZXJ5KCk7Cisg
ICAgcmV0dXJuIHVybCgpLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IHVybCgp
LnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcg
TG9jYXRpb246Om9yaWdpbigpIGNvbnN0CkBAIC0xMjUsOCArMTE4LDcgQEAgUmVmPERPTVN0cmlu
Z0xpc3Q+IExvY2F0aW9uOjphbmNlc3Rvck9yaWdpbnMoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRp
b246Omhhc2goKSBjb25zdAogewotICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRJZGVudGlmaWVy
ID0gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIGZyYWdtZW50SWRlbnRp
Zmllci5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgZnJhZ21lbnRJZGVudGlmaWVy
OworICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWdu
KCkudG9TdHJpbmcoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhyZWYo
RE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0
cmluZyYgdXJsKQpAQCAtMTQ0LDcgKzEzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRQcm90b2NvbChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAg
ICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5zZXRQ
cm90b2NvbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1
cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdChE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3Ry
aW5nJiBob3N0KQpAQCAtMTU0LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRIb3N0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICB1cmwuc2V0SG9zdEFuZFBvcnQoaG9zdCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNl
dExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0bmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTE2NCw3
ICsxNTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlycwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3Qo
aG9zdG5hbWUpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3cs
IGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0
UG9ydChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29u
c3QgU3RyaW5nJiBwb3J0U3RyaW5nKQpAQCAtMTczLDEyICsxNjUsOCBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93
JiBmaXJzdFdpbgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJM
IHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKLSAgICBpbnQgcG9ydCA9IHBvcnRTdHJp
bmcudG9JbnQoKTsKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3Ry
aW5nLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHVybC5zZXRQb3J0KHBvcnQpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5k
b3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHVybC5zZXRQb3J0KHBhcnNlVUlu
dDE2KHBvcnRTdHJpbmcpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBm
aXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBh
dGhuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBj
b25zdCBTdHJpbmcmIHBhdGhuYW1lKQpAQCAtMTg4LDcgKzE3Niw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IExvY2F0aW9uOjpzZXRQYXRobmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHNl
dExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAg
cmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgc2VhcmNoKQpAQCAt
MTk4LDcgKzE4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXCiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0
UXVlcnkoc2VhcmNoKTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJz
dFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OnNldEhhc2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYgaGFzaCkKQEAgLTIxOCw3ICsyMDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBm
aXJzdFdpbgogICAgIC8vIGNhc2VzIHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25v
cmVkIG9yIGludmFsaWQuIAogICAgIGlmIChlcXVhbElnbm9yaW5nTnVsbGl0eShvbGRGcmFnbWVu
dElkZW50aWZpZXIsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RX
aW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmlu
ZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBh
dHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CmluZGV4IGFjZTViN2VkOTcwMWUyNDFlNDBhNTdkZTY0MThkOThjMTI5ZDkzODUuLjJkNTE0Njk5
YjExNzFlOWM3NDg2NjEyYTdiMWE1ZTU1YTJiYWNmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTE0NywyMiArMTQ3LDE5IEBAIGJvb2wg
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0
CiAgICAgcmV0dXJuIGhvc3RbaG9zdC5sZW5ndGgoKSAtIG1faG9zdC5sZW5ndGgoKSAtIDFdID09
ICcuJzsKIH0KIAotc3RydWN0IE1hdGNoVGVzdGVyCi17CitzdHJ1Y3QgTWF0Y2hUZXN0ZXIgewog
ICAgIFN0cmluZ1ZpZXcgbV9wYXR0ZXJuOwotICAgIHVuc2lnbmVkIG1fcGF0dGVybkluZGV4Owot
ICAgIAorICAgIHVuc2lnbmVkIG1fcGF0dGVybkluZGV4IHsgMCB9OworCiAgICAgU3RyaW5nVmll
dyBtX3Rlc3Q7Ci0gICAgdW5zaWduZWQgbV90ZXN0SW5kZXg7Ci0gICAgCisgICAgdW5zaWduZWQg
bV90ZXN0SW5kZXggeyAwIH07CisKICAgICBNYXRjaFRlc3RlcihTdHJpbmdWaWV3IHBhdHRlcm4s
IFN0cmluZ1ZpZXcgdGVzdCkKLSAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICwgbV9wYXR0
ZXJuSW5kZXgoMCkKLSAgICAsIG1fdGVzdCh0ZXN0KQotICAgICwgbV90ZXN0SW5kZXgoMCkKKyAg
ICAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKKyAgICAgICAgLCBtX3Rlc3QodGVzdCkKICAgICB7
CiAgICAgfQotICAgIAorCiAgICAgYm9vbCB0ZXN0U3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJl
dHVybiBtX3Rlc3RJbmRleCA+PSBtX3Rlc3QubGVuZ3RoKCk7IH0KICAgICBib29sIHBhdHRlcm5T
dHJpbmdGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybkluZGV4ID49IG1fcGF0dGVy
bi5sZW5ndGgoKTsgfQogCkBAIC0xNzQsNyArMTcxLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAg
ICAgICAgICAgICBtX3BhdHRlcm5JbmRleCsrOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAg
ICAgdm9pZCBlYXRTYW1lQ2hhcnMoKQogICAgIHsKICAgICAgICAgd2hpbGUgKCFwYXR0ZXJuU3Ry
aW5nRmluaXNoZWQoKSAmJiAhdGVzdFN0cmluZ0ZpbmlzaGVkKCkpIHsKQEAgLTIyNiw4ICsyMjMs
NyBAQCBzdHJ1Y3QgTWF0Y2hUZXN0ZXIKIAogYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNQYXRoKGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKIHsKLSAgICBNYXRjaFRlc3RlciBtYXRj
aChTdHJpbmdWaWV3KG1fcGF0aCksIHRlc3QucGF0aCgpKTsKLSAgICByZXR1cm4gbWF0Y2gudGVz
dCgpOworICAgIHJldHVybiBNYXRjaFRlc3RlcihtX3BhdGgsIHRlc3QucGF0aCgpKS50ZXN0KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNGEwYzM0ZWNhNzI0MmJkYTcyNTI4NDhiM2E4Y2Uy
ZDEzNWY3NDM1Yi4uNDcwZmU1NDk1NGUxYjNjNDdlZWYwNWU3ODUwY2I1YmEyYzk5NWY2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTc5MCwx
NiArNzkwLDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmFw
cGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsIGRlZmF1bHRNSU1FVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1l
OwotCi0gICAgaWYgKGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJykgIT0gbm90Rm91bmQpCisgICAg
aWYgKGZpbGVuYW1lLmlzRW1wdHkoKSB8fCBmaWxlbmFtZS5jb250YWlucygnLicpIHx8IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsIGRlZmF1bHRNSU1FVHlwZSgpKSkKICAgICAgICAg
cmV0dXJuIGZpbGVuYW1lOwogCi0gICAgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbiA9IGdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHByZWZlcnJl
ZEV4dGVuc2lvbiA9IGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsK
ICAgICBpZiAocHJlZmVycmVkRXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZp
bGVuYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKaW5kZXggYWI3ZTYwNTQyYjAxODJjZmFiNmJmMjIwNmY0ODc4OGYxODQxYzYzOC4u
YzgyOGJiZTdlNzc1NWVlNzExMjE3MjNlOWYxNzAyN2VkMWZhZTI0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNDQxLDEyICs0
NDEsMTIgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHIKICAgICBBdG9tU3RyaW5nIGNvbnRhaW5l
clR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFpbmVy
VHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
KCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwu
cHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlw
ZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CisgICAgICAgICAgICBtX2Nv
bnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybCkpOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5s
YXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQ
YXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IG5v
dEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29t
cG9uZW50LnN1YnN0cmluZyhwb3MgKyAxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5z
aW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpLnRvU3RyaW5nKCk7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nIG1lZGlhVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1l
ZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAo
IW1lZGlhVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50VHlw
ZSA9IENvbnRlbnRUeXBlIHsgV1RGTW92ZShtZWRpYVR5cGUpIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYxNjJhZGFlNmJmZjUxNjcx
ZTNiZTUzMjIyN2U3ZGU1Nzk5OWZkZjAuLjJlYzk3NWNiMTA0NWFlNGM4NzQ5N2NkOWEwYWNlMDJm
OTIxMWQ5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvSW50ZXJuYWxQ
cm90b2NvbChVUkwmIHVybCkKICAgICBpZiAod2Via2l0R3N0Q2hlY2tWZXJzaW9uKDEsIDEyLCAw
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
IHx8IHVybC5wcm90b2NvbElzQmxvYigpKQotICAgICAgICB1cmwuc2V0UHJvdG9jb2woIndlYmtp
dCsiICsgdXJsLnByb3RvY29sKCkpOworICAgICAgICB1cmwuc2V0UHJvdG9jb2wobWFrZVN0cmlu
Zygid2Via2l0KyIsIHVybC5wcm90b2NvbCgpKSk7CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDcyOGZhMmU4NzliMGU3NjFhNDk1ZGM0YWNhMzA4
NjQ0YmQ2NGUwMGUuLmQzYjMzODI3OTFlZjJjMDIyM2E3NjQzMTcxM2YxOGIxZjMyZTZhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IGNvbnN0IFVSTCYgdXJsID0gbV9maXJzdFJlcXVlc3QudXJsKCk7CiAgICAgICAgIG1fdXNlciA9
IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzcyA9IHVybC5wYXNzKCk7CisgICAgICAgIG1fcGFz
c3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICAgICAgbV9maXJzdFJlcXVlc3QucmVtb3ZlQ3Jl
ZGVudGlhbHMoKTsKICAgICB9CiAgICAgCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFN1Z2dlc3RlZCBjcmVkZW50aWFscyBmb3IgdGhlIGN1cnJlbnQgcmVkaXJlY3Rpb24gc3Rl
cC4KICAgICBTdHJpbmcgbV91c2VyOwotICAgIFN0cmluZyBtX3Bhc3M7CisgICAgU3RyaW5nIG1f
cGFzc3dvcmQ7CiAgICAgCiAgICAgQ3JlZGVudGlhbCBtX2luaXRpYWxDcmVkZW50aWFsOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAKaW5kZXggYTkzNzMyMDM1MzEyY2M0N2QwOTIyMGFkODRmMmZiMmU4Zjcz
NDJkZS4uNTMwZWNjZmFlNzkzZTM1ZGVlOTllYzA0MDc3MDdhMzhmOWM3YzllZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnJl
bW92ZUNyZWRlbnRpYWxzKCkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCiAKLSAg
ICBpZiAobV91cmwudXNlcigpLmlzRW1wdHkoKSAmJiBtX3VybC5wYXNzKCkuaXNFbXB0eSgpKQor
ICAgIGlmICghbV91cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV91cmwuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgbV91cmwuc2V0UGFzcyhTdHJpbmcoKSk7Ci0K
KyAgICBtX3VybC5yZW1vdmVDcmVkZW50aWFscygpOwogICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBk
YXRlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCA5MDA4MWNiZWMwOWYx
MDAyNGJlOGEwMGQ3N2JhOTJhZjNkN2U3ZGIyLi4zZWNmNzFlOTE0N2YyNDRjYWEyZTRlMmI2ZDk2
MDIyN2MyMzc2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCkBAIC01OSw3ICs1OCw2IEBA
CiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHByb2Nlc3MuaD4KIAotLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGRlY2xhcmF0aW9uIG9uY2UgaXQncyBpbiBXZWJLaXRTdXBwb3J0TGlicmFyeS4K
IGV4dGVybiAiQyIgewogX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlvblJlZiBD
RlVSTENvbm5lY3Rpb25DcmVhdGVXaXRoUHJvcGVydGllcygKICAgQ0ZBbGxvY2F0b3JSZWYgICAg
ICAgICAgIGFsbG9jLApAQCAtMTMzLDExICsxMzEsMTEgQEAgc3RhdGljIHZvaWQgc2V0Q2xpZW50
Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzc2xQcm9w
cywKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBSZWZQdHI8U3luY2hyb25vdXNMb2FkZXJNZXNzYWdl
UXVldWU+JiYgbWVzc2FnZVF1ZXVlLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcykK
IHsKLSAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgp
KSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Cisg
ICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkp
ICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAg
ICAgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0
aGUgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGRlbGVnYXRlIGNhbGwgd29uJ3Qg
YmUgbWFkZS4KICAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51
cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7Ci0g
ICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CisgICAgICAgIHVy
bFdpdGhDcmVkZW50aWFscy5zZXRQYXNzd29yZChkLT5tX3Bhc3N3b3JkKTsKICAgICAgICAgZmly
c3RSZXF1ZXN0KCkuc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCkBAIC0xNDYs
NyArMTQ0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2
aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sCiAgICAgLy8g
dHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkg
UkZDIDI2MTcuCiAgICAgaWYgKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlICYmIGZpcnN0UmVx
dWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBpZiAoZC0+
bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChk
LT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRo
ZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0
aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlh
bCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCiAgICAgICAgICAgICBkLT5t
X2luaXRpYWxDcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLmdldChwYXJ0aXRpb24sIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKQEAg
LTE1NCw3ICsxNTIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rp
b24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgICAgICAgICAgLy8g
SWYgdGhlcmUgaXMgYWxyZWFkeSBhIHByb3RlY3Rpb24gc3BhY2Uga25vd24gZm9yIHRoZSBVUkws
IHVwZGF0ZSBzdG9yZWQgY3JlZGVudGlhbHMgYmVmb3JlIHNlbmRpbmcgYSByZXF1ZXN0LgogICAg
ICAgICAgICAgLy8gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbG9nb3V0IGJ5
IHNlbmRpbmcgYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJlY3QgY3JlZGVudGlh
bHMsIGFuZCBhYm9ydGluZyBpdCBpbW1lZGlhdGVseQogICAgICAgICAgICAgLy8gKHNvIHRoYXQg
YW4gYXV0aGVudGljYXRpb24gZGlhbG9nIGRvZXNuJ3QgcG9wIHVwKS4KLSAgICAgICAgICAgIGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFy
dGl0aW9uLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+bV9jb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRpb24s
IENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgICAg
ICAKQEAgLTI5Miw3ICsyOTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogewogICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigp
OwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CisgICAgZC0+bV9wYXNzd29yZCA9IHVybC5w
YXNzd29yZCgpOwogICAgIGQtPm1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2Qo
KTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKQEAgLTMwNiw3ICszMDQsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE9ubHkg
Y29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgaWYgdGhpcyBpcyBh
Y3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVkaXJlY3QKICAgICAgICAgLy8gVVJMIGRpZG4n
dCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBvd24uCi0gICAgICAgIGlmIChkLT5tX3VzZXIu
aXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNO
dWxsKCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29y
ZC5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCByZXF1ZXN0LnVybCgpKTsKICAgICAg
ICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBkLT5t
X2luaXRpYWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKQEAgLTM3MSw4ICszNjksOCBAQCBib29s
IFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29u
c3QgQXV0aGVudGljYXRpb25DaAogCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGZpcnN0UmVxdWVz
dCgpLmNhY2hlUGFydGl0aW9uKCk7CiAKLSAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAh
ZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxS
ZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3Mu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9u
ZSkpOworICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3N3b3JkLmlzTnVs
bCgpKSB7CisgICAgICAgIGF1dG8gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRp
YWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGQtPm1fcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBD
cmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7CiAj
ZWxzZQpAQCAtMzg2LDcgKzM4NCw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBh
c3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoCiAgICAgICAg
IAogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogICAgICAgICBkLT5tX3VzZXIgPSBTdHJpbmcoKTsKLSAgICAgICAgZC0+bV9wYXNzID0g
U3RyaW5nKCk7CisgICAgICAgIGQtPm1fcGFzc3dvcmQgPSBTdHJpbmcoKTsKICAgICAgICAgLy8g
RklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2Vk
IGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4
cGxpY2l0bHkuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3Bw
CmluZGV4IDBjMmQzZjA0NDMwNjUxYjMzMTk1MmI2ZDAxOWZlNTZkMWM2YjA0NTQuLmY3NTJhNmVl
MzVhNzIwYzZkN2JkOWE0ZTc1ODkxZGQwYTk0YWU4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcApA
QCAtMzMsMTIgKzMzLDEyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1aW50MTZfdCBTb2Nrc1Byb3h5UG9ydCA9IDEwODA7
Citjb25zdGV4cHIgdWludDE2X3QgU29ja3NQcm94eVBvcnQgPSAxMDgwOwogCi1zdGF0aWMgT3B0
aW9uYWw8dWludDE2X3Q+IGdldFByb3h5UG9ydChjb25zdCBVUkwmKTsKIHN0YXRpYyBPcHRpb25h
bDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCYpOwogCiBDdXJsUHJveHlTZXR0aW5n
czo6Q3VybFByb3h5U2V0dGluZ3MoVVJMJiYgcHJveHlVcmwsIFN0cmluZyYmIGlnbm9yZUhvc3Rz
KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEN1cmxQcm94eVNldHRpbmdzOjpyZWJ1aWxkVXJsKCkK
IHZvaWQgQ3VybFByb3h5U2V0dGluZ3M6OnNldFVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdXNlciwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkKIHsKICAgICBtX3VybC5zZXRVc2VyKHVzZXIpOwotICAg
IG1fdXJsLnNldFBhc3MocGFzc3dvcmQpOworICAgIG1fdXJsLnNldFBhc3N3b3JkKHBhc3N3b3Jk
KTsKIAogICAgIHJlYnVpbGRVcmwoKTsKIH0KQEAgLTExOCw4ICsxMTgsOCBAQCBzdGF0aWMgT3B0
aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChjb25zdCBVUkwgJnVybCkKICAgICBpZiAoIXBv
cnQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHVzZXJwYXNzID0g
KHVybC5oYXNVc2VybmFtZSgpIHx8IHVybC5oYXNQYXNzd29yZCgpKSA/IG1ha2VTdHJpbmcodXJs
LnVzZXIoKSwgIjoiLCB1cmwucGFzcygpLCAiQCIpIDogU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1h
a2VTdHJpbmcodXJsLnByb3RvY29sKCksICI6Ly8iLCB1c2VycGFzcywgdXJsLmhvc3QoKSwgIjoi
LCBTdHJpbmc6Om51bWJlcigqcG9ydCkpOworICAgIGF1dG8gdXNlcnBhc3MgPSB1cmwuaGFzQ3Jl
ZGVudGlhbHMoKSA/IG1ha2VTdHJpbmcodXJsLnVzZXIoKSwgIjoiLCB1cmwucGFzc3dvcmQoKSwg
IkAiKSA6IFN0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgpLCAi
Oi8vIiwgdXNlcnBhc3MsIHVybC5ob3N0KCksICI6IiwgKnBvcnQpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0
aW5ncy5oCmluZGV4IGFmMzEzNTQ2YzQ0YTMyNzdmMDZiNDg1NGVmMDMwMjdiODU4MTQ0MDMuLjU4
M2UwMGM0ZTMxNDY5OWVhMWY1NDJmZTM2OTI0YmVkMGUyMWIzODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5o
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VXNlclBhc3MoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5n
IHVzZXIoKSBjb25zdCB7IHJldHVybiBtX3VybC51c2VyKCk7IH0KLSAgICBjb25zdCBTdHJpbmcg
cGFzc3dvcmQoKSBjb25zdCB7IHJldHVybiBtX3VybC5wYXNzKCk7IH0KKyAgICBjb25zdCBTdHJp
bmcgcGFzc3dvcmQoKSBjb25zdCB7IHJldHVybiBtX3VybC5wYXNzd29yZCgpOyB9CiAKICAgICB2
b2lkIHNldERlZmF1bHRBdXRoTWV0aG9kKCkgeyBtX2F1dGhNZXRob2QgPSBrQ1VSTEFVVEhfQU5Z
OyB9CiAgICAgdm9pZCBzZXRBdXRoTWV0aG9kKGxvbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApp
bmRleCA0OTE1ZDkwZGZhYjJjYTQ1ZmRmY2NjOTE4MmRmYWZhMzhmZTY0YWE2Li40MGM3OThhM2E1
NGNjZTEyZWI3NzA1YjYxYTExMzM2MmRiZjZhMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApA
QCAtMjE0LDggKzIxNCw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAKICAgICBTdHJpbmcg
cGFydGl0aW9uID0gZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKTsKIAotICAgIGlmICgh
ZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lKTsKKyAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzd29y
ZC5pc051bGwoKSkgeworICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwoZC0+bV91c2VyLCBk
LT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKIAogICAgICAgICBVUkwg
dXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRw
U3RhdHVzQ29kZSgpID09IDQwMSkKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbAogICAgICAgICByZXN0YXJ0UmVxdWVzdFdpdGhDcmVkZW50aWFsKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKSwgY3JlZGVudGlhbCk7CiAKICAgICAgICAgZC0+bV91c2VyID0gU3Ry
aW5nKCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3
b3JkID0gU3RyaW5nKCk7CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWNpZmljYXRpb24s
IHRoZSB1c2VyIHNob3VsZG4ndCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMgaWYgdGhlcmUgd2Vy
ZSBpbmNvcnJlY3Qgb25lcyBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hh
bGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKIE9wdGlvbmFs
PENyZWRlbnRpYWw+IFJlc291cmNlSGFuZGxlOjpnZXRDcmVkZW50aWFsKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgYm9vbCByZWRpcmVjdCkKIHsKICAgICAvLyBtX3VzZXIvbV9wYXNz
IGFyZSBjcmVkZW50aWFscyBnaXZlbiBtYW51YWxseSwgZm9yIGluc3RhbmNlLCBieSB0aGUgYXJn
dW1lbnRzIHBhc3NlZCB0byBYTUxIdHRwUmVxdWVzdC5vcGVuKCkuCi0gICAgQ3JlZGVudGlhbCBj
cmVkZW50aWFsIHsgZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUgfTsKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgeyBkLT5tX3VzZXIsIGQtPm1fcGFzc3dv
cmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUgfTsKIAogICAgIGlmIChzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSgpKSB7CiAgICAgICAgIFN0cmluZyBwYXJ0aXRpb24gPSByZXF1ZXN0LmNh
Y2hlUGFydGl0aW9uKCk7CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
d2lsbFNlbmRSZXF1ZXN0KCkKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigp
OwogCiAgICAgZC0+bV91c2VyID0gbmV3VVJMLnVzZXIoKTsKLSAgICBkLT5tX3Bhc3MgPSBuZXdV
UkwucGFzcygpOworICAgIGQtPm1fcGFzc3dvcmQgPSBuZXdVUkwucGFzc3dvcmQoKTsKICAgICBu
ZXdSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKICAgICBpZiAoY3Jvc3NPcmlnaW4pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0KaW5kZXggNzY3YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEw
NzJkNi4uZWU2MDNkNzIyZjQxZDBkNmY3YzQ2YjkwNmZiN2E1NTEwNTIwZjM3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0KQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAj
ZW5kaWYKIHsKICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBp
biBVUkwsIHRoZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTog
ZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5
KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8
ICFkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZp
cnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIo
ZC0+bV91c2VyKTsKLSAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNz
KTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3N3b3JkKGQtPm1fcGFzc3dvcmQp
OwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKICAg
ICB9CiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgJiYgZmlyc3RSZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIGlmIChkLT5tX3Vz
ZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGQtPm1f
dXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBh
dGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50
aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHBy
ZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KICAgICAgICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkp
CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWwKICAgICAgICAgICAg
IC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5n
IGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQg
YWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhl
bnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCiAgICAgICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2Uo
KS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3Vz
ZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgp
LnVybCgpKTsKKyAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRp
YWwoZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwg
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQz
NSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogCiAgICAgY29uc3QgVVJMJiB1
cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgZC0+
bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7
CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJl
cXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT25seSBjb25zaWRlciBh
cHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlzIGlzIGFjdHVhbGx5IGEg
cmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwgZGlkbid0IGluY2x1ZGUg
Y3JlZGVudGlhbHMgb2YgaXRzIG93bi4KLSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkg
JiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewor
ICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHko
KSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICAgICAgQ3JlZGVudGlh
bCBjcmVkZW50aWFsOwogICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgICAgICAgICBjcmVk
ZW50aWFsID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChy
ZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIHJlcXVlc3QudXJsKCkpOwpAQCAtNTIxLDE3ICs1MjEs
MTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICBpZiAoIWNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAg
ICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBbW05TVVJMQ3JlZGVudGlhbCBhbGxv
Y10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzcwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl07
CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkp
IHsKKyAgICAgICAgYXV0byBjcmVkZW50aWFsID0gYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBh
bGxvY10gaW5pdFdpdGhVc2VyOmQtPm1fdXNlcgorICAgICAgICAgICAgcGFzc3dvcmQ6ZC0+bV9w
YXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25d
KTsKICAgICAgICAgZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlID0gY2hhbGxlbmdlLm5zVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKICAgICAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdl
ID0gY2hhbGxlbmdlOwotICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBDcmVk
ZW50aWFsKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgW2NyZWRlbnRpYWwgcmVsZWFzZV07CisgICAg
ICAgIHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UsIENyZWRlbnRpYWwoY3JlZGVudGlhbC5n
ZXQoKSkpOwogICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNl
ciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3Jy
ZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAgZC0+bV91c2VyID0gU3RyaW5n
KCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3b3Jk
ID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dFNvdXAuY3BwCmluZGV4IGQ4MjhkYjc2Njg0MDQ5MjdlNTc2YzZiMzA4ZTZmOWU3ZTc1ZmVhMmEu
LjNmMmQzNmNmNTc1NTA2NTVmMzlmZDQxMTI0YzlkNmYxYTIyYzJhNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0U291cC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBHVW5pcXVlUHRyPFNvdXBVUkk+IFJlc291
cmNlUmVxdWVzdDo6Y3JlYXRlU291cFVSSSgpIGNvbnN0CiAgICAgLy8gd2hlbiBib3RoIHRoZSB1
c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJlIG5vbi1udWxsLiBXaGVuIHdlIGhhdmUgY3JlZGVudGlh
bHMsIGVtcHR5IHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzCiAgICAgLy8gc2hvdWxkIGJlIGVtcHR5
IHN0cmluZ3MgaW5zdGVhZCBvZiBudWxsLgogICAgIFN0cmluZyB1cmxVc2VyID0gbV91cmwudXNl
cigpOwotICAgIFN0cmluZyB1cmxQYXNzID0gbV91cmwucGFzcygpOworICAgIFN0cmluZyB1cmxQ
YXNzID0gbV91cmwucGFzc3dvcmQoKTsKICAgICBpZiAoIXVybFVzZXIuaXNFbXB0eSgpIHx8ICF1
cmxQYXNzLmlzRW1wdHkoKSkgewogICAgICAgICBzb3VwX3VyaV9zZXRfdXNlcihzb3VwVVJJLmdl
dCgpLCB1cmxVc2VyLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBzb3VwX3VyaV9zZXRfcGFzc3dv
cmQoc291cFVSSS5nZXQoKSwgdXJsUGFzcy51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcAppbmRleCBmNTFjNGZkNTdm
OGUxNGI5NjRhYjU5NmNhOWNkM2NhZmU4MTE4NmRhLi5lODViZjQwMWYzMDEzMDIzZTA4ZTlhZmYy
Y2FmODcwZDMxYzg2OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvVVJMU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1VSTFNvdXAuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFVSTCBzb3VwVVJJVG9VUkwoU291
cFVSSSogc291cFVSSSkKICAgICAgICAgLy8gYnVpbHQuIEZpeGluZyBzb3VwX3VyaV90b19zdHJp
bmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCiAgICAgICAgIC8vIG5vdCB3YW50
IHRvIGJyZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKICAg
ICAgICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICAgICAgdXJsLnNldFBhc3MoU3Ry
aW5nOjpmcm9tVVRGOChzb3VwVVJJLT5wYXNzd29yZCkpOworICAgICAgICAgICAgdXJsLnNldFBh
c3N3b3JkKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCmluZGV4IDI4ZDg3M2M0NjEyZGJkY2U0MTc5YzNhMzhlZDBkYzBhNTBiODg3OGEuLjcx
ODNmOTA1NmE4MGQwZTM2ZmZkYTcwZmQyMWI0ZGY3ZmE3MGQ1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCBz
dGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBT
dHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
dGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CisgICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsK
ICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gdXJsLmhv
c3QoKS50b1N0cmluZygpOwogICAgIH0KQEAgLTU3OSwxMCArNTc5LDEwIEBAIHN0YXRpYyBTdHJp
bmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsCiAgICAgICAgIC8vIHRoZSBwYXRoLiBJZiB3ZSBjYW4ndCBmaW5kIGl0LCBv
ciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUgbmFtZSBmb3IgYSBsaW5rCiAgICAgICAgIC8vIHdl
IGp1c3QgdXNlIHRoZSBlbnRpcmUgdXJsLgogICAgICAgICBEV09SRCBsZW4gPSBmc1BhdGhNYXhM
ZW5ndGhFeGNsdWRpbmdFeHRlbnNpb247Ci0gICAgICAgIFN0cmluZyBsYXN0Q29tcG9uZW50ID0g
a3VybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQgPSBr
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChrdXJsLmlzTG9jYWxGaWxlKCkg
fHwgKCFpc0xpbmsgJiYgIWxhc3RDb21wb25lbnQuaXNFbXB0eSgpKSkgewogICAgICAgICAgICAg
bGVuID0gc3RkOjptaW48RFdPUkQ+KGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwg
bGFzdENvbXBvbmVudC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KGxhc3RDb21w
b25lbnQpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0
aEJ1ZmZlcik7CisgICAgICAgICAgICBsYXN0Q29tcG9uZW50LnN1YnN0cmluZygwLCBsZW4pLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBsZW4gPSBzdGQ6Om1pbjxEV09SRD4oZnNQYXRoTWF4TGVuZ3RoRXhjbHVk
aW5nRXh0ZW5zaW9uLCB1cmwubGVuZ3RoKCkpOwogICAgICAgICAgICAgU3RyaW5nVmlldyh1cmwp
LnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZl
cik7CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogCiAgICAgU3RyaW5nIHRpdGxlKHBhc3RlYm9hcmRV
UkwudGl0bGUpOwogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSBw
YXN0ZWJvYXJkVVJMLnVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHBh
c3RlYm9hcmRVUkwudXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAg
aWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVSTC51
cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyU3RhdGUuY3BwCmluZGV4IDJjNmM3MGU4NDk5NWMyOWFjMThmZjNjOTU0OWM3ODk5Njhj
YTAxY2EuLmRjYjQzMGIyMmY3NTQ2YmFkMzk3MDU4MzkzZDg0MmFiNGUwNmVhY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKQEAgLTE2NSwxNyArMTY1LDE0
IEBAIGJvb2wgQnVpbGRlclN0YXRlOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1Zh
bHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpCiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJh
dGlvbnM7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KGluVmFsdWUpKSB7Ci0KICAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUpKSB7CiAgICAgICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZS5pc1VSSSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsK
LSAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7Ci0K
LSAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgICAg
ICAgICBhdXRvIGZpbHRlclVSTCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CisgICAg
ICAgICAgICBhdXRvIGZyYWdtZW50ID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChmaWx0ZXJVUkwp
LmZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25z
KCkuYXBwZW5kKFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGZpbHRlclVSTCwgZnJh
Z21lbnQudG9TdHJpbmcoKSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAppbmRleCBkNzllODAwODgw
ODUwMDVmMWUyMzg1YTA4MWJhMTYwYWZhYmYyMjM5Li44MzQ3NmZlNzY5ZDZkYmUwOWNmNTQ3OTAx
NTZkYTY1ODhjMmRlN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9u
LmNwcApAQCAtNTMsMjMgKzUzLDI0IEBAIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aG9zdG5hbWUo
KSBjb25zdAogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnBvcnQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3VybC5wb3J0KCkgPyBTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkudmFsdWUoKSkg
OiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gcG9ydCA9IG1fdXJsLnBvcnQoKTsKKyAgICByZXR1
cm4gcG9ydCA/IFN0cmluZzo6bnVtYmVyKCpwb3J0KSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBXb3JrZXJMb2NhdGlvbjo6cGF0aG5hbWUoKSBjb25zdAogewogICAgIGF1dG8gcGF0aCA9
IG1fdXJsLnBhdGgoKTsKLSAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRoLnRv
U3RyaW5nKCk7CisgICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iX3MgOiBwYXRoLnRvU3Ry
aW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6c2VhcmNoKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV91cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsg
bV91cmwucXVlcnkoKTsKKyAgICByZXR1cm4gbV91cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogbV91cmwucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5n
KCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkg
OiAiIyIgKyBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdXJsLmZyYWdt
ZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBXb3JrZXJMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmNwcAppbmRleCAwZDUzYmNmOTIzZWQ2MTI2NTM5ZjM1ZGQyYjk0OWNhMTRiN2I1NjdjLi4x
ODk2YzI0MTFiNWRjMGJmNjgyZjQyNTA4OGUzZTY4OTYwZDJjYWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkoU2VjdXJpdHlPcmlnaW5EYXRhJiYK
ICAgICA6IG1fdG9wT3JpZ2luKFdURk1vdmUodG9wT3JpZ2luKSkKICAgICAsIG1fc2NvcGUoV1RG
TW92ZShzY29wZSkpCiB7Ci0gICAgQVNTRVJUKCFtX3Njb3BlLmhhc0ZyYWdtZW50KCkpOworICAg
IEFTU0VSVCghbV9zY29wZS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiB9CiAKIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlL
ZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNzM4NjI1NGVk
YTkyZTk4N2QyNjkyNGQ4NTZmYzNlZDY0YTMwM2ZlZi4uYmE3NGY2ZDEwMzQxMThlZjUxYzljZGFl
YzdiZWRlOTdjMGM1YjI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3Bw
CkBAIC00NiwxMyArNDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1VUkwgc3RhdGlj
IGlubGluZSB0b3BPcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3N0YXRp
YyBVUkwgdG9wT3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAg
VVJMIHVybDsKICAgICB1cmwuc2V0UHJvdG9jb2wob3JpZ2luLnByb3RvY29sKCkpOwogICAgIHVy
bC5zZXRIb3N0KG9yaWdpbi5ob3N0KCkpOwotICAgIGlmIChvcmlnaW4ucG9ydCgpKQotICAgICAg
ICB1cmwuc2V0UG9ydCgqb3JpZ2luLnBvcnQoKSk7CisgICAgdXJsLnNldFBvcnQob3JpZ2luLnBv
cnQoKSk7CiAgICAgcmV0dXJuIHVybDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiZmMxNTcyMTE2Y2YyOTY3YWM4
NTY2MzU0ZmU0OTQ3NDg3ZGNlMjVjLi5kYmI1OTViMzEyN2JmMjFhM2RiNDE5YjY1YzZkYzQ3MWM4
YTJlYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcApAQCAtNDI3LDggKzQyNyw3IEBAIFVSTCBzdGF0aWMgaW5saW5lIG9yaWdp
blVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgIFVSTCB1cmw7CiAgICAgdXJs
LnNldFByb3RvY29sKG9yaWdpbi5wcm90b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdChvcmlnaW4u
aG9zdCgpKTsKLSAgICBpZiAob3JpZ2luLnBvcnQoKSkKLSAgICAgICAgdXJsLnNldFBvcnQoKm9y
aWdpbi5wb3J0KCkpOworICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKICAgICByZXR1
cm4gdXJsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxNTI4
MTU1ODI1Njk4MWE0ODM4Y2Q2MzczYjM2NzFhNWVkMDQwYWY5Li5hMGRlNDlmMDg4NDRhODZjNmUz
Mjk3NWNjNGJkNzA0Njc1YjJhZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6
b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAgICAgaWYgKCF1
c2VyLmlzTnVsbCgpKQogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsK
ICAgICBpZiAoIXBhc3N3b3JkLmlzTnVsbCgpKQotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMu
c2V0UGFzcyhwYXNzd29yZCk7CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzd29y
ZChwYXNzd29yZCk7CiAKICAgICByZXR1cm4gb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFs
cywgYXN5bmMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IDllMGI2ODJjZGVkMmFmYmJmNTdhMDI4NDlkYzNiNzlk
NzlhNzY3MjEuLjk1NWQzODhlNWU5NmUzNTE5OTM2NzRmYjk0OWVhODdhZjNmZDMxZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZWRp
cmVjdGlvbihSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcQogICAgICAgICAg
ICAgaGFuZGxlcihyZWRpcmVjdGlvbkVycm9yKHJlZGlyZWN0UmVzcG9uc2UsIG1ha2VTdHJpbmco
IkNyb3NzLW9yaWdpbiByZWRpcmVjdGlvbiB0byAiLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3Ry
aW5nKCksICIgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTog
bm90IGFsbG93ZWQgdG8gZm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24gd2l0
aCBub24gQ09SUyBzY2hlbWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChsb2NhdGlvbi5oYXNVc2VybmFtZSgpIHx8IGxvY2F0aW9uLmhhc1Bhc3N3b3Jk
KCkpIHsKKyAgICAgICAgaWYgKGxvY2F0aW9uLmhhc0NyZWRlbnRpYWxzKCkpIHsKICAgICAgICAg
ICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3RyaW5n
KCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0
cmluZygpLCAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6
IHJlZGlyZWN0aW9uIFVSTCAiLCBsb2NhdGlvbi5zdHJpbmcoKSwgIiBoYXMgY3JlZGVudGlhbHMi
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAg
dm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ28KICAgICBodHRwc1VwZ3JhZGVDaGVja2VyLnF1ZXJ5KHVy
bC5ob3N0KCkudG9TdHJpbmcoKSwgbV9zZXNzaW9uSUQsIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9zdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChmb3VuZEhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gbmV3VVJMID0g
cmVxdWVzdC51cmwoKTsKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiX3Mp
OworICAgICAgICAgICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAgICAg
cmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpp
bmRleCA2MjNhMWFkY2VjMGNmNDNkZTRlYTU2ZDU3Njk5MjUwY2I5Y2U1ZWUyLi5lNDQ0MDY0NzA2
NThhNjFiNzY3MzQ0OTBiMTU2MWI3ZTUzM2U1Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAg
LTIxMyw3ICsyMTMsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGF1dG8gdXJsID0g
cmVxdWVzdC51cmwoKTsKICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSAmJiB1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKSB7CiAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgICAgIG1fcGFzc3dv
cmQgPSB1cmwucGFzcygpOworICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAg
ICAgICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgdXJsID0gcmVxdWVz
dC51cmwoKTsKICAgICAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JgogICAgIAogICAgIGNvbnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2Vy
ID0gdXJsLnVzZXIoKTsKLSAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3
b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0
cE1ldGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAppbmRleCBmZTFiNjNlNzhmNjgwNDI4Y2ZmZTcwYWQ4ZjY4NTNhODFlMmRjNzM3
Li45YzA0NjUwNTg5MzljZjY1ZmMxMGY0NzcxZWQyMTY2NjJiNmI5ZjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtEYXRhVGFza1NvdXA6Ok5ldHdvcmtEYXRh
VGFza1NvdXAoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFzCiAgICAgICAg
IGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSkgewogICAgICAgICAgICAg
bV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICAgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygp
OworICAgICAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICAgICAg
cmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAgICAgICAgICBpZiAobV91c2VyLmlz
RW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogCiAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAg
IHVybC5zZXRVc2VyKG1fdXNlcik7Ci0gICAgdXJsLnNldFBhc3MobV9wYXNzd29yZCk7CisgICAg
dXJsLnNldFBhc3N3b3JkKG1fcGFzc3dvcmQpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAK
ICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKIAogICAgIGNvbnN0IGF1dG8m
IHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBtX3Bh
c3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAg
ICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJlcXVlc3Qu
cmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtMTExNywyNCArMTExNywyMiBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OnN0YXJ0aW5nQ2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdl
LCBOZXR3b3JrRGF0YQogfQogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3LCAxKQorCiBi
b29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcoKSBj
b25zdAogewogICAgIC8vIEZvbGxvdyBBcHBsZSdzIEhTVFMgYWJ1c2UgbWl0aWdhdGlvbiAxOgog
ICAgIC8vICAiTGltaXQgSFNUUyBTdGF0ZSB0byB0aGUgSG9zdG5hbWUsIG9yIHRoZSBUb3AgTGV2
ZWwgRG9tYWluICsgMSIKLSAgICBpZiAoaXNUb3BMZXZlbE5hdmlnYXRpb24oKSB8fCBob3N0c0Fy
ZUVxdWFsKG1fY3VycmVudFJlcXVlc3QudXJsKCksIG1fY3VycmVudFJlcXVlc3QuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSkgfHwgaXNQdWJsaWNTdWZmaXgobV9jdXJyZW50UmVxdWVzdC51cmwoKS5o
b3N0KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkKKyAg
ICAgICAgfHwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5ob3N0KCkgPT0gbV9jdXJyZW50UmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmhvc3QoKQorICAgICAgICB8fCBpc1B1YmxpY1N1ZmZp
eChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3QoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93SFNUU1Byb3RvY29s
VXBncmFkZSgpIGNvbnN0CiB7Ci0gICAgLy8gRm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVzZSBtaXRn
YXRpb24gMjoKKyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGlnYXRpb24gMjoK
ICAgICAvLyAiSWdub3JlIEhTVFMgU3RhdGUgZm9yIFN1YnJlc291cmNlIFJlcXVlc3RzIHRvIEJs
b2NrZWQgRG9tYWlucyIKLSAgICBpZiAoIWlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgJiYgIW1fY3Vy
cmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBpc1RvcExldmVsTmF2aWdhdGlvbigpCisgICAgICAg
IHx8IG1fY3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlKQpAQCAtMTE1Myw2ICsxMTUxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpoc3Rz
RW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2EKICAgICBp
ZiAoc291cE1lc3NhZ2UgPT0gdGFzay0+bV9zb3VwTWVzc2FnZS5nZXQoKSkKICAgICAgICAgdGFz
ay0+cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoc291cE1lc3NhZ2UpOwogfQorCiAjZW5kaWYKIAog
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRTdGFydFJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVVSTC5oCmluZGV4IDJkNzc2MzQ1ZTIyNDk2Y2I4NzUwYzJlNjE0OWNkMDY2YWMwYzc4
MDMuLjRjODM4YWZiNzMwNTk2MzU4OTM5YWZiNWJiNDU2NGQwMGE4YTYyMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJVVJMLmgKQEAgLTYzLDI1ICs2MywyNSBAQCBwdWJsaWM6CiAgICAgV1RGOjpT
dHJpbmcgaG9zdCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7
Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPmhv
c3QoKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2Vk
VVJMLT5ob3N0KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBwcm90b2Nv
bCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAg
IHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9wYXJzZWRVUkwtPnByb3RvY29sKCku
dG9TdHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+
cHJvdG9jb2woKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIHBhdGgoKSBj
b25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1
cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wYXRoKCkudG9TdHJpbmco
KSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+cGF0aCgpLnRv
U3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoKSBj
b25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1
cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5sYXN0UGF0aENvbXBvbmVu
dCgpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5sYXN0UGF0
aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5tbQppbmRleCBiMWMzNmRiMmMwNDY4YTY1MWQ2NDc2YTJmOWRlY2Ri
MzI5NjViZGRkLi4wN2NkMTBmMmEzZGY5OTBjODY2ZTBlZTg5Yzk5YTA2MzUwZmJmOWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpAQCAt
MjIwLDggKzIyMCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KQogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93
bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkpIHsK
LSAgICAgICAgICAgIFdURjo6VVJMIGRlc3RpbmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOwot
ICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5mcmFnbWVudElkZW50aWZpZXIoKS5sZW5n
dGgoKSkKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25VUkwgPSBXVEY6OlVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKSk7
CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigp
KQogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uVVJMLnNldEZyYWdtZW50SWRlbnRpZmllcihk
b3dubG9hZFByb3h5LnJlcXVlc3QoKS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAg
ICAgICAgICBjb250cm9sbGVyLT5maW5pc2goZGVzdGluYXRpb25VUkwpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5j
cHAKaW5kZXggNDdiNTRjYWQ4NDAxMTU4NmVmYjgwOTliYTFhODkzNWI3MTI0YjVkMS4uMzkzNmVi
N2I5MmYwYzM5ZTIxN2EzNTE5OGE2NGE3NDBjZGQyZDQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTE0LDE1ICsx
MTQsOSBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpsb2FkU3RvcmFnZUZyb21EaXNr
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaE1hcAogCiAgICAgICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5KTsKIAot
ICAgICAgICBhdXRvIG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwotCiAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNhbHRGb3JPcmlnaW4+PiBkZXZpY2VJZEhhc2hT
YWx0Rm9yT3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogb3Jp
Z2luUGF0aHMpIHsKLSAgICAgICAgICAgIFVSTCB1cmw7Ci0gICAgICAgICAgICB1cmwuc2V0UHJv
dG9jb2woImZpbGUiX3MpOwotICAgICAgICAgICAgdXJsLnNldFBhdGgob3JpZ2luUGF0aCk7Ci0K
LSAgICAgICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0ID0gdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAg
ICAgICAgICAgYXV0byBkZXZpY2VJZEhhc2hTYWx0ID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoKG9yaWdpblBhdGgpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKIAogICAg
ICAgICAgICAgaWYgKGhhc2hTYWx0U2l6ZSAhPSBkZXZpY2VJZEhhc2hTYWx0Lmxlbmd0aCgpKSB7
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBsZW5ndGggb2YgdGhlIGhhc2ggc2FsdCAoJWQpIGlz
IGRpZmZlcmVudCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHNhbHRzIGRlZmluZWQgaW4gV2Vi
S2l0ICglZCkiLCBkZXZpY2VJZEhhc2hTYWx0Lmxlbmd0aCgpLCBoYXNoU2FsdFNpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3Bw
CmluZGV4IGQzMDU1NTMwODA0NjIzODEzMWYwYmZlZDQyZDVmMzAxMWYyYjFlMjUuLmI3YWY1Y2Rh
ZWI1ZDAzYjMwOWJhZGJkOTYzNTNhNTZiZmJkMmY3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTE0NSwxNiArMTQ1
LDE1IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUlu
Zm8oKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBVUkwm
IHVybCkKK3N0YXRpYyBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBVUkwmIHVybCkKIHsKLSAg
ICBTdHJpbmcgZXh0ZW5zaW9uOwotICAgIFN0cmluZyBmaWxlbmFtZSA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwotICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoJy8nKSkgewotICAgICAgICBz
aXplX3QgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKLSAgICAgICAg
aWYgKGV4dGVuc2lvblBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIGV4dGVuc2lvbiA9IGZp
bGVuYW1lLnN1YnN0cmluZyhleHRlbnNpb25Qb3MgKyAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIGV4
dGVuc2lvbi5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIGF1dG8gZmlsZW5hbWUgPSB1
cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy8nKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBzaXplX3QgbGFzdERvdFBvc2l0aW9uID0gZmlsZW5h
bWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAobGFzdERvdFBvc2l0aW9uID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBmaWxlbmFtZS5zdWJzdHJpbmcobGFz
dERvdFBvc2l0aW9uICsgMSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAogI2lmICFQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDhlMWI4NjdjNTY3MmExZWE1ZWYzNDc4NWQxYzA2NjVlMjFlYTFhNmEuLjY5MTQxMmYzOGY4
ZWNlMjA1NWE0MTQ4Y2U4ZTU4Y2U0ZDdiNzk1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTI1Niw3ICsxMjU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXMKICNlbmRpZgogCiAgICAgLy8gV2UgZmFpbGVkIHRvIGlzc3VlIGFuIHVuaXZlcnNhbCBm
aWxlIHJlYWQgYWNjZXNzIHNhbmRib3gsIGZhbGwgYmFjayB0byBpc3N1aW5nIG9uZSBmb3IgdGhl
IGJhc2UgVVJMIGluc3RlYWQuCi0gICAgYXV0byBiYXNlVVJMID0gVVJMKFVSTCgpLCB1cmwuYmFz
ZUFzU3RyaW5nKCkpOworICAgIGF1dG8gYmFzZVVSTCA9IHVybC50cnVuY2F0ZWRGb3JVc2VBc0Jh
c2UoKTsKICAgICBhdXRvIGJhc2VQYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0aCgpOwogICAg
IGlmIChiYXNlUGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTI0Nyw3ICs1MjQ3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAgICAgICBib29sIHNob3VsZE9wZW5B
cHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24KICAgICAgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJbmZvLT5pc01haW5GcmFt
ZSgpCi0gICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgPyAhaG9zdHNBcmVFcXVhbChtX21haW5G
cmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2UpCisgICAgICAgICAgICAmJiAobV9t
YWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhv
c3QoKSkKICAgICAgICAgICAgICYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBl
ICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2FyZDsKIAogICAgICAgICBhdXRv
IG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlv
bkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmlnaW5h
bFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVk
QWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKQEAgLTUzNzMsNyArNTM3Myw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7CiAKICAgICAgICAg
YXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rp
dml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgPyAhaG9zdHNBcmVF
cXVhbChtX21haW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2U7CisgICAgICAg
IGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVy
bCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICAgICAgYXV0byBuYXZpZ2F0
aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1l
LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUo
dXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uQWN0aW9uLmdl
dCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBAIC01NTcxLDcgKzU1NzEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBPcHRpbwogCiAgICAgICAgIHJlcGx5KG5ld1BhZ2UtPndlYlBhZ2VJRCgp
LCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMobV9wcm9jZXNzLCAqbmV3UGFnZS0+ZHJhd2lu
Z0FyZWEoKSkpOwogCi0gICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0lu
TmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJlRXF1YWwoVVJMKHsgfSwgbWFp
bkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3Vw
cHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IFVSTCh7IH0sIG1h
aW5GcmFtZVVSTCkuaG9zdCgpID09IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogCiAjaWYgSEFWRShB
UFBfU1NPKQogICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9u
SW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gdHJ1ZTsKQEAgLTU1NzksNyArNTU3OSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAgICAgfTsKIAogICAgIGF1dG8gdXNlckluaXRp
YXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlv
bkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgIGJvb2wgc2hvdWxk
T3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwob3JpZ2luYXRpbmdGcmFtZUluZm8tPnJlcXVl
c3QoKS51cmwoKSwgcmVxdWVzdC51cmwoKSk7CisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3Mg
PSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0
LnVybCgpLmhvc3QoKTsKICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRp
bmdGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0
KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZp
dHkpKTsKIAogICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24p
LCAqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHdpbmRvd0ZlYXR1cmVzID0gV1RGTW92ZSh3aW5kb3dGZWF0dXJl
cyldIChSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggYzI1ODhhOGEwOTFkNGIwODc1MjhjYzMyNTg4ZDcwZTNiNDUzMWJlZi4uZTRh
ODZmYWFmMzE4MzhjOGNmYTNlZDc5ZTg5Yjg5NGRjNWMyMDIxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01NjcsMTEgKzU2NywxMCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJQYWdlUHJveHkm
IHBhZ2UsIGNvbnN0IFN0cmluZwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHVybFN0
cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KICAgICAvLyBHZXQgdXJsJ3MgYmFz
ZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy4KLSAgICBV
UkwgYmFzZVVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKLSAgICBTdHJpbmcgcGF0aCA9
IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICBhdXRvIHBhdGggPSB1cmwudHJ1bmNhdGVk
Rm9yVXNlQXNCYXNlKCkuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAocGF0aC5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gQ2xpZW50IGxvYWRzIGFuIGFsdGVybmF0
ZSBzdHJpbmcuIFRoaXMgZG9lc24ndCBncmFudCB1bml2ZXJzYWwgZmlsZSByZWFkLCBidXQgdGhl
IHdlYiBwcm9jZXNzIGlzIGFzc3VtZWQKICAgICAvLyB0byBoYXZlIHJlYWQgYWNjZXNzIHRvIHRo
aXMgZGlyZWN0b3J5IGFscmVhZHkuCiAgICAgbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNj
ZXNzLmFkZChwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCAz
MTVjZjNmZjEzNDE0YmUxODAzMWY3MDE2YWQ3MjY2NTE0YzQ0OTVjLi5mMzQyM2E5MmFiYWQ5YmZh
YTBmOGVlZDkyMTJiZTBhMmE3YzVkNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFs
aXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW4KICAgICAg
ICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiBpbiBkb21haW5zLmdldCgpKSB7CiAgICAgICAg
ICAgICAgICAgVVJMIHVybCB7IFVSTCgpLCBkb21haW4gfTsKICAgICAgICAgICAgICAgICBpZiAo
dXJsLnByb3RvY29sKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICB1cmwuc2V0UHJv
dG9jb2woImh0dHBzIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJo
dHRwcyIpOwogICAgICAgICAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gYXBwQm91bmREb21haW4geyB1cmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTAzOTkwYmY5NGU4Mzg1ZmRlOWYxNTRjM2QzNWRhZTUzM2QwMDAzYi4uNDg3
NTFhYmY0ODMyNDU4OTYxYmU3M2FhNWE1OTViMDVkZWNlYWY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTYwLDE5ICs2MCwxMCBAQCBWZWN0b3I8U2VjdXJpdHlPcmln
aW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQog
ICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwotICAg
IGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7Ci0gICAgICAgIFVS
TCB1cmw7Ci0gICAgICAgIHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAgICAgIHVybC5z
ZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgIFN0cmluZyBtZWRpYUtleUlkZW50aWZpZXIg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLQotICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5SWRl
bnRpZmllcik7Ci0gICAgICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICByZXN1bHRzLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOworICAgIGZv
ciAoYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gVVJM
OjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG9yaWdpblBhdGgpLmxhc3RQYXRoQ29tcG9uZW50
KCkudG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KaW5kZXggYWVkMzAxYTU0ZGQ5OWJlYjY4ZmIxNDM4ZDJkMWMyNTRkMDMwMTZl
NC4uZTRlZmE0ODA5ZjBhM2ZmNTBhNjE2ZmUxMWE3NTA1ODlhNDc4ZWFlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xNTYy
LDEwICsxNTYyLDggQEAgdm9pZCBQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVudCgpCiAgICAg
aWYgKFttX3BkZkRvY3VtZW50IGlzTG9ja2VkXSkKICAgICAgICAgY3JlYXRlUGFzc3dvcmRFbnRy
eUZvcm0oKTsKIAotICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDopXSkgewotICAgICAgICBTdHJpbmcgcGRmVVJM
RnJhZ21lbnQgPSBtX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICBb
bV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6cGRmVVJMRnJhZ21lbnRdOwotICAg
IH0KKyAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pCisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBz
ZXRVUkxGcmFnbWVudDptX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLmNyZWF0ZU5T
U3RyaW5nKCkuZ2V0KCldOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c2V0U3VnZ2VzdGVkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCmluZGV4IDc2OGJhMmQ3YzQ2ODZjMDZlZTk3NGFiYmQ2NTI1NDExZjNiYmNjOTMu
LjQxZDNlZDg1ZTMzN2M1MTZjYjVjZGUwZDk3Y2UyMThjYTIxNTE1ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjQsMTcgKzI0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKIAotI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCi0K
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bURhdGEuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0
TWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9F
dmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNDIs
NyArMzgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVEZXN0cm95ZWQoKQogewpAQCAtNTYsMTkgKzUx
LDIxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYp
CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
ZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKKwordm9pZCBXZWJDb250ZXh0TWVu
dUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7
Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQo
KTsKLSAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgU3RyaW5nIGVuY29k
ZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAgZW5j
b2RlZC5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBhdXRvIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVybCA9
ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBlbmNvZGVkICsgIiZpZT1VVEYt
OCZvZT1VVEYtOCI7CisgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCk7CisgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIHNl
YXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsK
KyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBzZWFy
Y2hVUkwgPSBVUkwgeyB7IH0sICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBz
ZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCi0gICAgaWYgKFBhZ2UqIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGlj
YXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihVUkwgeyBVUkwgeyB9LCB1cmwgfSwgeyB9LCBudWxscHRy
LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBSZWZlcnJlclBvbGlj
eTo6RW1wdHlTdHJpbmcsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKLSAgICB9CisgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9y
IHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CisgICAgcGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VhcmNoVVJMLCB7IH0sIG51bGxwdHIsIFdlYkNv
cmU6OkxvY2tIaXN0b3J5OjpObywgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFdl
YkNvcmU6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogfQogCiB2b2lkIFdlYkNvbnRleHRN
ZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKQpAQCAtOTEsMTQg
Kzg4LDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVha2luZygpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwogI2VuZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJTElU
WV9DT05URVhUX01FTlVTKQorCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4
dE1lbnUoKQogewogICAgIG1fcGFnZS0+Y29udGV4dE1lbnUoKS0+c2hvdygpOwogfQorCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA4MDk0YTYyODIyNjFiNWU4
Mzk3NDVkODZlNjA0M2FmNGNlNmM3MjM4Li4zMGM2ZmZlMjNmMWU0OWYxNWY2NjgzOGI2ODQxYjU2
NjJjN2VlZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xMjksNyArMTI5
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIFN0cmluZyB0aXRsZSA9IGxhYmVs
OwogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBh
dGhDb21wb25lbnQoKTsKKyAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKS50
b1N0cmluZygpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGl0
bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQppbmRleCBjODQ0OGM1YWMxZjQzNjJlNDQwM2MzYWMyOWEyODZhOWFmNWViYjhl
Li5jY2FlMjEyYzU2Y2E0ODkxYjY3YzZkM2JlZTRjZDMzMTkyYjJhNGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQpAQCAtODgyLDcgKzg4Miw3IEBAIHN0YXRpYyBCT09MIHNob3VsZFRy
eUFwcExpbmsoV2ViVmlldyAqd2ViVmlldywgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYKICAgICBpZiAoIWFjdGlvbi5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0
dXJuIE5POwogCi0gICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5kb2N1bWVudCgp
ICYmIGhvc3RzQXJlRXF1YWwodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBhY3Rpb24u
dXJsKCkpKQorICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSAm
JiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaG9zdCgpID09IGFjdGlvbi51cmwoKS5o
b3N0KCkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIHJldHVybiBZRVM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA1MzY3M2U5ZTJmNWVkM2Jm
NGNhNTEyNGM5MmY0MTZjZjNjMzcyZWZmLi43ZDQ4OWU2MGZmNWE4MTI1YzRkMmNmZGFhYTY0MWM1
N2ExOGE5NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTIyODYsMTQgKzIyODYsMTAgQEAgLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1
bWVudEZyYWdtZW50Rm9yV2ViQXJjaGl2ZTooV2ViQXJjaGl2ZSAqKXdlYkFyY2hpdmUKIAogLSAo
RE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50Rm9ySW1hZ2VEYXRhOihOU0Rh
dGEgKilkYXRhIHdpdGhSZWxhdGl2ZVVSTFBhcnQ6KE5TU3RyaW5nICopcmVsYXRpdmVVUkxQYXJ0
IGFuZE1JTUVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlCiB7Ci0gICAgV2ViUmVzb3VyY2UgKnJl
c291cmNlID0gW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6VVJM
OjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChyZWxhdGl2ZVVSTFBhcnQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOm1pbWVUeXBl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lTmFtZTpuaWxdOwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50
ID0gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNl
OnJlc291cmNlXTsKLSAgICBbcmVzb3VyY2UgcmVsZWFzZV07Ci0gICAgcmV0dXJuIGZyYWdtZW50
OworICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRX
aXRoRGF0YTpkYXRhCisgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0
cmluZyB7IHJlbGF0aXZlVVJMUGFydCB9KQorICAgICAgICBNSU1FVHlwZTptaW1lVHlwZSB0ZXh0
RW5jb2RpbmdOYW1lOm5pbCBmcmFtZU5hbWU6bmlsXSk7CisgICAgcmV0dXJuIFtbc2VsZiBfZGF0
YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZS5nZXQo
KV07CiB9CiAKIC0gKEJPT0wpZm9jdXNlZE5vZGVIYXNDb250ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBhYzZiNzEzOGI4ODk3YzM4
OTI1M2UyNTI0NTA0ZDM0MGUwNjY5YjdhLi43YTRmNWE4ZWYyZTBjNWU2YzU5YWFjZGYyYTAxNDhh
NjYxN2IyNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTIzMDYsNyArMjMwNiw3IEBAIC0gKHZvaWQpY2xvc2UKIAogLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKV93ZWJfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXBhc3RlYm9h
cmRUeXBlIGltYWdlTUlNRVR5cGU6KE5TU3RyaW5nICopaW1hZ2VNSU1FVHlwZQogewotICAgIGF1
dG8gZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlwZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2Vz
T2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAiLiJdOworICAgIFN0cmluZyBmaWxlbmFtZSA9IFtp
bWFnZU1JTUVUeXBlIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIi8iIHdp
dGhTdHJpbmc6QCIuIl07CiAgICAgYXV0byByZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJSZXNvdXJj
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXQogICAgICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChmaWxlbmFtZSkg
TUlNRVR5cGU6aW1hZ2VNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOm5pbCBmcmFtZU5hbWU6bmls
XSk7CiAgICAgcmV0dXJuIFtbc2VsZiBfZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRo
SW1hZ2VSZXNvdXJjZTpyZXNvdXJjZS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0KaW5kZXggYWE1MWI2Mzk0ODg4YTcwYjdmMGQ5ZGJhMDUxZmUyNWIxZTE2ZmY5Ny4uZjE0MTg2
MzBlZjZlOWRhMmMzMzlmMGFkMWVkOGVlNjY5YTg4ODdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5tbQpAQCAtMjU1LDcgKzI1NSw3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFu
aW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgICAgICBy
ZXR1cm4gW1tbV2ViQW5pbWF0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OwogCiAgICAgTlNVUkwgKnVybCA9IF9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwot
ICAgIE5TU3RyaW5nICphYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwor
ICAgIFN0cmluZyBhYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwogICAg
IGlmICh1cmwgJiYgX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChX
VEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAg
ICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA2NDFhYzM1
NGMzNDE5NjdlYTZjZWQ2OTBkNWU2ZDQ1YzZjMmMyYTFhLi5jYzg3NzUzYTI4NDcyOGM5MmI2NzA4
YmI0YTA2OGM4MGNhNTczNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxMSArMzgsMTEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8
UGx1Z2luUGFja2FnZT4gPiBQbHVnaW5QYWNrYWdlQnlOYW1lTWFwOwordHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+PiBQbHVnaW5QYWNrYWdlQnlOYW1lTWFwOwog
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKIAotc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhpbXVtUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVTaXplID0gMzI3
Njg7Citjb25zdGV4cHIgc2l6ZV90IG1heGltdW1QZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNo
ZVNpemUgPSAzMjc2ODsKIAogc3RhdGljIGJvb2wgZ1BlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNh
Y2hlSXNFbmFibGVkOwogCkBAIC01NSw5ICs1NSw2IEBAIFN0cmluZyYgcGVyc2lzdGVudFBsdWdp
bk1ldGFkYXRhQ2FjaGVQYXRoKCkKICNlbmRpZgogCiBQbHVnaW5EYXRhYmFzZTo6UGx1Z2luRGF0
YWJhc2UoKQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCi0gICAg
OiBtX3BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlSXNMb2FkZWQoZmFsc2UpCi0jZW5kaWYKIHsKIH0K
IApAQCAtMjI4LDcgKzIyNSw3IEBAIFBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpwbHVn
aW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBwbHVnaW5D
aG9pY2VzWzBdOwogfQogCi1TdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAorU3RyaW5nIFBsdWdpbkRhdGFiYXNl
OjpNSU1FVHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IGV4dGVuc2lvbikgY29uc3QKIHsKICAg
ICBpZiAoZXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
MjUwLDcgKzI0Nyw3IEBAIFN0cmluZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGNvbnN0CiAgICAgICAgICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1pbWVfaXQtPnZhbHVlOwogICAgICAgICAgICAgYm9v
bCBmb3VuZE1hcHBpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uc1tpXSwgZXh0ZW5zaW9uKSkgeworICAgICAgICAg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyBleHRlbnNpb25z
W2ldIH0sIGV4dGVuc2lvbikpIHsKICAgICAgICAgICAgICAgICAgICAgUGx1Z2luUGFja2FnZSog
cGx1Z2luID0gKCppdCkuZ2V0KCk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZlcnJl
ZFBsdWdpbiAmJiBQbHVnaW5QYWNrYWdlOjplcXVhbCgqcGx1Z2luLCAqcHJlZmVycmVkUGx1Z2lu
KSkKQEAgLTI4NCwyMCArMjgxLDE5IEBAIFBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpm
aW5kUGx1Z2luKGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5
cGUpOwogICAgIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgp
OworICAgIGF1dG8gZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICBpZiAo
ZmlsZW5hbWUuZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIAotICAgIGludCBleHRlbnNpb25Qb3MgPSBmaWxlbmFtZS5yZXZlcnNl
RmluZCgnLicpOwotICAgIGlmIChleHRlbnNpb25Qb3MgPT0gLTEpCi0gICAgICAgIHJldHVybiAw
OworICAgIGF1dG8gZG90UG9zaXRpb24gPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOworICAg
IGlmIChkb3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgCi0gICAgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uID0gTUlNRVR5cGVGb3JFeHRlbnNp
b24oZmlsZW5hbWUuc3Vic3RyaW5nKGV4dGVuc2lvblBvcyArIDEpKTsKKyAgICBTdHJpbmcgbWlt
ZVR5cGVGb3JFeHRlbnNpb24gPSBNSU1FVHlwZUZvckV4dGVuc2lvbihmaWxlbmFtZS5zdWJzdHJp
bmcoZG90UG9zaXRpb24gKyAxKSk7CiAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luID0gcGx1Z2lu
Rm9yTUlNRVR5cGUobWltZVR5cGVGb3JFeHRlbnNpb24pOwogICAgIGlmICghcGx1Z2luKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBpZiBubyBwbHVnaW4gY291bGQgYmUgZm91bmQsIHF1ZXJ5IFdpbmRv
d3MgZm9yIHRoZSBtaW1lIHR5cGUKLSAgICAgICAgLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZXh0
ZW5zaW9uLgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgLy8gRklYTUU6IElmIG5vIHBsdWdp
biBjb3VsZCBiZSBmb3VuZCwgcXVlcnkgV2luZG93cyBmb3IgdGhlIE1JTUUgdHlwZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBleHRlbnNpb24uCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICAKICAgICBtaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uOwpAQCAtMzc0LDYgKzM3
MCw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZERpc2FibGVkUGx1Z2luRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lKQogfQogCiAjaWYgIUVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQor
CiAvLyBGb3IgU2FmYXJpL1dpbiB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMgYXJlIGltcGxl
bWVudGVkCiAvLyBpbiBQbHVnaW5EYXRhYmFzZVdpbi5jcHAsIGJ1dCBpZiB3ZSBjYW4gdXNlIFdl
YkNvcmUgY29uc3RydWN0cwogLy8gZm9yIHRoZSBsb2dpYyB3ZSBzaG91bGQgcGVyaGFwcyBtb3Zl
IGl0IGhlcmUgdW5kZXIgWFBfV0lOPwpAQCAtNDcwLDggKzQ2Nyw4IEBAIHN0YXRpYyBib29sIHJl
YWRUaW1lKHRpbWVfdCYgcmVzdWx0VGltZSwgY2hhciomIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIHNjaGVtYVZlcnNpb24g
PSAnMSc7Ci1zdGF0aWMgY29uc3QgY2hhciBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZp
bGVuYW1lW10gPSAiUGx1Z2luTWV0YWRhdGFDYWNoZS5iaW4iOworY29uc3RleHByIGNoYXIgc2No
ZW1hVmVyc2lvbiA9ICcxJzsKK2NvbnN0ZXhwciBjaGFyIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0
YUNhY2hlRmlsZW5hbWVbXSA9ICJQbHVnaW5NZXRhZGF0YUNhY2hlLmJpbiI7CiAKIHZvaWQgUGx1
Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiB7CkBAIC02MTcsNSAr
NjE0LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6c2V0UGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQ
YXRoKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudE1ldGEKIHsKICAgICBXZWJDb3JlOjpwZXJzaXN0
ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVBhdGgoKSA9IHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0
aDsKIH0KKwogI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuaAppbmRleCBhY2MwZTFmYmE3NDY0Mjk0NDFiYjlhZDY0ZmRiY2Uy
NTBkMmRiNzE3Li45YjM0YjZmNDQ4ZjM5NDE0YzMzOGIyMWZlMTUxNzE4NjMwYzZlNmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwg
THRkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNSwyMSArMjUsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBQbHVnaW5EYXRhYmFzZV9oCi0jZGVmaW5lIFBsdWdpbkRhdGFiYXNlX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xhc3MgSW50U2l6
ZTsKLSAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKLSAgICBjbGFzcyBQbHVnaW5QYWNr
YWdlOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxQbHVnaW5QYWNrYWdlPiwgUGx1Z2lu
UGFja2FnZUhhc2gsIFBsdWdpblBhY2thZ2VIYXNoVHJhaXRzPiBQbHVnaW5TZXQ7CiAKQEAgLTc5
LDcgKzcyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgVmVjdG9yPFN0
cmluZz4gZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHBsdWdpbkRpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EaXJlY3Rvcmllczsg
fQogCi0gICAgICAgIFN0cmluZyBNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikgY29uc3Q7CisgICAgICAgIFN0cmluZyBNSU1FVHlwZUZvckV4dGVuc2lvbihTdHJp
bmdWaWV3IGV4dGVuc2lvbikgY29uc3Q7CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01F
VEFEQVRBX0NBQ0hFKQogICAgICAgICBzdGF0aWMgYm9vbCBpc1BlcnNpc3RlbnRNZXRhZGF0YUNh
Y2hlRW5hYmxlZCgpOwogICAgICAgICBzdGF0aWMgdm9pZCBzZXRQZXJzaXN0ZW50TWV0YWRhdGFD
YWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwpAQCAtMTA4LDEwICsxMDIsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCB0aW1lX3Q+IG1fcGx1Z2luUGF0
aHNXaXRoVGltZXM7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2Fn
ZT4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9wcmVmZXJyZWRQbHVnaW5zOwogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCi0gICAgICAgIGJvb2wgbV9wZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZUlzTG9hZGVkOworICAgICAgICBib29sIG1fcGVyc2lzdGVudE1l
dGFkYXRhQ2FjaGVJc0xvYWRlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmlu
ZGV4IGMyNjVlMDgzZTFmN2M5YWZjODNiYzhlMDFlOGY0NGVlZjdhYjUzYjkuLjdmMzhiYmE5ODY0
OWY0OGU3OWRjNmRkOWM5M2RmNjUwZTU4M2QyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5jcHAKQEAgLTI1LDIxICsyNSwxNCBAQAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGll
bnQuaCIKIAotI2luY2x1ZGUgIldlYkVsZW1lbnRQcm9wZXJ0eUJhZy5oIgotI2luY2x1ZGUgIldl
YkxvY2FsaXphYmxlU3RyaW5ncy5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9y
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUlu
ZGljYXRvci5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogV2ViQ29udGV4dE1lbnVD
bGllbnQ6OldlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKIHsKQEAgLTU1LDIyICs0OCwyMyBAQCB2b2lkIFdlYkNvbnRleHRNZW51
Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKICAgICBtX3dlYlZpZXctPmRvd25s
b2FkVVJMKHVybCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhH
b29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKLSAgICBzZWFy
Y2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgU3RyaW5nIGVuY29kZWQgPSBlbmNvZGVX
aXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7Ci0gICAgZW5jb2RlZC5yZXBsYWNl
KCIlMjAiX3MsICIrIl9zKTsKKyAgICBhdXRvIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVybCA9ICJodHRwczovL3d3
dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBlbmNvZGVkICsgIiZpZT1VVEYtOCZvZT1VVEYtOCI7
CisgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7
CisgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIHNlYXJjaFN0cmluZyA9
IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKKyAgICBzZWFyY2hT
dHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAgYXV0byBzZWFyY2hVUkwgPSBVUkwg
eyB7IH0sICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcg
KyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKSB7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihVUkwgeyBVUkwgeyB9LCB1cmwgfSwgeyB9LCBudWxscHRyLCBMb2NrSGlzdG9y
eTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJp
bmcsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB9
CisgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CisgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCku
Y2hhbmdlTG9jYXRpb24oc2VhcmNoVVJMLCB7IH0sIG51bGxwdHIsIFdlYkNvcmU6OkxvY2tIaXN0
b3J5OjpObywgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFdlYkNvcmU6OlJlZmVy
cmVyUG9saWN5OjpFbXB0eVN0cmluZywgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojps
b29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKQordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9v
a1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDYyMjI4MjA0N2YxYTRmZTNi
YTE4ZjAzMWI5NmYzZDMzMDZjNGEzNWQuLjUzOWJlNzc5MzAxMzBjZWRiYjg0Mzg1YTI4NjU5ZThl
MTA0NGY2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEwMTQsNyArMTAx
NCw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QKIAogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgU3RyaW5nIGRlY29kZWRQYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKHVybC5wYXRoKCkpOwotICAgICAgICBtaW1lVHlwZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0
YWxsZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGRlY29kZWRQYXRoLnN1YnN0cmlu
ZyhkZWNvZGVkUGF0aC5yZXZlcnNlRmluZCgnLicpICsgMSkpOworICAgICAgICBtaW1lVHlwZSA9
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9u
KFN0cmluZ1ZpZXcgeyBkZWNvZGVkUGF0aCB9LnN1YnN0cmluZyhkZWNvZGVkUGF0aC5yZXZlcnNl
RmluZCgnLicpICsgMSkpOwogICAgIH0KIAogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzkwOWFj
YTQ1NzIwOTQyMmM3Nzk3ZmFmNjIyNzk1NWJjOTQ2ZWFhOS4uNTFmOTY4NjdjMDA4YmMyMjVjMmM5
MDBjMWZhN2VjOTA1MzY3NjliYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3
aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
LmNwcDogUmVtb3ZlZCB0aGUgdGVzdCBmb3IKKyAgICAgICAgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5k
RnJhZ21lbnQgc2luY2Ugd2UgcmVtb3ZlZCB0aGF0IGZ1bmN0aW9uLgorICAgICAgICBVcGRhdGVk
IGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBmcm9tIFVSTDo6cGFzcy4KKyAgICAgICAgVXBk
YXRlZCBhcmd1bWVudHMgdG8gaXNNYXRjaGluZ0RvbWFpbiB0byBwYXNzIGxpdGVyYWxzIHRoYXQg
Y2FuIGJlIGNvbnZlcnRlZAorICAgICAgICB0byBTdHJpbmdWaWV3IHJhdGhlciB0aGFuIEFTQ0lJ
TGl0ZXJhbCwgd2hpY2ggU3RyaW5nVmlldyBkb2Vzbid0IHlldCBzdXBwb3J0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6IFVwZGF0ZWQgZm9yIHJlbmFtZSBv
ZiBVUkw6OnBhc3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tSZWxhdGl2ZVVSTCk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tV
UkxEaWZmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxh
dGl2ZVVSTERpZmZlcmVuY2VzKTogRGl0dG8uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
VXNlclBhc3N3b3JkKTogRGl0dG8uCisKIDIwMjAtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQnVpbGQgd2l0aCBVQ2hhciBhcyBjaGFyMTZf
dCBldmVuIGluIGJ1aWxkcyB0aGF0IHVzZSBBcHBsZSdzIGludGVybmFsIFNESwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKaW5kZXggOTM3YjlmOTQwYmY5MTEzZmNlMzcyM2ZhZjBj
NWU1YmY2YjFjODdkZS4uNmJmMjc1YTUxOGQ0N2EwZTJmMjE3OTRhMDc4ZDYxOWNlN2M1MWZkMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRF
U1RfRihXVEZfVVJMLCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKICAgICBFWFBFQ1RfVFJVRSgh
IWt1cmwucG9ydCgpKTsKICAgICBFWFBFQ1RfRVEoODA4MCwga3VybC5wb3J0KCkudmFsdWUoKSk7
CiAgICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUiKSwga3VybC51c2VyKCkpOwotICAgIEVY
UEVDVF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3N3b3JkKCkpOwogICAgIEVYUEVDVF9FUShTdHJp
bmcoIi9pbmRleC5odG1sIiksIGt1cmwucGF0aCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCJp
bmRleC5odG1sIiksIGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgRVhQRUNUX0VRKFN0
cmluZygidmFyPXZhbCIpLCBrdXJsLnF1ZXJ5KCkpOwpAQCAtMjYxLDU3ICsyNjEsNiBAQCBURVNU
X0YoV1RGX1VSTCwgRXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcikKICAgICB9CiB9CiAK
LVRFU1RfRihXVEZfVVJMLCBFcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCkKLXsKLSAgICBz
dHJ1Y3QgVGVzdENhc2UgewotICAgICAgICBjb25zdCBjaGFyKiB1cmwxOwotICAgICAgICBjb25z
dCBjaGFyKiB1cmwyOwotICAgICAgICBib29sIGV4cGVjdGVkOwotICAgIH0gY2FzZXNbXSA9IHsK
LSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0
cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vI2hhc2giLCAiaHR0cDovL2V4YW1w
bGUuY29tLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
L3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRw
Oi8vZXhhbXBsZS5jb20vcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4
YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tL290aGVycGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvI2hh
c2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MC9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20v
cGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIs
IHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9vdGhlcnBhdGgiLCAiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL25vdC1leGFt
cGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsIGZhbHNlfSwKLSAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0s
Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbTo4MS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIs
ICJodHRwOi8vZXhhbXBsZS5jb206ODEiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tOjgxL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9
LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9l
eGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
OjgxL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9
LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4
YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2Zp
bGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsi
ZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0
bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5Iiwg
ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3Bh
dGgvdG8vZmlsZS5odG1sP3F1ZXJ5I2hhc2giLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIs
IHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9vdGhlcl9maWxlLmh0bWwiLCAiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgv
dG8vb3RoZXIvZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0s
Ci0gICAgICAgIHsiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8v
NzZPLyIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzYwLzc2MC83NjAv
IiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbSIsICJmaWxlOi8vZXhhbXBs
ZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImZp
bGU6Ly9leGFtcGxlLmNvbSIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20v
P3F1ZXJ5IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDov
L2V4YW1wbGUuY29tLz9xdWVyeSNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0s
Ci0gICAgfTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgdGVzdCA6IGNhc2VzKSB7Ci0gICAgICAg
IFVSTCB1cmwxID0gY3JlYXRlVVJMKHRlc3QudXJsMSk7Ci0gICAgICAgIFVSTCB1cmwyID0gY3Jl
YXRlVVJMKHRlc3QudXJsMik7Ci0gICAgICAgIEVYUEVDVF9FUSh0ZXN0LmV4cGVjdGVkLCBlcXVh
bElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCh1cmwxLCB1cmwyKSkKLSAgICAgICAgICAgIDw8ICJU
ZXN0IGZhaWxlZCBmb3IgIiA8PCB0ZXN0LnVybDEgPDwgIiB2cy4gIiA8PCB0ZXN0LnVybDI7Ci0g
ICAgfQotfQotCiBURVNUX0YoV1RGX1VSTCwgUHJvdG9jb2xJc0luSFRUUEZhbWlseSkKIHsKICAg
ICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkpOwpAQCAtMzc2
LDIyICszMjUsMjIgQEAgVEVTVF9GKFdURl9VUkwsIEhvc3RJc01hdGNoaW5nRG9tYWluKQogCiAg
ICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVY
UEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBF
Q1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RSVUUo
dXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfVFJVRSh1
cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfVFJV
RSh1cmwuaXNNYXRjaGluZ0RvbWFpbigib3JnIikpOworICAgIEVYUEVDVF9UUlVFKHVybC5pc01h
dGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIikpOworICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsKIAotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNN
YXRjaGluZ0RvbWFpbigicmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdE
b21haW4oIi5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4o
Ind3LndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21h
aW4oImh0dHA6Ly93d3cud2Via2l0Lm9yZyJfcykpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNN
YXRjaGluZ0RvbWFpbigicmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9t
YWluKCIub3JnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3cu
d2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0
dHA6Ly93d3cud2Via2l0Lm9yZyIpKTsKIAogICAgIHVybCA9IGNyZWF0ZVVSTCgiZmlsZTovLy93
d3cud2Via2l0Lm9yZyIpOwogCiAgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4o
U3RyaW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5
U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJf
cykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyJf
cykpOwotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5v
cmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsK
IAogICAgIFVSTCBlbXB0eVVSTDsKICAgICBFWFBFQ1RfRkFMU0UoZW1wdHlVUkwuaXNNYXRjaGlu
Z0RvbWFpbihTdHJpbmcgeyB9KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
UGFyc2VyLmNwcAppbmRleCAxMDM5ZTU0YjFhZWI3YzI2MWY1YTJhYzM5MjhlMTE5ODczYjM2Y2M4
Li4wOGEzYTllOTg4M2QwNjhiY2MzZWI1ZGYxNTFlNjBmNzFiNDA3YzlkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVk
UGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90
b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1
cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNz
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQ
RUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRp
YyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTFN0cmluCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9j
b2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJs
LnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygp
KSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVD
VF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBF
eHBlY3RlZFBhcnRzJiBwYQogICAgIAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnByb3Rv
Y29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIs
IHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFz
c3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkp
KTsKICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNzcs
NyArMTc3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICAKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5w
b3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJs
LnBhdGgoKSkpOwpAQCAtNDYyLDE5ICs0NjIsMTkgQEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIEJh
c2ljKQogICAgIGNoZWNrVVJMKCJodHRwOi8vOkBob3N0IiwgeyJodHRwIiwgIiIsICIiLCAiaG9z
dCIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hvc3QvIn0pOwogfQogCi1zdGF0aWMgdm9pZCB0
ZXN0VXNlclBhc3MoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkZWNvZGVkLCBj
b25zdCBTdHJpbmcmIGVuY29kZWQpCitzdGF0aWMgdm9pZCB0ZXN0VXNlclBhc3N3b3JkKGNvbnN0
IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZGVjb2RlZCwgY29uc3QgU3RyaW5nJiBlbmNv
ZGVkKQogewogICAgIFVSTCB1c2VyVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwOi8vIiwgdmFs
dWUsICJAZXhhbXBsZS5jb20vIikpOwogICAgIFVSTCBwYXNzVVJMKFVSTCgpLCBtYWtlU3RyaW5n
KCJodHRwOi8vdXNlcjoiLCB2YWx1ZSwgIkBleGFtcGxlLmNvbS8iKSk7CiAgICAgRVhQRUNUX0VR
KGVuY29kZWQsIHVzZXJVUkwuZW5jb2RlZFVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKGVuY29kZWQs
IHBhc3NVUkwuZW5jb2RlZFBhc3MoKSk7CisgICAgRVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwu
ZW5jb2RlZFBhc3N3b3JkKCkpOwogICAgIEVYUEVDVF9FUShkZWNvZGVkLCB1c2VyVVJMLnVzZXIo
KSk7Ci0gICAgRVhQRUNUX0VRKGRlY29kZWQsIHBhc3NVUkwucGFzcygpKTsKKyAgICBFWFBFQ1Rf
RVEoZGVjb2RlZCwgcGFzc1VSTC5wYXNzd29yZCgpKTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFVz
ZXJQYXNzKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKK3N0YXRp
YyB2b2lkIHRlc3RVc2VyUGFzc3dvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGVkKQogewotICAgIHRlc3RVc2VyUGFzcyh2YWx1ZSwgdmFsdWUsIGVuY29kZWQpOwor
ICAgIHRlc3RVc2VyUGFzc3dvcmQodmFsdWUsIHZhbHVlLCBlbmNvZGVkKTsKIH0KIAogVEVTVF9G
KFdURl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQpAQCAtNDgzLDIwICs0ODMsMjAgQEAgVEVTVF9G
KFdURl9VUkxQYXJzZXIsIENyZWRlbnRpYWxzKQogICAgIGF1dG8gaW52YWxpZFN1cnJvZ2F0ZSA9
IHV0ZjE2U3RyaW5nPDM+KHsweEQ4MDAsICdBJywgJ1wwJ30pOwogICAgIGF1dG8gcmVwbGFjZW1l
bnRBID0gdXRmMTZTdHJpbmc8Mz4oezB4RkZGRCwgJ0EnLCAnXDAnfSk7CiAKLSAgICB0ZXN0VXNl
clBhc3MoImEiLCAiYSIpOwotICAgIHRlc3RVc2VyUGFzcygiJSIsICIlIik7Ci0gICAgdGVzdFVz
ZXJQYXNzKCIlMjUiLCAiJSIsICIlMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUyNTI1IiwgIiUy
NSIsICIlMjUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJUZYIiwgIiVGWCIpOwotICAgIHRlc3RV
c2VyUGFzcygiJTAwIiwgU3RyaW5nOjpmcm9tVVRGOCgiXDAiLCAxKSwgIiUwMCIpOwotICAgIHRl
c3RVc2VyUGFzcygiJUYlMjUiLCAiJUYlIiwgIiVGJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIl
WCUyNSIsICIlWCUiLCAiJVglMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUlMjUiLCAiJSUiLCAi
JSUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygi8J+SqSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIl
QTkiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiXwn5KpIiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIl
QTkiKTsKLSAgICB0ZXN0VXNlclBhc3ModmFsaWRTdXJyb2dhdGUsICIlRjAlOTAlODUlOTUiKTsK
LSAgICB0ZXN0VXNlclBhc3MocmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwotICAgIHRlc3RV
c2VyUGFzcyhpbnZhbGlkU3Vycm9nYXRlLCByZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7Cisg
ICAgdGVzdFVzZXJQYXNzd29yZCgiYSIsICJhIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJSIs
ICIlIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTI1IiwgIiUiLCAiJTI1Iik7CisgICAgdGVz
dFVzZXJQYXNzd29yZCgiJTI1MjUiLCAiJTI1IiwgIiUyNTI1Iik7CisgICAgdGVzdFVzZXJQYXNz
d29yZCgiJUZYIiwgIiVGWCIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUwMCIsIFN0cmluZzo6
ZnJvbVVURjgoIlwwIiwgMSksICIlMDAiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlRiUyNSIs
ICIlRiUiLCAiJUYlMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlWCUyNSIsICIlWCUiLCAi
JVglMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKKyAg
ICB0ZXN0VXNlclBhc3N3b3JkKCLwn5KpIiwgIiVDMyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIpOwor
ICAgIHRlc3RVc2VyUGFzc3dvcmQoIiXwn5KpIiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTki
KTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKHZhbGlkU3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1Iik7
CisgICAgdGVzdFVzZXJQYXNzd29yZChyZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CisgICAg
dGVzdFVzZXJQYXNzd29yZChpbnZhbGlkU3Vycm9nYXRlLCByZXBsYWNlbWVudEEsICIlRUYlQkYl
QkRBIik7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBQYXJzZVJlbGF0aXZlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNv
ZGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4
dEVuY29kaW5nLmNwcAppbmRleCBhMjY4MTZkYTE0OTFmNmUzYjIwNTdjNjZhN2RjYTQ1OWQxMzYx
NGQzLi5lMjYxNzkzMzQyNTIyNDNiYTVmMTQxODBmNzIyNGViNzc1NGRjYTFmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5n
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4
dEVuY29kaW5nLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwog
ICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dv
cmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTEx
OCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdAogICAgIGF1dG8gdXJsID0gVVJM
KFVSTCh7IH0sIGJhc2VVUkxTdHJpbmcpLCB1cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1
cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVP
cigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOWRlYjMwN2Y4NmI1MDIxOGMyNWFhMWU0YTIx
NTkyOTY3ZmI1YjQzZi4uZjVmZGIyNzQ5N2YwZmFkZTE3MmMxZmEwZDAxMWIxYjlhMWRkZDEzYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQt
MjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRv
IHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvdXJsL3VybC1zZXR0ZXJzLWV4cGVjdGVkLnR4dDogVXBkYXRlZCBleHBlY3RlZCBy
ZXN1bHRzIGZvciBwcm9ncmVzc2lvbiBpbgorICAgICAgICBjb3JyZWN0IGJlaGF2aW9yIHdoZW4g
cG9ydCBudW1iZXJzIGFyZSA+NjU1MzUuIEkgZGlkbid0IG9yaWdpbmFsbHkgaW50ZW5kIHRvIG1h
a2UgdGhpcyBpbXByb3ZlbWVudCwKKyAgICAgICAgYnV0IGl0IGZlbGwgb3V0IG5hdHVyYWxseSBm
cm9tIHRoZSByZWZhY3RvcmluZyBjaGFuZ2VzLgorCiAyMDIwLTA0LTIyICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGRvbS9ldmVudHMv
RXZlbnQtZGlzcGF0Y2gtcmVkaXNwYXRjaC5odG1sIGZyb20gdXBzdHJlYW0gV1BUCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC91cmwt
c2V0dGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3VybC91cmwtc2V0dGVycy1leHBlY3RlZC50eHQKaW5kZXggMTE4NzBiOTg3ZTY2
ZjQzMzZhYTAwYjVkY2QxNWNjODAyZGM2MTMxZC4uNzllYjExN2I5OTFkNDU3MWQxNjQzMGI2NDQ0
ZWVlZThjNWQwOGZlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy91cmwvdXJsLXNldHRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL3VybC1zZXR0ZXJzLWV4cGVj
dGVkLnR4dApAQCAtMjgyLDkgKzI4Miw5IEBAIFBBU1MgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8v
ZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo4MDgwKzInIEFueXRoCiBQQVNT
IFVSTDogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5j
b206NjU1MzUnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzIAogUEFTUyA8YT46IFNl
dHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM1
JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2VycyAKIFBBU1MgPGFyZWE+OiBTZXR0aW5n
IDxodHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNScgUG9y
dCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMgCi1GQUlMIFVSTDogU2V0dGluZyA8aHR0cDov
L2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzYnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvci4gSG9zdG5hbWUg
aXMgc3RpbGwgc2V0LCB0aG91Z2guIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vZXhh
bXBsZS5jb20vcGF0aCIgYnV0IGdvdCAiaHR0cDovL2V4YW1wbGUubmV0L3BhdGgiCi1GQUlMIDxh
PjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206
NjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBh
biBlcnJvci4gSG9zdG5hbWUgaXMgc3RpbGwgc2V0LCB0aG91Z2guIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIgYnV0IGdvdCAiaHR0cDovL2V4YW1wbGUu
Y29tOjY1NTM2L3BhdGgiCi1GQUlMIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0
L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0
IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvci4gSG9zdG5hbWUgaXMgc3RpbGwgc2V0
LCB0aG91Z2guIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIgYnV0IGdvdCAiaHR0cDovL2V4YW1wbGUuY29tOjY1NTM2L3BhdGgiCitQQVNTIFVSTDogU2V0
dGluZyA8aHR0cDovL2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzYn
IFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJv
ci4gSG9zdG5hbWUgaXMgc3RpbGwgc2V0LCB0aG91Z2guIAorUEFTUyA8YT46IFNldHRpbmcgPGh0
dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51
bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3Ru
YW1lIGlzIHN0aWxsIHNldCwgdGhvdWdoLiAKK1BBU1MgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8v
ZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBudW1iZXJz
IGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0bmFtZSBp
cyBzdGlsbCBzZXQsIHRob3VnaC4gCiBQQVNTIFVSTDogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUu
bmV0Lz4uaG9zdCA9ICdbZ29vZ2xlLmNvbV0nIEJyb2tlbiBJUHY2IAogRkFJTCA8YT46IFNldHRp
bmcgPGh0dHA6Ly9leGFtcGxlLm5ldC8+Lmhvc3QgPSAnW2dvb2dsZS5jb21dJyBCcm9rZW4gSVB2
NiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUubmV0LyIgYnV0IGdvdCAi
aHR0cDovL1tnb29nbGUuY29tXS8iCiBGQUlMIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1w
bGUubmV0Lz4uaG9zdCA9ICdbZ29vZ2xlLmNvbV0nIEJyb2tlbiBJUHY2IGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJodHRwOi8vZXhhbXBsZS5uZXQvIiBidXQgZ290ICJodHRwOi8vW2dvb2dsZS5j
b21dLyIKQEAgLTQ1OSwxMiArNDU5LDEyIEBAIFBBU1MgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8v
ZXhhbXBsZS5uZXQvcGF0aD4ucG9ydCA9ICc4MDgwKzInIEFueXRoaW5nIG90aGVyIHRoCiBQQVNT
IFVSTDogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0L3BhdGg+LnBvcnQgPSAnNjU1MzUnIFBv
cnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzIAogUEFTUyA8YT46IFNldHRpbmcgPGh0dHA6
Ly9leGFtcGxlLm5ldC9wYXRoPi5wb3J0ID0gJzY1NTM1JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJp
dCBpbnRlZ2VycyAKIFBBU1MgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQvcGF0
aD4ucG9ydCA9ICc2NTUzNScgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMgCi1GQUlM
IFVSTDogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUz
NicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVy
cm9yIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRo
IiBidXQgZ290ICJodHRwOi8vZXhhbXBsZS5uZXQ6MC9wYXRoIgotRkFJTCA8YT46IFNldHRpbmcg
PGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdvdCAiaHR0
cDovL2V4YW1wbGUubmV0OjAvcGF0aCIKLUZBSUwgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8vZXhh
bXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJp
dCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxl
Lm5ldDowL3BhdGgiCi1GQUlMIFVSTDogU2V0dGluZyA8bm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5l
dDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVn
ZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAibm9u
LXNwZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgIm5vbi1zcGVjaWFsOi8v
ZXhhbXBsZS5uZXQ6MC9wYXRoIgotRkFJTCA8YT46IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhh
bXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJp
dCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIm5vbi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJub24tc3Bl
Y2lhbDovL2V4YW1wbGUubmV0OjAvcGF0aCIKLUZBSUwgPGFyZWE+OiBTZXR0aW5nIDxub24tc3Bl
Y2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJz
IGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJub24tc3BlY2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdv
dCAibm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5ldDowL3BhdGgiCitQQVNTIFVSTDogU2V0dGluZyA8
aHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJz
IGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIAorUEFTUyA8YT46
IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBv
cnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAK
K1BBU1MgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0
ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcg
aXMgYW4gZXJyb3IgCitQQVNTIFVSTDogU2V0dGluZyA8bm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5l
dDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVn
ZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAKK1BBU1MgPGE+OiBTZXR0aW5nIDxub24tc3Bl
Y2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJz
IGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIAorUEFTUyA8YXJl
YT46IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0g
JzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMg
YW4gZXJyb3IgCiBQQVNTIFVSTDogU2V0dGluZyA8ZmlsZTovL3Rlc3QvPi5wb3J0ID0gJzEyJyAK
IFBBU1MgPGE+OiBTZXR0aW5nIDxmaWxlOi8vdGVzdC8+LnBvcnQgPSAnMTInIAogUEFTUyA8YXJl
YT46IFNldHRpbmcgPGZpbGU6Ly90ZXN0Lz4ucG9ydCA9ICcxMicgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397413</attachid>
            <date>2020-04-23 18:40:06 -0700</date>
            <delta_ts>2020-04-24 09:30:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200423184004.patch</filename>
            <type>text/plain</type>
            <size>222614</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBhYzAwNzZkMGNhN2E0YjlmMDQ3Mzc0
ZDI1MGNjMDA2MTJkODQ4YmQuLjZiMWZmM2RiZTc4NDVhMWEyMjY2YzE0NzNlZTMwNGIwYmRkNzhm
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSk6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25zdCk6IEFkZGVkIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0aGUgY2FsbCBzaXRl
IGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4KKworICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0aW9ucyBhYm92ZS4K
KyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0aGUgZmluZCBmdW5j
dGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgdGVtcGxh
dGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludCk6IERpdHRv
LgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMjMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIENNQUtFX0JJTkFSWV9ESVIgc2hvdWxkIGFs
d2F5cyBiZSBhIFBSSVZBVEUgaW5jbHVkZSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhOWU0NTlj
MjVjOTg3YjI2NzUxYzdjN2NjYjJjODkxZTAzMTYyYjNhLi4wMDNiNzA1ZDUzZGMwODgwYjU4OWJk
OGQ5MjU5NTgxNDBlNTY2ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAxIEBACisyMDIwLTA0
LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0
byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6bWF0Y2hVUkxzKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxscyB0byBoYXNRdWVyeS4KKworICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAq
IE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZpZXIpOiBVc2UgaGFzQ3Jl
ZGVudGlhbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVlvdVR1YmVVUkwpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpxdWVyeUtleXNBbmRWYWx1ZXMpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6
IFVzZSBhdXRvIHNpbmNlIFVSTCBwaWVjZXMgYXJlCisgICAgICAgIG5vdyByZXR1cm5lZCBhcyBT
dHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5
b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgVXNlIFN0cmluZ1ZpZXcgYW5kIG1h
a2VTdHJpbmcgcmF0aGVyIHRoYW4gU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b3VyY2VOYW1lKTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCBj
b25zdCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVUkwpOiBVc2Ugc2V0SG9zdEFu
ZFBvcnQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmspOiBVcGRhdGUgc2luY2UKKyAgICAgICAg
ZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgU3RyaW5nVmlldy4KKworICAgICAgICAqIGRvbS9U
cmVlU2NvcGUuY3BwOiBBZGRlZCBhIGNvbW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENv
bXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4gQWxzbyBnb3QgcmlkIG9mIHNvbWUgc3RyYW5n
ZQorICAgICAgICB1c2Ugb2YgQXRvbVN0cmluZyB0aGF0IHdhcyBub3QgbmVjZXNzYXJ5IGFuZCB1
c2VkIFdURk1vdmUgbW9yZS4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IFVwZGF0
ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4K
KworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSBj
b25zdCk6CisgICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwg
YW5kIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmcgZm9yIG5hbWUgYW5kIGV4
dGVuc2lvbiB2YWx1ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZSk6IFVwZGF0ZSBzaW5j
ZSBsYXN0UGF0aENvbXBvbmVudAorICAgICAgICByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAg
ICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6IFVwZGF0ZSBzaW5jZQor
ICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBodG1sL1VSTFV0aWxzLmg6IENoYW5nZWQgbWFueSBmdW5jdGlvbnMgdG8gdGFrZSBhIFN0
cmluZ1ZpZXcsIGNoYW5nZWQKKyAgICAgICAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgdG8gY2Fs
bCB0b1N0cmluZywgc2luY2UgdGhlIHVuZGVybHlpbmcgVVJMCisgICAgICAgIGZ1bmN0aW9uIG5v
dyByZXR1cm5zIGEgU3RyaW5nVmlldy4gVXBkYXRlZCBuYW1lcyBzaW5jZSAicGFzcyIgaXMgbm93
CisgICAgICAgICJwYXNzd29yZCIuCisgICAgICAgIChXZWJDb3JlOjpjb3VudEFTQ0lJRGlnaXRz
KTogQWRkZWQuIFJlcGxhY2VzIHVudXN1YWwgZnVuY3Rpb24KKyAgICAgICAgbmFtZWQgcGFyc2VQ
b3J0RnJvbVN0cmluZ1Bvc2l0aW9uIGJlY2F1c2Ugd2UgY2FuIHVzZSBTdHJpbmdWaWV3IG5vdwor
ICAgICAgICBhbmQgc28gZG9uJ3QgbmVlZCBzdWNoIGFuIHVudXN1YWwgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdCk6IFVzZSBoYXNDcmVk
ZW50aWFscy4KKyAgICAgICAgQWxzbyByZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZiBBU0NJSUxp
dGVyYWwgdGhhdCBodXJ0cyBwZXJmb3JtYW5jZQorICAgICAgICBhIHRpbnkgYml0LgorICAgICAg
ICAoV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nIGNvbnN0KTogVXNl
IG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAg
ICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwpOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKTogVXBkYXRlIHNp
bmNlIHF1ZXJ5IHJldHVybnMKKyAgICAgICAgU3RyaW5nVmlldy4KKworICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KTogVXNlIGVxdWFsUmVzcGVjdGluZ051bGxpdHkgb24KKyAgICAgICAgZnJh
Z21lbnQgaWRlbnRpZmllcnMgdG8gcHJlc2VydmUgYmVoYXZpb3IsIHNpbmNlIGF0IHRoaXMgdGlt
ZQorICAgICAgICBTdHJpbmdWaWV3ID09IFN0cmluZ1ZpZXcgZG9lcyBub3QgcmVzcGVjdCBudWxs
aXR5LCBidXQgU3RyaW5nID09IFN0cmluZyBkb2VzLgorCisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKTogVXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGguCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFuaWZlc3RQYXRoKTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlTWFuaWZlc3QpOiBVc2UgU3RyaW5nVmlldy4KKworICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24gY29uc3QpOiBVcGRhdGUgc2luY2UKKyAgICAg
ICAgZnJhZ21lbnRJZGVudGlmZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJZGVudGlmaWVyRnJvbVJlcXVlc3RV
UkwpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsKTogVXBkYXRlZCBsb2cgbWVz
c2FnZS4KKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKTogVXBkYXRlZCBmb3IgVVJMOjpwYXNzd29yZCBuYW1l
IGNoYW5nZQorICAgICAgICBhbmQgdG8gdXNlIHRoZSBuZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JG
cmFnbWVudElkZW50aWZpZXIgcmF0aGVyIHRoYW4gdGhlCisgICAgICAgIG9sZCBlcXVhbElnbm9y
aW5nUXVlcnlBbmRGcmFnbWVudC4KKworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmhyZWYgY29uc3QpOiBVc2UgcmVtb3ZlQ3JlZGVudGlh
bHMuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxpbmVk
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTogVXNlIGFuIEFT
Q0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZWFyY2ggY29uc3QpOiBV
c2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0
aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVy
U2lnbi4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlVUlu
dDE2LgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOiBDb2Rpbmcg
c3R5bGUgdHdlYWtzLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9u
SWZOZWNlc3NhcnkpOgorICAgICAgICBVc2UgY29udGFpbnMgaW5zdGVhZCBvZiByZXZlcnNlRmlu
ZCB0byBjaGVjayBmb3IgYSBwZXJpb2QgaW4gdGhlIGZpbGVuYW1lLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmxvYWQpOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IGlzIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50ZXJu
YWxQcm90b2NvbCk6IFVwZGF0ZWQgdG8gdXNlIG1ha2VTdHJpbmcgc2luY2UKKyAgICAgICAgc2V0
UHJvdG9jb2wgdGFrZXMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFtZWQgbV9wYXNzIHRvIG1fcGFzc3dvcmQK
KyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVhZCBvZiBwYXNzLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxzKTogVXNlIHJlbW92ZUNy
ZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVS
TENvbm5lY3Rpb24pOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkCisgICAgICAgIG5hbWUgY2hhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IFVw
ZGF0ZWQgZm9yIG1fcGFzc3dvcmQgYW5kCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlcy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2Vk
QXV0aGVudGljYXRpb24pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUHJveHlTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUHJveHlTZXR0
aW5nczo6c2V0VXNlclBhc3MpOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByb3h5VXJsKTogVXNlIGhhc0NyZWRlbnRpYWxzLCB1
cGRhdGVkIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxQcm94
eVNldHRpbmdzOjpwYXNzd29yZCBjb25zdCk6IFVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKTogVXBkYXRlZCBmb3IKKyAgICAgICAgbV9wYXNzd29yZCBuYW1l
IGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDcmVkZW50aWFs
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZCBhbmQKKyAgICAgICAgcGFzc3dvcmQgbmFtZSBj
aGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQg
bmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5k
UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhh
bmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjcmVhdGVTb3VwVVJJIGNvbnN0KTogVXBkYXRlZCBmb3Ig
cGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1VS
TFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cFVSSVRvVVJMKTogVXBkYXRlZCBmb3Ig
c2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTCk6IFVwZGF0ZWQgc2luY2Ug
bGFzdFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3Jl
OjpmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZSk6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWls
ZGVyU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3Jl
YXRlRmlsdGVyT3BlcmF0aW9ucyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVu
dGlmaWVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJM
b2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25z
dCk6IFN0cmVhbWxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhu
YW1lIGNvbnN0KTogVXNlIGFuIEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckxvY2F0aW9uOjpzZWFyY2ggY29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFy
ay4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkpOgorICAgICAgICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFt
ZSBjaGFuZ2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9wT3JpZ2luVVJMKTogU2lt
cGxpZmllZCBjb2RlIHRvIHNldCBwb3J0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luVVJMKTogRGl0dG8uCisK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4K
KwogMjAyMC0wNC0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIHRoZSBzdG9yYWdlIG9mIERpc3BsYXlJRCBmcm9tIENocm9tZSB0byBQYWdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDRkZjI1MmYxMmVlZWU3MWM4Yjc0ZjVlNWU4NjlhYzE1Zjc2MTc1ZWUuLjAw
MGMyYmIwYjlhODkwYzExMjBhYWMyNTAxMWQ4MWU3NGFkNmI5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmlu
Z3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24pOiBVc2UgaGFzQ3Jl
ZGVudGlhbHMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQ
U1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIFJlbW92ZSB1c2Ugb2YgQVNDSUlMaXRl
cmFsIGZvciBzZXRQcm90b2NvbC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOiBVcGRhdGVkCisgICAgICAgIGZvciBwYXNzd29y
ZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpOZXR3b3JrRGF0YVRhc2tTb3VwKTogVXBkYXRlZCBmb3IKKyAgICAg
ICAgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a1NvdXA6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RT
UG9saWN5U2V0dGluZyBjb25zdCk6CisgICAgICAgIFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCBy
YXRoZXIgdGhhbiBob3N0c0FyZUVxdWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQcm90b2NvbFVwZ3JhZGUgY29uc3QpOgorICAgICAgICBS
ZWZhY3RvcmVkIHRvIHVzZSB8fCB0byBtYXRjaCB0aGUgZnVuY3Rpb24gYWJvdmUuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6Omhvc3QgY29uc3Qp
OiBSZW1vdmVkIHZhbGlkaXR5IGNoZWNrOyBXVEY6OlVSTDo6aG9zdAorICAgICAgICByZXR1cm5z
IG51bGwgaWYgdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAoQVBJOjpVUkw6OnByb3RvY29s
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChBUEk6OlVSTDo6cGF0aCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoQVBJOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50IGNvbnN0KTogRGl0dG8uIEFsc28g
YWRkZWQgdG9TdHJpbmcKKyAgICAgICAgc2luY2UgV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IG5vdyByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZp
bmlzaCk6IFVzZSBoYXNGcmFnbWVudElkZW50aWZpZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayk6CisgICAgICAgIFJlZmFjdG9yZWQg
YSBiaXQgYW5kIHVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoIGFuZAorICAgICAgICB1cGRh
dGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6cGF0aEV4dGVuc2lvbik6IFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQKKyAg
ICAgICAgcmV0dXJucyBhIFN0cmluZ1ZpZXcuIFJlZmFjdG9yZWQgYSBsaXR0bGUuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAg
VXNlIHRydW5jYXRlZEZvclVzZUFzQmFzZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgVXNlICE9IHRvIGNv
bXBhcmUgaG9zdHMsIHJhdGhlciB0aGFuIGhvc3RzQXJlRXF1YWwuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6IERpdHRvLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCk6CisgICAgICAgIFVz
ZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAgICAgRG9uJ3Qg
dXNlIEFTQ0lJTGl0ZXJhbCBmb3IgYXJndW1lbnQgdG8gc2V0UHJvdG9jb2wuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3Jp
Z2lucyk6CisgICAgICAgIFVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoLCBhbHNvIHJlZmFj
dG9yZWQgYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQpOiBV
cGRhdGVkIHNpbmNlCisgICAgICAgIGZyYWdtZW50SWRlbnRpZmllciByZXR1cm5zIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2Vh
cmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBh
IGJpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgbGFzdFBhdGhDb21wb25lbnQg
cmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKIDIwMjAtMDQtMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQm91bmNlIGRpc3BsYXlXYXNSZWZyZXNoZWQo
KSB2aWEgRXZlbnREaXNwYXRjaGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTgy
ZGY5NzZmYjI2ZTk5MzQ3Mjg2ODcyNjQxNWJkYjZhOTc1ZTE4MS4uZWE1ZTAyNjNkMDVkMDhmMDQ5
Njg1MGU2ZjE3MjdlMzk4NzQ3YjY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIwLTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJz
dHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChzaG91bGRUcnlBcHBMaW5rKTogQ29tcGFyZSBob3N0cyB3aXRoID09IHJhdGhlciB0aGFu
IHVzaW5nIGhvc3RzQXJlRXF1YWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTp3aXRoUmVs
YXRpdmVVUkxQYXJ0OmFuZE1JTUVUeXBlOl0pOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0IHRha2VzIGEgU3RyaW5nVmlldy4gQWxzbyB1c2UgUmV0YWluUHRy
CisgICAgICAgIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgY2FsbCB0byByZWxlYXNlLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dl
Yl9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZFR5cGU6aW1hZ2VNSU1F
VHlwZTpdKToKKyAgICAgICAgVXBkYXRlZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCB0
YWtlcyBhIFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24KKyAgICAgICAgZGlyZWN0bHkgZnJvbSBO
U1N0cmluZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3Ry
aW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0
aW9uQ29udHJvbGxlcl0pOiBVcGRhdGUKKyAgICAgICAgc2luY2UgcHJvdG9jb2xJcyB0YWtlcyBh
IFN0cmluZ1ZpZXcuIE5vIGNvbnZlcnNpb24gZGlyZWN0bHkgZnJvbQorICAgICAgICBOU1N0cmlu
ZyB0byBTdHJpbmdWaWV3LCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgdXNlIGEgU3RyaW5nLgor
CiAyMDIwLTA0LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgSmVzdXMgQ2FsbGluZyBhcHAgbmVlZHMgbW9yZSBXZWJTUUwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwppbmRleCA4YWZiMzE1YWRkZjM4NGExYTQ0OGYzODg2ZDk1MjY1Njdj
YjU0NmQ0Li40NDE1MzhmOWMzYmJhMWRjODMyMTMzZTA2ZWQxMzQ0OGFiMGVlMWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDQtMjIgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJp
bmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFz
ZSk6IE1vdmVkIGluaXRpYWxpemF0aW9uIG9mCisgICAgICAgIG1fcGVyc2lzdGVudE1ldGFkYXRh
Q2FjaGVJc0xvYWRlZCB0byB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbiBjb25zdCk6IFRha2UgU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKTogVXNl
IFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6IENoYW5n
ZWQgTUlNRVR5cGVGb3JFeHRlbnNpb24gdG8gdGFrZQorICAgICAgICBhIFN0cmluZ1ZpZXcuIFRv
b2sgb3V0IHNvbWUgdW5uZWVkZWQgZGVjbGFyYXRpb25zLiBJbml0aWFsaXplZAorICAgICAgICBt
X3BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlSXNMb2FkZWQgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5p
dGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZSk6IFVz
ZSBTdHJpbmdWaWV3IGEgbGl0dGxlIG1vcmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6
c2VhcmNoV2l0aEdvb2dsZSk6IFN0cmVhbWxpbmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBhIGJpdC4K
KyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkpOiBBZGRl
ZCAidXNpbmcgbmFtZXNwYWNlIFdlYkNvcmUiLgorCiAyMDIwLTA0LTIwICBSb3NzIEtpcnNsaW5n
ICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDbGFzc2VzIG1hcmtlZCBmaW5h
bCBzaG91bGQgbm90IHVzZSBwcm90ZWN0ZWQgYWNjZXNzIHNwZWNpZmllcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggNjEw
ZDFjNDY4YmIyNDBiOGMzOTI3OTU1ODI3NThkYmRkMjhmZjU1Ni4uODEyZmE0Y2Y3MDY4YmM4MmFj
NWEzNTUxNDAzODE1MGFjMmY4YTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI2ICs0MiwxNyBAQAogCiBu
YW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwot
dHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7Ci0KLXN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8vIENvcGllcyB0aGUg
c291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFj
dGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2Ug
ZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3Ry
aW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQu
Ci1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3Qp
CisvLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0
aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgorLy8gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZl
ciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGluIHRo
ZQorLy8gc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1p
bmF0ZSB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorc3RhdGljIHZvaWQgY29weUFTQ0lJKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0aW5hdGlvbikKIHsKLSAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAg
ICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
OworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICBjb25zdCBVQ2hhciogc3JjID0gc3Ry
aW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAg
ICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7CisgICAgICAgIGF1dG8g
c291cmNlID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgIGRlc3RpbmF0aW9uW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc291cmNlW2ldKTsKICAgICB9
CiB9CiAKQEAgLTgzLDE2ICs3NCwxMyBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAKIFVSTDo6
VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4
dEVuY29kaW5nKiBlbmNvZGluZykKIHsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBi
YXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgKnRoaXMg
PSBVUkxQYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKS5yZXN1bHQoKTsKIH0KIAotc3Rh
dGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKK3N0YXRpYyBib29sIHNob3VsZFRy
aW1Gcm9tVVJMKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICAvLyBCcm93c2VycyBpZ25vcmUgbGVh
ZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sCi0gICAgLy8gY2hhcmFjdGVycyBm
cm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNoYXIgaGVyZQotICAgIC8v
IHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250cm9sIGNoYXJhY3RlcnMu
Ci0gICAgcmV0dXJuIGMgPD0gJyAnOworICAgIC8vIElnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdo
aXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1cm4gY2hhcmFjdGVyIDw9
ICcgJzsKIH0KIAogVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKQEAgLTEwMiw0OCArOTAs
NDMgQEAgVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1TdHJpbmcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CitTdHJpbmdWaWV3IFVS
TDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAogewogICAgIGlmICghaGFzUGF0aCgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICB1bnNpZ25l
ZCBlbmQgPSBtX3BhdGhFbmQgLSAxOwogICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKICAg
ICAgICAgLS1lbmQ7CiAKICAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgn
LycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faG9zdEVu
ZCArIG1fcG9ydExlbmd0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoc3Rh
cnQgPCBwYXRoU3RhcnQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICArK3N0YXJ0OwogCi0g
ICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKKyAg
ICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFy
dCArIDEpOwogfQogCiBTdHJpbmdWaWV3IFVSTDo6cHJvdG9jb2woKSBjb25zdAogeworICAgIGlm
ICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1ZpZXcg
VVJMOjpob3N0KCkgY29uc3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7CiAgICAgcmV0dXJuIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOwog
fQogCiBPcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
cG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sg
PSBmYWxzZTsKLSAgICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJh
Y3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVs
c2UKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFy
YWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAg
aWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKKyAgICBy
ZXR1cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VVSW50MTYoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEpKSA6IFdURjo6bnVsbG9wdDsK
IH0KIAogU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdApAQCAtMTU1LDk0ICsxMzgsMTAw
IEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cHJvdG9j
b2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1
YnN0cmluZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOworICAgIGlmICghaGFzQ3JlZGVu
dGlhbHMoKSkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRoU3RhcnQo
KSk7CiAKLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAg
ICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5y
ZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9y
VHJhaWxpbmdBdFNpZ24pOwotICAgIH0KKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fdXNlclN0YXJ0KSwKKyAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAt
IGhvc3RTdGFydCgpKQorICAgICk7Cit9CiAKLSAgICByZXR1cm4gcmVzdWx0Oworc3RhdGljIE9w
dGlvbmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNp
Z25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChpbmRleCArIDMgPiBsZW5n
dGggfHwgaW5wdXRbaW5kZXhdICE9ICclJykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBhdXRvIGRpZ2l0MSA9IGlucHV0W2luZGV4ICsgMV07CisgICAgYXV0byBkaWdpdDIgPSBp
bnB1dFtpbmRleCArIDJdOworICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGRpZ2l0MSkgfHwgIWlz
QVNDSUlIZXhEaWdpdChkaWdpdDIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiB0b0FTQ0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwogfQogCiBzdGF0aWMgU3Ry
aW5nIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyBpbnB1dCkK
IHsKLSAgICBhdXRvIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7Ci0gICAgaWYgKCFpbnB1
dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgVmVjdG9yPExDaGFy
PiBwZXJjZW50RGVjb2RlZDsKLSAgICBwZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGlucHV0TGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5wdXRMZW5n
dGg7ICsraSkgewotICAgICAgICBpZiAoaW5wdXRbaV0gPT0gJyUnCi0gICAgICAgICAgICAmJiBp
bnB1dExlbmd0aCA+IDIKLSAgICAgICAgICAgICYmIGkgPCBpbnB1dExlbmd0aCAtIDIKLSAgICAg
ICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pCi0gICAgICAgICAgICAmJiBp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgcGVyY2VudERlY29k
ZWQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kg
KyAyXSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2UKKyAgICBBU1NFUlQo
aW5wdXQuaXNBbGxBU0NJSSgpKTsKKworICAgIGF1dG8gbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7
CisgICAgaWYgKGxlbmd0aCA8IDMgfHwgIWlucHV0LmNvbnRhaW5zKCclJykpCisgICAgICAgIHJl
dHVybiBpbnB1dC50b1N0cmluZygpOworCisgICAgVmVjdG9yPExDaGFyLCA1MTI+IHBlcmNlbnRE
ZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAgICAgaWYg
KGF1dG8gZGVjb2RlZENoYXJhY3RlciA9IGRlY29kZUVzY2FwZVNlcXVlbmNlKGlucHV0LCBpLCBs
ZW5ndGgpKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQoKmRl
Y29kZWRDaGFyYWN0ZXIpOworICAgICAgICAgICAgaSArPSAzOworICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAg
ICAgICAgICAgICsraTsKKyAgICAgICAgfQogICAgIH0KKworICAgIC8vIEZJWE1FOiBJcyBVVEYt
OCBhbHdheXMgdGhlIGNvcnJlY3QgZW5jb2Rpbmc/CisgICAgLy8gRklYTUU6IFRoaXMgcmV0dXJu
cyBhIG51bGwgc3RyaW5nIHdoZW4gd2UgZW5jb3VudGVyIGFuIGludmFsaWQgVVRGLTggc2VxdWVu
Y2UuIElzIHRoYXQgT0s/CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29k
ZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQogCiBTdHJpbmcgVVJMOjp1c2Vy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAt
IG1fdXNlclN0YXJ0KSk7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJz
ZWRVUkwoZW5jb2RlZFVzZXIoKSk7CiB9CiAKLVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAorU3Ry
aW5nIFVSTDo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1f
dXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7CisgICAgcmV0
dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoZW5jb2RlZFBhc3N3b3JkKCkp
OwogfQogCi1TdHJpbmcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6
ZW5jb2RlZFVzZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91
c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKKyAgICByZXR1cm4gU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFy
dCk7CiB9CiAKLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK1N0cmluZ1ZpZXcgVVJM
OjplbmNvZGVkUGFzc3dvcmQoKSBjb25zdAogewogICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1f
dXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3Jk
RW5kIC0gbV91c2VyRW5kIC0gMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7CiB9
CiAKLVN0cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CitTdHJpbmdWaWV3IFVS
TDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICBpZiAoIWhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gbV9zdHJp
bmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxKTsKLX0KKyAgICAgICAgcmV0dXJuIHsgfTsKIAot
Ym9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSAhPSBtX3F1ZXJ5RW5kOworICAgIHJldHVybiBT
dHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwogfQogCi1TdHJp
bmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAorVVJMIFVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxhc3RT
bGFzaCk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxh
c3RTbGFzaCkpOwogfQogCiAjaWYgIVVTRShDRikKIAogU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAogewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFpc0xvY2FsRmlsZSgpKQorICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRV
UkwoU3RyaW5nVmlldyhwYXRoKCkpKTsKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChwYXRoKCkpOwogfQogCiAjZW5kaWYKIAotI2lmZGVmIE5ERUJVRworI2lm
ICFBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dv
b2QoU3RyaW5nVmlldykKIHsKQEAgLTMxNCw3ICszMDMsNyBAQCBib29sIGlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQogCiBib29sIFVS
TDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKLSAgICBhc3NlcnRQ
cm90b2NvbElzR29vZChTdHJpbmdWaWV3IHsgcHJvdG9jb2wgfSk7CisgICAgYXNzZXJ0UHJvdG9j
b2xJc0dvb2QocHJvdG9jb2wpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQi
IGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZh
bGlkLgogICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hv
dWxkIGJlIHVzZWQgaW5zdGVhZC4gCkBAIC0zNDksNzMgKzMzOCw2NSBAQCBib29sIFVSTDo6cHJv
dG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1TdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CitTdHJpbmdWaWV3IFVSTDo6cXVlcnkoKSBjb25z
dAogewogICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0
cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCisgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1
ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBj
b25zdAogewotICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7
Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhwb3J0RW5kLCBtX3Bh
dGhFbmQgLSBwb3J0RW5kKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0
KCksIG1fcGF0aEVuZCAtIHBhdGhTdGFydCgpKTsKIH0KIAotYm9vbCBVUkw6OnNldFByb3RvY29s
KGNvbnN0IFN0cmluZyYgcykKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChTdHJpbmdWaWV3IG5ld1By
b3RvY29sKQogewogICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBldmVyeXRoaW5nIGFmdGVy
IHRoZSBmaXJzdCAnOicuCi0gICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0aW9uID0gcy5maW5kKCc6
Jyk7Ci0gICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9z
aXRpb24pOwotICAgIGF1dG8gY2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmlj
YWxpemVTY2hlbWUobmV3UHJvdG9jb2wpOwotICAgIGlmICghY2Fub25pY2FsaXplZCkKKyAgICBh
dXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5ld1Byb3Rv
Y29sLmZpbmQoJzonKSk7CisgICAgYXV0byBuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQgPSBVUkxQ
YXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sUHJlZml4LnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSk7CisgICAgaWYgKCFuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgIjoiLCBtX3N0cmluZykp
OwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgcGFyc2UobWFrZVN0
cmluZygqbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkLCAnOicsIG1fc3RyaW5nKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICgobV9wYXNzd29yZEVuZCAhPSBtX3VzZXJT
dGFydCB8fCBwb3J0KCkpICYmICpjYW5vbmljYWxpemVkID09ICJmaWxlIikKKyAgICBpZiAoKG1f
cGFzc3dvcmRFbmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqbmV3UHJvdG9jb2xDYW5v
bmljYWxpemVkID09ICJmaWxlIikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoaXNM
b2NhbEZpbGUoKSAmJiBob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcu
c3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlm
IChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUko
c3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7
Ci19Ci0gICAgCiAvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBi
eSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KIC8vIHRoZSBvdXRwdXQgYnVmZmVyLiBU
aGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KIC8vIFJldHVybiB2YWx1ZSBv
ZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVuZEVuY29k
ZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRp
YyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlciwg
U3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBo
b2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCiAgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRo
YW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFp
bmx5IE9LLgogICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsK
LSAgICAKLSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwg
aXNBbGxBU0NJSShzdHJpbmcpKSB7CisKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5h
bWVCdWZmZXJMZW5ndGggfHwgc3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBhcHBlbmQo
YnVmZmVyLCBzdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAg
ICBVQ2hhciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CiAgICAgVUVycm9y
Q29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFp
bHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwogICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0Nv
bnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21h
aW5OYW1lVHJhbnNjb2RlcigpLAogICAgICAgICBzdHJpbmcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCksIHN0cmluZy5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3RuYW1lQnVmZmVyTGVuZ3Ro
LCAmcHJvY2Vzc2luZ0RldGFpbHMsICZlcnJvcik7Ci0gICAgCisKICAgICBpZiAoVV9TVUNDRVNT
KGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CiAgICAgICAgIGJ1ZmZlci5h
cHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQyOCwxMDEgKzQwOSw4NiBAQCB1bnNpZ25lZCBVUkw6Omhvc3RTdGFy
dCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1f
cGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKIH0KIAotdm9pZCBVUkw6OnNldEhvc3Qo
Y29uc3QgU3RyaW5nJiBzKQordW5zaWduZWQgVVJMOjpjcmVkZW50aWFsc0VuZCgpIGNvbnN0Cit7
CisgICAgLy8gSW5jbHVkZSAnQCcgdG9vIGlmIHdlIGhhdmUgaXQuCisgICAgdW5zaWduZWQgZW5k
ID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tl
bmRdID09ICdAJykKKyAgICAgICAgZW5kICs9IDE7CisgICAgcmV0dXJuIGVuZDsKK30KKwordm9p
ZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQogewogICAgIGlmICghbV9pc1ZhbGlk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsK
LSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICBpZiAobmV3SG9zdC5jb250YWlu
cygnOicpKQogICAgICAgICByZXR1cm47CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5h
bWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBzKSkK
KyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5k
RW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQo
KSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5h
bWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
bV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogCi0gICAgVVJMUGFyc2VyIHBhcnNlcihi
dWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGJv
b2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKyAg
ICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KGhv
c3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwKKyAgICAg
ICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6
ZSgpKSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCkK
KyAgICApKTsKIH0KIAotdm9pZCBVUkw6OnJlbW92ZVBvcnQoKQotewotICAgIGlmICghbV9wb3J0
TGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwgU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBh
cnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hvcnQgaSkK
K3ZvaWQgVVJMOjpzZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAgIGlmICgh
bV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNvbG9uTmVlZGVkID0gIW1f
cG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hv
c3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6
IiA6ICIiKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlSG9zdEFuZFBvcnQoKQotewotICAgIGlm
ICghbV9pc1ZhbGlkKQorICAgIGlmICghcG9ydCkgeworICAgICAgICByZW1vdmUobV9ob3N0RW5k
LCBtX3BvcnRMZW5ndGgpOwogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFob3N0KCkuaXNFbXB0
eSgpKQotICAgICAgICBzZXRIb3N0KHsgfSk7Ci0gICAgcmVtb3ZlUG9ydCgpOworICAgIH0KKwor
ICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV9ob3N0RW5kKSwKKyAgICAgICAgJzonLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
KnBvcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcocGF0aFN0YXJ0
KCkpCisgICAgKSk7CiB9CiAKLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcm
IGhvc3RBbmRQb3J0KQordm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFu
ZFBvcnQpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZ1ZpZXcgaG9zdE5hbWUoaG9zdEFuZFBvcnQpOwotICAgIFN0cmluZ1ZpZXcgcG9ydDsKLSAg
ICAKKyAgICBhdXRvIGhvc3ROYW1lID0gaG9zdEFuZFBvcnQ7CisgICAgU3RyaW5nVmlldyBwb3J0
U3RyaW5nOwogICAgIGF1dG8gY29sb25JbmRleCA9IGhvc3ROYW1lLmZpbmQoJzonKTsKICAgICBp
ZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICBwb3J0ID0gaG9zdE5hbWUuc3Vi
c3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgaW50IHBv
cnRJbnQgPSBwb3J0LnRvSW50U3RyaWN0KG9rKTsKLSAgICAgICAgaWYgKCFvayB8fCBwb3J0SW50
IDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcG9ydFN0cmluZyA9IGhvc3ROYW1l
LnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7CiAgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUu
c3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpOworICAgICAgICBpZiAoIXBhcnNlVUludDE2KHBvcnRT
dHJpbmcpKQorICAgICAgICAgICAgcG9ydFN0cmluZyA9IHsgfTsKICAgICB9Ci0KLSAgICBpZiAo
aG9zdE5hbWUuaXNFbXB0eSgpKQorICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmVtb3ZlKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAotICAgIFVDaGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKKyAg
ICBWZWN0b3I8VUNoYXIsIDUxMj4gZW5jb2RlZEhvc3ROYW1lOwogICAgIGlmICghYXBwZW5kRW5j
b2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgaG9zdE5hbWUpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7Ci0gICAg
aWYgKHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8i
KTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCks
IGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBpZiAoIXBvcnQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiIpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZChwb3J0KTsKLSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwotCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsg
MTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5s
ZWZ0KGhvc3RTdGFydCgpKSwKKyAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwK
KyAgICAgICAgU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5h
bWUuc2l6ZSgpKSwKKyAgICAgICAgcG9ydFN0cmluZy5pc0VtcHR5KCkgPyAiIiA6ICI6IiwKKyAg
ICAgICAgcG9ydFN0cmluZywKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KHBhdGhTdGFydCgpKQorICAgICkpOwogfQogCiBzdGF0aWMgU3RyaW5nIHBlcmNlbnRFbmNvZGVD
aGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2woKnNob3VsZEVuY29kZSkoVUNoYXIp
KQpAQCAtNTUxLDgxICs1MTcsODkgQEAgc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFj
dGVycyhjb25zdCBTdHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFUKICAgICByZXR1
cm4gaW5wdXQ7CiB9CiAKLXZvaWQgVVJMOjpzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikKK3Zv
aWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1faXNWYWxp
ZCkKKyAgICAqdGhpcyA9IFVSTFBhcnNlcihzdHJpbmcpLnJlc3VsdCgpOworfQorCit2b2lkIFVS
TDo6cmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoc3RhcnQgPCBtX3N0cmluZy5sZW5n
dGgoKSk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBtX3N0cmluZy5sZW5ndGgoKSAtIHN0YXJ0KTsK
KworICAgIGF1dG8gc3RyaW5nQWZ0ZXJSZW1vdmFsID0gV1RGTW92ZShtX3N0cmluZyk7CisgICAg
c3RyaW5nQWZ0ZXJSZW1vdmFsLnJlbW92ZShzdGFydCwgbGVuZ3RoKTsKKyAgICBwYXJzZShzdHJp
bmdBZnRlclJlbW92YWwpOworfQogCi0gICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJz
IG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9u
cywKLSAgICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIg
bG9naW4uCit2b2lkIFVSTDo6c2V0VXNlcihTdHJpbmdWaWV3IG5ld1VzZXIpCit7CisgICAgaWYg
KCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNl
ckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVy
Y2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVT
ZXQpOwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
c2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFk
ZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBt
X2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0An
KSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIo
bWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgaWYgKCFuZXdVc2VyLmlzRW1wdHkoKSkgeworICAgICAgICBib29s
IHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisgICAg
ICAgIGJvb2wgbmVlZFNlcGFyYXRvciA9IGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bh
c3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKTsKKyAgICAgICAgcGFyc2UobWFrZVN0
cmluZygKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQp
LAorICAgICAgICAgICAgc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIiwKKyAgICAgICAgICAg
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKG5ld1VzZXIudG9TdHJpbmdXaXRob3V0Q29weWluZygp
LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCksCisgICAgICAgICAgICBuZWVkU2Vw
YXJhdG9yID8gIkAiIDogIiIsCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoZW5kKQorICAgICAgICApKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBSZW1vdmUg
J0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCiAgICAgICAgIGlm
IChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3Ry
aW5nW2VuZF0gPT0gJ0AnKQogICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBh
cmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAh
PSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
ICAgICB9CisgICAgICAgIHJlbW92ZShtX3VzZXJTdGFydCwgZW5kIC0gbV91c2VyU3RhcnQpOwog
ICAgIH0KIH0KIAotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3Zv
aWQgVVJMOjpzZXRQYXNzd29yZChTdHJpbmdWaWV3IG5ld1Bhc3N3b3JkKQogewogICAgIGlmICgh
bV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3
b3JkRW5kOwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBw
ID0gIjoiICsgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGFzc3dvcmQsIFVSTFBhcnNlcjo6aXNJ
blVzZXJJbmZvRW5jb2RlU2V0KSArICJAIjsKLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAgICAgIHAgPSAiLy8i
ICsgcDsKLSAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5n
IHRvIGFkZCBvdXIgb3duLgotICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmlu
Z1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBw
LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9
IHBhcnNlci5yZXN1bHQoKTsKKyAgICBpZiAoIW5ld1Bhc3N3b3JkLmlzRW1wdHkoKSkgeworICAg
ICAgICBib29sIG5lZWRMZWFkaW5nU2xhc2hlcyA9IG1fdXNlckVuZCA9PSBtX3NjaGVtZUVuZCAr
IDE7CisgICAgICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksCisgICAgICAgICAgICBuZWVkTGVhZGluZ1NsYXNoZXMg
PyAiLy86IiA6ICI6IiwKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKG5ld1Bh
c3N3b3JkLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0luVXNlckluZm9F
bmNvZGVTZXQpLAorICAgICAgICAgICAgJ0AnLAorICAgICAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGNyZWRlbnRpYWxzRW5kKCkpCisgICAgICAgICkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5v
ciBwYXNzd29yZC4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCAmJiBlbmQg
IT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9
IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBj
b21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAg
ICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgZW5kID0gbV91c2VyU3Rh
cnQgPT0gbV91c2VyRW5kID8gY3JlZGVudGlhbHNFbmQoKSA6IG1fcGFzc3dvcmRFbmQ7CisgICAg
ICAgIHJlbW92ZShtX3VzZXJFbmQsIGVuZCAtIG1fdXNlckVuZCk7CiAgICAgfQogfQogCit2b2lk
IFVSTDo6cmVtb3ZlQ3JlZGVudGlhbHMoKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAg
ICByZXR1cm47CisKKyAgICByZW1vdmUobV91c2VyU3RhcnQsIGNyZWRlbnRpYWxzRW5kKCkgLSBt
X3VzZXJTdGFydCk7Cit9CisKIHZvaWQgVVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5n
VmlldyBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNhc2Ugd2hlcmUgdGhlIGlkZW50aWZpZXIg
YWxyZWFkeSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvIHdoYXQgd2FzIHBhc3NlZD8KLSAgICAvLyBG
SVhNRTogSXMgaXQgY29ycmVjdCB0byBkbyB0aGlzIHdpdGhvdXQgZW5jb2RpbmcgYW5kIGVzY2Fw
aW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzPwotICAgICp0aGlzID0gVVJMUGFyc2VyIHsgbWFrZVN0
cmluZyhTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5zdWJzdHJpbmcoMCwgbV9xdWVyeUVuZCksICcj
JywgaWRlbnRpZmllcikgfS5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmllcikpOwogfQogCiB2
b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKIHsKLSAgICBpZiAoIW1faXNWYWxp
ZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgIGlmICghbV9pc1ZhbGlkKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVu
Z3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9x
dWVyeUVuZCk7CisKKyAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7CiB9
CiAKIHZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCkBAIC02Mzcs
NjIgKzYxMSw2MiBAQCB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIo
KQogICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7CiB9CiAKLXZvaWQgVVJMOjpzZXRRdWVyeShj
b25zdCBTdHJpbmcmIHF1ZXJ5KQordm9pZCBVUkw6OnNldFF1ZXJ5KFN0cmluZ1ZpZXcgbmV3UXVl
cnkpCiB7CisgICAgLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRoaXMgZnVuY3Rpb24gdG8g
c2V0RW5jb2RlZFF1ZXJ5IGFuZC9vciBjYWxsaW5nIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzIHRo
ZSB3YXkgc2V0UGF0aCBkb2VzLgorICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3Ngor
CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiAn
IycgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4K
LSAgICAvLyBVc3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5jb2RlZCB1c2luZyBkb2N1bWVudCBlbmNv
ZGluZywgbm90IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2ZQotICAgIC8vIGFjY2VzcyB0byB0aGUg
ZG9jdW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8x
NjExNzYKLSAgICBpZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFx
dWVyeS5pc051bGwoKSkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3Ry
aW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQpLCAiPyIsIHF1ZXJ5LCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgcXVlcnksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwotICAgICAgICAqdGhpcyA9
IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQpLAorICAgICAgICAoIW5ld1F1ZXJ5
LnN0YXJ0c1dpdGgoJz8nKSAmJiAhbmV3UXVlcnkuaXNOdWxsKCkpID8gIj8iIDogIiIsCisgICAg
ICAgIG5ld1F1ZXJ5LAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9x
dWVyeUVuZCkKKyAgICApKTsKK30KIAorc3RhdGljIFN0cmluZyBlc2NhcGVQYXRoV2l0aG91dENv
cHlpbmcoU3RyaW5nVmlldyBwYXRoKQoreworICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJT
aWduID0gW10gKFVDaGFyIGNoYXJhY3RlcikgeworICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09
ICc/JyB8fCBjaGFyYWN0ZXIgPT0gJyMnOworICAgIH07CisgICAgcmV0dXJuIHBlcmNlbnRFbmNv
ZGVDaGFyYWN0ZXJzKHBhdGgudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBxdWVzdGlvbk1hcmtP
ck51bWJlclNpZ24pOwogfQogCi12b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMpCit2
b2lkIFVSTDo6c2V0UGF0aChTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBwYXRoID0gczsKLSAgICBpZiAocGF0aC5p
c0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCi0gICAgICAgIHBhdGggPSAiLyIgKyBwYXRoOwor
ICAgIHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
cGF0aFN0YXJ0KCkpLAorICAgICAgICBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/ICIiIDogIi8iLAor
ICAgICAgICBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcocGF0aCksCisgICAgICAgIFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpCisgICAgKSk7Cit9CiAKLSAgICBhdXRv
IHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9Owot
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgs
IHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CitTdHJpbmdWaWV3
IFVSTDo6c3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICByZXR1
cm4gU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChwYXRoRW5kKCkpOwogfQogCi1ib29sIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCitT
dHJpbmdWaWV3IFVSTDo6c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7
Ci0gICAgaWYgKGEubV9xdWVyeUVuZCAhPSBiLm1fcXVlcnlFbmQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB1bnNpZ25lZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVyeUVuZDsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVlcnlMZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGEuc3Ry
aW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3Ry
aW5nOworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9xdWVyeUVuZCk7
CiB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBj
b25zdCBVUkwmIGIpCitib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3Qg
VVJMJiBhLCBjb25zdCBVUkwmIGIpCiB7Ci0gICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVu
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0
aEVuZCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAg
ICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGEuc3RyaW5n
V2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpID09IGIuc3RyaW5nV2l0aG91dEZyYWdtZW50SWRl
bnRpZmllcigpOwogfQogCiBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKQEAgLTcyNSwyNSArNjk5LDEwIEBAIGJvb2wgcHJvdG9jb2xI
b3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwm
IGIpCitib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihTdHJpbmdWaWV3IGRvbWFpbikgY29uc3QK
IHsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25l
ZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBo
b3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0
aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEg
KyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgbW92aW5nIHRoaXMgdG8gYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4gV2ViQ29yZSdzIHBsdWct
aW4gY29kZTsgZG9uJ3Qgd2FudCBwZW9wbGUgdGVtcHRlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9m
IFNlY3VyaXR5T3JpZ2luLgogCi1ib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJp
bmcmIGRvbWFpbikgY29uc3QKLXsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNzYwLDYgKzcxOSw3IEBAIGJvb2wgVVJMOjppc01hdGNoaW5nRG9tYWluKGNv
bnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAogICAgIHJldHVybiBob3N0Lmxlbmd0aCgpID09IGRv
bWFpbi5sZW5ndGgoKSB8fCBob3N0W2hvc3QubGVuZ3RoKCkgLSBkb21haW4ubGVuZ3RoKCkgLSAx
XSA9PSAnLic7CiB9CiAKKy8vIEZJWE1FOiBSZW5hbWUgdGhpcyBzbyBpdCdzIGNsZWFyIHRoYXQg
aXQgZG9lcyB0aGUgYXBwcm9wcmlhdGUgZXNjYXBpbmcgZm9yIFVSTCBxdWVyeSBmaWVsZCB2YWx1
ZXMuCiBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlu
cHV0KQogewogICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFy
c2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwpAQCAtNzgxLDQxICs3NDEsMzQgQEAgdm9pZCBV
Ukw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAogICAgIGNv
cHlBU0NJSShtX3N0cmluZywgYnVmZmVyLmRhdGEoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFN0cmluZ0NsYXNzPgotYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoY29uc3QgU3RyaW5nQ2xhc3Mm
IHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCitzdGF0aWMgYm9vbCBwcm90b2NvbElzSW50ZXJu
YWwoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQogewotICAgIC8vIERv
IHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAg
YXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyB7IHByb3RvY29sIH0pOworICAgIGFzc2Vy
dFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKICAgICBib29sIGlzTGVhZGluZyA9IHRydWU7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgaiA9IDA7IHVybFtpXTsgKytpKSB7Ci0gICAgICAgIC8v
IFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgICAg
IGlmIChpc0xlYWRpbmcgJiYgc2hvdWxkVHJpbUZyb21VUkwodXJsW2ldKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKLQotICAgICAgICAvLyBTa2lw
IGFueSB0YWJzIGFuZCBuZXdsaW5lcy4KLSAgICAgICAgaWYgKHVybFtpXSA9PSAnXHQnIHx8IHVy
bFtpXSA9PSAnXHInIHx8IHVybFtpXSA9PSAnXG4nKQotICAgICAgICAgICAgY29udGludWU7Cisg
ICAgZm9yIChhdXRvIGNvZGVVbml0IDogc3RyaW5nLmNvZGVVbml0cygpKSB7CisgICAgICAgIGlm
IChpc0xlYWRpbmcpIHsKKyAgICAgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFu
ZCBjb250cm9sIGNoYXJhY3RlcnMuCisgICAgICAgICAgICBpZiAoc2hvdWxkVHJpbUZyb21VUkwo
Y29kZVVuaXQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaXNMZWFk
aW5nID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTa2lwIHRhYnMg
YW5kIG5ld2xpbmVzIGV2ZW4gbGF0ZXIgaW4gdGhlIHByb3RvY29sLgorICAgICAgICAgICAgaWYg
KGNvZGVVbml0ID09ICdcdCcgfHwgY29kZVVuaXQgPT0gJ1xyJyB8fCBjb2RlVW5pdCA9PSAnXG4n
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFw
cm90b2NvbFtqXSkKLSAgICAgICAgICAgIHJldHVybiB1cmxbaV0gPT0gJzonOwotICAgICAgICBp
ZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsW2ldLCBwcm90b2NvbFtqXSkpCisgICAg
ICAgIGNoYXIgZXhwZWN0ZWRDaGFyYWN0ZXIgPSAqcHJvdG9jb2wrKzsKKyAgICAgICAgaWYgKCFl
eHBlY3RlZENoYXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiBjb2RlVW5pdCA9PSAnOic7Cisg
ICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjb2RlVW5pdCwgZXhwZWN0ZWRD
aGFyYWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICsrajsKICAg
ICB9Ci0gICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHByb3RvY29sSXMoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCBwcm90b2NvbCk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6cHJvdG9j
b2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgY2hhciogcHJvdG9jb2wpCitib29sIHBy
b3RvY29sSXMoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQogewotICAg
IHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKKyAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgcHJvdG9jb2wpOwogfQogCiAjaWZuZGVm
IE5ERUJVRwpAQCAtODI5LDExICs3ODIsMTggQEAgdm9pZCBVUkw6OnByaW50KCkgY29uc3QKIAog
U3RyaW5nIFVSTDo6c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3QKIHsKLSAgICBVUkwg
cmVmZXJyZXIoKnRoaXMpOwotICAgIHJlZmVycmVyLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIHJl
ZmVycmVyLnNldFBhc3MoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOwotICAgIHJldHVybiByZWZlcnJlci5zdHJpbmcoKTsKKyAgICBpZiAoIW1faXNW
YWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgdW5zaWduZWQgZW5kID0gY3Jl
ZGVudGlhbHNFbmQoKTsKKworICAgIGlmIChtX3VzZXJTdGFydCA9PSBlbmQgJiYgbV9xdWVyeUVu
ZCA9PSBtX3N0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhlbmQsIG1fcXVlcnlFbmQgLSBlbmQpCisgICAgKTsKIH0KIAogYm9vbCBVUkw6OmlzTG9jYWxG
aWxlKCkgY29uc3QKQEAgLTg0NSwxNyArODA1LDEyIEBAIGJvb2wgVVJMOjppc0xvY2FsRmlsZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKIH0KIAotYm9vbCBwcm90b2Nv
bElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKK2Jvb2wgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1
cmwsICJqYXZhc2NyaXB0Iik7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcs
ICJqYXZhc2NyaXB0Iik7CiB9CiAKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmll
dyB1cmwpCi17Ci0gICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2NyaXB0
Iik7Ci19Ci0KLWJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkK
K2Jvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsKICAgICBhdXRv
IGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKICAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0
IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgpAQCAtODY5LDEzICs4MjQsMTMgQEAgYm9vbCBw
cm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQogCiBjb25zdCBVUkwmIGFi
b3V0QmxhbmtVUkwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Js
YW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMPiBzdGF0aWNCbGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIl9zKTsKICAgICByZXR1cm4g
c3RhdGljQmxhbmtVUkw7CiB9CiAKIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAi
YWJvdXQ6c3JjZG9jIik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQWJv
dXRTcmNEb2NVUkwoVVJMKCksICJhYm91dDpzcmNkb2MiX3MpOwogICAgIHJldHVybiBzdGF0aWNB
Ym91dFNyY0RvY1VSTDsKIH0KIApAQCAtOTY0LDcgKzkxOSw2IEBAIGJvb2wgcG9ydEFsbG93ZWQo
Y29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQogICAgICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRp
b25dCiAgICAgICAgIDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICBp
bnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJl
cnMKICAgICB9OwogCiAgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBv
cnQgbGlzdCwgYWxsb3cgaXQuCkBAIC05ODMsMTUgKzkzNywxNSBAQCBib29sIHBvcnRBbGxvd2Vk
KGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG1pbWVUeXBl
RnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpCitTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVS
TChTdHJpbmdWaWV3IGRhdGFVUkwpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1
cmwsICJkYXRhIikpOworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwoZGF0YVVSTCwgImRh
dGEiKSk7CiAKICAgICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRo
ZSBVUkwgaGFzIGEgY29tbWEgZmlyc3QsIGJ1dCBhIHNlbWljb2xvbiBsYXRlcj8KLSAgICAvLyBD
dXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNh
c2UuIE5vdCBzdXJlIHRoYXQncyBjb3JyZWN0LgotICAgIGF1dG8gaW5kZXggPSB1cmwuZmluZCgn
OycsIDUpOworICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2Vt
aWNvbG9uIGluIHRoYXQgY2FzZTsgc2hvdWxkIGFkZCBhIHRlc3QuCisgICAgYXV0byBpbmRleCA9
IGRhdGFVUkwuZmluZCgnOycsIDUpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAg
ICAgaW5kZXggPSB1cmwuZmluZCgnLCcsIDUpOworICAgICAgICBpbmRleCA9IGRhdGFVUkwuZmlu
ZCgnLCcsIDUpOwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICAvLyBGSVhN
RTogVGhlcmUgd2FzIGFuIG9sZCBjb21tZW50IGhlcmUgdGhhdCBtYWRlIGl0IHNvdW5kIGxpa2Ug
dGhpcyBzaG91bGQgYmUgcmV0dXJuaW5nIHRleHQvcGxhaW4uCiAgICAgICAgIC8vIEJ1dCB3ZSBo
YXZlIGJlZW4gcmV0dXJuaW5nIGVtcHR5IHN0cmluZyBoZXJlIGZvciBzb21lIHRpbWUsIHNvIG5v
dCBjaGFuZ2luZyBpdHMgYmVoYXZpb3IgYXQgdGhpcyB0aW1lLgpAQCAtMTAwMCwyNSArOTU0LDQ1
IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlm
IChpbmRleCA9PSA1KQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CiAgICAgQVNTRVJU
KGluZGV4ID49IDUpOwotICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICByZXR1cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwg
aW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCiBTdHJpbmcgVVJMOjpz
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewot
ICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdHJp
bmcoKTsKKyAgICBpZiAobV9zdHJpbmcubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1
cm4gbV9zdHJpbmc7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSwgIi4uLiIsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnJpZ2h0
KGxlbmd0aCAvIDIgLSAyKSk7Cit9CisKK1VSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KFN0cmluZ1ZpZXcgcmVsYXRpdmVQYXJ0KQoreworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VT
dHJpbmcoIndlYmtpdC1mYWtlLXVybDovLyIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwg
Jy8nLCByZWxhdGl2ZVBhcnQpKTsKK30KIAotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0
aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOworVVJM
IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3IHBhdGgpCit7CisgICAg
cmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygKKyAgICAgICAgImZpbGU6Ly8iLAorICAgICAg
ICBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/ICIiIDogIi8iLAorICAgICAgICBlc2NhcGVQYXRoV2l0
aG91dENvcHlpbmcocGF0aCkKKyAgICApKTsKIH0KIAotVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxh
dGl2ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCitTdHJpbmdWaWV3IFVSTDo6cXVl
cnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChVUkwo
KSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAn
LycgKyByZWxhdGl2ZVBhcnQpOworICAgIGlmIChtX3F1ZXJ5RW5kIDw9IG1fcGF0aEVuZCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV9wYXRoRW5kLCBtX3F1ZXJ5RW5kIC0gbV9wYXRoRW5kKTsKIH0KIAotVVJMIFVSTDo6
ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorU3RyaW5n
VmlldyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRoKTsKKyAgICBp
ZiAoIW1faXNWYWxpZCB8fCBtX3N0cmluZy5sZW5ndGgoKSA8PSBtX3F1ZXJ5RW5kKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhtX3F1ZXJ5RW5kKTsKIH0KIAogYm9vbCBVUkw6OmlzQWJvdXRCbGFuaygpIGNvbnN0CkBAIC0x
MDM4LDYgKzEwMTIsNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBVUkwmIHVybCkKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShTT1VQKQor
CiBzdGF0aWMgYm9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1
dG8gY291bnQgPSAwOwpAQCAtMTEyNCwxMSArMTA5OSw5IEBAIHN0YXRpYyBib29sIGlzSVB2NkFk
ZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCiAKIGJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3Ry
aW5nVmlldyBob3N0KQogewotICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKLSAg
ICAgICAgcmV0dXJuIGlzSVB2NEFkZHJlc3MoaG9zdCk7Ci0KLSAgICByZXR1cm4gaXNJUHY2QWRk
cmVzcyhob3N0KTsKKyAgICByZXR1cm4gaG9zdC5jb250YWlucygnOicpID8gaXNJUHY2QWRkcmVz
cyhob3N0KSA6IGlzSVB2NEFkZHJlc3MoaG9zdCk7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93
dGYvVVJMLmgKaW5kZXggOTVhZjRhM2I0N2UwODg3ZjVhMmFlYTAxYTExMzc5YmJiZDExYzZmZi4u
NDJlYzFmYjllYzM3ZWI4MzEzZDY5MzAxOTU3YTQ1MTkwNjEwYjNlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNDcgKzM4LDM5IEBAIE9CSkNf
Q0xBU1MgTlNVUkw7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CisKIGNsYXNzIFRleHRTdHJl
YW07CiAKIGNsYXNzIFVSTFRleHRFbmNvZGluZyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0
b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9OworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgflVSTFRleHRFbmNvZGluZygpIHsgfQogfTsKIAotc3RydWN0IFVSTEhhc2g7Ci0KLWNsYXNz
IFdURl9FWFBPUlRfUFJJVkFURSBVUkwgeworY2xhc3MgVVJMIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBHZW5lcmF0ZXMgYSBVUkwgd2hpY2ggY29udGFp
bnMgYSBudWxsIHN0cmluZy4KICAgICBVUkwoKSB7IGludmFsaWRhdGUoKTsgfQogCi0gICAgZXhw
bGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KKyAgICBleHBsaWNpdCBVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CisgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogICAgIC8vIFJlc29sdmVzIHRoZSByZWxhdGl2ZSBV
Ukwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKICAgICAvLyBVUkxU
ZXh0RW5jb2RpbmcgaXMgdXNlZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJh
c2UgVVJMIGNhbiBiZQotICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJl
bGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVkIGFzCi0gICAgLy8gYWJzb2x1dGUuCi0gICAg
Ly8gRklYTUU6IElmIHRoZSBiYXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVz
IGFuIGludmFsaWQKLSAgICAvLyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0
ZXIgdG8gdHJlYXQgYWxsIGludmFsaWQgYmFzZSBVUkxzCi0gICAgLy8gdGhlIHNhbWUgd2F5IHdl
IHRyZWF0ZSBudWxsIGFuZCBlbXB0eSBiYXNlIFVSTHMuCi0gICAgVVJMKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxw
dHIpOworICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVS
TCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFic29sdXRlLgorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxU
ZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVs
YXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcp
OwogCi0gICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwotCi0gICAg
Ly8gRklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhh
dCBwYXNzaW5nIGEKLSAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZl
cyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlCi0gICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVj
dG9yLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVy
cmVyKCkgY29uc3Q7CiAKICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlm
IHlvdSBuZWVkIHRvIHVzZSBhIFVSTCBvbiBhbm90aGVyCiAgICAgLy8gdGhyZWFkLiBTaW5jZSB0
aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncwog
ICAgIC8vIG5vIG90aGVyIHJlYXNvbiB0byBldmVyIHByZWZlciBpc29sYXRlZENvcHkoKSBvdmVy
IHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFVSTCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc051bGwoKSBjb25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTg5LDEyMiAr
ODEsMTI2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJl
dHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CiAKICAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29u
c3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotICAgIGJvb2wgaXNIaWVyYXJjaGljYWwo
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNv
bnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
ZzsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCi0gICAgU3RyaW5nIHN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25z
dDsKLQotICAgIFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IGhv
c3QoKSBjb25zdDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OwotICAgIFN0
cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygpIGNv
bnN0OwotICAgIFN0cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OwotICAgIFN0cmluZyBsYXN0UGF0aENv
bXBvbmVudCgpIGNvbnN0OwotICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFN0cmluZyBm
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0OworICAgIC8vIFVubGlrZSB1c2VyKCkgYW5kIHBhc3N3b3JkKCksIGVuY29kZWRV
c2VyKCkgYW5kIGVuY29kZWRQYXNzd29yZCgpIGRvbid0IGRlY29kZSBlc2NhcGUgc2VxdWVuY2Vz
LgorICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlwcGluZywg
YmVjYXVzZSBlbmNvZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KKworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFVzZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nVmlldyBlbmNvZGVkUGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZ1ZpZXcgcGF0aCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmdWaWV3IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZ1ZpZXcgcXVlcnkoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nVmlldyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmdWaWV3IHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXJXaXRoTGVh
ZGluZ051bWJlclNpZ24oKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmll
dyBzdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIFN0
cmluZ1ZpZXcgc3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdXNlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJM
IHRydW5jYXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNVc2VybmFtZSgp
IGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKICAgICBib29sIGhhc1F1ZXJ5
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7CiAKLSAg
ICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBkZWNv
ZGUgZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJh
dGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNo
YXJhY3RlcnMuCi0gICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGVu
Y29kZWRQYXNzKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0K
LSAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKyAgICBib29sIGhhc0NyZWRlbnRp
YWxzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3Mg
cHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8gdGVybWluYXRlZCBBU0NJ
SSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBib29sIHBy
b3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdW
aWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0
IGNoYXIqKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0
cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVy
biBwcm90b2NvbElzKCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3Qg
eyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzQWJvdXQo
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBj
b25zdDsKICAgICBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdDsKLSAgICBib29s
IGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNMb2Nh
bEZpbGUoKSBjb25zdDsKICAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KIAotICAgIGJvb2wgaXNBYm91dEJsYW5rKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0Fib3V0U3JjRG9jKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNBYm91dEJsYW5rKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNBYm91dFNyY0RvYygpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWF0Y2hpbmdE
b21haW4oU3RyaW5nVmlldykgY29uc3Q7CiAKLSAgICBib29sIHNldFByb3RvY29sKGNvbnN0IFN0
cmluZyYpOwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBzZXRQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7
Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRQb3J0KE9wdGlvbmFsPHVpbnQxNl90Pik7CiAKICAgICAvLyBJbnB1dCBpcyBs
aWtlICJmb28uY29tIiBvciAiZm9vLmNvbTo4MDAwIi4KLSAgICB2b2lkIHNldEhvc3RBbmRQb3J0
KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVtb3ZlSG9zdEFuZFBvcnQoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRIb3N0QW5kUG9ydChTdHJpbmdWaWV3KTsKIAotICAgIHZv
aWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5n
Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXNlcihTdHJpbmdWaWV3KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXNzd29yZChTdHJpbmdWaWV3KTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVDcmVkZW50aWFscygpOwogCi0gICAgLy8gSWYg
eW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0
aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgoY29uc3QgU3Ry
aW5nJik7CisgICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQ
UyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGggd2lsbCBiZSAiLyIuCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0UGF0aChTdHJpbmdWaWV3KTsKIAogICAgIC8vIFRoZSBxdWVyeSBtYXkg
YmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVk
CiAgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3
aWxsIGxlYXZlIGEgIj8iIGluIHRoZQogICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0
KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCi0gICAgdm9pZCBzZXRR
dWVyeShjb25zdCBTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRRdWVy
eShTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1Zp
ZXcpOwotICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAg
dm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBz
dGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3KTsKIAogICAgIHVu
c2lnbmVkIHBhdGhTdGFydCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsK
ICAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9y
IGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorICAgIG9wZXJhdG9y
IGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIG9wZXJhdG9y
IFN0cmluZ1ZpZXcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogCiAjaWYgVVNFKENGKQot
ICAgIFVSTChDRlVSTFJlZik7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoQ0ZVUkxSZWYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CiAj
ZW5kaWYKIAogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFVSTChOU1VSTCopOwotICAgIG9wZXJh
dG9yIE5TVVJMKigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoTlNVUkwgKik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9yIE5TVVJMICooKSBjb25zdDsKICNlbmRp
ZgorCiAjaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJl
dHVybiBzdHJpbmcoKTsgfQorICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZzsgfQogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwcmludCgp
IGNvbnN0OwogI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwmKTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXIm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciop
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQg
Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwogICAgIHVuc2ln
bmVkIGhvc3RTdGFydCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGNyZWRlbnRpYWxzRW5kKCkgY29u
c3Q7CisgICAgdm9pZCByZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYpOwogICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgZnJpZW5kIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAKQEAgLTIyOSw0OSArMjI1LDI3IEBAIHByaXZh
dGU6CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICog
c2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOwogCi10ZW1wbGF0ZSA8
Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
LXsKLSAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rl
cj4KLWJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCi17Ci0gICAg
YXV0byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICghb3B0aW9u
YWxVUkwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25h
bFVSTCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgot
T3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlv
bmFsPFN0cmluZz4gc3RyaW5nOwotICAgIGRlY29kZXIgPj4gc3RyaW5nOwotICAgIGlmICghc3Ry
aW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCks
IFdURk1vdmUoKnN0cmluZykpOwotfQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYp
OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1
YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0c0FyZUVxdWFsKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVJMJiBh
Ym91dEJsYW5rVVJMKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVJMJiBhYm91dFNyY0Rv
Y1VSTCgpOwogCiAvLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4K
IC8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBV
UkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBp
biB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBh
cnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxp
ZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5
IFVSTC4KKy8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBXVEY6OlVSTCBmdW5j
dGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlk
IGFuZCBwYXJzYWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1
c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2
YWxpZCBieSBXVEY6OlVSTC4KIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwotV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciog
cHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQo
U3RyaW5nVmlldyB1cmwpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRU
UEZhbWlseShjb25zdCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90
b2NvbElzSW5IVFRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIAogV1RGX0VYUE9SVF9QUklWQVRF
IE9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJv
dG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwpAQCAtMjgwLDE0ICsyNTQsNDAg
QEAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJs
YWNrbGlzdCBwb3J0cyB0aGF0IHNob3VsZAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0
ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1ZpZXcgZGF0YVVSTCk7CiAKLVdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7Ci0K
LS8vIEZJWE1FOiBUaGlzIGlzIGEgd3JvbmcgY29uY2VwdCB0byBleHBvc2UsIGRpZmZlcmVudCBw
YXJ0cyBvZiBhIFVSTCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZyBwZXIgdGhlIFVSTCBTdGFuZGFy
ZC4KKy8vIEZJWE1FOiBUaGlzIG5lZWRzIGEgbmV3LCBtb3JlIHNwZWNpZmljIG5hbWUuIFRoZSBn
ZW5lcmFsIHRoaW5nIG5hbWVkIGhlcmUgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LCBz
aW5jZSBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcuCiBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29u
c3QgU3RyaW5nJik7CiAKLS8vIElubGluZXMuCitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47
CisKKy8vIEZ1bmN0aW9uIHRlbXBsYXRlIGFuZCBpbmxpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbnMu
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVS
TCYgdXJsKQoreworICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBkZWNvZGUoZGVjb2Rlcik7CisgICAg
aWYgKCFvcHRpb25hbFVSTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVybCA9IFdURk1v
dmUoKm9wdGlvbmFsVVJMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgRGVjb2Rlcj4gT3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgIGRlY29kZXIgPj4gc3RyaW5nOwor
ICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBVUkwoVVJMKCksIFdURk1vdmUoKnN0cmluZykpOworfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewpAQCAtMzE5LDggKzMxOSwxMCBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQogICAg
IHJldHVybiBhICE9IGIuc3RyaW5nKCk7CiB9CiAKLS8vIElubGluZSB2ZXJzaW9ucyBvZiBzb21l
IG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKLS8vIHdpdGhv
dXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmlu
aXRpb24uCitpbmxpbmUgVVJMOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6
IG1fc3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKK3sKK30KIAogaW5saW5lIGJvb2wgVVJM
Ojppc051bGwoKSBjb25zdAogewpAQCAtMzM5LDE3ICszNDEsMTIgQEAgaW5saW5lIGJvb2wgVVJM
Ojppc1ZhbGlkKCkgY29uc3QKIAogaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICBy
ZXR1cm4gbV9wYXRoRW5kID4gcGF0aFN0YXJ0KCk7CiB9CiAKLWlubGluZSBib29sIFVSTDo6aGFz
VXNlcm5hbWUoKSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNDcmVkZW50aWFscygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0OwotfQotCi1pbmxpbmUgYm9v
bCBVUkw6Omhhc1Bhc3N3b3JkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+
IChtX3VzZXJFbmQgKyAxKTsKKyAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IG1fdXNlclN0YXJ0
OwogfQogCiBpbmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKQEAgLTM1Nyw3ICszNTQs
NyBAQCBpbmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKICAgICByZXR1cm4gbV9xdWVy
eUVuZCA+IG1fcGF0aEVuZDsKIH0KIAotaW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNv
bnN0CitpbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7CiB9
CkBAIC0zODIsMTEgKzM3OSw2IEBAIGlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RT
bGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogfQogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IFVSTCYpOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+Owot
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxVUkw+OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjphYm91dEJsYW5rVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCmlu
ZGV4IDA2YjBhZWM2NGQxMDI1ZDU0M2ZmOWRjM2Q2YTFhN2QyZTYxMGM4NTQuLmZhMDhjOWY4ODM2
NTkyYjZhYzA1M2M3M2ZhODY3ZTVlMDFiYWI3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2NmL0NGVVJMRXh0cmFzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiBjZlVS
TCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpOwogCi0gICAgaWYgKHVybC5oYXNVc2VybmFtZSgpIHx8IHVybC5oYXNQYXNzd29yZCgp
KQorICAgIGlmICh1cmwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAgICAgcmV0dXJuIHByb3RvY29s
SG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJMIH0pOwogCiAgICAgVVJMQ2hhckJ1
ZmZlciBieXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGQxM2JiNmM5MWY5
ZWJjYTMzMGRlNTFkZDA1YzI3ZTA1OTZhY2EyZGIuLmMyNWUwMTVjODYxMDlkZDA1MTljNGY0MjRh
N2FiZTI3ZGM1MjlkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMzUsNiAr
MzUsNyBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc0LDYgKzc1LDExIEBAIGJvb2wg
U3RyaW5nVmlldzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcm
IHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZSgqdGhpcywgcHJlZml4KTsKIH0KIAorYm9vbCBTdHJpbmdWaWV3OjplbmRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGVuZ3RoICYmICgqdGhpcylbbV9s
ZW5ndGggLSAxXSA9PSBjaGFyYWN0ZXI7Cit9CisKIGJvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGgo
Y29uc3QgU3RyaW5nVmlldyYgc3VmZml4KSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6ZW5k
c1dpdGgoKnRoaXMsIHN1ZmZpeCk7CkBAIC0zMDYsNiArMzEyLDM1IEBAIFN0cmluZyBub3JtYWxp
emVkTkZDKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQudW5kZXJseWlu
Z1N0cmluZzsKIH0KIAorLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIG5hbWVkIHBhcnNlTnVtYmVy
PHVpbnQxNl90PiBpbnN0ZWFkPworLy8gRklYTUU6IFNob3VsZCB3ZSByZXBsYWNlIHRoZSB0b0lu
dCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpdGggdGhpcyBzdHlsZT8KK09wdGlvbmFsPHVpbnQxNl90
PiBwYXJzZVVJbnQxNihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBib29sIG9rID0gZmFsc2U7
CisgICAgYXV0byBudW1iZXIgPSB0b0ludGVncmFsVHlwZTx1aW50MTZfdD4oc3RyaW5nLCAmb2sp
OworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IG51bWJlcjsKK30KKworYm9vbCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwg
U3RyaW5nVmlldyBiKQoreworICAgIGlmIChhLm1fY2hhcmFjdGVycyA9PSBiLm1fY2hhcmFjdGVy
cykgeworICAgICAgICBBU1NFUlQoYS5pczhCaXQoKSA9PSBiLmlzOEJpdCgpKTsKKyAgICAgICAg
cmV0dXJuIGEubGVuZ3RoKCkgPT0gYi5sZW5ndGgoKTsKKyAgICB9CisKKyAgICBpZiAoYS5pc0Vt
cHR5KCkgJiYgYi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBhLmlzTnVsbCgpID09IGIuaXNO
dWxsKCk7CisKKyAgICByZXR1cm4gZXF1YWxDb21tb24oYSwgYik7Cit9CisKK2Jvb2wgU3RyaW5n
Vmlldzo6Y29udGFpbnMoY29uc3QgY2hhciogc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBm
aW5kKHN0cmluZykgIT0gbm90Rm91bmQ7Cit9CisKICNpZiBDSEVDS19TVFJJTkdWSUVXX0xJRkVU
SU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291bnQgbWFudWFsbHkgc28gVW5kZXJseWluZ1N0
cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmluZWQgaW4gdGhlIGhlYWRlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmgKaW5kZXggNmNmZWJkYmFiN2VhNDU4ZTFkOTY4MGQxMzE2MTkxNDhmMjE3
OWYwMy4uMDljNzkzNDQ1NjNmZTY3NmIyMjY0NWIxMmIxY2FhYjE0NTFmNGEwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEzNyw4ICsxMzcsNyBAQCBwdWJsaWM6CiAKICAgICBzaXpl
X3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKICAgICBzaXplX3QgZmlu
ZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7Ci0KLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3
LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwogCiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVD
aGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgY29uc3Q7CiAKQEAgLTE1MSw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlu
cyhVQ2hhcikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhDb2RlVW5pdE1hdGNoRnVuY3Rpb24p
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0IHsgcmV0
dXJuIGZpbmQoc3RyaW5nLCAwKSAhPSBub3RGb3VuZDsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNv
bnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKQEAgLTE1
OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRz
V2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsK
IAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29u
c3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAKQEAgLTE3NCw2ICsxNzUsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGJvb2wgZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmll
dyk7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsUmVzcGVjdGluZ051
bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CkBAIC0xOTEsNiArMTkzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCopIHsgfQogICAgIHZv
aWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdWaWV3JikgeyB9CiAjZW5kaWYKKwog
ICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIGNvbnN0IHZvaWQqIG1fY2hhcmFjdGVycyB7IG51bGxw
dHIgfTsKQEAgLTIxMCw2ICsyMTMsOSBAQCBib29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExD
aGFyKiBiKTsKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBTdHJpbmdW
aWV3KTsKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25zdCBjaGFy
Kik7CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsUmVzcGVjdGluZ051bGxpdHkoU3Ry
aW5nVmlldywgU3RyaW5nVmlldyk7Citib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ1Zp
ZXcsIFN0cmluZ1ZpZXcpOworCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29uc3QgY2hhciAoJmxvd2VyY2Fz
ZUxldHRlcnMpW2xlbmd0aF0pOwogdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29uc3QgY2hhciAoJmxv
d2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwogCkBAIC0yMzQsNiArMjQwLDggQEAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBub3JtYWxpemVkTkZDKFN0
cmluZ1ZpZXcpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5vcm1hbGl6ZWRORkMoY29u
c3QgU3RyaW5nJik7CiAKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gcGFy
c2VVSW50MTYoU3RyaW5nVmlldyk7CisKIH0KIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmcuaD4KQEAgLTEwNDMsNiArMTA1MSwxMiBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlu
bGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVgogICAg
IHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKHN0cmluZywg
bG93ZXJjYXNlTGV0dGVycyk7CiB9CiAKK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5
KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQoreworICAgIC8vIEZJWE1FOiBlcXVhbChTdHJp
bmdWaWV3LCBTdHJpbmdWaWV3KSBpZ25vcmVzIG51bGxpdHk7IGNvbnNpZGVyIGNoYW5naW5nIHRv
IGJlIGxpa2Ugb3RoZXIgc3RyaW5nIGNsYXNzZXMgYW5kIHJlc3BlY3RpbmcgaXQuCisgICAgcmV0
dXJuIGVxdWFsKGEsIGIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjph
cHBlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZjEyYWQzNmQxOWU3ZmQ1NGI1
Y2NhMTI2ZjcyNWQwMDA2NDM4NDVmZS4uYWZjOTJmNTc3NjY2MjI5MmYwY2UwNjQ2MjRlNjhmMzg0
NjcyMjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtOTI0LDEwMiArOTI0LDEw
MiBAQCBzdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGNvbnN0IENo
YXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZQogCiBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7
Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ss
IGJhc2UpOwogfQogCiBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1bnNp
Z25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVu
c2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdW5zaWdu
ZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNp
Z25lZCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRf
dCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0b0ludGVncmFs
VHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50NjRfdCBjaGFy
YWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9v
bCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBV
Q2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIExD
aGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3QsIFVD
aGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
dWludDY0X3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0
ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIExD
aGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0
ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wq
IG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIFVD
aGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8
aW50cHRyX3Q+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwogfQogCiBpbnQgY2hhcmFjdGVyc1Rv
SW50KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4o
ZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBV
Q2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50
ZWdyYWxUeXBlPGludCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihk
YXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQ+KGRh
dGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwog
fQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQs
IExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxl
bmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkPihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNp
Z25lZCwgVUNoYXI+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0
YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+
KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwg
b2ssIDEwKTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludDY0
X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3Ro
KSwgb2ssIDEwKTsKIH0KIAogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPGludDY0X3QsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNo
YXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGlu
dDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVu
Z3RoKSwgb2ssIDEwKTsKIH0KIAogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8dWludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChj
b25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJu
IHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9J
bnRQdHIoY29uc3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdCwgTENoYXI+KGRhdGEsIGxlbmd0aE9mQ2hh
cmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50
ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50cHRyX3QgY2hhcmFj
dGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykK
IHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIFVDaGFyPihkYXRhLCBsZW5n
dGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3Rl
cnNBc0ludGVnZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGVudW0gVHJh
aWxpbmdKdW5rUG9saWN5IHsgRGlzYWxsb3dUcmFpbGluZ0p1bmssIEFsbG93VHJhaWxpbmdKdW5r
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
CmluZGV4IGIwZGI1N2E4MzcwY2UwMzAyODY0ZmUwODJiNDNhMjRlYjI4YjlkZjkuLjc4MmIyNjJm
NDg3NDE5MzgyYTc0NTAxMDMyM2UzMzUyMmE3NTY1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC03MiwxMCArNzIsOCBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgbWF0Y2hVUkxzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVVJMJiBjYWNoZWRVUgogICAgIFVSTCBjYWNoZWRSZXF1ZXN0VVJMID0gY2FjaGVkVVJM
OwogCiAgICAgaWYgKG9wdGlvbnMuaWdub3JlU2VhcmNoKSB7Ci0gICAgICAgIGlmIChyZXF1ZXN0
VVJMLmhhc1F1ZXJ5KCkpCi0gICAgICAgICAgICByZXF1ZXN0VVJMLnNldFF1ZXJ5KHsgfSk7Ci0g
ICAgICAgIGlmIChjYWNoZWRSZXF1ZXN0VVJMLmhhc1F1ZXJ5KCkpCi0gICAgICAgICAgICBjYWNo
ZWRSZXF1ZXN0VVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgICAgIHJlcXVlc3RVUkwuc2V0UXVlcnko
eyB9KTsKKyAgICAgICAgY2FjaGVkUmVxdWVzdFVSTC5zZXRRdWVyeSh7IH0pOwogICAgIH0KICAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihyZXF1ZXN0VVJMLCBjYWNo
ZWRSZXF1ZXN0VVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmNwcAppbmRleCAzYTU1MjE4ZmZiZDcwYTBmMTE1NjYxNjBhZjkzOTBlYmJkMTkxZDcz
Li5kZmI3MzNlOTMwMGRhMmFlMWU2OTVlNDEyYzk3MzIwMDhhYzZlMDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0xNjAsOSArMTYwLDEw
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8RXhjZXB0aW9uPiBwcm9jZXNzSW52YWxpZFNpZ25h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjCiBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVl
c3Q6OmluaXRpYWxpemVXaXRoKGNvbnN0IFN0cmluZyYgdXJsLCBJbml0JiYgaW5pdCkKIHsKICAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAvLyBGSVhNRTogVGlnaHRl
biB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyBodHRwczovL3VybC5zcGVjLndo
YXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KKworICAgIC8vIEZJWE1FOiBUaWdodGVuIHRo
ZSBVUkwgcGFyc2luZyBhbGdvcml0aG0gYWNjb3JkaW5nIHRvIGh0dHBzOi8vdXJsLnNwZWMud2hh
dHdnLm9yZy8jY29uY2VwdC11cmwtcGFyc2VyLgogICAgIFVSTCByZXF1ZXN0VVJMID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OkZvcmNlVVRGODo6WWVzKTsKLSAgICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgpIHx8ICFy
ZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkgfHwgIXJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHko
KSkKKyAgICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgpIHx8IHJlcXVlc3RVUkwuaGFzQ3JlZGVu
dGlhbHMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVSTCBpcyBu
b3QgdmFsaWQgb3IgY29udGFpbnMgdXNlciBjcmVkZW50aWFscy4iX3MgfTsKIAogICAgIG1fb3B0
aW9ucy5tb2RlID0gTW9kZTo6Q29yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDYwOWFhOGEyODhmZjM1ODE5ZTY3M2NmNTY3ZGNiNTIw
YzYzYWI0ODkuLjA1ZjQ5Zjg4OTM2ZTA4YmRlMDViZTRlYjY2ZmE5YzE1ODhmY2JjY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTUx
LDcgKzE1MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25z
ZTo6cmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKICAgICBVUkwgcmVxdWVzdFVSTCA9
IGNvbnRleHQuY29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIXJlcXVlc3RVUkwuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJSZWRp
cmVjdGlvbiBVUkwgJyIsIHJlcXVlc3RVUkwuc3RyaW5nKCksICInIGlzIGludmFsaWQiKSB9Owot
ICAgIGlmICghcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBhc3Mo
KS5pc0VtcHR5KCkpCisgICAgaWYgKHJlcXVlc3RVUkwuaGFzQ3JlZGVudGlhbHMoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZGlyZWN0aW9uIFVSTCBjb250YWlu
cyBjcmVkZW50aWFscyJfcyB9OwogICAgIGlmICghUmVzb3VyY2VSZXNwb25zZTo6aXNSZWRpcmVj
dGlvblN0YXR1c0NvZGUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdl
RXJyb3IsIG1ha2VTdHJpbmcoIlN0YXR1cyBjb2RlICIsIHN0YXR1cywgImlzIG5vdCBhIHJlZGly
ZWN0aW9uIHN0YXR1cyBjb2RlIikgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggY2FhZGY4N2IwYjU3
M2UzMTJlOWUzZTAzOWQ2ZGM2YTg4ZmM1OWNjYS4uZTcxMzViZWM2MDNmOWI1M2E5ZDIyYTQ0M2Fm
MzU4MjBmMWNhY2I5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTIyMCwxMyArMjIwLDcgQEAgc3Rh
dGljIGJvb2wgaXNWYWxpZFN0YW5kYXJkaXplZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKFN0cmlu
Z1ZpZXcgaWRlbnRpZmllcikKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LW1ldGhv
ZC1pZC8jdmFsaWRhdGlvbgogc3RhdGljIGJvb2wgaXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhv
ZElkZW50aWZpZXIoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCF1cmwucHJvdG9jb2xJcygi
aHR0cHMiKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCF1cmwudXNlcigpLmlz
RW1wdHkoKSB8fCAhdXJsLnBhc3MoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSAm
JiAhdXJsLmhhc0NyZWRlbnRpYWxzKCk7CiB9CiAKIC8vIEltcGxlbWVudHMgInZhbGlkYXRlIGEg
cGF5bWVudCBtZXRob2QgaWRlbnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggNGU3
YTAyNWU0NzY5NDkwMTE1ZWVmNDllZWMwYTdhZmRlMWVjM2I1My4uYWI0ZDVmYmMxMWY5MmQ5YWFl
NjdhOGE0ZDg4ZmIyZWNhZWRjZWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTEwMywx
OSArMTAzLDE0IEBAIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFj
ZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLXN0YXRp
YyBpbmxpbmUgVVJMIGNyZWF0ZVlvdVR1YmVVUkwoY29uc3QgU3RyaW5nJiB2aWRlb0lELCBjb25z
dCBTdHJpbmcmIHRpbWVJRCkKK3N0YXRpYyBVUkwgY3JlYXRlWW91VHViZVVSTChTdHJpbmdWaWV3
IHZpZGVvSUQsIFN0cmluZ1ZpZXcgdGltZUlEKQogewogICAgIEFTU0VSVCghdmlkZW9JRC5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCh2aWRlb0lEICE9ICIvIik7Ci0gICAgCi0gICAgVVJMIHJlc3Vs
dChVUkwoKSwgInlvdXR1YmU6IiArIHZpZGVvSUQpOwotICAgIGlmICghdGltZUlELmlzRW1wdHko
KSkKLSAgICAgICAgcmVzdWx0LnNldFF1ZXJ5KCJ0PSIgKyB0aW1lSUQpOwotICAgIAotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygieW91dHViZToi
LCB2aWRlb0lELCB0aW1lSUQuaXNFbXB0eSgpID8gIiIgOiAidD0iLCB0aW1lSUQpKTsKIH0KLSAg
ICAKLXN0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5S2V5
c0FuZFZhbHVlcyhjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQorCitzdGF0aWMgWW91VHViZVBs
dWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoU3RyaW5nVmll
dyBxdWVyeVN0cmluZykKIHsKICAgICBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVl
TWFwIHF1ZXJ5RGljdGlvbmFyeTsKICAgICAKQEAgLTE1NSw3ICsxNTAsNyBAQCBzdGF0aWMgWW91
VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29u
c3QgU3RyaW5nJiBxdQogICAgICAgICAvLyBTYXZlIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZS4KICAg
ICAgICAgaWYgKGtleUxlbmd0aCAmJiB2YWx1ZUxlbmd0aCkgewogICAgICAgICAgICAgU3RyaW5n
IGtleSA9IHF1ZXJ5U3RyaW5nLnN1YnN0cmluZyhrZXlMb2NhdGlvbiwga2V5TGVuZ3RoKS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlT
dHJpbmcuc3Vic3RyaW5nKHZhbHVlTG9jYXRpb24sIHZhbHVlTGVuZ3RoKTsKKyAgICAgICAgICAg
IFN0cmluZyB2YWx1ZSA9IHF1ZXJ5U3RyaW5nLnN1YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1
ZUxlbmd0aCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHZhbHVlLnJlcGxhY2UoJysnLCAnICcp
OwogCiAgICAgICAgICAgICBpZiAoIWtleS5pc0VtcHR5KCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkK
QEAgLTIwOSwxNiArMjA0LDE2IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVV
UkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAKICAgICAvLyBT
aG9ydCBVUkwgb2YgdGhlIGZvcm06IGh0dHA6Ly95b3V0dS5iZS92MWQzMDFECiAgICAgaWYgKGlz
WW91VHViZVNob3J0ZW5lZFVSTCkgewotICAgICAgICBTdHJpbmcgdmlkZW9JRCA9IHVybC5sYXN0
UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21w
b25lbnQoKTsKICAgICAgICAgaWYgKHZpZGVvSUQuaXNFbXB0eSgpIHx8IHZpZGVvSUQgPT0gIi8i
KQogICAgICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgICAgICByZXR1cm4gY3JlYXRlWW91VHVi
ZVVSTCh2aWRlb0lELCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1
YmVVUkwodmlkZW9JRCwgeyB9KTsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIHBhdGggPSB1cmwu
cGF0aCgpOwotICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgpOwotICAgIFN0cmluZyBmcmFn
bWVudCA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAKKyAgICBhdXRvIHF1ZXJ5ID0g
dXJsLnF1ZXJ5KCk7CisgICAgYXV0byBmcmFnbWVudCA9IHVybC5mcmFnbWVudElkZW50aWZpZXIo
KTsKKwogICAgIC8vIE9uIHRoZSBZb3VUdWJlIG1vYmlsZSB3ZWIgYXBwLCB0aGUgcGF0aCBhbmQg
cXVlcnkgc3RyaW5nIGFyZSBwdXQgaW50byB0aGUKICAgICAvLyBmcmFnbWVudCBzbyB0aGF0IG9u
ZSB3ZWIgcGFnZSBpcyBvbmx5IGV2ZXIgbG9hZGVkIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzk1NTA2
Mzk+KS4KICAgICBpZiAoaXNZb3VUdWJlTW9iaWxlV2ViQXBwVVJMKSB7CkBAIC0yMjcsNyArMjIy
LDcgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVy
bCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIHBhdGggPSBmcmFnbWVu
dDsKICAgICAgICAgICAgIHF1ZXJ5ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHBhdGggPSBTdHJpbmdWaWV3KGZyYWdtZW50KS5zdWJzdHJpbmcoMCwgbG9j
YXRpb24pOworICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlv
bik7CiAgICAgICAgICAgICBxdWVyeSA9IGZyYWdtZW50LnN1YnN0cmluZyhsb2NhdGlvbiArIDEp
OwogICAgICAgICB9CiAgICAgICAgIGZyYWdtZW50ID0gZW1wdHlTdHJpbmcoKTsKQEAgLTI2MCwx
MCArMjU1LDEwIEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3Qg
VVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cGF0aCwgIi92LyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwg
Ii9lLyIpKSB7Ci0gICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0
aENvbXBvbmVudCgpOwotICAgICAgICBTdHJpbmcgdmlkZW9JRDsKLSAgICAgICAgU3RyaW5nIHBh
dGhBZnRlckZpcnN0QW1wZXJzYW5kOworICAgICAgICBTdHJpbmdWaWV3IHZpZGVvSUQ7CisgICAg
ICAgIFN0cmluZ1ZpZXcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CiAKKyAgICAgICAgYXV0byBs
YXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBzaXpl
X3QgYW1wZXJzYW5kTG9jYXRpb24gPSBsYXN0UGF0aENvbXBvbmVudC5maW5kKCcmJyk7CiAgICAg
ICAgIGlmIChhbXBlcnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8g
U29tZSBVUkxzIHdlIGNhcmUgYWJvdXQgdXNlICYgaW4gcGxhY2Ugb2YgPyBmb3IgdGhlIGZpcnN0
IHF1ZXJ5IHBhcmFtZXRlci4KQEAgLTI3MywxMSArMjY4LDExIEBAIHN0YXRpYyBVUkwgcHJvY2Vz
c0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0
ZW5lZFVSCiAgICAgICAgICAgICB2aWRlb0lEID0gbGFzdFBhdGhDb21wb25lbnQ7CiAKICAgICAg
ICAgaWYgKCF2aWRlb0lELmlzRW1wdHkoKSkgewotICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmly
c3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsKKyAgICAgICAgICAgIG91dFBh
dGhBZnRlckZpcnN0QW1wZXJzYW5kID0gcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQudG9TdHJpbmco
KTsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIGVtcHR5U3Ry
aW5nKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFVSTCgpOwogfQog
CkBAIC0yOTAsMTMgKzI4NSwxMyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5
b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogU3RyaW5nIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCiB7CiAgICAgYm9vbCBpc1lvdVR1YmVTaG9ydGVuZWRV
UkwgPSBmYWxzZTsKLSAgICBTdHJpbmcgcG9zc2libGVNYWxmb3JtZWRRdWVyeTsKLSAgICBVUkwg
eW91VHViZVVSTCA9IHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKHNyY1VSTCwgaXNZb3VUdWJl
U2hvcnRlbmVkVVJMLCBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5KTsKKyAgICBTdHJpbmcgcG9zc2li
bHlNYWxmb3JtZWRRdWVyeTsKKyAgICBVUkwgeW91VHViZVVSTCA9IHByb2Nlc3NBbmRDcmVhdGVZ
b3VUdWJlVVJMKHNyY1VSTCwgaXNZb3VUdWJlU2hvcnRlbmVkVVJMLCBwb3NzaWJseU1hbGZvcm1l
ZFF1ZXJ5KTsKICAgICBpZiAoc3JjVVJMLmlzRW1wdHkoKSB8fCB5b3VUdWJlVVJMLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHNyY1N0cmluZzsKIAogICAgIC8vIFRyYW5zZm9ybSB0aGUgeW91
dHViZVVSTCAoeW91dHViZTpWaWRlb0lEKSB0byBpZnJhbWUgZW1iZWQgdXJsIHdoaWNoIGhhcyB0
aGUgZm9ybWF0OiBodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1ZpZGVvSUQKLSAgICBhdXRv
IHNyY1BhdGggPSBzcmNVUkwucGF0aCgpLnRvU3RyaW5nKCk7CisgICAgYXV0byBzcmNQYXRoID0g
c3JjVVJMLnBhdGgoKTsKICAgICBjb25zdCBTdHJpbmcmIHZpZGVvSUQgPSB5b3VUdWJlVVJMLnN0
cmluZygpLnN1YnN0cmluZyh5b3VUdWJlVVJMLnByb3RvY29sKCkubGVuZ3RoKCkgKyAxKTsKICAg
ICBzaXplX3QgbG9jYXRpb25PZlZpZGVvSURJblBhdGggPSBzcmNQYXRoLmZpbmQodmlkZW9JRCk7
CiAKQEAgLTMwNSw3ICszMDAsNyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5
b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogICAgICAgICBB
U1NFUlQobG9jYXRpb25PZlZpZGVvSURJblBhdGgpOwogICAgIAogICAgICAgICAvLyBGcm9tIHRo
ZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRl
b0lkLgotICAgICAgICBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBzcmNTdHJpbmcuZmlu
ZChzcmNQYXRoLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOworICAgICAg
ICBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmlu
ZChzcmNQYXRoLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwogICAgIH0g
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIp
KSB7CiAgICAgICAgIC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhl
IHBhcnQgYmVmb3JlIC93YXRjaC8jIXY9VmlkZW9JRAogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
bid0IHRoaXMgYmUgQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZT8KQEAgLTMxNSwyMiArMzEwLDIxIEBA
IFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVV
UkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvCiAKICAgICBBU1NFUlQobG9jYXRpb25PZlBhdGhCZWZv
cmVWaWRlb0lEICE9IG5vdEZvdW5kKTsKIAotICAgIGNvbnN0IFN0cmluZyYgc3JjVVJMUHJlZml4
ID0gc3JjU3RyaW5nLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOwot
ICAgIFN0cmluZyBxdWVyeSA9IHNyY1VSTC5xdWVyeSgpOworICAgIGF1dG8gc3JjVVJMUHJlZml4
ID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mUGF0aEJlZm9y
ZVZpZGVvSUQpOworICAgIGF1dG8gcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKKwogICAgIC8vIElm
IHRoZSBVUkwgaGFzIG5vIHF1ZXJ5LCB1c2UgdGhlIHBvc3NpYmx5IG1hbGZvcm1lZCBxdWVyeSB3
ZSBmb3VuZC4KICAgICBpZiAocXVlcnkuaXNFbXB0eSgpKQotICAgICAgICBxdWVyeSA9IHBvc3Np
YmxlTWFsZm9ybWVkUXVlcnk7CisgICAgICAgIHF1ZXJ5ID0gcG9zc2libHlNYWxmb3JtZWRRdWVy
eTsKIAogICAgIC8vIEFwcGVuZCB0aGUgcXVlcnkgc3RyaW5nIGlmIGl0IGlzIHZhbGlkLgotICAg
IFN0cmluZ0J1aWxkZXIgZmluYWxVUkw7Ci0gICAgaWYgKGlzWW91VHViZVNob3J0ZW5lZFVSTCkK
LSAgICAgICAgZmluYWxVUkwuYXBwZW5kTGl0ZXJhbCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbSIp
OwotICAgIGVsc2UKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKHNyY1VSTFByZWZpeCk7Ci0gICAg
ZmluYWxVUkwuYXBwZW5kKCIvZW1iZWQvIiwgdmlkZW9JRCk7Ci0gICAgaWYgKCFxdWVyeS5pc0Vt
cHR5KCkpCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZCgnPycsIHF1ZXJ5KTsKLSAgICByZXR1cm4g
ZmluYWxVUkwudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgaXNZ
b3VUdWJlU2hvcnRlbmVkVVJMID8gImh0dHA6Ly93d3cueW91dHViZS5jb20iIDogc3JjVVJMUHJl
Zml4LAorICAgICAgICAiL2VtYmVkLyIsCisgICAgICAgIHZpZGVvSUQsCisgICAgICAgIHF1ZXJ5
LmlzRW1wdHkoKSA/ICIiIDogIj8iLAorICAgICAgICBxdWVyeQorICAgICk7CiB9CiAgICAgCiBi
b29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNVUkwoY29uc3QgVVJMJiB1cmwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwCmluZGV4IDk5MjZjZWY5NjcxNTUzNjcyZjIzNzk5YmYyZmViZmI1ZWQx
OTBmNzcuLmUyMzc0OTcxODYzZjFkYTcwZDdlOWY5Yzk5NjlkZDZjMDY0ZjUxMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCkBAIC02NCwxNSArNjQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgU3RyaW5nIHJlc291cmNlTmFtZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIG5hbWU7Ci0gICAgbmFtZS5hcHBlbmQodXJsLnBhdGgoKSk7Ci0gICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICBuYW1lLmFwcGVuZCgnLycpOwotICAgIGlmICghdXJsLnF1ZXJ5KCku
aXNOdWxsKCkpIHsKLSAgICAgICAgbmFtZS5hcHBlbmQoJz8nKTsKLSAgICAgICAgbmFtZS5hcHBl
bmQodXJsLnF1ZXJ5KCkpOwotICAgIH0KLSAgICBTdHJpbmcgcmVzdWx0ID0gbmFtZS50b1N0cmlu
ZygpOworICAgIGF1dG8gcGF0aCA9IHVybC5wYXRoKCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtl
U3RyaW5nKAorICAgICAgICBwYXRoLAorICAgICAgICBwYXRoLmlzRW1wdHkoKSA/ICIvIiA6ICIi
LAorICAgICAgICB1cmwucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpCisgICAgKTsKICAg
ICBBU1NFUlQoIXJlc3VsdC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghcmVzdWx0LmNvbnRhaW5z
KCcgJykpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzNWE2
NmJlNTU1YTYzYjQwOGU2ZDhiNWJmYjJjOWQ3MjlhMjRhNDJiLi5jZjZkYzVkYWFlZjM2ODljOWY2
OTk1NzM0YWQ4OTE2MTA0ZWJlMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTk0NCwyNiAr
OTQ0LDI3IEBAIEludFBvaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsaWNrUG9pbnQo
KQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGFu
Y2hvckVsZW1lbnQoKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisKICAg
ICAvLyBSaWdodCBub3csIHdlIGRvIG5vdCBzdXBwb3J0IEFSSUEgbGlua3MgYXMgaW50ZXJuYWwg
bGluayBlbGVtZW50cwogICAgIGlmICghaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBIVE1MQW5jaG9yRWxlbWVudCYgYW5jaG9yID0g
ZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KTsKLSAgICAKLSAgICBVUkwgbGlu
a1VSTCA9IGFuY2hvci5ocmVmKCk7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IGxp
bmtVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgYXV0byYgYW5jaG9yID0gZG93bmNhc3Q8
SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KTsKKworICAgIGF1dG8gbGlua1VSTCA9IGFuY2hv
ci5ocmVmKCk7CisgICAgYXV0byBmcmFnbWVudElkZW50aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50
SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIC8vIGNoZWNrIGlmIFVSTCBpcyB0aGUg
c2FtZSBhcyBjdXJyZW50IFVSTAotICAgIFVSTCBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRv
Y3VtZW50KCkudXJsKCk7CisgICAgYXV0byBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3Vt
ZW50KCkudXJsKCk7CiAgICAgaWYgKCFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGRv
Y3VtZW50VVJMLCBsaW5rVVJMKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAg
Tm9kZSogbGlua2VkTm9kZSA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFn
bWVudElkZW50aWZpZXIpOworCisgICAgYXV0byBsaW5rZWROb2RlID0gbV9yZW5kZXJlci0+ZG9j
dW1lbnQoKS5maW5kQW5jaG9yKGZyYWdtZW50SWRlbnRpZmllci50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOwogICAgIGlmICghbGlua2VkTm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgCisKICAgICAvLyBUaGUgZWxlbWVudCB3ZSBmaW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSwg
c28gZmluZCB0aGUgZmlyc3QgYWNjZXNzaWJsZSBvYmplY3QuCiAgICAgcmV0dXJuIGZpcnN0QWNj
ZXNzaWJsZU9iamVjdEZyb21Ob2RlKGxpbmtlZE5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMTk3MmFlZDkwOWUwOTdhNjViN2VhMWU0YjVmOTNhYmE2OGU5NGUxZS4uZTQ0NTRl
NmQ1Yjc1ZWYwMjE4YmYwMmM5NzJmMTM1ZGNkYjNiZjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0zMjUxLDcgKzMyNTEsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJM
JiB1cmwpCiAKICAgICBtX3VybCA9IG5ld1VSTDsKICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNo
b3VsZElnbm9yZUhvc3QobV91cmwpKQotICAgICAgICBtX3VybC5yZW1vdmVIb3N0QW5kUG9ydCgp
OworICAgICAgICBtX3VybC5zZXRIb3N0QW5kUG9ydCh7IH0pOwogCiAgICAgbV9kb2N1bWVudFVS
SSA9IG1fdXJsLnN0cmluZygpOwogICAgIHVwZGF0ZUJhc2VVUkwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAppbmRleCBlZDM1ZmNkYzZmNDYyMDRjZGFiNzNmNjM0YmY5ZTA1MGUxMWNkNDY3Li4xZmYy
M2UxNjBiOTE4YWIxY2RjNTBlOGMzZjc2MWM4ZDFjYTQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC00NDkxLDcgKzQ0OTEsNyBAQCBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5jaG9yRWxl
bWVudEZvckxpbmsoU3RyaW5nJiBvdXRBbmNob3JOYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGRvY3VtZW50LmJhc2VVUkwoKSkpIHsKLSAgICAgICAg
b3V0QW5jaG9yTmFtZSA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgb3V0QW5j
aG9yTmFtZSA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogICAgICAgICBy
ZXR1cm4gZG9jdW1lbnQuZmluZEFuY2hvcihvdXRBbmNob3JOYW1lKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggMWRhYTg1ODhkZjUzOTBhZjgxMzFlMGRhZjA5N2E4OWZi
NTc3YTU5MS4uMzBlZDlmM2Y2MWY0MDNkYmI5NGU4ZTNlMmY3OWZmODk3ZTE3MmFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTQ0MCw2ICs0NDAsOCBAQCBWZWN0b3I8UmVmUHRyPEVs
ZW1lbnQ+PiBUcmVlU2NvcGU6OmVsZW1lbnRzRnJvbVBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHAp
CiAgICAgcmV0dXJuIGVsZW1lbnRzRnJvbVBvaW50KHAueCgpLCBwLnkoKSk7CiB9CiAKKy8vIEZJ
WE1FOiBXb3VsZCBiZSBuaWNlIHRvIGNoYW5nZSB0aGlzIHRvIHRha2UgYSBTdHJpbmdWaWV3LCBz
aW5jZSB0aGF0J3Mgd2hhdCBjYWxsZXJzIGhhdmUKKy8vIGFuZCB0aGVyZSBpcyBubyBwYXJ0aWN1
bGFyIGFkdmFudGFnZSB0byBhbHJlYWR5IGhhdmluZyBhIFN0cmluZy4KIEVsZW1lbnQqIFRyZWVT
Y29wZTo6ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQppbmRleCAwYzlmOWQwZTg5MDM5NzAwMzEwOTBkYjJiOGYzMGRkZGM0
MmU5ZGQ0Li5mYTYxYzVjNjE5ZTA3NGExYTc1NTU3NzViNWZmNWNmOWMxYzE5NTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQpAQCAtMzI4LDEzICszMjgsMTMgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAg
ICAgaWYgKHJlc291cmNlID09IHVybFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBhdXRvIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6YWx0QXR0cik7CisgICAgICAgIFN0cmluZyBuYW1lID0g
aW1hZ2UuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIp
OwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBuYW1lID0gVVJMKHsg
fSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBu
YW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9T
dHJpbmcoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9
IEF0b21TdHJpbmcoIm1lZGlhIik7CisgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0g
ICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IG5hbWUsIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9
KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhU
TUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM0OCwxMSArMzQ4LDExIEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNl
TWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0g
VVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAg
IFN0cmluZyBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9u
ZW50KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgbmFtZSA9IEF0b21TdHJpbmcoImZpbGUiKTsKKyAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJf
czsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1lLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3Qg
fSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCks
IG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mbykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4
IGYyYTJkNTJhYzVhYmY0ZTRmMTMxMTNjYTI1ZDFiMjBhMTczOGZhNjkuLmI3ZDI5Y2Q0YmFkOTUw
ZDNhYmQ3ZGY3OWU5MGY1MzQ2NGMzNjg4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRv
UGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgog
ICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHBhc3RlYm9hcmRJbWFnZVVSTDsKICAg
ICAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwogICAgIH0KLSAgICBwYXN0
ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZSA9IGltYWdlU291cmNlVVJMLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CisgICAgcGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVS
TC5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLmlt
YWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGUgPSBwYXN0ZWJvYXJkLnJlc291cmNlTUlNRVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDNhMTFkOTIwYjA3ODBlZGNkNzY0YjE5YTA0YzNhZmUw
OWU5MjZjYjMuLjkwMjEwZjU1YjE3MmEyMGFiNmY1N2EyNDI1MTczNGExMDY2OGUyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTE3Nywy
MiArMTc3LDE3IEBAIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRUaXRs
ZSgpIGNvbnN0CiBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50VGl0bGVG
b3JEaXNwbGF5KCkgY29uc3QKIHsKICAgICBhdXRvIHRpdGxlID0gYXR0YWNobWVudFRpdGxlKCk7
Ci0KICAgICBhdXRvIGluZGV4T2ZMYXN0RG90ID0gdGl0bGUucmV2ZXJzZUZpbmQoJy4nKTsKICAg
ICBpZiAoaW5kZXhPZkxhc3REb3QgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiB0aXRsZTsK
IAotICAgIFN0cmluZyBuYW1lID0gdGl0bGUubGVmdChpbmRleE9mTGFzdERvdCk7Ci0gICAgU3Ry
aW5nIGV4dGVuc2lvbiA9IHRpdGxlLnN1YnN0cmluZyhpbmRleE9mTGFzdERvdCk7Ci0KLSAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobGVmdFRvUmlnaHRNYXJr
KTsKLSAgICBidWlsZGVyLmFwcGVuZChmaXJzdFN0cm9uZ0lzb2xhdGUpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKG5hbWUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHBvcERpcmVjdGlvbmFsSXNvbGF0ZSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoZXh0ZW5zaW9uKTsKLQotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoCisgICAgICAgIGxlZnRUb1JpZ2h0TWFy
aywKKyAgICAgICAgZmlyc3RTdHJvbmdJc29sYXRlLAorICAgICAgICBTdHJpbmdWaWV3KHRpdGxl
KS5sZWZ0KGluZGV4T2ZMYXN0RG90KSwKKyAgICAgICAgcG9wRGlyZWN0aW9uYWxJc29sYXRlLAor
ICAgICAgICBTdHJpbmdWaWV3KHRpdGxlKS5zdWJzdHJpbmcoaW5kZXhPZkxhc3REb3QpCisgICAg
KTsKIH0KIAogU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFR5cGUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCAwM2Q5
MDViYmEzNzkxMjdkN2Y5NDE4OTJmNzk3NjVhN2VmOTNjMWI5Li42YmZlNzA3NGE5NTFhZDdhY2Nl
OTkzODQwMDY2YzhkYjc0ZDE2MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmNwcApAQCAtMzU3LDE0ICszNTcsMTQgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2lu
KiBwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJpbmcgZXh0ZW5zaW9uOwotICAgIFN0
cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGF1
dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICBzaXpl
X3QgZG90T2Zmc2V0ID0gbGFzdFBhdGhDb21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBp
ZiAoZG90T2Zmc2V0ICE9IG5vdEZvdW5kKQotICAgICAgICBleHRlbnNpb24gPSBsYXN0UGF0aENv
bXBvbmVudC5zdWJzdHJpbmcoZG90T2Zmc2V0ICsgMSk7CisgICAgICAgIGV4dGVuc2lvbiA9IGxh
c3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZzZXQgKyAxKS50b1N0cmluZygpOwogCiAg
ICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKICAgICBpZiAodHlwZS5pc0VtcHR5KCkgJiYgdXJs
LnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVy
bC5zdHJpbmcoKSk7CisgICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybCk7CiAg
ICAgCiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmICFleHRlbnNpb24uaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IGU3YTUxNmVi
YTIyODQ5ZmNkMzczNDY1OTM5NGI3YzQ5ZTdmOTdjZTEuLjViODQ1NDFlYTBkY2Y1MjI0MjgyYzMx
Y2Y3NGJiNDZlYTI1NTJkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFG
cmFnbWVudFVSSVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdt
ZW50VVJJUGFyc2VyLmNwcApAQCAtOTgsOSArOTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFGcmFnbWVu
dFVSSVBhcnNlcjo6ZW5kVGltZSgpCiAKIHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFy
c2VGcmFnbWVudHMoKQogewotICAgIGlmICghbV91cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBTdHJpbmcgZnJhZ21lbnRTdHJpbmcgPSBtX3VybC5mcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZyYWdtZW50U3RyaW5nID0gbV91cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGZyYWdtZW50U3RyaW5nLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggYjcwZTVkY2JlODI3NTgxMDBi
MDcyZDJmNGYwZjBlNDY4MGMwMTA5Ny4uMzkwYjk4ZDViZmU0NDY1OTRmN2Y5M2IxNTYyN2Y3ZDgz
ZGViZDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw4ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVUkxVdGlscyB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVUkxVdGlscyB7CiBwdWJsaWM6CiAgICAgVVJMIGhy
ZWYoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcyktPmhyZWYoKTsg
fQogICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHVybCkgeyBzdGF0aWNfY2FzdDxUKj4o
dGhpcyktPnNldEhyZWYodXJsKTsgfQpAQCAtNDEsMzEgKzQwLDMxIEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKLSAg
ICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UHJvdG9jb2wo
U3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNl
dFVzZXJuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VXNlcm5hbWUoU3RyaW5nVmll
dyk7CiAKICAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhc3N3b3Jk
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UGFzc3dvcmQoU3RyaW5nVmlldyk7CiAKICAg
ICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgaG9zdG5hbWUoKSBj
b25zdDsKLSAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0
SG9zdG5hbWUoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgcG9ydCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBvcnQoU3RyaW5nVmlldyk7
CiAKICAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhdGhuYW1lKGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UGF0aG5hbWUoU3RyaW5nVmlldyk7CiAKICAgICBT
dHJpbmcgc2VhcmNoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3RyaW5nJik7
CiAKICAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzaChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHNldEhhc2goU3RyaW5nVmlldyk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KQEAgLTk1LDggKzk0LDcgQEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojpwcm90b2NvbCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoaHJlZigpLnByb3RvY29sKCksICc6Jyk7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8
VD46OnNldFByb3RvY29sKFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYo
KTsKICAgICB1cmwuc2V0UHJvdG9jb2wodmFsdWUpOwpAQCAtMTA2LDExICsxMDQsMTAgQEAgdm9p
ZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojp1c2VybmFtZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkVXNlcigpOworICAgIHJldHVybiBocmVmKCkuZW5jb2Rl
ZFVzZXIoKS50b1N0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJM
VXRpbHM8VD46OnNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYgdXNlcikKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldFVzZXJuYW1lKFN0cmluZ1ZpZXcgdXNlcikKIHsK
ICAgICBVUkwgdXJsID0gaHJlZigpOwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQpA
QCAtMTIyLDE2ICsxMTksMTUgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3Qg
U3RyaW5nJiB1c2VyKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46
OnBhc3N3b3JkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzKCk7Cisg
ICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzc3dvcmQoKS50b1N0cmluZygpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKGNvbnN0IFN0
cmluZyYgcGFzcykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldFBh
c3N3b3JkKFN0cmluZ1ZpZXcgcGFzc3dvcmQpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAg
ICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHVybC5z
ZXRQYXNzKHBhc3MpOworICAgIHVybC5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAgICAgc2V0SHJl
Zih1cmwpOwogfQogCkBAIC0xNDEsMTcgKzEzNywxNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46Omhv
c3QoKSBjb25zdAogICAgIHJldHVybiBocmVmKCkuaG9zdEFuZFBvcnQoKTsKIH0KIAotLy8gVGhp
cyBmdW5jdGlvbiBkb2VzIG5vdCBhbGxvdyBsZWFkaW5nIHNwYWNlcyBiZWZvcmUgdGhlIHBvcnQg
bnVtYmVyLgotc3RhdGljIGlubGluZSB1bnNpZ25lZCBwYXJzZVBvcnRGcm9tU3RyaW5nUG9zaXRp
b24oY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQgcG9ydFN0YXJ0LCB1bnNpZ25lZCYgcG9y
dEVuZCkKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY291bnRBU0NJSURpZ2l0cyhTdHJpbmdWaWV3
IHN0cmluZykKIHsKLSAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OwotICAgIHdoaWxlIChpc0FTQ0lJ
RGlnaXQodmFsdWVbcG9ydEVuZF0pKQotICAgICAgICArK3BvcnRFbmQ7Ci0gICAgcmV0dXJuIHZh
bHVlLnN1YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGNvdW50ID0gMDsgY291bnQgPCBsZW5ndGg7ICsrY291bnQpIHsKKyAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoc3RyaW5nW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAg
fQorICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBV
UkxVdGlsczxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChTdHJpbmdWaWV3IHZhbHVlKQogewogICAg
IGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2OCwxOCArMTY0LDE5
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBp
ZiAoc2VwYXJhdG9yID09IG5vdEZvdW5kKQogICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFs
dWUpOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZCBwb3J0RW5kOwotICAgICAgICB1bnNp
Z25lZCBwb3J0ID0gcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKHZhbHVlLCBzZXBhcmF0b3Ig
KyAxLCBwb3J0RW5kKTsKLSAgICAgICAgaWYgKCFwb3J0KSB7CisgICAgICAgIHVuc2lnbmVkIHBv
cnRMZW5ndGggPSBjb3VudEFTQ0lJRGlnaXRzKHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3IgKyAx
KSk7CisgICAgICAgIGlmICghcG9ydExlbmd0aCkgewogICAgICAgICAgICAgLy8gaHR0cDovL2Rl
di53My5vcmcvaHRtbDUvc3BlYy9pbmZyYXN0cnVjdHVyZS5odG1sI3VybC1kZWNvbXBvc2l0aW9u
LWlkbC1hdHRyaWJ1dGVzCiAgICAgICAgICAgICAvLyBzcGVjaWZpY2FsbHkgZ29lcyBhZ2FpbnN0
IFJGQyAzOTg2IChwMy4yKSBhbmQKICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhl
IHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCi0gICAgICAgICAgICB1
cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAn
KTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2Ugc29tZXRoaW5nIHRoYXQg
aGFzIHNpbmNlIGJlZW4gY2hhbmdlZCBhbmQgdGhpcyBydWxlIGFuZCBjb2RlIG1heSBiZSBvYnNv
bGV0ZS4KKyAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydChtYWtlU3RyaW5nKHZhbHVlLnN1
YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSwgJzAnKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3Rv
Y29sKCkpKQorICAgICAgICAgICAgYXV0byBwb3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFsdWUu
c3Vic3RyaW5nKHNlcGFyYXRvciArIDEsIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChw
b3J0TnVtYmVyICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCB1
cmwucHJvdG9jb2woKSkpCiAgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVl
LnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAg
ICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFy
YXRvciArIDEgKyBwb3J0TGVuZ3RoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOwpAQCAtMTkxLDE3ICsxODgsMTQgQEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojpo
b3N0bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0KCkudG9TdHJpbmcoKTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0bmFtZShj
b25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxU
Pjo6c2V0SG9zdG5hbWUoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAgICAvLyBCZWZvcmUgc2V0dGlu
ZyBuZXcgdmFsdWU6CiAgICAgLy8gUmVtb3ZlIGFsbCBsZWFkaW5nIFUrMDAyRiBTT0xJRFVTICgi
LyIpIGNoYXJhY3RlcnMuCiAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgdW5zaWduZWQgaG9zdExl
bmd0aCA9IHZhbHVlLmxlbmd0aCgpOwogICAgIHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCiAgICAg
ICAgIGkrKzsKLQotICAgIGlmIChpID09IGhvc3RMZW5ndGgpCisgICAgaWYgKGkgPT0gdmFsdWUu
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFVSTCB1cmwgPSBocmVmKCk7CkBAIC0y
MjMsMjEgKzIxNywyMiBAQCBTdHJpbmcgVVJMVXRpbHM8VD46OnBvcnQoKSBjb25zdAogICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJM
VXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAgICBV
UkwgdXJsID0gaHJlZigpOwotICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpIHx8IHVybC5w
cm90b2NvbElzKCJmaWxlIikpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIXVybC5jYW5TZXRI
b3N0T3JQb3J0KCkpCisgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgdXJsLnByb3Rv
Y29sSXMoImZpbGUiKSB8fCAhdXJsLmNhblNldEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUu
dG9VSW50KCZzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MgfHwgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQotICAgICAgICB1cmwucmVtb3ZlUG9y
dCgpOwotICAgIGVsc2UKLSAgICAgICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgYXV0byBkaWdp
dHNPbmx5ID0gdmFsdWUubGVmdChjb3VudEFTQ0lJRGlnaXRzKHZhbHVlKSk7CisgICAgT3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQ7CisgICAgaWYgKCFkaWdpdHNPbmx5LmlzRW1wdHkoKSkgeworICAg
ICAgICBwb3J0ID0gcGFyc2VVSW50MTYoZGlnaXRzT25seSk7CisgICAgICAgIGlmICghcG9ydCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKCpwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICBwb3J0ID0gV1RGOjpu
dWxsb3B0OworICAgIH0KKyAgICB1cmwuc2V0UG9ydChwb3J0KTsKIAogICAgIHNldEhyZWYodXJs
LnN0cmluZygpKTsKIH0KQEAgLTI0OCw4ICsyNDMsNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46OnBh
dGhuYW1lKCkgY29uc3QKICAgICByZXR1cm4gaHJlZigpLnBhdGgoKS50b1N0cmluZygpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNv
bnN0IFN0cmluZyYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+
OjpzZXRQYXRobmFtZShTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIFVSTCB1cmwgPSBocmVmKCk7
CiAgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCkBAIC0yNTcsMTAgKzI1MSwxMCBAQCB2
b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlm
ICghdXJsLmNhblNldFBhdGhuYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2YWx1
ZVswVV0gPT0gJy8nKQorICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcvJykpCiAgICAgICAgIHVy
bC5zZXRQYXRoKHZhbHVlKTsKICAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiArIHZh
bHVlKTsKKyAgICAgICAgdXJsLnNldFBhdGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7CiAKICAg
ICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CiB9CkBAIC0yNjgsOCArMjYyLDcgQEAgdm9pZCBVUkxV
dGlsczxUPjo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpzZWFyY2goKSBjb25zdAogewotICAgIFN0cmlu
ZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOwotICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBl
bXB0eVN0cmluZygpIDogIj8iICsgcXVlcnk7CisgICAgcmV0dXJuIGhyZWYoKS5xdWVyeSgpLmlz
RW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBocmVmKCkucXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9u
TWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMjgwLDcg
KzI3Myw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgICAgICAvLyBJZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgc2V0
IHVybCdzIHF1ZXJ5IHRvIG51bGwuCiAgICAgICAgIHVybC5zZXRRdWVyeSh7IH0pOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFN0cmluZyBuZXdTZWFyY2ggPSAodmFsdWVbMFVdID09ICc/JykgPyB2
YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9IHZh
bHVlLnN0YXJ0c1dpdGgoJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOwogICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhl
IGhhc2guCiAgICAgICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZVdpdGhMaXRlcmFs
KCcjJywgIiUyMyIpKTsKICAgICB9CkBAIC0yOTEsMTcgKzI4NCwxNCBAQCB2b2lkIFVSTFV0aWxz
PFQ+OjpzZXRTZWFyY2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpoYXNoKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgZnJhZ21l
bnRJZGVudGlmaWVyID0gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIGlmIChmcmFn
bWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
LSAgICByZXR1cm4gQXRvbVN0cmluZyhTdHJpbmcoIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyKSk7
CisgICAgLy8gRklYTUU6IFdoeSBjb252ZXJ0IHRoaXMgc3RyaW5nIHRvIGFuIGF0b20gaGVyZSBp
bnN0ZWFkIG9mIGp1c3QgYSBzdHJpbmc/IEludGVudGlvbmFsbHkgdG8gc2F2ZSBtZW1vcnk/IEFu
IGVycm9yPworICAgIHJldHVybiBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgp
ID8gZW1wdHlBdG9tKCkgOiBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1i
ZXJTaWduKCkudG9BdG9tU3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9p
ZCBVUkxVdGlsczxUPjo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0SGFzaChTdHJpbmdWaWV3IHZhbHVlKQogewog
ICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgU3RyaW5nIG5ld0ZyYWdtZW50ID0gdmFsdWVbMFVd
ID09ICcjJyA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOworICAgIGF1dG8gbmV3RnJhZ21l
bnQgPSB2YWx1ZS5zdGFydHNXaXRoKCcjJykgPyBTdHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJpbmco
MSkgOiBTdHJpbmdWaWV3KHZhbHVlKTsKICAgICBpZiAobmV3RnJhZ21lbnQuaXNFbXB0eSgpKQog
ICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAppbmRleCA2MzNlNzc1YTU0
NTQ0ZmNmZDY2ODdhYmJlY2Y5YWQ4Njg5YTZkZDJmLi43NmQ0YWZiOTVmZjRiNDZkYzAyYWNjZTA3
ZGY0YWVjOWM1NGJmMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJp
YnV0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aXNW
YWxpZCgpIGNvbnN0CiAKIEV4cGVjdGVkPEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbiwg
U3RyaW5nPiBBZENsaWNrQXR0cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QoY29uc3Qg
VVJMJiByZWRpcmVjdFVSTCkKIHsKLSAgICBpZiAoIXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0
dHBzIl9zKSB8fCByZWRpcmVjdFVSTC5oYXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0VVJMLmhhc1Bh
c3N3b3JkKCkgfHwgcmVkaXJlY3RVUkwuaGFzUXVlcnkoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFn
bWVudCgpKSB7CisgICAgaWYgKCFyZWRpcmVjdFVSTC5wcm90b2NvbElzKCJodHRwcyIpIHx8IHJl
ZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgcmVkaXJlY3RVUkwuaGFzUXVlcnkoKSB8fCBy
ZWRpcmVjdFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgewogICAgICAgICBpZiAoVU5MSUtF
TFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhB
ZENsaWNrQXR0cmlidXRpb24sICJDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0
aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9y
IG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBxdWVyeSBzdHJpbmcsIGFuZCBmcmFnbWVudC4i
KTsKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW0FkIENsaWNrIEF0dHJpYnV0
aW9uXSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9j
b2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdXNlcm5h
bWUsIHBhc3N3b3JkLCBxdWVyeSBzdHJpbmcsIGFuZCBmcmFnbWVudC4iX3MpOwpAQCAtMTg5LDE3
ICsxODksMTIgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6dXJsRm9yVGVzdGluZyhjb25zdCBV
UkwmIGJhc2VVUkwpIGNvbnN0CiAgICAgYXV0byBob3N0ID0gbV9zb3VyY2UucmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCk7CiAgICAgaWYgKGhvc3QgIT0gImxvY2FsaG9zdCIgJiYgaG9zdCAhPSAi
MTI3LjAuMC4xIikKICAgICAgICAgcmV0dXJuIFVSTCgpOwotCi0gICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiP2NvbnZlcnNpb249Iik7Ci0gICAg
YnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJzaW9uLnZhbHVlKCkuZGF0YSk7Ci0gICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCImY2FtcGFpZ249Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9jYW1wYWlnbi5pZCk7Ci0gICAgaWYgKGJhc2VVUkwuaGFzUXVlcnkoKSkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnJicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChiYXNlVVJMLnF1
ZXJ5KCkpOwotICAgIH0KLSAgICByZXR1cm4gVVJMKGJhc2VVUkwsIGJ1aWxkZXIudG9TdHJpbmco
KSk7CisgICAgU3RyaW5nIHJlbGF0aXZlVVJMOworICAgIGlmICghYmFzZVVSTC5oYXNRdWVyeSgp
KQorICAgICAgICByZWxhdGl2ZVVSTCA9IG1ha2VTdHJpbmcoIj9jb252ZXJzaW9uPSIsIG1fY29u
dmVyc2lvbi52YWx1ZSgpLmRhdGEsICImY2FtcGFpZ249IiwgbV9jYW1wYWlnbi5pZCk7CisgICAg
ZWxzZQorICAgICAgICByZWxhdGl2ZVVSTCA9IG1ha2VTdHJpbmcoIj9jb252ZXJzaW9uPSIsIG1f
Y29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICImY2FtcGFpZ249IiwgbV9jYW1wYWlnbi5pZCwgJyYn
LCBiYXNlVVJMLnF1ZXJ5KCkpOworICAgIHJldHVybiBVUkwoYmFzZVVSTCwgcmVsYXRpdmVVUkwp
OwogfQogCiB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6bWFya0NvbnZlcnNpb25Bc1NlbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cAppbmRleCA4MjkwNjI4YzRlZDQ1ZTA1MzFjNDc5NmZhMjZhZDVhYzRhMWQ2MzM4Li5lMDUzYzli
MDNmMDQ2NTBkZWY1NWJlY2Q1OGQxYzYzNjljNjMwYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMTY3LDcgKzE2Nyw3
IEBAIFN0cmluZyB2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJiBy
ZWRpcmVjdFVSTCkKICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQocmVkaXJlY3RVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygibm90IGFsbG93ZWQgdG8g
Zm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVkaXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hl
bWUiKTsKIAotICAgIGlmIChyZWRpcmVjdFVSTC5oYXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0VVJM
Lmhhc1Bhc3N3b3JkKCkpCisgICAgaWYgKHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZWRpcmVjdGlvbiBVUkwgIiwgcmVkaXJlY3RVUkwu
c3RyaW5nKCksICIgaGFzIGNyZWRlbnRpYWxzIik7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCAyMTc3ZjRiNmRiNmIxOTVjYTlkZjgyNzliNWFmN2JiMTU2ZjViNTBhLi5kZjNkMDhjNzRmZWJj
MWI1NGUyNDRlNjNmYzQ5NmZlNjMwYzQzMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTMyLDggKzUzMiw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgLy8gQW55IGNyZWRlbnRpYWwgc2hvdWxkIGhhdmUg
YmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3NzLXNpdGUgcmVxdWVzdHMuCiAgICAgY29uc3QgVVJM
JiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBtX29wdGlvbnMuc2VjdXJpdHlDaGVj
ayA9IHNlY3VyaXR5Q2hlY2s7Ci0gICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVx
dWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVz
dCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3NhbWVPcmln
aW5SZXF1ZXN0IHx8ICFyZXF1ZXN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpOwogCiAgICAgaWYgKCFt
X3JlZmVycmVyLmlzTnVsbCgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtX3Jl
ZmVycmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDNh
YWE4ZWVkOGMzMzdlNzlkOTg4OGE0NTVmMzlmZjNmZWU0YjVhMzYuLjMwYWY5MDA4MDQ5YThlMzk4
MmY5YzliZjQ5ZGFlYmZjOTJlYTY4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcApAQCAtNzgsMTEgKzc4LDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bv
c3RGb3JtRGF0YVRvVVJMKFVSTCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAg
ICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoYm9keURhdGEsIGJvZHku
dXRmOCgpKTsKICAgICBib2R5ID0gU3RyaW5nKGJvZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6
ZSgpKS5yZXBsYWNlV2l0aExpdGVyYWwoJysnLCAiJTIwIik7CiAKLSAgICBTdHJpbmcgcXVlcnkg
PSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CiAgICAgaWYgKHF1
ZXJ5LmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnNldFF1ZXJ5KGJvZHkpOwogICAgIGVsc2UKLSAg
ICAgICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5ICsgJyYnICsgYm9keSk7CisgICAgICAgIHVybC5zZXRR
dWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAnJicsIGJvZHkpKTsKIH0KIAogdm9pZCBGb3JtU3VibWlz
c2lvbjo6QXR0cmlidXRlczo6cGFyc2VBY3Rpb24oY29uc3QgU3RyaW5nJiBhY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA3ZmZmODI2OTYwMDhkMzIxMDI1M2Y1
MzI2NzJhZjU3MjE1NjJjNGMwLi4zMjQxNzA1Zjg5MzYyZjBhMTQ1YTAzNWI5NTZiZWVmNzMxN2Fl
NGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTExNTEsOSArMTE1
MSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwmIHVy
bCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0CiAKICAgICAgICAgaGlzdG9yeSgpLnVwZGF0
ZUJhY2tGb3J3YXJkTGlzdEZvckZyYWdtZW50U2Nyb2xsKCk7CiAgICAgfQotICAgIAotICAgIGJv
b2wgaGFzaENoYW5nZSA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBvbGRV
UkwpICYmIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSAhPSBvbGRVUkwuZnJhZ21lbnRJZGVudGlm
aWVyKCk7Ci0gICAgCisKKyAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21l
bnRJZGVudGlmaWVyKHVybCwgb2xkVVJMKSAmJiAhZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSh1cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCksIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSk7CisKICAg
ICBoaXN0b3J5KCkudXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogCiAgICAgLy8g
SWYgd2Ugd2VyZSBpbiB0aGUgYXV0b3Njcm9sbC9wYW5TY3JvbGwgbW9kZSB3ZSB3YW50IHRvIHN0
b3AgaXQgYmVmb3JlIGZvbGxvd2luZyB0aGUgbGluayB0byB0aGUgYW5jaG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAppbmRleCAzMjNkYjQ2MzYwMjk4YjhhOTFiYjAwYTQ3OTI0YmIyZTgxMTFmMzM4Li40ODgyZDc3
ZTEyNzE2OTg1YzQ2NDUxZGYwZWM3NDBhNzkzOTNjNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI0
NiwxNSArMjQ2LDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hCiAKIFVSTCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8g
RklYTUU6IENhbiB3ZSBqdXN0IHVzZSBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoIGluc3RlYWQ/
CiAjaWYgVVNFKENGKSAmJiBQTEFURk9STShXSU4pCi0gICAgVVJMIHVybChhZG9wdENGKENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKS5nZXQoKSk7CisgICAgLy8gRklYTUU6IElz
IHRoaXMgY29ycmVjdD8gU2VlbXMgaW1wcm9iYWJsZSB0aGF0IHRoZSBwYXNzZWQtaW4gcGF0aHMg
d291bGQgYmUgaW4gdGhlIFdpbmRvd3MgcGF0aCBzdHlsZS4KKyAgICByZXR1cm4gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSkuZ2V0KCk7CiAjZWxzZQotICAgIFVS
TCB1cmw7Ci0gICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsKLSAgICB1cmwuc2V0UGF0aChw
YXRoKTsKKyAgICByZXR1cm4gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKHBhdGgpOwog
I2VuZGlmCi0gICAgcmV0dXJuIHVybDsKIH0KIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwCmluZGV4IGZhYWU1MWY5OWY2MmIyZjI5ZDVjYmI4YWVjZmNlYjE2YWRjMmViNTQuLjcz
NGRhNzY2MmQ0OWE2MjI1OWRlNjFmZWQ4Y2JlYjcwMGVkMmFjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApAQCAtMzUsMTMgKzM1
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxi
YWNrLCBPbmxpbmVXaGl0ZWxpc3QsIFVua25vd24gfTsKIAotc3RhdGljIFN0cmluZyBtYW5pZmVz
dFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKK3N0YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0
UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIGF1dG8gbWFuaWZlc3RQYXRoID0g
bWFuaWZlc3RVUkwucGF0aCgpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gJy8nKTsK
ICAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBhdGguc3Vic3RyaW5nKDAsIG1hbmlmZXN0UGF0
aC5yZXZlcnNlRmluZCgnLycpICsgMSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSBt
YW5pZmVzdFBhdGhbbWFuaWZlc3RQYXRoLmxlbmd0aCgpIC0gMV0pOwotICAgIHJldHVybiBtYW5p
ZmVzdFBhdGgudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFuaWZlc3RQYXRoOwogfQogCiBib29s
IHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5p
ZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFu
aWZlc3QpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1h
bmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0CiAgICAgQVNT
RVJUKG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5pc0VtcHR5KCkpOwogICAgIG1hbmlmZXN0LmFsbG93
QWxsTmV0d29ya1JlcXVlc3RzID0gZmFsc2U7CiAKLSAgICBTdHJpbmcgbWFuaWZlc3RQYXRoID0g
V2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKKyAgICBhdXRvIG1hbmlmZXN0UGF0
aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5pZmVzdFVSTCk7CiAKICAgICBjb25zdCBjaGFy
IGNhY2hlTWFuaWZlc3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJv
b2wgYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlw
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggM2Y0
Njk5Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3NWE2NWYzZC4uY2Q5NDllN2MxMzBkOTY2Mjgy
ZjE5YjUyYzhkYTMxZDAwNGE2ODE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcApAQCAtODYsMTAgKzg2LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIAogU3RyaW5nIENhY2hlZEZvbnQ6OmNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogewotICAgIGF1dG8mIHVybCA9IHRoaXMt
PnVybCgpOwotICAgIGlmICghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAogYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwCmluZGV4IDZhMjhhODU3MWM1ZWNhNjI3ZDNlNmU3ZDE0Zjc5YTc2Mzg2OTY1YjMuLmU0
YTk0YTUwNTk2MWFhMzc5N2ZhNmQwNGVhNjVjNjQ1NjVhZDk2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIFN0cmluZyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJ
ZGVudGlmaWVyRnJvbVJlcXVlc3RVUkwoUmVzb3VyY2VSZXF1CiAgICAgaWYgKCFNZW1vcnlDYWNo
ZTo6c2hvdWxkUmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKHJlcXVlc3QudXJsKCkpKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwotICAgIFN0cmluZyBm
cmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBm
cmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsK
ICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwo
dXJsKTsKICAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IGI0Y2ZiNzUzMTc5NjkyNjg5ZDNkNjYxYWJjZDVmZDczN2ViMGVkYmUuLjdj
MTFkYmZiNmM0YzBmOWJiZGVjNGE5OGVhZWQyMzRmZTBkOTNiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTIxNzksOCArMjE3OSw4IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN0b3Jl
U2Nyb2xsYmFyKCkKIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKTsKLSAgICBpZiAoc2Nyb2xsVG9GcmFnbWVudEludGVybmFsKGZyYWdtZW50SWRl
bnRpZmllcikpCisgICAgYXV0byBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgaWYgKHNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbChmcmFnbWVudElkZW50
aWZpZXIudG9TdHJpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVHJ5IGFn
YWluIGFmdGVyIGRlY29kaW5nIHRoZSByZWYsIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIGVuY29k
aW5nLgpAQCAtMjE5NSw3ICsyMTk1LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21l
bnQoY29uc3QgVVJMJiB1cmwpCiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50
ZXJuYWwoY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIpCiB7Ci0gICAgTE9HKFNjcm9s
bGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IgJXMiLCBmcmFnbWVudElkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9G
cmFnbWVudEludGVybmFsICVzIiwgZnJhZ21lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgLy8gSWYgb3VyIFVSTCBoYXMgbm8gcmVmLCB0aGVuIHdlIGhhdmUgbm8gcGxhY2Ugd2Ug
bmVlZCB0byBqdW1wIHRvLgogICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNOdWxsKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA5YzU4YjA2ZjRjNDcxMTMwY2U0ODE1ZjExZDE0Y2I3
OGY4MWI0OWEwLi4zOGZkN2IyOWI1M2VhYjQ4NGUzMDk2M2I1MWM4YWU1MjVjNWQ3YTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTIwMSwxMyArMjAxLDE0IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBkYXRhCiAgICAgICAgIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSA9IHN0YXRlT2JqZWN0
VHlwZSA9PSBTdGF0ZU9iamVjdFR5cGU6OlJlcGxhY2UgPyAiaGlzdG9yeS5yZXBsYWNlU3RhdGUo
KSIgOiAiaGlzdG9yeS5wdXNoU3RhdGUoKSI7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yLCBtYWtlU3RyaW5nKCJCbG9ja2VkIGF0dGVtcHQgdG8gdXNlICIsIGZ1bmN0
aW9uTmFtZSwgIiB0byBjaGFuZ2Ugc2Vzc2lvbiBoaXN0b3J5IFVSTCBmcm9tICIsIGRvY3VtZW50
VVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIHRvICIsIGZ1bGxVUkwuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuICIsIHN1ZmZpeCkgfTsKICAgICB9Owot
ICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJM
KSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNz
KCkgIT0gZG9jdW1lbnRVUkwucGFzcygpKQorICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVu
dFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzd29yZCgpICE9IGRvY3VtZW50VVJMLnBhc3N3b3Jk
KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNz
YWdlU3VmZml4KCJQcm90b2NvbHMsIGRvbWFpbnMsIHBvcnRzLCB1c2VybmFtZXMsIGFuZCBwYXNz
d29yZHMgbXVzdCBtYXRjaC4iKTsKIAogICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlP
cmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAvLyBXZSBh
bGxvdyBzYW5kYm94ZWQgZG9jdW1lbnRzLCAnZGF0YTonLydmaWxlOicgVVJMcywgZXRjLiB0byB1
c2UgJ3B1c2hTdGF0ZScvJ3JlcGxhY2VTdGF0ZScgdG8gbW9kaWZ5IHRoZSBVUkwgcXVlcnkgYW5k
IGZyYWdtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MzAyOCBmb3IgdGhlIGNvbXBhdGliaWxpdHkgY29uY2VybnMuCi0gICAgYm9vbCBh
bGxvd1NhbmRib3hFeGNlcHRpb24gPSAoZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkg
fHwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc1VuaXF1ZSgpKSAmJiBlcXVhbElnbm9yaW5nUXVl
cnlBbmRGcmFnbWVudChkb2N1bWVudFVSTCwgZnVsbFVSTCk7CisgICAgYm9vbCBhbGxvd1NhbmRi
b3hFeGNlcHRpb24gPSAoZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1l
bnRTZWN1cml0eU9yaWdpbi5pc1VuaXF1ZSgpKQorICAgICAgICAmJiBkb2N1bWVudFVSTC5zdHJp
bmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRpZmllcigpID09IGZ1bGxVUkwuc3RyaW5nV2l0
aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIGlmICghYWxsb3dTYW5kYm94
RXhjZXB0aW9uICYmICFkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkg
JiYgKGZ1bGxVUkwucGF0aCgpICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5
KCkgIT0gZG9jdW1lbnRVUkwucXVlcnkoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2Vk
VVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11
c3QgbWF0Y2ggZm9yIGEgc2FuZGJveGVkIGRvY3VtZW50LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmNwcAppbmRleCAyODc4OWNkMTQyOTgzMmMxZjI3MmE2YWFkNWViMWU4YjYyODgyZWM3Li4zNmMx
YzliYmNjYTEwNmM4ZWI1N2YxYmVhNjM3MGIwZTI4N2EyODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcApAQCAtNjEsMTQgKzYxLDggQEAgaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVy
bCgpIGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6aHJlZigpIGNvbnN0CiB7Ci0gICAgYXV0byYg
dXJsID0gdGhpcy0+dXJsKCk7Ci0KLSAgICBpZiAoIXVybC5oYXNVc2VybmFtZSgpICYmICF1cmwu
aGFzUGFzc3dvcmQoKSkKLSAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLQotICAgIFVSTCB1
cmxXaXRob3V0Q3JlZGVudGlhbHModXJsKTsKLSAgICB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc2V0
VXNlcihXVEY6OmVtcHR5U3RyaW5nKCkpOwotICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5zZXRQ
YXNzKFdURjo6ZW1wdHlTdHJpbmcoKSk7CisgICAgVVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1
cmwoKSk7CisgICAgdXJsV2l0aG91dENyZWRlbnRpYWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAg
ICAgcmV0dXJuIHVybFdpdGhvdXRDcmVkZW50aWFscy5zdHJpbmcoKTsKIH0KIApAQCAtOTEsMjAg
Kzg1LDE5IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9zdG5hbWUoKSBjb25zdAogCiBTdHJpbmcgTG9j
YXRpb246OnBvcnQoKSBjb25zdAogewotICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7
Ci0gICAgcmV0dXJuIHVybC5wb3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpLnZhbHVl
KCkpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIHBvcnQgPSB1cmwoKS5wb3J0KCk7CisgICAg
cmV0dXJuIHBvcnQgPyBTdHJpbmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQog
CiBTdHJpbmcgTG9jYXRpb246OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSB1
cmwoKS5wYXRoKCk7Ci0gICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0
cmluZygpOworICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmlu
ZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
VVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICByZXR1cm4gdXJsLnF1ZXJ5KCkuaXNFbXB0eSgp
ID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHVybC5xdWVyeSgpOworICAgIHJldHVybiB1cmwoKS5x
dWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwoKS5xdWVyeVdpdGhMZWFkaW5n
UXVlc3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpvcmlnaW4o
KSBjb25zdApAQCAtMTI1LDggKzExOCw3IEBAIFJlZjxET01TdHJpbmdMaXN0PiBMb2NhdGlvbjo6
YW5jZXN0b3JPcmlnaW5zKCkgY29uc3QKIAogU3RyaW5nIExvY2F0aW9uOjpoYXNoKCkgY29uc3QK
IHsKLSAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllciA9IHVybCgpLmZyYWdtZW50
SWRlbnRpZmllcigpOwotICAgIHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpID8g
ZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50SWRlbnRpZmllcjsKKyAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IHVybCgp
LmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIcmVmKERPTVdpbmRvdyYgYWN0aXZl
V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKQEAgLTE0
NCw3ICsxMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UHJvdG9jb2woRE9N
V2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlycwogICAgIFVSTCB1cmwgPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9jb2wocHJvdG9jb2wp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKLSAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3QoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTE1
NCw3ICsxNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbgogICAgICAgICByZXR1cm4geyB9
OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhv
c3RBbmRQb3J0KGhvc3QpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZp
cnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlv
bjo6c2V0SG9zdG5hbWUoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RX
aW5kb3csIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC0xNjQsNyArMTU2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBET01XaW5kb3cmIGZpcnMKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygp
KTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcG9ydFN0
cmluZykKQEAgLTE3MywxMiArMTY1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7Ci0gICAgaW50IHBvcnQgPSBwb3J0U3RyaW5nLnRvSW50KCk7Ci0gICAg
aWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweEZGRkYgfHwgcG9ydFN0cmluZy5pc0VtcHR5KCkpCi0g
ICAgICAgIHVybC5yZW1vdmVQb3J0KCk7Ci0gICAgZWxzZQotICAgICAgICB1cmwuc2V0UG9ydChw
b3J0KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywg
dXJsLnN0cmluZygpKTsKKyAgICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5nKSk7
CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFtZShET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwYXRo
bmFtZSkKQEAgLTE4OCw3ICsxNzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0
UGF0aG5hbWUoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlycwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAg
ICAgdXJsLnNldFBhdGgocGF0aG5hbWUpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlv
bihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0U2VhcmNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cm
IGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHNlYXJjaCkKQEAgLTE5OCw3ICsxODYsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0U2VhcmNoKERPTVdpbmRvdyYgYWN0aXZlV2lu
ZG93LCBET01XaW5kb3cmIGZpcnN0VwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0g
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cs
IHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhh
c2gpCkBAIC0yMTgsNyArMjA2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhh
c2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KICAgICAvLyBj
YXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZhbGlkLiAK
ICAgICBpZiAoZXF1YWxJZ25vcmluZ051bGxpdHkob2xkRnJhZ21lbnRJZGVudGlmaWVyLCB1cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAg
IHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgYWN0aXZlV2lu
ZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCBhY2U1YjdlZDk3
MDFlMjQxZTQwYTU3ZGU2NDE4ZDk4YzEyOWQ5Mzg1Li4yZDUxNDY5OWIxMTcxZTljNzQ4NjYxMmE3
YjFhNWU1NWEyYmFjZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCkBAIC0xNDcsMjIgKzE0NywxOSBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogICAgIHJldHVybiBob3N0
W2hvc3QubGVuZ3RoKCkgLSBtX2hvc3QubGVuZ3RoKCkgLSAxXSA9PSAnLic7CiB9CiAKLXN0cnVj
dCBNYXRjaFRlc3Rlcgoteworc3RydWN0IE1hdGNoVGVzdGVyIHsKICAgICBTdHJpbmdWaWV3IG1f
cGF0dGVybjsKLSAgICB1bnNpZ25lZCBtX3BhdHRlcm5JbmRleDsKLSAgICAKKyAgICB1bnNpZ25l
ZCBtX3BhdHRlcm5JbmRleCB7IDAgfTsKKwogICAgIFN0cmluZ1ZpZXcgbV90ZXN0OwotICAgIHVu
c2lnbmVkIG1fdGVzdEluZGV4OwotICAgIAorICAgIHVuc2lnbmVkIG1fdGVzdEluZGV4IHsgMCB9
OworCiAgICAgTWF0Y2hUZXN0ZXIoU3RyaW5nVmlldyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHRlc3Qp
Ci0gICAgOiBtX3BhdHRlcm4ocGF0dGVybikKLSAgICAsIG1fcGF0dGVybkluZGV4KDApCi0gICAg
LCBtX3Rlc3QodGVzdCkKLSAgICAsIG1fdGVzdEluZGV4KDApCisgICAgICAgIDogbV9wYXR0ZXJu
KHBhdHRlcm4pCisgICAgICAgICwgbV90ZXN0KHRlc3QpCiAgICAgewogICAgIH0KLSAgICAKKwog
ICAgIGJvb2wgdGVzdFN0cmluZ0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW5kZXgg
Pj0gbV90ZXN0Lmxlbmd0aCgpOyB9CiAgICAgYm9vbCBwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSBj
b25zdCB7IHJldHVybiBtX3BhdHRlcm5JbmRleCA+PSBtX3BhdHRlcm4ubGVuZ3RoKCk7IH0KIApA
QCAtMTc0LDcgKzE3MSw3IEBAIHN0cnVjdCBNYXRjaFRlc3RlcgogICAgICAgICAgICAgbV9wYXR0
ZXJuSW5kZXgrKzsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHZvaWQgZWF0U2FtZUNo
YXJzKCkKICAgICB7CiAgICAgICAgIHdoaWxlICghcGF0dGVyblN0cmluZ0ZpbmlzaGVkKCkgJiYg
IXRlc3RTdHJpbmdGaW5pc2hlZCgpKSB7CkBAIC0yMjYsOCArMjIzLDcgQEAgc3RydWN0IE1hdGNo
VGVzdGVyCiAKIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0aChjb25zdCBV
UkwmIHRlc3QpIGNvbnN0CiB7Ci0gICAgTWF0Y2hUZXN0ZXIgbWF0Y2goU3RyaW5nVmlldyhtX3Bh
dGgpLCB0ZXN0LnBhdGgoKSk7Ci0gICAgcmV0dXJuIG1hdGNoLnRlc3QoKTsKKyAgICByZXR1cm4g
TWF0Y2hUZXN0ZXIobV9wYXRoLCB0ZXN0LnBhdGgoKSkudGVzdCgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCmluZGV4IDRhMGMzNGVjYTcyNDJiZGE3MjUyODQ4YjNhOGNlMmQxMzVmNzQzNWIuLjQ3MGZl
NTQ5NTRlMWIzYzQ3ZWVmMDVlNzg1MGNiNWJhMmM5OTVmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC03OTAsMTYgKzc5MCwxMCBAQCBTdHJp
bmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9u
SWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKLSAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZh
dWx0TUlNRVR5cGUoKSkpCi0gICAgICAgIHJldHVybiBmaWxlbmFtZTsKLQotICAgIGlmIChmaWxl
bmFtZS5yZXZlcnNlRmluZCgnLicpICE9IG5vdEZvdW5kKQorICAgIGlmIChmaWxlbmFtZS5pc0Vt
cHR5KCkgfHwgZmlsZW5hbWUuY29udGFpbnMoJy4nKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkpCiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsK
IAotICAgIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25G
b3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0byBwcmVmZXJyZWRFeHRlbnNpb24gPSBnZXRQ
cmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgaWYgKHByZWZlcnJl
ZEV4dGVuc2lvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGFi
N2U2MDU0MmIwMTgyY2ZhYjZiZjIyMDZmNDg3ODhmMTg0MWM2MzguLmM4MjhiYmU3ZTc3NTVlZTcx
MTIxNzIzZTlmMTcwMjdlZDFmYWUyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTQ0MSwxMiArNDQxLDEyIEBAIGJvb2wgTWVk
aWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyCiAgICAgQXRvbVN0cmluZyBjb250YWluZXJUeXBlID0gbV9jb250ZW50
VHlwZS5jb250YWluZXJUeXBlKCk7CiAgICAgaWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8
IGNvbnRhaW5lclR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpIHx8IGNvbnRhaW5lclR5
cGUgPT0gdGV4dFBsYWluKCkpIHsKICAgICAgICAgaWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkp
Ci0gICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0
YVVSTChtX3VybC5zdHJpbmcoKSkpOworICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRl
bnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwpKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21w
b25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBwb3MgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZl
cnNlRmluZCgnLicpOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkgewotICAgICAg
ICAgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmco
cG9zICsgMSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29t
cG9uZW50LnN1YnN0cmluZyhwb3MgKyAxKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgIFN0
cmluZyBtZWRpYVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uKGV4dGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZSB7
IFdURk1vdmUobWVkaWFUeXBlKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MTYyYWRhZTZiZmY1MTY3MWUzYmU1MzIyMjdlN2RlNTc5
OTlmZGYwLi4yZWM5NzVjYjEwNDVhZTRjODc0OTdjZDlhMGFjZTAyZjkyMTFkOTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTcyLDcg
KzE3Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0ludGVybmFsUHJvdG9jb2woVVJMJiB1cmwp
CiAgICAgaWYgKHdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCAxMiwgMCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJ
c0Jsb2IoKSkKLSAgICAgICAgdXJsLnNldFByb3RvY29sKCJ3ZWJraXQrIiArIHVybC5wcm90b2Nv
bCgpKTsKKyAgICAgICAgdXJsLnNldFByb3RvY29sKG1ha2VTdHJpbmcoIndlYmtpdCsiLCB1cmwu
cHJvdG9jb2woKSkpOwogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaAppbmRleCA3MjhmYTJlODc5YjBlNzYxYTQ5NWRjNGFjYTMwODY0NGJkNjRlMDBlLi5kM2Iz
MzgyNzkxZWYyYzAyMjNhNzY0MzE3MTNmMThiMWYzMmU2YThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApA
QCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBVUkwmIHVybCA9
IG1fZmlyc3RSZXF1ZXN0LnVybCgpOwogICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAg
ICAgICBtX3Bhc3MgPSB1cmwucGFzcygpOworICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3
b3JkKCk7CiAgICAgICAgIG1fZmlyc3RSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAg
fQogICAgIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdWdnZXN0ZWQgY3Jl
ZGVudGlhbHMgZm9yIHRoZSBjdXJyZW50IHJlZGlyZWN0aW9uIHN0ZXAuCiAgICAgU3RyaW5nIG1f
dXNlcjsKLSAgICBTdHJpbmcgbV9wYXNzOworICAgIFN0cmluZyBtX3Bhc3N3b3JkOwogICAgIAog
ICAgIENyZWRlbnRpYWwgbV9pbml0aWFsQ3JlZGVudGlhbDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmlu
ZGV4IGE5MzczMjAzNTMxMmNjNDdkMDkyMjBhZDg0ZjJmYjJlOGY3MzQyZGUuLjUzMGVjY2ZhZTc5
M2UzNWRlZTk5ZWMwNDA3NzA3YTM4ZjljN2M5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTY1LDEy
ICsxNjUsMTAgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZW1vdmVDcmVkZW50aWFscygp
CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAogCi0gICAgaWYgKG1fdXJsLnVzZXIo
KS5pc0VtcHR5KCkgJiYgbV91cmwucGFzcygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fdXJsLmhh
c0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdXJsLnNldFVzZXIoU3Ry
aW5nKCkpOwotICAgIG1fdXJsLnNldFBhc3MoU3RyaW5nKCkpOwotCisgICAgbV91cmwucmVtb3Zl
Q3JlZGVudGlhbHMoKTsKICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggOTAwODFjYmVjMDlmMTAwMjRiZThhMDBkNzdiYTky
YWYzZDdlN2RiMi4uM2VjZjcxZTkxNDdmMjQ0Y2FhMmU0ZTJiNmQ5NjAyMjdjMjM3NmRlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgpAQCAtNTksNyArNTgsNiBAQAogI2lmIFBMQVRGT1JNKFdJ
TikKICNpbmNsdWRlIDxwcm9jZXNzLmg+CiAKLS8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJh
dGlvbiBvbmNlIGl0J3MgaW4gV2ViS2l0U3VwcG9ydExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3Jl
YXRlV2l0aFByb3BlcnRpZXMoCiAgIENGQWxsb2NhdG9yUmVmICAgICAgICAgICBhbGxvYywKQEAg
LTEzMywxMSArMTMxLDExIEBAIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlSW5TU0xQ
cm9wZXJ0aWVzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3NsUHJvcHMsCiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZiwgUmVmUHRyPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiYmIG1lc3NhZ2VR
dWV1ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpCiB7Ci0gICAgaWYgKCghZC0+
bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVz
dCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgoIWQtPm1fdXNl
ci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIENyZWRlbnRp
YWxzIGZvciBmdHAgY2FuIG9ubHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCiAgICAgICAg
IFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1
cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIpOwotICAgICAgICB1cmxXaXRoQ3Jl
ZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMu
c2V0UGFzc3dvcmQoZC0+bV9wYXNzd29yZCk7CiAgICAgICAgIGZpcnN0UmVxdWVzdCgpLnNldFVS
TCh1cmxXaXRoQ3JlZGVudGlhbHMpOwogICAgIH0KIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlLCBib29sCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9y
IFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2Vk
IGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLAogICAgIC8vIHRyeSBhbmQgcmV1c2UgdGhl
IGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgogICAgIGlm
IChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSAmJiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKLSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkg
JiYgZC0+bV9wYXNzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHko
KSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2Ug
cHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKICAg
ICAgICAgICAgIC8vIHRyeSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBh
cyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgogICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlh
bCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5n
ZXQocGFydGl0aW9uLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CkBAIC0xNTQsNyArMTUyLDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVh
ZHkgYSBwcm90ZWN0aW9uIHNwYWNlIGtub3duIGZvciB0aGUgVVJMLCB1cGRhdGUgc3RvcmVkIGNy
ZWRlbnRpYWxzIGJlZm9yZSBzZW5kaW5nIGEgcmVxdWVzdC4KICAgICAgICAgICAgIC8vIFRoaXMg
bWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5nIGFuIFhNTEh0
dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQgYWJvcnRpbmcg
aXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhlbnRpY2F0aW9u
IGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCi0gICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3Jh
Z2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgQ3JlZGVudGlh
bChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0
UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Np
b24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBDcmVkZW50aWFsKGQtPm1f
dXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVx
dWVzdCgpLnVybCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC0yOTIsNyArMjkw
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKIHsKICAgICBjb25zdCBVUkwmIHVybCA9IHJl
cXVlc3QudXJsKCk7CiAgICAgZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBkLT5tX3Bhc3Mg
PSB1cmwucGFzcygpOworICAgIGQtPm1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICBk
LT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgcmVxdWVzdC5y
ZW1vdmVDcmVkZW50aWFscygpOwogCkBAIC0zMDYsNyArMzA0LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UKICAgICB9IGVsc2UgewogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGFwcGx5aW5n
IGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSByZWRpcmVj
dCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8vIFVSTCBkaWRuJ3QgaW5jbHVkZSBjcmVkZW50
aWFscyBvZiBpdHMgb3duLgotICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5t
X3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAg
IGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpICYmICFy
ZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRl
bnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdl
KCkuZ2V0KHBhcnRpdGlvbiwgcmVxdWVzdC51cmwoKSk7CiAgICAgICAgICAgICBpZiAoIWNyZWRl
bnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlh
bCA9IGNyZWRlbnRpYWw7CkBAIC0zNzEsOCArMzY5LDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6
dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2gKIAogICAgIFN0cmluZyBwYXJ0aXRpb24gPSBmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlv
bigpOwogCi0gICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwo
KSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwg
PSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5t
X3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKKyAgICBpZiAoIWQt
Pm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzd29yZC5pc051bGwoKSkgeworICAgICAgICBh
dXRvIGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3N3
b3JkLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50
aWFsID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwuZ2V0KCkpOwogI2Vsc2UKQEAgLTM4Niw3ICsz
ODQsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVu
dGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogICAgICAgICAKICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlh
bC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgZC0+
bV91c2VyID0gU3RyaW5nKCk7Ci0gICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOworICAgICAg
ICBkLT5tX3Bhc3N3b3JkID0gU3RyaW5nKCk7CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNw
ZWNpZmljYXRpb24sIHRoZSB1c2VyIHNob3VsZG4ndCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMg
aWYgdGhlcmUgd2VyZSBpbmNvcnJlY3Qgb25lcyBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAppbmRleCAwYzJkM2YwNDQz
MDY1MWIzMzE5NTJiNmQwMTlmZTU2ZDFjNmIwNDU0Li5mNzUyYTZlZTM1YTcyMGM2ZDdiZDlhNGU3
NTg5MWRkMGE5NGFlOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKQEAgLTMzLDEyICszMywxMiBA
QAogI2VuZGlmCiAKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgY29uc3QgdWludDE2X3QgU29ja3NQcm94eVBvcnQgPSAxMDgwOworY29uc3RleHByIHVpbnQx
Nl90IFNvY2tzUHJveHlQb3J0ID0gMTA4MDsKIAotc3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBn
ZXRQcm94eVBvcnQoY29uc3QgVVJMJik7CiBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBjcmVhdGVQ
cm94eVVybChjb25zdCBVUkwmKTsKIAogQ3VybFByb3h5U2V0dGluZ3M6OkN1cmxQcm94eVNldHRp
bmdzKFVSTCYmIHByb3h5VXJsLCBTdHJpbmcmJiBpZ25vcmVIb3N0cykKQEAgLTYxLDcgKzYxLDcg
QEAgdm9pZCBDdXJsUHJveHlTZXR0aW5nczo6cmVidWlsZFVybCgpCiB2b2lkIEN1cmxQcm94eVNl
dHRpbmdzOjpzZXRVc2VyUGFzcyhjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQpCiB7CiAgICAgbV91cmwuc2V0VXNlcih1c2VyKTsKLSAgICBtX3VybC5zZXRQYXNzKHBh
c3N3b3JkKTsKKyAgICBtX3VybC5zZXRQYXNzd29yZChwYXNzd29yZCk7CiAKICAgICByZWJ1aWxk
VXJsKCk7CiB9CkBAIC0xMTgsOCArMTE4LDggQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3Jl
YXRlUHJveHlVcmwoY29uc3QgVVJMICZ1cmwpCiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byB1c2VycGFzcyA9ICh1cmwuaGFzVXNlcm5hbWUo
KSB8fCB1cmwuaGFzUGFzc3dvcmQoKSkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJs
LnBhc3MoKSwgIkAiKSA6IFN0cmluZygpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90
b2NvbCgpLCAiOi8vIiwgdXNlcnBhc3MsIHVybC5ob3N0KCksICI6IiwgU3RyaW5nOjpudW1iZXIo
KnBvcnQpKTsKKyAgICBhdXRvIHVzZXJwYXNzID0gdXJsLmhhc0NyZWRlbnRpYWxzKCkgPyBtYWtl
U3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJsLnBhc3N3b3JkKCksICJAIikgOiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyh1cmwucHJvdG9jb2woKSwgIjovLyIsIHVzZXJwYXNzLCB1
cmwuaG9zdCgpLCAiOiIsICpwb3J0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAppbmRleCBhZjMx
MzU0NmM0NGEzMjc3ZjA2YjQ4NTRlZjAzMDI3Yjg1ODE0NDAzLi41ODNlMDBjNGUzMTQ2OTllYTFm
NTQyZmUzNjkyNGJlZDBlMjFiMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVzZXJQYXNzKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFN0cmluZyB1c2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmwudXNlcigpOyB9Ci0gICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Qg
eyByZXR1cm4gbV91cmwucGFzcygpOyB9CisgICAgY29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29u
c3QgeyByZXR1cm4gbV91cmwucGFzc3dvcmQoKTsgfQogCiAgICAgdm9pZCBzZXREZWZhdWx0QXV0
aE1ldGhvZCgpIHsgbV9hdXRoTWV0aG9kID0ga0NVUkxBVVRIX0FOWTsgfQogICAgIHZvaWQgc2V0
QXV0aE1ldGhvZChsb25nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggNDkxNWQ5MGRmYWIy
Y2E0NWZkZmNjYzkxODJkZmFmYTM4ZmU2NGFhNi4uNDBjNzk4YTNhNTRjY2UxMmViNzcwNWI2MWEx
MTMzNjJkYmY2YTBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTIxNCw4ICsyMTQsOCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbAogCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGZpcnN0
UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCk7CiAKLSAgICBpZiAoIWQtPm1fdXNlci5pc051bGwo
KSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlh
bChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAg
aWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAg
ICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAKICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAg
ICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0
MDEpCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICAgICAg
cmVzdGFydFJlcXVlc3RXaXRoQ3JlZGVudGlhbChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCks
IGNyZWRlbnRpYWwpOwogCiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBk
LT5tX3Bhc3MgPSBTdHJpbmcoKTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwog
ICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNlciBzaG91bGRu
J3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3JyZWN0IG9uZXMg
cHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMyNyw3ICsz
MjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCiBPcHRpb25hbDxDcmVkZW50aWFsPiBSZXNv
dXJjZUhhbmRsZTo6Z2V0Q3JlZGVudGlhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgcmVkaXJlY3QpCiB7CiAgICAgLy8gbV91c2VyL21fcGFzcyBhcmUgY3JlZGVudGlhbHMg
Z2l2ZW4gbWFudWFsbHksIGZvciBpbnN0YW5jZSwgYnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8g
WE1MSHR0cFJlcXVlc3Qub3BlbigpLgotICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCB7IGQtPm1f
dXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lIH07CisgICAgQ3JlZGVu
dGlhbCBjcmVkZW50aWFsIHsgZC0+bV91c2VyLCBkLT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lIH07CiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSkg
ewogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpOwpA
QCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCgp
CiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKIAogICAgIGQtPm1fdXNl
ciA9IG5ld1VSTC51c2VyKCk7Ci0gICAgZC0+bV9wYXNzID0gbmV3VVJMLnBhc3MoKTsKKyAgICBk
LT5tX3Bhc3N3b3JkID0gbmV3VVJMLnBhc3N3b3JkKCk7CiAgICAgbmV3UmVxdWVzdC5yZW1vdmVD
cmVkZW50aWFscygpOwogCiAgICAgaWYgKGNyb3NzT3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmlu
ZGV4IDc2N2M1Nzk0OTk5Yzk0NjExODBiY2ZlZjBjMmExOTIyZmExMDcyZDYuLmVlNjAzZDcyMmY0
MWQwZDZmN2M0NmI5MDZmYjdhNTUxMDUyMGYzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNDIs
MTUgKzE0MiwxNSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24o
aWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogI2VuZGlmCiB7CiAgICAgLy8g
Q3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVj
dGlvbjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29u
J3QgYmUgbWFkZS4KLSAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3Mu
aXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKSB7CisgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzd29yZC5p
c0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpIHsKICAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwo
KSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7Ci0gICAg
ICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CisgICAgICAgIHVybFdp
dGhDcmVkZW50aWFscy5zZXRQYXNzd29yZChkLT5tX3Bhc3N3b3JkKTsKICAgICAgICAgZmlyc3RS
ZXF1ZXN0KCkuc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCiAgICAgaWYgKHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlICYmIGZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBk
LT5tX3Bhc3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYm
IGQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2
aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAg
ICAgICAgLy8gdHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFs
bG93ZWQgYnkgUkZDIDI2MTcuCiAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQpAQCAtMTYwLDcgKzE2MCw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0
ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0
IHBvc3NpYmxlIHRvIGltcGxlbWVudCBsb2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVz
dCB3aXRoIGtub3duIGluY29ycmVjdCBjcmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVk
aWF0ZWx5CiAgICAgICAgICAgICAvLyAoc28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cg
ZG9lc24ndCBwb3AgdXApLgogICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVz
dCgpLmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENy
ZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAg
ICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChm
aXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+
bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVy
bCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00MzUsNyArNDM1LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwo
KTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNz
KCk7CisgICAgZC0+bV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIGQtPm1fbGFzdEhU
VFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRl
bnRpYWxzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE9ubHkgY29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGlj
YXRpb24gY3JlZGVudGlhbHMgaWYgdGhpcyBpcyBhY3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUg
cmVkaXJlY3QKICAgICAgICAgLy8gVVJMIGRpZG4ndCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0
cyBvd24uCi0gICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0Vt
cHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGQtPm1f
dXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVz
cG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAg
ICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCA9IG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRp
dGlvbigpLCByZXF1ZXN0LnVybCgpKTsKQEAgLTUyMSwxNyArNTIxLDE1IEBAIGJvb2wgUmVzb3Vy
Y2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRo
ZW50aWNhdGlvbkNoCiAgICAgaWYgKCFjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNz
d29yZEJhc2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZC0+bV91c2Vy
LmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgTlNVUkxDcmVkZW50
aWFsICpjcmVkZW50aWFsID0gW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpk
LT5tX3VzZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDpkLT5tX3Bhc3MKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5j
ZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dOworICAgIGlmICghZC0+bV91
c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3N3b3JkLmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8g
Y3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNl
cjpkLT5tX3VzZXIKKyAgICAgICAgICAgIHBhc3N3b3JkOmQtPm1fcGFzc3dvcmQgcGVyc2lzdGVu
Y2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uXSk7CiAgICAgICAgIGQtPm1f
Y3VycmVudE1hY0NoYWxsZW5nZSA9IGNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCk7CiAgICAgICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAg
ICAgICAgcmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgQ3JlZGVudGlhbChjcmVkZW50aWFs
KSk7Ci0gICAgICAgIFtjcmVkZW50aWFsIHJlbGVhc2VdOworICAgICAgICByZWNlaXZlZENyZWRl
bnRpYWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNyZWRlbnRpYWwuZ2V0KCkpKTsKICAgICAgICAg
Ly8gRklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFz
a2VkIGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVk
IGV4cGxpY2l0bHkuCiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5t
X3Bhc3MgPSBTdHJpbmcoKTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCBk
ODI4ZGI3NjY4NDA0OTI3ZTU3NmM2YjMwOGU2ZjllN2U3NWZlYTJhLi4zZjJkMzZjZjU3NTUwNjU1
ZjM5ZmQ0MTEyNGM5ZDZmMWEyMmMyYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0y
NDEsNyArMjQxLDcgQEAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBSZXNvdXJjZVJlcXVlc3Q6OmNyZWF0
ZVNvdXBVUkkoKSBjb25zdAogICAgIC8vIHdoZW4gYm90aCB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3
b3JkIGFyZSBub24tbnVsbC4gV2hlbiB3ZSBoYXZlIGNyZWRlbnRpYWxzLCBlbXB0eSB1c2VybmFt
ZXMgYW5kIHBhc3N3b3JkcwogICAgIC8vIHNob3VsZCBiZSBlbXB0eSBzdHJpbmdzIGluc3RlYWQg
b2YgbnVsbC4KICAgICBTdHJpbmcgdXJsVXNlciA9IG1fdXJsLnVzZXIoKTsKLSAgICBTdHJpbmcg
dXJsUGFzcyA9IG1fdXJsLnBhc3MoKTsKKyAgICBTdHJpbmcgdXJsUGFzcyA9IG1fdXJsLnBhc3N3
b3JkKCk7CiAgICAgaWYgKCF1cmxVc2VyLmlzRW1wdHkoKSB8fCAhdXJsUGFzcy5pc0VtcHR5KCkp
IHsKICAgICAgICAgc291cF91cmlfc2V0X3VzZXIoc291cFVSSS5nZXQoKSwgdXJsVXNlci51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgc291cF91cmlfc2V0X3Bhc3N3b3JkKHNvdXBVUkkuZ2V0KCks
IHVybFBhc3MudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKaW5kZXggZjUxYzRmZDU3ZjhlMTRiOTY0YWI1OTZjYTlj
ZDNjYWZlODExODZkYS4uZTg1YmY0MDFmMzAxMzAyM2UwOGU5YWZmMmNhZjg3MGQzMWM4NjhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBVUkwgc291cFVSSVRvVVJMKFNvdXBVUkkqIHNvdXBVUkkpCiAg
ICAgICAgIC8vIGJ1aWx0LiBGaXhpbmcgc291cF91cmlfdG9fc3RyaW5nIGlzIGEgbm8tbm8gYXMg
dGhlIG1haW50YWluZXIgZG9lcwogICAgICAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRp
YmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCiAgICAgICAgIGlmIChzb3VwVVJJ
LT5wYXNzd29yZCkKLSAgICAgICAgICAgIHVybC5zZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291
cFVSSS0+cGFzc3dvcmQpKTsKKyAgICAgICAgICAgIHVybC5zZXRQYXNzd29yZChTdHJpbmc6OmZy
b21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHVybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAyOGQ4
NzNjNDYxMmRiZGNlNDE3OWMzYTM4ZWQwZGMwYTUwYjg4NzhhLi43MTgzZjkwNTZhODBkMGUzNmZm
ZGE3MGZkMjFiNGRmN2ZhNzBkNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgd3JpdGVV
UkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nIHRpdGxlLCBib29s
IHdpdGgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkg
ewotICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICB0aXRs
ZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRs
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0aXRsZSA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsK
ICAgICB9CkBAIC01NzksMTAgKzU3OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRo
RnJvbVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogICAg
ICAgICAvLyB0aGUgcGF0aC4gSWYgd2UgY2FuJ3QgZmluZCBpdCwgb3Igd2UncmUgY29taW5nIHVw
IHdpdGggdGhlIG5hbWUgZm9yIGEgbGluawogICAgICAgICAvLyB3ZSBqdXN0IHVzZSB0aGUgZW50
aXJlIHVybC4KICAgICAgICAgRFdPUkQgbGVuID0gZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0
ZW5zaW9uOwotICAgICAgICBTdHJpbmcgbGFzdENvbXBvbmVudCA9IGt1cmwubGFzdFBhdGhDb21w
b25lbnQoKTsKKyAgICAgICAgYXV0byBsYXN0Q29tcG9uZW50ID0ga3VybC5sYXN0UGF0aENvbXBv
bmVudCgpOwogICAgICAgICBpZiAoa3VybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFs
YXN0Q29tcG9uZW50LmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERX
T1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVu
Z3RoKCkpOwotICAgICAgICAgICAgU3RyaW5nVmlldyhsYXN0Q29tcG9uZW50KS5zdWJzdHJpbmco
MCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOworICAgICAg
ICAgICAgbGFzdENvbXBvbmVudC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVw
Y29udmVydChmc1BhdGhCdWZmZXIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGVu
ID0gc3RkOjptaW48RFdPUkQ+KGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgdXJs
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsKS5zdWJzdHJpbmcoMCwgbGVu
KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwpAQCAtNzA4LDcgKzcw
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVi
b2FyZFVSTCkKIAogICAgIFN0cmluZyB0aXRsZShwYXN0ZWJvYXJkVVJMLnRpdGxlKTsKICAgICBp
ZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gcGFzdGVib2FyZFVSTC51cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5s
YXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICB0aXRsZSA9IHBhc3RlYm9hcmRVUkwudXJsLmhvc3QoKS50b1N0cmlu
ZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
clN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApp
bmRleCAyYzZjNzBlODQ5OTVjMjlhYzE4ZmYzYzk1NDljNzg5OTY4Y2EwMWNhLi5kY2I0MzBiMjJm
NzU0NmJhZDM5NzA1ODM5M2Q4NDJhYjRlMDZlYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyU3RhdGUuY3BwCkBAIC0xNjUsMTcgKzE2NSwxNCBAQCBib29sIEJ1aWxkZXJT
dGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmls
dGVyT3BlcmF0aQogCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGZvciAo
YXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PihpblZhbHVlKSkgewot
CiAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlKSkgewogICAg
ICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUu
aXNVUkkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5n
IGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICBVUkwg
dXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwotCi0gICAgICAgICAgICBhdXRv
IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9u
cygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgICAgICAgICAgYXV0byBmaWx0ZXJV
UkwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgYXV0byBmcmFn
bWVudCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoZmlsdGVyVVJMKS5mcmFnbWVudElkZW50aWZp
ZXIoKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShmaWx0ZXJVUkwsIGZyYWdtZW50LnRvU3RyaW5nKCkp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKaW5kZXggZDc5ZTgwMDg4MDg1MDA1ZjFlMjM4NWEwODFi
YTE2MGFmYWJmMjIzOS4uODM0NzZmZTc2OWQ2ZGJlMDljZjU0NzkwMTU2ZGE2NTg4YzJkZTdmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKQEAgLTUzLDIzICs1
MywyNCBAQCBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhvc3RuYW1lKCkgY29uc3QKIAogU3RyaW5n
IFdvcmtlckxvY2F0aW9uOjpwb3J0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91cmwucG9ydCgp
ID8gU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgpLnZhbHVlKCkpIDogZW1wdHlTdHJpbmcoKTsK
KyAgICBhdXRvIHBvcnQgPSBtX3VybC5wb3J0KCk7CisgICAgcmV0dXJuIHBvcnQgPyBTdHJpbmc6
Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRp
b246OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHBhdGggPSBtX3VybC5wYXRoKCk7Ci0g
ICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmluZygpOworICAgIHJl
dHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygpOwogfQogCiBTdHJp
bmcgV29ya2VyTG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLnF1
ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIG1fdXJsLnF1ZXJ5KCk7Cisg
ICAgcmV0dXJuIG1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdXJs
LnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcg
V29ya2VyTG9jYXRpb246Omhhc2goKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBtX3VybC5mcmFnbWVudElkZW50aWZpZXJXaXRo
TGVhZGluZ051bWJlclNpZ24oKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRp
b246Om9yaWdpbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggMGQ1
M2JjZjkyM2VkNjEyNjUzOWYzNWRkMmI5NDljYTE0YjdiNTY3Yy4uMTg5NmMyNDExYjVkYzBiZjY4
MmY0MjUwODhlM2U2ODk2MGQyY2FmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApA
QCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5KFNlY3VyaXR5T3JpZ2luRGF0YSYmCiAgICAgOiBtX3RvcE9yaWdp
bihXVEZNb3ZlKHRvcE9yaWdpbikpCiAgICAgLCBtX3Njb3BlKFdURk1vdmUoc2NvcGUpKQogewot
ICAgIEFTU0VSVCghbV9zY29wZS5oYXNGcmFnbWVudCgpKTsKKyAgICBBU1NFUlQoIW1fc2NvcGUu
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogfQogCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDczODYyNTRlZGE5MmU5ODdkMjY5MjRkODU2
ZmMzZWQ2NGEzMDNmZWYuLmJhNzRmNmQxMDM0MTE4ZWY1MWM5Y2RhZWM3YmVkZTk3YzBjNWIyNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtNDYsMTMgKzQ2LDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVVJMIHN0YXRpYyBpbmxpbmUgdG9wT3JpZ2lu
VVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCitzdGF0aWMgVVJMIHRvcE9yaWdpblVS
TChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewogICAgIFVSTCB1cmw7CiAgICAgdXJs
LnNldFByb3RvY29sKG9yaWdpbi5wcm90b2NvbCgpKTsKICAgICB1cmwuc2V0SG9zdChvcmlnaW4u
aG9zdCgpKTsKLSAgICBpZiAob3JpZ2luLnBvcnQoKSkKLSAgICAgICAgdXJsLnNldFBvcnQoKm9y
aWdpbi5wb3J0KCkpOworICAgIHVybC5zZXRQb3J0KG9yaWdpbi5wb3J0KCkpOwogICAgIHJldHVy
biB1cmw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKaW5kZXggYmZjMTU3MjExNmNmMjk2N2FjODU2NjM1NGZlNDk0NzQ4N2Rj
ZTI1Yy4uZGJiNTk1YjMxMjdiZjIxYTNkYjQxOWI2NWM2ZGM0NzFjOGEyZWIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAg
LTQyNyw4ICs0MjcsNyBAQCBVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbikKICAgICBVUkwgdXJsOwogICAgIHVybC5zZXRQcm90b2NvbChvcmln
aW4ucHJvdG9jb2woKSk7CiAgICAgdXJsLnNldEhvc3Qob3JpZ2luLmhvc3QoKSk7Ci0gICAgaWYg
KG9yaWdpbi5wb3J0KCkpCi0gICAgICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAg
ICB1cmwuc2V0UG9ydCgqb3JpZ2luLnBvcnQoKSk7CiAgICAgcmV0dXJuIHVybDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMTUyODE1NTgyNTY5ODFhNDgzOGNk
NjM3M2IzNjcxYTVlZDA0MGFmOS4uYTBkZTQ5ZjA4ODQ0YTg2YzZlMzI5NzVjYzRiZDcwNDY3NWIy
YWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00MDIsNyArNDAy
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsLAogICAgIGlmICghdXNlci5pc051bGwoKSkKICAg
ICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNlcik7CiAgICAgaWYgKCFwYXNzd29y
ZC5pc051bGwoKSkKLSAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQp
OworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzc3dvcmQocGFzc3dvcmQpOwogCiAg
ICAgcmV0dXJuIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cAppbmRleCA5ZTBiNjgyY2RlZDJhZmJiZjU3YTAyODQ5ZGMzYjc5ZDc5YTc2NzIxLi45NTVkMzg4
ZTVlOTZlMzUxOTkzNjc0ZmI5NDllYTg3YWYzZmQzMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC0xMzMsNyArMTMz
LDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24oUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXEKICAgICAgICAgICAgIGhhbmRsZXIocmVkaXJl
Y3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVk
aXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIGRlbmllZCBi
eSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6IG5vdCBhbGxvd2VkIHRvIGZv
bGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGlyZWN0aW9uIHdpdGggbm9uIENPUlMgc2NoZW1l
IikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAobG9jYXRp
b24uaGFzVXNlcm5hbWUoKSB8fCBsb2NhdGlvbi5oYXNQYXNzd29yZCgpKSB7CisgICAgICAgIGlm
IChsb2NhdGlvbi5oYXNDcmVkZW50aWFscygpKSB7CiAgICAgICAgICAgICBoYW5kbGVyKHJlZGly
ZWN0aW9uRXJyb3IocmVkaXJlY3RSZXNwb25zZSwgbWFrZVN0cmluZygiQ3Jvc3Mtb3JpZ2luIHJl
ZGlyZWN0aW9uIHRvICIsIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQg
YnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiByZWRpcmVjdGlvbiBVUkwg
IiwgbG9jYXRpb24uc3RyaW5nKCksICIgaGFzIGNyZWRlbnRpYWxzIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTmV0d29ya0xvYWRD
aGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIENvCiAgICAgaHR0cHNVcGdyYWRlQ2hlY2tlci5xdWVyeSh1cmwuaG9zdCgpLnRvU3RyaW5n
KCksIG1fc2Vzc2lvbklELCBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBX
VEZNb3ZlKGhhbmRsZXIpXSAoYm9vbCBmb3VuZEhvc3QpIG11dGFibGUgewogICAgICAgICBpZiAo
Zm91bmRIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIG5ld1VSTCA9IHJlcXVlc3QudXJsKCk7Ci0g
ICAgICAgICAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0dHBzIl9zKTsKKyAgICAgICAgICAgIG5l
d1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0VVJMKG5l
d1VSTCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNjIzYTFhZGNlYzBj
ZjQzZGU0ZWE1NmQ1NzY5OTI1MGNiOWNlNWVlMi4uZTQ0NDA2NDcwNjU4YTYxYjc2NzM0NDkwYjE1
NjFiN2U1MzNlNWNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAg
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBhdXRvIHVybCA9IHJlcXVlc3QudXJsKCk7CiAg
ICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpVc2UgJiYgdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAg
ICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsK
KyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICByZXF1ZXN0LnJl
bW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgCkBA
IC0zNjUsNyArMzY1LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICAKICAgICBjb25z
dCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0g
ICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29y
ZCgpOwogICAgIG1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICBy
ZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXgg
ZmUxYjYzZTc4ZjY4MDQyOGNmZmU3MGFkOGY2ODUzYTgxZTJkYzczNy4uOWMwNDY1MDU4OTM5Y2Y2
NWZjMTBmNDc3MWVkMjE2NjYyYjZiOWY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtNjcsNyAr
NjcsNyBAQCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpOZXR3b3JrRGF0YVRhc2tTb3VwKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhcwogICAgICAgICBhdXRvIHVybCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgICAgIGlmIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHsKICAgICAgICAgICAgIG1fdXNlciA9IHVybC51c2Vy
KCk7Ci0gICAgICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICAgICAgICAgIG1f
cGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICAgICAgICAgIHJlcXVlc3QucmVtb3ZlQ3Jl
ZGVudGlhbHMoKTsKIAogICAgICAgICAgICAgaWYgKG1fdXNlci5pc0VtcHR5KCkgJiYgbV9wYXNz
d29yZC5pc0VtcHR5KCkpCkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIAogICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICB1cmwuc2V0VXNlcihtX3Vz
ZXIpOwotICAgIHVybC5zZXRQYXNzKG1fcGFzc3dvcmQpOworICAgIHVybC5zZXRQYXNzd29yZCht
X3Bhc3N3b3JkKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwogCiAgICAgbV91c2VyID0gU3Ry
aW5nKCk7CkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250
aW51ZUhUVFBSZWRpcmVjdGlvbigpCiAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVy
bCgpOwogICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9IHVybC5wYXNz
KCk7CisgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFzdEhUVFBNZXRo
b2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxz
KCk7CiAKQEAgLTExMTcsMjQgKzExMTcsMjIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpz
dGFydGluZ0NhbGxiYWNrKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGEKIH0K
IAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKKwogYm9vbCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQb2xpY3lTZXR0aW5nKCkgY29uc3QKIHsKICAgICAvLyBG
b2xsb3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGlnYXRpb24gMToKICAgICAvLyAgIkxpbWl0IEhT
VFMgU3RhdGUgdG8gdGhlIEhvc3RuYW1lLCBvciB0aGUgVG9wIExldmVsIERvbWFpbiArIDEiCi0g
ICAgaWYgKGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgfHwgaG9zdHNBcmVFcXVhbChtX2N1cnJlbnRS
ZXF1ZXN0LnVybCgpLCBtX2N1cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpIHx8
IGlzUHVibGljU3VmZml4KG1fY3VycmVudFJlcXVlc3QudXJsKCkuaG9zdCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBpc1RvcExldmVsTmF2aWdhdGlvbigpCisgICAgICAgIHx8IG1fY3VycmVu
dFJlcXVlc3QudXJsKCkuaG9zdCgpID09IG1fY3VycmVudFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKS5ob3N0KCkKKyAgICAgICAgfHwgaXNQdWJsaWNTdWZmaXgobV9jdXJyZW50UmVxdWVz
dC51cmwoKS5ob3N0KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKIH0KIAogYm9vbCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpzaG91bGRBbGxvd0hTVFNQcm90b2NvbFVwZ3JhZGUoKSBjb25zdAog
ewotICAgIC8vIEZvbGxvdyBBcHBsZSdzIEhTVFMgYWJ1c2UgbWl0Z2F0aW9uIDI6CisgICAgLy8g
Rm9sbG93IEFwcGxlJ3MgSFNUUyBhYnVzZSBtaXRpZ2F0aW9uIDI6CiAgICAgLy8gIklnbm9yZSBI
U1RTIFN0YXRlIGZvciBTdWJyZXNvdXJjZSBSZXF1ZXN0cyB0byBCbG9ja2VkIERvbWFpbnMiCi0g
ICAgaWYgKCFpc1RvcExldmVsTmF2aWdhdGlvbigpICYmICFtX2N1cnJlbnRSZXF1ZXN0LmFsbG93
Q29va2llcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gaXNUb3BMZXZlbE5hdmlnYXRpb24oKQorICAgICAgICB8fCBtX2N1cnJlbnRSZXF1
ZXN0LmFsbG93Q29va2llcygpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnByb3Rv
Y29sVXBncmFkZWRWaWFIU1RTKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKQEAgLTExNTMsNiAr
MTE1MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6aHN0c0VuZm9yY2VkKFNvdXBIU1RT
RW5mb3JjZXIqLCBTb3VwTWVzc2FnZSogc291cE1lc3NhCiAgICAgaWYgKHNvdXBNZXNzYWdlID09
IHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0KCkpCiAgICAgICAgIHRhc2stPnByb3RvY29sVXBncmFk
ZWRWaWFIU1RTKHNvdXBNZXNzYWdlKTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkU3RhcnRSZXF1ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRl
eCAyZDc3NjM0NWUyMjQ5NmNiODc1MGMyZTYxNDljZDA2NmFjMGM3ODAzLi40YzgzOGFmYjczMDU5
NjM1ODkzOWFmYjViYjQ1NjRkMDBhOGE2MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5o
CkBAIC02MywyNSArNjMsMjUgQEAgcHVibGljOgogICAgIFdURjo6U3RyaW5nIGhvc3QoKSBjb25z
dAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4g
bV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5ob3N0KCkudG9TdHJpbmcoKSA6
IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aG9zdCgpLnRvU3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgcHJvdG9jb2woKSBjb25zdAogICAgIHsK
ICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1cm4gbV9wYXJzZWRV
UkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCkgOiBXVEY6
OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnByb3RvY29sKCkudG9TdHJp
bmcoKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBwYXRoKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5p
c1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygp
OworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPnBhdGgoKS50b1N0cmluZygpOwogICAgIH0K
IAogICAgIFdURjo6U3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5p
c1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKSA6IFdURjo6U3RyaW5n
KCk7CisgICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+bGFzdFBhdGhDb21wb25lbnQoKS50b1N0
cmluZygpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQu
bW0KaW5kZXggYjFjMzZkYjJjMDQ2OGE2NTFkNjQ3NmEyZjlkZWNkYjMyOTY1YmRkZC4uMDdjZDEw
ZjJhM2RmOTkwYzg2NmUwZWU4OWM5OWEwNjM1MGZiZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KQEAgLTIyMCw4ICsyMjAsOCBAQCB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewogICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5
c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAgICAgICBXVEY6
OlVSTCBkZXN0aW5hdGlvblVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KGRvd25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKLSAgICAgICAgICAgIGlmICgh
ZGVzdGluYXRpb25VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkubGVuZ3RoKCkpCisgICAgICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOworICAgICAgICAgICAgaWYg
KCFkZXN0aW5hdGlvblVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvblVSTC5zZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQcm94eS5yZXF1
ZXN0KCkudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgY29udHJvbGxl
ci0+ZmluaXNoKGRlc3RpbmF0aW9uVVJMKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDQ3YjU0Y2Fk
ODQwMTE1ODZlZmI4MDk5YmExYTg5MzViNzEyNGI1ZDEuLjM5MzZlYjdiOTJmMGMzOWUyMTdhMzUx
OThhNjRhNzQwY2RkMmQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTExNCwxNSArMTE0LDkgQEAgdm9pZCBEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hNYXAKIAogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
bV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICAgICAgYXV0byBvcmln
aW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZURpcmVjdG9yeSwgIioiKTsKLQogICAgICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTYWx0Rm9yT3JpZ2luPj4gZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbnM7Ci0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7Ci0gICAg
ICAgICAgICBVUkwgdXJsOwotICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJmaWxlIl9zKTsK
LSAgICAgICAgICAgIHVybC5zZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgICAgICBTdHJp
bmcgZGV2aWNlSWRIYXNoU2FsdCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fZGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAgICAgIGF1dG8gZGV2
aWNlSWRIYXNoU2FsdCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChvcmlnaW5QYXRo
KS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAKICAgICAgICAgICAgIGlmIChoYXNo
U2FsdFNpemUgIT0gZGV2aWNlSWRIYXNoU2FsdC5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlOiBUaGUgbGVuZ3RoIG9mIHRoZSBoYXNoIHNhbHQgKCVkKSBpcyBkaWZmZXJlbnQgdG8gdGhl
IGxlbmd0aCBvZiB0aGUgaGFzaCBzYWx0cyBkZWZpbmVkIGluIFdlYktpdCAoJWQpIiwgZGV2aWNl
SWRIYXNoU2FsdC5sZW5ndGgoKSwgaGFzaFNhbHRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBkMzA1NTUzMDgw
NDYyMzgxMzFmMGJmZWQ0MmQ1ZjMwMTFmMmIxZTI1Li5iN2FmNWNkYWViNWQwM2IzMDliYWRiZDk2
MzUzYTU2YmZiZDJmN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC0xNDUsMTYgKzE0NSwxNSBAQCBQbHVnaW5Nb2R1
bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbgogICAgIHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCitzdGF0aWMgU3Ry
aW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nIGV4dGVuc2lv
bjsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICBp
ZiAoIWZpbGVuYW1lLmVuZHNXaXRoKCcvJykpIHsKLSAgICAgICAgc2l6ZV90IGV4dGVuc2lvblBv
cyA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgICAgIGlmIChleHRlbnNpb25Qb3Mg
IT0gbm90Rm91bmQpCi0gICAgICAgICAgICBleHRlbnNpb24gPSBmaWxlbmFtZS5zdWJzdHJpbmco
ZXh0ZW5zaW9uUG9zICsgMSk7Ci0gICAgfQotICAgIHJldHVybiBleHRlbnNpb24uY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CisgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcvJykpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgc2l6ZV90IGxhc3REb3RQb3NpdGlvbiA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcu
Jyk7CisgICAgaWYgKGxhc3REb3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyaW5nKGxhc3REb3RQb3NpdGlvbiArIDEp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ZTFiODY3YzU2NzJh
MWVhNWVmMzQ3ODVkMWMwNjY1ZTIxZWExYTZhLi42OTE0MTJmMzhmOGVjZTIwNTVhNDE0OGNlOGU1
OGNlNGQ3Yjc5NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTEyNTYsNyArMTI1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAjZW5kaWYKIAog
ICAgIC8vIFdlIGZhaWxlZCB0byBpc3N1ZSBhbiB1bml2ZXJzYWwgZmlsZSByZWFkIGFjY2VzcyBz
YW5kYm94LCBmYWxsIGJhY2sgdG8gaXNzdWluZyBvbmUgZm9yIHRoZSBiYXNlIFVSTCBpbnN0ZWFk
LgotICAgIGF1dG8gYmFzZVVSTCA9IFVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKKyAg
ICBhdXRvIGJhc2VVUkwgPSB1cmwudHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCk7CiAgICAgYXV0byBi
YXNlUGF0aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBpZiAoYmFzZVBhdGguaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyNDcsNyArNTI0Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91
bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCiAgICAgICAg
ICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQotICAgICAgICAgICAg
JiYgKG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUtPnVybCgpLCByZXF1
ZXN0LnVybCgpKSA6IGZhbHNlKQorICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFp
bkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCiAgICAgICAgICAg
ICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZp
Z2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9u
ID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCks
IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBz
aG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZy
YW1lTmF2aWdhdGlvbik7CkBAIC01MzczLDcgKzUzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRl
ZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFj
dGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lID8gIWhvc3RzQXJlRXF1YWwobV9tYWluRnJhbWUt
PnVybCgpLCByZXF1ZXN0LnVybCgpKSA6IGZhbHNlOworICAgICAgICBib29sIHNob3VsZE9wZW5B
cHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVx
dWVzdC51cmwoKS5ob3N0KCk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6
TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBz
b3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0
KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSkpOwogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92ZShsaXN0
ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwpAQCAtNTU3MSw3ICs1NTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW8KIAogICAgICAgICByZXBseShuZXdQYWdlLT53ZWJQYWdlSUQoKSwgbmV3UGFnZS0+Y3JlYXRp
b25QYXJhbWV0ZXJzKG1fcHJvY2VzcywgKm5ld1BhZ2UtPmRyYXdpbmdBcmVhKCkpKTsKIAotICAg
ICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVSTCksIHJlcXVl
c3QudXJsKCkpOworICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5l
eHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBVUkwoeyB9LCBtYWluRnJhbWVVUkwpLmhvc3Qo
KSA9PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKIAogI2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAg
bmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbiA9IHRydWU7CkBAIC01NTc5LDcgKzU1NzksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBPcHRpbwogICAgIH07CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJH
ZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFo
b3N0c0FyZUVxdWFsKG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVl
c3QudXJsKCkpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2luYXRpbmdGcmFt
ZUluZm8tPnJlcXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAg
ICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUo
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvLnB0cigp
LCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICB0cnlT
T0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKnRoaXMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVhdHVyZXMpXSAoUmVmPEFQSTo6TmF2
aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMyNTg4
YThhMDkxZDRiMDg3NTI4Y2MzMjU4OGQ3MGUzYjQ1MzFiZWYuLmU0YTg2ZmFhZjMxODM4YzhjZmEz
ZWQ3OWU4OWI4OTRkYzVjMjAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNTY3LDExICs1NjcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJp
bmcKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJpbmcgZG9lcyBub3QgcG9p
bnQgdG8gYSBkaXJlY3RvcnkuCiAgICAgLy8gR2V0IHVybCdzIGJhc2UgVVJMIHRvIGFkZCB0byBt
X2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuCi0gICAgVVJMIGJhc2VVUkwoVVJMKCks
IHVybC5iYXNlQXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHBhdGggPSBiYXNlVVJMLmZpbGVTeXN0
ZW1QYXRoKCk7CisgICAgYXV0byBwYXRoID0gdXJsLnRydW5jYXRlZEZvclVzZUFzQmFzZSgpLmZp
bGVTeXN0ZW1QYXRoKCk7CiAgICAgaWYgKHBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRv
ZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBh
c3N1bWVkCiAgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJl
YWR5LgogICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggMzE1Y2YzZmYxMzQxNGJlMTgw
MzFmNzAxNmFkNzI2NjUxNGM0NDk1Yy4uZjM0MjNhOTJhYmFkOWJmYWEwZjhlZWQ5MjEyYmUwYTJh
N2M1ZDQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNDE5LDcg
KzQxOSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlu
cyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICBmb3IgKE5TU3Ry
aW5nICpkb21haW4gaW4gZG9tYWlucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIFVSTCB1cmwg
eyBVUkwoKSwgZG9tYWluIH07CiAgICAgICAgICAgICAgICAgaWYgKHVybC5wcm90b2NvbCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgdXJsLnNldFByb3RvY29sKCJodHRwcyJfcyk7
CisgICAgICAgICAgICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGFwcEJvdW5kRG9t
YWluIHsgdXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDkwMzk5
MGJmOTRlODM4NWZkZTlmMTU0YzNkMzVkYWU1MzNkMDAwM2IuLjQ4NzUxYWJmNDgzMjQ1ODk2MWJl
NzNhYTVhNTk1YjA1ZGVjZWFmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC02MCwxOSArNjAsMTAgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKICAgICBpZiAobV9tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAot
ICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICBVUkwgdXJsOwotICAgICAgICB1
cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgICAgICB1cmwuc2V0UGF0aChvcmlnaW5QYXRo
KTsKLQotICAgICAgICBTdHJpbmcgbWVkaWFLZXlJZGVudGlmaWVyID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7Ci0KLSAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpOwotICAgICAg
ICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
cmVzdWx0cy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpblBh
dGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
LCAiKiIpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChvcmlnaW5QYXRoKS5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7Cisg
ICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQoKnNlY3VyaXR5T3JpZ2luKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IGFlZDMwMWE1NGRkOTliZWI2OGZiMTQzOGQyZDFjMjU0ZDAzMDE2ZTQuLmU0ZWZhNDgwOWYwYTNm
ZjUwYTYxNmZlMTFhNzUwNTg5YTQ3OGVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTU2MiwxMCArMTU2Miw4IEBAIHZv
aWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQogICAgIGlmIChbbV9wZGZEb2N1bWVu
dCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7CiAKLSAgICBp
ZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0
VVJMRnJhZ21lbnQ6KV0pIHsKLSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdtZW50ID0gbV9mcmFt
ZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9s
bGVyIHNldFVSTEZyYWdtZW50OnBkZlVSTEZyYWdtZW50XTsKLSAgICB9CisgICAgaWYgKFttX3Bk
ZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdt
ZW50OildKQorICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6bV9m
cmFtZS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsK
IH0KIAogdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3
NjhiYTJkN2M0Njg2YzA2ZWU5NzRhYmJkNjUyNTQxMWYzYmJjYzkzLi40MWQzZWQ4NWUzMzdjNTE2
Y2I1Y2RlMGQ5N2NlMjE4Y2EyMTUxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAKQEAgLTI0LDE3ICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CiAKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgotCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnUuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQyLDcgKzM4LDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OmNvbnRleHRNZW51RGVzdHJveWVkKCkKIHsKQEAgLTU2LDE5ICs1MSwyMSBAQCB2b2lkIFdlYkNv
bnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogfQogCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShj
b25zdCBGcmFtZSogZnJhbWUpCisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdp
dGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFy
Y2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2VhcmNoU3Ry
aW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFjZSgiJTIw
Il9zLCAiKyJfcyk7CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93d3cuZ29v
Z2xlLmNvbS9zZWFyY2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgiOworICAg
IGF1dG8gc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOworICAg
IHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcgPSBlbmNv
ZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNoU3RyaW5n
LnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgeyB9
LCAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZp
ZT1VVEYtOCZvZT1VVEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkgewotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9j
YXRpb24oVVJMIHsgVVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgfQorICAg
IFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6OlByb2Nl
c3NpbmdVc2VyR2VzdHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5n
ZUxvY2F0aW9uKHNlYXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlzdG9yeTo6
Tm8sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1Vw
SW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikKQEAgLTkxLDE0ICs4OCwxOCBAQCB2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CisKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykK
Kwogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKIHsKICAgICBt
X3BhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KaW5kZXggODA5NGE2MjgyMjYxYjVlODM5NzQ1ZDg2ZTYwNDNhZjRj
ZTZjNzIzOC4uMzBjNmZmZTIzZjFlNDlmMTVmNjY4MzhiNjg0MWI1NjYyYzdlZWYxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIEVsZW1lCiAKICAgICBTdHJpbmcgdGl0bGUgPSBsYWJlbDsKICAgICBpZiAodGl0bGUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Cisg
ICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICAg
ICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlz
aWJsZVN0cmluZyh1cmwpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXgg
Yzg0NDhjNWFjMWY0MzYyZTQ0MDNjM2FjMjlhMjg2YTlhZjVlYmI4ZS4uY2NhZTIxMmM1NmNhNDg5
MWI2N2M2ZDNiZWU0Y2QzMzE5MmIyYTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
QEAgLTg4Miw3ICs4ODIsNyBAQCBzdGF0aWMgQk9PTCBzaG91bGRUcnlBcHBMaW5rKFdlYlZpZXcg
KndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mCiAgICAgaWYgKCFhY3Rp
b24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIGlm
ICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSAmJiBob3N0c0FyZUVxdWFs
KHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgYWN0aW9uLnVybCgpKSkKKyAgICBpZiAo
dGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgdGFyZ2V0RnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLmhvc3QoKSA9PSBhY3Rpb24udXJsKCkuaG9zdCgpKQogICAgICAgICBy
ZXR1cm4gTk87CiAKICAgICByZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNTM2NzNlOWUyZjVlZDNiZjRjYTUxMjRjOTJmNDE2Y2Yz
YzM3MmVmZi4uN2Q0ODllNjBmZjVhODEyNWM0ZDJjZmRhYWE2NDFjNTdhMThhOTQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yMjg2LDE0ICsy
Mjg2LDEwIEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZvcldl
YkFyY2hpdmU6KFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudEZvckltYWdlRGF0YTooTlNEYXRhICopZGF0YSB3aXRoUmVs
YXRpdmVVUkxQYXJ0OihOU1N0cmluZyAqKXJlbGF0aXZlVVJMUGFydCBhbmRNSU1FVHlwZTooTlNT
dHJpbmcgKiltaW1lVHlwZQogewotICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9IFtbV2ViUmVz
b3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxh
dGl2ZVBhcnQocmVsYXRpdmVVUkxQYXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTptaW1lVHlwZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZTpuaWwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZU5hbWU6
bmlsXTsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiBfZGF0YVNv
dXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZV07Ci0gICAg
W3Jlc291cmNlIHJlbGVhc2VdOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBhdXRvIHJlc291
cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YQorICAg
ICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmcgeyByZWxhdGl2ZVVS
TFBhcnQgfSkKKyAgICAgICAgTUlNRVR5cGU6bWltZVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwg
ZnJhbWVOYW1lOm5pbF0pOworICAgIHJldHVybiBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVu
dEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2UuZ2V0KCldOwogfQogCiAtIChCT09M
KWZvY3VzZWROb2RlSGFzQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYWM2YjcxMzhiODg5N2MzODkyNTNlMjUyNDUwNGQzNDBl
MDY2OWI3YS4uN2E0ZjVhOGVmMmUwYzVlNmM1OWFhY2RmMmEwMTQ4YTY2MTdiMjQ1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yMzA2
LDcgKzIzMDYsNyBAQCAtICh2b2lkKWNsb3NlCiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilf
d2ViX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVi
b2FyZCBwYXN0ZWJvYXJkVHlwZTooTlNTdHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbWFnZU1JTUVU
eXBlOihOU1N0cmluZyAqKWltYWdlTUlNRVR5cGUKIHsKLSAgICBhdXRvIGZpbGVuYW1lID0gW2lt
YWdlTUlNRVR5cGUgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5nOkAiLyIgd2l0
aFN0cmluZzpAIi4iXTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlwZSBzdHJp
bmdCeVJlcGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAiLiJdOwog
ICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV0KICAgICAgICAgVVJM
OlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoZmlsZW5hbWUpIE1JTUVUeXBlOmltYWdlTUlN
RVR5cGUgdGV4dEVuY29kaW5nTmFtZTpuaWwgZnJhbWVOYW1lOm5pbF0pOwogICAgIHJldHVybiBb
W3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVz
b3VyY2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGFhNTFiNjM5
NDg4OGE3MGI3ZjBkOWRiYTA1MWZlMjViMWUxNmZmOTcuLmYxNDE4NjMwZWY2ZTlkYTJjMzM5ZjBh
ZDFlZDhlZTY2OWE4ODg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1
NSw3ICsyNTUsNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVy
PilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKICAgICAgICAgcmV0dXJuIFtbW1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKIAogICAgIE5TVVJMICp1
cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBOU1N0cmluZyAqYWJz
b2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKKyAgICBTdHJpbmcgYWJzb2x1
dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9oaXRU
ZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFi
c29sdXRlVVJMU3RyaW5nLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1t
ZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNjQxYWMzNTRjMzQxOTY3ZWE2Y2VkNjkw
ZDVlNmQ0NWM2YzJjMmExYS4uY2M4Nzc1M2EyODQ3MjhjOTJiNjcwOGJiNGEwNjhjODBjYTU3MzVh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhLCBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMTEgKzM4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4g
UGx1Z2luUGFja2FnZUJ5TmFtZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQ
bHVnaW5QYWNrYWdlPj4gUGx1Z2luUGFja2FnZUJ5TmFtZU1hcDsKIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAKLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11
bVBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlU2l6ZSA9IDMyNzY4OworY29uc3RleHByIHNp
emVfdCBtYXhpbXVtUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVTaXplID0gMzI3Njg7CiAK
IHN0YXRpYyBib29sIGdQZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUlzRW5hYmxlZDsKIApA
QCAtNTUsOSArNTUsNiBAQCBTdHJpbmcmIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlUGF0
aCgpCiAjZW5kaWYKIAogUGx1Z2luRGF0YWJhc2U6OlBsdWdpbkRhdGFiYXNlKCkKLSNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQotICAgIDogbV9wZXJzaXN0ZW50TWV0
YWRhdGFDYWNoZUlzTG9hZGVkKGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKQEAgLTIyOCw3ICsyMjUs
NyBAQCBQbHVnaW5QYWNrYWdlKiBQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gcGx1Z2luQ2hvaWNlc1swXTsKIH0KIAot
U3RyaW5nIFBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbikgY29uc3QKK1N0cmluZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRl
bnNpb24oU3RyaW5nVmlldyBleHRlbnNpb24pIGNvbnN0CiB7CiAgICAgaWYgKGV4dGVuc2lvbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI1MCw3ICsyNDcsNyBAQCBT
dHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKSBjb25zdAogICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVu
c2lvbnMgPSBtaW1lX2l0LT52YWx1ZTsKICAgICAgICAgICAgIGJvb2wgZm91bmRNYXBwaW5nID0g
ZmFsc2U7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5z
aXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGV4dGVuc2lvbnNbaV0sIGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgZXh0ZW5zaW9uc1tpXSB9LCBleHRlbnNpb24p
KSB7CiAgICAgICAgICAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbiA9ICgqaXQpLmdl
dCgpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRQbHVnaW4gJiYgUGx1Z2lu
UGFja2FnZTo6ZXF1YWwoKnBsdWdpbiwgKnByZWZlcnJlZFBsdWdpbikpCkBAIC0yODQsMjAgKzI4
MSwxOSBAQCBQbHVnaW5QYWNrYWdlKiBQbHVnaW5EYXRhYmFzZTo6ZmluZFBsdWdpbihjb25zdCBV
UkwmIHVybCwgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHBsdWdpbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICAKLSAgICBT
dHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBhdXRvIGZpbGVu
YW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRo
KCcvJykpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
LSAgICBpbnQgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKLSAgICBp
ZiAoZXh0ZW5zaW9uUG9zID09IC0xKQotICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvIGRvdFBv
c2l0aW9uID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoZG90UG9zaXRpb24g
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFN0cmluZyBt
aW1lVHlwZUZvckV4dGVuc2lvbiA9IE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVuYW1lLnN1YnN0
cmluZyhleHRlbnNpb25Qb3MgKyAxKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9u
ID0gTUlNRVR5cGVGb3JFeHRlbnNpb24oZmlsZW5hbWUuc3Vic3RyaW5nKGRvdFBvc2l0aW9uICsg
MSkpOwogICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbiA9IHBsdWdpbkZvck1JTUVUeXBlKG1pbWVU
eXBlRm9yRXh0ZW5zaW9uKTsKICAgICBpZiAoIXBsdWdpbikgewotICAgICAgICAvLyBGSVhNRTog
aWYgbm8gcGx1Z2luIGNvdWxkIGJlIGZvdW5kLCBxdWVyeSBXaW5kb3dzIGZvciB0aGUgbWltZSB0
eXBlCi0gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIC8vIEZJWE1FOiBJZiBubyBwbHVnaW4gY291bGQgYmUgZm91bmQs
IHF1ZXJ5IFdpbmRvd3MgZm9yIHRoZSBNSU1FIHR5cGUgY29ycmVzcG9uZGluZyB0byB0aGUgZXh0
ZW5zaW9uLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCiAgICAgbWltZVR5
cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbjsKQEAgLTM3NCw2ICszNzAsNyBAQCBib29sIFBsdWdp
bkRhdGFiYXNlOjphZGREaXNhYmxlZFBsdWdpbkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
IH0KIAogI2lmICFFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKwogLy8gRm9yIFNhZmFyaS9X
aW4gdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZAogLy8gaW4gUGx1
Z2luRGF0YWJhc2VXaW4uY3BwLCBidXQgaWYgd2UgY2FuIHVzZSBXZWJDb3JlIGNvbnN0cnVjdHMK
IC8vIGZvciB0aGUgbG9naWMgd2Ugc2hvdWxkIHBlcmhhcHMgbW92ZSBpdCBoZXJlIHVuZGVyIFhQ
X1dJTj8KQEAgLTQ3MCw4ICs0NjcsOCBAQCBzdGF0aWMgYm9vbCByZWFkVGltZSh0aW1lX3QmIHJl
c3VsdFRpbWUsIGNoYXIqJiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciBzY2hlbWFWZXJzaW9uID0gJzEnOwotc3RhdGljIGNv
bnN0IGNoYXIgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZVtdID0gIlBsdWdp
bk1ldGFkYXRhQ2FjaGUuYmluIjsKK2NvbnN0ZXhwciBjaGFyIHNjaGVtYVZlcnNpb24gPSAnMSc7
Citjb25zdGV4cHIgY2hhciBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lW10g
PSAiUGx1Z2luTWV0YWRhdGFDYWNoZS5iaW4iOwogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2Fk
UGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogewpAQCAtNjE3LDUgKzYxNCw3IEBAIHZvaWQgUGx1
Z2luRGF0YWJhc2U6OnNldFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aChjb25zdCBTdHJpbmcm
IHBlcnNpc3RlbnRNZXRhCiB7CiAgICAgV2ViQ29yZTo6cGVyc2lzdGVudFBsdWdpbk1ldGFkYXRh
Q2FjaGVQYXRoKCkgPSBwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGg7CiB9CisKICNlbmRpZgor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmgKaW5kZXggYWNjMGUxZmJhNzQ2NDI5NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNy4uOWIzNGI2
ZjQ0OGYzOTQxNGMzMzhiMjFmZTE1MTcxODYzMGM2ZTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMSw2ICsxLDYgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjUsMjEg
KzI1LDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGx1Z2luRGF0YWJhc2Vf
aAotI2RlZmluZSBQbHVnaW5EYXRhYmFzZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBs
dWdpblBhY2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVt
ZW50OwotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgUGx1
Z2luRGF0YWJhc2VDbGllbnQ7Ci0gICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKIAogICAgIHR5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8UGx1Z2luUGFja2FnZT4sIFBsdWdpblBhY2thZ2VIYXNoLCBQbHVn
aW5QYWNrYWdlSGFzaFRyYWl0cz4gUGx1Z2luU2V0OwogCkBAIC03OSw3ICs3Miw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVn
aW5EaXJlY3RvcmllcygpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5EaXJlY3Rvcmll
cygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRGlyZWN0b3JpZXM7IH0KIAotICAgICAgICBTdHJp
bmcgTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgTUlNRVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBleHRlbnNpb24p
IGNvbnN0OworCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICAg
ICAgICAgc3RhdGljIGJvb2wgaXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgc2V0UGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKGJvb2wg
aXNFbmFibGVkKTsKQEAgLTEwOCwxMCArMTAyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBIYXNoTWFwPFN0cmluZywgdGltZV90PiBtX3BsdWdpblBhdGhzV2l0aFRpbWVzOwogICAg
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+LCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IG1fcHJlZmVycmVkUGx1Z2luczsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX01FVEFEQVRBX0NBQ0hFKQotICAgICAgICBib29sIG1fcGVyc2lzdGVudE1ldGFkYXRhQ2Fj
aGVJc0xvYWRlZDsKKyAgICAgICAgYm9vbCBtX3BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlSXNMb2Fk
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBjMjY1ZTA4M2UxZjdj
OWFmYzgzYmM4ZTAxZThmNDRlZWY3YWI1M2I5Li43ZjM4YmJhOTg2NDlmNDhlNzlkYzZkZDljOTNk
ZjY1MGU1ODNkMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yNSwyMSAr
MjUsMTQgQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKLSNpbmNsdWRl
ICJXZWJFbGVtZW50UHJvcGVydHlCYWcuaCIKLSNpbmNsdWRlICJXZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIFdlYkNvbnRleHRNZW51Q2xpZW50OjpXZWJDb250ZXh0
TWVudUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7
CkBAIC01NSwyMiArNDgsMjMgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRV
UkwoY29uc3QgVVJMJiB1cmwpCiAgICAgbV93ZWJWaWV3LT5kb3dubG9hZFVSTCh1cmwpOwogfQog
Ci12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1l
KiBmcmFtZSkKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29u
c3QgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7Ci0gICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hp
dGVTcGFjZSgpOwotICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhzZWFyY2hTdHJpbmcpOwotICAgIGVuY29kZWQucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7
CisgICAgYXV0byBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZWFy
Y2g/cT0iICsgZW5jb2RlZCArICImaWU9VVRGLTgmb2U9VVRGLTgiOworICAgIGF1dG8gc2VhcmNo
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOworICAgIHNlYXJjaFN0cmlu
Zy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBzZWFyY2hTdHJpbmcgPSBlbmNvZGVXaXRoVVJMRXNj
YXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CisgICAgc2VhcmNoU3RyaW5nLnJlcGxhY2UoIiUy
MCJfcywgIisiX3MpOworICAgIGF1dG8gc2VhcmNoVVJMID0gVVJMIHsgeyB9LCAiaHR0cHM6Ly93
d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT0iICsgc2VhcmNoU3RyaW5nICsgIiZpZT1VVEYtOCZvZT1V
VEYtOCIgfTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsK
LSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oVVJMIHsg
VVJMIHsgfSwgdXJsIH0sIHsgfSwgbnVsbHB0ciwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFdlYkNvcmU6OlByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSB9OworICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNl
YXJjaFVSTCwgeyB9LCBudWxscHRyLCBXZWJDb3JlOjpMb2NrSGlzdG9yeTo6Tm8sIFdlYkNvcmU6
OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBXZWJDb3JlOjpSZWZlcnJlclBvbGljeTo6RW1wdHlT
dHJpbmcsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5
KEZyYW1lKikKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShX
ZWJDb3JlOjpGcmFtZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA2MjIyODIwNDdmMWE0ZmUzYmExOGYwMzFiOTZmM2QzMzA2
YzRhMzVkLi41MzliZTc3OTMwMTMwY2VkYmI4NDM4NWEyODY1OWU4ZTEwNDRmNjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBPYmplY3RDb250
ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0CiAKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0
cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0aCgpKTsK
LSAgICAgICAgbWltZVR5cGUgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5N
SU1FVHlwZUZvckV4dGVuc2lvbihkZWNvZGVkUGF0aC5zdWJzdHJpbmcoZGVjb2RlZFBhdGgucmV2
ZXJzZUZpbmQoJy4nKSArIDEpKTsKKyAgICAgICAgbWltZVR5cGUgPSBQbHVnaW5EYXRhYmFzZTo6
aW5zdGFsbGVkUGx1Z2lucygpLT5NSU1FVHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IHsgZGVj
b2RlZFBhdGggfS5zdWJzdHJpbmcoZGVjb2RlZFBhdGgucmV2ZXJzZUZpbmQoJy4nKSArIDEpKTsK
ICAgICB9CiAKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjYmQ5YmQwOTIzMGFiNWNjMDhhZmEy
Mzk0NTQxYjFlZjcyMGExZjkuLjYxYTdmODk5MDVmMmI3YWE5Y2M4Mzg2ZmVhMDkxZGNhZDE5YWY1
NjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiByZXR1cm5pbmcgc3Vi
c3RyaW5ncyBvZiB0aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHA6IFJlbW92ZWQgdGhl
IHRlc3QgZm9yCisgICAgICAgIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50IHNpbmNlIHdl
IHJlbW92ZWQgdGhhdCBmdW5jdGlvbi4KKyAgICAgICAgVXBkYXRlZCBmb3IgcmVuYW1lIG9mIFVS
TDo6cGFzc3dvcmQgZnJvbSBVUkw6OnBhc3MuCisgICAgICAgIFVwZGF0ZWQgYXJndW1lbnRzIHRv
IGlzTWF0Y2hpbmdEb21haW4gdG8gcGFzcyBsaXRlcmFscyB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQK
KyAgICAgICAgdG8gU3RyaW5nVmlldyByYXRoZXIgdGhhbiBBU0NJSUxpdGVyYWwsIHdoaWNoIFN0
cmluZ1ZpZXcgZG9lc24ndCB5ZXQgc3VwcG9ydC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Y2hlY2tVUkwpOiBVcGRhdGVkIGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBm
cm9tIFVSTDo6cGFzcy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwp
OiBEaXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOiBE
aXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNl
cyk6IERpdHRvLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFVzZXJQYXNzd29yZCk6IERp
dHRvLgorCiAyMDIwLTA0LTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3VwcG9ydCBgLS1yZXBvcnQtZXhlY3V0aW9uLXRpbWVgIHRvIHJlcG9ydCBleGVj
dXRpb24gdGltZSBmb3IgZWFjaCBKU0Mgc3RyZXNzIHRlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VUkwuY3BwCmluZGV4IDkzN2I5Zjk0MGJmOTExM2ZjZTM3MjNmYWYwYzVlNWJmNmIxYzg3
ZGUuLjZiZjI3NWE1MThkNDdhMGUyZjIxNzk0YTA3OGQ2MTljZTdjNTFmZDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcApAQCAtNjEsNyArNjEsNyBAQCBURVNUX0YoV1RGX1VS
TCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAgICAgRVhQRUNUX1RSVUUoISFrdXJsLnBvcnQo
KSk7CiAgICAgRVhQRUNUX0VRKDgwODAsIGt1cmwucG9ydCgpLnZhbHVlKCkpOwogICAgIEVYUEVD
VF9FUShTdHJpbmcoInVzZXJuYW1lIiksIGt1cmwudXNlcigpKTsKLSAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3MoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygicGFz
c3dvcmQiKSwga3VybC5wYXNzd29yZCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXgu
aHRtbCIpLCBrdXJsLnBhdGgoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIp
LCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12
YWwiKSwga3VybC5xdWVyeSgpKTsKQEAgLTI2MSw1NyArMjYxLDYgQEAgVEVTVF9GKFdURl9VUkws
IEVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIpCiAgICAgfQogfQogCi1URVNUX0YoV1RG
X1VSTCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCi17Ci0gICAgc3RydWN0IFRlc3RD
YXNlIHsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMTsKLSAgICAgICAgY29uc3QgY2hhciogdXJs
MjsKLSAgICAgICAgYm9vbCBleHBlY3RlZDsKLSAgICB9IGNhc2VzW10gPSB7Ci0gICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAg
ICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0
cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAg
ICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9w
YXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkjaGFz
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0s
Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20v
IiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyNoYXNoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAv
cGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbTo4MC9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVl
fSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aD9xdWVyeSIsICJodHRwOi8v
ZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4
MC9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9ub3QtZXhhbXBsZS5jb206ODAv
IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MC8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tOjgxLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwg
dHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCAiaHR0cDovL2V4
YW1wbGUuY29tOjgxIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9w
YXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb206
ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1
ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODEvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4
MS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCAi
ZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0
aC90by9maWxlLmh0bWwjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0s
Ci0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSIsICJmaWxlOi8vL3Bh
dGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUu
aHRtbD9xdWVyeSNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAg
ICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXJfZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyL2Zp
bGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAotICAgICAgICB7
ImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iLCAiZGF0
YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2MC83NjAvNzYwLyIsIGZhbHNlfSwK
LSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZTovL2V4YW1wbGUuY29tIiwgZmFs
c2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFzaCIsICJmaWxlOi8vZXhhbXBs
ZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSIsICJm
aWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bS8/cXVlcnkjaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgIH07Ci0K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgewotICAgICAgICBVUkwgdXJsMSA9
IGNyZWF0ZVVSTCh0ZXN0LnVybDEpOwotICAgICAgICBVUkwgdXJsMiA9IGNyZWF0ZVVSTCh0ZXN0
LnVybDIpOwotICAgICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3RlZCwgZXF1YWxJZ25vcmluZ1F1
ZXJ5QW5kRnJhZ21lbnQodXJsMSwgdXJsMikpCi0gICAgICAgICAgICA8PCAiVGVzdCBmYWlsZWQg
Zm9yICIgPDwgdGVzdC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51cmwyOwotICAgIH0KLX0KLQog
VEVTVF9GKFdURl9VUkwsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkpCiB7CiAgICAgRVhQRUNUX0ZB
TFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKQEAgLTM3NiwyMiArMzI1LDIy
IEBAIFRFU1RfRihXVEZfVVJMLCBIb3N0SXNNYXRjaGluZ0RvbWFpbikKIAogICAgIEVYUEVDVF9U
UlVFKHVybC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0pKTsKICAgICBFWFBFQ1RfVFJVRSh1
cmwuaXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJs
LmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJ3ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hp
bmdEb21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7CisgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0
Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFp
bigid2Via2l0Lm9yZyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigi
d3d3LndlYmtpdC5vcmciKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21h
aW4oInJnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCIub3Jn
Il9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3dy53ZWJraXQu
b3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJodHRwOi8v
d3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21h
aW4oInJnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigiLm9yZyIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3LndlYmtpdC5vcmci
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJodHRwOi8vd3d3Lndl
YmtpdC5vcmciKSk7CiAKICAgICB1cmwgPSBjcmVhdGVVUkwoImZpbGU6Ly8vd3d3LndlYmtpdC5v
cmciKTsKIAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0p
KTsKICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJvcmciX3MpKTsKLSAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciX3MpKTsKLSAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJvcmciKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIikpOworICAgIEVYUEVDVF9G
QUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciKSk7CiAKICAgICBVUkwg
ZW1wdHlVUkw7CiAgICAgRVhQRUNUX0ZBTFNFKGVtcHR5VVJMLmlzTWF0Y2hpbmdEb21haW4oU3Ry
aW5nIHsgfSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
UGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAK
aW5kZXggMTAzOWU1NGIxYWViN2MyNjFmNWEyYWMzOTI4ZTExOTg3M2IzNmNjOC4uMDhhM2E5ZTk4
ODNkMDY4YmNjM2ViNWRmMTUxZTYwZjcxYjQwN2M5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2b2lkIGNo
ZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0
cywgVGVzdFRhCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5w
cm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkp
OwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkxTdHJpbgogICAgIAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJv
dG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMu
cG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5w
YXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tV
UkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0
cyYgcGEKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnBy
b3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQ
RUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtMTc3LDcgKzE3Nyw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3
b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQs
IHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJs
Lmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVl
T3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsK
QEAgLTQ2MiwxOSArNDYyLDE5IEBAIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBCYXNpYykKICAgICBj
aGVja1VSTCgiaHR0cDovLzpAaG9zdCIsIHsiaHR0cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIs
ICIiLCAiIiwgImh0dHA6Ly9ob3N0LyJ9KTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNz
KGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZGVjb2RlZCwgY29uc3QgU3RyaW5n
JiBlbmNvZGVkKQorc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzd29yZChjb25zdCBTdHJpbmcmIHZh
bHVlLCBjb25zdCBTdHJpbmcmIGRlY29kZWQsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKIHsKICAg
ICBVUkwgdXNlclVSTChVUkwoKSwgbWFrZVN0cmluZygiaHR0cDovLyIsIHZhbHVlLCAiQGV4YW1w
bGUuY29tLyIpKTsKICAgICBVUkwgcGFzc1VSTChVUkwoKSwgbWFrZVN0cmluZygiaHR0cDovL3Vz
ZXI6IiwgdmFsdWUsICJAZXhhbXBsZS5jb20vIikpOwogICAgIEVYUEVDVF9FUShlbmNvZGVkLCB1
c2VyVVJMLmVuY29kZWRVc2VyKCkpOwotICAgIEVYUEVDVF9FUShlbmNvZGVkLCBwYXNzVVJMLmVu
Y29kZWRQYXNzKCkpOworICAgIEVYUEVDVF9FUShlbmNvZGVkLCBwYXNzVVJMLmVuY29kZWRQYXNz
d29yZCgpKTsKICAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgdXNlclVSTC51c2VyKCkpOwotICAgIEVY
UEVDVF9FUShkZWNvZGVkLCBwYXNzVVJMLnBhc3MoKSk7CisgICAgRVhQRUNUX0VRKGRlY29kZWQs
IHBhc3NVUkwucGFzc3dvcmQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RVc2VyUGFzcyhjb25z
dCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVuY29kZWQpCitzdGF0aWMgdm9pZCB0ZXN0
VXNlclBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkK
IHsKLSAgICB0ZXN0VXNlclBhc3ModmFsdWUsIHZhbHVlLCBlbmNvZGVkKTsKKyAgICB0ZXN0VXNl
clBhc3N3b3JkKHZhbHVlLCB2YWx1ZSwgZW5jb2RlZCk7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFy
c2VyLCBDcmVkZW50aWFscykKQEAgLTQ4MywyMCArNDgzLDIwIEBAIFRFU1RfRihXVEZfVVJMUGFy
c2VyLCBDcmVkZW50aWFscykKICAgICBhdXRvIGludmFsaWRTdXJyb2dhdGUgPSB1dGYxNlN0cmlu
ZzwzPih7MHhEODAwLCAnQScsICdcMCd9KTsKICAgICBhdXRvIHJlcGxhY2VtZW50QSA9IHV0ZjE2
U3RyaW5nPDM+KHsweEZGRkQsICdBJywgJ1wwJ30pOwogCi0gICAgdGVzdFVzZXJQYXNzKCJhIiwg
ImEiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUiLCAiJSIpOwotICAgIHRlc3RVc2VyUGFzcygiJTI1
IiwgIiUiLCAiJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlMjUyNSIsICIlMjUiLCAiJTI1MjUi
KTsKLSAgICB0ZXN0VXNlclBhc3MoIiVGWCIsICIlRlgiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUw
MCIsIFN0cmluZzo6ZnJvbVVURjgoIlwwIiwgMSksICIlMDAiKTsKLSAgICB0ZXN0VXNlclBhc3Mo
IiVGJTI1IiwgIiVGJSIsICIlRiUyNSIpOwotICAgIHRlc3RVc2VyUGFzcygiJVglMjUiLCAiJVgl
IiwgIiVYJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKLSAg
ICB0ZXN0VXNlclBhc3MoIvCfkqkiLCAiJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7Ci0gICAg
dGVzdFVzZXJQYXNzKCIl8J+SqSIsICIlJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7Ci0gICAg
dGVzdFVzZXJQYXNzKHZhbGlkU3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1Iik7Ci0gICAgdGVzdFVz
ZXJQYXNzKHJlcGxhY2VtZW50QSwgIiVFRiVCRiVCREEiKTsKLSAgICB0ZXN0VXNlclBhc3MoaW52
YWxpZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOworICAgIHRlc3RVc2Vy
UGFzc3dvcmQoImEiLCAiYSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUiLCAiJSIpOworICAg
IHRlc3RVc2VyUGFzc3dvcmQoIiUyNSIsICIlIiwgIiUyNSIpOworICAgIHRlc3RVc2VyUGFzc3dv
cmQoIiUyNTI1IiwgIiUyNSIsICIlMjUyNSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiVGWCIs
ICIlRlgiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlMDAiLCBTdHJpbmc6OmZyb21VVEY4KCJc
MCIsIDEpLCAiJTAwIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJUYlMjUiLCAiJUYlIiwgIiVG
JTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJVglMjUiLCAiJVglIiwgIiVYJTI1Iik7Cisg
ICAgdGVzdFVzZXJQYXNzd29yZCgiJSUyNSIsICIlJSIsICIlJTI1Iik7CisgICAgdGVzdFVzZXJQ
YXNzd29yZCgi8J+SqSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKKyAgICB0ZXN0VXNl
clBhc3N3b3JkKCIl8J+SqSIsICIlJUMzJUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7CisgICAgdGVz
dFVzZXJQYXNzd29yZCh2YWxpZFN1cnJvZ2F0ZSwgIiVGMCU5MCU4NSU5NSIpOworICAgIHRlc3RV
c2VyUGFzc3dvcmQocmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOworICAgIHRlc3RVc2VyUGFz
c3dvcmQoaW52YWxpZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwogfQog
CiBURVNUX0YoV1RGX1VSTFBhcnNlciwgUGFyc2VSZWxhdGl2ZSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5j
cHAKaW5kZXggYTI2ODE2ZGExNDkxZjZlM2IyMDU3YzY2YTdkY2E0NTlkMTM2MTRkMy4uZTI2MTc5
MzM0MjUyMjQzYmE1ZjE0MTgwZjcyMjRlYjc3NTRkY2ExZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnMKICAgICBhdXRvIHVy
bCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwg
dXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFz
c3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsK
ICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xMTgsNyArMTE4LDcg
QEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBi
YXNlVVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5w
YXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkp
OwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IDlkZWIzMDdmODZiNTAyMThjMjVhYTFlNGEyMTU5Mjk2N2ZiNWI0
M2YuLmY1ZmRiMjc0OTdmMGZhZGUxNzJjMWZhMGQwMTFiMWI5YTFkZGQxM2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5n
VmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Vy
bC91cmwtc2V0dGVycy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0cyBmb3Ig
cHJvZ3Jlc3Npb24gaW4KKyAgICAgICAgY29ycmVjdCBiZWhhdmlvciB3aGVuIHBvcnQgbnVtYmVy
cyBhcmUgPjY1NTM1LiBJIGRpZG4ndCBvcmlnaW5hbGx5IGludGVuZCB0byBtYWtlIHRoaXMgaW1w
cm92ZW1lbnQsCisgICAgICAgIGJ1dCBpdCBmZWxsIG91dCBuYXR1cmFsbHkgZnJvbSB0aGUgcmVm
YWN0b3JpbmcgY2hhbmdlcy4KKwogMjAyMC0wNC0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBkb20vZXZlbnRzL0V2ZW50LWRpc3Bh
dGNoLXJlZGlzcGF0Y2guaHRtbCBmcm9tIHVwc3RyZWFtIFdQVApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvdXJsLXNldHRlcnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91
cmwvdXJsLXNldHRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDExODcwYjk4N2U2NmY0MzM2YWEwMGI1
ZGNkMTVjYzgwMmRjNjEzMWQuLjc5ZWIxMTdiOTkxZDQ1NzFkMTY0MzBiNjQ0NGVlZWU4YzVkMDhm
ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdXJsL3VybC1zZXR0ZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC91cmwtc2V0dGVycy1leHBlY3RlZC50eHQKQEAg
LTI4Miw5ICsyODIsOSBAQCBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0
L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206ODA4MCsyJyBBbnl0aAogUEFTUyBVUkw6IFNldHRp
bmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM1JyBQ
b3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2VycyAKIFBBU1MgPGE+OiBTZXR0aW5nIDxodHRw
Oi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNScgUG9ydCBudW1i
ZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMgCiBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4
YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzUnIFBvcnQgbnVtYmVycyBh
cmUgMTYgYml0IGludGVnZXJzIAotRkFJTCBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5l
dC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJp
dCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3RuYW1lIGlzIHN0aWxsIHNl
dCwgdGhvdWdoLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoIgotRkFJTCA8YT46IFNldHRpbmcg
PGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0
IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhv
c3RuYW1lIGlzIHN0aWxsIHNldCwgdGhvdWdoLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxlLmNvbTo2NTUzNi9w
YXRoIgotRkFJTCA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0
ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywg
b3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3RuYW1lIGlzIHN0aWxsIHNldCwgdGhvdWdoLiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiIGJ1dCBnb3Qg
Imh0dHA6Ly9leGFtcGxlLmNvbTo2NTUzNi9wYXRoIgorUEFTUyBVUkw6IFNldHRpbmcgPGh0dHA6
Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51bWJl
cnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3RuYW1l
IGlzIHN0aWxsIHNldCwgdGhvdWdoLiAKK1BBU1MgPGE+OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBs
ZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAx
NiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0bmFtZSBpcyBzdGls
bCBzZXQsIHRob3VnaC4gCitQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0
L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0
IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvci4gSG9zdG5hbWUgaXMgc3RpbGwgc2V0
LCB0aG91Z2guIAogUEFTUyBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC8+Lmhvc3Qg
PSAnW2dvb2dsZS5jb21dJyBCcm9rZW4gSVB2NiAKIEZBSUwgPGE+OiBTZXR0aW5nIDxodHRwOi8v
ZXhhbXBsZS5uZXQvPi5ob3N0ID0gJ1tnb29nbGUuY29tXScgQnJva2VuIElQdjYgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImh0dHA6Ly9leGFtcGxlLm5ldC8iIGJ1dCBnb3QgImh0dHA6Ly9bZ29v
Z2xlLmNvbV0vIgogRkFJTCA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC8+Lmhv
c3QgPSAnW2dvb2dsZS5jb21dJyBCcm9rZW4gSVB2NiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
aHR0cDovL2V4YW1wbGUubmV0LyIgYnV0IGdvdCAiaHR0cDovL1tnb29nbGUuY29tXS8iCkBAIC00
NTksMTIgKzQ1OSwxMiBAQCBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0
L3BhdGg+LnBvcnQgPSAnODA4MCsyJyBBbnl0aGluZyBvdGhlciB0aAogUEFTUyBVUkw6IFNldHRp
bmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5wb3J0ID0gJzY1NTM1JyBQb3J0IG51bWJlcnMg
YXJlIDE2IGJpdCBpbnRlZ2VycyAKIFBBU1MgPGE+OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5u
ZXQvcGF0aD4ucG9ydCA9ICc2NTUzNScgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMg
CiBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0L3BhdGg+LnBvcnQgPSAn
NjU1MzUnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzIAotRkFJTCBVUkw6IFNldHRp
bmcgPGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVt
YmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdvdCAi
aHR0cDovL2V4YW1wbGUubmV0OjAvcGF0aCIKLUZBSUwgPGE+OiBTZXR0aW5nIDxodHRwOi8vZXhh
bXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJp
dCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxl
Lm5ldDowL3BhdGgiCi1GQUlMIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0Ojgw
ODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMs
IG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJodHRwOi8v
ZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJodHRwOi8vZXhhbXBsZS5uZXQ6MC9wYXRo
IgotRkFJTCBVUkw6IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRo
Pi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZs
b3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIm5vbi1zcGVjaWFsOi8v
ZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJub24tc3BlY2lhbDovL2V4YW1wbGUubmV0
OjAvcGF0aCIKLUZBSUwgPGE+OiBTZXR0aW5nIDxub24tc3BlY2lhbDovL2V4YW1wbGUubmV0Ojgw
ODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMs
IG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJub24tc3Bl
Y2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdvdCAibm9uLXNwZWNpYWw6Ly9leGFt
cGxlLm5ldDowL3BhdGgiCi1GQUlMIDxhcmVhPjogU2V0dGluZyA8bm9uLXNwZWNpYWw6Ly9leGFt
cGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0
IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAibm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgIm5vbi1zcGVj
aWFsOi8vZXhhbXBsZS5uZXQ6MC9wYXRoIgorUEFTUyBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFt
cGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0
IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAKK1BBU1MgPGE+OiBTZXR0aW5nIDxo
dHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMg
YXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgCitQQVNTIDxhcmVh
PjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicg
UG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9y
IAorUEFTUyBVUkw6IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRo
Pi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZs
b3dpbmcgaXMgYW4gZXJyb3IgCitQQVNTIDxhPjogU2V0dGluZyA8bm9uLXNwZWNpYWw6Ly9leGFt
cGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0
IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAKK1BBU1MgPGFyZWE+OiBTZXR0aW5n
IDxub24tc3BlY2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9y
dCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIAog
UEFTUyBVUkw6IFNldHRpbmcgPGZpbGU6Ly90ZXN0Lz4ucG9ydCA9ICcxMicgCiBQQVNTIDxhPjog
U2V0dGluZyA8ZmlsZTovL3Rlc3QvPi5wb3J0ID0gJzEyJyAKIFBBU1MgPGFyZWE+OiBTZXR0aW5n
IDxmaWxlOi8vdGVzdC8+LnBvcnQgPSAnMTInIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397462</attachid>
            <date>2020-04-24 09:30:52 -0700</date>
            <delta_ts>2020-04-24 11:30:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200424093051.patch</filename>
            <type>text/plain</type>
            <size>223923</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBhYzAwNzZkMGNhN2E0YjlmMDQ3Mzc0
ZDI1MGNjMDA2MTJkODQ4YmQuLjZiMWZmM2RiZTc4NDVhMWEyMjY2YzE0NzNlZTMwNGIwYmRkNzhm
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSk6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25zdCk6IEFkZGVkIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0aGUgY2FsbCBzaXRl
IGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4KKworICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0aW9ucyBhYm92ZS4K
KyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0aGUgZmluZCBmdW5j
dGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgdGVtcGxh
dGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludCk6IERpdHRv
LgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMjMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIENNQUtFX0JJTkFSWV9ESVIgc2hvdWxkIGFs
d2F5cyBiZSBhIFBSSVZBVEUgaW5jbHVkZSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjBjZDgw
YzRlYzFjNDI1NmU2NzQ0MGZiNGQ5ZjEzOGExYzIwNGZjLi43YTNlNzYxN2NiMDczMGUyODY1YjRk
NGU4MTUxYzdmZGMzZDdmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAxIEBACisyMDIwLTA0
LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0
byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6bWF0Y2hVUkxzKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxscyB0byBoYXNRdWVyeS4KKworICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAq
IE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZpZXIpOiBVc2UgaGFzQ3Jl
ZGVudGlhbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVlvdVR1YmVVUkwpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpxdWVyeUtleXNBbmRWYWx1ZXMpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6
IFVzZSBhdXRvIHNpbmNlIFVSTCBwaWVjZXMgYXJlCisgICAgICAgIG5vdyByZXR1cm5lZCBhcyBT
dHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5
b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgVXNlIFN0cmluZ1ZpZXcgYW5kIG1h
a2VTdHJpbmcgcmF0aGVyIHRoYW4gU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b3VyY2VOYW1lKTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCBj
b25zdCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVUkwpOiBVc2Ugc2V0SG9zdEFu
ZFBvcnQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmspOiBVcGRhdGUgc2luY2UKKyAgICAgICAg
ZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgU3RyaW5nVmlldy4KKworICAgICAgICAqIGRvbS9U
cmVlU2NvcGUuY3BwOiBBZGRlZCBhIGNvbW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENv
bXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4gQWxzbyBnb3QgcmlkIG9mIHNvbWUgc3RyYW5n
ZQorICAgICAgICB1c2Ugb2YgQXRvbVN0cmluZyB0aGF0IHdhcyBub3QgbmVjZXNzYXJ5IGFuZCB1
c2VkIFdURk1vdmUgbW9yZS4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IFVwZGF0
ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4K
KworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSBj
b25zdCk6CisgICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwg
YW5kIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmcgZm9yIG5hbWUgYW5kIGV4
dGVuc2lvbiB2YWx1ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZSk6IFVwZGF0ZSBzaW5j
ZSBsYXN0UGF0aENvbXBvbmVudAorICAgICAgICByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAg
ICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6IFVwZGF0ZSBzaW5jZQor
ICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBodG1sL1VSTFV0aWxzLmg6IENoYW5nZWQgbWFueSBmdW5jdGlvbnMgdG8gdGFrZSBhIFN0
cmluZ1ZpZXcsIGNoYW5nZWQKKyAgICAgICAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgdG8gY2Fs
bCB0b1N0cmluZywgc2luY2UgdGhlIHVuZGVybHlpbmcgVVJMCisgICAgICAgIGZ1bmN0aW9uIG5v
dyByZXR1cm5zIGEgU3RyaW5nVmlldy4gVXBkYXRlZCBuYW1lcyBzaW5jZSAicGFzcyIgaXMgbm93
CisgICAgICAgICJwYXNzd29yZCIuCisgICAgICAgIChXZWJDb3JlOjpjb3VudEFTQ0lJRGlnaXRz
KTogQWRkZWQuIFJlcGxhY2VzIHVudXN1YWwgZnVuY3Rpb24KKyAgICAgICAgbmFtZWQgcGFyc2VQ
b3J0RnJvbVN0cmluZ1Bvc2l0aW9uIGJlY2F1c2Ugd2UgY2FuIHVzZSBTdHJpbmdWaWV3IG5vdwor
ICAgICAgICBhbmQgc28gZG9uJ3QgbmVlZCBzdWNoIGFuIHVudXN1YWwgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdCk6IFVzZSBoYXNDcmVk
ZW50aWFscy4KKyAgICAgICAgQWxzbyByZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZiBBU0NJSUxp
dGVyYWwgdGhhdCBodXJ0cyBwZXJmb3JtYW5jZQorICAgICAgICBhIHRpbnkgYml0LgorICAgICAg
ICAoV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nIGNvbnN0KTogVXNl
IG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAg
ICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwpOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKTogVXBkYXRlIHNp
bmNlIHF1ZXJ5IHJldHVybnMKKyAgICAgICAgU3RyaW5nVmlldy4KKworICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KTogVXNlIGVxdWFsUmVzcGVjdGluZ051bGxpdHkgb24KKyAgICAgICAgZnJh
Z21lbnQgaWRlbnRpZmllcnMgdG8gcHJlc2VydmUgYmVoYXZpb3IsIHNpbmNlIGF0IHRoaXMgdGlt
ZQorICAgICAgICBTdHJpbmdWaWV3ID09IFN0cmluZ1ZpZXcgZG9lcyBub3QgcmVzcGVjdCBudWxs
aXR5LCBidXQgU3RyaW5nID09IFN0cmluZyBkb2VzLgorCisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKTogVXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGguCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFuaWZlc3RQYXRoKTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlTWFuaWZlc3QpOiBVc2UgU3RyaW5nVmlldy4KKworICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24gY29uc3QpOiBVcGRhdGUgc2luY2UKKyAgICAg
ICAgZnJhZ21lbnRJZGVudGlmZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJZGVudGlmaWVyRnJvbVJlcXVlc3RV
UkwpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsKTogVXBkYXRlZCBsb2cgbWVz
c2FnZS4KKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKTogVXBkYXRlZCBmb3IgVVJMOjpwYXNzd29yZCBuYW1l
IGNoYW5nZQorICAgICAgICBhbmQgdG8gdXNlIHRoZSBuZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JG
cmFnbWVudElkZW50aWZpZXIgcmF0aGVyIHRoYW4gdGhlCisgICAgICAgIG9sZCBlcXVhbElnbm9y
aW5nUXVlcnlBbmRGcmFnbWVudC4KKworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmhyZWYgY29uc3QpOiBVc2UgcmVtb3ZlQ3JlZGVudGlh
bHMuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxpbmVk
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTogVXNlIGFuIEFT
Q0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZWFyY2ggY29uc3QpOiBV
c2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0
aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVy
U2lnbi4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlVUlu
dDE2LgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOiBDb2Rpbmcg
c3R5bGUgdHdlYWtzLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9u
SWZOZWNlc3NhcnkpOgorICAgICAgICBVc2UgY29udGFpbnMgaW5zdGVhZCBvZiByZXZlcnNlRmlu
ZCB0byBjaGVjayBmb3IgYSBwZXJpb2QgaW4gdGhlIGZpbGVuYW1lLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmxvYWQpOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IGlzIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50ZXJu
YWxQcm90b2NvbCk6IFVwZGF0ZWQgdG8gdXNlIG1ha2VTdHJpbmcgc2luY2UKKyAgICAgICAgc2V0
UHJvdG9jb2wgdGFrZXMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFtZWQgbV9wYXNzIHRvIG1fcGFzc3dvcmQK
KyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVhZCBvZiBwYXNzLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxzKTogVXNlIHJlbW92ZUNy
ZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVS
TENvbm5lY3Rpb24pOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkCisgICAgICAgIG5hbWUgY2hhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IFVw
ZGF0ZWQgZm9yIG1fcGFzc3dvcmQgYW5kCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlcy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2Vk
QXV0aGVudGljYXRpb24pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUHJveHlTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUHJveHlTZXR0
aW5nczo6c2V0VXNlclBhc3MpOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByb3h5VXJsKTogVXNlIGhhc0NyZWRlbnRpYWxzLCB1
cGRhdGVkIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxQcm94
eVNldHRpbmdzOjpwYXNzd29yZCBjb25zdCk6IFVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKTogVXBkYXRlZCBmb3IKKyAgICAgICAgbV9wYXNzd29yZCBuYW1l
IGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDcmVkZW50aWFs
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZCBhbmQKKyAgICAgICAgcGFzc3dvcmQgbmFtZSBj
aGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQg
bmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5k
UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhh
bmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjcmVhdGVTb3VwVVJJIGNvbnN0KTogVXBkYXRlZCBmb3Ig
cGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1VS
TFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cFVSSVRvVVJMKTogVXBkYXRlZCBmb3Ig
c2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTCk6IFVwZGF0ZWQgc2luY2Ug
bGFzdFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3Jl
OjpmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZSk6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWls
ZGVyU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3Jl
YXRlRmlsdGVyT3BlcmF0aW9ucyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVu
dGlmaWVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJM
b2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25z
dCk6IFN0cmVhbWxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhu
YW1lIGNvbnN0KTogVXNlIGFuIEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckxvY2F0aW9uOjpzZWFyY2ggY29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFy
ay4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkpOgorICAgICAgICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFt
ZSBjaGFuZ2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9wT3JpZ2luVVJMKTogU2lt
cGxpZmllZCBjb2RlIHRvIHNldCBwb3J0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luVVJMKTogRGl0dG8uCisK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4K
KwogMjAyMC0wNC0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbHB0ciBjcmFzaCBpbiBvYmpjX21zZ1NlbmQgdW5kZXIgV2ViQ29yZTo6Z2VuZXJpY0Zh
bWlseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA0NDg4ZmNmYjNhYWE4OWJhNjdlY2U4ODNlYTY1MjAyNDAxZjE1NjAx
Li4wMzJkYjU1NzdjZDQ2OTdmMjFiYzJmMDFjZTQzZGJlMjYxMGI2MWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDg3IEBACisyMDIwLTA0LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJz
dHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW9uKTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5
SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICBSZW1vdmUgdXNlIG9mIEFTQ0lJ
TGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tDdXJsKTogVXBkYXRlZCBmb3IKKyAgICAgICAgcGFzc3dv
cmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKTogVXBkYXRlZAorICAgICAg
ICBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cCk6IFVwZGF0
ZWQgZm9yCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGly
ZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNo
b3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcgY29uc3QpOgorICAgICAgICBVc2UgIT0gdG8gY29t
cGFyZSBob3N0cywgcmF0aGVyIHRoYW4gaG9zdHNBcmVFcXVhbC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlIGNvbnN0
KToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgfHwgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIGFi
b3ZlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJM
Ojpob3N0IGNvbnN0KTogUmVtb3ZlZCB2YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6Omhvc3QKKyAg
ICAgICAgcmV0dXJucyBudWxsIGlmIHRoZSBVUkwgaXMgaW52YWxpZC4KKyAgICAgICAgKEFQSTo6
VVJMOjpwcm90b2NvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6OnBhdGggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKEFQSTo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBjb25zdCk6
IERpdHRvLiBBbHNvIGFkZGVkIHRvU3RyaW5nCisgICAgICAgIHNpbmNlIFdURjo6VVJMOjpsYXN0
UGF0aENvbXBvbmVudCBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2gpOiBVc2UgaGFzRnJhZ21lbnRJZGVudGlmaWVyLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2spOgorICAgICAg
ICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCBhbmQK
KyAgICAgICAgdXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnBhdGhFeHRlbnNpb24pOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRo
Q29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LiBSZWZhY3RvcmVkIGEgbGl0
dGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
IFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCByYXRoZXIgdGhhbiBob3N0c0FyZUVxdWFsLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Up
OiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwp
OgorICAgICAgICBVc2UgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6Cisg
ICAgICAgIERvbid0IHVzZSBBU0NJSUxpdGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNldFByb3RvY29s
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5zdGFsbFBE
RkRvY3VtZW50KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0
dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZAorICAgICAgICB0aGUgaW1w
bGVtZW50YXRpb24gYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGxhc3RQ
YXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCiAyMDIwLTA0LTI0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc29tZSBwb3N0
LXJlbmRlcmluZ1VwZGF0ZSBjb2RlIGludG8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDU4MmRmOTc2ZmIyNmU5OTM0NzI4Njg3MjY0MTViZGI2YTk3NWUxODEuLmVhNWUw
MjYzZDA1ZDA4ZjA0OTY4NTBlNmYxNzI3ZTM5ODc0N2I2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiBy
ZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoc2hvdWxkVHJ5QXBwTGluayk6IENvbXBhcmUgaG9zdHMgd2l0aCA9
PSByYXRoZXIgdGhhbiB1c2luZyBob3N0c0FyZUVxdWFsLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRGb3JJbWFn
ZURhdGE6d2l0aFJlbGF0aXZlVVJMUGFydDphbmRNSU1FVHlwZTpdKToKKyAgICAgICAgVXBkYXRl
ZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCB0YWtlcyBhIFN0cmluZ1ZpZXcuIEFsc28g
dXNlIFJldGFpblB0cgorICAgICAgICBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGNhbGwgdG8gcmVs
ZWFzZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IF93ZWJfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmRU
eXBlOmltYWdlTUlNRVR5cGU6XSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhS
ZWxhdGl2ZVBhcnQgdGFrZXMgYSBTdHJpbmdWaWV3LiBObyBjb252ZXJzaW9uCisgICAgICAgIGRp
cmVjdGx5IGZyb20gTlNTdHJpbmcgdG8gU3RyaW5nVmlldywgc28gd2UgaGF2ZSB0byBleHBsaWNp
dGx5IHVzZSBhIFN0cmluZy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBf
ZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKTogVXBkYXRlCisgICAgICAgIHNpbmNlIHByb3Rv
Y29sSXMgdGFrZXMgYSBTdHJpbmdWaWV3LiBObyBjb252ZXJzaW9uIGRpcmVjdGx5IGZyb20KKyAg
ICAgICAgTlNTdHJpbmcgdG8gU3RyaW5nVmlldywgc28gd2UgaGF2ZSB0byBleHBsaWNpdGx5IHVz
ZSBhIFN0cmluZy4KKwogMjAyMC0wNC0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEplc3VzIENhbGxpbmcgYXBwIG5lZWRzIG1vcmUgV2Vi
U1FMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGFmYjMxNWFkZGYzODRhMWE0NDhm
Mzg4NmQ5NTI2NTY3Y2I1NDZkNC4uNDQxNTM4ZjljM2JiYTFkYzgzMjEzM2UwNmVkMTM0NDhhYjBl
ZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIw
LTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6
UGx1Z2luRGF0YWJhc2UpOiBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZgorICAgICAgICBtX3BlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlSXNMb2FkZWQgdG8gdGhlIGNsYXNzIGRlZmluaXRpb24uCisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24gY29uc3Qp
OiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Zmlu
ZFBsdWdpbik6IFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5oOiBDaGFuZ2VkIE1JTUVUeXBlRm9yRXh0ZW5zaW9uIHRvIHRha2UKKyAgICAgICAgYSBT
dHJpbmdWaWV3LiBUb29rIG91dCBzb21lIHVubmVlZGVkIGRlY2xhcmF0aW9ucy4gSW5pdGlhbGl6
ZWQKKyAgICAgICAgbV9wZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUlzTG9hZGVkIGhlcmUgaW4gdGhl
IGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29u
dGVudFR5cGUpOiBVc2UgU3RyaW5nVmlldyBhIGxpdHRsZSBtb3JlLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZCB0aGUgaW1wbGVtZW50
YXRpb24gYSBiaXQuCisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0
aW9uYXJ5KTogQWRkZWQgInVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlIi4KKwogMjAyMC0wNC0yMCAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgQ2xhc3Nl
cyBtYXJrZWQgZmluYWwgc2hvdWxkIG5vdCB1c2UgcHJvdGVjdGVkIGFjY2VzcyBzcGVjaWZpZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDYxMGQxYzQ2OGJiMjQwYjhjMzkyNzk1NTgyNzU4ZGJkZDI4ZmY1NTYuLjgxMmZh
NGNmNzA2OGJjODJhYzVhMzU1MTQwMzgxNTBhYzJmOGE2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MiwyNiAr
NDIsMTcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1z
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludmFsaWRQb3J0TnVtYmVyID0gMHhGRkZGOwotCi0v
LyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUg
c291cmNlIGNoYXJhY3RlcnMgYXJlCi0vLyBBU0NJSS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBt
dXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkCi0vLyBpbiB0
aGUgc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0
ZSB0aGUgcmVzdWx0Lgotc3RhdGljIHZvaWQgY29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjaGFyKiBkZXN0KQorLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBh
c3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KKy8vIFRoZSBkZXN0
aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUg
YWxsb3dlZCBpbiB0aGUKKy8vIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUg
dG8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KK3N0YXRpYyB2b2lkIGNv
cHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdGluYXRpb24pCiB7Ci0gICAg
aWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNo
YXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwor
ICAgICAgICBhdXRvIHNvdXJjZSA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyBp
KyspCisgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNvdXJj
ZVtpXSk7CiAgICAgfQogfQogCkBAIC04MywxNiArNzQsMTMgQEAgdm9pZCBVUkw6OmludmFsaWRh
dGUoKQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUs
IGNvbnN0IFVSTFRleHRFbmNvZGluZyogZW5jb2RpbmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNl
cihyZWxhdGl2ZSwgYmFzZSwgZW5jb2RpbmcpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OworICAgICp0aGlzID0gVVJMUGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZykucmVzdWx0
KCk7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCitzdGF0aWMg
Ym9vbCBzaG91bGRUcmltRnJvbVVSTChVQ2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAgLy8gQnJvd3Nl
cnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAotICAgIC8v
IGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFy
IGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJv
bCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKKyAgICAvLyBJZ25vcmUgbGVhZGlu
Zy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCisgICAgcmV0dXJu
IGNoYXJhY3RlciA8PSAnICc7CiB9CiAKIFVSTCBVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CkBA
IC0xMDIsNDggKzkwLDQzIEBAIFVSTCBVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAor
U3RyaW5nVmlldyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWhh
c1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKICAgICBpZiAobV9zdHJpbmdbZW5k
XSA9PSAnLycpCiAgICAgICAgIC0tZW5kOwogCiAgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcu
cmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgaWYgKHN0YXJ0IDwgcGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVybiB7IH07CiAgICAg
KytzdGFydDsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0
YXJ0ICsgMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhzdGFy
dCwgZW5kIC0gc3RhcnQgKyAxKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6OnByb3RvY29sKCkgY29u
c3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIHJl
dHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV9zY2hlbWVFbmQpOwogfQog
CiBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiB7CisgICAgaWYgKCFtX2lzVmFsaWQpCisg
ICAgICAgIHJldHVybiB7IH07CisKICAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwog
ICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVu
ZCAtIHN0YXJ0KTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVtYmVyOwotICAgIGlmIChtX3N0
cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdCht
X3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwg
Jm9rKTsKLSAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
bV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAx
LCAmb2spOwotICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MTZfdD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBu
dW1iZXI7CisgICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/IHBhcnNlVUludDE2KFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxKSkgOiBX
VEY6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKQEAgLTE1
NSw5NCArMTM4LDEwMCBAQCBTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CiAKIFN0cmlu
ZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogewotICAgIFN0cmluZyByZXN1bHQg
PSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKKyAgICBp
ZiAoIWhhc0NyZWRlbnRpYWxzKCkpCisgICAgICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
MCwgcGF0aFN0YXJ0KCkpOwogCi0gICAgaWYgKG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCA+
IDApIHsKLSAgICAgICAgY29uc3QgaW50IGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24gPSAxOwotICAg
ICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0YXJ0LCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3Rh
cnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWduKTsKLSAgICB9CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFy
dCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhob3N0U3RhcnQoKSwg
cGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSkKKyAgICApOworfQogCi0gICAgcmV0dXJuIHJlc3Vs
dDsKK3N0YXRpYyBPcHRpb25hbDxMQ2hhcj4gZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmll
dyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoaW5k
ZXggKyAzID4gbGVuZ3RoIHx8IGlucHV0W2luZGV4XSAhPSAnJScpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgYXV0byBkaWdpdDEgPSBpbnB1dFtpbmRleCArIDFdOworICAgIGF1
dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAyXTsKKyAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChk
aWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gdG9BU0NJSUhleFZhbHVlKGRpZ2l0MSwgZGlnaXQyKTsKIH0K
IAogc3RhdGljIFN0cmluZyBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmlu
Z1ZpZXcgaW5wdXQpCiB7Ci0gICAgYXV0byBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwot
ICAgIGlmICghaW5wdXRMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAg
IFZlY3RvcjxMQ2hhcj4gcGVyY2VudERlY29kZWQ7Ci0gICAgcGVyY2VudERlY29kZWQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShpbnB1dExlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGlucHV0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGlucHV0W2ldID09ICclJwotICAg
ICAgICAgICAgJiYgaW5wdXRMZW5ndGggPiAyCi0gICAgICAgICAgICAmJiBpIDwgaW5wdXRMZW5n
dGggLSAyCi0gICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKQotICAg
ICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAg
IHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSAr
IDFdLCBpbnB1dFtpICsgMl0pKTsKLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNl
CisgICAgQVNTRVJUKGlucHV0LmlzQWxsQVNDSUkoKSk7CisKKyAgICBhdXRvIGxlbmd0aCA9IGlu
cHV0Lmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPCAzIHx8ICFpbnB1dC5jb250YWlucygnJScp
KQorICAgICAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoKTsKKworICAgIFZlY3RvcjxMQ2hhciwg
NTEyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBwZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7
CisgICAgICAgIGlmIChhdXRvIGRlY29kZWRDaGFyYWN0ZXIgPSBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZShpbnB1dCwgaSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVj
a2VkQXBwZW5kKCpkZWNvZGVkQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGkgKz0gMzsKKyAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZChp
bnB1dFtpXSk7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBG
SVhNRTogSXMgVVRGLTggYWx3YXlzIHRoZSBjb3JyZWN0IGVuY29kaW5nPworICAgIC8vIEZJWE1F
OiBUaGlzIHJldHVybnMgYSBudWxsIHN0cmluZyB3aGVuIHdlIGVuY291bnRlciBhbiBpbnZhbGlk
IFVURi04IHNlcXVlbmNlLiBJcyB0aGF0IE9LPwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKIH0KIAogU3Ry
aW5nIFVSTDo6dXNlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNl
c0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0
LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1
ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRVc2VyKCkpOwogfQogCi1TdHJpbmcgVVJMOjpwYXNz
KCkgY29uc3QKK1N0cmluZyBVUkw6OnBhc3N3b3JkKCkgY29uc3QKIHsKLSAgICBpZiAobV9wYXNz
d29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0g
MSkpOworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29k
ZWRQYXNzd29yZCgpKTsKIH0KIAotU3RyaW5nIFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAorU3Ry
aW5nVmlldyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcu
c3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7CisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5k
IC0gbV91c2VyU3RhcnQpOwogfQogCi1TdHJpbmcgVVJMOjplbmNvZGVkUGFzcygpIGNvbnN0CitT
dHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFBhc3N3b3JkKCkgY29uc3QKIHsKICAgICBpZiAobV9wYXNz
d29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsg
MSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNl
ckVuZCAtIDEpOwogfQogCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAor
U3RyaW5nVmlldyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKCFo
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSk7Ci19CisgICAgICAgIHJl
dHVybiB7IH07CiAKLWJvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgIT0gbV9xdWVyeUVuZDsK
KyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAx
KTsKIH0KIAotU3RyaW5nIFVSTDo6YmFzZUFzU3RyaW5nKCkgY29uc3QKK1VSTCBVUkw6OnRydW5j
YXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9w
YXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1fc3RyaW5nLmxlZnQo
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gpKTsKIH0KIAogI2lmICFVU0UoQ0YpCiAKIFN0cmluZyBVUkw6
OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsKLSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2Nh
bEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmICghaXNMb2NhbEZpbGUo
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcocGF0aCgpKSk7CisgICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwocGF0aCgpKTsKIH0KIAogI2VuZGlmCiAKLSNpZmRl
ZiBOREVCVUcKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIGlubGluZSB2b2lkIGFzc2Vy
dFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcpCiB7CkBAIC0zMTQsNyArMzAzLDcgQEAgYm9vbCBp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2Nv
bCkKIAogYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0CiB7
Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyB7IHByb3RvY29sIH0pOworICAg
IGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKIAogICAgIC8vIEphdmFTY3JpcHQgVVJM
cyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRlY2lkZXMg
dGhleSBhcmUgaW52YWxpZC4KICAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2
YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIApAQCAtMzQ5LDczICszMzgsNjUgQEAg
Ym9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFVSTDo6cXVlcnkoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6
OnF1ZXJ5KCkgY29uc3QKIHsKICAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQg
KyAxKSk7IAorICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRo
RW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7CiB9CiAKIFN0cmluZ1ZpZXcg
VVJMOjpwYXRoKCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
cG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKHBhdGhTdGFydCgpLCBtX3BhdGhFbmQgLSBwYXRoU3RhcnQoKSk7CiB9CiAKLWJvb2wgVVJM
OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCitib29sIFVSTDo6c2V0UHJvdG9jb2woU3Ry
aW5nVmlldyBuZXdQcm90b2NvbCkKIHsKICAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZl
cnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgotICAgIHNpemVfdCBzZXBhcmF0b3JQb3NpdGlv
biA9IHMuZmluZCgnOicpOwotICAgIFN0cmluZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5nKDAs
IHNlcGFyYXRvclBvc2l0aW9uKTsKLSAgICBhdXRvIGNhbm9uaWNhbGl6ZWQgPSBVUkxQYXJzZXI6
Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sKTsKLSAgICBpZiAoIWNhbm9uaWNh
bGl6ZWQpCisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1Byb3RvY29sLnN1YnN0cmlu
ZygwLCBuZXdQcm90b2NvbC5maW5kKCc6JykpOworICAgIGF1dG8gbmV3UHJvdG9jb2xDYW5vbmlj
YWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbFBy
ZWZpeC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIGlmICghbmV3UHJvdG9jb2xDYW5v
bmljYWxpemVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1faXNWYWxpZCkg
ewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6
IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAg
IHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCwgJzonLCBtX3N0cmlu
ZykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoKG1fcGFzc3dvcmRF
bmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqY2Fub25pY2FsaXplZCA9PSAiZmlsZSIp
CisgICAgaWYgKChtX3Bhc3N3b3JkRW5kICE9IG1fdXNlclN0YXJ0IHx8IHBvcnQoKSkgJiYgKm5l
d1Byb3RvY29sQ2Fub25pY2FsaXplZCA9PSAiZmlsZSIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKGlzTG9jYWxGaWxlKCkgJiYgaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6
ZWQsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKCpuZXdQcm90b2NvbENhbm9uaWNhbGl6
ZWQsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNBbGxBU0NJSShTdHJpbmdWaWV3IHN0cmlu
ZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAg
IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcubGVuZ3RoKCkpOwotfQotICAgIAogLy8gQXBwZW5kcyB0aGUgcHVueWNvZGVkIGhvc3RuYW1l
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHN0cmluZyBhbmQgbGVuZ3RoIHRvCiAvLyB0aGUgb3V0
cHV0IGJ1ZmZlci4gVGhlIHJlc3VsdCB3aWxsIG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQuCiAvLyBS
ZXR1cm4gdmFsdWUgb2YgZmFsc2UgbWVhbnMgZXJyb3IgaW4gZW5jb2RpbmcuCi1zdGF0aWMgYm9v
bCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBz
dHJpbmcpCitzdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVmVjdG9yPFVDaGFyLCA1
MTI+JiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIC8vIE5lZWRzIHRvIGJlIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgogICAgIC8vIEZvciBob3N0IG5h
bWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMg
YWxtb3N0IGNlcnRhaW5seSBPSy4KICAgICBjb25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxl
bmd0aCA9IDIwNDg7Ci0gICAgCi0gICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVm
ZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3RyaW5nKSkgeworCisgICAgaWYgKHN0cmluZy5sZW5n
dGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IHN0cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAg
ICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIAorCiAgICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJMZW5ndGhd
OwogICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CiAgICAgVUlETkFJbmZvIHBy
b2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKICAgICBpbnQzMl90IG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJSSgmVVJMUGFyc2VyOjppbnRl
cm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwKICAgICAgICAgc3RyaW5nLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBob3N0bmFt
ZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3IpOwotICAgIAorCiAgICAg
aWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgewogICAg
ICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MjgsMTAxICs0MDksODYgQEAgdW5zaWduZWQg
VVJMOjpob3N0U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBtX3Vz
ZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7CiB9CiAKLXZvaWQg
VVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKK3Vuc2lnbmVkIFVSTDo6Y3JlZGVudGlhbHNF
bmQoKSBjb25zdAoreworICAgIC8vIEluY2x1ZGUgJ0AnIHRvbyBpZiB3ZSBoYXZlIGl0LgorICAg
IHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7CisgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgIGVuZCArPSAxOworICAgIHJldHVybiBl
bmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0KFN0cmluZ1ZpZXcgbmV3SG9zdCkKIHsKICAgICBp
ZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjb2xvbkluZGV4ID0g
cy5maW5kKCc6Jyk7Ci0gICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQpCisgICAgaWYgKG5l
d0hvc3QuY29udGFpbnMoJzonKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVUNoYXJCdWZmZXIg
ZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRI
b3N0TmFtZSwgcykpCisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVuY29kZWRIb3N0TmFtZTsKKyAg
ICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIG5ld0hvc3QpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2Vy
U3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0gICAgCi0g
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxl
ZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXco
ZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQpKTsKIAotICAgIFVSTFBh
cnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVt
ZUVuZCArIDE7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChob3N0U3RhcnQoKSksCisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8i
IDogIiIsCisgICAgICAgIFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2Rl
ZEhvc3ROYW1lLnNpemUoKSksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhtX2hvc3RFbmQpCisgICAgKSk7CiB9CiAKLXZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAg
ICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRQb3J0KHVuc2ln
bmVkIHNob3J0IGkpCit2b2lkIFVSTDo6c2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkK
IHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBjb2xv
bk5lZWRlZCA9ICFtX3BvcnRMZW5ndGg7Ci0gICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gKGNvbG9u
TmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFy
c2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChwb3J0U3RhcnQpLCAoY29s
b25OZWVkZWQgPyAiOiIgOiAiIiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6OnJlbW92ZUhvc3RBbmRQb3J0
KCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKKyAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAgcmVt
b3ZlKG1faG9zdEVuZCwgbV9wb3J0TGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
aG9zdCgpLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0SG9zdCh7IH0pOwotICAgIHJlbW92ZVBvcnQo
KTsKKyAgICB9CisKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksCisgICAgICAgICc6JywKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KCpwb3J0KSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQogCi12b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQo
Y29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChTdHJp
bmdWaWV3IGhvc3RBbmRQb3J0KQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdW
aWV3IHBvcnQ7Ci0gICAgCisgICAgYXV0byBob3N0TmFtZSA9IGhvc3RBbmRQb3J0OworICAgIFN0
cmluZ1ZpZXcgcG9ydFN0cmluZzsKICAgICBhdXRvIGNvbG9uSW5kZXggPSBob3N0TmFtZS5maW5k
KCc6Jyk7CiAgICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgcG9ydCA9
IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7Ci0gICAgICAgIGJvb2wgb2s7Ci0g
ICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0ludFN0cmljdChvayk7Ci0gICAgICAgIGlmICgh
b2sgfHwgcG9ydEludCA8IDApCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBvcnRTdHJp
bmcgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwogICAgICAgICBob3N0TmFt
ZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICAgICAgaWYgKCFwYXJz
ZVVJbnQxNihwb3J0U3RyaW5nKSkKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSB7IH07CiAgICAg
fQotCi0gICAgaWYgKGhvc3ROYW1lLmlzRW1wdHkoKSkKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0
eSgpKSB7CisgICAgICAgIHJlbW92ZShob3N0U3RhcnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3Rh
cnQoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVk
SG9zdE5hbWU7CisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVuY29kZWRIb3N0TmFtZTsKICAgICBp
ZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0KLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3Rh
cnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9z
dE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwb3J0Lmlz
RW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjoiKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQocG9ydCk7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKTsKLQotICAg
IFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBt
X3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChob3N0U3RhcnQoKSksCisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQg
PyAiLy8iIDogIiIsCisgICAgICAgIFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwg
ZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisgICAgICAgIHBvcnRTdHJpbmcuaXNFbXB0eSgpID8g
IiIgOiAiOiIsCisgICAgICAgIHBvcnRTdHJpbmcsCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAgICApKTsKIH0KIAogc3RhdGljIFN0cmluZyBw
ZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRF
bmNvZGUpKFVDaGFyKSkKQEAgLTU1MSw4MSArNTE3LDg5IEBAIHN0YXRpYyBTdHJpbmcgcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2Rl
KShVCiAgICAgcmV0dXJuIGlucHV0OwogfQogCi12b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJp
bmcmIHVzZXIpCit2b2lkIFVSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAg
aWYgKCFtX2lzVmFsaWQpCisgICAgKnRoaXMgPSBVUkxQYXJzZXIoc3RyaW5nKS5yZXN1bHQoKTsK
K30KKwordm9pZCBVUkw6OnJlbW92ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHN0YXJ0IDwg
bV9zdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VSVChsZW5ndGggPD0gbV9zdHJpbmcubGVuZ3Ro
KCkgLSBzdGFydCk7CisKKyAgICBhdXRvIHN0cmluZ0FmdGVyUmVtb3ZhbCA9IFdURk1vdmUobV9z
dHJpbmcpOworICAgIHN0cmluZ0FmdGVyUmVtb3ZhbC5yZW1vdmUoc3RhcnQsIGxlbmd0aCk7Cisg
ICAgcGFyc2Uoc3RyaW5nQWZ0ZXJSZW1vdmFsKTsKK30KIAotICAgIC8vIEZJWE1FOiBOb24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2Uo
KSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBq
dXN0IHRoZSB1c2VyIGxvZ2luLgordm9pZCBVUkw6OnNldFVzZXIoU3RyaW5nVmlldyBuZXdVc2Vy
KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25l
ZCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBT
dHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHVzZXIsIFVSTFBhcnNlcjo6aXNJblVz
ZXJJbmZvRW5jb2RlU2V0KTsKLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQotICAgICAgICAgICAgdSA9ICIvLyIgKyB1Owot
ICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZlIG9uZSBiZWZvcmUuCi0gICAgICAg
IGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmlu
Z1tlbmRdICE9ICdAJykpCi0gICAgICAgICAgICB1LmFwcGVuZCgnQCcpOwotICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJT
dGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlmICghbmV3VXNlci5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVF
bmQgKyAxOworICAgICAgICBib29sIG5lZWRTZXBhcmF0b3IgPSBlbmQgPT0gbV9ob3N0RW5kIHx8
IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJyk7CisgICAgICAg
IHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlclN0YXJ0KSwKKyAgICAgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIs
CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhuZXdVc2VyLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpLAorICAgICAg
ICAgICAgbmVlZFNlcGFyYXRvciA/ICJAIiA6ICIiLAorICAgICAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkKKyAgICAgICAgKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3Jk
LgogICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9z
dEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwotICAg
ICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNh
c2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICByZW1vdmUobV91c2VyU3RhcnQsIGVuZCAtIG1f
dXNlclN0YXJ0KTsKICAgICB9CiB9CiAKLXZvaWQgVVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQpCit2b2lkIFVSTDo6c2V0UGFzc3dvcmQoU3RyaW5nVmlldyBuZXdQYXNzd29yZCkK
IHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQg
ZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAg
ICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBV
UkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3Vz
ZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAg
ICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNl
IHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RF
bmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgaWYgKCFuZXdQYXNzd29yZC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYm9vbCBuZWVkTGVhZGluZ1NsYXNoZXMgPSBtX3VzZXJFbmQgPT0g
bV9zY2hlbWVFbmQgKyAxOworICAgICAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLAorICAgICAgICAgICAgbmVlZExl
YWRpbmdTbGFzaGVzID8gIi8vOiIgOiAiOiIsCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhuZXdQYXNzd29yZC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwKKyAgICAgICAgICAgICdAJywKKyAgICAgICAgICAgIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhjcmVkZW50aWFsc0VuZCgpKQorICAgICAgICAp
KTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5l
aXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3Vz
ZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAg
ICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRo
ZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEg
Y2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgewotICAgICAgICAgICAgVVJM
UGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2Vy
RW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGVu
ZCA9IG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCA/IGNyZWRlbnRpYWxzRW5kKCkgOiBtX3Bhc3N3
b3JkRW5kOworICAgICAgICByZW1vdmUobV91c2VyRW5kLCBlbmQgLSBtX3VzZXJFbmQpOwogICAg
IH0KIH0KIAordm9pZCBVUkw6OnJlbW92ZUNyZWRlbnRpYWxzKCkKK3sKKyAgICBpZiAoIW1faXNW
YWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlKG1fdXNlclN0YXJ0LCBjcmVkZW50
aWFsc0VuZCgpIC0gbV91c2VyU3RhcnQpOworfQorCiB2b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVu
dGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IE9wdGltaXplIHRoZSBjYXNlIHdoZXJlIHRo
ZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0byBiZSBlcXVhbCB0byB3aGF0IHdhcyBwYXNz
ZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJlY3QgdG8gZG8gdGhpcyB3aXRob3V0IGVuY29k
aW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hhcmFjdGVycz8KLSAgICAqdGhpcyA9IFVSTFBh
cnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7IG1fc3RyaW5nIH0uc3Vic3RyaW5nKDAsIG1f
cXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0ucmVzdWx0KCk7CisgICAgcGFyc2UobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZp
ZXIpKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCiB7Ci0gICAg
aWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX3F1ZXJ5RW5kKTsKKyAgICBpZiAo
IW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9pc1ZhbGlkICYm
IG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZCkKLSAgICAgICAgbV9zdHJpbmcgPSBtX3N0
cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworCisgICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1f
cXVlcnlFbmQpOwogfQogCiB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZp
ZXIoKQpAQCAtNjM3LDYyICs2MTEsNjIgQEAgdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21l
bnRJZGVudGlmaWVyKCkKICAgICBtX3F1ZXJ5RW5kID0gbV9wYXRoRW5kOwogfQogCi12b2lkIFVS
TDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVyeSkKK3ZvaWQgVVJMOjpzZXRRdWVyeShTdHJp
bmdWaWV3IG5ld1F1ZXJ5KQogeworICAgIC8vIEZJWE1FOiBDb25zaWRlciByZW5hbWluZyB0aGlz
IGZ1bmN0aW9uIHRvIHNldEVuY29kZWRRdWVyeSBhbmQvb3IgY2FsbGluZyBwZXJjZW50RW5jb2Rl
Q2hhcmFjdGVycyB0aGUgd2F5IHNldFBhdGggZG9lcy4KKyAgICAvLyBodHRwczovL3dlYmtpdC5v
cmcvYi8xNjExNzYKKwogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQg
YW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcg
ZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBh
Y2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93
ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0g
IT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVy
eSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCks
IHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQorICAgIHBhcnNlKG1ha2VTdHJp
bmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwKKyAgICAg
ICAgKCFuZXdRdWVyeS5zdGFydHNXaXRoKCc/JykgJiYgIW5ld1F1ZXJ5LmlzTnVsbCgpKSA/ICI/
IiA6ICIiLAorICAgICAgICBuZXdRdWVyeSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fcXVlcnlFbmQpCisgICAgKSk7Cit9CiAKK3N0YXRpYyBTdHJpbmcgZXNjYXBl
UGF0aFdpdGhvdXRDb3B5aW5nKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHF1ZXN0aW9u
TWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJu
IGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIHJldHVy
biBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXRoLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwg
cXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKTsKIH0KIAotdm9pZCBVUkw6OnNldFBhdGgoY29uc3Qg
U3RyaW5nJiBzKQordm9pZCBVUkw6OnNldFBhdGgoU3RyaW5nVmlldyBwYXRoKQogewogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgcGF0aCA9IHM7Ci0g
ICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAgICBwYXRoID0g
Ii8iICsgcGF0aDsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KHBhdGhTdGFydCgpKSwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykg
PyAiIiA6ICIvIiwKKyAgICAgICAgZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpLAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKQorICAgICkpOwor
fQogCi0gICAgYXV0byBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIgY2hhcmFj
dGVyKSB7Ci0gICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3RlciA9PSAn
Iyc7Ci0gICAgfTsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OworU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5n
OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocGF0aEVuZCgpKTsKIH0K
IAotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29u
c3QgVVJMJiBiKQorU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlF
bmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAg
ICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAg
IHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fcXVlcnlFbmQpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewotICAgIGlmIChhLnBhdGhFbmQo
KSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBh
dGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVu
ZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBhLnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKSA9PSBiLnN0cmluZ1dpdGhv
dXRGcmFnbWVudElkZW50aWZpZXIoKTsKIH0KIAogYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBAIC03MjUsMjUgKzY5OSwxMCBAQCBi
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYg
YSwgY29uc3QgVVJMJiBiKQorYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nVmlldyBk
b21haW4pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0YXJ0KCk7
Ci0gICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAtIGhvc3RTdGFydEE7Ci0g
ICAgdW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgdW5zaWduZWQgaG9z
dExlbmd0aEIgPSBiLm1faG9zdEVuZCAtIGhvc3RTdGFydEI7Ci0gICAgaWYgKGhvc3RMZW5ndGhB
ICE9IGhvc3RMZW5ndGhCKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmco
KVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgLy8g
RklYTUU6IENvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGFuIGFwcHJvcHJpYXRlIHBsYWNlIGluIFdl
YkNvcmUncyBwbHVnLWluIGNvZGU7IGRvbid0IHdhbnQgcGVvcGxlIHRlbXB0ZWQgdG8gdXNlIHRo
aXMgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbi4KIAotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21h
aW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17CiAgICAgaWYgKGlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc2MCw2ICs3MTksNyBAQCBib29sIFVSTDo6aXNNYXRj
aGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKICAgICByZXR1cm4gaG9zdC5s
ZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWlu
Lmxlbmd0aCgpIC0gMV0gPT0gJy4nOwogfQogCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgc28gaXQn
cyBjbGVhciB0aGF0IGl0IGRvZXMgdGhlIGFwcHJvcHJpYXRlIGVzY2FwaW5nIGZvciBVUkwgcXVl
cnkgZmllbGQgdmFsdWVzLgogU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29u
c3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICByZXR1cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMo
aW5wdXQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKQEAgLTc4MSw0MSArNzQx
LDM0IEBAIHZvaWQgVVJMOjpjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikg
Y29uc3QKICAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KLWJvb2wgcHJvdG9jb2xJc0ludGVybmFsKGNvbnN0
IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQorc3RhdGljIGJvb2wgcHJv
dG9jb2xJc0ludGVybmFsKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
IHsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgeyBwcm90b2NvbCB9
KTsKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CiAgICAgYm9vbCBpc0xlYWRp
bmcgPSB0cnVlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGogPSAwOyB1cmxbaV07ICsraSkg
ewotICAgICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0
ZXJzLgotICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRyaW1Gcm9tVVJMKHVybFtpXSkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7Ci0KLSAg
ICAgICAgLy8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCi0gICAgICAgIGlmICh1cmxbaV0g
PT0gJ1x0JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0gJ1xuJykKLSAgICAgICAgICAg
IGNvbnRpbnVlOworICAgIGZvciAoYXV0byBjb2RlVW5pdCA6IHN0cmluZy5jb2RlVW5pdHMoKSkg
eworICAgICAgICBpZiAoaXNMZWFkaW5nKSB7CisgICAgICAgICAgICAvLyBTa2lwIGxlYWRpbmcg
d2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgaWYgKHNob3Vs
ZFRyaW1Gcm9tVVJMKGNvZGVVbml0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gU2tpcCB0YWJzIGFuZCBuZXdsaW5lcyBldmVuIGxhdGVyIGluIHRoZSBwcm90b2NvbC4KKyAg
ICAgICAgICAgIGlmIChjb2RlVW5pdCA9PSAnXHQnIHx8IGNvZGVVbml0ID09ICdccicgfHwgY29k
ZVVuaXQgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCi0g
ICAgICAgIGlmICghcHJvdG9jb2xbal0pCi0gICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6
JzsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFtpXSwgcHJvdG9j
b2xbal0pKQorICAgICAgICBjaGFyIGV4cGVjdGVkQ2hhcmFjdGVyID0gKnByb3RvY29sKys7Cisg
ICAgICAgIGlmICghZXhwZWN0ZWRDaGFyYWN0ZXIpCisgICAgICAgICAgICByZXR1cm4gY29kZVVu
aXQgPT0gJzonOworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY29kZVVu
aXQsIGV4cGVjdGVkQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICArK2o7CiAgICAgfQotICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9v
bCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKQorYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKIHsKLSAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90
b2NvbCk7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsK
IH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTgyOSwxMSArNzgyLDE4IEBAIHZvaWQgVVJMOjpwcmlu
dCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0
CiB7Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAgICByZWZlcnJlci5zZXRVc2VyKFN0cmlu
ZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHVuc2ln
bmVkIGVuZCA9IGNyZWRlbnRpYWxzRW5kKCk7CisKKyAgICBpZiAobV91c2VyU3RhcnQgPT0gZW5k
ICYmIG1fcXVlcnlFbmQgPT0gbV9zdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBtX3N0
cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kIC0gZW5kKQorICAgICk7CiB9CiAKIGJvb2wg
VVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CkBAIC04NDUsMTcgKzgwNSwxMiBAQCBib29sIFVSTDo6
aXNMb2NhbEZpbGUoKSBjb25zdAogICAgIHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7CiB9CiAK
LWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpCitib29sIHByb3Rv
Y29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworICAgIHJldHVybiBwcm90b2NvbElzSW50
ZXJuYWwoc3RyaW5nLCAiamF2YXNjcmlwdCIpOwogfQogCi1ib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgdXJsKQotewotICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJs
LCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3Qg
U3RyaW5nJiB1cmwpCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwp
CiB7CiAgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CiAgICAgLy8gRG8gdGhlIGNvbXBh
cmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KQEAgLTg2OSwxMyArODI0
LDEzIEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKIAog
Y29uc3QgVVJMJiBhYm91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMPiBzdGF0aWNCbGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIik7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayJfcyk7
CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCiBjb25zdCBVUkwmIGFib3V0U3JjRG9j
VVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNBYm91dFNyY0Rv
Y1VSTChVUkwoKSwgImFib3V0OnNyY2RvYyIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxV
Ukw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9jIl9zKTsKICAgICBy
ZXR1cm4gc3RhdGljQWJvdXRTcmNEb2NVUkw7CiB9CiAKQEAgLTk2NCw3ICs5MTksNiBAQCBib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wg
W0FwcGxlIGFkZGl0aW9uXQogICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlv
bl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFs
aWQgcG9ydCBudW1iZXJzCiAgICAgfTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0
aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgpAQCAtOTgzLDE1ICs5MzcsMTUgQEAgYm9v
bCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQorU3RyaW5nIG1pbWVU
eXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKQogewotICAgIEFTU0VSVChwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKKyAgICBBU1NFUlQocHJvdG9jb2xJc0ludGVybmFs
KGRhdGFVUkwsICJkYXRhIikpOwogCiAgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVo
YXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0
ZXI/Ci0gICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29s
b24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KLSAgICBhdXRvIGluZGV4
ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICAvLyBDdXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJl
YWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2U7IHNob3VsZCBhZGQgYSB0ZXN0LgorICAg
IGF1dG8gaW5kZXggPSBkYXRhVVJMLmZpbmQoJzsnLCA1KTsKICAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywnLCA1KTsKKyAgICAgICAgaW5kZXgg
PSBkYXRhVVJMLmZpbmQoJywnLCA1KTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBp
dCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgogICAgICAg
ICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29t
ZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KQEAgLTEw
MDAsMjUgKzk1NCw0NSBAQCBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCkKICAgICBpZiAoaW5kZXggPT0gNSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9z
OwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBp
bmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIGRhdGFVUkwu
c3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAog
U3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0
aCkgY29uc3QKIHsKLSAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gc3RyaW5nKCk7CisgICAgaWYgKG1fc3RyaW5nLmxlbmd0aCgpIDw9IGxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChsZW5ndGggLyAyIC0gMSksICIuLi4iLCBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5yaWdodChsZW5ndGggLyAyIC0gMikpOworfQorCitVUkwgVVJMOjpmYWtlVVJMV2l0
aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkKK3sKKyAgICByZXR1cm4gVVJM
KFVSTCgpLCBtYWtlU3RyaW5nKCJ3ZWJraXQtZmFrZS11cmw6Ly8iLCBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCksICcvJywgcmVsYXRpdmVQYXJ0KSk7Cit9CiAKLSAgICByZXR1cm4gc3RyaW5n
KCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAv
IDIgLSAyKTsKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoU3RyaW5nVmlldyBw
YXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoCisgICAgICAgICJmaWxl
Oi8vIiwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAg
ZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpCisgICAgKSk7CiB9CiAKLVVSTCBVUkw6OmZh
a2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQorU3RyaW5n
VmlldyBVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKSBjb25zdAogewotICAgIHJl
dHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKKyAgICBpZiAobV9xdWVyeUVuZCA8PSBt
X3BhdGhFbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCwgbV9xdWVyeUVuZCAtIG1fcGF0aEVuZCk7CiB9
CiAKLVVSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJl
clNpZ24oKSBjb25zdAogewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxl
UGF0aCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgbV9zdHJpbmcubGVuZ3RoKCkgPD0gbV9xdWVy
eUVuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCk7CiB9CiAKIGJvb2wgVVJMOjppc0Fib3V0Qmxhbmso
KSBjb25zdApAQCAtMTAzOCw2ICsxMDEyLDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoU09VUCkKKwogc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKICAgICBhdXRvIGNvdW50ID0gMDsKQEAgLTExMjQsMTEgKzEwOTksOSBAQCBzdGF0aWMg
Ym9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogCiBib29sIFVSTDo6aG9zdElz
SVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKIHsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0
dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7CisgICAgcmV0dXJuIGhvc3QuY29udGFpbnMoJzonKSA/
IGlzSVB2NkFkZHJlc3MoaG9zdCkgOiBpc0lQdjRBZGRyZXNzKGhvc3QpOwogfQorCiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBi
L1NvdXJjZS9XVEYvd3RmL1VSTC5oCmluZGV4IDk1YWY0YTNiNDdlMDg4N2Y1YTJhZWEwMWExMTM3
OWJiYmQxMWM2ZmYuLjQyZWMxZmI5ZWMzN2ViODMxM2Q2OTMwMTk1N2E0NTE5MDYxMGIzZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDQ3ICsz
OCwzOSBAQCBPQkpDX0NMQVNTIE5TVVJMOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgeworCiBj
bGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAg
IHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH0KIH07CiAKLXN0cnVjdCBVUkxI
YXNoOwotCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHsKK2NsYXNzIFVSTCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gR2VuZXJhdGVzIGEgVVJM
IHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCiAgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7
IH0KIAotICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDog
bV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CisgICAgZXhwbGljaXQgVVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpOworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICAvLyBSZXNvbHZlcyB0
aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhl
CiAgICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFy
YWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGlj
aCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcwotICAgIC8vIGFi
c29sdXRlLgotICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBh
bHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCi0gICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQg
d291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcwotICAgIC8vIHRo
ZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgotICAgIFVSTChj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNv
ZGluZyogPSBudWxscHRyKTsKKyAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRo
ZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhYnNvbHV0ZS4KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIFVSTCBm
YWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgVVJMIGZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChTdHJpbmdWaWV3KTsKIAotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBj
b25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJt
b25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0
eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0
cmluZyBjb25zdHJ1Y3Rvci4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwogCiAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhl
bHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhlcgogICAgIC8vIHRo
cmVhZC4gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFi
bGUsIHRoZXJlJ3MKICAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0
ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBVUkwgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CkBAIC04OSwxMjIgKzgxLDEyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0
KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQogCiAgICAgYm9vbCBjYW5TZXRQ
YXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlz
SGllcmFyY2hpY2FsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIaWVy
YXJjaGljYWwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKIAot
ICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3Ro
ID0gMTAyNCkgY29uc3Q7Ci0KLSAgICBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7Ci0gICAg
U3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBj
b25zdDsKLSAgICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgcHJvdG9j
b2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHBhc3MoKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsKLSAgICBTdHJp
bmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKLSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsK
LSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzd29y
ZCgpLCBlbmNvZGVkVXNlcigpIGFuZCBlbmNvZGVkUGFzc3dvcmQoKSBkb24ndCBkZWNvZGUgZXNj
YXBlIHNlcXVlbmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91
bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3Rl
cnMuCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVuY29kZWRVc2VyKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFBhc3N3b3JkKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nVmlldyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHF1ZXJ5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJr
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVu
dGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZ1ZpZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdDsKKyAgICBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9y
dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaG9zdEFuZFBvcnQoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVzZXIoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFVSTCB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKSBjb25zdDsKIAotICAgIGJvb2wg
aGFzVXNlcm5hbWUoKSBjb25zdDsKLSAgICBib29sIGhhc1Bhc3N3b3JkKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNRdWVyeSgpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnQoKSBjb25zdDsKKyAg
ICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwogICAgIGJvb2wgaGFzUGF0aCgp
IGNvbnN0OwogCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlv
bnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNlc3Nh
cnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3Qg
ZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0Owot
ICAgIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgU3RyaW5nIGJhc2VBc1N0cmlu
ZygpIGNvbnN0OwotCi0gICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNDcmVkZW50aWFscygpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
dXJyZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQogICAgIC8vIHRl
cm1pbmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2Uu
Ci0gICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICBib29sIHByb3Rv
Y29sSXMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJv
dG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIHByb3RvY29sSXNCbG9iKCkg
Y29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElz
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJv
dG9jb2xJc0Fib3V0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xJc0Fib3V0KCkgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3Q7Ci0gICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CiAKLSAgICBib29sIGlzQWJvdXRC
bGFuaygpIGNvbnN0OwotICAgIGJvb2wgaXNBYm91dFNyY0RvYygpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGlzQWJvdXRCbGFuaygpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsKIAotICAgIGJvb2wgaXNNYXRjaGlu
Z0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc01hdGNoaW5nRG9tYWluKFN0cmluZ1ZpZXcpIGNvbnN0OwogCi0gICAgYm9vbCBzZXRQcm90
b2NvbChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0UHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdChTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQg
cmVtb3ZlUG9ydCgpOwotICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4pOwogCiAgICAg
Ly8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9pZCBz
ZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlbW92ZUhvc3RBbmRQb3J0
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdEFuZFBvcnQoU3RyaW5nVmll
dyk7CiAKLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNz
KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVzZXIoU3Ry
aW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UGFzc3dvcmQoU3RyaW5n
Vmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsK
IAotICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJM
cywgdGhlIHJlc3VsdGluZyBwYXRoCi0gICAgLy8gd2lsbCBiZSAiLyIuCi0gICAgdm9pZCBzZXRQ
YXRoKGNvbnN0IFN0cmluZyYpOworICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9y
IEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgYmUgIi8iLgorICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBhdGgoU3RyaW5nVmlldyk7CiAKICAgICAvLyBU
aGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUg
d2lsbCBiZSBhZGRlZAogICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBl
bXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90
aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgot
ICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0UXVlcnkoU3RyaW5nVmlldyk7CiAKLSAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRp
ZmllcihTdHJpbmdWaWV3KTsKLSAgICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdW
aWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKIAotICAgIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpOwogCi0gICAgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmll
dyk7CiAKICAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBwYXRo
RW5kKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAK
LSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0K
KyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0K
KyAgICBvcGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAog
I2lmIFVTRShDRikKLSAgICBVUkwoQ0ZVUkxSZWYpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVm
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVS
TCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBVUkwoTlNVUkwq
KTsKLSAgICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
VVJMKE5TVVJMICopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBvcGVyYXRvciBOU1VSTCAqKCkg
Y29uc3Q7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JKQ19fCi0gICAgb3BlcmF0b3IgTlNTdHJpbmcq
KCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKyAgICBvcGVyYXRvciBOU1N0cmluZyAqKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAg
IHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdGVtcGxhdGUgPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgVVJM
Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICB2b2lk
IGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYs
IGNvbnN0IGNoYXIqKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGludmFsaWRhdGUo
KTsKICAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25z
dDsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjcmVkZW50
aWFsc0VuZCgpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiAKLSAgICBmcmllbmQg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwot
ICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCkBAIC0yMjksNDkgKzIy
NSwyNyBAQCBwcml2YXRlOgogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihT
dHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsK
IAotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYg
dXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAg
ICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RG
TW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
LXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKLSAgICBkZWNvZGVyID4+IHN0cmluZzsK
LSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1
cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKLX0KK2Jvb2wgb3BlcmF0b3I9PShjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKK2Jv
b2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3IhPShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9z
dHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRF
IGNvbnN0IFVSTCYgYWJvdXRCbGFua1VSTCgpOwogV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVS
TCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25z
IG9uIHN0cmluZ3MuCiAvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIg
b24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVS
TCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBh
IHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCi0vLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50
IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lk
ZXJlZCB2YWxpZCBieSBVUkwuCisvLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUg
V1RGOjpVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcg
dG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGlt
cG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5
IGNvbnNpZGVyZWQgdmFsaWQgYnkgV1RGOjpVUkwuCiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29s
IHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldyB1cmws
IGNvbnN0IGNoYXIqIHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCk7CiAKIFdURl9F
WFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3IHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKQEAgLTI4
MCwxNCArMjU0LDQwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0
IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQKIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
bGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAKLVdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3IGRhdGFVUkwpOwog
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3Nl
LCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRo
ZSBVUkwgU3RhbmRhcmQuCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIG5ldywgbW9yZSBzcGVjaWZp
YyBuYW1lLiBUaGUgZ2VuZXJhbCB0aGluZyBuYW1lZCBoZXJlIGNhbid0IGJlIGltcGxlbWVudGVk
IGNvcnJlY3RseSwgc2luY2UgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50
IGVzY2FwaW5nLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBl
U2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogCi0vLyBJbmxpbmVzLgorV1RGX0VYUE9SVF9QUklW
QVRFIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxVUkw+OworCisvLyBGdW5jdGlvbiB0ZW1wbGF0ZSBhbmQgaW5saW5lIGZ1bmN0aW9u
IGRlZmluaXRpb25zLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFVSTDo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZzsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gYm9vbCBVUkw6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsVVJMID0gZGVjb2RlKGRl
Y29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICBkZWNvZGVy
ID4+IHN0cmluZzsKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKK30KIAogaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKQEAgLTMxOSw4
ICszMTksMTAgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFVSTCYgYikKICAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwogfQogCi0vLyBJbmxpbmUgdmVy
c2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGlu
aW5nCi0vLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRo
ZSBjbGFzcyBkZWZpbml0aW9uLgoraW5saW5lIFVSTDo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCisgICAgOiBtX3N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpCit7Cit9CiAKIGlu
bGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKIHsKQEAgLTMzOSwxNyArMzQxLDEyIEBAIGlu
bGluZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0CiAKIGlubGluZSBib29sIFVSTDo6aGFzUGF0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRM
ZW5ndGg7CisgICAgcmV0dXJuIG1fcGF0aEVuZCA+IHBhdGhTdGFydCgpOwogfQogCi1pbmxpbmUg
Ym9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFzQ3JlZGVu
dGlhbHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0K
LQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7CisgICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQg
PiBtX3VzZXJTdGFydDsKIH0KIAogaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0CkBA
IC0zNTcsNyArMzU0LDcgQEAgaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhFbmQ7CiB9CiAKLWlubGluZSBib29sIFVSTDo6aGFz
RnJhZ21lbnQoKSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdAogewogICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBt
X3F1ZXJ5RW5kOwogfQpAQCAtMzgyLDExICszNzksNiBAQCBpbmxpbmUgdW5zaWduZWQgVVJMOjpw
YXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAogICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKIH0KIAotV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8VVJMPjsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKLQogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YWJvdXRCbGFua1VSTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJM
RXh0cmFzLmNwcAppbmRleCAwNmIwYWVjNjRkMTAyNWQ1NDNmZjlkYzNkNmExYTdkMmU2MTBjODU0
Li5mYTA4YzlmODgzNjU5MmI2YWMwNTNjNzNmYTg2N2U1ZTAxYmFiN2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2Yv
Q0ZVUkxFeHRyYXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgaXNDRlVSTFNhbWVPcmlnaW4o
Q0ZVUkxSZWYgY2ZVUkwsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCh1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKTsKIAotICAgIGlmICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwu
aGFzUGFzc3dvcmQoKSkKKyAgICBpZiAodXJsLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJl
dHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKIAog
ICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRl
eCBkMTNiYjZjOTFmOWViY2EzMzBkZTUxZGQwNWMyN2UwNTk2YWNhMmRiLi5jMjVlMDE1Yzg2MTA5
ZGQwNTE5YzRmNDI0YTdhYmUyN2RjNTI5ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC03NCw2ICs3
NSwxMSBAQCBib29sIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmdWaWV3JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIHByZWZpeCk7CiB9CiAKK2Jvb2wgU3RyaW5nVmlldzo6
ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2xlbmd0aCAm
JiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOworfQorCiBib29sIFN0cmluZ1Zp
ZXc6OmVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZpeCkgY29uc3QKIHsKICAgICByZXR1
cm4gOjpXVEY6OmVuZHNXaXRoKCp0aGlzLCBzdWZmaXgpOwpAQCAtMzA2LDYgKzMxMiwzNSBAQCBT
dHJpbmcgbm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcmVz
dWx0LnVuZGVybHlpbmdTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBuYW1l
ZCBwYXJzZU51bWJlcjx1aW50MTZfdD4gaW5zdGVhZD8KKy8vIEZJWE1FOiBTaG91bGQgd2UgcmVw
bGFjZSB0aGUgdG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aXRoIHRoaXMgc3R5bGU/CitPcHRp
b25hbDx1aW50MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYm9v
bCBvayA9IGZhbHNlOworICAgIGF1dG8gbnVtYmVyID0gdG9JbnRlZ3JhbFR5cGU8dWludDE2X3Q+
KHN0cmluZywgJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBudW1iZXI7Cit9CisKK2Jvb2wgZXF1YWxSZXNwZWN0aW5nTnVsbGl0eShT
dHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikKK3sKKyAgICBpZiAoYS5tX2NoYXJhY3RlcnMgPT0g
Yi5tX2NoYXJhY3RlcnMpIHsKKyAgICAgICAgQVNTRVJUKGEuaXM4Qml0KCkgPT0gYi5pczhCaXQo
KSk7CisgICAgICAgIHJldHVybiBhLmxlbmd0aCgpID09IGIubGVuZ3RoKCk7CisgICAgfQorCisg
ICAgaWYgKGEuaXNFbXB0eSgpICYmIGIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gYS5pc051
bGwoKSA9PSBiLmlzTnVsbCgpOworCisgICAgcmV0dXJuIGVxdWFsQ29tbW9uKGEsIGIpOworfQor
Citib29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0cmluZykgY29uc3QKK3sK
KyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCiAjaWYgQ0hFQ0tfU1RS
SU5HVklFV19MSUZFVElNRQogCiAvLyBNYW5hZ2UgcmVmZXJlbmNlIGNvdW50IG1hbnVhbGx5IHNv
IFVuZGVybHlpbmdTdHJpbmcgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIGluIHRoZSBoZWFk
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDZjZmViZGJhYjdlYTQ1OGUxZDk2ODBk
MTMxNjE5MTQ4ZjIxNzlmMDMuLjA5Yzc5MzQ0NTYzZmU2NzZiMjI2NDViMTJiMWNhYWIxNDUxZjRh
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMzcsOCArMTM3LDcgQEAgcHVibGlj
OgogCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZp
bmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKIAogICAgIHNpemVfdCBy
ZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpIGNvbnN0OwogCkBAIC0xNTEsNiArMTUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgY29udGFpbnMoVUNoYXIpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoQ29kZVVuaXRN
YXRjaEZ1bmN0aW9uKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcgc3RyaW5n
KSBjb25zdCB7IHJldHVybiBmaW5kKHN0cmluZywgMCkgIT0gbm90Rm91bmQ7IH0KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CiAKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkg
Y29uc3Q7CkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdW
aWV3JikgY29uc3Q7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChVQ2hh
cikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogCkBAIC0xNzQsNiArMTc1
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBib29sIGVxdWFsKFN0cmluZ1Zp
ZXcsIFN0cmluZ1ZpZXcpOworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogCiAgICAgdm9pZCBp
bml0aWFsaXplKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMTkxLDYgKzE5Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwq
KSB7IH0KICAgICB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpIHsg
fQogI2VuZGlmCisKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBjb25zdCB2b2lkKiBtX2NoYXJh
Y3RlcnMgeyBudWxscHRyIH07CkBAIC0yMTAsNiArMjEzLDkgQEAgYm9vbCBlcXVhbChTdHJpbmdW
aWV3LCBjb25zdCBMQ2hhciogYik7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5n
VmlldywgU3RyaW5nVmlldyk7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dywgY29uc3QgY2hhciopOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbFJlc3BlY3Rp
bmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOworYm9vbCBlcXVhbElnbm9yaW5nTnVs
bGl0eShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKKwogdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3Ro
PiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0
aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNv
bnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIApAQCAtMjM0LDYgKzI0MCw4
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgbm9y
bWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBub3Jt
YWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8
dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOworCiB9CiAKICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0xMDQzLDYgKzEwNTEsMTIgQEAgdGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1YKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNv
bW1vbihzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMpOwogfQogCitpbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikKK3sKKyAgICAvLyBGSVhN
RTogZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldykgaWdub3JlcyBudWxsaXR5OyBjb25zaWRl
ciBjaGFuZ2luZyB0byBiZSBsaWtlIG90aGVyIHN0cmluZyBjbGFzc2VzIGFuZCByZXNwZWN0aW5n
IGl0LgorICAgIHJldHVybiBlcXVhbChhLCBiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGYxMmFk
MzZkMTllN2ZkNTRiNWNjYTEyNmY3MjVkMDAwNjQzODQ1ZmUuLmFmYzkyZjU3NzY2NjIyOTJmMGNl
MDY0NjI0ZTY4ZjM4NDY3MjI1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTky
NCwxMDIgKzkyNCwxMDIgQEAgc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50
ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGUKIAogaW50IGNoYXJhY3Rl
cnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIExDaGFyPihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25z
dCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7
CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwog
fQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50
IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludCBjaGFyYWN0ZXJz
VG9JbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3Rl
cnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3Ro
KSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1
bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29u
c3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQo
Y29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNo
YXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVy
c0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50cHRyX3Qg
Y2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29s
KiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIExDaGFyPihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGlu
dHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBVQ2hh
cj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwog
fQogCiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxpbmdKdW5rLCBBbGxv
d1RyYWlsaW5nSnVuayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcAppbmRleCBiMGRiNTdhODM3MGNlMDMwMjg2NGZlMDgyYjQzYTI0ZWIyOGI5
ZGY5Li43ODJiMjYyZjQ4NzQxOTM4MmE3NDUwMTAzMjNlMzM1MjJhNzU2NTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtNzIsMTAg
KzcyLDggQEAgc3RhdGljIGlubGluZSBib29sIG1hdGNoVVJMcyhjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgY2FjaGVkVVIKICAgICBVUkwgY2FjaGVkUmVxdWVzdFVS
TCA9IGNhY2hlZFVSTDsKIAogICAgIGlmIChvcHRpb25zLmlnbm9yZVNlYXJjaCkgewotICAgICAg
ICBpZiAocmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAgICAgICAgICAgcmVxdWVzdFVSTC5zZXRR
dWVyeSh7IH0pOwotICAgICAgICBpZiAoY2FjaGVkUmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAg
ICAgICAgICAgY2FjaGVkUmVxdWVzdFVSTC5zZXRRdWVyeSh7IH0pOworICAgICAgICByZXF1ZXN0
VVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9
KTsKICAgICB9CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVx
dWVzdFVSTCwgY2FjaGVkUmVxdWVzdFVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggM2E1NTIxOGZmYmQ3MGEwZjExNTY2MTYwYWY5
MzkwZWJiZDE5MWQ3My4uZGZiNzMzZTkzMDBkYTJhZTFlNjk1ZTQxMmM5NzMyMDA4YWM2ZTA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAt
MTYwLDkgKzE2MCwxMCBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vz
c0ludmFsaWRTaWduYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgYwogRXhjZXB0aW9uT3I8dm9p
ZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcmIHVybCwgSW5pdCYm
IGluaXQpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgLy8g
RklYTUU6IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgaHR0cHM6
Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCisKKyAgICAvLyBGSVhN
RTogVGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyB0byBodHRwczov
L3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KICAgICBVUkwgcmVxdWVz
dFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpGb3JjZVVURjg6Olllcyk7Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLmlz
VmFsaWQoKSB8fCAhcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBh
c3MoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCByZXF1ZXN0
VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJVUkwgaXMgbm90IHZhbGlkIG9yIGNvbnRhaW5zIHVzZXIgY3JlZGVudGlhbHMuIl9zIH07
CiAKICAgICBtX29wdGlvbnMubW9kZSA9IE1vZGU6OkNvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA2MDlhYThhMjg4ZmYzNTgxOWU2
NzNjZjU2N2RjYjUyMGM2M2FiNDg5Li4wNWY0OWY4ODkzNmUwOGJkZTA1YmU0ZWI2NmZhOWMxNTg4
ZmNiY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+
IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgVVJM
IHJlcXVlc3RVUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFyZXF1ZXN0
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFr
ZVN0cmluZygiUmVkaXJlY3Rpb24gVVJMICciLCByZXF1ZXN0VVJMLnN0cmluZygpLCAiJyBpcyBp
bnZhbGlkIikgfTsKLSAgICBpZiAoIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVx
dWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmIChyZXF1ZXN0VVJMLmhhc0NyZWRlbnRp
YWxzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWRpcmVjdGlv
biBVUkwgY29udGFpbnMgY3JlZGVudGlhbHMiX3MgfTsKICAgICBpZiAoIVJlc291cmNlUmVzcG9u
c2U6OmlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKHN0YXR1cykpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSYW5nZUVycm9yLCBtYWtlU3RyaW5nKCJTdGF0dXMgY29kZSAiLCBzdGF0dXMsICJp
cyBub3QgYSByZWRpcmVjdGlvbiBzdGF0dXMgY29kZSIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4
IGNhYWRmODdiMGI1NzNlMzEyZTllM2UwMzlkNmRjNmE4OGZjNTljY2EuLmU3MTM1YmVjNjAzZjli
NTNhOWQyMmE0NDNhZjM1ODIwZjFjYWNiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0yMjAsMTMg
KzIyMCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRTdGFuZGFyZGl6ZWRQYXltZW50TWV0aG9kSWRl
bnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
cGF5bWVudC1tZXRob2QtaWQvI3ZhbGlkYXRpb24KIHN0YXRpYyBib29sIGlzVmFsaWRVUkxCYXNl
ZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICghdXJs
LnByb3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
dXJsLnVzZXIoKS5pc0VtcHR5KCkgfHwgIXVybC5wYXNzKCkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29s
SXMoImh0dHBzIikgJiYgIXVybC5oYXNDcmVkZW50aWFscygpOwogfQogCiAvLyBJbXBsZW1lbnRz
ICJ2YWxpZGF0ZSBhIHBheW1lbnQgbWV0aG9kIGlkZW50aWZpZXIiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCmluZGV4IDRlN2EwMjVlNDc2OTQ5MDExNWVlZjQ5ZWVjMGE3YWZkZTFlYzNiNTMuLmFiNGQ1
ZmJjMTFmOTJkOWFhZTY3YThhNGQ4OGZiMmVjYWVkY2ViZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCkBAIC0xMDMsMTkgKzEwMywxNCBAQCBib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6
aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAgICAgCi1zdGF0aWMgaW5saW5lIFVSTCBjcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFN0cmluZyYg
dmlkZW9JRCwgY29uc3QgU3RyaW5nJiB0aW1lSUQpCitzdGF0aWMgVVJMIGNyZWF0ZVlvdVR1YmVV
UkwoU3RyaW5nVmlldyB2aWRlb0lELCBTdHJpbmdWaWV3IHRpbWVJRCkKIHsKICAgICBBU1NFUlQo
IXZpZGVvSUQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQodmlkZW9JRCAhPSAiLyIpOwotICAgIAot
ICAgIFVSTCByZXN1bHQoVVJMKCksICJ5b3V0dWJlOiIgKyB2aWRlb0lEKTsKLSAgICBpZiAoIXRp
bWVJRC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC5zZXRRdWVyeSgidD0iICsgdGltZUlEKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJp
bmcoInlvdXR1YmU6IiwgdmlkZW9JRCwgdGltZUlELmlzRW1wdHkoKSA/ICIiIDogInQ9IiwgdGlt
ZUlEKSk7CiB9Ci0gICAgCi1zdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1
ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKKworc3Rh
dGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFs
dWVzKFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAgWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpLZXlWYWx1ZU1hcCBxdWVyeURpY3Rpb25hcnk7CiAgICAgCkBAIC0xNTUsNyArMTUwLDcg
QEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlz
QW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICAgICAgLy8gU2F2ZSB0aGUga2V5IGFuZCB0
aGUgdmFsdWUuCiAgICAgICAgIGlmIChrZXlMZW5ndGggJiYgdmFsdWVMZW5ndGgpIHsKICAgICAg
ICAgICAgIFN0cmluZyBrZXkgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcoa2V5TG9jYXRpb24sIGtl
eUxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICAgICAgICAgIFN0cmluZyB2
YWx1ZSA9IHF1ZXJ5U3RyaW5nLnN1YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCk7
CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVM
b2NhdGlvbiwgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB2YWx1ZS5yZXBs
YWNlKCcrJywgJyAnKTsKIAogICAgICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpICYmICF2YWx1
ZS5pc0VtcHR5KCkpCkBAIC0yMDksMTYgKzIwNCwxNiBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRD
cmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRV
UgogCiAgICAgLy8gU2hvcnQgVVJMIG9mIHRoZSBmb3JtOiBodHRwOi8veW91dHUuYmUvdjFkMzAx
RAogICAgIGlmIChpc1lvdVR1YmVTaG9ydGVuZWRVUkwpIHsKLSAgICAgICAgU3RyaW5nIHZpZGVv
SUQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgYXV0byB2aWRlb0lEID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmICh2aWRlb0lELmlzRW1wdHkoKSB8fCB2
aWRlb0lEID09ICIvIikKICAgICAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHsgfSk7CiAgICAgfQotICAgIAorCiAgICAgYXV0
byBwYXRoID0gdXJsLnBhdGgoKTsKLSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAg
ICBTdHJpbmcgZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgCisgICAg
YXV0byBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGF1dG8gZnJhZ21lbnQgPSB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCk7CisKICAgICAvLyBPbiB0aGUgWW91VHViZSBtb2JpbGUgd2ViIGFwcCwg
dGhlIHBhdGggYW5kIHF1ZXJ5IHN0cmluZyBhcmUgcHV0IGludG8gdGhlCiAgICAgLy8gZnJhZ21l
bnQgc28gdGhhdCBvbmUgd2ViIHBhZ2UgaXMgb25seSBldmVyIGxvYWRlZCAoc2VlIDxyZGFyOi8v
cHJvYmxlbS85NTUwNjM5PikuCiAgICAgaWYgKGlzWW91VHViZU1vYmlsZVdlYkFwcFVSTCkgewpA
QCAtMjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwo
Y29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICBw
YXRoID0gZnJhZ21lbnQ7CiAgICAgICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gU3RyaW5nVmlldyhmcmFnbWVudCkuc3Vi
c3RyaW5nKDAsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJp
bmcoMCwgbG9jYXRpb24pOwogICAgICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmco
bG9jYXRpb24gKyAxKTsKICAgICAgICAgfQogICAgICAgICBmcmFnbWVudCA9IGVtcHR5U3RyaW5n
KCk7CkBAIC0yNjAsMTAgKzI1NSwxMCBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VU
dWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHBhdGgsICIvZS8iKSkgewotICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICAgICAgU3RyaW5nIHZpZGVvSUQ7Ci0gICAg
ICAgIFN0cmluZyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsKKyAgICAgICAgU3RyaW5nVmlldyB2
aWRlb0lEOworICAgICAgICBTdHJpbmdWaWV3IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwogCisg
ICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsK
ICAgICAgICAgc2l6ZV90IGFtcGVyc2FuZExvY2F0aW9uID0gbGFzdFBhdGhDb21wb25lbnQuZmlu
ZCgnJicpOwogICAgICAgICBpZiAoYW1wZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAg
ICAgICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBjYXJlIGFib3V0IHVzZSAmIGluIHBsYWNlIG9mID8g
Zm9yIHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0ZXIuCkBAIC0yNzMsMTEgKzI2OCwxMSBAQCBzdGF0
aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBp
c1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9u
ZW50OwogCiAgICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG91
dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0gcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAg
ICAgICAgICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJz
YW5kLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRl
b0lELCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBVUkwoKTsKIH0KIApAQCAtMjkwLDEzICsyODUsMTMgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudDo6eW91VHViZVVSTChjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIFN0cmluZyBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3Qg
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogewogICAgIGJvb2wgaXNZb3VU
dWJlU2hvcnRlbmVkVVJMID0gZmFsc2U7Ci0gICAgU3RyaW5nIHBvc3NpYmxlTWFsZm9ybWVkUXVl
cnk7Ci0gICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNV
UkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9zc2libGVNYWxmb3JtZWRRdWVyeSk7CisgICAg
U3RyaW5nIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7CisgICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9j
ZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9z
c2libHlNYWxmb3JtZWRRdWVyeSk7CiAgICAgaWYgKHNyY1VSTC5pc0VtcHR5KCkgfHwgeW91VHVi
ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzcmNTdHJpbmc7CiAKICAgICAvLyBUcmFu
c2Zvcm0gdGhlIHlvdXR1YmVVUkwgKHlvdXR1YmU6VmlkZW9JRCkgdG8gaWZyYW1lIGVtYmVkIHVy
bCB3aGljaCBoYXMgdGhlIGZvcm1hdDogaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9WaWRl
b0lECi0gICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgoKS50b1N0cmluZygpOworICAgIGF1
dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCk7CiAgICAgY29uc3QgU3RyaW5nJiB2aWRlb0lEID0g
eW91VHViZVVSTC5zdHJpbmcoKS5zdWJzdHJpbmcoeW91VHViZVVSTC5wcm90b2NvbCgpLmxlbmd0
aCgpICsgMSk7CiAgICAgc2l6ZV90IGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoID0gc3JjUGF0aC5m
aW5kKHZpZGVvSUQpOwogCkBAIC0zMDUsNyArMzAwLDcgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwg
Y28KICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKTsKICAgICAKICAgICAg
ICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZv
cmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0g
c3JjU3RyaW5nLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBh
dGgpKTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhz
cmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBh
dGgpKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1Bh
dGgsICIvd2F0Y2giKSkgewogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5l
ZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvd2F0Y2gvIyF2PVZpZGVvSUQKICAgICAgICAgLy8g
RklYTUU6IFNob3VsZG4ndCB0aGlzIGJlIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmU/CkBAIC0zMTUs
MjIgKzMxMCwyMSBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJM
RnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogCiAgICAgQVNTRVJUKGxvY2F0
aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBub3RGb3VuZCk7CiAKLSAgICBjb25zdCBTdHJpbmcm
IHNyY1VSTFByZWZpeCA9IHNyY1N0cmluZy5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZv
cmVWaWRlb0lEKTsKLSAgICBTdHJpbmcgcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKKyAgICBhdXRv
IHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5zdWJzdHJpbmcoMCwgbG9jYXRp
b25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKKyAgICBhdXRvIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7
CisKICAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVyeSwgdXNlIHRoZSBwb3NzaWJseSBtYWxm
b3JtZWQgcXVlcnkgd2UgZm91bmQuCiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAg
cXVlcnkgPSBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5OworICAgICAgICBxdWVyeSA9IHBvc3NpYmx5
TWFsZm9ybWVkUXVlcnk7CiAKICAgICAvLyBBcHBlbmQgdGhlIHF1ZXJ5IHN0cmluZyBpZiBpdCBp
cyB2YWxpZC4KLSAgICBTdHJpbmdCdWlsZGVyIGZpbmFsVVJMOwotICAgIGlmIChpc1lvdVR1YmVT
aG9ydGVuZWRVUkwpCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoImh0dHA6Ly93d3cu
eW91dHViZS5jb20iKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZChzcmNVUkxQ
cmVmaXgpOwotICAgIGZpbmFsVVJMLmFwcGVuZCgiL2VtYmVkLyIsIHZpZGVvSUQpOwotICAgIGlm
ICghcXVlcnkuaXNFbXB0eSgpKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoJz8nLCBxdWVyeSk7
Ci0gICAgcmV0dXJuIGZpbmFsVVJMLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
CisgICAgICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA/ICJodHRwOi8vd3d3LnlvdXR1YmUuY29t
IiA6IHNyY1VSTFByZWZpeCwKKyAgICAgICAgIi9lbWJlZC8iLAorICAgICAgICB2aWRlb0lELAor
ICAgICAgICBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiwKKyAgICAgICAgcXVlcnkKKyAgICAp
OwogfQogICAgIAogYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzVVJMKGNv
bnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA5OTI2Y2VmOTY3MTU1MzY3MmYyMzc5
OWJmMmZlYmZiNWVkMTkwZjc3Li5lMjM3NDk3MTg2M2YxZGE3MGQ3ZTlmOWM5OTY5ZGQ2YzA2NGY1
MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNjQsMTUgKzY0LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgVVJMJiB1cmwpCiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciBuYW1lOwotICAgIG5hbWUuYXBwZW5kKHVybC5wYXRoKCkpOwotICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbmFtZS5hcHBlbmQoJy8nKTsKLSAgICBpZiAo
IXVybC5xdWVyeSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIG5hbWUuYXBwZW5kKCc/Jyk7Ci0gICAg
ICAgIG5hbWUuYXBwZW5kKHVybC5xdWVyeSgpKTsKLSAgICB9Ci0gICAgU3RyaW5nIHJlc3VsdCA9
IG5hbWUudG9TdHJpbmcoKTsKKyAgICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVN0cmluZygKKyAgICAgICAgcGF0aCwKKyAgICAgICAgcGF0aC5pc0VtcHR5
KCkgPyAiLyIgOiAiIiwKKyAgICAgICAgdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmso
KQorICAgICk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXJl
c3VsdC5jb250YWlucygnICcpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggMzVhNjZiZTU1NWE2M2I0MDhlNmQ4YjViZmIyYzlkNzI5YTI0YTQyYi4uY2Y2ZGM1
ZGFhZWYzNjg5YzlmNjk5NTczNGFkODkxNjEwNGViZTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC05NDQsMjYgKzk0NCwyNyBAQCBJbnRQb2ludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpjbGlja1BvaW50KCkKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdAogewotICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gYW5jaG9yRWxl
bWVudCgpOworCiAgICAgLy8gUmlnaHQgbm93LCB3ZSBkbyBub3Qgc3VwcG9ydCBBUklBIGxpbmtz
IGFzIGludGVybmFsIGxpbmsgZWxlbWVudHMKICAgICBpZiAoIWlzPEhUTUxBbmNob3JFbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgSFRNTEFuY2hvckVsZW1l
bnQmIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7Ci0gICAg
Ci0gICAgVVJMIGxpbmtVUkwgPSBhbmNob3IuaHJlZigpOwotICAgIFN0cmluZyBmcmFnbWVudElk
ZW50aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8mIGFuY2hv
ciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7CisKKyAgICBhdXRvIGxp
bmtVUkwgPSBhbmNob3IuaHJlZigpOworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gbGlu
a1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAvLyBjaGVjayBp
ZiBVUkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAgICBVUkwgZG9jdW1lbnRVUkwgPSBt
X3JlbmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOworICAgIGF1dG8gZG9jdW1lbnRVUkwgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIE5vZGUqIGxpbmtlZE5vZGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZp
bmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKTsKKworICAgIGF1dG8gbGlua2VkTm9kZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKTsKICAgICBpZiAoIWxpbmtlZE5vZGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAorCiAgICAgLy8gVGhlIGVsZW1lbnQgd2UgZmluZCBtYXkgbm90IGJl
IGFjY2Vzc2libGUsIHNvIGZpbmQgdGhlIGZpcnN0IGFjY2Vzc2libGUgb2JqZWN0LgogICAgIHJl
dHVybiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShsaW5rZWROb2RlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDE5NzJhZWQ5MDllMDk3YTY1YjdlYTFlNGI1ZjkzYWJhNjhl
OTRlMWUuLmU0NDU0ZTZkNWI3NWVmMDIxOGJmMDJjOTcyZjEzNWRjZGIzYmYzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzI1MSw3ICszMjUxLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0
VVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV91cmwgPSBuZXdVUkw7CiAgICAgaWYgKFNlY3Vy
aXR5T3JpZ2luOjpzaG91bGRJZ25vcmVIb3N0KG1fdXJsKSkKLSAgICAgICAgbV91cmwucmVtb3Zl
SG9zdEFuZFBvcnQoKTsKKyAgICAgICAgbV91cmwuc2V0SG9zdEFuZFBvcnQoeyB9KTsKIAogICAg
IG1fZG9jdW1lbnRVUkkgPSBtX3VybC5zdHJpbmcoKTsKICAgICB1cGRhdGVCYXNlVVJMKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWQzNWZjZGM2ZjQ2MjA0Y2RhYjczZjYzNGJmOWUwNTBl
MTFjZDQ2Ny4uMWZmMjNlMTYwYjkxOGFiMWNkYzUwZThjM2Y3NjFjOGQxY2E0MmEwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtNDQ5MSw3ICs0NDkxLDcgQEAgRWxlbWVudCogRWxlbWVudDo6
ZmluZEFuY2hvckVsZW1lbnRGb3JMaW5rKFN0cmluZyYgb3V0QW5jaG9yTmFtZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBkb2N1bWVudC5iYXNlVVJMKCkp
KSB7Ci0gICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Cisg
ICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmco
KTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmZpbmRBbmNob3Iob3V0QW5jaG9yTmFtZSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDFkYWE4NTg4ZGY1MzkwYWY4MTMx
ZTBkYWYwOTdhODlmYjU3N2E1OTEuLjMwZWQ5ZjNmNjFmNDAzZGJiOTRlOGUzZTJmNzlmZjg5N2Ux
NzJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC00NDAsNiArNDQwLDggQEAgVmVj
dG9yPFJlZlB0cjxFbGVtZW50Pj4gVHJlZVNjb3BlOjplbGVtZW50c0Zyb21Qb2ludChjb25zdCBG
bG9hdFBvaW50JiBwKQogICAgIHJldHVybiBlbGVtZW50c0Zyb21Qb2ludChwLngoKSwgcC55KCkp
OwogfQogCisvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBjaGFuZ2UgdGhpcyB0byB0YWtlIGEg
U3RyaW5nVmlldywgc2luY2UgdGhhdCdzIHdoYXQgY2FsbGVycyBoYXZlCisvLyBhbmQgdGhlcmUg
aXMgbm8gcGFydGljdWxhciBhZHZhbnRhZ2UgdG8gYWxyZWFkeSBoYXZpbmcgYSBTdHJpbmcuCiBF
bGVtZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMGM5ZjlkMGU4OTAzOTcwMDMxMDkw
ZGIyYjhmMzBkZGRjNDJlOWRkNC4uZmE2MWM1YzYxOWUwNzRhMWE3NTU1Nzc1YjVmZjVjZjljMWMx
OTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMyOCwxMyArMzI4LDEzIEBAIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21l
bnQmIGZyCiAgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gaW1hZ2UuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOworICAgICAgICBT
dHJpbmcgbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOwor
ICAgICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENv
bXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJtZWRpYSIpOworICAgICAgICAgICAgbmFtZSA9ICJt
ZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1l
LCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBp
bWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5k
YW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNDgsMTEgKzM0
OCwxMSBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0g
dXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGF1dG8gbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVu
dCgpOworICAgICAgICBTdHJpbmcgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5s
YXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJmaWxlIik7CisgICAgICAgICAgICBu
YW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgbmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDog
YXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCBmMmEyZDUyYWM1YWJmNGU0ZjEzMTEzY2EyNWQxYjIwYTE3MzhmYTY5Li5i
N2QyOWNkNGJhZDk1MGQzYWJkN2RmNzllOTBmNTM0NjRjMzY4ODQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBFZGl0b3I6
OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYg
aW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSBwYXN0ZWJvYXJk
SW1hZ2VVUkw7CiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAg
ICB9Ci0gICAgcGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5s
YXN0UGF0aENvbXBvbmVudCgpOworICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0g
aW1hZ2VTb3VyY2VVUkwubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgIHBhc3Rl
Ym9hcmRJbWFnZS5pbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgIHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNhY2hlZElt
YWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCAzYTExZDkyMGIwNzgwZWRjZDc2
NGIxOWEwNGMzYWZlMDllOTI2Y2IzLi45MDIxMGY1NWIxNzJhMjBhYjZmNTdhMjQyNTE3MzRhMTA2
NjhlMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCkBAIC0xNzcsMjIgKzE3NywxNyBAQCBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojph
dHRhY2htZW50VGl0bGUoKSBjb25zdAogU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0
YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0CiB7CiAgICAgYXV0byB0aXRsZSA9IGF0dGFj
aG1lbnRUaXRsZSgpOwotCiAgICAgYXV0byBpbmRleE9mTGFzdERvdCA9IHRpdGxlLnJldmVyc2VG
aW5kKCcuJyk7CiAgICAgaWYgKGluZGV4T2ZMYXN0RG90ID09IG5vdEZvdW5kKQogICAgICAgICBy
ZXR1cm4gdGl0bGU7CiAKLSAgICBTdHJpbmcgbmFtZSA9IHRpdGxlLmxlZnQoaW5kZXhPZkxhc3RE
b3QpOwotICAgIFN0cmluZyBleHRlbnNpb24gPSB0aXRsZS5zdWJzdHJpbmcoaW5kZXhPZkxhc3RE
b3QpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxl
ZnRUb1JpZ2h0TWFyayk7Ci0gICAgYnVpbGRlci5hcHBlbmQoZmlyc3RTdHJvbmdJc29sYXRlKTsK
LSAgICBidWlsZGVyLmFwcGVuZChuYW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZChwb3BEaXJlY3Rp
b25hbElzb2xhdGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGV4dGVuc2lvbik7Ci0KLSAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBs
ZWZ0VG9SaWdodE1hcmssCisgICAgICAgIGZpcnN0U3Ryb25nSXNvbGF0ZSwKKyAgICAgICAgU3Ry
aW5nVmlldyh0aXRsZSkubGVmdChpbmRleE9mTGFzdERvdCksCisgICAgICAgIHBvcERpcmVjdGlv
bmFsSXNvbGF0ZSwKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKGluZGV4T2ZM
YXN0RG90KQorICAgICk7CiB9CiAKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFj
aG1lbnRUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKaW5kZXggMDNkOTA1YmJhMzc5MTI3ZDdmOTQxODkyZjc5NzY1YTdlZjkzYzFiOS4uNmJmZTcw
NzRhOTUxYWQ3YWNjZTk5Mzg0MDA2NmM4ZGI3NGQxNjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTM1NywxNCArMzU3LDE0IEBAIHN0YXRpYyBSZXBs
YWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGV4dGVu
c2lvbjsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKKyAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CiAgICAgc2l6ZV90IGRvdE9mZnNldCA9IGxhc3RQYXRoQ29tcG9uZW50LnJldmVyc2VGaW5k
KCcuJyk7CiAgICAgaWYgKGRvdE9mZnNldCAhPSBub3RGb3VuZCkKLSAgICAgICAgZXh0ZW5zaW9u
ID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEpOworICAgICAgICBl
eHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoZG90T2Zmc2V0ICsgMSkudG9T
dHJpbmcoKTsKIAogICAgIFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNF
bXB0eSgpICYmIHVybC5wcm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVG
cm9tRGF0YVVSTCh1cmwuc3RyaW5nKCkpOworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0
YVVSTCh1cmwpOwogICAgIAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlz
RW1wdHkoKSkgewogICAgICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApp
bmRleCBlN2E1MTZlYmEyMjg0OWZjZDM3MzQ2NTkzOTRiN2M0OWU3Zjk3Y2UxLi41Yjg0NTQxZWEw
ZGNmNTIyNDI4MmMzMWNmNzRiYjQ2ZWEyNTUyZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTk4LDkgKzk4LDcgQEAgTWVkaWFUaW1l
IE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OmVuZFRpbWUoKQogCiB2b2lkIE1lZGlhRnJhZ21lbnRV
UklQYXJzZXI6OnBhcnNlRnJhZ21lbnRzKCkKIHsKLSAgICBpZiAoIW1fdXJsLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIGZyYWdtZW50U3RyaW5n
ID0gbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBmcmFnbWVudFN0cmluZyA9
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudFN0cmluZy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCmluZGV4IGI3MGU1
ZGNiZTgyNzU4MTAwYjA3MmQyZjRmMGYwZTQ2ODBjMDEwOTcuLjM5MGI5OGQ1YmZlNDQ2NTk0Zjdm
OTNiMTU2MjdmN2Q4M2RlYmQ0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOCArMjksNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
VVJMVXRpbHMgewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVVJMVXRpbHMgewogcHVibGlj
OgogICAgIFVSTCBocmVmKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpLT5ocmVmKCk7IH0KICAgICB2b2lkIHNldEhyZWYoY29uc3QgU3RyaW5nJiB1cmwpIHsgc3Rh
dGljX2Nhc3Q8VCo+KHRoaXMpLT5zZXRIcmVmKHVybCk7IH0KQEAgLTQxLDMxICs0MCwzMSBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwogCiAgICAgU3RyaW5nIHByb3RvY29s
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldFByb3RvY29sKFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIHVzZXJuYW1lKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRVc2VybmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFVzZXJu
YW1lKFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRQYXNzd29yZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhc3N3b3JkKFN0cmlu
Z1ZpZXcpOwogCiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3QoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRIb3N0KFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5n
IGhvc3RuYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNldEhvc3RuYW1lKFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIHBvcnQoKSBj
b25zdDsKLSAgICB2b2lkIHNldFBvcnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRQb3J0
KFN0cmluZ1ZpZXcpOwogCiAgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRQYXRobmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhdGhuYW1lKFN0cmluZ1Zp
ZXcpOwogCiAgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2VhcmNoKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGhhc2goKSBjb25zdDsKLSAgICB2b2lkIHNldEhh
c2goY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRIYXNoKFN0cmluZ1ZpZXcpOwogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC05NSw4ICs5NCw3IEBAIFN0cmluZyBVUkxVdGlsczxU
Pjo6cHJvdG9jb2woKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKGhyZWYoKS5wcm90b2Nv
bCgpLCAnOicpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46
OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIFVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIFVS
TCB1cmwgPSBocmVmKCk7CiAgICAgdXJsLnNldFByb3RvY29sKHZhbHVlKTsKQEAgLTEwNiwxMSAr
MTA0LDEwIEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6dXNlcm5hbWUo
KSBjb25zdAogewotICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFVzZXIoKTsKKyAgICByZXR1cm4g
aHJlZigpLmVuY29kZWRVc2VyKCkudG9TdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRVc2VybmFtZShjb25zdCBTdHJpbmcmIHVzZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRVc2VybmFtZShTdHJpbmdW
aWV3IHVzZXIpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodXJsLmNhbm5vdEJl
QUJhc2VVUkwoKSkKQEAgLTEyMiwxNiArMTE5LDE1IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFVz
ZXJuYW1lKGNvbnN0IFN0cmluZyYgdXNlcikKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5n
IFVSTFV0aWxzPFQ+OjpwYXNzd29yZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNv
ZGVkUGFzcygpOworICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFBhc3N3b3JkKCkudG9TdHJpbmco
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXNz
d29yZChjb25zdCBTdHJpbmcmIHBhc3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0
aWxzPFQ+OjpzZXRQYXNzd29yZChTdHJpbmdWaWV3IHBhc3N3b3JkKQogewogICAgIFVSTCB1cmwg
PSBocmVmKCk7CiAgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB1cmwuc2V0UGFzcyhwYXNzKTsKKyAgICB1cmwuc2V0UGFzc3dvcmQocGFzc3dvcmQp
OwogICAgIHNldEhyZWYodXJsKTsKIH0KIApAQCAtMTQxLDE3ICsxMzcsMTcgQEAgU3RyaW5nIFVS
TFV0aWxzPFQ+Ojpob3N0KCkgY29uc3QKICAgICByZXR1cm4gaHJlZigpLmhvc3RBbmRQb3J0KCk7
CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgbGVhZGluZyBzcGFjZXMgYmVm
b3JlIHRoZSBwb3J0IG51bWJlci4KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgcGFyc2VQb3J0RnJv
bVN0cmluZ1Bvc2l0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkIHBvcnRTdGFydCwg
dW5zaWduZWQmIHBvcnRFbmQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvdW50QVNDSUlEaWdp
dHMoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0gICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKLSAgICB3
aGlsZSAoaXNBU0NJSURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKLSAgICAgICAgKytwb3J0RW5kOwot
ICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0
KS50b1VJbnQoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBjb3VudCA9IDA7IGNvdW50IDwgbGVuZ3RoOyArK2NvdW50KSB7CisgICAg
ICAgIGlmICghaXNBU0NJSURpZ2l0KHN0cmluZ1tjb3VudF0pKQorICAgICAgICAgICAgcmV0dXJu
IGNvdW50OworICAgIH0KKyAgICByZXR1cm4gbGVuZ3RoOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoU3RyaW5nVmlldyB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0x
NjgsMTggKzE2NCwxOSBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgaWYgKHNlcGFyYXRvciA9PSBub3RGb3VuZCkKICAgICAgICAgdXJsLnNldEhv
c3RBbmRQb3J0KHZhbHVlKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgcG9ydEVuZDsK
LSAgICAgICAgdW5zaWduZWQgcG9ydCA9IHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlvbih2YWx1
ZSwgc2VwYXJhdG9yICsgMSwgcG9ydEVuZCk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAg
ICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY291bnRBU0NJSURpZ2l0cyh2YWx1ZS5zdWJzdHJpbmco
c2VwYXJhdG9yICsgMSkpOworICAgICAgICBpZiAoIXBvcnRMZW5ndGgpIHsKICAgICAgICAgICAg
IC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwt
ZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcwogICAgICAgICAgICAgLy8gc3BlY2lmaWNhbGx5
IGdvZXMgYWdhaW5zdCBSRkMgMzk4NiAocDMuMikgYW5kCiAgICAgICAgICAgICAvLyByZXF1aXJl
cyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgot
ICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0
b3IgKyAxKSArICcwJyk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHNv
bWV0aGluZyB0aGF0IGhhcyBzaW5jZSBiZWVuIGNoYW5nZWQgYW5kIHRoaXMgcnVsZSBhbmQgY29k
ZSBtYXkgYmUgb2Jzb2xldGUuCisgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQobWFrZVN0
cmluZyh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSksICcwJykpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgIGF1dG8gcG9ydE51bWJlciA9IHBhcnNl
VUludDE2KHZhbHVlLnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CisgICAg
ICAgICAgICBpZiAocG9ydE51bWJlciAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgq
cG9ydE51bWJlciwgdXJsLnByb3RvY29sKCkpKQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0
QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBw
b3J0RW5kKSk7CisgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0
cmluZygwLCBzZXBhcmF0b3IgKyAxICsgcG9ydExlbmd0aCkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKQEAgLTE5MSwxNyArMTg4LDE0IEBAIFN0cmluZyBV
UkxVdGlsczxUPjo6aG9zdG5hbWUoKSBjb25zdAogICAgIHJldHVybiBocmVmKCkuaG9zdCgpLnRv
U3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6
c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgVVJMVXRpbHM8VD46OnNldEhvc3RuYW1lKFN0cmluZ1ZpZXcgdmFsdWUpCiB7CiAgICAgLy8g
QmVmb3JlIHNldHRpbmcgbmV3IHZhbHVlOgogICAgIC8vIFJlbW92ZSBhbGwgbGVhZGluZyBVKzAw
MkYgU09MSURVUyAoIi8iKSBjaGFyYWN0ZXJzLgogICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHVu
c2lnbmVkIGhvc3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKICAgICB3aGlsZSAodmFsdWVbaV0g
PT0gJy8nKQogICAgICAgICBpKys7Ci0KLSAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgIGlm
IChpID09IHZhbHVlLmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBVUkwgdXJsID0g
aHJlZigpOwpAQCAtMjIzLDIxICsyMTcsMjIgQEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojpwb3J0KCkg
Y29uc3QKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci12b2lkIFVSTFV0aWxzPFQ+OjpzZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQb3J0KFN0cmluZ1ZpZXcgdmFs
dWUpCiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKLSAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VV
UkwoKSB8fCB1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgp
IHx8IHVybC5wcm90b2NvbElzKCJmaWxlIikgfHwgIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgdW5zaWduZWQg
cG9ydCA9IHZhbHVlLnRvVUludCgmc3VjY2Vzcyk7Ci0gICAgaWYgKCFzdWNjZXNzIHx8IFdURjo6
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKLSAgICAgICAg
dXJsLnJlbW92ZVBvcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwor
ICAgIGF1dG8gZGlnaXRzT25seSA9IHZhbHVlLmxlZnQoY291bnRBU0NJSURpZ2l0cyh2YWx1ZSkp
OworICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0OworICAgIGlmICghZGlnaXRzT25seS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgcG9ydCA9IHBhcnNlVUludDE2KGRpZ2l0c09ubHkpOworICAgICAg
ICBpZiAoIXBvcnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChXVEY6OmlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAg
cG9ydCA9IFdURjo6bnVsbG9wdDsKKyAgICB9CisgICAgdXJsLnNldFBvcnQocG9ydCk7CiAKICAg
ICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7CiB9CkBAIC0yNDgsOCArMjQzLDcgQEAgU3RyaW5nIFVS
TFV0aWxzPFQ+OjpwYXRobmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGhyZWYoKS5wYXRoKCkudG9T
dHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+Ojpz
ZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAgICBVUkwg
dXJsID0gaHJlZigpOwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQpAQCAtMjU3LDEw
ICsyNTEsMTAgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAodmFsdWVbMFVdID09ICcvJykKKyAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnLycp
KQogICAgICAgICB1cmwuc2V0UGF0aCh2YWx1ZSk7CiAgICAgZWxzZQotICAgICAgICB1cmwuc2V0
UGF0aCgiLyIgKyB2YWx1ZSk7CisgICAgICAgIHVybC5zZXRQYXRoKG1ha2VTdHJpbmcoJy8nLCB2
YWx1ZSkpOwogCiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtMjY4LDggKzI2Miw3
IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6c2VhcmNoKCkgY29uc3QK
IHsKLSAgICBTdHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsKLSAgICByZXR1cm4gcXVlcnku
aXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHF1ZXJ5OworICAgIHJldHVybiBocmVm
KCkucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogaHJlZigpLnF1ZXJ5V2l0aExl
YWRpbmdRdWVzdGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KQEAgLTI4MCw3ICsyNzMsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRTZWFyY2goY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICAgICAgLy8gSWYgdGhlIGdpdmVuIHZhbHVlIGlzIHRoZSBlbXB0
eSBzdHJpbmcsIHNldCB1cmwncyBxdWVyeSB0byBudWxsLgogICAgICAgICB1cmwuc2V0UXVlcnko
eyB9KTsKICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBV
XSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgICAgIFN0cmluZyBu
ZXdTZWFyY2ggPSB2YWx1ZS5zdGFydHNXaXRoKCc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2
YWx1ZTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5v
dCBsZWFrIHRvIHRoZSBoYXNoLgogICAgICAgICB1cmwuc2V0UXVlcnkobmV3U2VhcmNoLnJlcGxh
Y2VXaXRoTGl0ZXJhbCgnIycsICIlMjMiKSk7CiAgICAgfQpAQCAtMjkxLDE3ICsyODQsMTQgQEAg
dm9pZCBVUkxVdGlsczxUPjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6aGFzaCgpIGNvbnN0CiB7Ci0gICAg
U3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsK
LSAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIEF0b21TdHJpbmcoU3RyaW5nKCIjIiArIGZyYWdtZW50
SWRlbnRpZmllcikpOworICAgIC8vIEZJWE1FOiBXaHkgY29udmVydCB0aGlzIHN0cmluZyB0byBh
biBhdG9tIGhlcmUgaW5zdGVhZCBvZiBqdXN0IGEgc3RyaW5nPyBJbnRlbnRpb25hbGx5IHRvIHNh
dmUgbWVtb3J5PyBBbiBlcnJvcj8KKyAgICByZXR1cm4gaHJlZigpLmZyYWdtZW50SWRlbnRpZmll
cigpLmlzRW1wdHkoKSA/IGVtcHR5QXRvbSgpIDogaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcldp
dGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvQXRvbVN0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhhc2goU3RyaW5nVmll
dyB2YWx1ZSkKIHsKICAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIFN0cmluZyBuZXdGcmFnbWVu
dCA9IHZhbHVlWzBVXSA9PSAnIycgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICBh
dXRvIG5ld0ZyYWdtZW50ID0gdmFsdWUuc3RhcnRzV2l0aCgnIycpID8gU3RyaW5nVmlldyh2YWx1
ZSkuc3Vic3RyaW5nKDEpIDogU3RyaW5nVmlldyh2YWx1ZSk7CiAgICAgaWYgKG5ld0ZyYWdtZW50
LmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKaW5k
ZXggNjMzZTc3NWE1NDU0NGZjZmQ2Njg3YWJiZWNmOWFkODY4OWE2ZGQyZi4uNzZkNGFmYjk1ZmY0
YjQ2ZGMwMmFjY2UwN2RmNGFlYzljNTRiZjE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBBZENsaWNrQXR0
cmlidXRpb246OmlzVmFsaWQoKSBjb25zdAogCiBFeHBlY3RlZDxBZENsaWNrQXR0cmlidXRpb246
OkNvbnZlcnNpb24sIFN0cmluZz4gQWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25S
ZXF1ZXN0KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiB7Ci0gICAgaWYgKCFyZWRpcmVjdFVSTC5w
cm90b2NvbElzKCJodHRwcyJfcykgfHwgcmVkaXJlY3RVUkwuaGFzVXNlcm5hbWUoKSB8fCByZWRp
cmVjdFVSTC5oYXNQYXNzd29yZCgpIHx8IHJlZGlyZWN0VVJMLmhhc1F1ZXJ5KCkgfHwgcmVkaXJl
Y3RVUkwuaGFzRnJhZ21lbnQoKSkgeworICAgIGlmICghcmVkaXJlY3RVUkwucHJvdG9jb2xJcygi
aHR0cHMiKSB8fCByZWRpcmVjdFVSTC5oYXNDcmVkZW50aWFscygpIHx8IHJlZGlyZWN0VVJMLmhh
c1F1ZXJ5KCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKICAgICAg
ICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lORk8oQWRDbGlja0F0dHJpYnV0aW9uLCAiQ29udmVyc2lvbiB3YXMgbm90IGFjY2Vw
dGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQUyBvciB0aGUgVVJMIGNv
bnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwgcXVlcnkgc3RyaW5nLCBh
bmQgZnJhZ21lbnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltBZCBD
bGljayBBdHRyaWJ1dGlvbl0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IFVSTCdzIHByb3RvY29sIGlzIG5vdCBIVFRQUyBvciB0aGUgVVJMIGNvbnRhaW5zIG9uZSBvciBt
b3JlIG9mIHVzZXJuYW1lLCBwYXNzd29yZCwgcXVlcnkgc3RyaW5nLCBhbmQgZnJhZ21lbnQuIl9z
KTsKQEAgLTE4OSwxNyArMTg5LDEyIEBAIFVSTCBBZENsaWNrQXR0cmlidXRpb246OnVybEZvclRl
c3RpbmcoY29uc3QgVVJMJiBiYXNlVVJMKSBjb25zdAogICAgIGF1dG8gaG9zdCA9IG1fc291cmNl
LnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpOwogICAgIGlmIChob3N0ICE9ICJsb2NhbGhvc3Qi
ICYmIGhvc3QgIT0gIjEyNy4wLjAuMSIpCiAgICAgICAgIHJldHVybiBVUkwoKTsKLQotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIj9jb252ZXJz
aW9uPSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY29udmVyc2lvbi52YWx1ZSgpLmRh
dGEpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJmNhbXBhaWduPSIpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fY2FtcGFpZ24uaWQpOwotICAgIGlmIChiYXNlVVJMLmhhc1F1ZXJ5
KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyYnKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoYmFzZVVSTC5xdWVyeSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFVSTChiYXNlVVJMLCBidWls
ZGVyLnRvU3RyaW5nKCkpOworICAgIFN0cmluZyByZWxhdGl2ZVVSTDsKKyAgICBpZiAoIWJhc2VV
UkwuaGFzUXVlcnkoKSkKKyAgICAgICAgcmVsYXRpdmVVUkwgPSBtYWtlU3RyaW5nKCI/Y29udmVy
c2lvbj0iLCBtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhLCAiJmNhbXBhaWduPSIsIG1fY2FtcGFp
Z24uaWQpOworICAgIGVsc2UKKyAgICAgICAgcmVsYXRpdmVVUkwgPSBtYWtlU3RyaW5nKCI/Y29u
dmVyc2lvbj0iLCBtX2NvbnZlcnNpb24udmFsdWUoKS5kYXRhLCAiJmNhbXBhaWduPSIsIG1fY2Ft
cGFpZ24uaWQsICcmJywgYmFzZVVSTC5xdWVyeSgpKTsKKyAgICByZXR1cm4gVVJMKGJhc2VVUkws
IHJlbGF0aXZlVVJMKTsKIH0KIAogdm9pZCBBZENsaWNrQXR0cmlidXRpb246Om1hcmtDb252ZXJz
aW9uQXNTZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKaW5kZXggODI5MDYyOGM0ZWQ0NWUwNTMxYzQ3OTZmYTI2YWQ1YWM0YTFk
NjMzOC4uZTA1M2M5YjAzZjA0NjUwZGVmNTViZWNkNThkMWM2MzY5YzYzMGEzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcgdmFsaWRhdGVDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJM
KGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlZGlyZWN0VVJMLnByb3RvY29sKCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm5v
dCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGlyZWN0aW9uIHdpdGgg
bm9uIENPUlMgc2NoZW1lIik7CiAKLSAgICBpZiAocmVkaXJlY3RVUkwuaGFzVXNlcm5hbWUoKSB8
fCByZWRpcmVjdFVSTC5oYXNQYXNzd29yZCgpKQorICAgIGlmIChyZWRpcmVjdFVSTC5oYXNDcmVk
ZW50aWFscygpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygicmVkaXJlY3Rpb24gVVJMICIs
IHJlZGlyZWN0VVJMLnN0cmluZygpLCAiIGhhcyBjcmVkZW50aWFscyIpOwogCiAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKaW5kZXggMjE3N2Y0YjZkYjZiMTk1Y2E5ZGY4Mjc5YjVhZjdiYjE1NmY1YjUwYS4u
ZGYzZDA4Yzc0ZmViYzFiNTRlMjQ0ZTYzZmM0OTZmZTYzMGM0MzAyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTUzMiw4
ICs1MzIsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIC8vIEFueSBjcmVkZW50aWFs
IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjcm9zcy1zaXRlIHJlcXVlc3RzLgog
ICAgIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV9vcHRpb25z
LnNlY3VyaXR5Q2hlY2sgPSBzZWN1cml0eUNoZWNrOwotICAgIEFTU0VSVChtX3NhbWVPcmlnaW5S
ZXF1ZXN0IHx8IHJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1fc2Ft
ZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCAhcmVxdWVzdFVSTC5oYXNDcmVkZW50aWFscygpKTsK
IAogICAgIGlmICghbV9yZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIobV9yZWZlcnJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAppbmRleCAzYWFhOGVlZDhjMzM3ZTc5ZDk4ODhhNDU1ZjM5ZmYzZmVlNGI1YTM2Li4zMGFm
OTAwODA0OWE4ZTM5ODJmOWM5YmY0OWRhZWJmYzkyZWE2ODBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRh
dGEsIGNvbnN0CiAgICAgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJv
ZHlEYXRhLCBib2R5LnV0ZjgoKSk7CiAgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCks
IGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcrJywgIiUyMCIpOwogCi0gICAg
U3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7CisgICAgYXV0byBxdWVyeSA9IHVybC5xdWVyeSgp
OwogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCiAgICAgICAgIHVybC5zZXRRdWVyeShib2R5KTsK
ICAgICBlbHNlCi0gICAgICAgIHVybC5zZXRRdWVyeShxdWVyeSArICcmJyArIGJvZHkpOworICAg
ICAgICB1cmwuc2V0UXVlcnkobWFrZVN0cmluZyhxdWVyeSwgJyYnLCBib2R5KSk7CiB9CiAKIHZv
aWQgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNlQWN0aW9uKGNvbnN0IFN0cmluZyYg
YWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggN2ZmZjgyNjk2
MDA4ZDMyMTAyNTNmNTMyNjcyYWY1NzIxNTYyYzRjMC4uMzI0MTcwNWY4OTM2MmYwYTE0NWEwMzVi
OTU2YmVlZjczMTdhZTRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0xMTUxLDkgKzExNTEsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQo
Y29uc3QgVVJMJiB1cmwsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhdAogCiAgICAgICAgIGhp
c3RvcnkoKS51cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JGcmFnbWVudFNjcm9sbCgpOwogICAgIH0K
LSAgICAKLSAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybCwgb2xkVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkgIT0gb2xkVVJMLmZy
YWdtZW50SWRlbnRpZmllcigpOwotICAgIAorCisgICAgYm9vbCBoYXNoQ2hhbmdlID0gZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG9sZFVSTCkgJiYgIWVxdWFsUmVzcGVjdGlu
Z051bGxpdHkodXJsLmZyYWdtZW50SWRlbnRpZmllcigpLCBvbGRVUkwuZnJhZ21lbnRJZGVudGlm
aWVyKCkpOworCiAgICAgaGlzdG9yeSgpLnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24o
KTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1dG9zY3JvbGwvcGFuU2Nyb2xsIG1vZGUg
d2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xsb3dpbmcgdGhlIGxpbmsgdG8gdGhlIGFuY2hv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAKaW5kZXggMzIzZGI0NjM2MDI5OGI4YTkxYmIwMGE0NzkyNGJiMmU4MTEx
ZjMzOC4uNDg4MmQ3N2UxMjcxNjk4NWM0NjQ1MWRmMGVjNzQwYTc5MzkzYzQyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCkBAIC0yNDYsMTUgKzI0NiwxMiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYQogCiBV
UkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRo
KQogewotICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aCBpbnN0ZWFkPwogI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lOKQotICAgIFVSTCB1cmwo
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSkuZ2V0KCkpOworICAg
IC8vIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/IFNlZW1zIGltcHJvYmFibGUgdGhhdCB0aGUgcGFz
c2VkLWluIHBhdGhzIHdvdWxkIGJlIGluIHRoZSBXaW5kb3dzIHBhdGggc3R5bGUuCisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpLmdldCgpOwog
I2Vsc2UKLSAgICBVUkwgdXJsOwotICAgIHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAg
dXJsLnNldFBhdGgocGF0aCk7CisgICAgcmV0dXJuIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aChwYXRoKTsKICNlbmRpZgotICAgIHJldHVybiB1cmw7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmYWFlNTFmOTlmNjJiMmYyOWQ1Y2JiOGFlY2ZjZWIx
NmFkYzJlYjU0Li43MzRkYTc2NjJkNDlhNjIyNTlkZTYxZmVkOGNiZWI3MDBlZDJhYzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAK
QEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gTW9kZSB7IEV4
cGxpY2l0LCBGYWxsYmFjaywgT25saW5lV2hpdGVsaXN0LCBVbmtub3duIH07CiAKLXN0YXRpYyBT
dHJpbmcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCitzdGF0aWMgU3RyaW5n
VmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBhdXRvIG1h
bmlmZXN0UGF0aCA9IG1hbmlmZXN0VVJMLnBhdGgoKTsKICAgICBBU1NFUlQobWFuaWZlc3RQYXRo
WzBdID09ICcvJyk7CiAgICAgbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRoLnN1YnN0cmluZygw
LCBtYW5pZmVzdFBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIEFTU0VSVChtYW5pZmVz
dFBhdGhbMF0gPT0gbWFuaWZlc3RQYXRoW21hbmlmZXN0UGF0aC5sZW5ndGgoKSAtIDFdKTsKLSAg
ICByZXR1cm4gbWFuaWZlc3RQYXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1hbmlmZXN0UGF0
aDsKIH0KIAogYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0
IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwg
TWFuaWZlc3QmIG1hbmlmZXN0KQpAQCAtNTEsNyArNTEsNyBAQCBib29sIHBhcnNlTWFuaWZlc3Qo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBj
b25zdAogICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0eSgpKTsKICAgICBt
YW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IGZhbHNlOwogCi0gICAgU3RyaW5nIG1h
bmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5pZmVzdFVSTCk7CisgICAgYXV0
byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOwogCiAg
ICAgY29uc3QgY2hhciBjYWNoZU1hbmlmZXN0TUlNRVR5cGVbXSA9ICJ0ZXh0L2NhY2hlLW1hbmlm
ZXN0IjsKICAgICBib29sIGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuZmVzdFBhdGgg
PSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1h
bmlmZXN0TUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCmluZGV4IDNmNDY5OWNmODMyOThmMDRlMjc0YWUwMGVmOTVhNTU0NzVhNjVmM2QuLmNkOTQ5
ZTdjMTMwZDk2NjI4MmYxOWI1MmM4ZGEzMWQwMDRhNjgxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTg2LDEwICs4Niw3IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiAKIFN0cmluZyBD
YWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKIHsKLSAgICBhdXRv
JiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICBpZiAoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5n
KCk7CiB9CiAKIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA2YTI4YTg1NzFjNWVjYTYyN2QzZTZlN2QxNGY3OWE3
NjM4Njk2NWIzLi5lNGE5NGE1MDU5NjFhYTM3OTdmYTZkMDRlYTY1YzY0NTY1YWQ5NmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBTdHJpbmcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpz
cGxpdEZyYWdtZW50SWRlbnRpZmllckZyb21SZXF1ZXN0VVJMKFJlc291cmNlUmVxdQogICAgIGlm
ICghTWVtb3J5Q2FjaGU6OnNob3VsZFJlbW92ZUZyYWdtZW50SWRlbnRpZmllcihyZXF1ZXN0LnVy
bCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsK
LSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
OworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCk7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIHJl
cXVlc3Quc2V0VVJMKHVybCk7CiAgICAgcmV0dXJuIGZyYWdtZW50SWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBiNGNmYjc1MzE3OTY5MjY4OWQzZDY2MWFiY2Q1ZmQ3
MzdlYjBlZGJlLi43YzExZGJmYjZjNGMwZjliYmRlYzRhOThlYWVkMjM0ZmUwZDkzYjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMTc5LDggKzIxNzksOCBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdt
ZW50KGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKHNjcm9sbFRvRnJhZ21lbnRJbnRlcm5h
bChmcmFnbWVudElkZW50aWZpZXIpKQorICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGlmIChzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwo
ZnJhZ21lbnRJZGVudGlmaWVyLnRvU3RyaW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIC8vIFRyeSBhZ2FpbiBhZnRlciBkZWNvZGluZyB0aGUgcmVmLCBiYXNlZCBvbiB0aGUgZG9j
dW1lbnQncyBlbmNvZGluZy4KQEAgLTIxOTUsNyArMjE5NSw3IEBAIGJvb2wgRnJhbWVWaWV3Ojpz
Y3JvbGxUb0ZyYWdtZW50KGNvbnN0IFVSTCYgdXJsKQogCiBib29sIEZyYW1lVmlldzo6c2Nyb2xs
VG9GcmFnbWVudEludGVybmFsKGNvbnN0IFN0cmluZyYgZnJhZ21lbnRJZGVudGlmaWVyKQogewot
ICAgIExPRyhTY3JvbGxpbmcsICJGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yICVzIiwgZnJhZ21l
bnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhTY3JvbGxpbmcsICJGcmFtZVZp
ZXc6OnNjcm9sbFRvRnJhZ21lbnRJbnRlcm5hbCAlcyIsIGZyYWdtZW50SWRlbnRpZmllci51dGY4
KCkuZGF0YSgpKTsKIAogICAgIC8vIElmIG91ciBVUkwgaGFzIG5vIHJlZiwgdGhlbiB3ZSBoYXZl
IG5vIHBsYWNlIHdlIG5lZWQgdG8ganVtcCB0by4KICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVy
LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggOWM1OGIwNmY0YzQ3MTEzMGNl
NDgxNWYxMWQxNGNiNzhmODFiNDlhMC4uMzhmZDdiMjliNTNlYWI0ODRlMzA5NjNiNTFjOGFlNTI1
YzVkN2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yMDEsMTMgKzIwMSwxNCBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgZGF0YQogICAgICAgICBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUg
PSBzdGF0ZU9iamVjdFR5cGUgPT0gU3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlID8gImhpc3Rvcnku
cmVwbGFjZVN0YXRlKCkiIDogImhpc3RvcnkucHVzaFN0YXRlKCkiOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgbWFrZVN0cmluZygiQmxvY2tlZCBhdHRlbXB0IHRv
IHVzZSAiLCBmdW5jdGlvbk5hbWUsICIgdG8gY2hhbmdlIHNlc3Npb24gaGlzdG9yeSBVUkwgZnJv
bSAiLCBkb2N1bWVudFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiB0byAi
LCBmdWxsVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLiAiLCBzdWZmaXgp
IH07CiAgICAgfTsKLSAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChmdWxsVVJM
LCBkb2N1bWVudFVSTCkgfHwgZnVsbFVSTC51c2VyKCkgIT0gZG9jdW1lbnRVUkwudXNlcigpIHx8
IGZ1bGxVUkwucGFzcygpICE9IGRvY3VtZW50VVJMLnBhc3MoKSkKKyAgICBpZiAoIXByb3RvY29s
SG9zdEFuZFBvcnRBcmVFcXVhbChmdWxsVVJMLCBkb2N1bWVudFVSTCkgfHwgZnVsbFVSTC51c2Vy
KCkgIT0gZG9jdW1lbnRVUkwudXNlcigpIHx8IGZ1bGxVUkwucGFzc3dvcmQoKSAhPSBkb2N1bWVu
dFVSTC5wYXNzd29yZCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5
RXJyb3JXaXRoTWVzc2FnZVN1ZmZpeCgiUHJvdG9jb2xzLCBkb21haW5zLCBwb3J0cywgdXNlcm5h
bWVzLCBhbmQgcGFzc3dvcmRzIG11c3QgbWF0Y2guIik7CiAKICAgICBjb25zdCBhdXRvJiBkb2N1
bWVudFNlY3VyaXR5T3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
CiAgICAgLy8gV2UgYWxsb3cgc2FuZGJveGVkIGRvY3VtZW50cywgJ2RhdGE6Jy8nZmlsZTonIFVS
THMsIGV0Yy4gdG8gdXNlICdwdXNoU3RhdGUnLydyZXBsYWNlU3RhdGUnIHRvIG1vZGlmeSB0aGUg
VVJMIHF1ZXJ5IGFuZCBmcmFnbWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwMjggZm9yIHRoZSBjb21wYXRpYmlsaXR5IGNvbmNlcm5z
LgotICAgIGJvb2wgYWxsb3dTYW5kYm94RXhjZXB0aW9uID0gKGRvY3VtZW50U2VjdXJpdHlPcmln
aW4uaXNMb2NhbCgpIHx8IGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNVbmlxdWUoKSkgJiYgZXF1
YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoZG9jdW1lbnRVUkwsIGZ1bGxVUkwpOworICAgIGJv
b2wgYWxsb3dTYW5kYm94RXhjZXB0aW9uID0gKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNMb2Nh
bCgpIHx8IGRvY3VtZW50U2VjdXJpdHlPcmlnaW4uaXNVbmlxdWUoKSkKKyAgICAgICAgJiYgZG9j
dW1lbnRVUkwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSA9PSBmdWxs
VVJMLnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKICAgICBpZiAo
IWFsbG93U2FuZGJveEV4Y2VwdGlvbiAmJiAhZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5jYW5SZXF1
ZXN0KGZ1bGxVUkwpICYmIChmdWxsVVJMLnBhdGgoKSAhPSBkb2N1bWVudFVSTC5wYXRoKCkgfHwg
ZnVsbFVSTC5xdWVyeSgpICE9IGRvY3VtZW50VVJMLnF1ZXJ5KCkpKQogICAgICAgICByZXR1cm4g
Y3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JXaXRoTWVzc2FnZVN1ZmZpeCgiUGF0aHMgYW5k
IGZyYWdtZW50cyBtdXN0IG1hdGNoIGZvciBhIHNhbmRib3hlZCBkb2N1bWVudC4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggMjg3ODljZDE0Mjk4MzJjMWYyNzJhNmFhZDVlYjFlOGI2
Mjg4MmVjNy4uMzZjMWM5YmJjY2ExMDZjOGViNTdmMWJlYTYzNzBiMGUyODdhMjg0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTYxLDE0ICs2MSw4IEBAIGlubGluZSBjb25zdCBVUkwm
IExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246OmhyZWYoKSBjb25zdAog
ewotICAgIGF1dG8mIHVybCA9IHRoaXMtPnVybCgpOwotCi0gICAgaWYgKCF1cmwuaGFzVXNlcm5h
bWUoKSAmJiAhdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCk7
Ci0KLSAgICBVUkwgdXJsV2l0aG91dENyZWRlbnRpYWxzKHVybCk7Ci0gICAgdXJsV2l0aG91dENy
ZWRlbnRpYWxzLnNldFVzZXIoV1RGOjplbXB0eVN0cmluZygpKTsKLSAgICB1cmxXaXRob3V0Q3Jl
ZGVudGlhbHMuc2V0UGFzcyhXVEY6OmVtcHR5U3RyaW5nKCkpOworICAgIFVSTCB1cmxXaXRob3V0
Q3JlZGVudGlhbHModXJsKCkpOworICAgIHVybFdpdGhvdXRDcmVkZW50aWFscy5yZW1vdmVDcmVk
ZW50aWFscygpOwogICAgIHJldHVybiB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc3RyaW5nKCk7CiB9
CiAKQEAgLTkxLDIwICs4NSwxOSBAQCBTdHJpbmcgTG9jYXRpb246Omhvc3RuYW1lKCkgY29uc3QK
IAogU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkgY29uc3QKIHsKLSAgICBjb25zdCBVUkwmIHVybCA9
IHRoaXMtPnVybCgpOwotICAgIHJldHVybiB1cmwucG9ydCgpID8gU3RyaW5nOjpudW1iZXIodXJs
LnBvcnQoKS52YWx1ZSgpKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byBwb3J0ID0gdXJsKCku
cG9ydCgpOworICAgIHJldHVybiBwb3J0ID8gU3RyaW5nOjpudW1iZXIoKnBvcnQpIDogZW1wdHlT
dHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0CiB7CiAgICAg
YXV0byBwYXRoID0gdXJsKCkucGF0aCgpOwotICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIv
IiA6IHBhdGgudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyJfcyA6
IHBhdGgudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIExvY2F0aW9uOjpzZWFyY2goKSBjb25zdAog
ewotICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJuIHVybC5xdWVy
eSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyB1cmwucXVlcnkoKTsKKyAgICBy
ZXR1cm4gdXJsKCkucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogdXJsKCkucXVl
cnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyaygpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBMb2Nh
dGlvbjo6b3JpZ2luKCkgY29uc3QKQEAgLTEyNSw4ICsxMTgsNyBAQCBSZWY8RE9NU3RyaW5nTGlz
dD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6
aGFzaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIgPSB1
cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVy
LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBmcmFnbWVudElkZW50aWZpZXI7Cisg
ICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3Ry
aW5nKCkgOiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24oKS50
b1N0cmluZygpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SHJlZihET01X
aW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5n
JiB1cmwpCkBAIC0xNDQsNyArMTM2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dFByb3RvY29sKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnMKICAgICBV
UkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3Rv
Y29sKHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07
Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5z
dHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5k
b3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcm
IGhvc3QpCkBAIC0xNTQsNyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dEhvc3QoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW4KICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0
aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9j
YXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtMTY0LDcgKzE1
Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0bmFtZShET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
VVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0SG9zdChob3N0
bmFtZSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cs
IHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmly
c3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBT
dHJpbmcmIHBvcnRTdHJpbmcpCkBAIC0xNzMsMTIgKzE2NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRQb3J0KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZp
cnN0V2luCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJs
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwotICAgIGludCBwb3J0ID0gcG9ydFN0cmluZy50
b0ludCgpOwotICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGIHx8IHBvcnRTdHJpbmcu
aXNFbXB0eSgpKQotICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwotICAgIGVsc2UKLSAgICAgICAg
dXJsLnNldFBvcnQocG9ydCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywg
Zmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgdXJsLnNldFBvcnQocGFyc2VVSW50MTYo
cG9ydFN0cmluZykpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UGF0aG5h
bWUoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0
IFN0cmluZyYgcGF0aG5hbWUpCkBAIC0xODgsNyArMTc2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cm
IGZpcnMKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gc2V0TG9j
YXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1
cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBzZWFyY2gpCkBAIC0xOTgs
NyArMTg2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFcKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRRdWVy
eShzZWFyY2gpOwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3cs
IGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0
SGFzaChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29u
c3QgU3RyaW5nJiBoYXNoKQpAQCAtMjE4LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0
V2luCiAgICAgLy8gY2FzZXMgd2hlcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMgYXJlIGlnbm9yZWQg
b3IgaW52YWxpZC4gCiAgICAgaWYgKGVxdWFsSWdub3JpbmdOdWxsaXR5KG9sZEZyYWdtZW50SWRl
bnRpZmllciwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0
cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRv
dywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OmFzc2lnbihET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1
cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5k
ZXggYWNlNWI3ZWQ5NzAxZTI0MWU0MGE1N2RlNjQxOGQ5OGMxMjlkOTM4NS4uMmQ1MTQ2OTliMTE3
MWU5Yzc0ODY2MTJhN2IxYTVlNTVhMmJhY2ZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMTQ3LDIyICsxNDcsMTkgQEAgYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0KGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKICAg
ICByZXR1cm4gaG9zdFtob3N0Lmxlbmd0aCgpIC0gbV9ob3N0Lmxlbmd0aCgpIC0gMV0gPT0gJy4n
OwogfQogCi1zdHJ1Y3QgTWF0Y2hUZXN0ZXIKLXsKK3N0cnVjdCBNYXRjaFRlc3RlciB7CiAgICAg
U3RyaW5nVmlldyBtX3BhdHRlcm47Ci0gICAgdW5zaWduZWQgbV9wYXR0ZXJuSW5kZXg7Ci0gICAg
CisgICAgdW5zaWduZWQgbV9wYXR0ZXJuSW5kZXggeyAwIH07CisKICAgICBTdHJpbmdWaWV3IG1f
dGVzdDsKLSAgICB1bnNpZ25lZCBtX3Rlc3RJbmRleDsKLSAgICAKKyAgICB1bnNpZ25lZCBtX3Rl
c3RJbmRleCB7IDAgfTsKKwogICAgIE1hdGNoVGVzdGVyKFN0cmluZ1ZpZXcgcGF0dGVybiwgU3Ry
aW5nVmlldyB0ZXN0KQotICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgLCBtX3BhdHRlcm5J
bmRleCgwKQotICAgICwgbV90ZXN0KHRlc3QpCi0gICAgLCBtX3Rlc3RJbmRleCgwKQorICAgICAg
ICA6IG1fcGF0dGVybihwYXR0ZXJuKQorICAgICAgICAsIG1fdGVzdCh0ZXN0KQogICAgIHsKICAg
ICB9Ci0gICAgCisKICAgICBib29sIHRlc3RTdHJpbmdGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGVzdEluZGV4ID49IG1fdGVzdC5sZW5ndGgoKTsgfQogICAgIGJvb2wgcGF0dGVyblN0cmlu
Z0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuSW5kZXggPj0gbV9wYXR0ZXJuLmxl
bmd0aCgpOyB9CiAKQEAgLTE3NCw3ICsxNzEsNyBAQCBzdHJ1Y3QgTWF0Y2hUZXN0ZXIKICAgICAg
ICAgICAgIG1fcGF0dGVybkluZGV4Kys7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2
b2lkIGVhdFNhbWVDaGFycygpCiAgICAgewogICAgICAgICB3aGlsZSAoIXBhdHRlcm5TdHJpbmdG
aW5pc2hlZCgpICYmICF0ZXN0U3RyaW5nRmluaXNoZWQoKSkgewpAQCAtMjI2LDggKzIyMyw3IEBA
IHN0cnVjdCBNYXRjaFRlc3RlcgogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c1BhdGgoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewotICAgIE1hdGNoVGVzdGVyIG1hdGNoKFN0
cmluZ1ZpZXcobV9wYXRoKSwgdGVzdC5wYXRoKCkpOwotICAgIHJldHVybiBtYXRjaC50ZXN0KCk7
CisgICAgcmV0dXJuIE1hdGNoVGVzdGVyKG1fcGF0aCwgdGVzdC5wYXRoKCkpLnRlc3QoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA0YTBjMzRlY2E3MjQyYmRhNzI1Mjg0OGIzYThjZTJkMTM1
Zjc0MzViLi40NzBmZTU0OTU0ZTFiM2M0N2VlZjA1ZTc4NTBjYjViYTJjOTk1ZjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNzkwLDE2ICs3
OTAsMTAgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5k
RmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKGZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSht
aW1lVHlwZSwgZGVmYXVsdE1JTUVUeXBlKCkpKQotICAgICAgICByZXR1cm4gZmlsZW5hbWU7Ci0K
LSAgICBpZiAoZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKSAhPSBub3RGb3VuZCkKKyAgICBpZiAo
ZmlsZW5hbWUuaXNFbXB0eSgpIHx8IGZpbGVuYW1lLmNvbnRhaW5zKCcuJykgfHwgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgZGVmYXVsdE1JTUVUeXBlKCkpKQogICAgICAgICByZXR1
cm4gZmlsZW5hbWU7CiAKLSAgICBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uID0gZ2V0UHJlZmVy
cmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgIGF1dG8gcHJlZmVycmVkRXh0
ZW5zaW9uID0gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOwogICAg
IGlmIChwcmVmZXJyZWRFeHRlbnNpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmlsZW5h
bWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCBhYjdlNjA1NDJiMDE4MmNmYWI2YmYyMjA2ZjQ4Nzg4ZjE4NDFjNjM4Li5jODI4
YmJlN2U3NzU1ZWU3MTEyMTcyM2U5ZjE3MDI3ZWQxZmFlMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC00NDEsMTIgKzQ0MSwx
MiBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50
VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cgogICAgIEF0b21TdHJpbmcgY29udGFpbmVyVHlw
ZSA9IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBl
LmlzRW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8
fCBjb250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90
b2NvbElzRGF0YSgpKQotICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1p
bWVUeXBlRnJvbURhdGFVUkwobV91cmwuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fY29udGVu
dFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsKSk7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQ
YXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgICAgICBzaXplX3QgcG9zID0gbGFzdFBhdGhD
b21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91
bmQpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25l
bnQuc3Vic3RyaW5nKHBvcyArIDEpOworICAgICAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb24g
PSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcocG9zICsgMSkudG9TdHJpbmcoKTsKICAgICAg
ICAgICAgICAgICBTdHJpbmcgbWVkaWFUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TWVkaWFN
SU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghbWVk
aWFUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0g
Q29udGVudFR5cGUgeyBXVEZNb3ZlKG1lZGlhVHlwZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjE2MmFkYWU2YmZmNTE2NzFlM2Jl
NTMyMjI3ZTdkZTU3OTk5ZmRmMC4uMmVjOTc1Y2IxMDQ1YWU0Yzg3NDk3Y2Q5YTBhY2UwMmY5MjEx
ZDk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9JbnRlcm5hbFByb3Rv
Y29sKFVSTCYgdXJsKQogICAgIGlmICh3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwgMTIsIDApKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwg
dXJsLnByb3RvY29sSXNCbG9iKCkpCi0gICAgICAgIHVybC5zZXRQcm90b2NvbCgid2Via2l0KyIg
KyB1cmwucHJvdG9jb2woKSk7CisgICAgICAgIHVybC5zZXRQcm90b2NvbChtYWtlU3RyaW5nKCJ3
ZWJraXQrIiwgdXJsLnByb3RvY29sKCkpKTsKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzI4ZmEyZTg3OWIwZTc2MWE0OTVkYzRhY2EzMDg2NDRi
ZDY0ZTAwZS4uZDNiMzM4Mjc5MWVmMmMwMjIzYTc2NDMxNzEzZjE4YjFmMzJlNmE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgY29u
c3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51cmwoKTsKICAgICAgICAgbV91c2VyID0gdXJs
LnVzZXIoKTsKLSAgICAgICAgbV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICAgICAgbV9wYXNzd29y
ZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICBtX2ZpcnN0UmVxdWVzdC5yZW1vdmVDcmVkZW50
aWFscygpOwogICAgIH0KICAgICAKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgLy8g
U3VnZ2VzdGVkIGNyZWRlbnRpYWxzIGZvciB0aGUgY3VycmVudCByZWRpcmVjdGlvbiBzdGVwLgog
ICAgIFN0cmluZyBtX3VzZXI7Ci0gICAgU3RyaW5nIG1fcGFzczsKKyAgICBTdHJpbmcgbV9wYXNz
d29yZDsKICAgICAKICAgICBDcmVkZW50aWFsIG1faW5pdGlhbENyZWRlbnRpYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcAppbmRleCBhOTM3MzIwMzUzMTJjYzQ3ZDA5MjIwYWQ4NGYyZmIyZThmNzM0MmRl
Li41MzBlY2NmYWU3OTNlMzVkZWU5OWVjMDQwNzcwN2EzOGY5YzdjOWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAKQEAgLTE2NSwxMiArMTY1LDEwIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6cmVtb3Zl
Q3JlZGVudGlhbHMoKQogewogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKIAotICAgIGlm
IChtX3VybC51c2VyKCkuaXNFbXB0eSgpICYmIG1fdXJsLnBhc3MoKS5pc0VtcHR5KCkpCisgICAg
aWYgKCFtX3VybC5oYXNDcmVkZW50aWFscygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Vy
bC5zZXRVc2VyKFN0cmluZygpKTsKLSAgICBtX3VybC5zZXRQYXNzKFN0cmluZygpKTsKLQorICAg
IG1fdXJsLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVk
ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDkwMDgxY2JlYzA5ZjEwMDI0
YmU4YTAwZDc3YmE5MmFmM2Q3ZTdkYjIuLjNlY2Y3MWU5MTQ3ZjI0NGNhYTJlNGUyYjZkOTYwMjI3
YzIzNzZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMjQsNyArMjQsNiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwu
aCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKQEAgLTU5LDcgKzU4LDYgQEAKICNp
ZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogCi0vLyBGSVhNRTogUmVtb3Zl
IHRoaXMgZGVjbGFyYXRpb24gb25jZSBpdCdzIGluIFdlYktpdFN1cHBvcnRMaWJyYXJ5LgogZXh0
ZXJuICJDIiB7CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZVUkxDb25uZWN0aW9uUmVmIENGVVJM
Q29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKAogICBDRkFsbG9jYXRvclJlZiAgICAgICAg
ICAgYWxsb2MsCkBAIC0xMzMsMTEgKzEzMSwxMSBAQCBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0
aWZpY2F0ZUluU1NMUHJvcGVydGllcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzLAog
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxk
Q29udGVudEVuY29kaW5nU25pZmYsIFJlZlB0cjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1
ZT4mJiBtZXNzYWdlUXVldWUsIENGRGljdGlvbmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKQogewot
ICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpICYm
ICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICBp
ZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgJiYg
IWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAg
ICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBt
YWRlLgogICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVzdCgpLnVybCgp
KTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIoZC0+bV91c2VyKTsKLSAgICAg
ICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNzKTsKKyAgICAgICAgdXJsV2l0
aENyZWRlbnRpYWxzLnNldFBhc3N3b3JkKGQtPm1fcGFzc3dvcmQpOwogICAgICAgICBmaXJzdFJl
cXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKICAgICB9CiAKQEAgLTE0Niw3ICsx
NDQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83
MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3Vz
bHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwKICAgICAvLyB0cnkg
YW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMg
MjYxNy4KICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgJiYgZmlyc3RSZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIGlmIChkLT5tX3Vz
ZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGQtPm1f
dXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBh
dGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50
aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHBy
ZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KICAgICAgICAgICAgIGQtPm1faW5p
dGlhbENyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRp
YWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwpAQCAtMTU0
LDcgKzE1Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgICAgICAgICAvLyBJZiB0
aGVyZSBpcyBhbHJlYWR5IGEgcHJvdGVjdGlvbiBzcGFjZSBrbm93biBmb3IgdGhlIFVSTCwgdXBk
YXRlIHN0b3JlZCBjcmVkZW50aWFscyBiZWZvcmUgc2VuZGluZyBhIHJlcXVlc3QuCiAgICAgICAg
ICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBsb2dvdXQgYnkgc2Vu
ZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtub3duIGluY29ycmVjdCBjcmVkZW50aWFscywg
YW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5CiAgICAgICAgICAgICAvLyAoc28gdGhhdCBhbiBh
dXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3AgdXApLgotICAgICAgICAgICAgZC0+bV9j
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRp
b24sIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgQ3Jl
ZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIApA
QCAtMjkyLDcgKzI5MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlCiB7CiAgICAgY29uc3Qg
VVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7Ci0g
ICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3JkID0gdXJsLnBhc3N3
b3JkKCk7CiAgICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwog
ICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtMzA2LDcgKzMwNCw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT25seSBjb25z
aWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlzIGlzIGFjdHVh
bGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwgZGlkbid0IGlu
Y2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KLSAgICAgICAgaWYgKGQtPm1fdXNlci5pc0Vt
cHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwo
KSkgeworICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlz
RW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICAgICAgQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLmdldChwYXJ0aXRpb24sIHJlcXVlc3QudXJsKCkpOwogICAgICAgICAg
ICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGQtPm1faW5p
dGlhbENyZWRlbnRpYWwgPSBjcmVkZW50aWFsOwpAQCAtMzcxLDggKzM2OSw4IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoCiAKICAgICBTdHJpbmcgcGFydGl0aW9uID0gZmlyc3RSZXF1ZXN0KCku
Y2FjaGVQYXJ0aXRpb24oKTsKIAotICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5t
X3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4g
Y2ZDcmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7
CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzc3dvcmQuaXNOdWxsKCkp
IHsKKyAgICAgICAgYXV0byBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgZC0+bV9wYXNzd29yZC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2VOb25lKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIENyZWRl
bnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoY2ZDcmVkZW50aWFsLmdldCgpKTsKICNlbHNl
CkBAIC0zODYsNyArMzg0LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICAgICAgCiAg
ICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgp
LCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7
CiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bhc3MgPSBTdHJp
bmcoKTsKKyAgICAgICAgZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAgICAvLyBGSVhN
RTogUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdXNlciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9y
IGNyZWRlbnRpYWxzIGlmIHRoZXJlIHdlcmUgaW5jb3JyZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGlj
aXRseS4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKaW5k
ZXggMGMyZDNmMDQ0MzA2NTFiMzMxOTUyYjZkMDE5ZmU1NmQxYzZiMDQ1NC4uZjc1MmE2ZWUzNWE3
MjBjNmQ3YmQ5YTRlNzU4OTFkZDBhOTRhZThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCkBAIC0z
MywxMiArMzMsMTIgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQxNl90IFNvY2tzUHJveHlQb3J0ID0gMTA4MDsKK2Nv
bnN0ZXhwciB1aW50MTZfdCBTb2Nrc1Byb3h5UG9ydCA9IDEwODA7CiAKLXN0YXRpYyBPcHRpb25h
bDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0IFVSTCYpOwogc3RhdGljIE9wdGlvbmFsPFN0
cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3QgVVJMJik7CiAKIEN1cmxQcm94eVNldHRpbmdzOjpD
dXJsUHJveHlTZXR0aW5ncyhVUkwmJiBwcm94eVVybCwgU3RyaW5nJiYgaWdub3JlSG9zdHMpCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgQ3VybFByb3h5U2V0dGluZ3M6OnJlYnVpbGRVcmwoKQogdm9p
ZCBDdXJsUHJveHlTZXR0aW5nczo6c2V0VXNlclBhc3MoY29uc3QgU3RyaW5nJiB1c2VyLCBjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKQogewogICAgIG1fdXJsLnNldFVzZXIodXNlcik7Ci0gICAgbV91
cmwuc2V0UGFzcyhwYXNzd29yZCk7CisgICAgbV91cmwuc2V0UGFzc3dvcmQocGFzc3dvcmQpOwog
CiAgICAgcmVidWlsZFVybCgpOwogfQpAQCAtMTE4LDggKzExOCw4IEBAIHN0YXRpYyBPcHRpb25h
bDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCAmdXJsKQogICAgIGlmICghcG9ydCkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdXNlcnBhc3MgPSAodXJs
Lmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpID8gbWFrZVN0cmluZyh1cmwudXNl
cigpLCAiOiIsIHVybC5wYXNzKCksICJAIikgOiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbWFrZVN0
cmluZyh1cmwucHJvdG9jb2woKSwgIjovLyIsIHVzZXJwYXNzLCB1cmwuaG9zdCgpLCAiOiIsIFN0
cmluZzo6bnVtYmVyKCpwb3J0KSk7CisgICAgYXV0byB1c2VycGFzcyA9IHVybC5oYXNDcmVkZW50
aWFscygpID8gbWFrZVN0cmluZyh1cmwudXNlcigpLCAiOiIsIHVybC5wYXNzd29yZCgpLCAiQCIp
IDogU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcodXJsLnByb3RvY29sKCksICI6Ly8i
LCB1c2VycGFzcywgdXJsLmhvc3QoKSwgIjoiLCAqcG9ydCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdz
LmgKaW5kZXggYWYzMTM1NDZjNDRhMzI3N2YwNmI0ODU0ZWYwMzAyN2I4NTgxNDQwMy4uNTgzZTAw
YzRlMzE0Njk5ZWExZjU0MmZlMzY5MjRiZWQwZTIxYjM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmgKQEAg
LTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2Vy
UGFzcyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBTdHJpbmcgdXNl
cigpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnVzZXIoKTsgfQotICAgIGNvbnN0IFN0cmluZyBwYXNz
d29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnBhc3MoKTsgfQorICAgIGNvbnN0IFN0cmluZyBw
YXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLnBhc3N3b3JkKCk7IH0KIAogICAgIHZvaWQg
c2V0RGVmYXVsdEF1dGhNZXRob2QoKSB7IG1fYXV0aE1ldGhvZCA9IGtDVVJMQVVUSF9BTlk7IH0K
ICAgICB2b2lkIHNldEF1dGhNZXRob2QobG9uZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4
IDQ5MTVkOTBkZmFiMmNhNDVmZGZjY2M5MTgyZGZhZmEzOGZlNjRhYTYuLjQwYzc5OGEzYTU0Y2Nl
MTJlYjc3MDViNjFhMTEzMzYyZGJmNmEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0y
MTQsOCArMjE0LDggQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKIAogICAgIFN0cmluZyBwYXJ0
aXRpb24gPSBmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpOwogCi0gICAgaWYgKCFkLT5t
X3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBDcmVkZW50
aWFsIGNyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpOworICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3N3b3JkLmlz
TnVsbCgpKSB7CisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1f
cGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwogCiAgICAgICAgIFVSTCB1cmxU
b1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0
dXNDb2RlKCkgPT0gNDAxKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsCiAgICAgICAgIHJlc3RhcnRSZXF1ZXN0V2l0aENyZWRlbnRpYWwoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLCBjcmVkZW50aWFsKTsKIAogICAgICAgICBkLT5tX3VzZXIgPSBTdHJpbmco
KTsKLSAgICAgICAgZC0+bV9wYXNzID0gU3RyaW5nKCk7CisgICAgICAgIGQtPm1fcGFzc3dvcmQg
PSBTdHJpbmcoKTsKICAgICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlvbiwgdGhl
IHVzZXIgc2hvdWxkbid0IGJlIGFza2VkIGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3ZXJlIGlu
Y29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4cGxpY2l0bHkuCiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVu
Z2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogT3B0aW9uYWw8Q3Jl
ZGVudGlhbD4gUmVzb3VyY2VIYW5kbGU6OmdldENyZWRlbnRpYWwoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBib29sIHJlZGlyZWN0KQogewogICAgIC8vIG1fdXNlci9tX3Bhc3MgYXJl
IGNyZWRlbnRpYWxzIGdpdmVuIG1hbnVhbGx5LCBmb3IgaW5zdGFuY2UsIGJ5IHRoZSBhcmd1bWVu
dHMgcGFzc2VkIHRvIFhNTEh0dHBSZXF1ZXN0Lm9wZW4oKS4KLSAgICBDcmVkZW50aWFsIGNyZWRl
bnRpYWwgeyBkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSB9
OworICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCB7IGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwg
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSB9OwogCiAgICAgaWYgKHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKCkpIHsKICAgICAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IHJlcXVlc3QuY2FjaGVQ
YXJ0aXRpb24oKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QoKQogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAK
ICAgICBkLT5tX3VzZXIgPSBuZXdVUkwudXNlcigpOwotICAgIGQtPm1fcGFzcyA9IG5ld1VSTC5w
YXNzKCk7CisgICAgZC0+bV9wYXNzd29yZCA9IG5ld1VSTC5wYXNzd29yZCgpOwogICAgIG5ld1Jl
cXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAogICAgIGlmIChjcm9zc09yaWdpbikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbQppbmRleCA3NjdjNTc5NDk5OWM5NDYxMTgwYmNmZWYwYzJhMTkyMmZhMTA3MmQ2
Li5lZTYwM2Q3MjJmNDFkMGQ2ZjdjNDZiOTA2ZmI3YTU1MTA1MjBmMzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNV
UkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWwKICNlbmRp
ZgogewogICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2FuIG9ubHkgYmUgcGFzc2VkIGluIFVS
TCwgdGhlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiBkZWxl
Z2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCi0gICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8
fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQt
Pm1fcGFzc3dvcmQuaXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RS
ZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5t
X3VzZXIpOwotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwor
ICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzc3dvcmQoZC0+bV9wYXNzd29yZCk7CiAg
ICAgICAgIGZpcnN0UmVxdWVzdCgpLnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwogICAgIH0K
IAogICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSAmJiBmaXJzdFJlcXVlc3QoKS51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKLSAgICAgICAgaWYgKGQtPm1fdXNlci5p
c0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZC0+bV91c2Vy
LmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMg
b2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0
aW9uLCAKICAgICAgICAgICAgIC8vIHRyeSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1w
dGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgogICAgICAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKSkKQEAg
LTE2MCw3ICsxNjAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rp
b24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogICAgICAgICAgICAgLy8g
VGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbG9nb3V0IGJ5IHNlbmRpbmcgYW4g
WE1MSHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJlY3QgY3JlZGVudGlhbHMsIGFuZCBhYm9y
dGluZyBpdCBpbW1lZGlhdGVseQogICAgICAgICAgICAgLy8gKHNvIHRoYXQgYW4gYXV0aGVudGlj
YXRpb24gZGlhbG9nIGRvZXNuJ3QgcG9wIHVwKS4KICAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAg
ICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNl
dChmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwg
ZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJs
KCkpOworICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChk
LT5tX3VzZXIsIGQtPm1fcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJz
dFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIApAQCAtNDM1LDcg
KzQzNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlCiAKICAgICBjb25zdCBVUkwmIHVybCA9
IHJlcXVlc3QudXJsKCk7CiAgICAgZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBkLT5tX3Bh
c3MgPSB1cmwucGFzcygpOworICAgIGQtPm1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAg
ICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgcmVxdWVz
dC5yZW1vdmVDcmVkZW50aWFscygpOwogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UKICAgICB9IGVsc2UgewogICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGFwcGx5
aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSByZWRp
cmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8vIFVSTCBkaWRuJ3QgaW5jbHVkZSBjcmVk
ZW50aWFscyBvZiBpdHMgb3duLgotICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBk
LT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CisgICAg
ICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpICYm
ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBDcmVkZW50aWFsIGNy
ZWRlbnRpYWw7CiAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
ZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICAgICAgICAgIGNyZWRlbnRp
YWwgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHJlcXVl
c3QuY2FjaGVQYXJ0aXRpb24oKSwgcmVxdWVzdC51cmwoKSk7CkBAIC01MjEsMTcgKzUyMSwxNSBA
QCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRp
b24oY29uc3QgQXV0aGVudGljYXRpb25DaAogICAgIGlmICghY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0gICAgICAg
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBp
bml0V2l0aFVzZXI6ZC0+bV91c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6ZC0+bV9wYXNzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uXTsKKyAg
ICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzd29yZC5pc051bGwoKSkgewor
ICAgICAgICBhdXRvIGNyZWRlbnRpYWwgPSBhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9j
XSBpbml0V2l0aFVzZXI6ZC0+bV91c2VyCisgICAgICAgICAgICBwYXNzd29yZDpkLT5tX3Bhc3N3
b3JkIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl0pOwog
ICAgICAgICBkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgPSBjaGFsbGVuZ2UubnNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgICAgICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UgPSBj
aGFsbGVuZ2U7Ci0gICAgICAgIHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UsIENyZWRlbnRp
YWwoY3JlZGVudGlhbCkpOwotICAgICAgICBbY3JlZGVudGlhbCByZWxlYXNlXTsKKyAgICAgICAg
cmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgQ3JlZGVudGlhbChjcmVkZW50aWFsLmdldCgp
KSk7CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWNpZmljYXRpb24sIHRoZSB1c2VyIHNo
b3VsZG4ndCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMgaWYgdGhlcmUgd2VyZSBpbmNvcnJlY3Qg
b25lcyBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgICAgICBkLT5tX3VzZXIgPSBTdHJpbmcoKTsK
LSAgICAgICAgZC0+bV9wYXNzID0gU3RyaW5nKCk7CisgICAgICAgIGQtPm1fcGFzc3dvcmQgPSBT
dHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKaW5kZXggZDgyOGRiNzY2ODQwNDkyN2U1NzZjNmIzMDhlNmY5ZTdlNzVmZWEyYS4uM2Yy
ZDM2Y2Y1NzU1MDY1NWYzOWZkNDExMjRjOWQ2ZjFhMjJjMmE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIEdVbmlxdWVQdHI8U291cFVSST4gUmVzb3VyY2VS
ZXF1ZXN0OjpjcmVhdGVTb3VwVVJJKCkgY29uc3QKICAgICAvLyB3aGVuIGJvdGggdGhlIHVzZXJu
YW1lIGFuZCBwYXNzd29yZCBhcmUgbm9uLW51bGwuIFdoZW4gd2UgaGF2ZSBjcmVkZW50aWFscywg
ZW1wdHkgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMKICAgICAvLyBzaG91bGQgYmUgZW1wdHkgc3Ry
aW5ncyBpbnN0ZWFkIG9mIG51bGwuCiAgICAgU3RyaW5nIHVybFVzZXIgPSBtX3VybC51c2VyKCk7
Ci0gICAgU3RyaW5nIHVybFBhc3MgPSBtX3VybC5wYXNzKCk7CisgICAgU3RyaW5nIHVybFBhc3Mg
PSBtX3VybC5wYXNzd29yZCgpOwogICAgIGlmICghdXJsVXNlci5pc0VtcHR5KCkgfHwgIXVybFBh
c3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNvdXBfdXJpX3NldF91c2VyKHNvdXBVUkkuZ2V0KCks
IHVybFVzZXIudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHNvdXBfdXJpX3NldF9wYXNzd29yZChz
b3VwVVJJLmdldCgpLCB1cmxQYXNzLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuY3BwCmluZGV4IGY1MWM0ZmQ1N2Y4ZTE0
Yjk2NGFiNTk2Y2E5Y2QzY2FmZTgxMTg2ZGEuLmU4NWJmNDAxZjMwMTMwMjNlMDhlOWFmZjJjYWY4
NzBkMzFjODY4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9VUkxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvVVJMU291cC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgVVJMIHNvdXBVUklUb1VSTChTb3VwVVJJ
KiBzb3VwVVJJKQogICAgICAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBp
cyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKICAgICAgICAgLy8gbm90IHdhbnQgdG8g
YnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9ucwogICAgICAg
ICBpZiAoc291cFVSSS0+cGFzc3dvcmQpCi0gICAgICAgICAgICB1cmwuc2V0UGFzcyhTdHJpbmc6
OmZyb21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7CisgICAgICAgICAgICB1cmwuc2V0UGFzc3dv
cmQoU3RyaW5nOjpmcm9tVVRGOChzb3VwVVJJLT5wYXNzd29yZCkpOwogICAgIH0KIAogICAgIHJl
dHVybiB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggMjhkODczYzQ2MTJkYmRjZTQxNzljM2EzOGVkMGRjMGE1MGI4ODc4YS4uNzE4M2Y5
MDU2YTgwZDBlMzZmZmRhNzBmZDIxYjRkZjdmYTcwZDVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzcwLDcgKzM3MCw3IEBAIHN0YXRp
YyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyB0aXRsZSwgYm9vbCB3aXRoCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICh0aXRs
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsK
KyAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAg
ICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGl0bGUgPSB1cmwuaG9zdCgp
LnRvU3RyaW5nKCk7CiAgICAgfQpAQCAtNTc5LDEwICs1NzksMTAgQEAgc3RhdGljIFN0cmluZyBm
aWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGwKICAgICAgICAgLy8gdGhlIHBhdGguIElmIHdlIGNhbid0IGZpbmQgaXQsIG9yIHdl
J3JlIGNvbWluZyB1cCB3aXRoIHRoZSBuYW1lIGZvciBhIGxpbmsKICAgICAgICAgLy8gd2UganVz
dCB1c2UgdGhlIGVudGlyZSB1cmwuCiAgICAgICAgIERXT1JEIGxlbiA9IGZzUGF0aE1heExlbmd0
aEV4Y2x1ZGluZ0V4dGVuc2lvbjsKLSAgICAgICAgU3RyaW5nIGxhc3RDb21wb25lbnQgPSBrdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1dG8gbGFzdENvbXBvbmVudCA9IGt1cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKGt1cmwuaXNMb2NhbEZpbGUoKSB8fCAo
IWlzTGluayAmJiAhbGFzdENvbXBvbmVudC5pc0VtcHR5KCkpKSB7CiAgICAgICAgICAgICBsZW4g
PSBzdGQ6Om1pbjxEV09SRD4oZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uLCBsYXN0
Q29tcG9uZW50Lmxlbmd0aCgpKTsKLSAgICAgICAgICAgIFN0cmluZ1ZpZXcobGFzdENvbXBvbmVu
dCkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKKyAgICAgICAgICAgIGxhc3RDb21wb25lbnQuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdF
eHRlbnNpb24sIHVybC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBTdHJpbmdWaWV3KHVybCkuc3Vi
c3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsK
QEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAKICAgICBTdHJpbmcgdGl0bGUocGFzdGVib2FyZFVSTC50
aXRsZSk7CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aXRsZSA9IHBhc3Rl
Ym9hcmRVUkwudXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIHRpdGxlID0gcGFzdGVi
b2FyZFVSTC51cmwubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAo
dGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5o
b3N0KCkudG9TdHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHAKaW5kZXggMmM2YzcwZTg0OTk1YzI5YWMxOGZmM2M5NTQ5Yzc4OTk2OGNhMDFj
YS4uYjE1YTRlOTE5YTc3NGU1YmYxZGIxZmQ3MWE1Nzg5Mjc2YWQ0OWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApAQCAtMTY1LDE3ICsxNjUsMTQgQEAg
Ym9vbCBCdWlsZGVyU3RhdGU6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUm
IGluVmFsdWUsIEZpbHRlck9wZXJhdGkKIAogICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9u
czsKICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4o
aW5WYWx1ZSkpIHsKLQogICAgICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRW
YWx1ZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlLmlzVVJJKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwotICAg
ICAgICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKLQotICAg
ICAgICAgICAgYXV0byBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShjc3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBvcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoV1RGTW92ZShvcGVyYXRpb24pKTsKKyAgICAgICAgICAg
IGF1dG8gZmlsdGVyVVJMID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKKyAgICAgICAg
ICAgIGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGZpbHRlclVSTCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShmaWx0ZXJV
UkwsIGZyYWdtZW50KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwCmluZGV4IGQ3OWU4MDA4ODA4NTAw
NWYxZTIzODVhMDgxYmExNjBhZmFiZjIyMzkuLjgzNDc2ZmU3NjlkNmRiZTA5Y2Y1NDc5MDE1NmRh
NjU4OGMyZGU3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3Bw
CkBAIC01MywyMyArNTMsMjQgQEAgU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpob3N0bmFtZSgpIGNv
bnN0CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fdXJsLnBvcnQoKSA/IFN0cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQoKS52YWx1ZSgpKSA6IGVt
cHR5U3RyaW5nKCk7CisgICAgYXV0byBwb3J0ID0gbV91cmwucG9ydCgpOworICAgIHJldHVybiBw
b3J0ID8gU3RyaW5nOjpudW1iZXIoKnBvcnQpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5n
IFdvcmtlckxvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0CiB7CiAgICAgYXV0byBwYXRoID0gbV91
cmwucGF0aCgpOwotICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIiA6IHBhdGgudG9TdHJp
bmcoKTsKKyAgICByZXR1cm4gcGF0aC5pc0VtcHR5KCkgPyAiLyJfcyA6IHBhdGgudG9TdHJpbmco
KTsKIH0KIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpzZWFyY2goKSBjb25zdAogewotICAgIHJl
dHVybiBtX3VybC5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyBtX3Vy
bC5xdWVyeSgpOworICAgIHJldHVybiBtX3VybC5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3Ry
aW5nKCkgOiBtX3VybC5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkudG9TdHJpbmcoKTsK
IH0KIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpoYXNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIj
IiArIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogbV91cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5n
IFdvcmtlckxvY2F0aW9uOjpvcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwCmluZGV4IDBkNTNiY2Y5MjNlZDYxMjY1MzlmMzVkZDJiOTQ5Y2ExNGI3YjU2N2MuLjE4OTZj
MjQxMWI1ZGMwYmY2ODJmNDI1MDg4ZTNlNjg5NjBkMmNhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleShTZWN1cml0eU9yaWdpbkRhdGEmJgogICAg
IDogbV90b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pKQogICAgICwgbV9zY29wZShXVEZNb3Zl
KHNjb3BlKSkKIHsKLSAgICBBU1NFUlQoIW1fc2NvcGUuaGFzRnJhZ21lbnQoKSk7CisgICAgQVNT
RVJUKCFtX3Njb3BlLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKIH0KIAogU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjplbXB0eUtleSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA3Mzg2MjU0ZWRhOTJl
OTg3ZDI2OTI0ZDg1NmZjM2VkNjRhMzAzZmVmLi5iYTc0ZjZkMTAzNDExOGVmNTFjOWNkYWVjN2Jl
ZGU5N2MwYzViMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAg
LTQ2LDEzICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVVSTCBzdGF0aWMgaW5s
aW5lIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorc3RhdGljIFVS
TCB0b3BPcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICBVUkwg
dXJsOwogICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJvdG9jb2woKSk7CiAgICAgdXJsLnNl
dEhvc3Qob3JpZ2luLmhvc3QoKSk7Ci0gICAgaWYgKG9yaWdpbi5wb3J0KCkpCi0gICAgICAgIHVy
bC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICB1cmwuc2V0UG9ydChvcmlnaW4ucG9ydCgp
KTsKICAgICByZXR1cm4gdXJsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGJmYzE1NzIxMTZjZjI5NjdhYzg1NjYz
NTRmZTQ5NDc0ODdkY2UyNWMuLmRiYjU5NWIzMTI3YmYyMWEzZGI0MTliNjVjNmRjNDcxYzhhMmVi
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwCkBAIC00MjcsOCArNDI3LDcgQEAgVVJMIHN0YXRpYyBpbmxpbmUgb3JpZ2luVVJM
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgVVJMIHVybDsKICAgICB1cmwuc2V0
UHJvdG9jb2wob3JpZ2luLnByb3RvY29sKCkpOwogICAgIHVybC5zZXRIb3N0KG9yaWdpbi5ob3N0
KCkpOwotICAgIGlmIChvcmlnaW4ucG9ydCgpKQotICAgICAgICB1cmwuc2V0UG9ydCgqb3JpZ2lu
LnBvcnQoKSk7CisgICAgdXJsLnNldFBvcnQoKm9yaWdpbi5wb3J0KCkpOwogICAgIHJldHVybiB1
cmw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDE1MjgxNTU4
MjU2OTgxYTQ4MzhjZDYzNzNiMzY3MWE1ZWQwNDBhZjkuLmEwZGU0OWYwODg0NGE4NmM2ZTMyOTc1
Y2M0YmQ3MDQ2NzViMmFmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtNDAyLDcgKzQwMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpvcGVu
KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybCwKICAgICBpZiAoIXVzZXIu
aXNOdWxsKCkpCiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKHVzZXIpOwogICAg
IGlmICghcGFzc3dvcmQuaXNOdWxsKCkpCi0gICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQ
YXNzKHBhc3N3b3JkKTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3N3b3JkKHBh
c3N3b3JkKTsKIAogICAgIHJldHVybiBvcGVuKG1ldGhvZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBh
c3luYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHAKaW5kZXggOWUwYjY4MmNkZWQyYWZiYmY1N2EwMjg0OWRjM2I3OWQ3OWE3
NjcyMS4uOTU1ZDM4OGU1ZTk2ZTM1MTk5MzY3NGZiOTQ5ZWE4N2FmM2ZkMzFlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApA
QCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0
aW9uKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxCiAgICAgICAgICAgICBo
YW5kbGVyKHJlZGlyZWN0aW9uRXJyb3IocmVkaXJlY3RSZXNwb25zZSwgbWFrZVN0cmluZygiQ3Jv
c3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiBub3Qg
YWxsb3dlZCB0byBmb2xsb3cgYSBjcm9zcy1vcmlnaW4gQ09SUyByZWRpcmVjdGlvbiB3aXRoIG5v
biBDT1JTIHNjaGVtZSIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKGxvY2F0aW9uLmhhc1VzZXJuYW1lKCkgfHwgbG9jYXRpb24uaGFzUGFzc3dvcmQoKSkg
eworICAgICAgICBpZiAobG9jYXRpb24uaGFzQ3JlZGVudGlhbHMoKSkgewogICAgICAgICAgICAg
aGFuZGxlcihyZWRpcmVjdGlvbkVycm9yKHJlZGlyZWN0UmVzcG9uc2UsIG1ha2VTdHJpbmcoIkNy
b3NzLW9yaWdpbiByZWRpcmVjdGlvbiB0byAiLCByZWRpcmVjdFJlcXVlc3QudXJsKCkuc3RyaW5n
KCksICIgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeTogcmVk
aXJlY3Rpb24gVVJMICIsIGxvY2F0aW9uLnN0cmluZygpLCAiIGhhcyBjcmVkZW50aWFscyIpKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lk
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBDbwogICAgIGh0dHBzVXBncmFkZUNoZWNrZXIucXVlcnkodXJsLmhv
c3QoKS50b1N0cmluZygpLCBtX3Nlc3Npb25JRCwgW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGJvb2wgZm91bmRIb3N0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGZvdW5kSG9zdCkgewogICAgICAgICAgICAgYXV0byBuZXdVUkwgPSByZXF1
ZXN0LnVybCgpOwotICAgICAgICAgICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyJfcyk7Cisg
ICAgICAgICAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgICAgICByZXF1
ZXN0LnNldFVSTChuZXdVUkwpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4
IDYyM2ExYWRjZWMwY2Y0M2RlNGVhNTZkNTc2OTkyNTBjYjljZTVlZTIuLmU0NDQwNjQ3MDY1OGE2
MWI3NjczNDQ5MGIxNTYxYjdlNTMzZTVjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMjEz
LDcgKzIxMyw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgYXV0byB1cmwgPSByZXF1
ZXN0LnVybCgpOwogICAgIGlmIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlICYmIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpIHsKICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICAgICAgbV9wYXNzd29yZCA9
IHVybC5wYXNzKCk7CisgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICAg
ICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogICAgICAgICB1cmwgPSByZXF1ZXN0LnVy
bCgpOwogICAgIApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAg
ICAgCiAgICAgY29uc3QgYXV0byYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBtX3VzZXIgPSB1
cmwudXNlcigpOwotICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOworICAgIG1fcGFzc3dvcmQg
PSB1cmwucGFzc3dvcmQoKTsKICAgICBtX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0
aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCmluZGV4IDk3N2E0MDNiZThkYzk2MmE5Y2NmYTY0MjhiYzFkM2U3YzQ2ODJmODYuLjI2
ZDk2MWQ0ZTliYzViY2Q4MDY0MzYxZjlkMmU5YmM0Nzg1NzNiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKQEAgLTU2LDcgKzU2LDcgQEAgTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNr
Q3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXMKICAgICAgICAgaWYg
KG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVz
ZSkgewogICAgICAgICAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAg
bV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICAgICAgICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygp
OworICAgICAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgICAgICAgICAg
cmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAgICAgICAgICBpZiAobV91c2VyLmlz
RW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkKICAgICBi
b29sIGRpZENoYW5nZUNyZWRlbnRpYWwgPSBmYWxzZTsKICAgICBjb25zdCBhdXRvJiB1cmwgPSBy
ZXF1ZXN0LnVybCgpOwogICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9
IHVybC5wYXNzKCk7CisgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFz
dEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNy
ZWRlbnRpYWxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBmZTFiNjNlNzhmNjgwNDI4Y2Zm
ZTcwYWQ4ZjY4NTNhODFlMmRjNzM3Li45YzA0NjUwNTg5MzljZjY1ZmMxMGY0NzcxZWQyMTY2NjJi
NmI5ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtEYXRh
VGFza1NvdXA6Ok5ldHdvcmtEYXRhVGFza1NvdXAoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVGFzCiAgICAgICAgIGF1dG8gdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAgICAg
aWYgKG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OlVzZSkgewogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICAgICAgICAgIG1f
cGFzc3dvcmQgPSB1cmwucGFzcygpOworICAgICAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNz
d29yZCgpOwogICAgICAgICAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAg
ICAgICAgICBpZiAobV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSkKQEAg
LTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmFwcGx5QXV0aGVudGlj
YXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogCiAgICAgYXV0byB1cmwg
PSByZXF1ZXN0LnVybCgpOwogICAgIHVybC5zZXRVc2VyKG1fdXNlcik7Ci0gICAgdXJsLnNldFBh
c3MobV9wYXNzd29yZCk7CisgICAgdXJsLnNldFBhc3N3b3JkKG1fcGFzc3dvcmQpOwogICAgIHJl
cXVlc3Quc2V0VVJMKHVybCk7CiAKICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKQEAgLTY4OCw3ICs2
ODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9u
KCkKIAogICAgIGNvbnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0g
dXJsLnVzZXIoKTsKLSAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3Jk
ID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1l
dGhvZCgpOwogICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtMTExNywyNCAr
MTExNywyMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnN0YXJ0aW5nQ2FsbGJhY2soU291
cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBOZXR3b3JrRGF0YQogfQogCiAjaWYgU09VUF9DSEVDS19W
RVJTSU9OKDIsIDY3LCAxKQorCiBib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNob3VsZEFsbG93
SFNUU1BvbGljeVNldHRpbmcoKSBjb25zdAogewogICAgIC8vIEZvbGxvdyBBcHBsZSdzIEhTVFMg
YWJ1c2UgbWl0aWdhdGlvbiAxOgogICAgIC8vICAiTGltaXQgSFNUUyBTdGF0ZSB0byB0aGUgSG9z
dG5hbWUsIG9yIHRoZSBUb3AgTGV2ZWwgRG9tYWluICsgMSIKLSAgICBpZiAoaXNUb3BMZXZlbE5h
dmlnYXRpb24oKSB8fCBob3N0c0FyZUVxdWFsKG1fY3VycmVudFJlcXVlc3QudXJsKCksIG1fY3Vy
cmVudFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkgfHwgaXNQdWJsaWNTdWZmaXgobV9j
dXJyZW50UmVxdWVzdC51cmwoKS5ob3N0KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzVG9w
TGV2ZWxOYXZpZ2F0aW9uKCkKKyAgICAgICAgfHwgbV9jdXJyZW50UmVxdWVzdC51cmwoKS5ob3N0
KCkgPT0gbV9jdXJyZW50UmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmhvc3QoKQorICAg
ICAgICB8fCBpc1B1YmxpY1N1ZmZpeChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3QoKS50b1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogfQogCiBib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnNo
b3VsZEFsbG93SFNUU1Byb3RvY29sVXBncmFkZSgpIGNvbnN0CiB7Ci0gICAgLy8gRm9sbG93IEFw
cGxlJ3MgSFNUUyBhYnVzZSBtaXRnYXRpb24gMjoKKyAgICAvLyBGb2xsb3cgQXBwbGUncyBIU1RT
IGFidXNlIG1pdGlnYXRpb24gMjoKICAgICAvLyAiSWdub3JlIEhTVFMgU3RhdGUgZm9yIFN1YnJl
c291cmNlIFJlcXVlc3RzIHRvIEJsb2NrZWQgRG9tYWlucyIKLSAgICBpZiAoIWlzVG9wTGV2ZWxO
YXZpZ2F0aW9uKCkgJiYgIW1fY3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBpc1RvcExldmVs
TmF2aWdhdGlvbigpCisgICAgICAgIHx8IG1fY3VycmVudFJlcXVlc3QuYWxsb3dDb29raWVzKCk7
CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMo
U291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQpAQCAtMTE1Myw2ICsxMTUxLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpoc3RzRW5mb3JjZWQoU291cEhTVFNFbmZvcmNlciosIFNvdXBNZXNz
YWdlKiBzb3VwTWVzc2EKICAgICBpZiAoc291cE1lc3NhZ2UgPT0gdGFzay0+bV9zb3VwTWVzc2Fn
ZS5nZXQoKSkKICAgICAgICAgdGFzay0+cHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoc291cE1lc3Nh
Z2UpOwogfQorCiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRTdGFydFJl
cXVlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDJkNzc2MzQ1ZTIyNDk2Y2I4
NzUwYzJlNjE0OWNkMDY2YWMwYzc4MDMuLjRjODM4YWZiNzMwNTk2MzU4OTM5YWZiNWJiNDU2NGQw
MGE4YTYyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTYzLDI1ICs2MywyNSBA
QCBwdWJsaWM6CiAgICAgV1RGOjpTdHJpbmcgaG9zdCgpIGNvbnN0CiAgICAgewogICAgICAgICBw
YXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxp
ZCgpID8gbV9wYXJzZWRVUkwtPmhvc3QoKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5ob3N0KCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAg
ICBXVEY6OlN0cmluZyBwcm90b2NvbCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElm
TmVjZXNzYXJ5KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxpZCgpID8gbV9w
YXJzZWRVUkwtPnByb3RvY29sKCkudG9TdHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAg
IHJldHVybiBtX3BhcnNlZFVSTC0+cHJvdG9jb2woKS50b1N0cmluZygpOwogICAgIH0KIAogICAg
IFdURjo6U3RyaW5nIHBhdGgoKSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vz
c2FyeSgpOwotICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2Vk
VVJMLT5wYXRoKCkudG9TdHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBt
X3BhcnNlZFVSTC0+cGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcg
bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vz
c2FyeSgpOwotICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2Vk
VVJMLT5sYXN0UGF0aENvbXBvbmVudCgpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJu
IG1fcGFyc2VkVVJMLT5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgfQogCiAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCBiMWMzNmRiMmMw
NDY4YTY1MWQ2NDc2YTJmOWRlY2RiMzI5NjViZGRkLi4wN2NkMTBmMmEzZGY5OTBjODY2ZTBlZTg5
Yzk5YTA2MzUwZmJmOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbQpAQCAtMjIwLDggKzIyMCw4IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6
OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2lmIFVTRShTWVNURU1f
UFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIoZG93bmxvYWRQcm94eSkpIHsKLSAgICAgICAgICAgIFdURjo6VVJMIGRlc3RpbmF0aW9uVVJM
ID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5kZXN0
aW5hdGlvbkZpbGVuYW1lKCkpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5mcmFn
bWVudElkZW50aWZpZXIoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25V
UkwgPSBXVEY6OlVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRl
c3RpbmF0aW9uRmlsZW5hbWUoKSk7CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmhh
c0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uVVJMLnNl
dEZyYWdtZW50SWRlbnRpZmllcihkb3dubG9hZFByb3h5LnJlcXVlc3QoKS51cmwoKS5mcmFnbWVu
dElkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBjb250cm9sbGVyLT5maW5pc2goZGVzdGluYXRp
b25VUkwpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggNDdiNTRjYWQ4NDAxMTU4NmVmYjgwOTliYTFh
ODkzNWI3MTI0YjVkMS4uMzkzNmViN2I5MmYwYzM5ZTIxN2EzNTE5OGE2NGE3NDBjZGQyZDQ1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcApAQCAtMTE0LDE1ICsxMTQsOSBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdl
Ojpsb2FkU3RvcmFnZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaE1hcAogCiAg
ICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX2RldmljZUlkSGFzaFNhbHRT
dG9yYWdlRGlyZWN0b3J5KTsKIAotICAgICAgICBhdXRvIG9yaWdpblBhdGhzID0gRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
OwotCiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNhbHRGb3JP
cmlnaW4+PiBkZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpIHsKLSAgICAgICAgICAgIFVSTCB1cmw7Ci0g
ICAgICAgICAgICB1cmwuc2V0UHJvdG9jb2woImZpbGUiX3MpOwotICAgICAgICAgICAgdXJsLnNl
dFBhdGgob3JpZ2luUGF0aCk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0
ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0
aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURp
cmVjdG9yeSwgIioiKSkgeworICAgICAgICAgICAgYXV0byBkZXZpY2VJZEhhc2hTYWx0ID0gVVJM
OjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG9yaWdpblBhdGgpLmxhc3RQYXRoQ29tcG9uZW50
KCkudG9TdHJpbmcoKTsKIAogICAgICAgICAgICAgaWYgKGhhc2hTYWx0U2l6ZSAhPSBkZXZpY2VJ
ZEhhc2hTYWx0Lmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
RGlza1BlcnNpc3RlbmN5LCAiRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBsZW5ndGggb2Yg
dGhlIGhhc2ggc2FsdCAoJWQpIGlzIGRpZmZlcmVudCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBoYXNo
IHNhbHRzIGRlZmluZWQgaW4gV2ViS2l0ICglZCkiLCBkZXZpY2VJZEhhc2hTYWx0Lmxlbmd0aCgp
LCBoYXNoU2FsdFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IGQzMDU1NTMwODA0NjIzODEzMWYwYmZlZDQyZDVm
MzAxMWYyYjFlMjUuLmI3YWY1Y2RhZWI1ZDAzYjMwOWJhZGJkOTYzNTNhNTZiZmJkMmY3YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHAKQEAgLTE0NSwxNiArMTQ1LDE1IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0
b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAg
cmV0dXJuIFBsdWdpbk1vZHVsZUluZm8oKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0
aEV4dGVuc2lvbihjb25zdCBVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgcGF0aEV4dGVuc2lvbihj
b25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uOwotICAgIFN0cmluZyBmaWxl
bmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgIGlmICghZmlsZW5hbWUuZW5kc1dp
dGgoJy8nKSkgewotICAgICAgICBzaXplX3QgZXh0ZW5zaW9uUG9zID0gZmlsZW5hbWUucmV2ZXJz
ZUZpbmQoJy4nKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvblBvcyAhPSBub3RGb3VuZCkKLSAgICAg
ICAgICAgIGV4dGVuc2lvbiA9IGZpbGVuYW1lLnN1YnN0cmluZyhleHRlbnNpb25Qb3MgKyAxKTsK
LSAgICB9Ci0gICAgcmV0dXJuIGV4dGVuc2lvbi5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwor
ICAgIGF1dG8gZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICBpZiAoZmls
ZW5hbWUuZW5kc1dpdGgoJy8nKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBzaXplX3QgbGFz
dERvdFBvc2l0aW9uID0gZmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAobGFzdERv
dFBvc2l0aW9uID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBm
aWxlbmFtZS5zdWJzdHJpbmcobGFzdERvdFBvc2l0aW9uICsgMSkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhlMWI4NjdjNTY3MmExZWE1ZWYzNDc4NWQxYzA2NjVl
MjFlYTFhNmEuLjY5MTQxMmYzOGY4ZWNlMjA1NWE0MTQ4Y2U4ZTU4Y2U0ZDdiNzk1YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI1Niw3ICsxMjU2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5k
bGUoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXMKICNlbmRpZgogCiAgICAgLy8gV2UgZmFpbGVkIHRv
IGlzc3VlIGFuIHVuaXZlcnNhbCBmaWxlIHJlYWQgYWNjZXNzIHNhbmRib3gsIGZhbGwgYmFjayB0
byBpc3N1aW5nIG9uZSBmb3IgdGhlIGJhc2UgVVJMIGluc3RlYWQuCi0gICAgYXV0byBiYXNlVVJM
ID0gVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOworICAgIGF1dG8gYmFzZVVSTCA9IHVy
bC50cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKTsKICAgICBhdXRvIGJhc2VQYXRoID0gYmFzZVVSTC5m
aWxlU3lzdGVtUGF0aCgpOwogICAgIGlmIChiYXNlUGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTI0Nyw3ICs1MjQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAg
ICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJ
bk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KICAgICAgICAgICAgICYmIGRlc3RpbmF0aW9u
RnJhbWVJbmZvLT5pc01haW5GcmFtZSgpCi0gICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgPyAh
aG9zdHNBcmVFcXVhbChtX21haW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJsKCkpIDogZmFsc2Up
CisgICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3Qo
KSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKICAgICAgICAgICAgICYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9y
d2FyZDsKIAogICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJ
bmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKQEAg
LTUzNzMsNyArNTM3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBz
b3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZv
KSwgdGhpcyk7CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nl
c3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVy
ZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9t
YWluRnJhbWUgPyAhaG9zdHNBcmVFcXVhbChtX21haW5GcmFtZS0+dXJsKCksIHJlcXVlc3QudXJs
KCkpIDogZmFsc2U7CisgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJh
bWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsK
ICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQo
KSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlz
LCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBAIC01
NTcxLDcgKzU1NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpbwogCiAgICAgICAgIHJlcGx5
KG5ld1BhZ2UtPndlYlBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMobV9wcm9j
ZXNzLCAqbmV3UGFnZS0+ZHJhd2luZ0FyZWEoKSkpOwogCi0gICAgICAgIG5ld1BhZ2UtPm1fc2hv
dWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3Rz
QXJlRXF1YWwoVVJMKHsgfSwgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAg
IG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiA9IFVSTCh7IH0sIG1haW5GcmFtZVVSTCkuaG9zdCgpID09IHJlcXVlc3QudXJsKCku
aG9zdCgpOwogCiAjaWYgSEFWRShBUFBfU1NPKQogICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1
cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gdHJ1
ZTsKQEAgLTU1NzksNyArNTU3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdl
KEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAgICAgfTsK
IAogICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlh
dGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIpOwotICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwob3JpZ2lu
YXRpbmdGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwgcmVxdWVzdC51cmwoKSk7CisgICAgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVy
bCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICBhdXRvIG5hdmlnYXRpb25B
Y3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92
ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCAqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdpbmRvd0ZlYXR1cmVzID0g
V1RGTW92ZSh3aW5kb3dGZWF0dXJlcyldIChSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5h
dmlnYXRpb25BY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94
eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzI1ODhhOGEwOTFkNGIwODc1MjhjYzMy
NTg4ZDcwZTNiNDUzMWJlZi4uZTRhODZmYWFmMzE4MzhjOGNmYTNlZDc5ZTg5Yjg5NGRjNWMyMDIx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01
NjcsMTEgKzU2NywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZwogCiAgICAgLy8gVGhlcmUn
cyBhIGNoYW5jZSB0aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4K
ICAgICAvLyBHZXQgdXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1
bWVkUmVhZEFjY2Vzcy4KLSAgICBVUkwgYmFzZVVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygp
KTsKLSAgICBTdHJpbmcgcGF0aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICBhdXRv
IHBhdGggPSB1cmwudHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkuZmlsZVN5c3RlbVBhdGgoKTsKICAg
ICBpZiAocGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gQ2xp
ZW50IGxvYWRzIGFuIGFsdGVybmF0ZSBzdHJpbmcuIFRoaXMgZG9lc24ndCBncmFudCB1bml2ZXJz
YWwgZmlsZSByZWFkLCBidXQgdGhlIHdlYiBwcm9jZXNzIGlzIGFzc3VtZWQKICAgICAvLyB0byBo
YXZlIHJlYWQgYWNjZXNzIHRvIHRoaXMgZGlyZWN0b3J5IGFscmVhZHkuCiAgICAgbV9sb2NhbFBh
dGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLmFkZChwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQppbmRleCAzMTVjZjNmZjEzNDE0YmUxODAzMWY3MDE2YWQ3MjY2NTE0YzQ0
OTVjLi5mMzQyM2E5MmFiYWQ5YmZhYTBmOGVlZDkyMTJiZTBhMmE3YzVkNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjppbml0aWFsaXplQXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXph
dGlvbiBmb3JjZVJlaW4KICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiBpbiBkb21h
aW5zLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgVVJMIHVybCB7IFVSTCgpLCBkb21haW4gfTsK
ICAgICAgICAgICAgICAgICBpZiAodXJsLnByb3RvY29sKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgICAgICB1cmwuc2V0UHJvdG9jb2woImh0dHBzIl9zKTsKKyAgICAgICAgICAgICAgICAg
ICAgdXJsLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAgICAgICAgIGlmICghdXJsLmlz
VmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gYXBwQm91bmREb21haW4geyB1cmwgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggOTAzOTkwYmY5NGU4Mzg1ZmRlOWYxNTRj
M2QzNWRhZTUzM2QwMDAzYi4uNDg3NTFhYmY0ODMyNDU4OTYxYmU3M2FhNWE1OTViMDVkZWNlYWY5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYwLDE5ICs2MCwxMCBA
QCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4g
b3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5LCAiKiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdp
blBhdGhzKSB7Ci0gICAgICAgIFVSTCB1cmw7Ci0gICAgICAgIHVybC5zZXRQcm90b2NvbCgiZmls
ZSJfcyk7Ci0gICAgICAgIHVybC5zZXRQYXRoKG9yaWdpblBhdGgpOwotCi0gICAgICAgIFN0cmlu
ZyBtZWRpYUtleUlkZW50aWZpZXIgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLQotICAgICAg
ICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKG1lZGlhS2V5SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghc2VjdXJpdHlPcmln
aW4pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICByZXN1bHRzLmFwcGVuZCgqc2Vj
dXJpdHlPcmlnaW4pOworICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICAgICAg
YXV0byBpZGVudGlmaWVyID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG9yaWdpblBh
dGgpLmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8gc2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
aWRlbnRpZmllcikpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4p
OwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYWVkMzAxYTU0ZGQ5OWJlYjY4
ZmIxNDM4ZDJkMWMyNTRkMDMwMTZlNC4uZTRlZmE0ODA5ZjBhM2ZmNTBhNjE2ZmUxMWE3NTA1ODlh
NDc4ZWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xNTYyLDEwICsxNTYyLDggQEAgdm9pZCBQREZQbHVnaW46Omluc3Rh
bGxQREZEb2N1bWVudCgpCiAgICAgaWYgKFttX3BkZkRvY3VtZW50IGlzTG9ja2VkXSkKICAgICAg
ICAgY3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIAotICAgIGlmIChbbV9wZGZMYXllckNvbnRy
b2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDopXSkgewot
ICAgICAgICBTdHJpbmcgcGRmVVJMRnJhZ21lbnQgPSBtX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRl
bnRpZmllcigpOwotICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6
cGRmVVJMRnJhZ21lbnRdOwotICAgIH0KKyAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pCisgICAgICAgIFtt
X3BkZkxheWVyQ29udHJvbGxlciBzZXRVUkxGcmFnbWVudDptX2ZyYW1lLnVybCgpLmZyYWdtZW50
SWRlbnRpZmllcigpLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCldOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDc2OGJhMmQ3YzQ2ODZjMDZlZTk3
NGFiYmQ2NTI1NDExZjNiYmNjOTMuLjQxZDNlZDg1ZTMzN2M1MTZjYjVjZGUwZDk3Y2UyMThjYTIx
NTE1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjQsMTcgKzI0LDEz
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
Q2xpZW50LmgiCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAotI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51Q2xpZW50LmgiCi0KICNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgotI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgpAQCAtNDIsNyArMzgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdl
c3R1cmVJbmRpY2F0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVEZXN0cm95
ZWQoKQogewpAQCAtNTYsMTkgKzUxLDIxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRv
d25sb2FkVVJMKGNvbnN0IFVSTCYpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkK
Kwordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJD
b3JlOjpGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKLSAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNl
KCk7Ci0gICAgU3RyaW5nIGVuY29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNl
YXJjaFN0cmluZyk7Ci0gICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBh
dXRvIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgU3RyaW5nIHVybCA9ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIg
KyBlbmNvZGVkICsgIiZpZT1VVEYtOCZvZT1VVEYtOCI7CisgICAgYXV0byBzZWFyY2hTdHJpbmcg
PSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CisgICAgc2VhcmNoU3RyaW5nLnN0cmlw
V2hpdGVTcGFjZSgpOworICAgIHNlYXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1
ZW5jZXMoc2VhcmNoU3RyaW5nKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAi
KyJfcyk7CisgICAgYXV0byBzZWFyY2hVUkwgPSBVUkwgeyB7IH0sICJodHRwczovL3d3dy5nb29n
bGUuY29tL3NlYXJjaD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9
OwogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIFVzZXJH
ZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAg
ICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihVUkwgeyBVUkwgeyB9
LCB1cmwgfSwgeyB9LCBudWxscHRyLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB9CisgICAgV2ViQ29yZTo6VXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07
CisgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VhcmNoVVJM
LCB7IH0sIG51bGxwdHIsIFdlYkNvcmU6OkxvY2tIaXN0b3J5OjpObywgV2ViQ29yZTo6TG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIFdlYkNvcmU6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwog
fQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29y
ZTo6RnJhbWUqKQpAQCAtOTEsMTQgKzg4LDE4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnN0b3BTcGVha2luZygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwogI2VuZGlmCiAK
ICNpZiBVU0UoQUNDRVNTSUJJTElUWV9DT05URVhUX01FTlVTKQorCiB2b2lkIFdlYkNvbnRleHRN
ZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoKQogewogICAgIG1fcGFnZS0+Y29udGV4dE1lbnUo
KS0+c2hvdygpOwogfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKICNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpp
bmRleCA4MDk0YTYyODIyNjFiNWU4Mzk3NDVkODZlNjA0M2FmNGNlNmM3MjM4Li4zMGM2ZmZlMjNm
MWU0OWYxNWY2NjgzOGI2ODQxYjU2NjJjN2VlZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5k
V3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAg
IFN0cmluZyB0aXRsZSA9IGxhYmVsOwogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgdGl0bGUgPSB1cmwu
bGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBjODQ0OGM1YWMxZjQzNjJlNDQw
M2MzYWMyOWEyODZhOWFmNWViYjhlLi5jY2FlMjEyYzU2Y2E0ODkxYjY3YzZkM2JlZTRjZDMzMTky
YjJhNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtODgyLDcgKzg4Miw3IEBA
IHN0YXRpYyBCT09MIHNob3VsZFRyeUFwcExpbmsoV2ViVmlldyAqd2ViVmlldywgY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYKICAgICBpZiAoIWFjdGlvbi5wcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgaWYgKHRhcmdldEZyYW1lICYmIHRh
cmdldEZyYW1lLT5kb2N1bWVudCgpICYmIGhvc3RzQXJlRXF1YWwodGFyZ2V0RnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpLCBhY3Rpb24udXJsKCkpKQorICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJn
ZXRGcmFtZS0+ZG9jdW1lbnQoKSAmJiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaG9z
dCgpID09IGFjdGlvbi51cmwoKS5ob3N0KCkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIHJl
dHVybiBZRVM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCA1MzY3M2U5ZTJmNWVkM2JmNGNhNTEyNGM5MmY0MTZjZjNjMzcyZWZmLi43ZDQ4OWU2MGZm
NWE4MTI1YzRkMmNmZGFhYTY0MWM1N2ExOGE5NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTIyODYsMTQgKzIyODYsMTAgQEAgLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50Rm9yV2ViQXJjaGl2ZTooV2ViQXJjaGl2
ZSAqKXdlYkFyY2hpdmUKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdt
ZW50Rm9ySW1hZ2VEYXRhOihOU0RhdGEgKilkYXRhIHdpdGhSZWxhdGl2ZVVSTFBhcnQ6KE5TU3Ry
aW5nICopcmVsYXRpdmVVUkxQYXJ0IGFuZE1JTUVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlCiB7
Ci0gICAgV2ViUmVzb3VyY2UgKnJlc291cmNlID0gW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdp
dGhEYXRhOmRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChyZWxhdGl2ZVVS
TFBhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1JTUVUeXBlOm1pbWVUeXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTmFtZTpuaWxdOwotICAgIERPTURvY3Vt
ZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFn
bWVudFdpdGhJbWFnZVJlc291cmNlOnJlc291cmNlXTsKLSAgICBbcmVzb3VyY2UgcmVsZWFzZV07
Ci0gICAgcmV0dXJuIGZyYWdtZW50OworICAgIGF1dG8gcmVzb3VyY2UgPSBhZG9wdE5TKFtbV2Vi
UmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhCisgICAgICAgIFVSTDpVUkw6OmZha2VV
UkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmluZyB7IHJlbGF0aXZlVVJMUGFydCB9KQorICAgICAgICBN
SU1FVHlwZTptaW1lVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOm5pbCBmcmFtZU5hbWU6bmlsXSk7Cisg
ICAgcmV0dXJuIFtbc2VsZiBfZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VS
ZXNvdXJjZTpyZXNvdXJjZS5nZXQoKV07CiB9CiAKIC0gKEJPT0wpZm9jdXNlZE5vZGVIYXNDb250
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpp
bmRleCBhYzZiNzEzOGI4ODk3YzM4OTI1M2UyNTI0NTA0ZDM0MGUwNjY5YjdhLi43YTRmNWE4ZWYy
ZTBjNWU2YzU5YWFjZGYyYTAxNDhhNjYxN2IyNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTIzMDYsNyArMjMwNiw3IEBAIC0gKHZv
aWQpY2xvc2UKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV93ZWJfZG9jdW1lbnRGcmFnbWVu
dEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBl
OihOU1N0cmluZyAqKXBhc3RlYm9hcmRUeXBlIGltYWdlTUlNRVR5cGU6KE5TU3RyaW5nICopaW1h
Z2VNSU1FVHlwZQogewotICAgIGF1dG8gZmlsZW5hbWUgPSBbaW1hZ2VNSU1FVHlwZSBzdHJpbmdC
eVJlcGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCIvIiB3aXRoU3RyaW5nOkAiLiJdOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IFtpbWFnZU1JTUVUeXBlIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJy
ZW5jZXNPZlN0cmluZzpAIi8iIHdpdGhTdHJpbmc6QCIuIl07CiAgICAgYXV0byByZXNvdXJjZSA9
IGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOltwYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXQogICAgICAgICBVUkw6VVJMOjpmYWtlVVJMV2l0aFJl
bGF0aXZlUGFydChmaWxlbmFtZSkgTUlNRVR5cGU6aW1hZ2VNSU1FVHlwZSB0ZXh0RW5jb2RpbmdO
YW1lOm5pbCBmcmFtZU5hbWU6bmlsXSk7CiAgICAgcmV0dXJuIFtbc2VsZiBfZGF0YVNvdXJjZV0g
X2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZS5nZXQoKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggYWE1MWI2Mzk0ODg4YTcwYjdmMGQ5ZGJhMDUx
ZmUyNWIxZTE2ZmY5Ny4uZjE0MTg2MzBlZjZlOWRhMmMzMzlmMGFkMWVkOGVlNjY5YTg4ODdhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjU1LDcgKzI1NSw3IEBAIC0gKGlk
IDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9u
Q29udHJvbGxlcgogICAgICAgICByZXR1cm4gW1tbV2ViQW5pbWF0aW9uQ29udHJvbGxlciBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwogCiAgICAgTlNVUkwgKnVybCA9IF9oaXRUZXN0UmVzdWx0
LmFic29sdXRlTGlua1VSTCgpOwotICAgIE5TU3RyaW5nICphYnNvbHV0ZVVSTFN0cmluZyA9IFt1
cmwgYWJzb2x1dGVTdHJpbmddOworICAgIFN0cmluZyBhYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwg
YWJzb2x1dGVTdHJpbmddOwogICAgIGlmICh1cmwgJiYgX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVu
dCgpKSB7CiAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJt
YWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9M
aW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcAppbmRleCA2NDFhYzM1NGMzNDE5NjdlYTZjZWQ2OTBkNWU2ZDQ1YzZjMmMyYTFhLi5j
Yzg3NzUzYTI4NDcyOGM5MmI2NzA4YmI0YTA2OGM4MGNhNTczNWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMSw2ICsx
LDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwg
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4gPiBQbHVnaW5QYWNrYWdlQnlOYW1l
TWFwOwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+PiBQbHVn
aW5QYWNrYWdlQnlOYW1lTWFwOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFU
QV9DQUNIRSkKIAotc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUGVyc2lzdGVudFBsdWdpbk1l
dGFkYXRhQ2FjaGVTaXplID0gMzI3Njg7Citjb25zdGV4cHIgc2l6ZV90IG1heGltdW1QZXJzaXN0
ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVNpemUgPSAzMjc2ODsKIAogc3RhdGljIGJvb2wgZ1BlcnNp
c3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlSXNFbmFibGVkOwogCkBAIC01NSw5ICs1NSw2IEBAIFN0
cmluZyYgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRoKCkKICNlbmRpZgogCiBQbHVn
aW5EYXRhYmFzZTo6UGx1Z2luRGF0YWJhc2UoKQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
TUVUQURBVEFfQ0FDSEUpCi0gICAgOiBtX3BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlSXNMb2FkZWQo
ZmFsc2UpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjI4LDcgKzIyNSw3IEBAIFBsdWdpblBhY2thZ2Uq
IFBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogICAgIHJldHVybiBwbHVnaW5DaG9pY2VzWzBdOwogfQogCi1TdHJpbmcgUGx1Z2luRGF0YWJh
c2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAor
U3RyaW5nIFBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IGV4
dGVuc2lvbikgY29uc3QKIHsKICAgICBpZiAoZXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwpAQCAtMjUwLDcgKzI0Nyw3IEBAIFN0cmluZyBQbHVnaW5EYXRhYmFz
ZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGNvbnN0CiAg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1pbWVfaXQtPnZh
bHVlOwogICAgICAgICAgICAgYm9vbCBmb3VuZE1hcHBpbmcgPSBmYWxzZTsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uc1tpXSwgZXh0
ZW5zaW9uKSkgeworICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcgeyBleHRlbnNpb25zW2ldIH0sIGV4dGVuc2lvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luID0gKCppdCkuZ2V0KCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHByZWZlcnJlZFBsdWdpbiAmJiBQbHVnaW5QYWNrYWdlOjplcXVhbCgqcGx1
Z2luLCAqcHJlZmVycmVkUGx1Z2luKSkKQEAgLTI4NCwyMCArMjgxLDE5IEBAIFBsdWdpblBhY2th
Z2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIG1p
bWVUeXBlKQogICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcGx1
Z2luRm9yTUlNRVR5cGUobWltZVR5cGUpOwogICAgIAotICAgIFN0cmluZyBmaWxlbmFtZSA9IHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgIGF1dG8gZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhD
b21wb25lbnQoKTsKICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy8nKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGludCBleHRlbnNpb25Q
b3MgPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOwotICAgIGlmIChleHRlbnNpb25Qb3MgPT0g
LTEpCi0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8gZG90UG9zaXRpb24gPSBmaWxlbmFtZS5y
ZXZlcnNlRmluZCgnLicpOworICAgIGlmIChkb3RQb3NpdGlvbiA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9u
ID0gTUlNRVR5cGVGb3JFeHRlbnNpb24oZmlsZW5hbWUuc3Vic3RyaW5nKGV4dGVuc2lvblBvcyAr
IDEpKTsKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JFeHRlbnNpb24gPSBNSU1FVHlwZUZvckV4dGVu
c2lvbihmaWxlbmFtZS5zdWJzdHJpbmcoZG90UG9zaXRpb24gKyAxKSk7CiAgICAgUGx1Z2luUGFj
a2FnZSogcGx1Z2luID0gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGVGb3JFeHRlbnNpb24pOwog
ICAgIGlmICghcGx1Z2luKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBpZiBubyBwbHVnaW4gY291bGQg
YmUgZm91bmQsIHF1ZXJ5IFdpbmRvd3MgZm9yIHRoZSBtaW1lIHR5cGUKLSAgICAgICAgLy8gY29y
cmVzcG9uZGluZyB0byB0aGUgZXh0ZW5zaW9uLgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
Ly8gRklYTUU6IElmIG5vIHBsdWdpbiBjb3VsZCBiZSBmb3VuZCwgcXVlcnkgV2luZG93cyBmb3Ig
dGhlIE1JTUUgdHlwZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBleHRlbnNpb24uCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICBtaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0
ZW5zaW9uOwpAQCAtMzc0LDYgKzM3MCw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZERpc2Fi
bGVkUGx1Z2luRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogfQogCiAjaWYgIUVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQorCiAvLyBGb3IgU2FmYXJpL1dpbiB0aGUgZm9sbG93aW5nIHRo
cmVlIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkCiAvLyBpbiBQbHVnaW5EYXRhYmFzZVdpbi5jcHAs
IGJ1dCBpZiB3ZSBjYW4gdXNlIFdlYkNvcmUgY29uc3RydWN0cwogLy8gZm9yIHRoZSBsb2dpYyB3
ZSBzaG91bGQgcGVyaGFwcyBtb3ZlIGl0IGhlcmUgdW5kZXIgWFBfV0lOPwpAQCAtNDcwLDggKzQ2
Nyw4IEBAIHN0YXRpYyBib29sIHJlYWRUaW1lKHRpbWVfdCYgcmVzdWx0VGltZSwgY2hhciomIHN0
YXJ0LCBjb25zdCBjaGFyKiBlbmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBjb25z
dCBjaGFyIHNjaGVtYVZlcnNpb24gPSAnMSc7Ci1zdGF0aWMgY29uc3QgY2hhciBwZXJzaXN0ZW50
UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lW10gPSAiUGx1Z2luTWV0YWRhdGFDYWNoZS5iaW4i
OworY29uc3RleHByIGNoYXIgc2NoZW1hVmVyc2lvbiA9ICcxJzsKK2NvbnN0ZXhwciBjaGFyIHBl
cnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWVbXSA9ICJQbHVnaW5NZXRhZGF0YUNh
Y2hlLmJpbiI7CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFD
YWNoZSgpCiB7CkBAIC02MTcsNSArNjE0LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6c2V0UGVy
c2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudE1ldGEKIHsK
ICAgICBXZWJDb3JlOjpwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVBhdGgoKSA9IHBlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlUGF0aDsKIH0KKwogI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAppbmRleCBhY2MwZTFmYmE3
NDY0Mjk0NDFiYjlhZDY0ZmRiY2UyNTBkMmRiNzE3Li45YjM0YjZmNDQ4ZjM5NDE0YzMzOGIyMWZl
MTUxNzE4NjMwYzZlNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNSwyMSArMjUsMTQgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5EYXRhYmFzZV9oCi0jZGVmaW5lIFBsdWdpbkRh
dGFiYXNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3MgRnJh
bWU7Ci0gICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsK
LSAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxQ
bHVnaW5QYWNrYWdlPiwgUGx1Z2luUGFja2FnZUhhc2gsIFBsdWdpblBhY2thZ2VIYXNoVHJhaXRz
PiBQbHVnaW5TZXQ7CiAKQEAgLTc5LDcgKzcyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCk7CiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdpbkRpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1cm4g
bV9wbHVnaW5EaXJlY3RvcmllczsgfQogCi0gICAgICAgIFN0cmluZyBNSU1FVHlwZUZvckV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3Q7CisgICAgICAgIFN0cmluZyBNSU1F
VHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IGV4dGVuc2lvbikgY29uc3Q7CisKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogICAgICAgICBzdGF0aWMgYm9vbCBp
c1BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlRW5hYmxlZCgpOwogICAgICAgICBzdGF0aWMgdm9pZCBz
ZXRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwpAQCAtMTA4
LDEwICsxMDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCB0aW1lX3Q+IG1fcGx1Z2luUGF0aHNXaXRoVGltZXM7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8UGx1Z2luUGFja2FnZT4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9wcmVm
ZXJyZWRQbHVnaW5zOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUp
Ci0gICAgICAgIGJvb2wgbV9wZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUlzTG9hZGVkOworICAgICAg
ICBib29sIG1fcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVJc0xvYWRlZCB7IGZhbHNlIH07CiAjZW5k
aWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGMyNjVlMDgzZTFmN2M5YWZjODNiYzhlMDFlOGY0NGVl
ZjdhYjUzYjkuLjdmMzhiYmE5ODY0OWY0OGU3OWRjNmRkOWM5M2RmNjUwZTU4M2QyOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTI1LDIxICsyNSwxNCBAQAogCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIKIAotI2luY2x1ZGUgIldlYkVsZW1lbnRQcm9wZXJ0
eUJhZy5oIgotI2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQogV2ViQ29udGV4dE1lbnVDbGllbnQ6OldlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTU1LDIyICs0OCwyMyBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkK
ICAgICBtX3dlYlZpZXctPmRvd25sb2FkVVJMKHVybCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQordm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3RlZFRleHQoKTsKLSAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgU3Ry
aW5nIGVuY29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7
Ci0gICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBhdXRvIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIHVybCA9ICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBlbmNvZGVkICsg
IiZpZT1VVEYtOCZvZT1VVEYtOCI7CisgICAgYXV0byBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0ZWRUZXh0KCk7CisgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgp
OworICAgIHNlYXJjaFN0cmluZyA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNo
U3RyaW5nKTsKKyAgICBzZWFyY2hTdHJpbmcucmVwbGFjZSgiJTIwIl9zLCAiKyJfcyk7CisgICAg
YXV0byBzZWFyY2hVUkwgPSBVUkwgeyB7IH0sICJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJj
aD9xPSIgKyBzZWFyY2hTdHJpbmcgKyAiJmllPVVURi04Jm9lPVVURi04IiB9OwogCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihVUkwgeyBVUkwgeyB9LCB1cmwgfSwgeyB9
LCBudWxscHRyLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBSZWZl
cnJlclBvbGljeTo6RW1wdHlTdHJpbmcsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKLSAgICB9CisgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3Ig
aW5kaWNhdG9yIHsgV2ViQ29yZTo6UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CisgICAgcGFnZS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VhcmNoVVJMLCB7IH0sIG51bGxw
dHIsIFdlYkNvcmU6OkxvY2tIaXN0b3J5OjpObywgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dDo6Tm8sIFdlYkNvcmU6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogfQogCi12b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKQordm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDYyMjI4MjA0N2YxYTRmZTNiYTE4ZjAzMWI5NmYzZDMzMDZjNGEzNWQuLjUzOWJlNzc5MzAx
MzBjZWRiYjg0Mzg1YTI4NjU5ZThlMTA0NGY2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTEwMTQsNyArMTAxNCw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QKIAogICAg
IGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nIGRlY29kZWRQYXRoID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwotICAgICAgICBtaW1lVHlwZSA9
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9u
KGRlY29kZWRQYXRoLnN1YnN0cmluZyhkZWNvZGVkUGF0aC5yZXZlcnNlRmluZCgnLicpICsgMSkp
OworICAgICAgICBtaW1lVHlwZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCkt
Pk1JTUVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgeyBkZWNvZGVkUGF0aCB9LnN1YnN0cmlu
ZyhkZWNvZGVkUGF0aC5yZXZlcnNlRmluZCgnLicpICsgMSkpOwogICAgIH0KIAogICAgIGlmICht
aW1lVHlwZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNDBjNDUzY2JmYTEwYjczZjAzMTNkYThjZjI0MmYxYzgxYzg2NzRlNy4u
ZmQ3ODM4MWVjYzMxMTcwYmQxMDk1ODczMTNiNDU0ODNjZTljM2Y3NyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIw
LTA0LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcDogUmVtb3ZlZCB0aGUgdGVzdCBmb3IKKyAgICAgICAg
ZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQgc2luY2Ugd2UgcmVtb3ZlZCB0aGF0IGZ1bmN0
aW9uLgorICAgICAgICBVcGRhdGVkIGZvciByZW5hbWUgb2YgVVJMOjpwYXNzd29yZCBmcm9tIFVS
TDo6cGFzcy4KKyAgICAgICAgVXBkYXRlZCBhcmd1bWVudHMgdG8gaXNNYXRjaGluZ0RvbWFpbiB0
byBwYXNzIGxpdGVyYWxzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZAorICAgICAgICB0byBTdHJpbmdW
aWV3IHJhdGhlciB0aGFuIEFTQ0lJTGl0ZXJhbCwgd2hpY2ggU3RyaW5nVmlldyBkb2Vzbid0IHll
dCBzdXBwb3J0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBh
cnNlclRleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6
IFVwZGF0ZWQgZm9yIHJlbmFtZSBvZiBVUkw6OnBhc3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTCk6IERpdHRvLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKTogRGl0dG8uCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp0ZXN0VXNlclBhc3N3b3JkKTogRGl0dG8uCisKIDIwMjAtMDQtMjQg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gV2hpdGUtbGlzdCBtb3JlIEdTdHJlYW1lciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4g
d2Via2l0cHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwCmluZGV4IDkzN2I5Zjk0
MGJmOTExM2ZjZTM3MjNmYWYwYzVlNWJmNmIxYzg3ZGUuLjZiZjI3NWE1MThkNDdhMGUyZjIxNzk0
YTA3OGQ2MTljZTdjNTFmZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcApA
QCAtNjEsNyArNjEsNyBAQCBURVNUX0YoV1RGX1VSTCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIp
CiAgICAgRVhQRUNUX1RSVUUoISFrdXJsLnBvcnQoKSk7CiAgICAgRVhQRUNUX0VRKDgwODAsIGt1
cmwucG9ydCgpLnZhbHVlKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoInVzZXJuYW1lIiksIGt1
cmwudXNlcigpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3Mo
KSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygicGFzc3dvcmQiKSwga3VybC5wYXNzd29yZCgpKTsK
ICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgoKSk7CiAgICAg
RVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkp
OwogICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgpKTsKQEAgLTI2
MSw1NyArMjYxLDYgQEAgVEVTVF9GKFdURl9VUkwsIEVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIpCiAgICAgfQogfQogCi1URVNUX0YoV1RGX1VSTCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5k
RnJhZ21lbnQpCi17Ci0gICAgc3RydWN0IFRlc3RDYXNlIHsKLSAgICAgICAgY29uc3QgY2hhciog
dXJsMTsKLSAgICAgICAgY29uc3QgY2hhciogdXJsMjsKLSAgICAgICAgYm9vbCBleHBlY3RlZDsK
LSAgICB9IGNhc2VzW10gPSB7Ci0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNo
YXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhh
bXBsZS5jb20vcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgjaGFzaCIsICJodHRwOi8vZXhh
bXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
P3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDov
L2V4YW1wbGUuY29tOjgwLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20v
IiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoI2hhc2giLCAi
aHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb206ODAvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAot
ICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDov
L2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206
ODAvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAotICAgICAg
ICB7Imh0dHA6Ly9ub3QtZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MC8i
LCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyIsICJodHRwOi8vZXhh
bXBsZS5jb20vIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFz
aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tOjgxL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxIiwgZmFsc2V9LAotICAg
ICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUu
Y29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0
aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUu
Y29tOjgxL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvb3Ro
ZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgZmFsc2V9LAotICAgICAgICB7
ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIs
IHRydWV9LAotICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwjaGFzaCIsICJmaWxl
Oi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3Rv
L2ZpbGUuaHRtbD9xdWVyeSIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0g
ICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSNoYXNoIiwgImZpbGU6Ly8v
cGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3Ro
ZXJfZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAg
ICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8v
ZmlsZS5odG1sIiwgZmFsc2V9LAotICAgICAgICB7ImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iLCAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7
YmFzZTY0LDc2MC83NjAvNzYwLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5j
b20iLCAiZmlsZTovL2V4YW1wbGUuY29tIiwgZmFsc2V9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbS8jaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCi0gICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9
LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8/cXVlcnkjaGFzaCIsICJmaWxlOi8vZXhh
bXBsZS5jb20vIiwgZmFsc2V9LAotICAgIH07Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHRlc3Qg
OiBjYXNlcykgewotICAgICAgICBVUkwgdXJsMSA9IGNyZWF0ZVVSTCh0ZXN0LnVybDEpOwotICAg
ICAgICBVUkwgdXJsMiA9IGNyZWF0ZVVSTCh0ZXN0LnVybDIpOwotICAgICAgICBFWFBFQ1RfRVEo
dGVzdC5leHBlY3RlZCwgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQodXJsMSwgdXJsMikp
Ci0gICAgICAgICAgICA8PCAiVGVzdCBmYWlsZWQgZm9yICIgPDwgdGVzdC51cmwxIDw8ICIgdnMu
ICIgPDwgdGVzdC51cmwyOwotICAgIH0KLX0KLQogVEVTVF9GKFdURl9VUkwsIFByb3RvY29sSXNJ
bkhUVFBGYW1pbHkpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseSh7IH0pKTsKQEAgLTM3NiwyMiArMzI1LDIyIEBAIFRFU1RfRihXVEZfVVJMLCBIb3N0SXNN
YXRjaGluZ0RvbWFpbikKIAogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKFN0
cmluZyB7IH0pKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbihlbXB0eVN0
cmluZygpKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykp
OwotICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3JnIl9zKSk7
Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3dy53ZWJraXQub3JnIl9z
KSk7CisgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBF
WFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyIpKTsKKyAgICBFWFBF
Q1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciKSk7CiAKLSAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInJnIl9zKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCIub3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVy
bC5pc01hdGNoaW5nRG9tYWluKCJ3dy53ZWJraXQub3JnIl9zKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KHVybC5pc01hdGNoaW5nRG9tYWluKCJodHRwOi8vd3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInJnIikpOworICAgIEVYUEVDVF9GQUxT
RSh1cmwuaXNNYXRjaGluZ0RvbWFpbigiLm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlz
TWF0Y2hpbmdEb21haW4oInd3LndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5p
c01hdGNoaW5nRG9tYWluKCJodHRwOi8vd3d3LndlYmtpdC5vcmciKSk7CiAKICAgICB1cmwgPSBj
cmVhdGVVUkwoImZpbGU6Ly8vd3d3LndlYmtpdC5vcmciKTsKIAogICAgIEVYUEVDVF9UUlVFKHVy
bC5pc01hdGNoaW5nRG9tYWluKFN0cmluZyB7IH0pKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwuaXNN
YXRjaGluZ0RvbWFpbihlbXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVybC5pc01h
dGNoaW5nRG9tYWluKCJvcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdE
b21haW4oIndlYmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdE
b21haW4oInd3dy53ZWJraXQub3JnIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNo
aW5nRG9tYWluKCJvcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWlu
KCJ3ZWJraXQub3JnIikpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigi
d3d3LndlYmtpdC5vcmciKSk7CiAKICAgICBVUkwgZW1wdHlVUkw7CiAgICAgRVhQRUNUX0ZBTFNF
KGVtcHR5VVJMLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKaW5kZXggMTAzOWU1NGIxYWViN2MyNjFmNWEy
YWMzOTI4ZTExOTg3M2IzNmNjOC4uMDhhM2E5ZTk4ODNkMDY4YmNjM2ViNWRmMTUxZTYwZjcxYjQw
N2M5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2Vy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgCiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dv
cmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTEx
OSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIAogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5w
YXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5o
b3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDAp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNDgs
NyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGEKICAgICAKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5w
b3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJs
LnBhdGgoKSkpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVV
UkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAg
ICAgCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucHJvdG9jb2wsIHVybC5wcm90b2NvbCgp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwotICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShw
YXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTQ2MiwxOSArNDYyLDE5IEBAIFRFU1Rf
RihXVEZfVVJMUGFyc2VyLCBCYXNpYykKICAgICBjaGVja1VSTCgiaHR0cDovLzpAaG9zdCIsIHsi
aHR0cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly9ob3N0LyJ9KTsK
IH0KIAotc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0
IFN0cmluZyYgZGVjb2RlZCwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQorc3RhdGljIHZvaWQgdGVz
dFVzZXJQYXNzd29yZChjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRlY29kZWQs
IGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKIHsKICAgICBVUkwgdXNlclVSTChVUkwoKSwgbWFrZVN0
cmluZygiaHR0cDovLyIsIHZhbHVlLCAiQGV4YW1wbGUuY29tLyIpKTsKICAgICBVUkwgcGFzc1VS
TChVUkwoKSwgbWFrZVN0cmluZygiaHR0cDovL3VzZXI6IiwgdmFsdWUsICJAZXhhbXBsZS5jb20v
IikpOwogICAgIEVYUEVDVF9FUShlbmNvZGVkLCB1c2VyVVJMLmVuY29kZWRVc2VyKCkpOwotICAg
IEVYUEVDVF9FUShlbmNvZGVkLCBwYXNzVVJMLmVuY29kZWRQYXNzKCkpOworICAgIEVYUEVDVF9F
UShlbmNvZGVkLCBwYXNzVVJMLmVuY29kZWRQYXNzd29yZCgpKTsKICAgICBFWFBFQ1RfRVEoZGVj
b2RlZCwgdXNlclVSTC51c2VyKCkpOwotICAgIEVYUEVDVF9FUShkZWNvZGVkLCBwYXNzVVJMLnBh
c3MoKSk7CisgICAgRVhQRUNUX0VRKGRlY29kZWQsIHBhc3NVUkwucGFzc3dvcmQoKSk7CiB9CiAK
LXN0YXRpYyB2b2lkIHRlc3RVc2VyUGFzcyhjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGVuY29kZWQpCitzdGF0aWMgdm9pZCB0ZXN0VXNlclBhc3N3b3JkKGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKIHsKLSAgICB0ZXN0VXNlclBhc3ModmFsdWUs
IHZhbHVlLCBlbmNvZGVkKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKHZhbHVlLCB2YWx1ZSwgZW5j
b2RlZCk7CiB9CiAKIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBDcmVkZW50aWFscykKQEAgLTQ4Mywy
MCArNDgzLDIwIEBAIFRFU1RfRihXVEZfVVJMUGFyc2VyLCBDcmVkZW50aWFscykKICAgICBhdXRv
IGludmFsaWRTdXJyb2dhdGUgPSB1dGYxNlN0cmluZzwzPih7MHhEODAwLCAnQScsICdcMCd9KTsK
ICAgICBhdXRvIHJlcGxhY2VtZW50QSA9IHV0ZjE2U3RyaW5nPDM+KHsweEZGRkQsICdBJywgJ1ww
J30pOwogCi0gICAgdGVzdFVzZXJQYXNzKCJhIiwgImEiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUi
LCAiJSIpOwotICAgIHRlc3RVc2VyUGFzcygiJTI1IiwgIiUiLCAiJTI1Iik7Ci0gICAgdGVzdFVz
ZXJQYXNzKCIlMjUyNSIsICIlMjUiLCAiJTI1MjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiVGWCIs
ICIlRlgiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiUwMCIsIFN0cmluZzo6ZnJvbVVURjgoIlwwIiwg
MSksICIlMDAiKTsKLSAgICB0ZXN0VXNlclBhc3MoIiVGJTI1IiwgIiVGJSIsICIlRiUyNSIpOwot
ICAgIHRlc3RVc2VyUGFzcygiJVglMjUiLCAiJVglIiwgIiVYJTI1Iik7Ci0gICAgdGVzdFVzZXJQ
YXNzKCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKLSAgICB0ZXN0VXNlclBhc3MoIvCfkqkiLCAiJUMz
JUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIl8J+SqSIsICIlJUMz
JUIwJUMyJTlGJUMyJTkyJUMyJUE5Iik7Ci0gICAgdGVzdFVzZXJQYXNzKHZhbGlkU3Vycm9nYXRl
LCAiJUYwJTkwJTg1JTk1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKHJlcGxhY2VtZW50QSwgIiVFRiVC
RiVCREEiKTsKLSAgICB0ZXN0VXNlclBhc3MoaW52YWxpZFN1cnJvZ2F0ZSwgcmVwbGFjZW1lbnRB
LCAiJUVGJUJGJUJEQSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoImEiLCAiYSIpOworICAgIHRl
c3RVc2VyUGFzc3dvcmQoIiUiLCAiJSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUyNSIsICIl
IiwgIiUyNSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiUyNTI1IiwgIiUyNSIsICIlMjUyNSIp
OworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiVGWCIsICIlRlgiKTsKKyAgICB0ZXN0VXNlclBhc3N3
b3JkKCIlMDAiLCBTdHJpbmc6OmZyb21VVEY4KCJcMCIsIDEpLCAiJTAwIik7CisgICAgdGVzdFVz
ZXJQYXNzd29yZCgiJUYlMjUiLCAiJUYlIiwgIiVGJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29y
ZCgiJVglMjUiLCAiJVglIiwgIiVYJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJSUyNSIs
ICIlJSIsICIlJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgi8J+SqSIsICIlQzMlQjAlQzIl
OUYlQzIlOTIlQzIlQTkiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIl8J+SqSIsICIlJUMzJUIw
JUMyJTlGJUMyJTkyJUMyJUE5Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCh2YWxpZFN1cnJvZ2F0
ZSwgIiVGMCU5MCU4NSU5NSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQocmVwbGFjZW1lbnRBLCAi
JUVGJUJGJUJEQSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoaW52YWxpZFN1cnJvZ2F0ZSwgcmVw
bGFjZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwogfQogCiBURVNUX0YoV1RGX1VSTFBhcnNlciwgUGFy
c2VSZWxhdGl2ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKaW5kZXggYTI2ODE2ZGExNDkxZjZlM2Iy
MDU3YzY2YTdkY2E0NTlkMTM2MTRkMy4uZTI2MTc5MzM0MjUyMjQzYmE1ZjE0MTgwZjcyMjRlYjc3
NTRkY2ExZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlclRleHRFbmNvZGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGlu
ZyogZW5jb2RpbmcsIGNvbnMKICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5j
b2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2wo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwg
dXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1
cmwucGF0aCgpKSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QK
ICAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBl
bmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2Nv
bCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgs
IHVybC5wYXRoKCkpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDc1NTNiNmU4
MmQzNWZlZmJiNmM3YWE5ZTg3YTIyMmNiYzVkOWRkY2QuLmIyMzJkMWJjYWYzMjQ2ZjNjMDJmYzFh
NDgzNTI5ZjY2MzY5YWU5NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJp
bmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3VybC91cmwtc2V0dGVycy1leHBlY3RlZC50eHQ6
IFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0cyBmb3IgcHJvZ3Jlc3Npb24gaW4KKyAgICAgICAgY29y
cmVjdCBiZWhhdmlvciB3aGVuIHBvcnQgbnVtYmVycyBhcmUgPjY1NTM1LiBJIGRpZG4ndCBvcmln
aW5hbGx5IGludGVuZCB0byBtYWtlIHRoaXMgaW1wcm92ZW1lbnQsCisgICAgICAgIGJ1dCBpdCBm
ZWxsIG91dCBuYXR1cmFsbHkgZnJvbSB0aGUgcmVmYWN0b3JpbmcgY2hhbmdlcy4KKwogMjAyMC0w
NC0yNCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcG9ydCBmZXRj
aC9zdGFsZS13aGlsZS1yZXZhbGlkYXRlL2ZldGNoLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL3VybC1zZXR0ZXJzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJs
L3VybC1zZXR0ZXJzLWV4cGVjdGVkLnR4dAppbmRleCAxMTg3MGI5ODdlNjZmNDMzNmFhMDBiNWRj
ZDE1Y2M4MDJkYzYxMzFkLi43OWViMTE3Yjk5MWQ0NTcxZDE2NDMwYjY0NDRlZWVlOGM1ZDA4ZmVj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3VybC91cmwtc2V0dGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvdXJsLXNldHRlcnMtZXhwZWN0ZWQudHh0CkBAIC0y
ODIsOSArMjgyLDkgQEAgUEFTUyA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9w
YXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjgwODArMicgQW55dGgKIFBBU1MgVVJMOiBTZXR0aW5n
IDxodHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNScgUG9y
dCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMgCiBQQVNTIDxhPjogU2V0dGluZyA8aHR0cDov
L2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzUnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzIAogUEFTUyA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFt
cGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM1JyBQb3J0IG51bWJlcnMgYXJl
IDE2IGJpdCBpbnRlZ2VycyAKLUZBSUwgVVJMOiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQv
cGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQg
aW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0bmFtZSBpcyBzdGlsbCBzZXQs
IHRob3VnaC4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
IiBidXQgZ290ICJodHRwOi8vZXhhbXBsZS5uZXQvcGF0aCIKLUZBSUwgPGE+OiBTZXR0aW5nIDxo
dHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBu
dW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0
bmFtZSBpcyBzdGlsbCBzZXQsIHRob3VnaC4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoIiBidXQgZ290ICJodHRwOi8vZXhhbXBsZS5jb206NjU1MzYvcGF0
aCIKLUZBSUwgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9
ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92
ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0bmFtZSBpcyBzdGlsbCBzZXQsIHRob3VnaC4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiBidXQgZ290ICJo
dHRwOi8vZXhhbXBsZS5jb206NjU1MzYvcGF0aCIKK1BBU1MgVVJMOiBTZXR0aW5nIDxodHRwOi8v
ZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBudW1iZXJz
IGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0bmFtZSBp
cyBzdGlsbCBzZXQsIHRob3VnaC4gCitQQVNTIDxhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUu
bmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYg
Yml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvci4gSG9zdG5hbWUgaXMgc3RpbGwg
c2V0LCB0aG91Z2guIAorUEFTUyA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9w
YXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBp
bnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3RuYW1lIGlzIHN0aWxsIHNldCwg
dGhvdWdoLiAKIFBBU1MgVVJMOiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQvPi5ob3N0ID0g
J1tnb29nbGUuY29tXScgQnJva2VuIElQdjYgCiBGQUlMIDxhPjogU2V0dGluZyA8aHR0cDovL2V4
YW1wbGUubmV0Lz4uaG9zdCA9ICdbZ29vZ2xlLmNvbV0nIEJyb2tlbiBJUHY2IGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJodHRwOi8vZXhhbXBsZS5uZXQvIiBidXQgZ290ICJodHRwOi8vW2dvb2ds
ZS5jb21dLyIKIEZBSUwgPGFyZWE+OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQvPi5ob3N0
ID0gJ1tnb29nbGUuY29tXScgQnJva2VuIElQdjYgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0
dHA6Ly9leGFtcGxlLm5ldC8iIGJ1dCBnb3QgImh0dHA6Ly9bZ29vZ2xlLmNvbV0vIgpAQCAtNDU5
LDEyICs0NTksMTIgQEAgUEFTUyA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9w
YXRoPi5wb3J0ID0gJzgwODArMicgQW55dGhpbmcgb3RoZXIgdGgKIFBBU1MgVVJMOiBTZXR0aW5n
IDxodHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4ucG9ydCA9ICc2NTUzNScgUG9ydCBudW1iZXJzIGFy
ZSAxNiBiaXQgaW50ZWdlcnMgCiBQQVNTIDxhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0
L3BhdGg+LnBvcnQgPSAnNjU1MzUnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzIAog
UEFTUyA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5wb3J0ID0gJzY1
NTM1JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2VycyAKLUZBSUwgVVJMOiBTZXR0aW5n
IDxodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJl
cnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgImh0
dHA6Ly9leGFtcGxlLm5ldDowL3BhdGgiCi1GQUlMIDxhPjogU2V0dGluZyA8aHR0cDovL2V4YW1w
bGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQg
aW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJodHRwOi8vZXhhbXBsZS5u
ZXQ6MC9wYXRoIgotRkFJTCA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgw
L3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBv
dmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4
YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdvdCAiaHR0cDovL2V4YW1wbGUubmV0OjAvcGF0aCIK
LUZBSUwgVVJMOiBTZXR0aW5nIDxub24tc3BlY2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4u
cG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93
aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJub24tc3BlY2lhbDovL2V4
YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdvdCAibm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5ldDow
L3BhdGgiCi1GQUlMIDxhPjogU2V0dGluZyA8bm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgw
L3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBv
dmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAibm9uLXNwZWNp
YWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgIm5vbi1zcGVjaWFsOi8vZXhhbXBs
ZS5uZXQ6MC9wYXRoIgotRkFJTCA8YXJlYT46IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBs
ZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBp
bnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
Im5vbi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJub24tc3BlY2lh
bDovL2V4YW1wbGUubmV0OjAvcGF0aCIKK1BBU1MgVVJMOiBTZXR0aW5nIDxodHRwOi8vZXhhbXBs
ZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBp
bnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgCitQQVNTIDxhPjogU2V0dGluZyA8aHR0
cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFy
ZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIAorUEFTUyA8YXJlYT46
IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBv
cnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAK
K1BBU1MgVVJMOiBTZXR0aW5nIDxub24tc3BlY2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4u
cG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93
aW5nIGlzIGFuIGVycm9yIAorUEFTUyA8YT46IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBs
ZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBp
bnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgCitQQVNTIDxhcmVhPjogU2V0dGluZyA8
bm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQg
bnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAKIFBB
U1MgVVJMOiBTZXR0aW5nIDxmaWxlOi8vdGVzdC8+LnBvcnQgPSAnMTInIAogUEFTUyA8YT46IFNl
dHRpbmcgPGZpbGU6Ly90ZXN0Lz4ucG9ydCA9ICcxMicgCiBQQVNTIDxhcmVhPjogU2V0dGluZyA8
ZmlsZTovL3Rlc3QvPi5wb3J0ID0gJzEyJyAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397474</attachid>
            <date>2020-04-24 11:30:44 -0700</date>
            <delta_ts>2020-04-25 08:02:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210431-20200424113043.patch</filename>
            <type>text/plain</type>
            <size>226388</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBhYzAwNzZkMGNhN2E0YjlmMDQ3Mzc0
ZDI1MGNjMDA2MTJkODQ4YmQuLjZiMWZmM2RiZTc4NDVhMWEyMjY2YzE0NzNlZTMwNGIwYmRkNzhm
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJl
dHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6IFJlbW92ZSB1bnVzZWQgQ2hhckJ1
ZmZlciB0eXBlLiBSZW1vdmUgVUNoYXJCdWZmZXIKKyAgICAgICAgdHlwZSBhbmQgd3JpdGUgdGhl
IHR5cGUgZXhwbGljaXRseSBpbiB0aGUgMyBwbGFjZXMgaXQncyB1c2VkLgorICAgICAgICBSZW1v
dmVkIHRoZSBpbnZhbGlkUG9ydE51bWJlciBjb25zdGFudCwgc2luY2Ugd2UgdXNlIE9wdGlvbmFs
CisgICAgICAgIGluc3RlYWQgb2YgYSBzcGVjaWFsIHBvcnQgbnVtYmVyIG5vdy4KKyAgICAgICAg
KFdURjo6Y29weUFTQ0lJKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNwZWNpYWwgY2FzZSBmb3IgZW1w
dHkgc3RyaW5nLgorICAgICAgICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhbmQgY29tbWVudCBhIGJp
dC4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOiBTdHJlYW1saW5lZCBieSBnZXR0aW5nIHJpZCBv
ZiBhIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICAoV1RGOjpzaG91bGRUcmltRnJvbVVSTCk6IFR3
ZWFrZWQgY29kaW5nIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6Omxhc3RQYXRoQ29tcG9uZW50
IGNvbnN0KTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAgICAgQWxzbywgdXNlIHRoZSBwYXRo
U3RhcnQgZnVuY3Rpb24gZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6OlVSTDo6cG9ydCBjb25z
dCk6IFVzZSBhIFN0cmluZ1ZpZXcgdG8gY2FsbCBwYXJzZVVJbnQxNi4KKyAgICAgICAgKFdURjo6
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KTogT3B0aW1pemVkIHRvIGFsd2F5cyBhbGxv
Y2F0ZQorICAgICAgICB0aGUgc3RyaW5nIGluIHRoZSByaWdodCBzaXplIHJhdGhlciB0aGFuIHJl
bW92aW5nIGNoYXJhY3RlcnMgZnJvbSBpdAorICAgICAgICBhZnRlciBjcmVhdGluZyBpdC4KKyAg
ICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2UpOiBBZGRlZC4gRmFjdG9yZWQgb3V0IGZy
b20gdGhlIGZ1bmN0aW9uCisgICAgICAgIGJlbG93IHRvIG1ha2UgaXQgYSBsaXR0bGUgbW9yZSBy
ZWFkYWJsZS4KKyAgICAgICAgKFdURjo6ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TCk6IENvbnZlcnQgYSBudWxsIFN0cmluZ1ZpZXcKKyAgICAgICAgdG8gYSBudWxsIFN0cmluZyBy
YXRoZXIgdGhhbiBhbiBlbXB0eSBTdHJpbmcsIHVzZSBhIHN0YWNrIGJ1ZmZlciBhbmQKKyAgICAg
ICAgdGhlIGhlbHBlciBmdW5jdGlvbiBhYm92ZSwgYW5kIGFkZGVkIHNvbWUgRklYTUUgY29tbWVu
dHMgYWJvdXQKKyAgICAgICAgZW5jb2RpbmcgaGFuZGxpbmcuCisgICAgICAgIChXVEY6OlVSTDo6
dXNlciBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVkVXNlci4KKyAgICAgICAg
KFdURjo6VVJMOjpwYXNzd29yZCBjb25zdCk6IFNpbXBsaWZpZWQgYnkgY2FsbGluZyBlbmNvZGVk
UGFzc3dvcmQuCisgICAgICAgIChXVEY6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBSZXR1cm4g
YSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmVuY29kZWRQYXNzd29yZCBjb25zdCk6
IERpdHRvLiBBbHNvIHJlbmFtZWQgZnJvbSBlbmNvZGVkUGFzcy4KKyAgICAgICAgKFdURjo6VVJM
OjpmcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMOjpo
YXNGcmFnbWVudElkZW50aWZpZXIgY29uc3QpOiBNb3ZlZCB0byBoZWFkZXIgc28gaXQgY2FuCisg
ICAgICAgIGJlIGlubGluZWQuCisgICAgICAgIChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNC
YXNlIGNvbnN0KTogUmVuYW1lZCBmcm9tIGJhc2VBc1N0cmluZy4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHdpdGggbG9jYWwgZmlsZSBVUkxzIGFuZCBpdCdz
CisgICAgICAgIG5vdCBwZXJmZWN0bHkgY2xlYXIgdG8gbWUgcHJlY2lzZWx5IHdoYXQgaXQgaXMg
Zm9yLCBoZW5jZSB0aGUgbmFtZQorICAgICAgICBpcyBub3Qgc28gZ3JlYXQuCisgICAgICAgIChX
VEY6OlVSTDo6ZmlsZVN5c3RlbVBhdGggY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIGZv
ciB2YWxpZGl0eQorICAgICAgICBzaW5jZSBpc0xvY2FsRmlsZSBkb2VzIHRoYXQgY2hlY2suIFJl
bW92ZWQgdW5uZWVkZWQgdHlwZWNhc3Qgbm93IHRoYXQKKyAgICAgICAgcGF0aCByZXR1cm5zIGEg
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjplbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnJlZ2lzdGVyRGVmYXVs
dFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByb3RvY29s
SXNJbnRlcm5hbCk6IFJld3JvdGUgdG8gdGFrZSBhIFN0cmluZ1ZpZXcuIEJlZm9yZSBpdAorICAg
ICAgICB3YXMgd3JpdHRlbiBhcyBhIHRlbXBsYXRlIHRoYXQgbG9va2VkIGxpa2UgaXQgc3VwcG9y
dGVkIGNsYXNzZXMgb3RoZXIKKyAgICAgICAgdGhhbiBTdHJpbmcsIGJ1dCBhY3R1YWxseSB3b3Vs
ZCBjcmFzaCBpZiBjYWxsZWQgb24gYSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSXMgY29uc3QpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5n
Vmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpxdWVyeSBjb25zdCk6IFJldHVybiBhIFN0cmluZ1Zp
ZXcuCisgICAgICAgIChXVEY6OlVSTDo6cGF0aCBjb25zdCk6IFJldHVybiBhIFN0cmluZ1ZpZXcs
IHVzZSB0aGUgcGF0aFN0YXJ0CisgICAgICAgIGZ1bmN0aW9uIGZvciBjbGFyaXR5LgorICAgICAg
ICAoV1RGOjpVUkw6OnNldFByb3RvY29sKTogVXNlIGEgdG9TdHJpbmdXaXRob3V0Q29weWluZyB0
byBzYXZlIHNvbWUKKyAgICAgICAgd29yayB3aGVuIG1ha2luZyB0aGUgcHJvdG9jb2wgY2Fub25p
Y2FsLiBDYWxsIHBhcnNlIGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRpbmcgYSBVUkxQYXJzZXIg
aGVyZS4KKyAgICAgICAgKFdURjo6VVJMOjpjcmVkZW50aWFsc0VuZCBjb25zdCk6IEFkZGVkLiBI
ZWxwZXIgZm9yIHZhcmlvdXMgZnVuY3Rpb25zCisgICAgICAgIHRoYXQgbWFuaXB1bGF0ZSB0aGUg
Y3JlZGVudGlhbHMgc2VjdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KTogVGFrZSBT
dHJpbmdWaWV3LiBTdHJlYW1saW5lZCB0aGUgY29kZSBieSB1c2luZworICAgICAgICBTdHJpbmdW
aWV3Ojpjb250YWlucywgYnkgdXNpbmcgbWFrZVN0cmluZyByYXRoZXIgdGhhbiBTdHJpbmdCdWls
ZGVyLAorICAgICAgICBhbmQgYnkgY2FsbGluZyBwYXJzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
VVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlUG9ydCk6IERlbGV0ZWQs
IHNpbmNlIHNldFBvcnQgdGFrZXMgYW4gT3B0aW9uYWwgbm93LgorICAgICAgICAoV1RGOjpVUkw6
OnNldFBvcnQpOiBUYWtlIE9wdGlvbmFsPHVpbnQxNl90Pi4gQ2FsbCBwYXJzZSBpbnN0ZWFkIG9m
CisgICAgICAgIGNyZWF0aW5nIGEgVVJMUGFyc2VyIGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6
cmVtb3ZlSG9zdEFuZFBvcnQpOiBEZWxldGVkLiBDYWxsZXJzIGNhbiBwYXNzIGEgbnVsbAorICAg
ICAgICBTdHJpbmdWaWV3IHRvIHNldEhvc3RBbmRQb3J0IGluc3RlYWQuCisgICAgICAgIChXVEY6
OlVSTDo6c2V0SG9zdEFuZFBvcnQpOiBUYWtlIFN0cmluZ1ZpZXcuIERvbid0IHJlbW92ZSB0aGUg
b2xkCisgICAgICAgIGhvc3QgYW5kIHBvcnQgaW4gdGhlIG5vbXJhbCBjYXNlIHdoZXJlIHdlIGVu
ZCB1cCBvdmVyd3JpdGluZyB0aGUgZW50aXJlCisgICAgICAgIFVSTCBhdCB0aGUgZW5kIG9mIHRo
ZSBmdW5jdGlvbiBhbnl3YXkuIFVzZSBwYXJzZVVJbnQxNiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
SW50U3RyaWN0IHRvIGNoZWNrIHBvcnQgbnVtYmVyIGZvciB2YWxpZGl0eSwgd2hpY2ggbWFrZXMg
c3VyZSB3ZSB3aWxsCisgICAgICAgIHJlamVjdCBwb3J0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNjU1
MzUuIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlciBhbmQg
Y2FsbCBwYXJzZSByYXRoZXIgdGhhbiBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJlLgorICAgICAg
ICAoV1RGOjpwYXJzZSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gZm9yIHdoZW4gd2UgY3JlYXRl
IGEgbmV3IHN0cmluZworICAgICAgICBhbmQgd2FudCB0byBwYXJzZSBpdCBhcyB0aGUgbmV3IGNv
bnRlbnRzIG9mIHRoZSBVUkwuIFVzZWQgaW4gYWxtb3N0CisgICAgICAgIGV2ZXJ5IHNldHRlciBm
dW5jdGlvbi4KKyAgICAgICAgKFdURjo6VVJMOjpyZW1vdmUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIGZvciBlZmZpY2llbnRseSByZW1vdmluZworICAgICAgICBhIHBpZWNlIG9mIHRoZSBVUkwg
c3RyaW5nIGFuZCByZS1wYXJzaW5nLiBVc2VkIGluIG1hbnkgc2V0dGVyIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKFdURjo6VVJMOjpzZXRVc2VyKTogVGFrZSBTdHJpbmdWaWV3LiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIsIGFuZCBwYXJzZSBhbmQgcmVtb3Zl
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBVUkxQYXJzZXIgaGVyZS4KKyAgICAgICAgKFdURjo6VVJM
OjpzZXRQYXNzd29yZCk6IFJlbmFtZWQgZnJvbSBzZXRQYXNzLiBUYWtlIFN0cmluZ1ZpZXcuCisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwgYW5kIHBhcnNl
IGFuZCByZW1vdmUgaW5zdGVhZCBvZgorICAgICAgICBjcmVhdGluZyBhIFVSTFBhcnNlciBoZXJl
LgorICAgICAgICAoV1RGOjpVUkw6OnJlbW92ZUNyZWRpZW50aWFscyk6IEFkZGVkLiBFZmZpY2ll
bnRseSByZW1vdmVzIGJvdGggdGhlCisgICAgICAgIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgaWYg
ZWl0aGVyIGlzIHByZXNlbnQuCisgICAgICAgIChXVEY6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKTogVXNlIHBhcnNlIGluc3RlYWQgb2YgY3JlYXRpbmcKKyAgICAgICAgYSBVUkwgcGFyc2Vy
IGhlcmUuCisgICAgICAgIChXVEY6OlVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgZm9yCisgICAgICAgIHRoaW5ncyBhbHJlYWR5IG9wdGlt
aXplZCBieSBTdHJpbmc6OmxlZnQuIENvdWxkIGxhdGVyIGNvbnNpZGVyIG1lcmdpbmcKKyAgICAg
ICAgdGhpcyBpbiB3aXRoIHNldEZyYWdtZW50SWRlbnRpZmllciwgdXNpbmcgYSBudWxsIHZzLiBl
bXB0eSBkaXN0aW5jdGlvbiwKKyAgICAgICAgYnV0IG5vdCBkb2luZyB0aGF0IGZvciBub3cuCisg
ICAgICAgIChXVEY6OlVSTDo6c2V0UXVlcnkpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChX
VEY6OlVSTDo6c2V0UGF0aCk6IFRha2UgU3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6c3RyaW5n
V2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
c3RyaW5nV2l0aG91dEZyYWdtZW50SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTogU2ltcGxpZmllZCBpbXBsZW1lbnRhdGlv
biBieQorICAgICAgICB1c2luZyBzdHJpbmdXaXRob3V0RnJhZ21lbnRJZGVudGlmaWVyLgorICAg
ICAgICAoV1RGOjplcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6Omhvc3RzQXJlRXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpVUkw6Omlz
TWF0Y2hpbmdEb21haW4gY29uc3QpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OnBy
b3RvY29sSXMpOiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJ
cyk6IE1vdmVkIHRvIGlubGluZSBpbiB0aGUgaGVhZGVyLgorICAgICAgICAoV1RGOjpVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6IFJld3JpdGUgZm9yIGVmZmljaWVuY3kuCisg
ICAgICAgIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KTogTW92ZWQgdG8gaW5saW5lIGluIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXVEY6OmFib3V0QmxhbmtVUkwpOiBVc2UgQVNDSUlMaXRlcmFs
LgorICAgICAgICAoV1RGOjphYm91dFNyY0RvY1VSTCk6IFVzZSBBU0NJSUxpdGVyYWwuCisgICAg
ICAgIChXVEY6OnBvcnRBbGxvd2VkKTogUmVtb3ZlZCA2NTUzNSBhcyBhIGJsb2NrZWQgcG9ydDsg
d2Fzbid0IG5lZWRlZC4KKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9tRGF0YVVSTCk6IFRha2Ug
U3RyaW5nVmlldy4KKyAgICAgICAgKFdURjo6VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGggY29uc3QpOiBUd2Vha2VkIHN0eWxlLgorICAgICAgICAoV1RGOjpVUkw6OmZha2VVUkxX
aXRoUmVsYXRpdmVQYXJ0KTogVGFrZSBTdHJpbmdWaWV3LgorICAgICAgICAoV1RGOjpVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOiBUYWtlIFN0cmluZ1ZpZXcuLgorICAgICAgICAoV1RG
OjpVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6VVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24gY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VVJMOjpob3N0SXNJUEFkZHJlc3MpOiBUd2VhayBj
b2Rpbmcgc3R5bGUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6IE1hZGUgVVJMVGV4dEVuY29kaW5n
IGRlc3RydWN0b3IgcHJvdGVjdGVkLiBSZW1vdmVkCisgICAgICAgIHVudXNlZCBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFVSTEhhc2ggc3RydWN0dXJlLiBVc2UgV1RGX0VYUE9SVF9QUklWQVRFCisg
ICAgICAgIG9uIGZ1bmN0aW9ucyBmcm9tIFVSTCByYXRoZXIgdGhhbiBvbiB0aGUgd2hvbGUgY2xh
c3MsIHNpbmNlIHRoZSBzdHlsZQorICAgICAgICBjaGVja2VyIHRvbGQgbWUgdG8gZG8gdGhhdC4g
TW92ZWQgc29tZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzIG91dCBvZgorICAgICAgICB0aGUgY2xh
c3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eSBhbmQgdG8ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBo
YXBweS4KKyAgICAgICAgVXBkYXRlZCBtYW55IGFyZ3VlbW50cyBmcm9tIFN0cmluZyB0byBTdHJp
bmdWaWV3IGFuZCByZXR1cm4gdmFsdWVzIGZvcgorICAgICAgICBzdWJzdHJpbmdzIG9mIHRoZSBV
UkwgdG8gU3RyaW5nVmlldy4gUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbnMgYW5kCisgICAg
ICAgIHNvbWUgb2Jzb2xldGUgY29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwOgorICAgICAgICAoV1RGOjppc0NGVVJMU2FtZU9yaWdpbik6IFVzZSBoYXNDcmVkZW50
aWFscy4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6ZW5kc1dpdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cGFyc2VV
SW50MTYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSk6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3Ojpjb250YWlucyBjb25zdCk6IEFkZGVkIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYQorICAgICAgICBjb25zdCBjaGFyKiBzbyB0aGUgY2FsbCBzaXRl
IGRvZXNuJ3QgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGEgU3RyaW5nVmlldy4KKworICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXBkYXRlZCBmb3IgdGhlIGFkZGl0aW9ucyBhYm92ZS4K
KyAgICAgICAgQWxzbyBhZGRlZCBhIGRlZmF1bHQgc3RhcnQgb2YgMCB0byB0aGUgZmluZCBmdW5j
dGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFN0cmljdCk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgdGVtcGxh
dGUgYXJndW1lbnQuCisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3QpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KTogRGl0dG8uCisgICAgICAgIChXVEY6
OmNoYXJhY3RlcnNUb0ludFB0clN0cmljdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpjaGFyYWN0
ZXJzVG9JbnQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvVUludCk6IERpdHRv
LgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpjaGFyYWN0ZXJzVG9VSW50NjQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyKTogRGl0dG8uCisKIDIwMjAtMDQtMjMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIENNQUtFX0JJTkFSWV9ESVIgc2hvdWxkIGFs
d2F5cyBiZSBhIFBSSVZBVEUgaW5jbHVkZSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjBjZDgw
YzRlYzFjNDI1NmU2NzQ0MGZiNGQ5ZjEzOGExYzIwNGZjLi43YTNlNzYxN2NiMDczMGUyODY1YjRk
NGU4MTUxYzdmZGMzZDdmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAxIEBACisyMDIwLTA0
LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVSTCB0
byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6bWF0Y2hVUkxzKTogUmVtb3ZlZCB1bm5lZWRlZCBjYWxscyB0byBoYXNRdWVyeS4KKworICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgpOiBVc2UgaGFzQ3JlZGVudGlhbHMuCisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KTogVXNlIGhhc0NyZWRlbnRpYWxzLgorICAgICAgICAq
IE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElkZW50aWZpZXIpOiBVc2UgaGFzQ3Jl
ZGVudGlhbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVlvdVR1YmVVUkwpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpxdWVyeUtleXNBbmRWYWx1ZXMpOiBUYWtlIFN0
cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6
IFVzZSBhdXRvIHNpbmNlIFVSTCBwaWVjZXMgYXJlCisgICAgICAgIG5vdyByZXR1cm5lZCBhcyBT
dHJpbmdWaWV3LgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5
b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgVXNlIFN0cmluZ1ZpZXcgYW5kIG1h
a2VTdHJpbmcgcmF0aGVyIHRoYW4gU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b3VyY2VOYW1lKTogVXNlIHF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCBj
b25zdCk6CisgICAgICAgIFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVUkwpOiBVc2Ugc2V0SG9zdEFu
ZFBvcnQuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmspOiBVcGRhdGUgc2luY2UKKyAgICAgICAg
ZnJhZ21lbnRJZGVudGlmaWVyIHJldHVybnMgU3RyaW5nVmlldy4KKworICAgICAgICAqIGRvbS9U
cmVlU2NvcGUuY3BwOiBBZGRlZCBhIGNvbW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENv
bXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4gQWxzbyBnb3QgcmlkIG9mIHNvbWUgc3RyYW5n
ZQorICAgICAgICB1c2Ugb2YgQXRvbVN0cmluZyB0aGF0IHdhcyBub3QgbmVjZXNzYXJ5IGFuZCB1
c2VkIFdURk1vdmUgbW9yZS4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IFVwZGF0
ZSBzaW5jZQorICAgICAgICBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5nVmlldy4K
KworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSBj
b25zdCk6CisgICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlciwg
YW5kIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmcgZm9yIG5hbWUgYW5kIGV4
dGVuc2lvbiB2YWx1ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZSk6IFVwZGF0ZSBzaW5j
ZSBsYXN0UGF0aENvbXBvbmVudAorICAgICAgICByZXR1cm5zIGEgU3RyaW5nVmlldy4KKworICAg
ICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6IFVwZGF0ZSBzaW5jZQor
ICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAg
ICAgKiBodG1sL1VSTFV0aWxzLmg6IENoYW5nZWQgbWFueSBmdW5jdGlvbnMgdG8gdGFrZSBhIFN0
cmluZ1ZpZXcsIGNoYW5nZWQKKyAgICAgICAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgdG8gY2Fs
bCB0b1N0cmluZywgc2luY2UgdGhlIHVuZGVybHlpbmcgVVJMCisgICAgICAgIGZ1bmN0aW9uIG5v
dyByZXR1cm5zIGEgU3RyaW5nVmlldy4gVXBkYXRlZCBuYW1lcyBzaW5jZSAicGFzcyIgaXMgbm93
CisgICAgICAgICJwYXNzd29yZCIuCisgICAgICAgIChXZWJDb3JlOjpjb3VudEFTQ0lJRGlnaXRz
KTogQWRkZWQuIFJlcGxhY2VzIHVudXN1YWwgZnVuY3Rpb24KKyAgICAgICAgbmFtZWQgcGFyc2VQ
b3J0RnJvbVN0cmluZ1Bvc2l0aW9uIGJlY2F1c2Ugd2UgY2FuIHVzZSBTdHJpbmdWaWV3IG5vdwor
ICAgICAgICBhbmQgc28gZG9uJ3QgbmVlZCBzdWNoIGFuIHVudXN1YWwgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFkQ2xpY2tBdHRyaWJ1dGlvbjo6cGFyc2VDb252ZXJzaW9uUmVxdWVzdCk6IFVzZSBoYXNDcmVk
ZW50aWFscy4KKyAgICAgICAgQWxzbyByZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZiBBU0NJSUxp
dGVyYWwgdGhhdCBodXJ0cyBwZXJmb3JtYW5jZQorICAgICAgICBhIHRpbnkgYml0LgorICAgICAg
ICAoV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjp1cmxGb3JUZXN0aW5nIGNvbnN0KTogVXNl
IG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAg
ICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp2YWxpZGF0ZUNyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwpOiBVc2UgaGFzQ3JlZGVudGlhbHMu
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKTogVXBkYXRlIHNp
bmNlIHF1ZXJ5IHJldHVybnMKKyAgICAgICAgU3RyaW5nVmlldy4KKworICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KTogVXNlIGVxdWFsUmVzcGVjdGluZ051bGxpdHkgb24KKyAgICAgICAgZnJh
Z21lbnQgaWRlbnRpZmllcnMgdG8gcHJlc2VydmUgYmVoYXZpb3IsIHNpbmNlIGF0IHRoaXMgdGlt
ZQorICAgICAgICBTdHJpbmdWaWV3ID09IFN0cmluZ1ZpZXcgZG9lcyBub3QgcmVzcGVjdCBudWxs
aXR5LCBidXQgU3RyaW5nID09IFN0cmluZyBkb2VzLgorCisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKTogVXNlIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGguCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFuaWZlc3RQYXRoKTogUmV0dXJuIGEgU3RyaW5nVmlldy4KKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlTWFuaWZlc3QpOiBVc2UgU3RyaW5nVmlldy4KKworICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24gY29uc3QpOiBVcGRhdGUgc2luY2UKKyAgICAg
ICAgZnJhZ21lbnRJZGVudGlmZXIgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJZGVudGlmaWVyRnJvbVJlcXVlc3RV
UkwpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsKTogVXBkYXRlZCBsb2cgbWVz
c2FnZS4KKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKTogVXBkYXRlZCBmb3IgVVJMOjpwYXNzd29yZCBuYW1l
IGNoYW5nZQorICAgICAgICBhbmQgdG8gdXNlIHRoZSBuZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JG
cmFnbWVudElkZW50aWZpZXIgcmF0aGVyIHRoYW4gdGhlCisgICAgICAgIG9sZCBlcXVhbElnbm9y
aW5nUXVlcnlBbmRGcmFnbWVudC4KKworICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmhyZWYgY29uc3QpOiBVc2UgcmVtb3ZlQ3JlZGVudGlh
bHMuCisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cG9ydCBjb25zdCk6IFN0cmVhbWxpbmVk
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnBhdGhuYW1lIGNvbnN0KTogVXNlIGFuIEFT
Q0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZWFyY2ggY29uc3QpOiBV
c2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFyay4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0
aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVy
U2lnbi4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KTogVXNlIHBhcnNlVUlu
dDE2LgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOiBDb2Rpbmcg
c3R5bGUgdHdlYWtzLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9u
SWZOZWNlc3NhcnkpOgorICAgICAgICBVc2UgY29udGFpbnMgaW5zdGVhZCBvZiByZXZlcnNlRmlu
ZCB0byBjaGVjayBmb3IgYSBwZXJpb2QgaW4gdGhlIGZpbGVuYW1lLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmxvYWQpOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRoQ29tcG9uZW50IGlzIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvSW50ZXJu
YWxQcm90b2NvbCk6IFVwZGF0ZWQgdG8gdXNlIG1ha2VTdHJpbmcgc2luY2UKKyAgICAgICAgc2V0
UHJvdG9jb2wgdGFrZXMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IFJlbmFtZWQgbV9wYXNzIHRvIG1fcGFzc3dvcmQK
KyAgICAgICAgYW5kIGNhbGwgcGFzc3dvcmQgaW5zdGVhZCBvZiBwYXNzLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlbW92ZUNyZWRlbnRpYWxzKTogVXNlIHJlbW92ZUNy
ZWRlbnRpYWxzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVS
TENvbm5lY3Rpb24pOiBVcGRhdGVkIGZvciBtX3Bhc3N3b3JkCisgICAgICAgIG5hbWUgY2hhbmdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCk6IFVw
ZGF0ZWQgZm9yIG1fcGFzc3dvcmQgYW5kCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlcy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2Vk
QXV0aGVudGljYXRpb24pOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUHJveHlTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUHJveHlTZXR0
aW5nczo6c2V0VXNlclBhc3MpOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVByb3h5VXJsKTogVXNlIGhhc0NyZWRlbnRpYWxzLCB1
cGRhdGVkIGZvciBwYXNzd29yZCBuYW1lIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxQcm94
eVNldHRpbmdzOjpwYXNzd29yZCBjb25zdCk6IFVwZGF0ZWQgZm9yIHBhc3N3b3JkIG5hbWUgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKTogVXBkYXRlZCBmb3IKKyAgICAgICAgbV9wYXNzd29yZCBuYW1l
IGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDcmVkZW50aWFs
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZCBhbmQKKyAgICAgICAgcGFzc3dvcmQgbmFtZSBj
aGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aW9uKTogVXBkYXRlZCBmb3IgbV9wYXNzd29yZAorICAgICAgICBhbmQgc2V0UGFzc3dvcmQg
bmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5k
UmVxdWVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhh
bmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjcmVhdGVTb3VwVVJJIGNvbnN0KTogVXBkYXRlZCBmb3Ig
cGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1VS
TFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cFVSSVRvVVJMKTogVXBkYXRlZCBmb3Ig
c2V0UGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTCk6IFVwZGF0ZWQgc2luY2Ug
bGFzdFBhdGhDb21wb25lbnQgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3Jl
OjpmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZSk6IERpdHRvLgorCisgICAgICAgICogc3R5bGUvU3R5bGVCdWls
ZGVyU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6Y3Jl
YXRlRmlsdGVyT3BlcmF0aW9ucyk6IFVwZGF0ZWQgc2luY2UKKyAgICAgICAgZnJhZ21lbnRJZGVu
dGlmaWVyIHJldHVybnMgYSBTdHJpbmdWaWV3LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJM
b2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJMb2NhdGlvbjo6cG9ydCBjb25z
dCk6IFN0cmVhbWxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9jYXRpb246OnBhdGhu
YW1lIGNvbnN0KTogVXNlIGFuIEFTQ0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckxvY2F0aW9uOjpzZWFyY2ggY29uc3QpOiBVc2UgcXVlcnlXaXRoTGVhZGluZ1F1ZXN0aW9uTWFy
ay4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpoYXNoIGNvbnN0KTogVXNlIGZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbi4KKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkpOgorICAgICAgICBVcGRhdGVkIGZvciBoYXNGcmFnbWVudElkZW50aWZpZXIgbmFt
ZSBjaGFuZ2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9wT3JpZ2luVVJMKTogU2lt
cGxpZmllZCBjb2RlIHRvIHNldCBwb3J0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luVVJMKTogRGl0dG8uCisK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6Om9wZW4pOiBVcGRhdGVkIGZvciBzZXRQYXNzd29yZCBuYW1lIGNoYW5nZS4K
KwogMjAyMC0wNC0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTnVsbHB0ciBjcmFzaCBpbiBvYmpjX21zZ1NlbmQgdW5kZXIgV2ViQ29yZTo6Z2VuZXJpY0Zh
bWlseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA0NDg4ZmNmYjNhYWE4OWJhNjdlY2U4ODNlYTY1MjAyNDAxZjE1NjAx
Li4wMzJkYjU1NzdjZDQ2OTdmMjFiYzJmMDFjZTQzZGJlMjYxMGI2MWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDg3IEBACisyMDIwLTA0LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIFVSTCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJz
dHJpbmdzIG9mIHRoZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW9uKTogVXNlIGhh
c0NyZWRlbnRpYWxzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5
SFRUUFNVcGdyYWRlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICBSZW1vdmUgdXNlIG9mIEFTQ0lJ
TGl0ZXJhbCBmb3Igc2V0UHJvdG9jb2wuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tDdXJsKTogVXBkYXRlZCBmb3IKKyAgICAgICAgcGFzc3dv
cmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKTogVXBkYXRlZAorICAgICAg
ICBmb3IgcGFzc3dvcmQgbmFtZSBjaGFuZ2UuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6IERpdHRvLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cCk6IFVwZGF0
ZWQgZm9yCisgICAgICAgIHBhc3N3b3JkIG5hbWUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGly
ZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnNo
b3VsZEFsbG93SFNUU1BvbGljeVNldHRpbmcgY29uc3QpOgorICAgICAgICBVc2UgIT0gdG8gY29t
cGFyZSBob3N0cywgcmF0aGVyIHRoYW4gaG9zdHNBcmVFcXVhbC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlIGNvbnN0
KToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgfHwgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIGFi
b3ZlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJM
Ojpob3N0IGNvbnN0KTogUmVtb3ZlZCB2YWxpZGl0eSBjaGVjazsgV1RGOjpVUkw6Omhvc3QKKyAg
ICAgICAgcmV0dXJucyBudWxsIGlmIHRoZSBVUkwgaXMgaW52YWxpZC4KKyAgICAgICAgKEFQSTo6
VVJMOjpwcm90b2NvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoQVBJOjpVUkw6OnBhdGggY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKEFQSTo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBjb25zdCk6
IERpdHRvLiBBbHNvIGFkZGVkIHRvU3RyaW5nCisgICAgICAgIHNpbmNlIFdURjo6VVJMOjpsYXN0
UGF0aENvbXBvbmVudCBub3cgcmV0dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2gpOiBVc2UgaGFzRnJhZ21lbnRJZGVudGlmaWVyLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2spOgorICAgICAg
ICBSZWZhY3RvcmVkIGEgYml0IGFuZCB1c2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aCBhbmQK
KyAgICAgICAgdXBkYXRlZCBzaW5jZSBsYXN0UGF0aENvbXBvbmVudCByZXR1cm5zIGEgU3RyaW5n
Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnBhdGhFeHRlbnNpb24pOiBVcGRhdGVkIHNpbmNlIGxhc3RQYXRo
Q29tcG9uZW50CisgICAgICAgIHJldHVybnMgYSBTdHJpbmdWaWV3LiBSZWZhY3RvcmVkIGEgbGl0
dGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk6CisgICAgICAgIFVzZSB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
IFVzZSAhPSB0byBjb21wYXJlIGhvc3RzLCByYXRoZXIgdGhhbiBob3N0c0FyZUVxdWFsLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Up
OiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwp
OgorICAgICAgICBVc2UgdHJ1bmNhdGVkRm9yVXNlQXNCYXNlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyk6Cisg
ICAgICAgIERvbid0IHVzZSBBU0NJSUxpdGVyYWwgZm9yIGFyZ3VtZW50IHRvIHNldFByb3RvY29s
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMpOgorICAgICAgICBVc2UgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aCwgYWxzbyByZWZhY3RvcmVkIGEgYml0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5zdGFsbFBE
RkRvY3VtZW50KTogVXBkYXRlZCBzaW5jZQorICAgICAgICBmcmFnbWVudElkZW50aWZpZXIgcmV0
dXJucyBhIFN0cmluZ1ZpZXcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZAorICAgICAgICB0aGUgaW1w
bGVtZW50YXRpb24gYSBiaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICBVcGRhdGVkIHNpbmNlIGxhc3RQ
YXRoQ29tcG9uZW50IHJldHVybnMgYSBTdHJpbmdWaWV3LgorCiAyMDIwLTA0LTI0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc29tZSBwb3N0
LXJlbmRlcmluZ1VwZGF0ZSBjb2RlIGludG8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDU4MmRmOTc2ZmIyNmU5OTM0NzI4Njg3MjY0MTViZGI2YTk3NWUxODEuLmVhNWUw
MjYzZDA1ZDA4ZjA0OTY4NTBlNmYxNzI3ZTM5ODc0N2I2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wNC0yMCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBVUkwgdG8gdXNlIFN0cmluZ1ZpZXcgd2hlbiBy
ZXR1cm5pbmcgc3Vic3RyaW5ncyBvZiB0aGUgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoc2hvdWxkVHJ5QXBwTGluayk6IENvbXBhcmUgaG9zdHMgd2l0aCA9
PSByYXRoZXIgdGhhbiB1c2luZyBob3N0c0FyZUVxdWFsLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRGb3JJbWFn
ZURhdGE6d2l0aFJlbGF0aXZlVVJMUGFydDphbmRNSU1FVHlwZTpdKToKKyAgICAgICAgVXBkYXRl
ZCBzaW5jZSBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCB0YWtlcyBhIFN0cmluZ1ZpZXcuIEFsc28g
dXNlIFJldGFpblB0cgorICAgICAgICBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGNhbGwgdG8gcmVs
ZWFzZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IF93ZWJfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmRU
eXBlOmltYWdlTUlNRVR5cGU6XSk6CisgICAgICAgIFVwZGF0ZWQgc2luY2UgZmFrZVVSTFdpdGhS
ZWxhdGl2ZVBhcnQgdGFrZXMgYSBTdHJpbmdWaWV3LiBObyBjb252ZXJzaW9uCisgICAgICAgIGRp
cmVjdGx5IGZyb20gTlNTdHJpbmcgdG8gU3RyaW5nVmlldywgc28gd2UgaGF2ZSB0byBleHBsaWNp
dGx5IHVzZSBhIFN0cmluZy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBf
ZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKTogVXBkYXRlCisgICAgICAgIHNpbmNlIHByb3Rv
Y29sSXMgdGFrZXMgYSBTdHJpbmdWaWV3LiBObyBjb252ZXJzaW9uIGRpcmVjdGx5IGZyb20KKyAg
ICAgICAgTlNTdHJpbmcgdG8gU3RyaW5nVmlldywgc28gd2UgaGF2ZSB0byBleHBsaWNpdGx5IHVz
ZSBhIFN0cmluZy4KKwogMjAyMC0wNC0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEplc3VzIENhbGxpbmcgYXBwIG5lZWRzIG1vcmUgV2Vi
U1FMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGFmYjMxNWFkZGYzODRhMWE0NDhm
Mzg4NmQ5NTI2NTY3Y2I1NDZkNC4uNDQxNTM4ZjljM2JiYTFkYzgzMjEzM2UwNmVkMTM0NDhhYjBl
ZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIw
LTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFVS
TCB0byB1c2UgU3RyaW5nVmlldyB3aGVuIHJldHVybmluZyBzdWJzdHJpbmdzIG9mIHRoZSBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6
UGx1Z2luRGF0YWJhc2UpOiBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZgorICAgICAgICBtX3BlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlSXNMb2FkZWQgdG8gdGhlIGNsYXNzIGRlZmluaXRpb24uCisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24gY29uc3Qp
OiBUYWtlIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Zmlu
ZFBsdWdpbik6IFVzZSBTdHJpbmdWaWV3LgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5oOiBDaGFuZ2VkIE1JTUVUeXBlRm9yRXh0ZW5zaW9uIHRvIHRha2UKKyAgICAgICAgYSBT
dHJpbmdWaWV3LiBUb29rIG91dCBzb21lIHVubmVlZGVkIGRlY2xhcmF0aW9ucy4gSW5pdGlhbGl6
ZWQKKyAgICAgICAgbV9wZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUlzTG9hZGVkIGhlcmUgaW4gdGhl
IGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29u
dGVudFR5cGUpOiBVc2UgU3RyaW5nVmlldyBhIGxpdHRsZSBtb3JlLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOiBTdHJlYW1saW5lZCB0aGUgaW1wbGVtZW50
YXRpb24gYSBiaXQuCisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6bG9va1VwSW5EaWN0
aW9uYXJ5KTogQWRkZWQgInVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlIi4KKwogMjAyMC0wNC0yMCAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgQ2xhc3Nl
cyBtYXJrZWQgZmluYWwgc2hvdWxkIG5vdCB1c2UgcHJvdGVjdGVkIGFjY2VzcyBzcGVjaWZpZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDYxMGQxYzQ2OGJiMjQwYjhjMzkyNzk1NTgyNzU4ZGJkZDI4ZmY1NTYuLjgxMmZh
NGNmNzA2OGJjODJhYzVhMzU1MTQwMzgxNTBhYzJmOGE2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MiwyNiAr
NDIsMTcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1z
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludmFsaWRQb3J0TnVtYmVyID0gMHhGRkZGOwotCi0v
LyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUg
c291cmNlIGNoYXJhY3RlcnMgYXJlCi0vLyBBU0NJSS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBt
dXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkCi0vLyBpbiB0
aGUgc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0
ZSB0aGUgcmVzdWx0Lgotc3RhdGljIHZvaWQgY29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjaGFyKiBkZXN0KQorLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBh
c3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KKy8vIFRoZSBkZXN0
aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUg
YWxsb3dlZCBpbiB0aGUKKy8vIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUg
dG8gbnVsbC10ZXJtaW5hdGUgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KK3N0YXRpYyB2b2lkIGNv
cHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdGluYXRpb24pCiB7Ci0gICAg
aWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNo
YXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwor
ICAgICAgICBhdXRvIHNvdXJjZSA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyBp
KyspCisgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNvdXJj
ZVtpXSk7CiAgICAgfQogfQogCkBAIC04MywxNiArNzQsMTMgQEAgdm9pZCBVUkw6OmludmFsaWRh
dGUoKQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUs
IGNvbnN0IFVSTFRleHRFbmNvZGluZyogZW5jb2RpbmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNl
cihyZWxhdGl2ZSwgYmFzZSwgZW5jb2RpbmcpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OworICAgICp0aGlzID0gVVJMUGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZykucmVzdWx0
KCk7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCitzdGF0aWMg
Ym9vbCBzaG91bGRUcmltRnJvbVVSTChVQ2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAgLy8gQnJvd3Nl
cnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAotICAgIC8v
IGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFy
IGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJv
bCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKKyAgICAvLyBJZ25vcmUgbGVhZGlu
Zy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCisgICAgcmV0dXJu
IGNoYXJhY3RlciA8PSAnICc7CiB9CiAKIFVSTCBVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CkBA
IC0xMDIsNDggKzkwLDQzIEBAIFVSTCBVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAor
U3RyaW5nVmlldyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWhh
c1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKICAgICBpZiAobV9zdHJpbmdbZW5k
XSA9PSAnLycpCiAgICAgICAgIC0tZW5kOwogCiAgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcu
cmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgaWYgKHN0YXJ0IDwgcGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVybiB7IH07CiAgICAg
KytzdGFydDsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0
YXJ0ICsgMSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhzdGFy
dCwgZW5kIC0gc3RhcnQgKyAxKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6OnByb3RvY29sKCkgY29u
c3QKIHsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIHJl
dHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV9zY2hlbWVFbmQpOwogfQog
CiBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiB7CisgICAgaWYgKCFtX2lzVmFsaWQpCisg
ICAgICAgIHJldHVybiB7IH07CisKICAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwog
ICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVu
ZCAtIHN0YXJ0KTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVtYmVyOwotICAgIGlmIChtX3N0
cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdCht
X3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwg
Jm9rKTsKLSAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
bV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAx
LCAmb2spOwotICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MTZfdD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBu
dW1iZXI7CisgICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/IHBhcnNlVUludDE2KFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxKSkgOiBX
VEY6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKQEAgLTE1
NSw5NCArMTM4LDEwMCBAQCBTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CiAKIFN0cmlu
ZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogewotICAgIFN0cmluZyByZXN1bHQg
PSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKKyAgICBp
ZiAoIWhhc0NyZWRlbnRpYWxzKCkpCisgICAgICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
MCwgcGF0aFN0YXJ0KCkpOwogCi0gICAgaWYgKG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCA+
IDApIHsKLSAgICAgICAgY29uc3QgaW50IGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24gPSAxOwotICAg
ICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0YXJ0LCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3Rh
cnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWduKTsKLSAgICB9CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFy
dCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhob3N0U3RhcnQoKSwg
cGF0aFN0YXJ0KCkgLSBob3N0U3RhcnQoKSkKKyAgICApOworfQogCi0gICAgcmV0dXJuIHJlc3Vs
dDsKK3N0YXRpYyBPcHRpb25hbDxMQ2hhcj4gZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmll
dyBpbnB1dCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoaW5k
ZXggKyAzID4gbGVuZ3RoIHx8IGlucHV0W2luZGV4XSAhPSAnJScpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgYXV0byBkaWdpdDEgPSBpbnB1dFtpbmRleCArIDFdOworICAgIGF1
dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAyXTsKKyAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChk
aWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gdG9BU0NJSUhleFZhbHVlKGRpZ2l0MSwgZGlnaXQyKTsKIH0K
IAogc3RhdGljIFN0cmluZyBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmlu
Z1ZpZXcgaW5wdXQpCiB7Ci0gICAgYXV0byBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwot
ICAgIGlmICghaW5wdXRMZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAg
IFZlY3RvcjxMQ2hhcj4gcGVyY2VudERlY29kZWQ7Ci0gICAgcGVyY2VudERlY29kZWQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShpbnB1dExlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGlucHV0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGlucHV0W2ldID09ICclJwotICAg
ICAgICAgICAgJiYgaW5wdXRMZW5ndGggPiAyCi0gICAgICAgICAgICAmJiBpIDwgaW5wdXRMZW5n
dGggLSAyCi0gICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKQotICAg
ICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAg
IHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSAr
IDFdLCBpbnB1dFtpICsgMl0pKTsKLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNl
CisgICAgQVNTRVJUKGlucHV0LmlzQWxsQVNDSUkoKSk7CisKKyAgICBhdXRvIGxlbmd0aCA9IGlu
cHV0Lmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPCAzIHx8ICFpbnB1dC5jb250YWlucygnJScp
KQorICAgICAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoKTsKKworICAgIFZlY3RvcjxMQ2hhciwg
NTEyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBwZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7
CisgICAgICAgIGlmIChhdXRvIGRlY29kZWRDaGFyYWN0ZXIgPSBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZShpbnB1dCwgaSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVj
a2VkQXBwZW5kKCpkZWNvZGVkQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGkgKz0gMzsKKyAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZChp
bnB1dFtpXSk7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBG
SVhNRTogSXMgVVRGLTggYWx3YXlzIHRoZSBjb3JyZWN0IGVuY29kaW5nPworICAgIC8vIEZJWE1F
OiBUaGlzIHJldHVybnMgYSBudWxsIHN0cmluZyB3aGVuIHdlIGVuY291bnRlciBhbiBpbnZhbGlk
IFVURi04IHNlcXVlbmNlLiBJcyB0aGF0IE9LPwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKIH0KIAogU3Ry
aW5nIFVSTDo6dXNlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNl
c0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0
LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1
ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29kZWRVc2VyKCkpOwogfQogCi1TdHJpbmcgVVJMOjpwYXNz
KCkgY29uc3QKK1N0cmluZyBVUkw6OnBhc3N3b3JkKCkgY29uc3QKIHsKLSAgICBpZiAobV9wYXNz
d29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0g
MSkpOworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKGVuY29k
ZWRQYXNzd29yZCgpKTsKIH0KIAotU3RyaW5nIFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAorU3Ry
aW5nVmlldyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJpbmcu
c3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7CisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5k
IC0gbV91c2VyU3RhcnQpOwogfQogCi1TdHJpbmcgVVJMOjplbmNvZGVkUGFzcygpIGNvbnN0CitT
dHJpbmdWaWV3IFVSTDo6ZW5jb2RlZFBhc3N3b3JkKCkgY29uc3QKIHsKICAgICBpZiAobV9wYXNz
d29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsg
MSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworICAgIHJldHVybiBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNl
ckVuZCAtIDEpOwogfQogCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAor
U3RyaW5nVmlldyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKCFo
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSk7Ci19CisgICAgICAgIHJl
dHVybiB7IH07CiAKLWJvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgIT0gbV9xdWVyeUVuZDsK
KyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAx
KTsKIH0KIAotU3RyaW5nIFVSTDo6YmFzZUFzU3RyaW5nKCkgY29uc3QKK1VSTCBVUkw6OnRydW5j
YXRlZEZvclVzZUFzQmFzZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9w
YXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1fc3RyaW5nLmxlZnQo
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gpKTsKIH0KIAogI2lmICFVU0UoQ0YpCiAKIFN0cmluZyBVUkw6
OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIHsKLSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2Nh
bEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmICghaXNMb2NhbEZpbGUo
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcocGF0aCgpKSk7CisgICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwocGF0aCgpKTsKIH0KIAogI2VuZGlmCiAKLSNpZmRl
ZiBOREVCVUcKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIGlubGluZSB2b2lkIGFzc2Vy
dFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcpCiB7CkBAIC0zMTQsNyArMzAzLDcgQEAgYm9vbCBp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2Nv
bCkKIAogYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0CiB7
Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyB7IHByb3RvY29sIH0pOworICAg
IGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKIAogICAgIC8vIEphdmFTY3JpcHQgVVJM
cyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRlY2lkZXMg
dGhleSBhcmUgaW52YWxpZC4KICAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2
YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIApAQCAtMzQ5LDczICszMzgsNjUgQEAg
Ym9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFVSTDo6cXVlcnkoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6
OnF1ZXJ5KCkgY29uc3QKIHsKICAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQg
KyAxKSk7IAorICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRo
RW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7CiB9CiAKIFN0cmluZ1ZpZXcg
VVJMOjpwYXRoKCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
cG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKHBhdGhTdGFydCgpLCBtX3BhdGhFbmQgLSBwYXRoU3RhcnQoKSk7CiB9CiAKLWJvb2wgVVJM
OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCitib29sIFVSTDo6c2V0UHJvdG9jb2woU3Ry
aW5nVmlldyBuZXdQcm90b2NvbCkKIHsKICAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZl
cnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgotICAgIHNpemVfdCBzZXBhcmF0b3JQb3NpdGlv
biA9IHMuZmluZCgnOicpOwotICAgIFN0cmluZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5nKDAs
IHNlcGFyYXRvclBvc2l0aW9uKTsKLSAgICBhdXRvIGNhbm9uaWNhbGl6ZWQgPSBVUkxQYXJzZXI6
Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sKTsKLSAgICBpZiAoIWNhbm9uaWNh
bGl6ZWQpCisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1Byb3RvY29sLnN1YnN0cmlu
ZygwLCBuZXdQcm90b2NvbC5maW5kKCc6JykpOworICAgIGF1dG8gbmV3UHJvdG9jb2xDYW5vbmlj
YWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbFBy
ZWZpeC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIGlmICghbmV3UHJvdG9jb2xDYW5v
bmljYWxpemVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1faXNWYWxpZCkg
ewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6
IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAg
IHBhcnNlKG1ha2VTdHJpbmcoKm5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCwgJzonLCBtX3N0cmlu
ZykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoKG1fcGFzc3dvcmRF
bmQgIT0gbV91c2VyU3RhcnQgfHwgcG9ydCgpKSAmJiAqY2Fub25pY2FsaXplZCA9PSAiZmlsZSIp
CisgICAgaWYgKChtX3Bhc3N3b3JkRW5kICE9IG1fdXNlclN0YXJ0IHx8IHBvcnQoKSkgJiYgKm5l
d1Byb3RvY29sQ2Fub25pY2FsaXplZCA9PSAiZmlsZSIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKGlzTG9jYWxGaWxlKCkgJiYgaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6
ZWQsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKKyAgICBwYXJzZShtYWtlU3RyaW5nKCpuZXdQcm90b2NvbENhbm9uaWNhbGl6
ZWQsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNBbGxBU0NJSShTdHJpbmdWaWV3IHN0cmlu
ZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAg
IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcubGVuZ3RoKCkpOwotfQotICAgIAogLy8gQXBwZW5kcyB0aGUgcHVueWNvZGVkIGhvc3RuYW1l
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHN0cmluZyBhbmQgbGVuZ3RoIHRvCiAvLyB0aGUgb3V0
cHV0IGJ1ZmZlci4gVGhlIHJlc3VsdCB3aWxsIG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQuCiAvLyBS
ZXR1cm4gdmFsdWUgb2YgZmFsc2UgbWVhbnMgZXJyb3IgaW4gZW5jb2RpbmcuCi1zdGF0aWMgYm9v
bCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBz
dHJpbmcpCitzdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVmVjdG9yPFVDaGFyLCA1
MTI+JiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIC8vIE5lZWRzIHRvIGJlIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgogICAgIC8vIEZvciBob3N0IG5h
bWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMg
YWxtb3N0IGNlcnRhaW5seSBPSy4KICAgICBjb25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxl
bmd0aCA9IDIwNDg7Ci0gICAgCi0gICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVm
ZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3RyaW5nKSkgeworCisgICAgaWYgKHN0cmluZy5sZW5n
dGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IHN0cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAg
ICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIAorCiAgICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJMZW5ndGhd
OwogICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CiAgICAgVUlETkFJbmZvIHBy
b2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKICAgICBpbnQzMl90IG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJSSgmVVJMUGFyc2VyOjppbnRl
cm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwKICAgICAgICAgc3RyaW5nLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBob3N0bmFt
ZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3IpOwotICAgIAorCiAgICAg
aWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgewogICAg
ICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MjgsMTAxICs0MDksODYgQEAgdW5zaWduZWQg
VVJMOjpob3N0U3RhcnQoKSBjb25zdAogICAgIHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBtX3Vz
ZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7CiB9CiAKLXZvaWQg
VVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKK3Vuc2lnbmVkIFVSTDo6Y3JlZGVudGlhbHNF
bmQoKSBjb25zdAoreworICAgIC8vIEluY2x1ZGUgJ0AnIHRvbyBpZiB3ZSBoYXZlIGl0LgorICAg
IHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7CisgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgIGVuZCArPSAxOworICAgIHJldHVybiBl
bmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0KFN0cmluZ1ZpZXcgbmV3SG9zdCkKIHsKICAgICBp
ZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjb2xvbkluZGV4ID0g
cy5maW5kKCc6Jyk7Ci0gICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQpCisgICAgaWYgKG5l
d0hvc3QuY29udGFpbnMoJzonKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVUNoYXJCdWZmZXIg
ZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRI
b3N0TmFtZSwgcykpCisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVuY29kZWRIb3N0TmFtZTsKKyAg
ICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIG5ld0hvc3QpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2Vy
U3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0gICAgCi0g
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxl
ZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXco
ZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQpKTsKIAotICAgIFVSTFBh
cnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVt
ZUVuZCArIDE7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChob3N0U3RhcnQoKSksCisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8i
IDogIiIsCisgICAgICAgIFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2Rl
ZEhvc3ROYW1lLnNpemUoKSksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhtX2hvc3RFbmQpCisgICAgKSk7CiB9CiAKLXZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAg
ICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRQb3J0KHVuc2ln
bmVkIHNob3J0IGkpCit2b2lkIFVSTDo6c2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkK
IHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBjb2xv
bk5lZWRlZCA9ICFtX3BvcnRMZW5ndGg7Ci0gICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gKGNvbG9u
TmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFy
c2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChwb3J0U3RhcnQpLCAoY29s
b25OZWVkZWQgPyAiOiIgOiAiIiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotdm9pZCBVUkw6OnJlbW92ZUhvc3RBbmRQb3J0
KCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKKyAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAgcmVt
b3ZlKG1faG9zdEVuZCwgbV9wb3J0TGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
aG9zdCgpLmlzRW1wdHkoKSkKLSAgICAgICAgc2V0SG9zdCh7IH0pOwotICAgIHJlbW92ZVBvcnQo
KTsKKyAgICB9CisKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksCisgICAgICAgICc6JywKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KCpwb3J0KSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKHBhdGhTdGFydCgpKQorICAgICkpOwogfQogCi12b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQo
Y29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChTdHJp
bmdWaWV3IGhvc3RBbmRQb3J0KQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdW
aWV3IHBvcnQ7Ci0gICAgCisgICAgYXV0byBob3N0TmFtZSA9IGhvc3RBbmRQb3J0OworICAgIFN0
cmluZ1ZpZXcgcG9ydFN0cmluZzsKICAgICBhdXRvIGNvbG9uSW5kZXggPSBob3N0TmFtZS5maW5k
KCc6Jyk7CiAgICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgcG9ydCA9
IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7Ci0gICAgICAgIGJvb2wgb2s7Ci0g
ICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0ludFN0cmljdChvayk7Ci0gICAgICAgIGlmICgh
b2sgfHwgcG9ydEludCA8IDApCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBvcnRTdHJp
bmcgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwogICAgICAgICBob3N0TmFt
ZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICAgICAgaWYgKCFwYXJz
ZVVJbnQxNihwb3J0U3RyaW5nKSkKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSB7IH07CiAgICAg
fQotCi0gICAgaWYgKGhvc3ROYW1lLmlzRW1wdHkoKSkKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0
eSgpKSB7CisgICAgICAgIHJlbW92ZShob3N0U3RhcnQoKSwgcGF0aFN0YXJ0KCkgLSBob3N0U3Rh
cnQoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVk
SG9zdE5hbWU7CisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVuY29kZWRIb3N0TmFtZTsKICAgICBp
ZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0KLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3Rh
cnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9z
dE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwb3J0Lmlz
RW1wdHkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjoiKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQocG9ydCk7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKTsKLQotICAg
IFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBt
X3NjaGVtZUVuZCArIDE7CisgICAgcGFyc2UobWFrZVN0cmluZygKKyAgICAgICAgU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChob3N0U3RhcnQoKSksCisgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQg
PyAiLy8iIDogIiIsCisgICAgICAgIFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwg
ZW5jb2RlZEhvc3ROYW1lLnNpemUoKSksCisgICAgICAgIHBvcnRTdHJpbmcuaXNFbXB0eSgpID8g
IiIgOiAiOiIsCisgICAgICAgIHBvcnRTdHJpbmcsCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhwYXRoU3RhcnQoKSkKKyAgICApKTsKIH0KIAogc3RhdGljIFN0cmluZyBw
ZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRF
bmNvZGUpKFVDaGFyKSkKQEAgLTU1MSw4MSArNTE3LDg5IEBAIHN0YXRpYyBTdHJpbmcgcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2Rl
KShVCiAgICAgcmV0dXJuIGlucHV0OwogfQogCi12b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJp
bmcmIHVzZXIpCit2b2lkIFVSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAg
aWYgKCFtX2lzVmFsaWQpCisgICAgKnRoaXMgPSBVUkxQYXJzZXIoc3RyaW5nKS5yZXN1bHQoKTsK
K30KKwordm9pZCBVUkw6OnJlbW92ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHN0YXJ0IDwg
bV9zdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VSVChsZW5ndGggPD0gbV9zdHJpbmcubGVuZ3Ro
KCkgLSBzdGFydCk7CisKKyAgICBhdXRvIHN0cmluZ0FmdGVyUmVtb3ZhbCA9IFdURk1vdmUobV9z
dHJpbmcpOworICAgIHN0cmluZ0FmdGVyUmVtb3ZhbC5yZW1vdmUoc3RhcnQsIGxlbmd0aCk7Cisg
ICAgcGFyc2Uoc3RyaW5nQWZ0ZXJSZW1vdmFsKTsKK30KIAotICAgIC8vIEZJWE1FOiBOb24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2Uo
KSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBq
dXN0IHRoZSB1c2VyIGxvZ2luLgordm9pZCBVUkw6OnNldFVzZXIoU3RyaW5nVmlldyBuZXdVc2Vy
KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25l
ZCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBT
dHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHVzZXIsIFVSTFBhcnNlcjo6aXNJblVz
ZXJJbmZvRW5jb2RlU2V0KTsKLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQotICAgICAgICAgICAgdSA9ICIvLyIgKyB1Owot
ICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZlIG9uZSBiZWZvcmUuCi0gICAgICAg
IGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmlu
Z1tlbmRdICE9ICdAJykpCi0gICAgICAgICAgICB1LmFwcGVuZCgnQCcpOwotICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJT
dGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlmICghbmV3VXNlci5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVF
bmQgKyAxOworICAgICAgICBib29sIG5lZWRTZXBhcmF0b3IgPSBlbmQgPT0gbV9ob3N0RW5kIHx8
IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJyk7CisgICAgICAg
IHBhcnNlKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlclN0YXJ0KSwKKyAgICAgICAgICAgIHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIs
CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhuZXdVc2VyLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpLAorICAgICAg
ICAgICAgbmVlZFNlcGFyYXRvciA/ICJAIiA6ICIiLAorICAgICAgICAgICAgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkKKyAgICAgICAgKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3Jk
LgogICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9z
dEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwotICAg
ICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNh
c2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgfQorICAgICAgICByZW1vdmUobV91c2VyU3RhcnQsIGVuZCAtIG1f
dXNlclN0YXJ0KTsKICAgICB9CiB9CiAKLXZvaWQgVVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQpCit2b2lkIFVSTDo6c2V0UGFzc3dvcmQoU3RyaW5nVmlldyBuZXdQYXNzd29yZCkK
IHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQg
ZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAg
ICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBV
UkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3Vz
ZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAg
ICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNl
IHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RF
bmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgaWYgKCFuZXdQYXNzd29yZC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYm9vbCBuZWVkTGVhZGluZ1NsYXNoZXMgPSBtX3VzZXJFbmQgPT0g
bV9zY2hlbWVFbmQgKyAxOworICAgICAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICAgICAg
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLAorICAgICAgICAgICAgbmVlZExl
YWRpbmdTbGFzaGVzID8gIi8vOiIgOiAiOiIsCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhuZXdQYXNzd29yZC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KSwKKyAgICAgICAgICAgICdAJywKKyAgICAgICAgICAgIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhjcmVkZW50aWFsc0VuZCgpKQorICAgICAgICAp
KTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5l
aXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3Vz
ZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAg
ICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRo
ZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEg
Y2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgewotICAgICAgICAgICAgVVJM
UGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2Vy
RW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGVu
ZCA9IG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCA/IGNyZWRlbnRpYWxzRW5kKCkgOiBtX3Bhc3N3
b3JkRW5kOworICAgICAgICByZW1vdmUobV91c2VyRW5kLCBlbmQgLSBtX3VzZXJFbmQpOwogICAg
IH0KIH0KIAordm9pZCBVUkw6OnJlbW92ZUNyZWRlbnRpYWxzKCkKK3sKKyAgICBpZiAoIW1faXNW
YWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVtb3ZlKG1fdXNlclN0YXJ0LCBjcmVkZW50
aWFsc0VuZCgpIC0gbV91c2VyU3RhcnQpOworfQorCiB2b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVu
dGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IE9wdGltaXplIHRoZSBjYXNlIHdoZXJlIHRo
ZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0byBiZSBlcXVhbCB0byB3aGF0IHdhcyBwYXNz
ZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJlY3QgdG8gZG8gdGhpcyB3aXRob3V0IGVuY29k
aW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hhcmFjdGVycz8KLSAgICAqdGhpcyA9IFVSTFBh
cnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7IG1fc3RyaW5nIH0uc3Vic3RyaW5nKDAsIG1f
cXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0ucmVzdWx0KCk7CisgICAgcGFyc2UobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZp
ZXIpKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCiB7Ci0gICAg
aWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX3F1ZXJ5RW5kKTsKKyAgICBpZiAo
IW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9pc1ZhbGlkICYm
IG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZCkKLSAgICAgICAgbV9zdHJpbmcgPSBtX3N0
cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworCisgICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1f
cXVlcnlFbmQpOwogfQogCiB2b2lkIFVSTDo6cmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZp
ZXIoKQpAQCAtNjM3LDYyICs2MTEsNjIgQEAgdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21l
bnRJZGVudGlmaWVyKCkKICAgICBtX3F1ZXJ5RW5kID0gbV9wYXRoRW5kOwogfQogCi12b2lkIFVS
TDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVyeSkKK3ZvaWQgVVJMOjpzZXRRdWVyeShTdHJp
bmdWaWV3IG5ld1F1ZXJ5KQogeworICAgIC8vIEZJWE1FOiBDb25zaWRlciByZW5hbWluZyB0aGlz
IGZ1bmN0aW9uIHRvIHNldEVuY29kZWRRdWVyeSBhbmQvb3IgY2FsbGluZyBwZXJjZW50RW5jb2Rl
Q2hhcmFjdGVycyB0aGUgd2F5IHNldFBhdGggZG9lcy4KKyAgICAvLyBodHRwczovL3dlYmtpdC5v
cmcvYi8xNjExNzYKKwogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQg
YW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcg
ZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBh
Y2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93
ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0g
IT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVy
eSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCks
IHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQorICAgIHBhcnNlKG1ha2VTdHJp
bmcoCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwKKyAgICAg
ICAgKCFuZXdRdWVyeS5zdGFydHNXaXRoKCc/JykgJiYgIW5ld1F1ZXJ5LmlzTnVsbCgpKSA/ICI/
IiA6ICIiLAorICAgICAgICBuZXdRdWVyeSwKKyAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fcXVlcnlFbmQpCisgICAgKSk7Cit9CiAKK3N0YXRpYyBTdHJpbmcgZXNjYXBl
UGF0aFdpdGhvdXRDb3B5aW5nKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHF1ZXN0aW9u
TWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJu
IGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIHJldHVy
biBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXRoLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwg
cXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKTsKIH0KIAotdm9pZCBVUkw6OnNldFBhdGgoY29uc3Qg
U3RyaW5nJiBzKQordm9pZCBVUkw6OnNldFBhdGgoU3RyaW5nVmlldyBwYXRoKQogewogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgcGF0aCA9IHM7Ci0g
ICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAgICBwYXRoID0g
Ii8iICsgcGF0aDsKKyAgICBwYXJzZShtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KHBhdGhTdGFydCgpKSwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykg
PyAiIiA6ICIvIiwKKyAgICAgICAgZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpLAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKQorICAgICkpOwor
fQogCi0gICAgYXV0byBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIgY2hhcmFj
dGVyKSB7Ci0gICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3RlciA9PSAn
Iyc7Ci0gICAgfTsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OworU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhvdXRRdWVyeU9yRnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5n
OworCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocGF0aEVuZCgpKTsKIH0K
IAotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29u
c3QgVVJMJiBiKQorU3RyaW5nVmlldyBVUkw6OnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlF
bmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAg
ICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAg
IHJldHVybiBtX3N0cmluZzsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fcXVlcnlFbmQpOwogfQogCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewotICAgIGlmIChhLnBhdGhFbmQo
KSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBh
dGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVu
ZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBhLnN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKSA9PSBiLnN0cmluZ1dpdGhv
dXRGcmFnbWVudElkZW50aWZpZXIoKTsKIH0KIAogYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBAIC03MjUsMjUgKzY5OSwxMCBAQCBi
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYg
YSwgY29uc3QgVVJMJiBiKQorYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nVmlldyBk
b21haW4pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0YXJ0KCk7
Ci0gICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAtIGhvc3RTdGFydEE7Ci0g
ICAgdW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgdW5zaWduZWQgaG9z
dExlbmd0aEIgPSBiLm1faG9zdEVuZCAtIGhvc3RTdGFydEI7Ci0gICAgaWYgKGhvc3RMZW5ndGhB
ICE9IGhvc3RMZW5ndGhCKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmco
KVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgLy8g
RklYTUU6IENvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGFuIGFwcHJvcHJpYXRlIHBsYWNlIGluIFdl
YkNvcmUncyBwbHVnLWluIGNvZGU7IGRvbid0IHdhbnQgcGVvcGxlIHRlbXB0ZWQgdG8gdXNlIHRo
aXMgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbi4KIAotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21h
aW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17CiAgICAgaWYgKGlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc2MCw2ICs3MTksNyBAQCBib29sIFVSTDo6aXNNYXRj
aGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKICAgICByZXR1cm4gaG9zdC5s
ZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWlu
Lmxlbmd0aCgpIC0gMV0gPT0gJy4nOwogfQogCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgc28gaXQn
cyBjbGVhciB0aGF0IGl0IGRvZXMgdGhlIGFwcHJvcHJpYXRlIGVzY2FwaW5nIGZvciBVUkwgcXVl
cnkgZmllbGQgdmFsdWVzLgogU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29u
c3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICByZXR1cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMo
aW5wdXQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKQEAgLTc4MSw0MSArNzQx
LDM0IEBAIHZvaWQgVVJMOjpjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikg
Y29uc3QKICAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KLWJvb2wgcHJvdG9jb2xJc0ludGVybmFsKGNvbnN0
IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQorc3RhdGljIGJvb2wgcHJv
dG9jb2xJc0ludGVybmFsKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
IHsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgeyBwcm90b2NvbCB9
KTsKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CiAgICAgYm9vbCBpc0xlYWRp
bmcgPSB0cnVlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGogPSAwOyB1cmxbaV07ICsraSkg
ewotICAgICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0
ZXJzLgotICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRyaW1Gcm9tVVJMKHVybFtpXSkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7Ci0KLSAg
ICAgICAgLy8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCi0gICAgICAgIGlmICh1cmxbaV0g
PT0gJ1x0JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0gJ1xuJykKLSAgICAgICAgICAg
IGNvbnRpbnVlOworICAgIGZvciAoYXV0byBjb2RlVW5pdCA6IHN0cmluZy5jb2RlVW5pdHMoKSkg
eworICAgICAgICBpZiAoaXNMZWFkaW5nKSB7CisgICAgICAgICAgICAvLyBTa2lwIGxlYWRpbmcg
d2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgaWYgKHNob3Vs
ZFRyaW1Gcm9tVVJMKGNvZGVVbml0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gU2tpcCB0YWJzIGFuZCBuZXdsaW5lcyBldmVuIGxhdGVyIGluIHRoZSBwcm90b2NvbC4KKyAg
ICAgICAgICAgIGlmIChjb2RlVW5pdCA9PSAnXHQnIHx8IGNvZGVVbml0ID09ICdccicgfHwgY29k
ZVVuaXQgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCi0g
ICAgICAgIGlmICghcHJvdG9jb2xbal0pCi0gICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6
JzsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFtpXSwgcHJvdG9j
b2xbal0pKQorICAgICAgICBjaGFyIGV4cGVjdGVkQ2hhcmFjdGVyID0gKnByb3RvY29sKys7Cisg
ICAgICAgIGlmICghZXhwZWN0ZWRDaGFyYWN0ZXIpCisgICAgICAgICAgICByZXR1cm4gY29kZVVu
aXQgPT0gJzonOworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY29kZVVu
aXQsIGV4cGVjdGVkQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICArK2o7CiAgICAgfQotICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9v
bCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKQorYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKIHsKLSAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90
b2NvbCk7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsK
IH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTgyOSwxMSArNzgyLDE4IEBAIHZvaWQgVVJMOjpwcmlu
dCgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0
CiB7Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAgICByZWZlcnJlci5zZXRVc2VyKFN0cmlu
ZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBtX3N0cmluZzsKKworICAgIHVuc2ln
bmVkIGVuZCA9IGNyZWRlbnRpYWxzRW5kKCk7CisKKyAgICBpZiAobV91c2VyU3RhcnQgPT0gZW5k
ICYmIG1fcXVlcnlFbmQgPT0gbV9zdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBtX3N0
cmluZzsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kIC0gZW5kKQorICAgICk7CiB9CiAKIGJvb2wg
VVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0CkBAIC04NDUsMTcgKzgwNSwxMiBAQCBib29sIFVSTDo6
aXNMb2NhbEZpbGUoKSBjb25zdAogICAgIHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7CiB9CiAK
LWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpCitib29sIHByb3Rv
Y29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworICAgIHJldHVybiBwcm90b2NvbElzSW50
ZXJuYWwoc3RyaW5nLCAiamF2YXNjcmlwdCIpOwogfQogCi1ib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgdXJsKQotewotICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJs
LCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3Qg
U3RyaW5nJiB1cmwpCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwp
CiB7CiAgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CiAgICAgLy8gRG8gdGhlIGNvbXBh
cmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KQEAgLTg2OSwxMyArODI0
LDEzIEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCkKIAog
Y29uc3QgVVJMJiBhYm91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VVJMPiBzdGF0aWNCbGFua1VSTChVUkwoKSwgImFib3V0OmJsYW5rIik7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayJfcyk7
CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCiBjb25zdCBVUkwmIGFib3V0U3JjRG9j
VVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNBYm91dFNyY0Rv
Y1VSTChVUkwoKSwgImFib3V0OnNyY2RvYyIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxV
Ukw+IHN0YXRpY0Fib3V0U3JjRG9jVVJMKFVSTCgpLCAiYWJvdXQ6c3JjZG9jIl9zKTsKICAgICBy
ZXR1cm4gc3RhdGljQWJvdXRTcmNEb2NVUkw7CiB9CiAKQEAgLTk2NCw3ICs5MTksNiBAQCBib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wg
W0FwcGxlIGFkZGl0aW9uXQogICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlv
bl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFs
aWQgcG9ydCBudW1iZXJzCiAgICAgfTsKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0
aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgpAQCAtOTgzLDE1ICs5MzcsMTUgQEAgYm9v
bCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQorU3RyaW5nIG1pbWVU
eXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKQogewotICAgIEFTU0VSVChwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKKyAgICBBU1NFUlQocHJvdG9jb2xJc0ludGVybmFs
KGRhdGFVUkwsICJkYXRhIikpOwogCiAgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVo
YXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0
ZXI/Ci0gICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29s
b24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KLSAgICBhdXRvIGluZGV4
ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICAvLyBDdXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJl
YWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2U7IHNob3VsZCBhZGQgYSB0ZXN0LgorICAg
IGF1dG8gaW5kZXggPSBkYXRhVVJMLmZpbmQoJzsnLCA1KTsKICAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywnLCA1KTsKKyAgICAgICAgaW5kZXgg
PSBkYXRhVVJMLmZpbmQoJywnLCA1KTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBp
dCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgogICAgICAg
ICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29t
ZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KQEAgLTEw
MDAsMjUgKzk1NCw0NSBAQCBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCkKICAgICBpZiAoaW5kZXggPT0gNSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9z
OwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBp
bmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIGRhdGFVUkwu
c3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAog
U3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0
aCkgY29uc3QKIHsKLSAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gc3RyaW5nKCk7CisgICAgaWYgKG1fc3RyaW5nLmxlbmd0aCgpIDw9IGxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChsZW5ndGggLyAyIC0gMSksICIuLi4iLCBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5yaWdodChsZW5ndGggLyAyIC0gMikpOworfQorCitVUkwgVVJMOjpmYWtlVVJMV2l0
aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkKK3sKKyAgICByZXR1cm4gVVJM
KFVSTCgpLCBtYWtlU3RyaW5nKCJ3ZWJraXQtZmFrZS11cmw6Ly8iLCBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCksICcvJywgcmVsYXRpdmVQYXJ0KSk7Cit9CiAKLSAgICByZXR1cm4gc3RyaW5n
KCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAv
IDIgLSAyKTsKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoU3RyaW5nVmlldyBw
YXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoCisgICAgICAgICJmaWxl
Oi8vIiwKKyAgICAgICAgcGF0aC5zdGFydHNXaXRoKCcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAg
ZXNjYXBlUGF0aFdpdGhvdXRDb3B5aW5nKHBhdGgpCisgICAgKSk7CiB9CiAKLVVSTCBVUkw6OmZh
a2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQorU3RyaW5n
VmlldyBVUkw6OnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmsoKSBjb25zdAogewotICAgIHJl
dHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKKyAgICBpZiAobV9xdWVyeUVuZCA8PSBt
X3BhdGhFbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCwgbV9xdWVyeUVuZCAtIG1fcGF0aEVuZCk7CiB9
CiAKLVVSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK1N0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJl
clNpZ24oKSBjb25zdAogewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxl
UGF0aCk7CisgICAgaWYgKCFtX2lzVmFsaWQgfHwgbV9zdHJpbmcubGVuZ3RoKCkgPD0gbV9xdWVy
eUVuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCk7CiB9CiAKIGJvb2wgVVJMOjppc0Fib3V0Qmxhbmso
KSBjb25zdApAQCAtMTAzOCw2ICsxMDEyLDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoU09VUCkKKwogc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKICAgICBhdXRvIGNvdW50ID0gMDsKQEAgLTExMjQsMTEgKzEwOTksOSBAQCBzdGF0aWMg
Ym9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogCiBib29sIFVSTDo6aG9zdElz
SVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKIHsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0
dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7CisgICAgcmV0dXJuIGhvc3QuY29udGFpbnMoJzonKSA/
IGlzSVB2NkFkZHJlc3MoaG9zdCkgOiBpc0lQdjRBZGRyZXNzKGhvc3QpOwogfQorCiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBi
L1NvdXJjZS9XVEYvd3RmL1VSTC5oCmluZGV4IDk1YWY0YTNiNDdlMDg4N2Y1YTJhZWEwMWExMTM3
OWJiYmQxMWM2ZmYuLjQyZWMxZmI5ZWMzN2ViODMxM2Q2OTMwMTk1N2E0NTE5MDYxMGIzZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDQ3ICsz
OCwzOSBAQCBPQkpDX0NMQVNTIE5TVVJMOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgeworCiBj
bGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAg
IHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH0KIH07CiAKLXN0cnVjdCBVUkxI
YXNoOwotCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHsKK2NsYXNzIFVSTCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gR2VuZXJhdGVzIGEgVVJM
IHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCiAgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7
IH0KIAotICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDog
bV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CisgICAgZXhwbGljaXQgVVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpOworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICAvLyBSZXNvbHZlcyB0
aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhl
CiAgICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFy
YWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGlj
aCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcwotICAgIC8vIGFi
c29sdXRlLgotICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBh
bHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCi0gICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQg
d291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcwotICAgIC8vIHRo
ZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgotICAgIFVSTChj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNv
ZGluZyogPSBudWxscHRyKTsKKyAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRo
ZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhYnNvbHV0ZS4KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIFVSTCBm
YWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgVVJMIGZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChTdHJpbmdWaWV3KTsKIAotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBj
b25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJt
b25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0
eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0
cmluZyBjb25zdHJ1Y3Rvci4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OwogCiAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhl
bHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhlcgogICAgIC8vIHRo
cmVhZC4gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFi
bGUsIHRoZXJlJ3MKICAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0
ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBVUkwgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVSTCBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CkBAIC04OSwxMjIgKzgxLDEyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0
KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQogCiAgICAgYm9vbCBjYW5TZXRQ
YXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlz
SGllcmFyY2hpY2FsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIaWVy
YXJjaGljYWwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKIAot
ICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3Ro
ID0gMTAyNCkgY29uc3Q7Ci0KLSAgICBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7Ci0gICAg
U3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBj
b25zdDsKLSAgICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBTdHJpbmcgcHJvdG9j
b2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHBhc3MoKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsKLSAgICBTdHJp
bmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKLSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsK
LSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzd29y
ZCgpLCBlbmNvZGVkVXNlcigpIGFuZCBlbmNvZGVkUGFzc3dvcmQoKSBkb24ndCBkZWNvZGUgZXNj
YXBlIHNlcXVlbmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91
bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3Rl
cnMuCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IGVuY29kZWRVc2VyKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZW5jb2RlZFBhc3N3b3JkKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nVmlldyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3IHF1ZXJ5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmlldyBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJr
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVu
dGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZ1ZpZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdDsKKyAgICBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9y
dCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaG9zdEFuZFBvcnQoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVzZXIoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFVSTCB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKSBjb25zdDsKIAotICAgIGJvb2wg
aGFzVXNlcm5hbWUoKSBjb25zdDsKLSAgICBib29sIGhhc1Bhc3N3b3JkKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNRdWVyeSgpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnQoKSBjb25zdDsKKyAg
ICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwogICAgIGJvb2wgaGFzUGF0aCgp
IGNvbnN0OwogCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlv
bnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNlc3Nh
cnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3Qg
ZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0Owot
ICAgIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgU3RyaW5nIGJhc2VBc1N0cmlu
ZygpIGNvbnN0OwotCi0gICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNDcmVkZW50aWFscygpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
dXJyZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQogICAgIC8vIHRl
cm1pbmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2Uu
Ci0gICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICBib29sIHByb3Rv
Y29sSXMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJv
dG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIHByb3RvY29sSXNCbG9iKCkg
Y29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElz
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJv
dG9jb2xJc0Fib3V0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xJc0Fib3V0KCkgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3Q7Ci0gICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CiAKLSAgICBib29sIGlzQWJvdXRC
bGFuaygpIGNvbnN0OwotICAgIGJvb2wgaXNBYm91dFNyY0RvYygpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGlzQWJvdXRCbGFuaygpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25zdDsKIAotICAgIGJvb2wgaXNNYXRjaGlu
Z0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc01hdGNoaW5nRG9tYWluKFN0cmluZ1ZpZXcpIGNvbnN0OwogCi0gICAgYm9vbCBzZXRQcm90
b2NvbChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0UHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdChTdHJpbmdWaWV3KTsKIAotICAgIHZvaWQg
cmVtb3ZlUG9ydCgpOwotICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UG9ydChPcHRpb25hbDx1aW50MTZfdD4pOwogCiAgICAg
Ly8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9pZCBz
ZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlbW92ZUhvc3RBbmRQb3J0
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SG9zdEFuZFBvcnQoU3RyaW5nVmll
dyk7CiAKLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNz
KGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVzZXIoU3Ry
aW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UGFzc3dvcmQoU3RyaW5n
Vmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsK
IAotICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJM
cywgdGhlIHJlc3VsdGluZyBwYXRoCi0gICAgLy8gd2lsbCBiZSAiLyIuCi0gICAgdm9pZCBzZXRQ
YXRoKGNvbnN0IFN0cmluZyYpOworICAgIC8vIElmIHlvdSBwYXNzIGFuIGVtcHR5IHBhdGggZm9y
IEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgYmUgIi8iLgorICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBhdGgoU3RyaW5nVmlldyk7CiAKICAgICAvLyBU
aGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUg
d2lsbCBiZSBhZGRlZAogICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBl
bXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90
aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgot
ICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0UXVlcnkoU3RyaW5nVmlldyk7CiAKLSAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRp
ZmllcihTdHJpbmdWaWV3KTsKLSAgICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdW
aWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKIAotICAgIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpOwogCi0gICAgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmll
dyk7CiAKICAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBwYXRo
RW5kKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAK
LSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0K
KyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0K
KyAgICBvcGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAog
I2lmIFVTRShDRikKLSAgICBVUkwoQ0ZVUkxSZWYpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVm
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVS
TCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBVUkwoTlNVUkwq
KTsKLSAgICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
VVJMKE5TVVJMICopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBvcGVyYXRvciBOU1VSTCAqKCkg
Y29uc3Q7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JKQ19fCi0gICAgb3BlcmF0b3IgTlNTdHJpbmcq
KCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKyAgICBvcGVyYXRvciBOU1N0cmluZyAqKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwogICAg
IHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdGVtcGxhdGUgPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgVVJM
Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICB2b2lk
IGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYs
IGNvbnN0IGNoYXIqKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGludmFsaWRhdGUo
KTsKICAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25z
dDsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjcmVkZW50
aWFsc0VuZCgpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiAKLSAgICBmcmllbmQg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwot
ICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCkBAIC0yMjksNDkgKzIy
NSwyNyBAQCBwcml2YXRlOgogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihT
dHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsK
IAotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYg
dXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAg
ICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RG
TW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
LXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKLSAgICBkZWNvZGVyID4+IHN0cmluZzsK
LSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1
cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKLX0KK2Jvb2wgb3BlcmF0b3I9PShjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKK2Jv
b2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3IhPShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9z
dHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRF
IGNvbnN0IFVSTCYgYWJvdXRCbGFua1VSTCgpOwogV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVS
TCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25z
IG9uIHN0cmluZ3MuCiAvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIg
b24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVS
TCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBh
IHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCi0vLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50
IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lk
ZXJlZCB2YWxpZCBieSBVUkwuCisvLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUg
V1RGOjpVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcg
dG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGlt
cG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5
IGNvbnNpZGVyZWQgdmFsaWQgYnkgV1RGOjpVUkwuCiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29s
IHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldyB1cmws
IGNvbnN0IGNoYXIqIHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCk7CiAKIFdURl9F
WFBPUlRfUFJJVkFURSBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3IHByb3RvY29sKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKQEAgLTI4
MCwxNCArMjU0LDQwIEBAIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0
IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQKIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
bGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAKLVdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChTdHJpbmdWaWV3IGRhdGFVUkwpOwog
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3Nl
LCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRo
ZSBVUkwgU3RhbmRhcmQuCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIG5ldywgbW9yZSBzcGVjaWZp
YyBuYW1lLiBUaGUgZ2VuZXJhbCB0aGluZyBuYW1lZCBoZXJlIGNhbid0IGJlIGltcGxlbWVudGVk
IGNvcnJlY3RseSwgc2luY2UgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50
IGVzY2FwaW5nLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBl
U2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogCi0vLyBJbmxpbmVzLgorV1RGX0VYUE9SVF9QUklW
QVRFIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxVUkw+OworCisvLyBGdW5jdGlvbiB0ZW1wbGF0ZSBhbmQgaW5saW5lIGZ1bmN0aW9u
IGRlZmluaXRpb25zLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFVSTDo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZzsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gYm9vbCBVUkw6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsVVJMID0gZGVjb2RlKGRl
Y29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICBkZWNvZGVy
ID4+IHN0cmluZzsKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKK30KIAogaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKQEAgLTMxOSw4
ICszMTksMTAgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFVSTCYgYikKICAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwogfQogCi0vLyBJbmxpbmUgdmVy
c2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGlu
aW5nCi0vLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRo
ZSBjbGFzcyBkZWZpbml0aW9uLgoraW5saW5lIFVSTDo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCisgICAgOiBtX3N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpCit7Cit9CiAKIGlu
bGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKIHsKQEAgLTMzOSwxNyArMzQxLDEyIEBAIGlu
bGluZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0CiAKIGlubGluZSBib29sIFVSTDo6aGFzUGF0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRM
ZW5ndGg7CisgICAgcmV0dXJuIG1fcGF0aEVuZCA+IHBhdGhTdGFydCgpOwogfQogCi1pbmxpbmUg
Ym9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKK2lubGluZSBib29sIFVSTDo6aGFzQ3JlZGVu
dGlhbHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0K
LQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7CisgICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQg
PiBtX3VzZXJTdGFydDsKIH0KIAogaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0CkBA
IC0zNTcsNyArMzU0LDcgQEAgaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhFbmQ7CiB9CiAKLWlubGluZSBib29sIFVSTDo6aGFz
RnJhZ21lbnQoKSBjb25zdAoraW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdAogewogICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBt
X3F1ZXJ5RW5kOwogfQpAQCAtMzgyLDExICszNzksNiBAQCBpbmxpbmUgdW5zaWduZWQgVVJMOjpw
YXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAogICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKIH0KIAotV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8VVJMPjsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKLQogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YWJvdXRCbGFua1VSTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJM
RXh0cmFzLmNwcAppbmRleCAwNmIwYWVjNjRkMTAyNWQ1NDNmZjlkYzNkNmExYTdkMmU2MTBjODU0
Li5mYTA4YzlmODgzNjU5MmI2YWMwNTNjNzNmYTg2N2U1ZTAxYmFiN2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2Yv
Q0ZVUkxFeHRyYXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgaXNDRlVSTFNhbWVPcmlnaW4o
Q0ZVUkxSZWYgY2ZVUkwsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCh1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKTsKIAotICAgIGlmICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwu
aGFzUGFzc3dvcmQoKSkKKyAgICBpZiAodXJsLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJl
dHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKIAog
ICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRl
eCBkMTNiYjZjOTFmOWViY2EzMzBkZTUxZGQwNWMyN2UwNTk2YWNhMmRiLi5jMjVlMDE1Yzg2MTA5
ZGQwNTE5YzRmNDI0YTdhYmUyN2RjNTI5ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC03NCw2ICs3
NSwxMSBAQCBib29sIFN0cmluZ1ZpZXc6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmdWaWV3JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIHByZWZpeCk7CiB9CiAKK2Jvb2wgU3RyaW5nVmlldzo6
ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2xlbmd0aCAm
JiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOworfQorCiBib29sIFN0cmluZ1Zp
ZXc6OmVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmIHN1ZmZpeCkgY29uc3QKIHsKICAgICByZXR1
cm4gOjpXVEY6OmVuZHNXaXRoKCp0aGlzLCBzdWZmaXgpOwpAQCAtMzA2LDYgKzMxMiwzNSBAQCBT
dHJpbmcgbm9ybWFsaXplZE5GQyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcmVz
dWx0LnVuZGVybHlpbmdTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBuYW1l
ZCBwYXJzZU51bWJlcjx1aW50MTZfdD4gaW5zdGVhZD8KKy8vIEZJWE1FOiBTaG91bGQgd2UgcmVw
bGFjZSB0aGUgdG9JbnQgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aXRoIHRoaXMgc3R5bGU/CitPcHRp
b25hbDx1aW50MTZfdD4gcGFyc2VVSW50MTYoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYm9v
bCBvayA9IGZhbHNlOworICAgIGF1dG8gbnVtYmVyID0gdG9JbnRlZ3JhbFR5cGU8dWludDE2X3Q+
KHN0cmluZywgJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBudW1iZXI7Cit9CisKK2Jvb2wgZXF1YWxSZXNwZWN0aW5nTnVsbGl0eShT
dHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikKK3sKKyAgICBpZiAoYS5tX2NoYXJhY3RlcnMgPT0g
Yi5tX2NoYXJhY3RlcnMpIHsKKyAgICAgICAgQVNTRVJUKGEuaXM4Qml0KCkgPT0gYi5pczhCaXQo
KSk7CisgICAgICAgIHJldHVybiBhLmxlbmd0aCgpID09IGIubGVuZ3RoKCk7CisgICAgfQorCisg
ICAgaWYgKGEuaXNFbXB0eSgpICYmIGIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gYS5pc051
bGwoKSA9PSBiLmlzTnVsbCgpOworCisgICAgcmV0dXJuIGVxdWFsQ29tbW9uKGEsIGIpOworfQor
Citib29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0cmluZykgY29uc3QKK3sK
KyAgICByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOworfQorCiAjaWYgQ0hFQ0tfU1RS
SU5HVklFV19MSUZFVElNRQogCiAvLyBNYW5hZ2UgcmVmZXJlbmNlIGNvdW50IG1hbnVhbGx5IHNv
IFVuZGVybHlpbmdTdHJpbmcgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIGluIHRoZSBoZWFk
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDZjZmViZGJhYjdlYTQ1OGUxZDk2ODBk
MTMxNjE5MTQ4ZjIxNzlmMDMuLjA5Yzc5MzQ0NTYzZmU2NzZiMjI2NDViMTJiMWNhYWIxNDUxZjRh
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMzcsOCArMTM3LDcgQEAgcHVibGlj
OgogCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcs
IHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZp
bmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKIAogICAgIHNpemVfdCBy
ZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpIGNvbnN0OwogCkBAIC0xNTEsNiArMTUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgY29udGFpbnMoVUNoYXIpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoQ29kZVVuaXRN
YXRjaEZ1bmN0aW9uKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKFN0cmluZ1ZpZXcgc3RyaW5n
KSBjb25zdCB7IHJldHVybiBmaW5kKHN0cmluZywgMCkgIT0gbm90Rm91bmQ7IH0KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CiAKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkg
Y29uc3Q7CkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdW
aWV3JikgY29uc3Q7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChVQ2hh
cikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoY29uc3QgU3Ry
aW5nVmlldyYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogCkBAIC0xNzQsNiArMTc1
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBib29sIGVxdWFsKFN0cmluZ1Zp
ZXcsIFN0cmluZ1ZpZXcpOworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogCiAgICAgdm9pZCBp
bml0aWFsaXplKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMTkxLDYgKzE5Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwq
KSB7IH0KICAgICB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpIHsg
fQogI2VuZGlmCisKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBjb25zdCB2b2lkKiBtX2NoYXJh
Y3RlcnMgeyBudWxscHRyIH07CkBAIC0yMTAsNiArMjEzLDkgQEAgYm9vbCBlcXVhbChTdHJpbmdW
aWV3LCBjb25zdCBMQ2hhciogYik7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5n
VmlldywgU3RyaW5nVmlldyk7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dywgY29uc3QgY2hhciopOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbFJlc3BlY3Rp
bmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOworYm9vbCBlcXVhbElnbm9yaW5nTnVs
bGl0eShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKKwogdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3Ro
PiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0
aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNv
bnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIApAQCAtMjM0LDYgKzI0MCw4
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgbm9y
bWFsaXplZE5GQyhTdHJpbmdWaWV3KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBub3Jt
YWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8
dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOworCiB9CiAKICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0xMDQzLDYgKzEwNTEsMTIgQEAgdGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1YKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNv
bW1vbihzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMpOwogfQogCitpbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikKK3sKKyAgICAvLyBGSVhN
RTogZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldykgaWdub3JlcyBudWxsaXR5OyBjb25zaWRl
ciBjaGFuZ2luZyB0byBiZSBsaWtlIG90aGVyIHN0cmluZyBjbGFzc2VzIGFuZCByZXNwZWN0aW5n
IGl0LgorICAgIHJldHVybiBlcXVhbChhLCBiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGYxMmFk
MzZkMTllN2ZkNTRiNWNjYTEyNmY3MjVkMDAwNjQzODQ1ZmUuLmFmYzkyZjU3NzY2NjIyOTJmMGNl
MDY0NjI0ZTY4ZjM4NDY3MjI1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTky
NCwxMDIgKzkyNCwxMDIgQEAgc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50
ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGUKIAogaW50IGNoYXJhY3Rl
cnNUb0ludFN0cmljdChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQogewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIExDaGFyPihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRh
LCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25z
dCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKKyAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNl
KTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewotICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTx1bnNpZ25lZCwgTENoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTx1bnNpZ25lZD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7
CiB9CiAKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dW5zaWduZWQ+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOwog
fQogCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdy
YWxUeXBlPGludDY0X3QsIExDaGFyPihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKKyAgICByZXR1
cm4gdG9JbnRlZ3JhbFR5cGU8aW50NjRfdD4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CiB9CiAK
IGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGJvb2wqIG9rLCBpbnQgYmFzZSkKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5
cGU8aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0aCwgb2ssIGJhc2UpOworICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogdWlu
dDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PHVpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPHVpbnQ2NF90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludHB0cl90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBl
PGludHB0cl90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoLCBvaywgYmFzZSk7CisgICAgcmV0dXJuIHRv
SW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGgsIG9rLCBiYXNlKTsKIH0KIAogaW50
IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludCwgTENoYXI+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxMQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0lu
dGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludCBjaGFyYWN0ZXJz
VG9JbnQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAg
IHJldHVybiB0b0ludGVncmFsVHlwZTxpbnQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3Rl
cnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAgICByZXR1cm4gdG9JbnRlZ3Jh
bFR5cGU8aW50PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3Ro
KSwgb2ssIDEwKTsKIH0KIAogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVuc2lnbmVkLCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExD
aGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1
bnNpZ25lZD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBs
ZW5ndGgpLCBvaywgMTApOwogfQogCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVD
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRl
Z3JhbFR5cGU8dW5zaWduZWQsIFVDaGFyPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVn
ZXI8VUNoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxU
eXBlPHVuc2lnbmVkPihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNoYXI+KGRh
dGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29u
c3QgTENoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVybiB0
b0ludGVncmFsVHlwZTxpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJ
bnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVn
cmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+
KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQo
Y29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQogewotICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTxpbnQ2NF90LCBVQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVybiB0b0lu
dGVncmFsVHlwZTxpbnQ2NF90PihkYXRhLCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8VUNo
YXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NChjb25zdCBMQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2spCiB7Ci0gICAg
cmV0dXJuIHRvSW50ZWdyYWxUeXBlPHVpbnQ2NF90LCBMQ2hhcj4oZGF0YSwgbGVuZ3RoT2ZDaGFy
YWN0ZXJzQXNJbnRlZ2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOworICAgIHJldHVy
biB0b0ludGVncmFsVHlwZTx1aW50NjRfdD4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRl
Z2VyPExDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwogfQogCiB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
ewotICAgIHJldHVybiB0b0ludGVncmFsVHlwZTx1aW50NjRfdCwgVUNoYXI+KGRhdGEsIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8dWludDY0X3Q+KGRhdGEsIGxlbmd0aE9mQ2hhcmFjdGVy
c0FzSW50ZWdlcjxVQ2hhcj4oZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAogaW50cHRyX3Qg
Y2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29s
KiBvaykKIHsKLSAgICByZXR1cm4gdG9JbnRlZ3JhbFR5cGU8aW50cHRyX3QsIExDaGFyPihkYXRh
LCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAx
MCk7CisgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXI8TENoYXI+KGRhdGEsIGxlbmd0aCksIG9rLCAxMCk7CiB9CiAKIGlu
dHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2spCiB7Ci0gICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90LCBVQ2hh
cj4oZGF0YSwgbGVuZ3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgp
LCBvaywgMTApOworICAgIHJldHVybiB0b0ludGVncmFsVHlwZTxpbnRwdHJfdD4oZGF0YSwgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyPFVDaGFyPihkYXRhLCBsZW5ndGgpLCBvaywgMTApOwog
fQogCiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxpbmdKdW5rLCBBbGxv
d1RyYWlsaW5nSnVuayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcAppbmRleCBiMGRiNTdhODM3MGNlMDMwMjg2NGZlMDgyYjQzYTI0ZWIyOGI5
ZGY5Li43ODJiMjYyZjQ4NzQxOTM4MmE3NDUwMTAzMjNlMzM1MjJhNzU2NTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtNzIsMTAg
KzcyLDggQEAgc3RhdGljIGlubGluZSBib29sIG1hdGNoVVJMcyhjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgY2FjaGVkVVIKICAgICBVUkwgY2FjaGVkUmVxdWVzdFVS
TCA9IGNhY2hlZFVSTDsKIAogICAgIGlmIChvcHRpb25zLmlnbm9yZVNlYXJjaCkgewotICAgICAg
ICBpZiAocmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAgICAgICAgICAgcmVxdWVzdFVSTC5zZXRR
dWVyeSh7IH0pOwotICAgICAgICBpZiAoY2FjaGVkUmVxdWVzdFVSTC5oYXNRdWVyeSgpKQotICAg
ICAgICAgICAgY2FjaGVkUmVxdWVzdFVSTC5zZXRRdWVyeSh7IH0pOworICAgICAgICByZXF1ZXN0
VVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9
KTsKICAgICB9CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVx
dWVzdFVSTCwgY2FjaGVkUmVxdWVzdFVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggM2E1NTIxOGZmYmQ3MGEwZjExNTY2MTYwYWY5
MzkwZWJiZDE5MWQ3My4uZGZiNzMzZTkzMDBkYTJhZTFlNjk1ZTQxMmM5NzMyMDA4YWM2ZTA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAt
MTYwLDkgKzE2MCwxMCBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vz
c0ludmFsaWRTaWduYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgYwogRXhjZXB0aW9uT3I8dm9p
ZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcmIHVybCwgSW5pdCYm
IGluaXQpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgLy8g
RklYTUU6IFRpZ2h0ZW4gdGhlIFVSTCBwYXJzaW5nIGFsZ29yaXRobSBhY2NvcmRpbmcgaHR0cHM6
Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1wYXJzZXIuCisKKyAgICAvLyBGSVhN
RTogVGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyB0byBodHRwczov
L3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KICAgICBVUkwgcmVxdWVz
dFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpGb3JjZVVURjg6Olllcyk7Ci0gICAgaWYgKCFyZXF1ZXN0VVJMLmlz
VmFsaWQoKSB8fCAhcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpIHx8ICFyZXF1ZXN0VVJMLnBh
c3MoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFyZXF1ZXN0VVJMLmlzVmFsaWQoKSB8fCByZXF1ZXN0
VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJVUkwgaXMgbm90IHZhbGlkIG9yIGNvbnRhaW5zIHVzZXIgY3JlZGVudGlhbHMuIl9zIH07
CiAKICAgICBtX29wdGlvbnMubW9kZSA9IE1vZGU6OkNvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA2MDlhYThhMjg4ZmYzNTgxOWU2
NzNjZjU2N2RjYjUyMGM2M2FiNDg5Li4wNWY0OWY4ODkzNmUwOGJkZTA1YmU0ZWI2NmZhOWMxNTg4
ZmNiY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+
IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgVVJM
IHJlcXVlc3RVUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFyZXF1ZXN0
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFr
ZVN0cmluZygiUmVkaXJlY3Rpb24gVVJMICciLCByZXF1ZXN0VVJMLnN0cmluZygpLCAiJyBpcyBp
bnZhbGlkIikgfTsKLSAgICBpZiAoIXJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSB8fCAhcmVx
dWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKQorICAgIGlmIChyZXF1ZXN0VVJMLmhhc0NyZWRlbnRp
YWxzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWRpcmVjdGlv
biBVUkwgY29udGFpbnMgY3JlZGVudGlhbHMiX3MgfTsKICAgICBpZiAoIVJlc291cmNlUmVzcG9u
c2U6OmlzUmVkaXJlY3Rpb25TdGF0dXNDb2RlKHN0YXR1cykpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSYW5nZUVycm9yLCBtYWtlU3RyaW5nKCJTdGF0dXMgY29kZSAiLCBzdGF0dXMsICJp
cyBub3QgYSByZWRpcmVjdGlvbiBzdGF0dXMgY29kZSIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4
IGNhYWRmODdiMGI1NzNlMzEyZTllM2UwMzlkNmRjNmE4OGZjNTljY2EuLmU3MTM1YmVjNjAzZjli
NTNhOWQyMmE0NDNhZjM1ODIwZjFjYWNiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0yMjAsMTMg
KzIyMCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRTdGFuZGFyZGl6ZWRQYXltZW50TWV0aG9kSWRl
bnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
cGF5bWVudC1tZXRob2QtaWQvI3ZhbGlkYXRpb24KIHN0YXRpYyBib29sIGlzVmFsaWRVUkxCYXNl
ZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICghdXJs
LnByb3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
dXJsLnVzZXIoKS5pc0VtcHR5KCkgfHwgIXVybC5wYXNzKCkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29s
SXMoImh0dHBzIikgJiYgIXVybC5oYXNDcmVkZW50aWFscygpOwogfQogCiAvLyBJbXBsZW1lbnRz
ICJ2YWxpZGF0ZSBhIHBheW1lbnQgbWV0aG9kIGlkZW50aWZpZXIiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCmluZGV4IDRlN2EwMjVlNDc2OTQ5MDExNWVlZjQ5ZWVjMGE3YWZkZTFlYzNiNTMuLmFiNGQ1
ZmJjMTFmOTJkOWFhZTY3YThhNGQ4OGZiMmVjYWVkY2ViZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCkBAIC0xMDMsMTkgKzEwMywxNCBAQCBib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6
aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAgICAgCi1zdGF0aWMgaW5saW5lIFVSTCBjcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFN0cmluZyYg
dmlkZW9JRCwgY29uc3QgU3RyaW5nJiB0aW1lSUQpCitzdGF0aWMgVVJMIGNyZWF0ZVlvdVR1YmVV
UkwoU3RyaW5nVmlldyB2aWRlb0lELCBTdHJpbmdWaWV3IHRpbWVJRCkKIHsKICAgICBBU1NFUlQo
IXZpZGVvSUQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQodmlkZW9JRCAhPSAiLyIpOwotICAgIAot
ICAgIFVSTCByZXN1bHQoVVJMKCksICJ5b3V0dWJlOiIgKyB2aWRlb0lEKTsKLSAgICBpZiAoIXRp
bWVJRC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC5zZXRRdWVyeSgidD0iICsgdGltZUlEKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJp
bmcoInlvdXR1YmU6IiwgdmlkZW9JRCwgdGltZUlELmlzRW1wdHkoKSA/ICIiIDogInQ9IiwgdGlt
ZUlEKSk7CiB9Ci0gICAgCi1zdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1
ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKKworc3Rh
dGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFs
dWVzKFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCiB7CiAgICAgWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpLZXlWYWx1ZU1hcCBxdWVyeURpY3Rpb25hcnk7CiAgICAgCkBAIC0xNTUsNyArMTUwLDcg
QEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlz
QW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICAgICAgLy8gU2F2ZSB0aGUga2V5IGFuZCB0
aGUgdmFsdWUuCiAgICAgICAgIGlmIChrZXlMZW5ndGggJiYgdmFsdWVMZW5ndGgpIHsKICAgICAg
ICAgICAgIFN0cmluZyBrZXkgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcoa2V5TG9jYXRpb24sIGtl
eUxlbmd0aCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICAgICAgICAgIFN0cmluZyB2
YWx1ZSA9IHF1ZXJ5U3RyaW5nLnN1YnN0cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCk7
CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFsdWVM
b2NhdGlvbiwgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB2YWx1ZS5yZXBs
YWNlKCcrJywgJyAnKTsKIAogICAgICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpICYmICF2YWx1
ZS5pc0VtcHR5KCkpCkBAIC0yMDksMTYgKzIwNCwxNiBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRD
cmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRV
UgogCiAgICAgLy8gU2hvcnQgVVJMIG9mIHRoZSBmb3JtOiBodHRwOi8veW91dHUuYmUvdjFkMzAx
RAogICAgIGlmIChpc1lvdVR1YmVTaG9ydGVuZWRVUkwpIHsKLSAgICAgICAgU3RyaW5nIHZpZGVv
SUQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgYXV0byB2aWRlb0lEID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmICh2aWRlb0lELmlzRW1wdHkoKSB8fCB2
aWRlb0lEID09ICIvIikKICAgICAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHsgfSk7CiAgICAgfQotICAgIAorCiAgICAgYXV0
byBwYXRoID0gdXJsLnBhdGgoKTsKLSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAg
ICBTdHJpbmcgZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgCisgICAg
YXV0byBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGF1dG8gZnJhZ21lbnQgPSB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCk7CisKICAgICAvLyBPbiB0aGUgWW91VHViZSBtb2JpbGUgd2ViIGFwcCwg
dGhlIHBhdGggYW5kIHF1ZXJ5IHN0cmluZyBhcmUgcHV0IGludG8gdGhlCiAgICAgLy8gZnJhZ21l
bnQgc28gdGhhdCBvbmUgd2ViIHBhZ2UgaXMgb25seSBldmVyIGxvYWRlZCAoc2VlIDxyZGFyOi8v
cHJvYmxlbS85NTUwNjM5PikuCiAgICAgaWYgKGlzWW91VHViZU1vYmlsZVdlYkFwcFVSTCkgewpA
QCAtMjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwo
Y29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICBw
YXRoID0gZnJhZ21lbnQ7CiAgICAgICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gU3RyaW5nVmlldyhmcmFnbWVudCkuc3Vi
c3RyaW5nKDAsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJp
bmcoMCwgbG9jYXRpb24pOwogICAgICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmco
bG9jYXRpb24gKyAxKTsKICAgICAgICAgfQogICAgICAgICBmcmFnbWVudCA9IGVtcHR5U3RyaW5n
KCk7CkBAIC0yNjAsMTAgKzI1NSwxMCBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VU
dWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHBhdGgsICIvZS8iKSkgewotICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQg
PSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICAgICAgU3RyaW5nIHZpZGVvSUQ7Ci0gICAg
ICAgIFN0cmluZyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsKKyAgICAgICAgU3RyaW5nVmlldyB2
aWRlb0lEOworICAgICAgICBTdHJpbmdWaWV3IHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kOwogCisg
ICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsK
ICAgICAgICAgc2l6ZV90IGFtcGVyc2FuZExvY2F0aW9uID0gbGFzdFBhdGhDb21wb25lbnQuZmlu
ZCgnJicpOwogICAgICAgICBpZiAoYW1wZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAg
ICAgICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBjYXJlIGFib3V0IHVzZSAmIGluIHBsYWNlIG9mID8g
Zm9yIHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0ZXIuCkBAIC0yNzMsMTEgKzI2OCwxMSBAQCBzdGF0
aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBp
c1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9u
ZW50OwogCiAgICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG91
dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0gcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CisgICAg
ICAgICAgICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRlckZpcnN0QW1wZXJz
YW5kLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRl
b0lELCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBVUkwoKTsKIH0KIApAQCAtMjkwLDEzICsyODUsMTMgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudDo6eW91VHViZVVSTChjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKIFN0cmluZyBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3Qg
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogewogICAgIGJvb2wgaXNZb3VU
dWJlU2hvcnRlbmVkVVJMID0gZmFsc2U7Ci0gICAgU3RyaW5nIHBvc3NpYmxlTWFsZm9ybWVkUXVl
cnk7Ci0gICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNV
UkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9zc2libGVNYWxmb3JtZWRRdWVyeSk7CisgICAg
U3RyaW5nIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7CisgICAgVVJMIHlvdVR1YmVVUkwgPSBwcm9j
ZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgcG9z
c2libHlNYWxmb3JtZWRRdWVyeSk7CiAgICAgaWYgKHNyY1VSTC5pc0VtcHR5KCkgfHwgeW91VHVi
ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzcmNTdHJpbmc7CiAKICAgICAvLyBUcmFu
c2Zvcm0gdGhlIHlvdXR1YmVVUkwgKHlvdXR1YmU6VmlkZW9JRCkgdG8gaWZyYW1lIGVtYmVkIHVy
bCB3aGljaCBoYXMgdGhlIGZvcm1hdDogaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9WaWRl
b0lECi0gICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgoKS50b1N0cmluZygpOworICAgIGF1
dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCk7CiAgICAgY29uc3QgU3RyaW5nJiB2aWRlb0lEID0g
eW91VHViZVVSTC5zdHJpbmcoKS5zdWJzdHJpbmcoeW91VHViZVVSTC5wcm90b2NvbCgpLmxlbmd0
aCgpICsgMSk7CiAgICAgc2l6ZV90IGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoID0gc3JjUGF0aC5m
aW5kKHZpZGVvSUQpOwogCkBAIC0zMDUsNyArMzAwLDcgQEAgU3RyaW5nIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwg
Y28KICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKTsKICAgICAKICAgICAg
ICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZv
cmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0g
c3JjU3RyaW5nLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBh
dGgpKTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhz
cmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBh
dGgpKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1Bh
dGgsICIvd2F0Y2giKSkgewogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5l
ZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvd2F0Y2gvIyF2PVZpZGVvSUQKICAgICAgICAgLy8g
RklYTUU6IFNob3VsZG4ndCB0aGlzIGJlIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmU/CkBAIC0zMTUs
MjIgKzMxMCwyMSBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJM
RnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogCiAgICAgQVNTRVJUKGxvY2F0
aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBub3RGb3VuZCk7CiAKLSAgICBjb25zdCBTdHJpbmcm
IHNyY1VSTFByZWZpeCA9IHNyY1N0cmluZy5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZv
cmVWaWRlb0lEKTsKLSAgICBTdHJpbmcgcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKKyAgICBhdXRv
IHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5zdWJzdHJpbmcoMCwgbG9jYXRp
b25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKKyAgICBhdXRvIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7
CisKICAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVyeSwgdXNlIHRoZSBwb3NzaWJseSBtYWxm
b3JtZWQgcXVlcnkgd2UgZm91bmQuCiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAg
cXVlcnkgPSBwb3NzaWJsZU1hbGZvcm1lZFF1ZXJ5OworICAgICAgICBxdWVyeSA9IHBvc3NpYmx5
TWFsZm9ybWVkUXVlcnk7CiAKICAgICAvLyBBcHBlbmQgdGhlIHF1ZXJ5IHN0cmluZyBpZiBpdCBp
cyB2YWxpZC4KLSAgICBTdHJpbmdCdWlsZGVyIGZpbmFsVVJMOwotICAgIGlmIChpc1lvdVR1YmVT
aG9ydGVuZWRVUkwpCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoImh0dHA6Ly93d3cu
eW91dHViZS5jb20iKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbmFsVVJMLmFwcGVuZChzcmNVUkxQ
cmVmaXgpOwotICAgIGZpbmFsVVJMLmFwcGVuZCgiL2VtYmVkLyIsIHZpZGVvSUQpOwotICAgIGlm
ICghcXVlcnkuaXNFbXB0eSgpKQotICAgICAgICBmaW5hbFVSTC5hcHBlbmQoJz8nLCBxdWVyeSk7
Ci0gICAgcmV0dXJuIGZpbmFsVVJMLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
CisgICAgICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA/ICJodHRwOi8vd3d3LnlvdXR1YmUuY29t
IiA6IHNyY1VSTFByZWZpeCwKKyAgICAgICAgIi9lbWJlZC8iLAorICAgICAgICB2aWRlb0lELAor
ICAgICAgICBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiwKKyAgICAgICAgcXVlcnkKKyAgICAp
OwogfQogICAgIAogYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzVVJMKGNv
bnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA5OTI2Y2VmOTY3MTU1MzY3MmYyMzc5
OWJmMmZlYmZiNWVkMTkwZjc3Li5lMjM3NDk3MTg2M2YxZGE3MGQ3ZTlmOWM5OTY5ZGQ2YzA2NGY1
MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNjQsMTUgKzY0LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgVVJMJiB1cmwpCiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciBuYW1lOwotICAgIG5hbWUuYXBwZW5kKHVybC5wYXRoKCkpOwotICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbmFtZS5hcHBlbmQoJy8nKTsKLSAgICBpZiAo
IXVybC5xdWVyeSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIG5hbWUuYXBwZW5kKCc/Jyk7Ci0gICAg
ICAgIG5hbWUuYXBwZW5kKHVybC5xdWVyeSgpKTsKLSAgICB9Ci0gICAgU3RyaW5nIHJlc3VsdCA9
IG5hbWUudG9TdHJpbmcoKTsKKyAgICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVN0cmluZygKKyAgICAgICAgcGF0aCwKKyAgICAgICAgcGF0aC5pc0VtcHR5
KCkgPyAiLyIgOiAiIiwKKyAgICAgICAgdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmso
KQorICAgICk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXJl
c3VsdC5jb250YWlucygnICcpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggMzVhNjZiZTU1NWE2M2I0MDhlNmQ4YjViZmIyYzlkNzI5YTI0YTQyYi4uY2Y2ZGM1
ZGFhZWYzNjg5YzlmNjk5NTczNGFkODkxNjEwNGViZTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC05NDQsMjYgKzk0NCwyNyBAQCBJbnRQb2ludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpjbGlja1BvaW50KCkKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdAogewotICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBhbmNob3JFbGVtZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gYW5jaG9yRWxl
bWVudCgpOworCiAgICAgLy8gUmlnaHQgbm93LCB3ZSBkbyBub3Qgc3VwcG9ydCBBUklBIGxpbmtz
IGFzIGludGVybmFsIGxpbmsgZWxlbWVudHMKICAgICBpZiAoIWlzPEhUTUxBbmNob3JFbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgSFRNTEFuY2hvckVsZW1l
bnQmIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7Ci0gICAg
Ci0gICAgVVJMIGxpbmtVUkwgPSBhbmNob3IuaHJlZigpOwotICAgIFN0cmluZyBmcmFnbWVudElk
ZW50aWZpZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIGF1dG8mIGFuY2hv
ciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxlbWVudCk7CisKKyAgICBhdXRvIGxp
bmtVUkwgPSBhbmNob3IuaHJlZigpOworICAgIGF1dG8gZnJhZ21lbnRJZGVudGlmaWVyID0gbGlu
a1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAvLyBjaGVjayBp
ZiBVUkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAgICBVUkwgZG9jdW1lbnRVUkwgPSBt
X3JlbmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOworICAgIGF1dG8gZG9jdW1lbnRVUkwgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIE5vZGUqIGxpbmtlZE5vZGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmZp
bmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKTsKKworICAgIGF1dG8gbGlua2VkTm9kZSA9IG1f
cmVuZGVyZXItPmRvY3VtZW50KCkuZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKTsKICAgICBpZiAoIWxpbmtlZE5vZGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAorCiAgICAgLy8gVGhlIGVsZW1lbnQgd2UgZmluZCBtYXkgbm90IGJl
IGFjY2Vzc2libGUsIHNvIGZpbmQgdGhlIGZpcnN0IGFjY2Vzc2libGUgb2JqZWN0LgogICAgIHJl
dHVybiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShsaW5rZWROb2RlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDE5NzJhZWQ5MDllMDk3YTY1YjdlYTFlNGI1ZjkzYWJhNjhl
OTRlMWUuLmU0NDU0ZTZkNWI3NWVmMDIxOGJmMDJjOTcyZjEzNWRjZGIzYmYzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzI1MSw3ICszMjUxLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0
VVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV91cmwgPSBuZXdVUkw7CiAgICAgaWYgKFNlY3Vy
aXR5T3JpZ2luOjpzaG91bGRJZ25vcmVIb3N0KG1fdXJsKSkKLSAgICAgICAgbV91cmwucmVtb3Zl
SG9zdEFuZFBvcnQoKTsKKyAgICAgICAgbV91cmwuc2V0SG9zdEFuZFBvcnQoeyB9KTsKIAogICAg
IG1fZG9jdW1lbnRVUkkgPSBtX3VybC5zdHJpbmcoKTsKICAgICB1cGRhdGVCYXNlVVJMKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWQzNWZjZGM2ZjQ2MjA0Y2RhYjczZjYzNGJmOWUwNTBl
MTFjZDQ2Ny4uMWZmMjNlMTYwYjkxOGFiMWNkYzUwZThjM2Y3NjFjOGQxY2E0MmEwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtNDQ5MSw3ICs0NDkxLDcgQEAgRWxlbWVudCogRWxlbWVudDo6
ZmluZEFuY2hvckVsZW1lbnRGb3JMaW5rKFN0cmluZyYgb3V0QW5jaG9yTmFtZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBkb2N1bWVudC5iYXNlVVJMKCkp
KSB7Ci0gICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Cisg
ICAgICAgIG91dEFuY2hvck5hbWUgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmco
KTsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmZpbmRBbmNob3Iob3V0QW5jaG9yTmFtZSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDFkYWE4NTg4ZGY1MzkwYWY4MTMx
ZTBkYWYwOTdhODlmYjU3N2E1OTEuLjMwZWQ5ZjNmNjFmNDAzZGJiOTRlOGUzZTJmNzlmZjg5N2Ux
NzJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC00NDAsNiArNDQwLDggQEAgVmVj
dG9yPFJlZlB0cjxFbGVtZW50Pj4gVHJlZVNjb3BlOjplbGVtZW50c0Zyb21Qb2ludChjb25zdCBG
bG9hdFBvaW50JiBwKQogICAgIHJldHVybiBlbGVtZW50c0Zyb21Qb2ludChwLngoKSwgcC55KCkp
OwogfQogCisvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBjaGFuZ2UgdGhpcyB0byB0YWtlIGEg
U3RyaW5nVmlldywgc2luY2UgdGhhdCdzIHdoYXQgY2FsbGVycyBoYXZlCisvLyBhbmQgdGhlcmUg
aXMgbm8gcGFydGljdWxhciBhZHZhbnRhZ2UgdG8gYWxyZWFkeSBoYXZpbmcgYSBTdHJpbmcuCiBF
bGVtZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMGM5ZjlkMGU4OTAzOTcwMDMxMDkw
ZGIyYjhmMzBkZGRjNDJlOWRkNC4uZmE2MWM1YzYxOWUwNzRhMWE3NTU1Nzc1YjVmZjVjZjljMWMx
OTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMyOCwxMyArMzI4LDEzIEBAIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21l
bnQmIGZyCiAgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gaW1hZ2UuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOworICAgICAgICBT
dHJpbmcgbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOwor
ICAgICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENv
bXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJtZWRpYSIpOworICAgICAgICAgICAgbmFtZSA9ICJt
ZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBuYW1l
LCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBp
bWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5k
YW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNDgsMTEgKzM0
OCwxMSBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0g
dXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGF1dG8gbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVu
dCgpOworICAgICAgICBTdHJpbmcgbmFtZSA9IFVSTCh7IH0sIHJlc291cmNlVVJMU3RyaW5nKS5s
YXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJmaWxlIik7CisgICAgICAgICAgICBu
YW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgbmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDog
YXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCBmMmEyZDUyYWM1YWJmNGU0ZjEzMTEzY2EyNWQxYjIwYTE3MzhmYTY5Li5i
N2QyOWNkNGJhZDk1MGQzYWJkN2RmNzllOTBmNTM0NjRjMzY4ODQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBFZGl0b3I6
OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYg
aW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSBwYXN0ZWJvYXJk
SW1hZ2VVUkw7CiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAg
ICB9Ci0gICAgcGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5s
YXN0UGF0aENvbXBvbmVudCgpOworICAgIHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lID0g
aW1hZ2VTb3VyY2VVUkwubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogICAgIHBhc3Rl
Ym9hcmRJbWFnZS5pbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgIHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNhY2hlZElt
YWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggYmY4OTI4ODRmMTllNmY4ZWQ4ZDAxZDBmMTY4
N2NlMzk5YTA0ZmFlMy4uNTJhY2YwNzQ4ZTY0YmYxNzU2ZDBkMzE0NzNmMTRkZWIwMGJlOGM1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUx
LDYgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkxVdGlscy5oIgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCAzYTExZDkyMGIwNzgwZWRjZDc2NGIx
OWEwNGMzYWZlMDllOTI2Y2IzLi45MDIxMGY1NWIxNzJhMjBhYjZmNTdhMjQyNTE3MzRhMTA2Njhl
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
CkBAIC0xNzcsMjIgKzE3NywxNyBAQCBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRh
Y2htZW50VGl0bGUoKSBjb25zdAogU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNo
bWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0CiB7CiAgICAgYXV0byB0aXRsZSA9IGF0dGFjaG1l
bnRUaXRsZSgpOwotCiAgICAgYXV0byBpbmRleE9mTGFzdERvdCA9IHRpdGxlLnJldmVyc2VGaW5k
KCcuJyk7CiAgICAgaWYgKGluZGV4T2ZMYXN0RG90ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1
cm4gdGl0bGU7CiAKLSAgICBTdHJpbmcgbmFtZSA9IHRpdGxlLmxlZnQoaW5kZXhPZkxhc3REb3Qp
OwotICAgIFN0cmluZyBleHRlbnNpb24gPSB0aXRsZS5zdWJzdHJpbmcoaW5kZXhPZkxhc3REb3Qp
OwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxlZnRU
b1JpZ2h0TWFyayk7Ci0gICAgYnVpbGRlci5hcHBlbmQoZmlyc3RTdHJvbmdJc29sYXRlKTsKLSAg
ICBidWlsZGVyLmFwcGVuZChuYW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZChwb3BEaXJlY3Rpb25h
bElzb2xhdGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGV4dGVuc2lvbik7Ci0KLSAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBsZWZ0
VG9SaWdodE1hcmssCisgICAgICAgIGZpcnN0U3Ryb25nSXNvbGF0ZSwKKyAgICAgICAgU3RyaW5n
Vmlldyh0aXRsZSkubGVmdChpbmRleE9mTGFzdERvdCksCisgICAgICAgIHBvcERpcmVjdGlvbmFs
SXNvbGF0ZSwKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKGluZGV4T2ZMYXN0
RG90KQorICAgICk7CiB9CiAKIFN0cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1l
bnRUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
aW5kZXggMDNkOTA1YmJhMzc5MTI3ZDdmOTQxODkyZjc5NzY1YTdlZjkzYzFiOS4uNmJmZTcwNzRh
OTUxYWQ3YWNjZTk5Mzg0MDA2NmM4ZGI3NGQxNjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTM1NywxNCArMzU3LDE0IEBAIHN0YXRpYyBSZXBsYWNl
bWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGV4dGVuc2lv
bjsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQo
KTsKKyAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7
CiAgICAgc2l6ZV90IGRvdE9mZnNldCA9IGxhc3RQYXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcu
Jyk7CiAgICAgaWYgKGRvdE9mZnNldCAhPSBub3RGb3VuZCkKLSAgICAgICAgZXh0ZW5zaW9uID0g
bGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCArIDEpOworICAgICAgICBleHRl
bnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoZG90T2Zmc2V0ICsgMSkudG9TdHJp
bmcoKTsKIAogICAgIFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0
eSgpICYmIHVybC5wcm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9t
RGF0YVVSTCh1cmwuc3RyaW5nKCkpOworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVS
TCh1cmwpOwogICAgIAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1w
dHkoKSkgewogICAgICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRl
eCBlN2E1MTZlYmEyMjg0OWZjZDM3MzQ2NTkzOTRiN2M0OWU3Zjk3Y2UxLi41Yjg0NTQxZWEwZGNm
NTIyNDI4MmMzMWNmNzRiYjQ2ZWEyNTUyZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTk4LDkgKzk4LDcgQEAgTWVkaWFUaW1lIE1l
ZGlhRnJhZ21lbnRVUklQYXJzZXI6OmVuZFRpbWUoKQogCiB2b2lkIE1lZGlhRnJhZ21lbnRVUklQ
YXJzZXI6OnBhcnNlRnJhZ21lbnRzKCkKIHsKLSAgICBpZiAoIW1fdXJsLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQotICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIGZyYWdtZW50U3RyaW5nID0g
bV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBmcmFnbWVudFN0cmluZyA9IG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudFN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCmluZGV4IGI3MGU1ZGNi
ZTgyNzU4MTAwYjA3MmQyZjRmMGYwZTQ2ODBjMDEwOTcuLmFlMzQwZTg5YTY2MTcyN2MzNWMxZjZh
MDhlMzMxOGFiMDM5NThiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRp
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOCArMjksOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVVJM
VXRpbHMgeworLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIFVSTERlY29tcG9zaXRpb25GdW5jdGlv
bnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVUkxVdGlscyB7CiBwdWJsaWM6CiAgICAg
VVJMIGhyZWYoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcyktPmhy
ZWYoKTsgfQogICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHVybCkgeyBzdGF0aWNfY2Fz
dDxUKj4odGhpcyktPnNldEhyZWYodXJsKTsgfQpAQCAtNDEsNzYgKzQxLDY4IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25z
dDsKLSAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UHJv
dG9jb2woU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKLSAgICB2
b2lkIHNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VXNlcm5hbWUoU3Ry
aW5nVmlldyk7CiAKICAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBh
c3N3b3JkKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UGFzc3dvcmQoU3RyaW5nVmlldyk7
CiAKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgaG9zdG5h
bWUoKSBjb25zdDsKLSAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgc2V0SG9zdG5hbWUoU3RyaW5nVmlldyk7CiAKICAgICBTdHJpbmcgcG9ydCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBvcnQoU3RyaW5n
Vmlldyk7CiAKICAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhdGhu
YW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0UGF0aG5hbWUoU3RyaW5nVmlldyk7CiAK
ICAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3Ry
aW5nJik7CiAKICAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SGFzaChjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhhc2goU3RyaW5nVmlldyk7CiB9OwogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBVUkxVdGlsczxUPjo6dG9TdHJpbmcoKSBjb25zdAordGVt
cGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+Ojp0b1N0cmluZygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGhyZWYoKS5zdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1TdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBTdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhyZWYo
KS5zdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgVVJMVXRpbHM8
VD46Om9yaWdpbigpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgVVJMVXRpbHM8
VD46Om9yaWdpbigpIGNvbnN0CiB7Ci0gICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGhyZWYoKSk7Ci0gICAgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsKKyAgICByZXR1
cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShocmVmKCkpLT50b1N0cmluZygpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBVUkxVdGlsczxUPjo6cHJvdG9jb2woKSBjb25zdAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+Ojpwcm90b2NvbCgpIGNvbnN0
CiB7CiAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoaHJlZigpKSkKICAgICAgICAg
cmV0dXJuICJqYXZhc2NyaXB0OiJfczsKICAgICByZXR1cm4gbWFrZVN0cmluZyhocmVmKCkucHJv
dG9jb2woKSwgJzonKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxz
PFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAg
ICBVUkwgdXJsID0gaHJlZigpOwogICAgIHVybC5zZXRQcm90b2NvbCh2YWx1ZSk7CiAgICAgc2V0
SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBV
UkxVdGlsczxUPjo6dXNlcm5hbWUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5n
IFVSTFV0aWxzPFQ+Ojp1c2VybmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNv
ZGVkVXNlcigpOworICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFVzZXIoKS50b1N0cmluZygpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVVJMVXRpbHM8VD46OnNldFVzZXJuYW1l
KGNvbnN0IFN0cmluZyYgdXNlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8
VD46OnNldFVzZXJuYW1lKFN0cmluZ1ZpZXcgdXNlcikKIHsKICAgICBVUkwgdXJsID0gaHJlZigp
OwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQpAQCAtMTE5LDM5ICsxMTEsMzYgQEAg
dm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB1c2VyKQogICAgIHNl
dEhyZWYodXJsKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgVVJMVXRpbHM8
VD46OnBhc3N3b3JkKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGls
czxUPjo6cGFzc3dvcmQoKSBjb25zdAogewotICAgIHJldHVybiBocmVmKCkuZW5jb2RlZFBhc3Mo
KTsKKyAgICByZXR1cm4gaHJlZigpLmVuY29kZWRQYXNzd29yZCgpLnRvU3RyaW5nKCk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0UGFzc3dvcmQoY29u
c3QgU3RyaW5nJiBwYXNzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6
c2V0UGFzc3dvcmQoU3RyaW5nVmlldyBwYXNzd29yZCkKIHsKICAgICBVUkwgdXJsID0gaHJlZigp
OwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
dXJsLnNldFBhc3MocGFzcyk7CisgICAgdXJsLnNldFBhc3N3b3JkKHBhc3N3b3JkKTsKICAgICBz
ZXRIcmVmKHVybCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotU3RyaW5nIFVSTFV0aWxz
PFQ+Ojpob3N0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxU
Pjo6aG9zdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhyZWYoKS5ob3N0QW5kUG9ydCgpOwogfQog
Ci0vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2VzIGJlZm9yZSB0
aGUgcG9ydCBudW1iZXIuCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHBhcnNlUG9ydEZyb21TdHJp
bmdQb3NpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCBwb3J0U3RhcnQsIHVuc2ln
bmVkJiBwb3J0RW5kKQoraW5saW5lIHVuc2lnbmVkIGNvdW50QVNDSUlEaWdpdHMoU3RyaW5nVmll
dyBzdHJpbmcpCiB7Ci0gICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKLSAgICB3aGlsZSAoaXNBU0NJ
SURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKLSAgICAgICAgKytwb3J0RW5kOwotICAgIHJldHVybiB2
YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBjb3VudCA9IDA7IGNvdW50IDwgbGVuZ3RoOyArK2NvdW50KSB7CisgICAgICAgIGlmICghaXNB
U0NJSURpZ2l0KHN0cmluZ1tjb3VudF0pKQorICAgICAgICAgICAgcmV0dXJuIGNvdW50OworICAg
IH0KKyAgICByZXR1cm4gbGVuZ3RoOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQg
VVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjgsNDAgKzE1Nyw0
NCBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
aWYgKHNlcGFyYXRvciA9PSBub3RGb3VuZCkKICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZh
bHVlKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgcG9ydEVuZDsKLSAgICAgICAgdW5z
aWduZWQgcG9ydCA9IHBhcnNlUG9ydEZyb21TdHJpbmdQb3NpdGlvbih2YWx1ZSwgc2VwYXJhdG9y
ICsgMSwgcG9ydEVuZCk7Ci0gICAgICAgIGlmICghcG9ydCkgeworICAgICAgICB1bnNpZ25lZCBw
b3J0TGVuZ3RoID0gY291bnRBU0NJSURpZ2l0cyh2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsg
MSkpOworICAgICAgICBpZiAoIXBvcnRMZW5ndGgpIHsKICAgICAgICAgICAgIC8vIGh0dHA6Ly9k
ZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlv
bi1pZGwtYXR0cmlidXRlcwogICAgICAgICAgICAgLy8gc3BlY2lmaWNhbGx5IGdvZXMgYWdhaW5z
dCBSRkMgMzk4NiAocDMuMikgYW5kCiAgICAgICAgICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRo
ZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgotICAgICAgICAgICAg
dXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSArICcw
Jyk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHNvbWV0aGluZyB0aGF0
IGhhcyBzaW5jZSBiZWVuIGNoYW5nZWQgYW5kIHRoaXMgcnVsZSBhbmQgY29kZSBtYXkgYmUgb2Jz
b2xldGUuCisgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQobWFrZVN0cmluZyh2YWx1ZS5z
dWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSksICcwJykpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90
b2NvbCgpKSkKKyAgICAgICAgICAgIGF1dG8gcG9ydE51bWJlciA9IHBhcnNlVUludDE2KHZhbHVl
LnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CisgICAgICAgICAgICBpZiAo
cG9ydE51bWJlciAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwg
dXJsLnByb3RvY29sKCkpKQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1
ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKSk7Cisg
ICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBh
cmF0b3IgKyAxICsgcG9ydExlbmd0aCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHNldEhyZWYo
dXJsLnN0cmluZygpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgVVJMVXRp
bHM8VD46Omhvc3RuYW1lKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxV
dGlsczxUPjo6aG9zdG5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBocmVmKCkuaG9zdCgpLnRv
U3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6
c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBTdHJpbmdWaWV3IHJlbW92
ZUFsbExlYWRpbmdTb2xpZHVzQ2hhcmFjdGVycyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICB1
bnNpZ25lZCBpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSAn
LycpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJp
bmcoaSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhv
c3RuYW1lKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgLy8gQmVmb3JlIHNldHRpbmcgbmV3IHZh
bHVlOgotICAgIC8vIFJlbW92ZSBhbGwgbGVhZGluZyBVKzAwMkYgU09MSURVUyAoIi8iKSBjaGFy
YWN0ZXJzLgotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGggPSB2
YWx1ZS5sZW5ndGgoKTsKLSAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8nKQotICAgICAgICBpKys7
Ci0KLSAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgIGF1dG8gaG9zdCA9IHJlbW92ZUFsbExl
YWRpbmdTb2xpZHVzQ2hhcmFjdGVycyh2YWx1ZSk7CisgICAgaWYgKGhvc3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBVUkwgdXJsID0gaHJlZigpOwpAQCAtMjEwLDEyICsyMDMs
MTEgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHVybC5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhpKSk7CisgICAgdXJsLnNldEhvc3QoaG9zdCk7
CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LVN0cmluZyBVUkxVdGlsczxUPjo6cG9ydCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBT
dHJpbmcgVVJMVXRpbHM8VD46OnBvcnQoKSBjb25zdAogewogICAgIGlmIChocmVmKCkucG9ydCgp
KQogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKS52YWx1ZSgpKTsK
QEAgLTIyMywzMyArMjE1LDMyIEBAIFN0cmluZyBVUkxVdGlsczxUPjo6cG9ydCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9p
ZCBVUkxVdGlsczxUPjo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0UG9ydChTdHJpbmdWaWV3IHZhbHVlKQogewog
ICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwg
dXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghdXJsLmNh
blNldEhvc3RPclBvcnQoKSkKKyAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSB8fCB1cmwu
cHJvdG9jb2xJcygiZmlsZSIpIHx8ICF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIHVuc2lnbmVkIHBvcnQgPSB2
YWx1ZS50b1VJbnQoJnN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcyB8fCBXVEY6OmlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCi0gICAgICAgIHVybC5yZW1v
dmVQb3J0KCk7Ci0gICAgZWxzZQotICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKKyAgICBhdXRv
IGRpZ2l0c09ubHkgPSB2YWx1ZS5sZWZ0KGNvdW50QVNDSUlEaWdpdHModmFsdWUpKTsKKyAgICBP
cHRpb25hbDx1aW50MTZfdD4gcG9ydDsKKyAgICBpZiAoIWRpZ2l0c09ubHkuaXNFbXB0eSgpKSB7
CisgICAgICAgIHBvcnQgPSBwYXJzZVVJbnQxNihkaWdpdHNPbmx5KTsKKyAgICAgICAgaWYgKCFw
b3J0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woKnBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgIHBvcnQgPSBX
VEY6Om51bGxvcHQ7CisgICAgfQorICAgIHVybC5zZXRQb3J0KHBvcnQpOwogCiAgICAgc2V0SHJl
Zih1cmwuc3RyaW5nKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVN0cmluZyBVUkxV
dGlsczxUPjo6cGF0aG5hbWUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIFVS
TFV0aWxzPFQ+OjpwYXRobmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhyZWYoKS5wYXRoKCku
dG9TdHJpbmcoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFVSTFV0aWxzPFQ+
OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUoU3RyaW5nVmlldyB2YWx1ZSkKIHsKICAgICBV
UkwgdXJsID0gaHJlZigpOwogICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQpAQCAtMjU3
LDMwICsyNDgsMjcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAodmFsdWVbMFVdID09ICcvJykKKyAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgn
LycpKQogICAgICAgICB1cmwuc2V0UGF0aCh2YWx1ZSk7CiAgICAgZWxzZQotICAgICAgICB1cmwu
c2V0UGF0aCgiLyIgKyB2YWx1ZSk7CisgICAgICAgIHVybC5zZXRQYXRoKG1ha2VTdHJpbmcoJy8n
LCB2YWx1ZSkpOwogCiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLVN0cmluZyBVUkxVdGlsczxUPjo6c2VhcmNoKCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxUPjo6c2VhcmNoKCkgY29uc3QKIHsKLSAgICBT
dHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsKLSAgICByZXR1cm4gcXVlcnkuaXNFbXB0eSgp
ID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHF1ZXJ5OworICAgIHJldHVybiBocmVmKCkucXVlcnko
KS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogaHJlZigpLnF1ZXJ5V2l0aExlYWRpbmdRdWVz
dGlvbk1hcmsoKS50b1N0cmluZygpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQg
VVJMVXRpbHM8VD46OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CiAgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIElmIHRoZSBnaXZlbiB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBzZXQgdXJs
J3MgcXVlcnkgdG8gbnVsbC4KICAgICAgICAgdXJsLnNldFF1ZXJ5KHsgfSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1ZVswVV0gPT0gJz8nKSA/IHZhbHVl
LnN1YnN0cmluZygxKSA6IHZhbHVlOworICAgICAgICBTdHJpbmcgbmV3U2VhcmNoID0gdmFsdWUu
c3RhcnRzV2l0aCgnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CiAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0ICcjJyBpbiB0aGUgcXVlcnkgZG9lcyBub3QgbGVhayB0byB0aGUgaGFz
aC4KICAgICAgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMn
LCAiJTIzIikpOwogICAgIH0KQEAgLTI4OCwyMCArMjc2LDE2IEBAIHZvaWQgVVJMVXRpbHM8VD46
OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgVVJMVXRpbHM8VD46Omhhc2go
KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+OjpoYXNoKCkg
Y29uc3QKIHsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gaHJlZigpLmZyYWdtZW50
SWRlbnRpZmllcigpOwotICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gQXRvbVN0cmluZyhTdHJpbmco
IiMiICsgZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgLy8gRklYTUU6IFdoeSBjb252ZXJ0IHRo
aXMgc3RyaW5nIHRvIGFuIGF0b20gaGVyZSBpbnN0ZWFkIG9mIGp1c3QgYSBzdHJpbmc/IEludGVu
dGlvbmFsbHkgdG8gc2F2ZSBtZW1vcnk/IEFuIGVycm9yPworICAgIHJldHVybiBocmVmKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlBdG9tKCkgOiBocmVmKCkuZnJhZ21l
bnRJZGVudGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9BdG9tU3RyaW5nKCk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVUkxVdGlsczxUPjo6c2V0SGFzaChjb25zdCBT
dHJpbmcmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxUPjo6c2V0
SGFzaChTdHJpbmdWaWV3IHZhbHVlKQogewogICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgU3Ry
aW5nIG5ld0ZyYWdtZW50ID0gdmFsdWVbMFVdID09ICcjJyA/IHZhbHVlLnN1YnN0cmluZygxKSA6
IHZhbHVlOworICAgIGF1dG8gbmV3RnJhZ21lbnQgPSB2YWx1ZS5zdGFydHNXaXRoKCcjJykgPyBT
dHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJpbmcoMSkgOiBTdHJpbmdWaWV3KHZhbHVlKTsKICAgICBp
ZiAobmV3RnJhZ21lbnQuaXNFbXB0eSgpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Fk
Q2xpY2tBdHRyaWJ1dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJp
YnV0aW9uLmNwcAppbmRleCA2MzNlNzc1YTU0NTQ0ZmNmZDY2ODdhYmJlY2Y5YWQ4Njg5YTZkZDJm
Li43NmQ0YWZiOTVmZjRiNDZkYzAyYWNjZTA3ZGY0YWVjOWM1NGJmMTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCBi
b29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aXNWYWxpZCgpIGNvbnN0CiAKIEV4cGVjdGVkPEFkQ2xp
Y2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbiwgU3RyaW5nPiBBZENsaWNrQXR0cmlidXRpb246OnBh
cnNlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKLSAgICBpZiAo
IXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIl9zKSB8fCByZWRpcmVjdFVSTC5oYXNVc2Vy
bmFtZSgpIHx8IHJlZGlyZWN0VVJMLmhhc1Bhc3N3b3JkKCkgfHwgcmVkaXJlY3RVUkwuaGFzUXVl
cnkoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudCgpKSB7CisgICAgaWYgKCFyZWRpcmVjdFVS
TC5wcm90b2NvbElzKCJodHRwcyIpIHx8IHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwg
cmVkaXJlY3RVUkwuaGFzUXVlcnkoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewogICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhBZENsaWNrQXR0cmlidXRpb24sICJDb252ZXJzaW9u
IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90IEhUVFBT
IG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBx
dWVyeSBzdHJpbmcsIGFuZCBmcmFnbWVudC4iKTsKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiW0FkIENsaWNrIEF0dHJpYnV0aW9uXSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0
ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29u
dGFpbnMgb25lIG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBxdWVyeSBzdHJpbmcsIGFu
ZCBmcmFnbWVudC4iX3MpOwpAQCAtMTg5LDE3ICsxODksMTIgQEAgVVJMIEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6dXJsRm9yVGVzdGluZyhjb25zdCBVUkwmIGJhc2VVUkwpIGNvbnN0CiAgICAgYXV0byBo
b3N0ID0gbV9zb3VyY2UucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCk7CiAgICAgaWYgKGhvc3Qg
IT0gImxvY2FsaG9zdCIgJiYgaG9zdCAhPSAiMTI3LjAuMC4xIikKICAgICAgICAgcmV0dXJuIFVS
TCgpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiP2NvbnZlcnNpb249Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jb252ZXJz
aW9uLnZhbHVlKCkuZGF0YSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCImY2FtcGFpZ249
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jYW1wYWlnbi5pZCk7Ci0gICAgaWYgKGJh
c2VVUkwuaGFzUXVlcnkoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnJicpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChiYXNlVVJMLnF1ZXJ5KCkpOwotICAgIH0KLSAgICByZXR1cm4gVVJM
KGJhc2VVUkwsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgU3RyaW5nIHJlbGF0aXZlVVJMOwor
ICAgIGlmICghYmFzZVVSTC5oYXNRdWVyeSgpKQorICAgICAgICByZWxhdGl2ZVVSTCA9IG1ha2VT
dHJpbmcoIj9jb252ZXJzaW9uPSIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICImY2FtcGFp
Z249IiwgbV9jYW1wYWlnbi5pZCk7CisgICAgZWxzZQorICAgICAgICByZWxhdGl2ZVVSTCA9IG1h
a2VTdHJpbmcoIj9jb252ZXJzaW9uPSIsIG1fY29udmVyc2lvbi52YWx1ZSgpLmRhdGEsICImY2Ft
cGFpZ249IiwgbV9jYW1wYWlnbi5pZCwgJyYnLCBiYXNlVVJMLnF1ZXJ5KCkpOworICAgIHJldHVy
biBVUkwoYmFzZVVSTCwgcmVsYXRpdmVVUkwpOwogfQogCiB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlv
bjo6bWFya0NvbnZlcnNpb25Bc1NlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCA4MjkwNjI4YzRlZDQ1ZTA1MzFjNDc5
NmZhMjZhZDVhYzRhMWQ2MzM4Li5lMDUzYzliMDNmMDQ2NTBkZWY1NWJlY2Q1OGQxYzYzNjljNjMw
YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIFN0cmluZyB2YWxpZGF0ZUNyb3NzT3JpZ2lu
UmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKICAgICBpZiAoIUxlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQocmVkaXJlY3RV
UkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygibm90IGFsbG93ZWQgdG8gZm9sbG93IGEgY3Jvc3Mtb3JpZ2luIENPUlMgcmVk
aXJlY3Rpb24gd2l0aCBub24gQ09SUyBzY2hlbWUiKTsKIAotICAgIGlmIChyZWRpcmVjdFVSTC5o
YXNVc2VybmFtZSgpIHx8IHJlZGlyZWN0VVJMLmhhc1Bhc3N3b3JkKCkpCisgICAgaWYgKHJlZGly
ZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZWRp
cmVjdGlvbiBVUkwgIiwgcmVkaXJlY3RVUkwuc3RyaW5nKCksICIgaGFzIGNyZWRlbnRpYWxzIik7
CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyMTc3ZjRiNmRiNmIxOTVjYTlkZjgyNzliNWFm
N2JiMTU2ZjViNTBhLi5kZjNkMDhjNzRmZWJjMWI1NGUyNDRlNjNmYzQ5NmZlNjMwYzQzMDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtNTMyLDggKzUzMiw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgLy8g
QW55IGNyZWRlbnRpYWwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3NzLXNp
dGUgcmVxdWVzdHMuCiAgICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsK
ICAgICBtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9IHNlY3VyaXR5Q2hlY2s7Ci0gICAgQVNTRVJU
KG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKLSAg
ICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5
KCkpOworICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8ICFyZXF1ZXN0VVJMLmhhc0Ny
ZWRlbnRpYWxzKCkpOwogCiAgICAgaWYgKCFtX3JlZmVycmVyLmlzTnVsbCgpKQogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtX3JlZmVycmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDNhYWE4ZWVkOGMzMzdlNzlkOTg4OGE0NTVmMzlmZjNm
ZWU0YjVhMzYuLjMwYWY5MDA4MDQ5YThlMzk4MmY5YzliZjQ5ZGFlYmZjOTJlYTY4MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtNzgsMTEgKzc4LDExIEBA
IHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVSTCYgdXJsLCBjb25z
dCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAgICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmlu
Z0FzRm9ybURhdGEoYm9keURhdGEsIGJvZHkudXRmOCgpKTsKICAgICBib2R5ID0gU3RyaW5nKGJv
ZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6ZSgpKS5yZXBsYWNlV2l0aExpdGVyYWwoJysnLCAi
JTIwIik7CiAKLSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAgICBhdXRvIHF1ZXJ5
ID0gdXJsLnF1ZXJ5KCk7CiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnNl
dFF1ZXJ5KGJvZHkpOwogICAgIGVsc2UKLSAgICAgICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5ICsgJyYn
ICsgYm9keSk7CisgICAgICAgIHVybC5zZXRRdWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAnJicsIGJv
ZHkpKTsKIH0KIAogdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VBY3Rpb24o
Y29uc3QgU3RyaW5nJiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCA3ZmZmODI2OTYwMDhkMzIxMDI1M2Y1MzI2NzJhZjU3MjE1NjJjNGMwLi4zMjQxNzA1Zjg5
MzYyZjBhMTQ1YTAzNWI5NTZiZWVmNzMxN2FlNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTExNTEsOSArMTE1MSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJ
blNhbWVEb2N1bWVudChjb25zdCBVUkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0
CiAKICAgICAgICAgaGlzdG9yeSgpLnVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvckZyYWdtZW50U2Ny
b2xsKCk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaGFzaENoYW5nZSA9IGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIodXJsLCBvbGRVUkwpICYmIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSAhPSBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgCisKKyAgICBib29sIGhhc2hD
aGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgb2xkVVJMKSAmJiAh
ZXF1YWxSZXNwZWN0aW5nTnVsbGl0eSh1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCksIG9sZFVSTC5m
cmFnbWVudElkZW50aWZpZXIoKSk7CisKICAgICBoaXN0b3J5KCkudXBkYXRlRm9yU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbigpOwogCiAgICAgLy8gSWYgd2Ugd2VyZSBpbiB0aGUgYXV0b3Njcm9sbC9w
YW5TY3JvbGwgbW9kZSB3ZSB3YW50IHRvIHN0b3AgaXQgYmVmb3JlIGZvbGxvd2luZyB0aGUgbGlu
ayB0byB0aGUgYW5jaG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCAzMjNkYjQ2MzYwMjk4YjhhOTFiYjAw
YTQ3OTI0YmIyZTgxMTFmMzM4Li40ODgyZDc3ZTEyNzE2OTg1YzQ2NDUxZGYwZWM3NDBhNzkzOTNj
NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI0NiwxNSArMjQ2LDEyIEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hCiAKIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25z
dCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBqdXN0IHVzZSBmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoIGluc3RlYWQ/CiAjaWYgVVNFKENGKSAmJiBQTEFURk9STShXSU4p
Ci0gICAgVVJMIHVybChhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBh
dGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2Up
KS5nZXQoKSk7CisgICAgLy8gRklYTUU6IElzIHRoaXMgY29ycmVjdD8gU2VlbXMgaW1wcm9iYWJs
ZSB0aGF0IHRoZSBwYXNzZWQtaW4gcGF0aHMgd291bGQgYmUgaW4gdGhlIFdpbmRvd3MgcGF0aCBz
dHlsZS4KKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgw
LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZh
bHNlKSkuZ2V0KCk7CiAjZWxzZQotICAgIFVSTCB1cmw7Ci0gICAgdXJsLnNldFByb3RvY29sKCJm
aWxlIl9zKTsKLSAgICB1cmwuc2V0UGF0aChwYXRoKTsKKyAgICByZXR1cm4gVVJMOjpmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKHBhdGgpOwogI2VuZGlmCi0gICAgcmV0dXJuIHVybDsKIH0KIAog
c3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGZhYWU1MWY5OWY2MmIyZjI5
ZDVjYmI4YWVjZmNlYjE2YWRjMmViNTQuLjczNGRhNzY2MmQ0OWE2MjI1OWRlNjFmZWQ4Y2JlYjcw
MGVkMmFjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5p
ZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVXaGl0ZWxpc3QsIFVua25vd24g
fTsKIAotc3RhdGljIFN0cmluZyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkK
K3N0YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQog
ewogICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RVUkwucGF0aCgpOwogICAgIEFTU0VS
VChtYW5pZmVzdFBhdGhbMF0gPT0gJy8nKTsKICAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBh
dGguc3Vic3RyaW5nKDAsIG1hbmlmZXN0UGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7CiAgICAg
QVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSBtYW5pZmVzdFBhdGhbbWFuaWZlc3RQYXRoLmxlbmd0
aCgpIC0gMV0pOwotICAgIHJldHVybiBtYW5pZmVzdFBhdGgudG9TdHJpbmcoKTsKKyAgICByZXR1
cm4gbWFuaWZlc3RQYXRoOwogfQogCiBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5p
ZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wg
cGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlm
ZXN0TUlNRVR5cGUsIGNvbnN0CiAgICAgQVNTRVJUKG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5pc0Vt
cHR5KCkpOwogICAgIG1hbmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gZmFsc2U7CiAK
LSAgICBTdHJpbmcgbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0
VVJMKTsKKyAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5p
ZmVzdFVSTCk7CiAKICAgICBjb25zdCBjaGFyIGNhY2hlTWFuaWZlc3RNSU1FVHlwZVtdID0gInRl
eHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJvb2wgYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNp
ZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlN
RVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggM2Y0Njk5Y2Y4MzI5OGYwNGUyNzRhZTAwZWY5NWE1NTQ3
NWE2NWYzZC4uY2Q5NDllN2MxMzBkOTY2MjgyZjE5YjUyYzhkYTMxZDAwNGE2ODE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtODYsMTAgKzg2LDcg
QEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JikKIAogU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25z
dAogewotICAgIGF1dG8mIHVybCA9IHRoaXMtPnVybCgpOwotICAgIGlmICghdXJsLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHVy
bC5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlm
aWVyKCkudG9TdHJpbmcoKTsKIH0KIAogYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDZhMjhhODU3MWM1ZWNhNjI3
ZDNlNmU3ZDE0Zjc5YTc2Mzg2OTY1YjMuLmU0YTk0YTUwNTk2MWFhMzc5N2ZhNmQwNGVhNjVjNjQ1
NjVhZDk2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFN0cmluZyBDYWNoZWRSZXNv
dXJjZVJlcXVlc3Q6OnNwbGl0RnJhZ21lbnRJZGVudGlmaWVyRnJvbVJlcXVlc3RVUkwoUmVzb3Vy
Y2VSZXF1CiAgICAgaWYgKCFNZW1vcnlDYWNoZTo6c2hvdWxkUmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKHJlcXVlc3QudXJsKCkpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBy
ZXF1ZXN0LnVybCgpOwotICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgYXV0byBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKICAgICByZXR1cm4gZnJhZ21lbnRJZGVu
dGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGI0Y2ZiNzUzMTc5NjkyNjg5
ZDNkNjYxYWJjZDVmZDczN2ViMGVkYmUuLjdjMTFkYmZiNmM0YzBmOWJiZGVjNGE5OGVhZWQyMzRm
ZTBkOTNiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIxNzksOCArMjE3OSw4
IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN0b3JlU2Nyb2xsYmFyKCkKIAogYm9vbCBGcmFtZVZpZXc6
OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgU3RyaW5nIGZyYWdtZW50
SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBpZiAoc2Nyb2xsVG9G
cmFnbWVudEludGVybmFsKGZyYWdtZW50SWRlbnRpZmllcikpCisgICAgYXV0byBmcmFnbWVudElk
ZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgaWYgKHNjcm9sbFRvRnJh
Z21lbnRJbnRlcm5hbChmcmFnbWVudElkZW50aWZpZXIudG9TdHJpbmcoKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIGRlY29kaW5nIHRoZSByZWYsIGJh
c2VkIG9uIHRoZSBkb2N1bWVudCdzIGVuY29kaW5nLgpAQCAtMjE5NSw3ICsyMTk1LDcgQEAgYm9v
bCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwpCiAKIGJvb2wgRnJh
bWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBmcmFnbWVudElk
ZW50aWZpZXIpCiB7Ci0gICAgTE9HKFNjcm9sbGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNo
b3IgJXMiLCBmcmFnbWVudElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKFNjcm9s
bGluZywgIkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFsICVzIiwgZnJhZ21lbnRJ
ZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gSWYgb3VyIFVSTCBoYXMgbm8gcmVm
LCB0aGVuIHdlIGhhdmUgbm8gcGxhY2Ugd2UgbmVlZCB0byBqdW1wIHRvLgogICAgIGlmIChmcmFn
bWVudElkZW50aWZpZXIuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA5YzU4
YjA2ZjRjNDcxMTMwY2U0ODE1ZjExZDE0Y2I3OGY4MWI0OWEwLi4zOGZkN2IyOWI1M2VhYjQ4NGUz
MDk2M2I1MWM4YWU1MjVjNWQ3YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTIwMSwx
MyArMjAxLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQo
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAgICAgICAgIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSA9IHN0YXRlT2JqZWN0VHlwZSA9PSBTdGF0ZU9iamVjdFR5cGU6OlJlcGxh
Y2UgPyAiaGlzdG9yeS5yZXBsYWNlU3RhdGUoKSIgOiAiaGlzdG9yeS5wdXNoU3RhdGUoKSI7CiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBtYWtlU3RyaW5nKCJCbG9j
a2VkIGF0dGVtcHQgdG8gdXNlICIsIGZ1bmN0aW9uTmFtZSwgIiB0byBjaGFuZ2Ugc2Vzc2lvbiBo
aXN0b3J5IFVSTCBmcm9tICIsIGRvY3VtZW50VVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCgpLCAiIHRvICIsIGZ1bGxVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCks
ICIuICIsIHN1ZmZpeCkgfTsKICAgICB9OwotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVu
dFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0gZG9jdW1lbnRVUkwucGFzcygpKQorICAg
IGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8
fCBmdWxsVVJMLnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzd29y
ZCgpICE9IGRvY3VtZW50VVJMLnBhc3N3b3JkKCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9j
a2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQcm90b2NvbHMsIGRvbWFpbnMs
IHBvcnRzLCB1c2VybmFtZXMsIGFuZCBwYXNzd29yZHMgbXVzdCBtYXRjaC4iKTsKIAogICAgIGNv
bnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKTsKICAgICAvLyBXZSBhbGxvdyBzYW5kYm94ZWQgZG9jdW1lbnRzLCAnZGF0
YTonLydmaWxlOicgVVJMcywgZXRjLiB0byB1c2UgJ3B1c2hTdGF0ZScvJ3JlcGxhY2VTdGF0ZScg
dG8gbW9kaWZ5IHRoZSBVUkwgcXVlcnkgYW5kIGZyYWdtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzAyOCBmb3IgdGhlIGNvbXBhdGli
aWxpdHkgY29uY2VybnMuCi0gICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRpb24gPSAoZG9jdW1l
bnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc1Vu
aXF1ZSgpKSAmJiBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChkb2N1bWVudFVSTCwgZnVs
bFVSTCk7CisgICAgYm9vbCBhbGxvd1NhbmRib3hFeGNlcHRpb24gPSAoZG9jdW1lbnRTZWN1cml0
eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc1VuaXF1ZSgpKQor
ICAgICAgICAmJiBkb2N1bWVudFVSTC5zdHJpbmdXaXRob3V0UXVlcnlPckZyYWdtZW50SWRlbnRp
ZmllcigpID09IGZ1bGxVUkwuc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIo
KTsKIAogICAgIGlmICghYWxsb3dTYW5kYm94RXhjZXB0aW9uICYmICFkb2N1bWVudFNlY3VyaXR5
T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0aCgpICE9IGRvY3VtZW50
VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRVUkwucXVlcnkoKSkpCiAg
ICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3Vm
Zml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3QgbWF0Y2ggZm9yIGEgc2FuZGJveGVkIGRvY3Vt
ZW50LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCAyODc4OWNkMTQyOTgzMmMxZjI3
MmE2YWFkNWViMWU4YjYyODgyZWM3Li4zNmMxYzliYmNjYTEwNmM4ZWI1N2YxYmVhNjM3MGIwZTI4
N2EyODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtNjEsMTQgKzYxLDggQEAgaW5s
aW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiAKIFN0cmluZyBMb2NhdGlvbjo6
aHJlZigpIGNvbnN0CiB7Ci0gICAgYXV0byYgdXJsID0gdGhpcy0+dXJsKCk7Ci0KLSAgICBpZiAo
IXVybC5oYXNVc2VybmFtZSgpICYmICF1cmwuaGFzUGFzc3dvcmQoKSkKLSAgICAgICAgcmV0dXJu
IHVybC5zdHJpbmcoKTsKLQotICAgIFVSTCB1cmxXaXRob3V0Q3JlZGVudGlhbHModXJsKTsKLSAg
ICB1cmxXaXRob3V0Q3JlZGVudGlhbHMuc2V0VXNlcihXVEY6OmVtcHR5U3RyaW5nKCkpOwotICAg
IHVybFdpdGhvdXRDcmVkZW50aWFscy5zZXRQYXNzKFdURjo6ZW1wdHlTdHJpbmcoKSk7CisgICAg
VVJMIHVybFdpdGhvdXRDcmVkZW50aWFscyh1cmwoKSk7CisgICAgdXJsV2l0aG91dENyZWRlbnRp
YWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgcmV0dXJuIHVybFdpdGhvdXRDcmVkZW50aWFs
cy5zdHJpbmcoKTsKIH0KIApAQCAtOTEsMjAgKzg1LDE5IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9z
dG5hbWUoKSBjb25zdAogCiBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25zdAogewotICAgIGNv
bnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJuIHVybC5wb3J0KCkgPyBTdHJp
bmc6Om51bWJlcih1cmwucG9ydCgpLnZhbHVlKCkpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRv
IHBvcnQgPSB1cmwoKS5wb3J0KCk7CisgICAgcmV0dXJuIHBvcnQgPyBTdHJpbmc6Om51bWJlcigq
cG9ydCkgOiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnBhdGhuYW1lKCkg
Y29uc3QKIHsKICAgICBhdXRvIHBhdGggPSB1cmwoKS5wYXRoKCk7Ci0gICAgcmV0dXJuIHBhdGgu
aXNFbXB0eSgpID8gIi8iIDogcGF0aC50b1N0cmluZygpOworICAgIHJldHVybiBwYXRoLmlzRW1w
dHkoKSA/ICIvIl9zIDogcGF0aC50b1N0cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnNl
YXJjaCgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKLSAgICBy
ZXR1cm4gdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHVybC5x
dWVyeSgpOworICAgIHJldHVybiB1cmwoKS5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5n
KCkgOiB1cmwoKS5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkudG9TdHJpbmcoKTsKIH0K
IAogU3RyaW5nIExvY2F0aW9uOjpvcmlnaW4oKSBjb25zdApAQCAtMTI1LDggKzExOCw3IEBAIFJl
ZjxET01TdHJpbmdMaXN0PiBMb2NhdGlvbjo6YW5jZXN0b3JPcmlnaW5zKCkgY29uc3QKIAogU3Ry
aW5nIExvY2F0aW9uOjpoYXNoKCkgY29uc3QKIHsKLSAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50
SWRlbnRpZmllciA9IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIHJldHVybiBmcmFn
bWVudElkZW50aWZpZXIuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50
SWRlbnRpZmllcjsKKyAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0
eSgpID8gZW1wdHlTdHJpbmcoKSA6IHVybCgpLmZyYWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5n
TnVtYmVyU2lnbigpLnRvU3RyaW5nKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9u
OjpzZXRIcmVmKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93
LCBjb25zdCBTdHJpbmcmIHVybCkKQEAgLTE0NCw3ICsxMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0UHJvdG9jb2woRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRv
dyYgZmlycwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYg
KCF1cmwuc2V0UHJvdG9jb2wocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U3ludGF4RXJyb3IgfTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJz
dFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OnNldEhvc3QoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTE1NCw3ICsxNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBm
aXJzdFdpbgogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAg
IHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CkBAIC0xNjQsNyArMTU2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3Ru
YW1lKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnMKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVy
bC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93
LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0
aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9j
YXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RX
aW5kb3csIGNvbnN0IFN0cmluZyYgcG9ydFN0cmluZykKQEAgLTE3MywxMiArMTY1LDggQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW4KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9
OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgaW50IHBvcnQg
PSBwb3J0U3RyaW5nLnRvSW50KCk7Ci0gICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweEZGRkYg
fHwgcG9ydFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHVybC5yZW1vdmVQb3J0KCk7Ci0gICAg
ZWxzZQotICAgICAgICB1cmwuc2V0UG9ydChwb3J0KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24o
YWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKKyAgICB1cmwuc2V0UG9y
dChwYXJzZVVJbnQxNihwb3J0U3RyaW5nKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2
ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0
aW9uOjpzZXRQYXRobmFtZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFdpbmRvdywgY29uc3QgU3RyaW5nJiBwYXRobmFtZSkKQEAgLTE4OCw3ICsxNzYsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UGF0aG5hbWUoRE9NV2luZG93JiBhY3RpdmVXaW5k
b3csIERPTVdpbmRvdyYgZmlycwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFBhdGgocGF0aG5hbWUpOwotICAg
IHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5n
KCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1
cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0U2VhcmNoKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHNl
YXJjaCkKQEAgLTE5OCw3ICsxODYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0
U2VhcmNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0VwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAg
ICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZp
cnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhhc2gpCkBAIC0yMTgsNyArMjA2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERP
TVdpbmRvdyYgZmlyc3RXaW4KICAgICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVy
cyBhcmUgaWdub3JlZCBvciBpbnZhbGlkLiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ051bGxpdHko
b2xkRnJhZ21lbnRJZGVudGlmaWVyLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKQogICAgICAg
ICByZXR1cm4geyB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5k
b3csIGZpcnN0V2luZG93LCB1cmwpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
YXNzaWduKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBj
b25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcAppbmRleCBhY2U1YjdlZDk3MDFlMjQxZTQwYTU3ZGU2NDE4ZDk4YzEyOWQ5Mzg1
Li4yZDUxNDY5OWIxMTcxZTljNzQ4NjYxMmE3YjFhNWU1NWEyYmFjZmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0xNDcsMjIgKzE0Nywx
OSBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0
ZXN0KSBjb25zdAogICAgIHJldHVybiBob3N0W2hvc3QubGVuZ3RoKCkgLSBtX2hvc3QubGVuZ3Ro
KCkgLSAxXSA9PSAnLic7CiB9CiAKLXN0cnVjdCBNYXRjaFRlc3Rlcgoteworc3RydWN0IE1hdGNo
VGVzdGVyIHsKICAgICBTdHJpbmdWaWV3IG1fcGF0dGVybjsKLSAgICB1bnNpZ25lZCBtX3BhdHRl
cm5JbmRleDsKLSAgICAKKyAgICB1bnNpZ25lZCBtX3BhdHRlcm5JbmRleCB7IDAgfTsKKwogICAg
IFN0cmluZ1ZpZXcgbV90ZXN0OwotICAgIHVuc2lnbmVkIG1fdGVzdEluZGV4OwotICAgIAorICAg
IHVuc2lnbmVkIG1fdGVzdEluZGV4IHsgMCB9OworCiAgICAgTWF0Y2hUZXN0ZXIoU3RyaW5nVmll
dyBwYXR0ZXJuLCBTdHJpbmdWaWV3IHRlc3QpCi0gICAgOiBtX3BhdHRlcm4ocGF0dGVybikKLSAg
ICAsIG1fcGF0dGVybkluZGV4KDApCi0gICAgLCBtX3Rlc3QodGVzdCkKLSAgICAsIG1fdGVzdElu
ZGV4KDApCisgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCisgICAgICAgICwgbV90ZXN0KHRl
c3QpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGJvb2wgdGVzdFN0cmluZ0ZpbmlzaGVkKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXN0SW5kZXggPj0gbV90ZXN0Lmxlbmd0aCgpOyB9CiAgICAgYm9v
bCBwYXR0ZXJuU3RyaW5nRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5JbmRleCA+
PSBtX3BhdHRlcm4ubGVuZ3RoKCk7IH0KIApAQCAtMTc0LDcgKzE3MSw3IEBAIHN0cnVjdCBNYXRj
aFRlc3RlcgogICAgICAgICAgICAgbV9wYXR0ZXJuSW5kZXgrKzsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHZvaWQgZWF0U2FtZUNoYXJzKCkKICAgICB7CiAgICAgICAgIHdoaWxlICgh
cGF0dGVyblN0cmluZ0ZpbmlzaGVkKCkgJiYgIXRlc3RTdHJpbmdGaW5pc2hlZCgpKSB7CkBAIC0y
MjYsOCArMjIzLDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAKIGJvb2wgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzUGF0aChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7Ci0gICAgTWF0Y2hU
ZXN0ZXIgbWF0Y2goU3RyaW5nVmlldyhtX3BhdGgpLCB0ZXN0LnBhdGgoKSk7Ci0gICAgcmV0dXJu
IG1hdGNoLnRlc3QoKTsKKyAgICByZXR1cm4gTWF0Y2hUZXN0ZXIobV9wYXRoLCB0ZXN0LnBhdGgo
KSkudGVzdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDRhMGMzNGVjYTcyNDJiZGE3MjUy
ODQ4YjNhOGNlMmQxMzVmNzQzNWIuLjQ3MGZlNTQ5NTRlMWIzYzQ3ZWVmMDVlNzg1MGNiNWJhMmM5
OTVmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
CkBAIC03OTAsMTYgKzc5MCwxMCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFs
aXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIFN0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoZmlsZW5hbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkpCi0gICAgICAgIHJldHVy
biBmaWxlbmFtZTsKLQotICAgIGlmIChmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpICE9IG5vdEZv
dW5kKQorICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkgfHwgZmlsZW5hbWUuY29udGFpbnMoJy4n
KSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkp
CiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsKIAotICAgIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNp
b24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0
byBwcmVmZXJyZWRFeHRlbnNpb24gPSBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSht
aW1lVHlwZSk7CiAgICAgaWYgKHByZWZlcnJlZEV4dGVuc2lvbi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGFiN2U2MDU0MmIwMTgyY2ZhYjZiZjIyMDZmNDg3ODhm
MTg0MWM2MzguLmM4MjhiYmU3ZTc3NTVlZTcxMTIxNzIzZTlmMTcwMjdlZDFmYWUyNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTQ0MSwxMiArNDQxLDEyIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAgICAgQXRvbVN0cmlu
ZyBjb250YWluZXJUeXBlID0gbV9jb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7CiAgICAgaWYg
KGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gYXBwbGljYXRpb25P
Y3RldFN0cmVhbSgpIHx8IGNvbnRhaW5lclR5cGUgPT0gdGV4dFBsYWluKCkpIHsKICAgICAgICAg
aWYgKG1fdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0g
Q29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOworICAgICAg
ICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlRnJvbURhdGFVUkwobV91
cmwpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25l
bnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhD
b21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBw
b3MgPSBsYXN0UGF0aENvbXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwogICAgICAgICAgICAgaWYg
KHBvcyAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBs
YXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcocG9zICsgMSk7CisgICAgICAgICAgICAgICAgU3Ry
aW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhwb3MgKyAxKS50b1N0
cmluZygpOwogICAgICAgICAgICAgICAgIFN0cmluZyBtZWRpYVR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
Y29udGVudFR5cGUgPSBDb250ZW50VHlwZSB7IFdURk1vdmUobWVkaWFUeXBlKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MTYyYWRh
ZTZiZmY1MTY3MWUzYmU1MzIyMjdlN2RlNTc5OTlmZGYwLi4yZWM5NzVjYjEwNDVhZTRjODc0OTdj
ZDlhMGFjZTAyZjkyMTFkOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRU
b0ludGVybmFsUHJvdG9jb2woVVJMJiB1cmwpCiAgICAgaWYgKHdlYmtpdEdzdENoZWNrVmVyc2lv
bigxLCAxMiwgMCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSkKLSAgICAgICAgdXJsLnNldFByb3Rv
Y29sKCJ3ZWJraXQrIiArIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgdXJsLnNldFByb3RvY29s
KG1ha2VTdHJpbmcoIndlYmtpdCsiLCB1cmwucHJvdG9jb2woKSkpOwogfQogCiAjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA3MjhmYTJlODc5YjBlNzYxYTQ5
NWRjNGFjYTMwODY0NGJkNjRlMDBlLi5kM2IzMzgyNzkxZWYyYzAyMjNhNzY0MzE3MTNmMThiMWYz
MmU2YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1fZmlyc3RSZXF1ZXN0LnVybCgpOwogICAgICAg
ICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICBtX3Bhc3MgPSB1cmwucGFzcygpOworICAg
ICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgIG1fZmlyc3RSZXF1ZXN0
LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgfQogICAgIApAQCAtOTYsNyArOTYsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBTdWdnZXN0ZWQgY3JlZGVudGlhbHMgZm9yIHRoZSBjdXJyZW50IHJlZGly
ZWN0aW9uIHN0ZXAuCiAgICAgU3RyaW5nIG1fdXNlcjsKLSAgICBTdHJpbmcgbV9wYXNzOworICAg
IFN0cmluZyBtX3Bhc3N3b3JkOwogICAgIAogICAgIENyZWRlbnRpYWwgbV9pbml0aWFsQ3JlZGVu
dGlhbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGE5MzczMjAzNTMxMmNjNDdkMDkyMjBhZDg0
ZjJmYjJlOGY3MzQyZGUuLjUzMGVjY2ZhZTc5M2UzNWRlZTk5ZWMwNDA3NzA3YTM4ZjljN2M5ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcApAQCAtMTY1LDEyICsxNjUsMTAgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpyZW1vdmVDcmVkZW50aWFscygpCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7IAogCi0gICAgaWYgKG1fdXJsLnVzZXIoKS5pc0VtcHR5KCkgJiYgbV91cmwucGFzcygpLmlz
RW1wdHkoKSkKKyAgICBpZiAoIW1fdXJsLmhhc0NyZWRlbnRpYWxzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fdXJsLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIG1fdXJsLnNldFBhc3MoU3Ry
aW5nKCkpOwotCisgICAgbV91cmwucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICBtX3BsYXRmb3Jt
UmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggOTAw
ODFjYmVjMDlmMTAwMjRiZThhMDBkNzdiYTkyYWYzZDdlN2RiMi4uM2VjZjcxZTkxNDdmMjQ0Y2Fh
MmU0ZTJiNmQ5NjAyMjdjMjM3NmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNCw3ICsy
NCw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgpAQCAtNTks
NyArNTgsNiBAQAogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxwcm9jZXNzLmg+CiAKLS8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4gV2ViS2l0U3VwcG9y
dExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5l
Y3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoCiAgIENGQWxsb2Nh
dG9yUmVmICAgICAgICAgICBhbGxvYywKQEAgLTEzMywxMSArMTMxLDExIEBAIHN0YXRpYyB2b2lk
IHNldENsaWVudENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0aWVzKENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgc3NsUHJvcHMsCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlv
bihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgUmVmUHRyPFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlPiYmIG1lc3NhZ2VRdWV1ZSwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFBy
b3BlcnRpZXMpCiB7Ci0gICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNz
LmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSkgeworICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzc3dvcmQu
aXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKSB7CiAgICAgICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2FuIG9ubHkgYmUgcGFzc2Vk
IGluIFVSTCwgdGhlIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBkZWxlZ2F0ZSBj
YWxsIHdvbid0IGJlIG1hZGUuCiAgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RS
ZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5t
X3VzZXIpOwotICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwor
ICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzc3dvcmQoZC0+bV9wYXNzd29yZCk7CiAg
ICAgICAgIGZpcnN0UmVxdWVzdCgpLnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwogICAgIH0K
IApAQCAtMTQ2LDcgKzE0NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29u
bmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2Yg
dGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9u
LAogICAgIC8vIHRyeSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBh
bGxvd2VkIGJ5IFJGQyAyNjE3LgogICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSAm
JiBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKLSAgICAg
ICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3N3b3JkLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhh
dCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQ
IEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKICAgICAgICAgICAgIC8vIHRyeSBhbmQgcmV1c2UgdGhl
IGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgogICAgICAg
ICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Np
b24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCBmaXJzdFJlcXVlc3QoKS51
cmwoKSk7CkBAIC0xNTQsNyArMTUyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSBwcm90ZWN0aW9uIHNwYWNlIGtub3duIGZv
ciB0aGUgVVJMLCB1cGRhdGUgc3RvcmVkIGNyZWRlbnRpYWxzIGJlZm9yZSBzZW5kaW5nIGEgcmVx
dWVzdC4KICAgICAgICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50
IGxvZ291dCBieSBzZW5kaW5nIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0
IGNyZWRlbnRpYWxzLCBhbmQgYWJvcnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8v
IChzbyB0aGF0IGFuIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCi0gICAg
ICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdl
KCkuc2V0KHBhcnRpdGlvbiwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAg
IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQo
cGFydGl0aW9uLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgfQogICAg
IH0KICAgICAgICAgCkBAIC0yOTIsNyArMjkwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UK
IHsKICAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgZC0+bV91c2VyID0g
dXJsLnVzZXIoKTsKLSAgICBkLT5tX3Bhc3MgPSB1cmwucGFzcygpOworICAgIGQtPm1fcGFzc3dv
cmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5o
dHRwTWV0aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCkBAIC0zMDYs
NyArMzA0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBPbmx5IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlm
IHRoaXMgaXMgYWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8v
IFVSTCBkaWRuJ3QgaW5jbHVkZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgotICAgICAgICBpZiAo
ZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQt
Pm1fcGFzc3dvcmQuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VT
ZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwgcmVxdWVzdC51cmwo
KSk7CiAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7CkBAIC0zNzEsOCArMzY5
LDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAgIFN0cmluZyBwYXJ0aXRpb24gPSBm
aXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpOwogCi0gICAgaWYgKCFkLT5tX3VzZXIuaXNO
dWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
ZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJz
aXN0ZW5jZU5vbmUpKTsKKyAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNz
d29yZC5pc051bGwoKSkgeworICAgICAgICBhdXRvIGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAs
IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwu
Z2V0KCkpOwogI2Vsc2UKQEAgLTM4Niw3ICszODQsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aAogICAgICAgICAKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKICAgICAgICAgZC0+bV91c2VyID0gU3RyaW5nKCk7Ci0gICAgICAgIGQt
Pm1fcGFzcyA9IFN0cmluZygpOworICAgICAgICBkLT5tX3Bhc3N3b3JkID0gU3RyaW5nKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWNpZmljYXRpb24sIHRoZSB1c2VyIHNob3VsZG4n
dCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMgaWYgdGhlcmUgd2VyZSBpbmNvcnJlY3Qgb25lcyBw
cm92aWRlZCBleHBsaWNpdGx5LgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmNwcAppbmRleCAwYzJkM2YwNDQzMDY1MWIzMzE5NTJiNmQwMTlmZTU2ZDFjNmIwNDU0
Li5mNzUyYTZlZTM1YTcyMGM2ZDdiZDlhNGU3NTg5MWRkMGE5NGFlOGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0
aW5ncy5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxjdXJsL2N1
cmwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdWludDE2X3QgU29ja3NQcm94eVBv
cnQgPSAxMDgwOworY29uc3RleHByIHVpbnQxNl90IFNvY2tzUHJveHlQb3J0ID0gMTA4MDsKIAot
c3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQcm94eVBvcnQoY29uc3QgVVJMJik7CiBzdGF0
aWMgT3B0aW9uYWw8U3RyaW5nPiBjcmVhdGVQcm94eVVybChjb25zdCBVUkwmKTsKIAogQ3VybFBy
b3h5U2V0dGluZ3M6OkN1cmxQcm94eVNldHRpbmdzKFVSTCYmIHByb3h5VXJsLCBTdHJpbmcmJiBp
Z25vcmVIb3N0cykKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBDdXJsUHJveHlTZXR0aW5nczo6cmVi
dWlsZFVybCgpCiB2b2lkIEN1cmxQcm94eVNldHRpbmdzOjpzZXRVc2VyUGFzcyhjb25zdCBTdHJp
bmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAgbV91cmwuc2V0VXNlcih1
c2VyKTsKLSAgICBtX3VybC5zZXRQYXNzKHBhc3N3b3JkKTsKKyAgICBtX3VybC5zZXRQYXNzd29y
ZChwYXNzd29yZCk7CiAKICAgICByZWJ1aWxkVXJsKCk7CiB9CkBAIC0xMTgsOCArMTE4LDggQEAg
c3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3JlYXRlUHJveHlVcmwoY29uc3QgVVJMICZ1cmwpCiAg
ICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byB1
c2VycGFzcyA9ICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dvcmQoKSkgPyBtYWtl
U3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJsLnBhc3MoKSwgIkAiKSA6IFN0cmluZygpOwotICAg
IHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgpLCAiOi8vIiwgdXNlcnBhc3MsIHVybC5o
b3N0KCksICI6IiwgU3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKKyAgICBhdXRvIHVzZXJwYXNzID0g
dXJsLmhhc0NyZWRlbnRpYWxzKCkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCksICI6IiwgdXJsLnBh
c3N3b3JkKCksICJAIikgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyh1cmwucHJv
dG9jb2woKSwgIjovLyIsIHVzZXJwYXNzLCB1cmwuaG9zdCgpLCAiOiIsICpwb3J0KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQ
cm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFByb3h5U2V0dGluZ3MuaAppbmRleCBhZjMxMzU0NmM0NGEzMjc3ZjA2YjQ4NTRlZjAzMDI3Yjg1
ODE0NDAzLi41ODNlMDBjNGUzMTQ2OTllYTFmNTQyZmUzNjkyNGJlZDBlMjFiMzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5
U2V0dGluZ3MuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFVzZXJQYXNzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIGNv
bnN0IFN0cmluZyB1c2VyKCkgY29uc3QgeyByZXR1cm4gbV91cmwudXNlcigpOyB9Ci0gICAgY29u
c3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwucGFzcygpOyB9CisgICAg
Y29uc3QgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV91cmwucGFzc3dvcmQoKTsg
fQogCiAgICAgdm9pZCBzZXREZWZhdWx0QXV0aE1ldGhvZCgpIHsgbV9hdXRoTWV0aG9kID0ga0NV
UkxBVVRIX0FOWTsgfQogICAgIHZvaWQgc2V0QXV0aE1ldGhvZChsb25nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggNDkxNWQ5MGRmYWIyY2E0NWZkZmNjYzkxODJkZmFmYTM4ZmU2NGFhNi4u
NDBjNzk4YTNhNTRjY2UxMmViNzcwNWI2MWExMTMzNjJkYmY2YTBjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKQEAgLTIxNCw4ICsyMTQsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbAogCiAg
ICAgU3RyaW5nIHBhcnRpdGlvbiA9IGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCk7CiAK
LSAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQt
Pm1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsKGQt
Pm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAKICAg
ICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGwKICAgICAgICAgcmVzdGFydFJlcXVlc3RXaXRoQ3JlZGVudGlhbChj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNyZWRlbnRpYWwpOwogCiAgICAgICAgIGQtPm1f
dXNlciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmcoKTsKKyAgICAgICAg
ZC0+bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVj
aWZpY2F0aW9uLCB0aGUgdXNlciBzaG91bGRuJ3QgYmUgYXNrZWQgZm9yIGNyZWRlbnRpYWxzIGlm
IHRoZXJlIHdlcmUgaW5jb3JyZWN0IG9uZXMgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
CiBPcHRpb25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q3JlZGVudGlhbChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcmVkaXJlY3QpCiB7CiAgICAgLy8gbV91
c2VyL21fcGFzcyBhcmUgY3JlZGVudGlhbHMgZ2l2ZW4gbWFudWFsbHksIGZvciBpbnN0YW5jZSwg
YnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gWE1MSHR0cFJlcXVlc3Qub3BlbigpLgotICAgIENy
ZWRlbnRpYWwgY3JlZGVudGlhbCB7IGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lIH07CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsIHsgZC0+bV91c2VyLCBk
LT5tX3Bhc3N3b3JkLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lIH07CiAKICAgICBpZiAoc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSkgewogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0g
cmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpOwpAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdCgpCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQ
UmVmZXJyZXIoKTsKIAogICAgIGQtPm1fdXNlciA9IG5ld1VSTC51c2VyKCk7Ci0gICAgZC0+bV9w
YXNzID0gbmV3VVJMLnBhc3MoKTsKKyAgICBkLT5tX3Bhc3N3b3JkID0gbmV3VVJMLnBhc3N3b3Jk
KCk7CiAgICAgbmV3UmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAgaWYgKGNyb3Nz
T3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IDc2N2M1Nzk0OTk5Yzk0NjExODBiY2ZlZjBj
MmExOTIyZmExMDcyZDYuLmVlNjAzZDcyMmY0MWQwZDZmN2M0NmI5MDZmYjdhNTUxMDUyMGYzN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNDIsMTUgKzE0MiwxNSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbAogI2VuZGlmCiB7CiAgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBi
ZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29uJ3QgYmUgbWFkZS4KLSAgICBpZiAoKCFkLT5tX3Vz
ZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCku
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgaWYgKCghZC0+bV91c2VyLmlz
RW1wdHkoKSB8fCAhZC0+bV9wYXNzd29yZC5pc0VtcHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgVVJMIHVybFdpdGhDcmVk
ZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFs
cy5zZXRVc2VyKGQtPm1fdXNlcik7Ci0gICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNz
KGQtPm1fcGFzcyk7CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzd29yZChkLT5t
X3Bhc3N3b3JkKTsKICAgICAgICAgZmlyc3RSZXF1ZXN0KCkuc2V0VVJMKHVybFdpdGhDcmVkZW50
aWFscyk7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlICYmIGZp
cnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBp
ZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzc3dvcmQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1h
dGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFz
aWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFuZCByZXVzZSB0aGUgY3Jl
ZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCiAgICAgICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpKQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAg
ICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBsb2dvdXQg
Ynkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtub3duIGluY29ycmVjdCBjcmVkZW50
aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5CiAgICAgICAgICAgICAvLyAoc28gdGhh
dCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3AgdXApLgogICAgICAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNl
c3Npb24oKSkKLSAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIENyZWRlbnRp
YWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJz
dFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigp
LCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAg
ICAgCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UKIAogICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigp
OwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CisgICAgZC0+bV9wYXNzd29yZCA9IHVybC5w
YXNzd29yZCgpOwogICAgIGQtPm1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2Qo
KTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE9ubHkg
Y29uc2lkZXIgYXBwbHlpbmcgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgaWYgdGhpcyBpcyBh
Y3R1YWxseSBhIHJlZGlyZWN0IGFuZCB0aGUgcmVkaXJlY3QKICAgICAgICAgLy8gVVJMIGRpZG4n
dCBpbmNsdWRlIGNyZWRlbnRpYWxzIG9mIGl0cyBvd24uCi0gICAgICAgIGlmIChkLT5tX3VzZXIu
aXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNO
dWxsKCkpIHsKKyAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzd29y
ZC5pc0VtcHR5KCkgJiYgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAg
ICAgICAgY3JlZGVudGlhbCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLCByZXF1ZXN0LnVybCgpKTsKQEAgLTUy
MSwxNyArNTIxLDE1IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoCiAgICAgaWYgKCFjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJhc2VkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxs
KCkpIHsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gW1tOU1VSTENyZWRl
bnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpkLT5tX3VzZXIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDpk
LT5tX3Bhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZv
clNlc3Npb25dOworICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3N3b3Jk
LmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gY3JlZGVudGlhbCA9IGFkb3B0TlMoW1tOU1VSTENy
ZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoVXNlcjpkLT5tX3VzZXIKKyAgICAgICAgICAgIHBhc3N3
b3JkOmQtPm1fcGFzc3dvcmQgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uXSk7CiAgICAgICAgIGQtPm1fY3VycmVudE1hY0NoYWxsZW5nZSA9IGNoYWxsZW5n
ZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAgICAgICAgIGQtPm1fY3VycmVudFdl
YkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLSAgICAgICAgcmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxs
ZW5nZSwgQ3JlZGVudGlhbChjcmVkZW50aWFsKSk7Ci0gICAgICAgIFtjcmVkZW50aWFsIHJlbGVh
c2VdOworICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBDcmVkZW50aWFsKGNy
ZWRlbnRpYWwuZ2V0KCkpKTsKICAgICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlY2lmaWNhdGlv
biwgdGhlIHVzZXIgc2hvdWxkbid0IGJlIGFza2VkIGZvciBjcmVkZW50aWFscyBpZiB0aGVyZSB3
ZXJlIGluY29ycmVjdCBvbmVzIHByb3ZpZGVkIGV4cGxpY2l0bHkuCiAgICAgICAgIGQtPm1fdXNl
ciA9IFN0cmluZygpOwotICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmcoKTsKKyAgICAgICAgZC0+
bV9wYXNzd29yZCA9IFN0cmluZygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCBkODI4ZGI3NjY4NDA0OTI3ZTU3NmM2YjMwOGU2Zjll
N2U3NWZlYTJhLi4zZjJkMzZjZjU3NTUwNjU1ZjM5ZmQ0MTEyNGM5ZDZmMWEyMmMyYTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBSZXNvdXJjZVJlcXVlc3Q6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAogICAgIC8vIHdoZW4g
Ym90aCB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSBub24tbnVsbC4gV2hlbiB3ZSBoYXZl
IGNyZWRlbnRpYWxzLCBlbXB0eSB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcwogICAgIC8vIHNob3Vs
ZCBiZSBlbXB0eSBzdHJpbmdzIGluc3RlYWQgb2YgbnVsbC4KICAgICBTdHJpbmcgdXJsVXNlciA9
IG1fdXJsLnVzZXIoKTsKLSAgICBTdHJpbmcgdXJsUGFzcyA9IG1fdXJsLnBhc3MoKTsKKyAgICBT
dHJpbmcgdXJsUGFzcyA9IG1fdXJsLnBhc3N3b3JkKCk7CiAgICAgaWYgKCF1cmxVc2VyLmlzRW1w
dHkoKSB8fCAhdXJsUGFzcy5pc0VtcHR5KCkpIHsKICAgICAgICAgc291cF91cmlfc2V0X3VzZXIo
c291cFVSSS5nZXQoKSwgdXJsVXNlci51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgc291cF91cmlf
c2V0X3Bhc3N3b3JkKHNvdXBVUkkuZ2V0KCksIHVybFBhc3MudXRmOCgpLmRhdGEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKaW5kZXgg
ZjUxYzRmZDU3ZjhlMTRiOTY0YWI1OTZjYTljZDNjYWZlODExODZkYS4uZTg1YmY0MDFmMzAxMzAy
M2UwOGU5YWZmMmNhZjg3MGQzMWM4NjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcApAQCAtNDQsNyArNDQsNyBAQCBVUkwgc291cFVS
SVRvVVJMKFNvdXBVUkkqIHNvdXBVUkkpCiAgICAgICAgIC8vIGJ1aWx0LiBGaXhpbmcgc291cF91
cmlfdG9fc3RyaW5nIGlzIGEgbm8tbm8gYXMgdGhlIG1haW50YWluZXIgZG9lcwogICAgICAgICAv
LyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50
YXRpb25zCiAgICAgICAgIGlmIChzb3VwVVJJLT5wYXNzd29yZCkKLSAgICAgICAgICAgIHVybC5z
ZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKKyAgICAgICAgICAg
IHVybC5zZXRQYXNzd29yZChTdHJpbmc6OmZyb21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCAyOGQ4NzNjNDYxMmRiZGNlNDE3OWMzYTM4ZWQwZGMwYTUw
Yjg4NzhhLi43MTgzZjkwNTZhODBkMGUzNmZmZGE3MGZkMjFiNGRmN2ZhNzBkNWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNzAsNyAr
MzcwLDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBV
UkwmIHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdGgKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0
aENvbXBvbmVudCgpOworICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpLnRv
U3RyaW5nKCk7CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0aXRs
ZSA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKICAgICB9CkBAIC01NzksMTAgKzU3OSwxMCBAQCBz
dGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAgICAvLyB0aGUgcGF0aC4gSWYgd2UgY2FuJ3Qg
ZmluZCBpdCwgb3Igd2UncmUgY29taW5nIHVwIHdpdGggdGhlIG5hbWUgZm9yIGEgbGluawogICAg
ICAgICAvLyB3ZSBqdXN0IHVzZSB0aGUgZW50aXJlIHVybC4KICAgICAgICAgRFdPUkQgbGVuID0g
ZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uOwotICAgICAgICBTdHJpbmcgbGFzdENv
bXBvbmVudCA9IGt1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgYXV0byBsYXN0Q29t
cG9uZW50ID0ga3VybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAoa3VybC5pc0xv
Y2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0Q29tcG9uZW50LmlzRW1wdHkoKSkpIHsKICAg
ICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdF
eHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3RoKCkpOwotICAgICAgICAgICAgU3RyaW5nVmll
dyhsYXN0Q29tcG9uZW50KS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBvbmVudC5zdWJzdHJpbmco
MCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbGVuID0gc3RkOjptaW48RFdPUkQ+KGZzUGF0aE1heExl
bmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgdXJsLmxlbmd0aCgpKTsKICAgICAgICAgICAgIFN0cmlu
Z1ZpZXcodXJsKS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChm
c1BhdGhCdWZmZXIpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIAogICAgIFN0cmluZyB0aXRsZShw
YXN0ZWJvYXJkVVJMLnRpdGxlKTsKICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHRpdGxlID0gcGFzdGVib2FyZFVSTC51cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAg
dGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnVybC5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7
CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0aXRsZSA9IHBhc3Rl
Ym9hcmRVUkwudXJsLmhvc3QoKS50b1N0cmluZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcAppbmRleCAyYzZjNzBlODQ5OTVjMjlhYzE4ZmYzYzk1
NDljNzg5OTY4Y2EwMWNhLi5iMTVhNGU5MTlhNzc0ZTViZjFkYjFmZDcxYTU3ODkyNzZhZDQ5ZTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCkBAIC0xNjUs
MTcgKzE2NSwxNCBAQCBib29sIEJ1aWxkZXJTdGF0ZTo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhj
b25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aQogCiAgICAgRmlsdGVyT3BlcmF0
aW9ucyBvcGVyYXRpb25zOwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0PihpblZhbHVlKSkgewotCiAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4oY3VycmVudFZhbHVlKSkgewogICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKICAgICAg
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUuaXNVUkkoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmlu
Z1ZhbHVlKCk7Ci0gICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChj
c3NVcmwpOwotCi0gICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAg
ICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikp
OworICAgICAgICAgICAgYXV0byBmaWx0ZXJVUkwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1
ZSgpOworICAgICAgICAgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwo
ZmlsdGVyVVJMKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOworICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKGZpbHRlclVSTCwgZnJhZ21lbnQpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKaW5kZXgg
ZDc5ZTgwMDg4MDg1MDA1ZjFlMjM4NWEwODFiYTE2MGFmYWJmMjIzOS4uODM0NzZmZTc2OWQ2ZGJl
MDljZjU0NzkwMTU2ZGE2NTg4YzJkZTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5jcHAKQEAgLTUzLDIzICs1MywyNCBAQCBTdHJpbmcgV29ya2VyTG9jYXRpb246
Omhvc3RuYW1lKCkgY29uc3QKIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpwb3J0KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV91cmwucG9ydCgpID8gU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgp
LnZhbHVlKCkpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIHBvcnQgPSBtX3VybC5wb3J0KCk7
CisgICAgcmV0dXJuIHBvcnQgPyBTdHJpbmc6Om51bWJlcigqcG9ydCkgOiBlbXB0eVN0cmluZygp
OwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnBhdGhuYW1lKCkgY29uc3QKIHsKICAgICBh
dXRvIHBhdGggPSBtX3VybC5wYXRoKCk7Ci0gICAgcmV0dXJuIHBhdGguaXNFbXB0eSgpID8gIi8i
IDogcGF0aC50b1N0cmluZygpOworICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSA/ICIvIl9zIDog
cGF0aC50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246OnNlYXJjaCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmco
KSA6ICI/IiArIG1fdXJsLnF1ZXJ5KCk7CisgICAgcmV0dXJuIG1fdXJsLnF1ZXJ5KCkuaXNFbXB0
eSgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdXJsLnF1ZXJ5V2l0aExlYWRpbmdRdWVzdGlvbk1hcmso
KS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246Omhhc2goKSBjb25zdAog
ewotICAgIHJldHVybiBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogIiMiICsgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJu
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBt
X3VybC5mcmFnbWVudElkZW50aWZpZXJXaXRoTGVhZGluZ051bWJlclNpZ24oKS50b1N0cmluZygp
OwogfQogCiBTdHJpbmcgV29ya2VyTG9jYXRpb246Om9yaWdpbigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5jcHAKaW5kZXggMGQ1M2JjZjkyM2VkNjEyNjUzOWYzNWRkMmI5NDljYTE0
YjdiNTY3Yy4uMTg5NmMyNDExYjVkYzBiZjY4MmY0MjUwODhlM2U2ODk2MGQyY2FmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5KFNlY3VyaXR5T3Jp
Z2luRGF0YSYmCiAgICAgOiBtX3RvcE9yaWdpbihXVEZNb3ZlKHRvcE9yaWdpbikpCiAgICAgLCBt
X3Njb3BlKFdURk1vdmUoc2NvcGUpKQogewotICAgIEFTU0VSVCghbV9zY29wZS5oYXNGcmFnbWVu
dCgpKTsKKyAgICBBU1NFUlQoIW1fc2NvcGUuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogfQog
CiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk6OmVtcHR5S2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4
IDczODYyNTRlZGE5MmU5ODdkMjY5MjRkODU2ZmMzZWQ2NGEzMDNmZWYuLmJhNzRmNmQxMDM0MTE4
ZWY1MWM5Y2RhZWM3YmVkZTk3YzBjNWIyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcApAQCAtNDYsMTMgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VVJMIHN0YXRpYyBpbmxpbmUgdG9wT3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pCitzdGF0aWMgVVJMIHRvcE9yaWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
KQogewogICAgIFVSTCB1cmw7CiAgICAgdXJsLnNldFByb3RvY29sKG9yaWdpbi5wcm90b2NvbCgp
KTsKICAgICB1cmwuc2V0SG9zdChvcmlnaW4uaG9zdCgpKTsKLSAgICBpZiAob3JpZ2luLnBvcnQo
KSkKLSAgICAgICAgdXJsLnNldFBvcnQoKm9yaWdpbi5wb3J0KCkpOworICAgIHVybC5zZXRQb3J0
KG9yaWdpbi5wb3J0KCkpOwogICAgIHJldHVybiB1cmw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggYmZjMTU3MjEx
NmNmMjk2N2FjODU2NjM1NGZlNDk0NzQ4N2RjZTI1Yy4uZGJiNTk1YjMxMjdiZjIxYTNkYjQxOWI2
NWM2ZGM0NzFjOGEyZWIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQyNyw4ICs0MjcsNyBAQCBVUkwgc3RhdGljIGlu
bGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAgICBVUkwgdXJs
OwogICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJvdG9jb2woKSk7CiAgICAgdXJsLnNldEhv
c3Qob3JpZ2luLmhvc3QoKSk7Ci0gICAgaWYgKG9yaWdpbi5wb3J0KCkpCi0gICAgICAgIHVybC5z
ZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICB1cmwuc2V0UG9ydCgqb3JpZ2luLnBvcnQoKSk7
CiAgICAgcmV0dXJuIHVybDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggMTUyODE1NTgyNTY5ODFhNDgzOGNkNjM3M2IzNjcxYTVlZDA0MGFmOS4uYTBkZTQ5ZjA4
ODQ0YTg2YzZlMzI5NzVjYzRiZDcwNDY3NWIyYWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0
cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsLAog
ICAgIGlmICghdXNlci5pc051bGwoKSkKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVz
ZXIodXNlcik7CiAgICAgaWYgKCFwYXNzd29yZC5pc051bGwoKSkKLSAgICAgICAgdXJsV2l0aENy
ZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOworICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMu
c2V0UGFzc3dvcmQocGFzc3dvcmQpOwogCiAgICAgcmV0dXJuIG9wZW4obWV0aG9kLCB1cmxXaXRo
Q3JlZGVudGlhbHMsIGFzeW5jKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA5ZTBiNjgyY2RlZDJhZmJiZjU3YTAy
ODQ5ZGMzYjc5ZDc5YTc2NzIxLi45NTVkMzg4ZTVlOTZlMzUxOTkzNjc0ZmI5NDllYTg3YWYzZmQz
MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6
OmNoZWNrUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXEK
ICAgICAgICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVjdFJlc3BvbnNlLCBt
YWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgcmVkaXJlY3RSZXF1ZXN0
LnVybCgpLnN0cmluZygpLCAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmlu
ZyBwb2xpY3k6IG5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIGNyb3NzLW9yaWdpbiBDT1JTIHJlZGly
ZWN0aW9uIHdpdGggbm9uIENPUlMgc2NoZW1lIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBpZiAobG9jYXRpb24uaGFzVXNlcm5hbWUoKSB8fCBsb2NhdGlvbi5o
YXNQYXNzd29yZCgpKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5oYXNDcmVkZW50aWFscygpKSB7
CiAgICAgICAgICAgICBoYW5kbGVyKHJlZGlyZWN0aW9uRXJyb3IocmVkaXJlY3RSZXNwb25zZSwg
bWFrZVN0cmluZygiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIsIHJlZGlyZWN0UmVxdWVz
dC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5OiByZWRpcmVjdGlvbiBVUkwgIiwgbG9jYXRpb24uc3RyaW5nKCksICIgaGFzIGNy
ZWRlbnRpYWxzIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjM1LDcg
KzIzNSw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVl
ZGVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvCiAgICAgaHR0cHNVcGdyYWRlQ2hlY2tl
ci5xdWVyeSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIG1fc2Vzc2lvbklELCBbcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoYm9vbCBmb3VuZEhv
c3QpIG11dGFibGUgewogICAgICAgICBpZiAoZm91bmRIb3N0KSB7CiAgICAgICAgICAgICBhdXRv
IG5ld1VSTCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgICAgICAgICBuZXdVUkwuc2V0UHJvdG9jb2wo
Imh0dHBzIl9zKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAg
ICAgICAgICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0KaW5kZXggNjIzYTFhZGNlYzBjZjQzZGU0ZWE1NmQ1NzY5OTI1MGNiOWNlNWVlMi4u
ZTQ0NDA2NDcwNjU4YTYxYjc2NzM0NDkwYjE1NjFiN2U1MzNlNWNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBh
dXRvIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgJiYgdXJsLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAg
ICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNz
d29yZCgpOwogICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgICAgIHVy
bCA9IHJlcXVlc3QudXJsKCk7CiAgICAgCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwog
ICAgIG1fdXNlciA9IHVybC51c2VyKCk7Ci0gICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7Cisg
ICAgbV9wYXNzd29yZCA9IHVybC5wYXNzd29yZCgpOwogICAgIG1fbGFzdEhUVFBNZXRob2QgPSBy
ZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggOTc3YTQwM2JlOGRjOTYyYTljY2ZhNjQyOGJjMWQz
ZTdjNDY4MmY4Ni4uMjZkOTYxZDRlOWJjNWJjZDgwNjQzNjFmOWQyZTliYzQ3ODU3M2I3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpO
ZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRh
cwogICAgICAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6VXNlKSB7CiAgICAgICAgICAgICBhdXRvIHVybCA9IHJlcXVlc3QudXJsKCk7
CiAgICAgICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgICAgICAgICAgbV9wYXNzd29y
ZCA9IHVybC5wYXNzKCk7CisgICAgICAgICAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3JkKCk7
CiAgICAgICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKICAgICAgICAgICAg
IGlmIChtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpKQpAQCAtMjc0LDcg
KzI3NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oKQogICAgIGJvb2wgZGlkQ2hhbmdlQ3JlZGVudGlhbCA9IGZhbHNlOwogICAgIGNvbnN0
IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKLSAg
ICBtX3Bhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAgICBtX3Bhc3N3b3JkID0gdXJsLnBhc3N3b3Jk
KCk7CiAgICAgbV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgIHJl
cXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGZlMWI2
M2U3OGY2ODA0MjhjZmZlNzBhZDhmNjg1M2E4MWUyZGM3MzcuLjljMDQ2NTA1ODkzOWNmNjVmYzEw
ZjQ3NzFlZDIxNjY2MmI2YjlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTY3LDcgKzY3LDcg
QEAgTmV0d29ya0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cChOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXMKICAgICAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVy
bCgpOwogICAgICAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlKSB7CiAgICAgICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwot
ICAgICAgICAgICAgbV9wYXNzd29yZCA9IHVybC5wYXNzKCk7CisgICAgICAgICAgICBtX3Bhc3N3
b3JkID0gdXJsLnBhc3N3b3JkKCk7CiAgICAgICAgICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRp
YWxzKCk7CiAKICAgICAgICAgICAgIGlmIChtX3VzZXIuaXNFbXB0eSgpICYmIG1fcGFzc3dvcmQu
aXNFbXB0eSgpKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
YXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAK
ICAgICBhdXRvIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgdXJsLnNldFVzZXIobV91c2VyKTsK
LSAgICB1cmwuc2V0UGFzcyhtX3Bhc3N3b3JkKTsKKyAgICB1cmwuc2V0UGFzc3dvcmQobV9wYXNz
d29yZCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKIAogICAgIG1fdXNlciA9IFN0cmluZygp
OwpAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVI
VFRQUmVkaXJlY3Rpb24oKQogCiAgICAgY29uc3QgYXV0byYgdXJsID0gcmVxdWVzdC51cmwoKTsK
ICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwotICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzcygpOwor
ICAgIG1fcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQoKTsKICAgICBtX2xhc3RIVFRQTWV0aG9kID0g
cmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwog
CkBAIC0xMTE3LDI0ICsxMTE3LDIyIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6c3RhcnRp
bmdDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIE5ldHdvcmtEYXRhCiB9CiAKICNp
ZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCisKIGJvb2wgTmV0d29ya0RhdGFUYXNrU291
cDo6c2hvdWxkQWxsb3dIU1RTUG9saWN5U2V0dGluZygpIGNvbnN0CiB7CiAgICAgLy8gRm9sbG93
IEFwcGxlJ3MgSFNUUyBhYnVzZSBtaXRpZ2F0aW9uIDE6CiAgICAgLy8gICJMaW1pdCBIU1RTIFN0
YXRlIHRvIHRoZSBIb3N0bmFtZSwgb3IgdGhlIFRvcCBMZXZlbCBEb21haW4gKyAxIgotICAgIGlm
IChpc1RvcExldmVsTmF2aWdhdGlvbigpIHx8IGhvc3RzQXJlRXF1YWwobV9jdXJyZW50UmVxdWVz
dC51cmwoKSwgbV9jdXJyZW50UmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSB8fCBpc1B1
YmxpY1N1ZmZpeChtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLmhvc3QoKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gaXNUb3BMZXZlbE5hdmlnYXRpb24oKQorICAgICAgICB8fCBtX2N1cnJlbnRSZXF1
ZXN0LnVybCgpLmhvc3QoKSA9PSBtX2N1cnJlbnRSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCkuaG9zdCgpCisgICAgICAgIHx8IGlzUHVibGljU3VmZml4KG1fY3VycmVudFJlcXVlc3QudXJs
KCkuaG9zdCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiB9CiAKIGJvb2wgTmV0d29ya0Rh
dGFUYXNrU291cDo6c2hvdWxkQWxsb3dIU1RTUHJvdG9jb2xVcGdyYWRlKCkgY29uc3QKIHsKLSAg
ICAvLyBGb2xsb3cgQXBwbGUncyBIU1RTIGFidXNlIG1pdGdhdGlvbiAyOgorICAgIC8vIEZvbGxv
dyBBcHBsZSdzIEhTVFMgYWJ1c2UgbWl0aWdhdGlvbiAyOgogICAgIC8vICJJZ25vcmUgSFNUUyBT
dGF0ZSBmb3IgU3VicmVzb3VyY2UgUmVxdWVzdHMgdG8gQmxvY2tlZCBEb21haW5zIgotICAgIGlm
ICghaXNUb3BMZXZlbE5hdmlnYXRpb24oKSAmJiAhbV9jdXJyZW50UmVxdWVzdC5hbGxvd0Nvb2tp
ZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkKKyAgICAgICAgfHwgbV9jdXJyZW50UmVxdWVzdC5h
bGxvd0Nvb2tpZXMoKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpwcm90b2NvbFVw
Z3JhZGVkVmlhSFNUUyhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCkBAIC0xMTUzLDYgKzExNTEs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmhzdHNFbmZvcmNlZChTb3VwSFNUU0VuZm9y
Y2VyKiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYQogICAgIGlmIChzb3VwTWVzc2FnZSA9PSB0YXNr
LT5tX3NvdXBNZXNzYWdlLmdldCgpKQogICAgICAgICB0YXNrLT5wcm90b2NvbFVwZ3JhZGVkVmlh
SFNUUyhzb3VwTWVzc2FnZSk7CiB9CisKICNlbmRpZgogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmRpZFN0YXJ0UmVxdWVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggMmQ3
NzYzNDVlMjI0OTZjYjg3NTBjMmU2MTQ5Y2QwNjZhYzBjNzgwMy4uNGM4MzhhZmI3MzA1OTYzNTg5
MzlhZmI1YmI0NTY0ZDAwYThhNjIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaApAQCAt
NjMsMjUgKzYzLDI1IEBAIHB1YmxpYzoKICAgICBXVEY6OlN0cmluZyBob3N0KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFy
c2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCkgOiBXVEY6
OlN0cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmhvc3QoKS50b1N0cmluZygp
OwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIHByb3RvY29sKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5p
c1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cHJvdG9jb2woKS50b1N0cmluZygpIDogV1RGOjpTdHJp
bmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpLnRvU3RyaW5nKCk7
CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgcGF0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBw
YXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxp
ZCgpID8gbV9wYXJzZWRVUkwtPnBhdGgoKS50b1N0cmluZygpIDogV1RGOjpTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5wYXRoKCkudG9TdHJpbmcoKTsKICAgICB9CiAKICAg
ICBXVEY6OlN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBw
YXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIHJldHVybiBtX3BhcnNlZFVSTC0+aXNWYWxp
ZCgpID8gbV9wYXJzZWRVUkwtPmxhc3RQYXRoQ29tcG9uZW50KCkgOiBXVEY6OlN0cmluZygpOwor
ICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmxhc3RQYXRoQ29tcG9uZW50KCkudG9TdHJpbmco
KTsKICAgICB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmlu
ZGV4IGIxYzM2ZGIyYzA0NjhhNjUxZDY0NzZhMmY5ZGVjZGIzMjk2NWJkZGQuLjA3Y2QxMGYyYTNk
Zjk5MGM4NjZlMGVlODljOTlhMDYzNTBmYmY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yMjAsOCArMjIwLDggQEAgdm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkgewotICAgICAgICAgICAgV1RGOjpVUkwg
ZGVzdGluYXRpb25VUkwgPSBXVEY6OlVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3du
bG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3Rp
bmF0aW9uVVJMLmZyYWdtZW50SWRlbnRpZmllcigpLmxlbmd0aCgpKQorICAgICAgICAgICAgYXV0
byBkZXN0aW5hdGlvblVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRv
d25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghZGVz
dGluYXRpb25VUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgZGVz
dGluYXRpb25VUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgp
LnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXItPmZp
bmlzaChkZXN0aW5hdGlvblVSTCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCA0N2I1NGNhZDg0MDEx
NTg2ZWZiODA5OWJhMWE4OTM1YjcxMjRiNWQxLi4zOTM2ZWI3YjkyZjBjMzllMjE3YTM1MTk4YTY0
YTc0MGNkZDJkNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0xMTQsMTUgKzExNCw5IEBAIHZvaWQgRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChIYXNoTWFwCiAKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fZGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnkpOwogCi0gICAgICAgIGF1dG8gb3JpZ2luUGF0
aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2VE
aXJlY3RvcnksICIqIik7Ci0KICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0
cjxIYXNoU2FsdEZvck9yaWdpbj4+IGRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewotICAgICAgICAg
ICAgVVJMIHVybDsKLSAgICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiZmlsZSJfcyk7Ci0gICAg
ICAgICAgICB1cmwuc2V0UGF0aChvcmlnaW5QYXRoKTsKLQotICAgICAgICAgICAgU3RyaW5nIGRl
dmljZUlkSGFzaFNhbHQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgZm9yIChh
dXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2RldmljZUlkSGFz
aFNhbHRTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgICAgICAgICBhdXRvIGRldmljZUlk
SGFzaFNhbHQgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgob3JpZ2luUGF0aCkubGFz
dFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOwogCiAgICAgICAgICAgICBpZiAoaGFzaFNhbHRT
aXplICE9IGRldmljZUlkSGFzaFNhbHQubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTog
VGhlIGxlbmd0aCBvZiB0aGUgaGFzaCBzYWx0ICglZCkgaXMgZGlmZmVyZW50IHRvIHRoZSBsZW5n
dGggb2YgdGhlIGhhc2ggc2FsdHMgZGVmaW5lZCBpbiBXZWJLaXQgKCVkKSIsIGRldmljZUlkSGFz
aFNhbHQubGVuZ3RoKCksIGhhc2hTYWx0U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggZDMwNTU1MzA4MDQ2MjM4
MTMxZjBiZmVkNDJkNWYzMDExZjJiMWUyNS4uYjdhZjVjZGFlYjVkMDNiMzA5YmFkYmQ5NjM1M2E1
NmJmYmQyZjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMTQ1LDE2ICsxNDUsMTUgQEAgUGx1Z2luTW9kdWxlSW5m
byBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24KICAgICByZXR1cm4gUGx1Z2luTW9kdWxlSW5mbygpOwogfQogCi1zdGF0aWMgaW5s
aW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIFN0cmluZyBw
YXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0cmluZyBleHRlbnNpb247Ci0g
ICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgaWYgKCFm
aWxlbmFtZS5lbmRzV2l0aCgnLycpKSB7Ci0gICAgICAgIHNpemVfdCBleHRlbnNpb25Qb3MgPSBm
aWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOwotICAgICAgICBpZiAoZXh0ZW5zaW9uUG9zICE9IG5v
dEZvdW5kKQotICAgICAgICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGV4dGVu
c2lvblBvcyArIDEpOwotICAgIH0KLSAgICByZXR1cm4gZXh0ZW5zaW9uLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CisgICAgYXV0byBmaWxlbmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgp
OworICAgIGlmIChmaWxlbmFtZS5lbmRzV2l0aCgnLycpKQorICAgICAgICByZXR1cm4geyB9Owor
ICAgIHNpemVfdCBsYXN0RG90UG9zaXRpb24gPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgnLicpOwor
ICAgIGlmIChsYXN0RG90UG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiB7IH07
CisgICAgcmV0dXJuIGZpbGVuYW1lLnN1YnN0cmluZyhsYXN0RG90UG9zaXRpb24gKyAxKS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGUxYjg2N2M1NjcyYTFlYTVl
ZjM0Nzg1ZDFjMDY2NWUyMWVhMWE2YS4uNjkxNDEyZjM4ZjhlY2UyMDU1YTQxNDhjZThlNThjZTRk
N2I3OTViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0x
MjU2LDcgKzEyNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZShXZWJQcm9jZXNzUHJveHkmIHByb2NlcwogI2VuZGlmCiAKICAgICAv
LyBXZSBmYWlsZWQgdG8gaXNzdWUgYW4gdW5pdmVyc2FsIGZpbGUgcmVhZCBhY2Nlc3Mgc2FuZGJv
eCwgZmFsbCBiYWNrIHRvIGlzc3Vpbmcgb25lIGZvciB0aGUgYmFzZSBVUkwgaW5zdGVhZC4KLSAg
ICBhdXRvIGJhc2VVUkwgPSBVUkwoVVJMKCksIHVybC5iYXNlQXNTdHJpbmcoKSk7CisgICAgYXV0
byBiYXNlVVJMID0gdXJsLnRydW5jYXRlZEZvclVzZUFzQmFzZSgpOwogICAgIGF1dG8gYmFzZVBh
dGggPSBiYXNlVVJMLmZpbGVTeXN0ZW1QYXRoKCk7CiAgICAgaWYgKGJhc2VQYXRoLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CkBAIC01MjQ3LDcgKzUyNDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2NlcwogCiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3Vw
cHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgogICAgICAgICAgICAg
JiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZyYW1lKCkKLSAgICAgICAgICAgICYmICht
X21haW5GcmFtZSA/ICFob3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwoKSwgcmVxdWVzdC51
cmwoKSkgOiBmYWxzZSkKKyAgICAgICAgICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFt
ZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpKQogICAgICAgICAgICAgJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlv
blR5cGU6OkJhY2tGb3J3YXJkOwogCiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQ
STo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6
Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxk
T3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5h
dmlnYXRpb24pOwpAQCAtNTM3Myw3ICs1MzczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUK
ICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShmcmFtZUluZm8pLCB0aGlzKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MgPSBtX21haW5GcmFtZSA/ICFob3N0c0FyZUVxdWFsKG1fbWFpbkZyYW1lLT51cmwo
KSwgcmVxdWVzdC51cmwoKSkgOiBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3Qu
dXJsKCkuaG9zdCgpOwogICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmln
YXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNl
RnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVS
TCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkp
KTsKIAogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24uZ2V0KCksIFdURk1vdmUobGlzdGVuZXIp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKQEAgLTU1NzEsNyArNTU3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvCiAK
ICAgICAgICAgcmVwbHkobmV3UGFnZS0+d2ViUGFnZUlEKCksIG5ld1BhZ2UtPmNyZWF0aW9uUGFy
YW1ldGVycyhtX3Byb2Nlc3MsICpuZXdQYWdlLT5kcmF3aW5nQXJlYSgpKSk7CiAKLSAgICAgICAg
bmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uID0gaG9zdHNBcmVFcXVhbChVUkwoeyB9LCBtYWluRnJhbWVVUkwpLCByZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2
aWdhdGlvblBvbGljeURlY2lzaW9uID0gVVJMKHsgfSwgbWFpbkZyYW1lVVJMKS5ob3N0KCkgPT0g
cmVxdWVzdC51cmwoKS5ob3N0KCk7CiAKICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIG5ld1Bh
Z2UtPm1fc2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24gPSB0cnVlOwpAQCAtNTU3OSw3ICs1NTc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
T3B0aW8KICAgICB9OwogCiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nl
c3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVy
ZVRva2VuSWRlbnRpZmllcik7Ci0gICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNB
cmVFcXVhbChvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVy
bCgpKTsKKyAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZv
LT5yZXF1ZXN0KCkudXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgIGF1
dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVs
bHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFw
cExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgdHJ5U09BdXRo
b3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksICp0aGlzLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2lu
ZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKV0gKFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjMjU4OGE4YTA5
MWQ0YjA4NzUyOGNjMzI1ODhkNzBlM2I0NTMxYmVmLi5lNGE4NmZhYWYzMTgzOGM4Y2ZhM2VkNzll
ODliODk0ZGM1YzIwMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTU2NywxMSArNTY3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojphc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nCiAK
ICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgdXJsU3RyaW5nIGRvZXMgbm90IHBvaW50IHRv
IGEgZGlyZWN0b3J5LgogICAgIC8vIEdldCB1cmwncyBiYXNlIFVSTCB0byBhZGQgdG8gbV9sb2Nh
bFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLgotICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwu
YmFzZUFzU3RyaW5nKCkpOwotICAgIFN0cmluZyBwYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0
aCgpOworICAgIGF1dG8gcGF0aCA9IHVybC50cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKS5maWxlU3lz
dGVtUGF0aCgpOwogICAgIGlmIChwYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICAvLyBDbGllbnQgbG9hZHMgYW4gYWx0ZXJuYXRlIHN0cmluZy4gVGhpcyBkb2Vzbid0
IGdyYW50IHVuaXZlcnNhbCBmaWxlIHJlYWQsIGJ1dCB0aGUgd2ViIHByb2Nlc3MgaXMgYXNzdW1l
ZAogICAgIC8vIHRvIGhhdmUgcmVhZCBhY2Nlc3MgdG8gdGhpcyBkaXJlY3RvcnkgYWxyZWFkeS4K
ICAgICBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuYWRkKHBhdGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDMxNWNmM2ZmMTM0MTRiZTE4MDMxZjcw
MTZhZDcyNjY1MTRjNDQ5NWMuLmYzNDIzYTkyYWJhZDliZmFhMGY4ZWVkOTIxMmJlMGEyYTdjNWQ0
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTQxOSw3ICs0MTks
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9y
Y2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAq
ZG9tYWluIGluIGRvbWFpbnMuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBVUkwgdXJsIHsgVVJM
KCksIGRvbWFpbiB9OwogICAgICAgICAgICAgICAgIGlmICh1cmwucHJvdG9jb2woKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgICAgIHVybC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOworICAg
ICAgICAgICAgICAgICAgICB1cmwuc2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgICAgICAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBhcHBCb3VuZERvbWFpbiB7
IHVybCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA5MDM5OTBiZjk0
ZTgzODVmZGU5ZjE1NGMzZDM1ZGFlNTMzZDAwMDNiLi40ODc1MWFiZjQ4MzI0NTg5NjFiZTczYWE1
YTU5NWIwNWRlY2VhZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAt
NjAsMTkgKzYwLDEwIEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lucygpCiAgICAgaWYgKG1fbWVkaWFLZXlTdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9t
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvcmln
aW5QYXRoIDogb3JpZ2luUGF0aHMpIHsKLSAgICAgICAgVVJMIHVybDsKLSAgICAgICAgdXJsLnNl
dFByb3RvY29sKCJmaWxlIl9zKTsKLSAgICAgICAgdXJsLnNldFBhdGgob3JpZ2luUGF0aCk7Ci0K
LSAgICAgICAgU3RyaW5nIG1lZGlhS2V5SWRlbnRpZmllciA9IHVybC5sYXN0UGF0aENvbXBvbmVu
dCgpOwotCi0gICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKTsKLSAgICAgICAgaWYg
KCFzZWN1cml0eU9yaWdpbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlc3Vs
dHMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioi
KSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgob3JpZ2luUGF0aCkubGFzdFBhdGhDb21wb25lbnQoKS50b1N0cmluZygpOworICAgICAg
ICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCpz
ZWN1cml0eU9yaWdpbik7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhZWQz
MDFhNTRkZDk5YmViNjhmYjE0MzhkMmQxYzI1NGQwMzAxNmU0Li5lNGVmYTQ4MDlmMGEzZmY1MGE2
MTZmZTExYTc1MDU4OWE0NzhlYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE1NjIsMTAgKzE1NjIsOCBAQCB2b2lkIFBE
RlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50KCkKICAgICBpZiAoW21fcGRmRG9jdW1lbnQgaXNM
b2NrZWRdKQogICAgICAgICBjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpOwogCi0gICAgaWYgKFtt
X3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZy
YWdtZW50OildKSB7Ci0gICAgICAgIFN0cmluZyBwZGZVUkxGcmFnbWVudCA9IG1fZnJhbWUudXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBz
ZXRVUkxGcmFnbWVudDpwZGZVUkxGcmFnbWVudF07Ci0gICAgfQorICAgIGlmIChbbV9wZGZMYXll
ckNvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRVUkxGcmFnbWVudDop
XSkKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldFVSTEZyYWdtZW50Om1fZnJhbWUu
dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9CiAK
IHZvaWQgUERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggNzY4YmEy
ZDdjNDY4NmMwNmVlOTc0YWJiZDY1MjU0MTFmM2JiY2M5My4uNDFkM2VkODVlMzM3YzUxNmNiNWNk
ZTBkOTdjZTIxOGNhMjE1MTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBA
IC0yNCwxNyArMjQsMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVDbGllbnQuaCIKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCi0j
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIKLQogI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9FZGl0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC00Miw3ICszOCw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250
ZXh0TWVudURlc3Ryb3llZCgpCiB7CkBAIC01NiwxOSArNTEsMjEgQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIH0KIAogI2lmICFQTEFURk9STShD
T0NPQSkKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
RnJhbWUqIGZyYW1lKQorCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29v
Z2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3Ry
aW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5z
dHJpcFdoaXRlU3BhY2UoKTsKLSAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywg
IisiX3MpOworICAgIGF1dG8gcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2VhcmNoP3E9IiArIGVuY29kZWQgKyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRv
IHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFy
Y2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBs
YWNlKCIlMjAiX3MsICIrIl9zKTsKKyAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0
dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRG
LTgmb2U9VVRGLTgiIH07CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsK
LSAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7Ci0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9u
KFVSTCB7IFVSTCB7IH0sIHVybCB9LCB7IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJD
b3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5n
VXNlckdlc3R1cmUgfTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2Nh
dGlvbihzZWFyY2hVUkwsIHsgfSwgbnVsbHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBX
ZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6
OkVtcHR5U3RyaW5nLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGlj
dGlvbmFyeShXZWJDb3JlOjpGcmFtZSopCkBAIC05MSwxNCArODgsMTggQEAgdm9pZCBXZWJDb250
ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQorCiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCisKIHZv
aWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpCiB7CiAgICAgbV9wYWdl
LT5jb250ZXh0TWVudSgpLT5zaG93KCk7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKwogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCmluZGV4IDgwOTRhNjI4MjI2MWI1ZTgzOTc0NWQ4NmU2MDQzYWY0Y2U2Yzcy
MzguLjMwYzZmZmUyM2YxZTQ5ZjE1ZjY2ODM4YjY4NDFiNTY2MmM3ZWVmMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBFbGVtZQogCiAgICAgU3RyaW5nIHRpdGxlID0gbGFiZWw7CiAgICAgaWYgKHRpdGxlLmlzRW1w
dHkoKSkgewotICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAg
ICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGlm
ICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGM4NDQ4
YzVhYzFmNDM2MmU0NDAzYzNhYzI5YTI4NmE5YWY1ZWJiOGUuLmNjYWUyMTJjNTZjYTQ4OTFiNjdj
NmQzYmVlNGNkMzMxOTJiMmE0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04
ODIsNyArODgyLDcgQEAgc3RhdGljIEJPT0wgc2hvdWxkVHJ5QXBwTGluayhXZWJWaWV3ICp3ZWJW
aWV3LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJgogICAgIGlmICghYWN0aW9uLnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAodGFy
Z2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCkgJiYgaG9zdHNBcmVFcXVhbCh0YXJn
ZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIGFjdGlvbi51cmwoKSkpCisgICAgaWYgKHRhcmdl
dEZyYW1lICYmIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpICYmIHRhcmdldEZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKS5ob3N0KCkgPT0gYWN0aW9uLnVybCgpLmhvc3QoKSkKICAgICAgICAgcmV0dXJu
IE5POwogCiAgICAgcmV0dXJuIFlFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IDUzNjczZTllMmY1ZWQzYmY0Y2E1MTI0YzkyZjQxNmNmM2MzNzJl
ZmYuLjdkNDg5ZTYwZmY1YTgxMjVjNGQyY2ZkYWFhNjQxYzU3YTE4YTk0M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjI4NiwxNCArMjI4Niwx
MCBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRGb3JXZWJBcmNo
aXZlOihXZWJBcmNoaXZlICopd2ViQXJjaGl2ZQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICop
X2RvY3VtZW50RnJhZ21lbnRGb3JJbWFnZURhdGE6KE5TRGF0YSAqKWRhdGEgd2l0aFJlbGF0aXZl
VVJMUGFydDooTlNTdHJpbmcgKilyZWxhdGl2ZVVSTFBhcnQgYW5kTUlNRVR5cGU6KE5TU3RyaW5n
ICopbWltZVR5cGUKIHsKLSAgICBXZWJSZXNvdXJjZSAqcmVzb3VyY2UgPSBbW1dlYlJlc291cmNl
IGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVSTDpVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQ
YXJ0KHJlbGF0aXZlVVJMUGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6bWltZVR5cGUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmNvZGluZ05hbWU6bmlsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVOYW1lOm5pbF07
Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbW3NlbGYgX2RhdGFTb3VyY2Vd
IF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6cmVzb3VyY2VdOwotICAgIFtyZXNv
dXJjZSByZWxlYXNlXTsKLSAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgYXV0byByZXNvdXJjZSA9
IGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEKKyAgICAgICAg
VVJMOlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nIHsgcmVsYXRpdmVVUkxQYXJ0
IH0pCisgICAgICAgIE1JTUVUeXBlOm1pbWVUeXBlIHRleHRFbmNvZGluZ05hbWU6bmlsIGZyYW1l
TmFtZTpuaWxdKTsKKyAgICByZXR1cm4gW1tzZWxmIF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFn
bWVudFdpdGhJbWFnZVJlc291cmNlOnJlc291cmNlLmdldCgpXTsKIH0KIAogLSAoQk9PTClmb2N1
c2VkTm9kZUhhc0NvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCmluZGV4IGFjNmI3MTM4Yjg4OTdjMzg5MjUzZTI1MjQ1MDRkMzQwZTA2Njli
N2EuLjdhNGY1YThlZjJlMGM1ZTZjNTlhYWNkZjJhMDE0OGE2NjE3YjI0NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjMwNiw3ICsy
MzA2LDcgQEAgLSAodm9pZCljbG9zZQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX3dlYl9k
b2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQg
cGFzdGVib2FyZFR5cGU6KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW1hZ2VNSU1FVHlwZToo
TlNTdHJpbmcgKilpbWFnZU1JTUVUeXBlCiB7Ci0gICAgYXV0byBmaWxlbmFtZSA9IFtpbWFnZU1J
TUVUeXBlIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIi8iIHdpdGhTdHJp
bmc6QCIuIl07CisgICAgU3RyaW5nIGZpbGVuYW1lID0gW2ltYWdlTUlNRVR5cGUgc3RyaW5nQnlS
ZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5nOkAiLyIgd2l0aFN0cmluZzpAIi4iXTsKICAgICBh
dXRvIHJlc291cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6
W3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdCiAgICAgICAgIFVSTDpVUkw6
OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGZpbGVuYW1lKSBNSU1FVHlwZTppbWFnZU1JTUVUeXBl
IHRleHRFbmNvZGluZ05hbWU6bmlsIGZyYW1lTmFtZTpuaWxdKTsKICAgICByZXR1cm4gW1tzZWxm
IF9kYXRhU291cmNlXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhJbWFnZVJlc291cmNlOnJlc291cmNl
LmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBhYTUxYjYzOTQ4ODhh
NzBiN2YwZDlkYmEwNTFmZTI1YjFlMTZmZjk3Li5mMTQxODYzMGVmNmU5ZGEyYzMzOWYwYWQxZWQ4
ZWU2NjlhODg4N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNTUsNyAr
MjU1LDcgQEAgLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2Rl
ZmF1bHRBbmltYXRpb25Db250cm9sbGVyCiAgICAgICAgIHJldHVybiBbW1tXZWJBbmltYXRpb25D
b250cm9sbGVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAKICAgICBOU1VSTCAqdXJsID0g
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7Ci0gICAgTlNTdHJpbmcgKmFic29sdXRl
VVJMU3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CisgICAgU3RyaW5nIGFic29sdXRlVVJM
U3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CiAgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJl
c3VsdC5VUkxFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0
ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0
ZUFjdGlvbk1haWx0b0xpbms7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDY0MWFjMzU0YzM0MTk2N2VhNmNlZDY5MGQ1ZTZk
NDVjNmMyYzJhMWEuLmNjODc3NTNhMjg0NzI4YzkyYjY3MDhiYjRhMDY4YzgwY2E1NzM1YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSwgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDExICszOCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiA+IFBsdWdp
blBhY2thZ2VCeU5hbWVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2lu
UGFja2FnZT4+IFBsdWdpblBhY2thZ2VCeU5hbWVNYXA7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX01FVEFEQVRBX0NBQ0hFKQogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1QZXJz
aXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVNpemUgPSAzMjc2ODsKK2NvbnN0ZXhwciBzaXplX3Qg
bWF4aW11bVBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlU2l6ZSA9IDMyNzY4OwogCiBzdGF0
aWMgYm9vbCBnUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVJc0VuYWJsZWQ7CiAKQEAgLTU1
LDkgKzU1LDYgQEAgU3RyaW5nJiBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVBhdGgoKQog
I2VuZGlmCiAKIFBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFzZSgpCi0jaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKLSAgICA6IG1fcGVyc2lzdGVudE1ldGFkYXRh
Q2FjaGVJc0xvYWRlZChmYWxzZSkKLSNlbmRpZgogewogfQogCkBAIC0yMjgsNyArMjI1LDcgQEAg
UGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIHBsdWdpbkNob2ljZXNbMF07CiB9CiAKLVN0cmlu
ZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pIGNvbnN0CitTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9u
KFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKSBjb25zdAogewogICAgIGlmIChleHRlbnNpb24uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTAsNyArMjQ3LDcgQEAgU3RyaW5n
IFBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikgY29uc3QKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25z
ID0gbWltZV9pdC0+dmFsdWU7CiAgICAgICAgICAgICBib29sIGZvdW5kTWFwcGluZyA9IGZhbHNl
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShleHRl
bnNpb25zW2ldLCBleHRlbnNpb24pKSB7CisgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IGV4dGVuc2lvbnNbaV0gfSwgZXh0ZW5zaW9uKSkgewog
ICAgICAgICAgICAgICAgICAgICBQbHVnaW5QYWNrYWdlKiBwbHVnaW4gPSAoKml0KS5nZXQoKTsK
IAogICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmVycmVkUGx1Z2luICYmIFBsdWdpblBhY2th
Z2U6OmVxdWFsKCpwbHVnaW4sICpwcmVmZXJyZWRQbHVnaW4pKQpAQCAtMjg0LDIwICsyODEsMTkg
QEAgUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4oY29uc3QgVVJMJiB1
cmwsIFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBwbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgCi0gICAgU3RyaW5n
IGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgYXV0byBmaWxlbmFtZSA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgIGlmIChmaWxlbmFtZS5lbmRzV2l0aCgnLycp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
aW50IGV4dGVuc2lvblBvcyA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgaWYgKGV4
dGVuc2lvblBvcyA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXV0byBkb3RQb3NpdGlv
biA9IGZpbGVuYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKGRvdFBvc2l0aW9uID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBTdHJpbmcgbWltZVR5
cGVGb3JFeHRlbnNpb24gPSBNSU1FVHlwZUZvckV4dGVuc2lvbihmaWxlbmFtZS5zdWJzdHJpbmco
ZXh0ZW5zaW9uUG9zICsgMSkpOworICAgIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lvbiA9IE1J
TUVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVuYW1lLnN1YnN0cmluZyhkb3RQb3NpdGlvbiArIDEpKTsK
ICAgICBQbHVnaW5QYWNrYWdlKiBwbHVnaW4gPSBwbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZUZv
ckV4dGVuc2lvbik7CiAgICAgaWYgKCFwbHVnaW4pIHsKLSAgICAgICAgLy8gRklYTUU6IGlmIG5v
IHBsdWdpbiBjb3VsZCBiZSBmb3VuZCwgcXVlcnkgV2luZG93cyBmb3IgdGhlIG1pbWUgdHlwZQot
ICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoZSBleHRlbnNpb24uCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICAvLyBGSVhNRTogSWYgbm8gcGx1Z2luIGNvdWxkIGJlIGZvdW5kLCBxdWVy
eSBXaW5kb3dzIGZvciB0aGUgTUlNRSB0eXBlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV4dGVuc2lv
bi4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAogICAgIG1pbWVUeXBlID0g
bWltZVR5cGVGb3JFeHRlbnNpb247CkBAIC0zNzQsNiArMzcwLDcgQEAgYm9vbCBQbHVnaW5EYXRh
YmFzZTo6YWRkRGlzYWJsZWRQbHVnaW5GaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB9CiAK
ICNpZiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKIC8vIEZvciBTYWZhcmkvV2luIHRo
ZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKIC8vIGluIFBsdWdpbkRh
dGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29yZSBjb25zdHJ1Y3RzCiAvLyBm
b3IgdGhlIGxvZ2ljIHdlIHNob3VsZCBwZXJoYXBzIG1vdmUgaXQgaGVyZSB1bmRlciBYUF9XSU4/
CkBAIC00NzAsOCArNDY3LDggQEAgc3RhdGljIGJvb2wgcmVhZFRpbWUodGltZV90JiByZXN1bHRU
aW1lLCBjaGFyKiYgc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGNvbnN0IGNoYXIgc2NoZW1hVmVyc2lvbiA9ICcxJzsKLXN0YXRpYyBjb25zdCBj
aGFyIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWVbXSA9ICJQbHVnaW5NZXRh
ZGF0YUNhY2hlLmJpbiI7Citjb25zdGV4cHIgY2hhciBzY2hlbWFWZXJzaW9uID0gJzEnOworY29u
c3RleHByIGNoYXIgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZVtdID0gIlBs
dWdpbk1ldGFkYXRhQ2FjaGUuYmluIjsKIAogdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlKCkKIHsKQEAgLTYxNyw1ICs2MTQsNyBAQCB2b2lkIFBsdWdpbkRh
dGFiYXNlOjpzZXRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoY29uc3QgU3RyaW5nJiBwZXJz
aXN0ZW50TWV0YQogewogICAgIFdlYkNvcmU6OnBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hl
UGF0aCgpID0gcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoOwogfQorCiAjZW5kaWYKKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmlu
ZGV4IGFjYzBlMWZiYTc0NjQyOTQ0MWJiOWFkNjRmZGJjZTI1MGQyZGI3MTcuLjliMzRiNmY0NDhm
Mzk0MTRjMzM4YjIxZmUxNTE3MTg2MzBjNmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTEsNiArMSw2IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBMdGQuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI1LDIxICsyNSwx
NCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsdWdpbkRhdGFiYXNlX2gKLSNk
ZWZpbmUgUGx1Z2luRGF0YWJhc2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQbHVnaW5Q
YWNrYWdlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRWxlbWVudDsK
LSAgICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIFBsdWdpbkRh
dGFiYXNlQ2xpZW50OwotICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7CiAKICAgICB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFBsdWdpblBhY2thZ2U+LCBQbHVnaW5QYWNrYWdlSGFzaCwgUGx1Z2luUGFj
a2FnZUhhc2hUcmFpdHM+IFBsdWdpblNldDsKIApAQCAtNzksNyArNzIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBkZWZhdWx0UGx1Z2luRGly
ZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luRGlyZWN0b3JpZXMoKSBj
b25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVjdG9yaWVzOyB9CiAKLSAgICAgICAgU3RyaW5nIE1J
TUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdDsKKyAgICAg
ICAgU3RyaW5nIE1JTUVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKSBjb25z
dDsKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAgICAgICAg
IHN0YXRpYyBib29sIGlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCk7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHNldFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlRW5hYmxlZChib29sIGlzRW5h
YmxlZCk7CkBAIC0xMDgsMTAgKzEwMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIHRpbWVfdD4gbV9wbHVnaW5QYXRoc1dpdGhUaW1lczsKICAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiwgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiBtX3ByZWZlcnJlZFBsdWdpbnM7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9N
RVRBREFUQV9DQUNIRSkKLSAgICAgICAgYm9vbCBtX3BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlSXNM
b2FkZWQ7CisgICAgICAgIGJvb2wgbV9wZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUlzTG9hZGVkIHsg
ZmFsc2UgfTsKICNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggYzI2NWUwODNlMWY3YzlhZmM4
M2JjOGUwMWU4ZjQ0ZWVmN2FiNTNiOS4uN2YzOGJiYTk4NjQ5ZjQ4ZTc5ZGM2ZGQ5YzkzZGY2NTBl
NTgzZDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjUsMjEgKzI1LDE0
IEBACiAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCi0jaW5jbHVkZSAiV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmgiCi0jaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgi
CiAjaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250
cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCiBXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVD
bGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewpAQCAt
NTUsMjIgKzQ4LDIzIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNv
bnN0IFVSTCYgdXJsKQogICAgIG1fd2ViVmlldy0+ZG93bmxvYWRVUkwodXJsKTsKIH0KIAotdm9p
ZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJh
bWUpCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdl
YkNvcmU6OkZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwotICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMo
c2VhcmNoU3RyaW5nKTsKLSAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCJfcywgIisiX3MpOworICAg
IGF1dG8gcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CiAKLSAgICBTdHJpbmcgdXJsID0gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9
IiArIGVuY29kZWQgKyAiJmllPVVURi04Jm9lPVVURi04IjsKKyAgICBhdXRvIHNlYXJjaFN0cmlu
ZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKKyAgICBzZWFyY2hTdHJpbmcuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisgICAgc2VhcmNoU3RyaW5nID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNl
cXVlbmNlcyhzZWFyY2hTdHJpbmcpOworICAgIHNlYXJjaFN0cmluZy5yZXBsYWNlKCIlMjAiX3Ms
ICIrIl9zKTsKKyAgICBhdXRvIHNlYXJjaFVSTCA9IFVSTCB7IHsgfSwgImh0dHBzOi8vd3d3Lmdv
b2dsZS5jb20vc2VhcmNoP3E9IiArIHNlYXJjaFN0cmluZyArICImaWU9VVRGLTgmb2U9VVRGLTgi
IH07CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
ICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFVSTCB7IFVSTCB7
IH0sIHVybCB9LCB7IH0sIG51bGxwdHIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJk
TGlzdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIH0KKyAgICBXZWJDb3JlOjpVc2VyR2Vz
dHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBXZWJDb3JlOjpQcm9jZXNzaW5nVXNlckdlc3R1cmUg
fTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWFyY2hV
UkwsIHsgfSwgbnVsbHB0ciwgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vLCBXZWJDb3JlOjpMb2Nr
QmFja0ZvcndhcmRMaXN0OjpObywgV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5n
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6Omxvb2tVcEluRGljdGlvbmFyeShGcmFt
ZSopCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29y
ZTo6RnJhbWUqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggNjIyMjgyMDQ3ZjFhNGZlM2JhMThmMDMxYjk2ZjNkMzMwNmM0YTM1
ZC4uNTM5YmU3NzkzMDEzMGNlZGJiODQzODVhMjg2NTllOGUxMDQ0ZjY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTAxNCw3ICsxMDE0LDcgQEAgT2JqZWN0Q29udGVudFR5
cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdAogCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmcg
ZGVjb2RlZFBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7Ci0gICAg
ICAgIG1pbWVUeXBlID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+TUlNRVR5
cGVGb3JFeHRlbnNpb24oZGVjb2RlZFBhdGguc3Vic3RyaW5nKGRlY29kZWRQYXRoLnJldmVyc2VG
aW5kKCcuJykgKyAxKSk7CisgICAgICAgIG1pbWVUeXBlID0gUGx1Z2luRGF0YWJhc2U6Omluc3Rh
bGxlZFBsdWdpbnMoKS0+TUlNRVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyB7IGRlY29kZWRQ
YXRoIH0uc3Vic3RyaW5nKGRlY29kZWRQYXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKSk7CiAgICAg
fQogCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MGM0NTNjYmZhMTBiNzNmMDMxM2RhOGNmMjQy
ZjFjODFjODY3NGU3Li5mZDc4MzgxZWNjMzExNzBiZDEwOTU4NzMxM2I0NTQ4M2NlOWMzZjc3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0dXJuaW5nIHN1YnN0cmlu
Z3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkwuY3BwOiBSZW1vdmVkIHRoZSB0ZXN0
IGZvcgorICAgICAgICBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCBzaW5jZSB3ZSByZW1v
dmVkIHRoYXQgZnVuY3Rpb24uCisgICAgICAgIFVwZGF0ZWQgZm9yIHJlbmFtZSBvZiBVUkw6OnBh
c3N3b3JkIGZyb20gVVJMOjpwYXNzLgorICAgICAgICBVcGRhdGVkIGFyZ3VtZW50cyB0byBpc01h
dGNoaW5nRG9tYWluIHRvIHBhc3MgbGl0ZXJhbHMgdGhhdCBjYW4gYmUgY29udmVydGVkCisgICAg
ICAgIHRvIFN0cmluZ1ZpZXcgcmF0aGVyIHRoYW4gQVNDSUlMaXRlcmFsLCB3aGljaCBTdHJpbmdW
aWV3IGRvZXNuJ3QgeWV0IHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrVVJMKTogVXBkYXRlZCBmb3IgcmVuYW1lIG9mIFVSTDo6cGFzc3dvcmQgZnJvbSBV
Ukw6OnBhc3MuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKTogRGl0
dG8uCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2VzKTogRGl0dG8u
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOiBE
aXR0by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RVc2VyUGFzc3dvcmQpOiBEaXR0by4K
KwogMjAyMC0wNC0yNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBXaGl0ZS1saXN0IG1vcmUgR1N0cmVhbWVyIGVudmlyb25tZW50
IHZhcmlhYmxlcyBpbiB3ZWJraXRweQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTC5jcHAK
aW5kZXggOTM3YjlmOTQwYmY5MTEzZmNlMzcyM2ZhZjBjNWU1YmY2YjFjODdkZS4uNmJmMjc1YTUx
OGQ0N2EwZTJmMjE3OTRhMDc4ZDYxOWNlN2M1MWZkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VUkwuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRFU1RfRihXVEZfVVJMLCBVUkxDb25zdHJ1
Y3RvckNvbnN0Q2hhcikKICAgICBFWFBFQ1RfVFJVRSghIWt1cmwucG9ydCgpKTsKICAgICBFWFBF
Q1RfRVEoODA4MCwga3VybC5wb3J0KCkudmFsdWUoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygi
dXNlcm5hbWUiKSwga3VybC51c2VyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInBhc3N3b3Jk
IiksIGt1cmwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJs
LnBhc3N3b3JkKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoIi9pbmRleC5odG1sIiksIGt1cmwu
cGF0aCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmRleC5odG1sIiksIGt1cmwubGFzdFBh
dGhDb21wb25lbnQoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygidmFyPXZhbCIpLCBrdXJsLnF1
ZXJ5KCkpOwpAQCAtMjYxLDU3ICsyNjEsNiBAQCBURVNUX0YoV1RGX1VSTCwgRXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcikKICAgICB9CiB9CiAKLVRFU1RfRihXVEZfVVJMLCBFcXVhbEln
bm9yaW5nUXVlcnlBbmRGcmFnbWVudCkKLXsKLSAgICBzdHJ1Y3QgVGVzdENhc2UgewotICAgICAg
ICBjb25zdCBjaGFyKiB1cmwxOwotICAgICAgICBjb25zdCBjaGFyKiB1cmwyOwotICAgICAgICBi
b29sIGV4cGVjdGVkOwotICAgIH0gY2FzZXNbXSA9IHsKLSAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8v
ZXhhbXBsZS5jb20vI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAotICAgICAg
ICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxz
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGgiLCB0cnVlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCNoYXNo
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwK
LSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL290
aGVycGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKLSAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKLSAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgw
L3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9w
YXRoIiwgdHJ1ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkj
aGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6
Ly9leGFtcGxlLmNvbTo4MC9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBm
YWxzZX0sCi0gICAgICAgIHsiaHR0cDovL25vdC1leGFtcGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4
YW1wbGUuY29tOjgwLyIsIGZhbHNlfSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEv
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tOjgxLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCB0cnVlfSwKLSAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEi
LCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgjaGFzaCIsICJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1
ZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnkjaGFzaCIsICJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAotICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxz
ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sIiwgdHJ1ZX0sCi0gICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRt
bCNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKLSAgICAgICAgeyJm
aWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0
bWwiLCB0cnVlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5I2hh
c2giLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAotICAgICAgICB7ImZpbGU6
Ly8vcGF0aC90by9vdGhlcl9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIs
IGZhbHNlfSwKLSAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXIvZmlsZS5odG1sIiwgImZp
bGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCi0gICAgICAgIHsiZGF0YTp0ZXh0L3Bs
YWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyIsICJkYXRhOnRleHQvcGxhaW47
Y2hhcnNldD11dGYtODtiYXNlNjQsNzYwLzc2MC83NjAvIiwgZmFsc2V9LAotICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbSIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCi0gICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbSIsIGZhbHNl
fSwKLSAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vP3F1ZXJ5IiwgImZpbGU6Ly9leGFtcGxl
LmNvbS8iLCBmYWxzZX0sCi0gICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSNoYXNo
IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCi0gICAgfTsKLQotICAgIGZvciAoY29u
c3QgYXV0byYgdGVzdCA6IGNhc2VzKSB7Ci0gICAgICAgIFVSTCB1cmwxID0gY3JlYXRlVVJMKHRl
c3QudXJsMSk7Ci0gICAgICAgIFVSTCB1cmwyID0gY3JlYXRlVVJMKHRlc3QudXJsMik7Ci0gICAg
ICAgIEVYUEVDVF9FUSh0ZXN0LmV4cGVjdGVkLCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVu
dCh1cmwxLCB1cmwyKSkKLSAgICAgICAgICAgIDw8ICJUZXN0IGZhaWxlZCBmb3IgIiA8PCB0ZXN0
LnVybDEgPDwgIiB2cy4gIiA8PCB0ZXN0LnVybDI7Ci0gICAgfQotfQotCiBURVNUX0YoV1RGX1VS
TCwgUHJvdG9jb2xJc0luSFRUUEZhbWlseSkKIHsKICAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90
b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkpOwpAQCAtMzc2LDIyICszMjUsMjIgQEAgVEVTVF9GKFdU
Rl9VUkwsIEhvc3RJc01hdGNoaW5nRG9tYWluKQogCiAgICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0
Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5n
RG9tYWluKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0Rv
bWFpbigib3JnIl9zKSk7Ci0gICAgRVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oIndl
YmtpdC5vcmciX3MpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3
LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigi
b3JnIikpOworICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3ZWJraXQub3Jn
IikpOworICAgIEVYUEVDVF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9y
ZyIpKTsKIAotICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigicmciX3MpKTsK
LSAgICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIi5vcmciX3MpKTsKLSAgICBF
WFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oInd3LndlYmtpdC5vcmciX3MpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0dHA6Ly93d3cud2Via2l0Lm9y
ZyJfcykpOworICAgIEVYUEVDVF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigicmciKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHVybC5pc01hdGNoaW5nRG9tYWluKCIub3JnIikpOworICAgIEVYUEVD
VF9GQUxTRSh1cmwuaXNNYXRjaGluZ0RvbWFpbigid3cud2Via2l0Lm9yZyIpKTsKKyAgICBFWFBF
Q1RfRkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oImh0dHA6Ly93d3cud2Via2l0Lm9yZyIpKTsK
IAogICAgIHVybCA9IGNyZWF0ZVVSTCgiZmlsZTovLy93d3cud2Via2l0Lm9yZyIpOwogCiAgICAg
RVhQRUNUX1RSVUUodXJsLmlzTWF0Y2hpbmdEb21haW4oU3RyaW5nIHsgfSkpOwogICAgIEVYUEVD
VF9UUlVFKHVybC5pc01hdGNoaW5nRG9tYWluKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1
cmwuaXNNYXRjaGluZ0RvbWFpbigid2Via2l0Lm9yZyJfcykpOwotICAgIEVYUEVDVF9GQUxTRSh1
cmwuaXNNYXRjaGluZ0RvbWFpbigid3d3LndlYmtpdC5vcmciX3MpKTsKKyAgICBFWFBFQ1RfRkFM
U0UodXJsLmlzTWF0Y2hpbmdEb21haW4oIm9yZyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodXJsLmlz
TWF0Y2hpbmdEb21haW4oIndlYmtpdC5vcmciKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVybC5pc01h
dGNoaW5nRG9tYWluKCJ3d3cud2Via2l0Lm9yZyIpKTsKIAogICAgIFVSTCBlbXB0eVVSTDsKICAg
ICBFWFBFQ1RfRkFMU0UoZW1wdHlVUkwuaXNNYXRjaGluZ0RvbWFpbihTdHJpbmcgeyB9KSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAppbmRleCAxMDM5ZTU0
YjFhZWI3YzI2MWY1YTJhYzM5MjhlMTE5ODczYjM2Y2M4Li4wOGEzYTllOTg4M2QwNjhiY2MzZWI1
ZGYxNTFlNjBmNzFiNDA3YzlkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VS
TFBhcnNlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAg
ICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5w
b3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBh
dGgoKSkpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAg
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwotICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CisgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9y
dCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRo
KCkpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIAog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOworICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHNO
ZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQg
Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGIKICAgICAKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwg
dXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwu
dXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNz
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3Jk
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAg
ICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwpAQCAtNDYyLDE5ICs0
NjIsMTkgQEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIEJhc2ljKQogICAgIGNoZWNrVVJMKCJodHRw
Oi8vOkBob3N0IiwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiIsICIiLCAiaHR0
cDovL2hvc3QvIn0pOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0VXNlclBhc3MoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkZWNvZGVkLCBjb25zdCBTdHJpbmcmIGVuY29kZWQpCitz
dGF0aWMgdm9pZCB0ZXN0VXNlclBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0
cmluZyYgZGVjb2RlZCwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQogewogICAgIFVSTCB1c2VyVVJM
KFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwOi8vIiwgdmFsdWUsICJAZXhhbXBsZS5jb20vIikpOwog
ICAgIFVSTCBwYXNzVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwOi8vdXNlcjoiLCB2YWx1ZSwg
IkBleGFtcGxlLmNvbS8iKSk7CiAgICAgRVhQRUNUX0VRKGVuY29kZWQsIHVzZXJVUkwuZW5jb2Rl
ZFVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwuZW5jb2RlZFBhc3MoKSk7
CisgICAgRVhQRUNUX0VRKGVuY29kZWQsIHBhc3NVUkwuZW5jb2RlZFBhc3N3b3JkKCkpOwogICAg
IEVYUEVDVF9FUShkZWNvZGVkLCB1c2VyVVJMLnVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKGRlY29k
ZWQsIHBhc3NVUkwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoZGVjb2RlZCwgcGFzc1VSTC5wYXNz
d29yZCgpKTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdmFs
dWUsIGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKK3N0YXRpYyB2b2lkIHRlc3RVc2VyUGFzc3dvcmQo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGVkKQogewotICAgIHRlc3RV
c2VyUGFzcyh2YWx1ZSwgdmFsdWUsIGVuY29kZWQpOworICAgIHRlc3RVc2VyUGFzc3dvcmQodmFs
dWUsIHZhbHVlLCBlbmNvZGVkKTsKIH0KIAogVEVTVF9GKFdURl9VUkxQYXJzZXIsIENyZWRlbnRp
YWxzKQpAQCAtNDgzLDIwICs0ODMsMjAgQEAgVEVTVF9GKFdURl9VUkxQYXJzZXIsIENyZWRlbnRp
YWxzKQogICAgIGF1dG8gaW52YWxpZFN1cnJvZ2F0ZSA9IHV0ZjE2U3RyaW5nPDM+KHsweEQ4MDAs
ICdBJywgJ1wwJ30pOwogICAgIGF1dG8gcmVwbGFjZW1lbnRBID0gdXRmMTZTdHJpbmc8Mz4oezB4
RkZGRCwgJ0EnLCAnXDAnfSk7CiAKLSAgICB0ZXN0VXNlclBhc3MoImEiLCAiYSIpOwotICAgIHRl
c3RVc2VyUGFzcygiJSIsICIlIik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlMjUiLCAiJSIsICIlMjUi
KTsKLSAgICB0ZXN0VXNlclBhc3MoIiUyNTI1IiwgIiUyNSIsICIlMjUyNSIpOwotICAgIHRlc3RV
c2VyUGFzcygiJUZYIiwgIiVGWCIpOwotICAgIHRlc3RVc2VyUGFzcygiJTAwIiwgU3RyaW5nOjpm
cm9tVVRGOCgiXDAiLCAxKSwgIiUwMCIpOwotICAgIHRlc3RVc2VyUGFzcygiJUYlMjUiLCAiJUYl
IiwgIiVGJTI1Iik7Ci0gICAgdGVzdFVzZXJQYXNzKCIlWCUyNSIsICIlWCUiLCAiJVglMjUiKTsK
LSAgICB0ZXN0VXNlclBhc3MoIiUlMjUiLCAiJSUiLCAiJSUyNSIpOwotICAgIHRlc3RVc2VyUGFz
cygi8J+SqSIsICIlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKLSAgICB0ZXN0VXNlclBhc3Mo
IiXwn5KpIiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKLSAgICB0ZXN0VXNlclBhc3Mo
dmFsaWRTdXJyb2dhdGUsICIlRjAlOTAlODUlOTUiKTsKLSAgICB0ZXN0VXNlclBhc3MocmVwbGFj
ZW1lbnRBLCAiJUVGJUJGJUJEQSIpOwotICAgIHRlc3RVc2VyUGFzcyhpbnZhbGlkU3Vycm9nYXRl
LCByZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiYSIs
ICJhIik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJSIsICIlIik7CisgICAgdGVzdFVzZXJQYXNz
d29yZCgiJTI1IiwgIiUiLCAiJTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJTI1MjUiLCAi
JTI1IiwgIiUyNTI1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZCgiJUZYIiwgIiVGWCIpOworICAg
IHRlc3RVc2VyUGFzc3dvcmQoIiUwMCIsIFN0cmluZzo6ZnJvbVVURjgoIlwwIiwgMSksICIlMDAi
KTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCIlRiUyNSIsICIlRiUiLCAiJUYlMjUiKTsKKyAgICB0
ZXN0VXNlclBhc3N3b3JkKCIlWCUyNSIsICIlWCUiLCAiJVglMjUiKTsKKyAgICB0ZXN0VXNlclBh
c3N3b3JkKCIlJTI1IiwgIiUlIiwgIiUlMjUiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3JkKCLwn5Kp
IiwgIiVDMyVCMCVDMiU5RiVDMiU5MiVDMiVBOSIpOworICAgIHRlc3RVc2VyUGFzc3dvcmQoIiXw
n5KpIiwgIiUlQzMlQjAlQzIlOUYlQzIlOTIlQzIlQTkiKTsKKyAgICB0ZXN0VXNlclBhc3N3b3Jk
KHZhbGlkU3Vycm9nYXRlLCAiJUYwJTkwJTg1JTk1Iik7CisgICAgdGVzdFVzZXJQYXNzd29yZChy
ZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CisgICAgdGVzdFVzZXJQYXNzd29yZChpbnZhbGlk
U3Vycm9nYXRlLCByZXBsYWNlbWVudEEsICIlRUYlQkYlQkRBIik7CiB9CiAKIFRFU1RfRihXVEZf
VVJMUGFyc2VyLCBQYXJzZVJlbGF0aXZlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAppbmRleCBhMjY4
MTZkYTE0OTFmNmUzYjIwNTdjNjZhN2RjYTQ1OWQxMzYxNGQzLi5lMjYxNzkzMzQyNTIyNDNiYTVm
MTQxODBmNzIyNGViNzc1NGRjYTFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwogICAgIGF1dG8gdXJsID0gVVJMKHsgfSwg
dXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2ws
IHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVz
ZXIoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7
CisgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwogICAgIEVYUEVDVF9F
UShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
U3RyaW5nLCBjb25zdAogICAgIGF1dG8gdXJsID0gVVJMKFVSTCh7IH0sIGJhc2VVUkxTdHJpbmcp
LCB1cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2Nv
bCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwu
dXNlcigpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7CiAgICAgRVhQRUNU
X0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
aW5kZXggNzU1M2I2ZTgyZDM1ZmVmYmI2YzdhYTllODdhMjIyY2JjNWQ5ZGRjZC4uYjIzMmQxYmNh
ZjMyNDZmM2MwMmZjMWE0ODM1MjlmNjYzNjlhZTk2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdoZW4gcmV0
dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdXJsL3VybC1zZXR0ZXJz
LWV4cGVjdGVkLnR4dDogVXBkYXRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBwcm9ncmVzc2lvbiBp
bgorICAgICAgICBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gcG9ydCBudW1iZXJzIGFyZSA+NjU1MzUu
IEkgZGlkbid0IG9yaWdpbmFsbHkgaW50ZW5kIHRvIG1ha2UgdGhpcyBpbXByb3ZlbWVudCwKKyAg
ICAgICAgYnV0IGl0IGZlbGwgb3V0IG5hdHVyYWxseSBmcm9tIHRoZSByZWZhY3RvcmluZyBjaGFu
Z2VzLgorCiAyMDIwLTA0LTI0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgSW1wb3J0IGZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUvZmV0Y2guaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvdXJs
LXNldHRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy91cmwvdXJsLXNldHRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDExODcwYjk4N2U2
NmY0MzM2YWEwMGI1ZGNkMTVjYzgwMmRjNjEzMWQuLjc5ZWIxMTdiOTkxZDQ1NzFkMTY0MzBiNjQ0
NGVlZWU4YzVkMDhmZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdXJsL3VybC1zZXR0ZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3VybC91cmwtc2V0dGVycy1leHBl
Y3RlZC50eHQKQEAgLTI4Miw5ICsyODIsOSBAQCBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDov
L2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206ODA4MCsyJyBBbnl0aAogUEFT
UyBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUu
Y29tOjY1NTM1JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2VycyAKIFBBU1MgPGE+OiBT
ZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUz
NScgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMgCiBQQVNTIDxhcmVhPjogU2V0dGlu
ZyA8aHR0cDovL2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzUnIFBv
cnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzIAotRkFJTCBVUkw6IFNldHRpbmcgPGh0dHA6
Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51bWJl
cnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3RuYW1l
IGlzIHN0aWxsIHNldCwgdGhvdWdoLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4
YW1wbGUuY29tL3BhdGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoIgotRkFJTCA8
YT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29t
OjY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMg
YW4gZXJyb3IuIEhvc3RuYW1lIGlzIHN0aWxsIHNldCwgdGhvdWdoLiBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxl
LmNvbTo2NTUzNi9wYXRoIgotRkFJTCA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5l
dC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJp
dCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IuIEhvc3RuYW1lIGlzIHN0aWxsIHNl
dCwgdGhvdWdoLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiIGJ1dCBnb3QgImh0dHA6Ly9leGFtcGxlLmNvbTo2NTUzNi9wYXRoIgorUEFTUyBVUkw6IFNl
dHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5ob3N0ID0gJ2V4YW1wbGUuY29tOjY1NTM2
JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJy
b3IuIEhvc3RuYW1lIGlzIHN0aWxsIHNldCwgdGhvdWdoLiAKK1BBU1MgPGE+OiBTZXR0aW5nIDxo
dHRwOi8vZXhhbXBsZS5uZXQvcGF0aD4uaG9zdCA9ICdleGFtcGxlLmNvbTo2NTUzNicgUG9ydCBu
dW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yLiBIb3N0
bmFtZSBpcyBzdGlsbCBzZXQsIHRob3VnaC4gCitQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDov
L2V4YW1wbGUubmV0L3BhdGg+Lmhvc3QgPSAnZXhhbXBsZS5jb206NjU1MzYnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvci4gSG9zdG5hbWUg
aXMgc3RpbGwgc2V0LCB0aG91Z2guIAogUEFTUyBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxl
Lm5ldC8+Lmhvc3QgPSAnW2dvb2dsZS5jb21dJyBCcm9rZW4gSVB2NiAKIEZBSUwgPGE+OiBTZXR0
aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQvPi5ob3N0ID0gJ1tnb29nbGUuY29tXScgQnJva2VuIElQ
djYgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImh0dHA6Ly9leGFtcGxlLm5ldC8iIGJ1dCBnb3Qg
Imh0dHA6Ly9bZ29vZ2xlLmNvbV0vIgogRkFJTCA8YXJlYT46IFNldHRpbmcgPGh0dHA6Ly9leGFt
cGxlLm5ldC8+Lmhvc3QgPSAnW2dvb2dsZS5jb21dJyBCcm9rZW4gSVB2NiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUubmV0LyIgYnV0IGdvdCAiaHR0cDovL1tnb29nbGUu
Y29tXS8iCkBAIC00NTksMTIgKzQ1OSwxMiBAQCBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDov
L2V4YW1wbGUubmV0L3BhdGg+LnBvcnQgPSAnODA4MCsyJyBBbnl0aGluZyBvdGhlciB0aAogUEFT
UyBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldC9wYXRoPi5wb3J0ID0gJzY1NTM1JyBQ
b3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2VycyAKIFBBU1MgPGE+OiBTZXR0aW5nIDxodHRw
Oi8vZXhhbXBsZS5uZXQvcGF0aD4ucG9ydCA9ICc2NTUzNScgUG9ydCBudW1iZXJzIGFyZSAxNiBi
aXQgaW50ZWdlcnMgCiBQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0L3Bh
dGg+LnBvcnQgPSAnNjU1MzUnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzIAotRkFJ
TCBVUkw6IFNldHRpbmcgPGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1
MzYnIFBvcnQgbnVtYmVycyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBl
cnJvciBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0
aCIgYnV0IGdvdCAiaHR0cDovL2V4YW1wbGUubmV0OjAvcGF0aCIKLUZBSUwgPGE+OiBTZXR0aW5n
IDxodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJl
cnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBnb3QgImh0
dHA6Ly9leGFtcGxlLm5ldDowL3BhdGgiCi1GQUlMIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4
YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBi
aXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJodHRwOi8vZXhhbXBs
ZS5uZXQ6MC9wYXRoIgotRkFJTCBVUkw6IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBsZS5u
ZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRl
Z2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIm5v
bi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoIiBidXQgZ290ICJub24tc3BlY2lhbDov
L2V4YW1wbGUubmV0OjAvcGF0aCIKLUZBSUwgPGE+OiBTZXR0aW5nIDxub24tc3BlY2lhbDovL2V4
YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBi
aXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlzIGFuIGVycm9yIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJub24tc3BlY2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aCIgYnV0IGdvdCAibm9uLXNw
ZWNpYWw6Ly9leGFtcGxlLm5ldDowL3BhdGgiCi1GQUlMIDxhcmVhPjogU2V0dGluZyA8bm9uLXNw
ZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAibm9uLXNwZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGgiIGJ1dCBn
b3QgIm5vbi1zcGVjaWFsOi8vZXhhbXBsZS5uZXQ6MC9wYXRoIgorUEFTUyBVUkw6IFNldHRpbmcg
PGh0dHA6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAKK1BBU1MgPGE+
OiBTZXR0aW5nIDxodHRwOi8vZXhhbXBsZS5uZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQ
b3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRlZ2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3Ig
CitQQVNTIDxhcmVhPjogU2V0dGluZyA8aHR0cDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9y
dCA9ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5n
IGlzIGFuIGVycm9yIAorUEFTUyBVUkw6IFNldHRpbmcgPG5vbi1zcGVjaWFsOi8vZXhhbXBsZS5u
ZXQ6ODA4MC9wYXRoPi5wb3J0ID0gJzY1NTM2JyBQb3J0IG51bWJlcnMgYXJlIDE2IGJpdCBpbnRl
Z2Vycywgb3ZlcmZsb3dpbmcgaXMgYW4gZXJyb3IgCitQQVNTIDxhPjogU2V0dGluZyA8bm9uLXNw
ZWNpYWw6Ly9leGFtcGxlLm5ldDo4MDgwL3BhdGg+LnBvcnQgPSAnNjU1MzYnIFBvcnQgbnVtYmVy
cyBhcmUgMTYgYml0IGludGVnZXJzLCBvdmVyZmxvd2luZyBpcyBhbiBlcnJvciAKK1BBU1MgPGFy
ZWE+OiBTZXR0aW5nIDxub24tc3BlY2lhbDovL2V4YW1wbGUubmV0OjgwODAvcGF0aD4ucG9ydCA9
ICc2NTUzNicgUG9ydCBudW1iZXJzIGFyZSAxNiBiaXQgaW50ZWdlcnMsIG92ZXJmbG93aW5nIGlz
IGFuIGVycm9yIAogUEFTUyBVUkw6IFNldHRpbmcgPGZpbGU6Ly90ZXN0Lz4ucG9ydCA9ICcxMicg
CiBQQVNTIDxhPjogU2V0dGluZyA8ZmlsZTovL3Rlc3QvPi5wb3J0ID0gJzEyJyAKIFBBU1MgPGFy
ZWE+OiBTZXR0aW5nIDxmaWxlOi8vdGVzdC8+LnBvcnQgPSAnMTInIAo=
</data>
<flag name="review"
          id="412934"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>