<?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>238525</bug_id>
          
          <creation_ts>2022-03-29 15:25:44 -0700</creation_ts>
          <short_desc>Prepare WebKit/ &amp; WebKitLegacy/ for making the String(const char*) constructor explicit</short_desc>
          <delta_ts>2022-04-01 19:56:49 -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>WebKit2</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=238530</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>
          <dependson>238678</dependson>
          <blocked>238693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>pascoe</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856214</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 15:25:44 -0700</bug_when>
    <thetext>Prepare WebKit/, WebKitLegacy/ and Tools/ for making the String(const char*) constructor explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856222</commentid>
    <comment_count>1</comment_count>
      <attachid>456072</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 15:50:12 -0700</bug_when>
    <thetext>Created attachment 456072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856242</commentid>
    <comment_count>2</comment_count>
      <attachid>456079</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-29 16:23:08 -0700</bug_when>
    <thetext>Created attachment 456079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856399</commentid>
    <comment_count>3</comment_count>
      <attachid>456125</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 08:42:14 -0700</bug_when>
    <thetext>Created attachment 456125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856454</commentid>
    <comment_count>4</comment_count>
      <attachid>456125</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 10:39:27 -0700</bug_when>
    <thetext>Comment on attachment 456125
Patch

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

&gt; Source/WTF/wtf/cocoa/VectorCocoa.h:54
&gt; +inline RetainPtr&lt;id&gt; makeNSArrayElement(const char* string)
&gt; +{
&gt; +    return bridge_cast(adoptCF(CFStringCreateWithCString(nullptr, string, kCFStringEncodingISOLatin1)));
&gt; +}

I hope this doesn&apos;t lead to encoding mistakes. If these are likely to be string literals, this could be UTF-8, not Latin-1, since that&apos;s what we use for most of our source code, although it’s probably against our rules to use them in string literals. Or could pass kCFStringEncodingASCII, which is not really better than Latin-1, I guess.

We could overload for ASCIILiteral instead or in addition if that was useful. Annoying maybe to have to use _s everywhere, but at least makes it less likely we’ll misinterpret a const char* that happens to be Latin-1 or UTF-8 as the other.

I guess leaving it Latin-1 makes it the same semantics as before since that’s what we do with const char* when constructing a String, but that’s really not good. I almost wish there was no constructor for String that took a const char* without being explicit about the character encoding. We could have fromASCII, fromLatin1, fromUTF8 some day. Well, making the constructor explicit is a step in the right direction.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2536
&gt; +    if (!strcmp(tableName.characters(), &quot;StorageAccessUnderTopFrameDomains&quot;))

Seems like we should make operator==(ASCIILiteral, const char*) overload instead of writing strcmp on each line. Could be local to this file if you like. Of course, there might be slight ambiguity about whether it is pointer equality or string equality. Maybe it should be operator==(ASCIILiteral, ASCIILiteral) and we could add _s to all of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856455</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 10:45:10 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 456125 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456125&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/cocoa/VectorCocoa.h:54
&gt; &gt; +inline RetainPtr&lt;id&gt; makeNSArrayElement(const char* string)
&gt; &gt; +{
&gt; &gt; +    return bridge_cast(adoptCF(CFStringCreateWithCString(nullptr, string, kCFStringEncodingISOLatin1)));
&gt; &gt; +}
&gt; 
&gt; I hope this doesn&apos;t lead to encoding mistakes. If these are likely to be
&gt; string literals, this could be UTF-8, not Latin-1, since that&apos;s what we use
&gt; for most of our source code, although it’s probably against our rules to use
&gt; them in string literals. Or could pass kCFStringEncodingASCII, which is not
&gt; really better than Latin-1, I guess.
&gt; 
&gt; We could overload for ASCIILiteral instead or in addition if that was
&gt; useful. Annoying maybe to have to use _s everywhere, but at least makes it
&gt; less likely we’ll misinterpret a const char* that happens to be Latin-1 or
&gt; UTF-8 as the other.
&gt; 
&gt; I guess leaving it Latin-1 makes it the same semantics as before since
&gt; that’s what we do with const char* when constructing a String, but that’s
&gt; really not good. I almost wish there was no constructor for String that took
&gt; a const char* without being explicit about the character encoding. We could
&gt; have fromASCII, fromLatin1, fromUTF8 some day. Well, making the constructor
&gt; explicit is a step in the right direction.

I tried to maintain the previous behavior, which is why I used latin1. That said, I don&apos;t mind switching to UTF-8 for extra safety.
If I remember correctly, I needed this because our MIMETypeRegistry has several functions that return a FixedVector&lt;const char*&gt; and those get converted to NSArrays. It used to do an implicit conversion of each item to WTF::String.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2536
&gt; &gt; +    if (!strcmp(tableName.characters(), &quot;StorageAccessUnderTopFrameDomains&quot;))
&gt; 
&gt; Seems like we should make operator==(ASCIILiteral, const char*) overload
&gt; instead of writing strcmp on each line. Could be local to this file if you
&gt; like. Of course, there might be slight ambiguity about whether it is pointer
&gt; equality or string equality. Maybe it should be operator==(ASCIILiteral,
&gt; ASCIILiteral) and we could add _s to all of these?

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856459</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 10:49:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; If I remember correctly, I needed this because our MIMETypeRegistry has
&gt; several functions that return a FixedVector&lt;const char*&gt; and those get
&gt; converted to NSArrays.

Maybe those should be changed to FixedVector&lt;ASCIILiteral&gt; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856461</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 10:49:53 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Maybe those should be changed to FixedVector&lt;ASCIILiteral&gt; instead.

Or Span&lt;const ASCIILiteral&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856464</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 10:51:50 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; If I remember correctly, I needed this because our MIMETypeRegistry has
&gt; &gt; several functions that return a FixedVector&lt;const char*&gt; and those get
&gt; &gt; converted to NSArrays.
&gt; 
&gt; Maybe those should be changed to FixedVector&lt;ASCIILiteral&gt; instead.

I had tried that at first and failed. That said, it is probably doable. I am just very unfamiliar with FixedVector / makeFixedVector and ComparableCaseFoldingASCIILiteral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856478</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 11:02:58 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Darin Adler from comment #6)
&gt; &gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; If I remember correctly, I needed this because our MIMETypeRegistry has
&gt; &gt; &gt; several functions that return a FixedVector&lt;const char*&gt; and those get
&gt; &gt; &gt; converted to NSArrays.
&gt; &gt; 
&gt; &gt; Maybe those should be changed to FixedVector&lt;ASCIILiteral&gt; instead.
&gt; 
&gt; I had tried that at first and failed. That said, it is probably doable. I am
&gt; just very unfamiliar with FixedVector / makeFixedVector and
&gt; ComparableCaseFoldingASCIILiteral.

I will give it another try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856483</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 11:07:16 -0700</bug_when>
    <thetext>Might not be worth it. Not sure that ComparableCaseFoldingASCIILiteral is compatible with ASCIILiteral, despite the names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856521</commentid>
    <comment_count>11</comment_count>
      <attachid>456163</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 12:19:52 -0700</bug_when>
    <thetext>Created attachment 456163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856525</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 12:32:37 -0700</bug_when>
    <thetext>I added the operator==(ASCIILiteral, const char*) and operator==(ASCIILiteral, ASCIILiteral) operators as suggested by Darin.

I also dropped the changes to VectorCocoa.h and updated our MIMETypeRegistry functions to return FixedVector&lt;ASCIILiteral&gt; instead of FixedVector&lt;const char*&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856527</commentid>
    <comment_count>13</comment_count>
      <attachid>456163</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 12:39:19 -0700</bug_when>
    <thetext>Comment on attachment 456163
Patch

And I broke the iOS build..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856528</commentid>
    <comment_count>14</comment_count>
      <attachid>456165</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 12:42:59 -0700</bug_when>
    <thetext>Created attachment 456165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856585</commentid>
    <comment_count>15</comment_count>
      <attachid>456179</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 15:06:55 -0700</bug_when>
    <thetext>Created attachment 456179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856648</commentid>
    <comment_count>16</comment_count>
      <attachid>456179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 19:57:36 -0700</bug_when>
    <thetext>Comment on attachment 456179
Patch

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

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:253
&gt; -    String tableStatement = database.tableSQL(&quot;Records&quot;_s);
&gt; +    String tableStatement = database.tableSQL(&quot;Records&quot;);

I’ll just say this once and not push too hard: I would have liked to be able to use ASCIILiteral instead of const char* here, just so the rule about when to use _s was simpler. I’m thinking that it should almost never be harmful to *add* _s; gives a little more information that this is a literal, guaranteed all-ASCII, and has a constant-foldable strlen that we could choose to take advantage of in future, and also allows converting to const char* so doesn’t require much repetition of code if we don’t want to optimize right now. For example, maybe here the specific thing needed is a StringView constructor that takes an ASCIILiteral?

Generally it seems this should be pretty easy, adding various overloads that take ASCIILiteral; only tricky thing is if we create some new ambiguity that causes us to have to touch other call sites.

If we pursued the strategy above, then there would be no change to this line of code, and quite a few others in this patch, where we would not need to remove _s.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:716
&gt; +    constexpr ASCIILiteral attributedTableName = &quot;AttributedPrivateClickMeasurement&quot;_s;

Why not auto here?

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheBlobStorage.cpp:126
&gt; -    auto linkPath = FileSystem::fileSystemRepresentation(path);
&gt; -    auto data = mapFile(linkPath.data());
&gt; +    auto data = mapFile(path);

Seems like this change might *fix* a bug for non-ASCII characters in Blob storage paths, since it will no longer convert to UTF-8 (file system representation) and then convert back to a WTF::String, treating the non-ASCII characters as Latin-1, not UTF-8.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheData.cpp:-69
&gt; -    return mapFile(FileSystem::fileSystemRepresentation(path).data());

Same here.

&gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:44
&gt; +        API::ExperimentalFeature::create(String { &lt;%= @pref.humanReadableName %&gt; }, &quot;&lt;%= @pref.name %&gt;&quot;_s, String { &lt;%= @pref.humanReadableDescription %&gt; }, DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),

Does this function need to take String rather than ASCIILiteral?

&gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:43
&gt; +        API::InternalDebugFeature::create(String { &lt;%= @pref.humanReadableName %&gt; }, &quot;&lt;%= @pref.name %&gt;&quot;_s, String { &lt;%= @pref.humanReadableDescription %&gt; }, DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),

Does this function need to take String rather than ASCIILiteral?

&gt; Source/WebKit/Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:230
&gt; -    return [targetMethodSignature _signatureForBlockAtArgumentIndex:blockIndex]._typeString.UTF8String;
&gt; +    return [targetMethodSignature _signatureForBlockAtArgumentIndex:blockIndex]._typeString;

If there could ever have been non-ASCII characters here, then this fixed another bug where we do the convert to UTF-8 and then treat as Latin-1 thing.

&gt; Source/WebKit/Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:273
&gt; -        String wireBlockSignature = [NSMethodSignature signatureWithObjCTypes:replyInfo-&gt;blockSignature.utf8().data()]._typeString.UTF8String;
&gt; +        String wireBlockSignature = [NSMethodSignature signatureWithObjCTypes:replyInfo-&gt;blockSignature.utf8().data()]._typeString;

Ditto.

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:289
&gt; -    // Append the file name.    
&gt; -    path.append(prefix.utf8().data(), prefix.length());
&gt; +    // Append the file name.
&gt; +    auto prefixAsUTF8 = prefix.utf8();
&gt; +    path.append(prefixAsUTF8.data(), prefixAsUTF8.length());

Looks like this fixes a bug where filenames with non-ASCII characters might get truncated because we would use the length in characters rather than the UTF-8 length in bytes.

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:292
&gt; +    handle.m_sandboxExtension = SandboxExtensionImpl::create(FileSystem::fileSystemRepresentation(String::fromUTF8(path.data())).data(), type);

Any change here that the data is not valid UTF-8? If so we might have to check the result of String::fromUTF8 for null; the Latin-1 constructor can never fail, but UTF-8 decoding can.

&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:75
&gt; +    clientIdentifier = String { xpc_dictionary_get_string(m_initializerMessage, &quot;client-identifier&quot;) };

Hoping these are all guaranteed to be ASCII or Latin-1.

&gt; Source/WebKit/Shared/IPCTester.cpp:94
&gt; +        driverName = String { getenv(&quot;WEBKIT_MESSAGE_TEST_DEFAULT_DRIVER&quot;) };

Encoding confusion here again, where we convert to String treating it as Latin-1, then convert back to a C string below treating as UTF-8.

&gt; Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:285
&gt; -    return resolvedPath;
&gt; +    return String::fromUTF8(resolvedPath);

Good fix here, where we used Latin-1 before, not UTF-8.

&gt; Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp:235
&gt; +    WebKit::NetworkCache::Data fileData = mapFile(path);

Seems like an auto would be good here.

&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:518
&gt; +    static API::String&amp; sessionHistoryURLValueType = API::String::create(&quot;SessionHistoryURL&quot;_s).leakRef();

I would use auto&amp; here.

&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:524
&gt; +    static API::String&amp; sessionBackForwardListValueType = API::String::create(&quot;SessionBackForwardListItem&quot;_s).leakRef();

Ditto.

&gt; Source/WebKit/UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:61
&gt; +    return WTF::String::fromUTF8([contentRuleListStoreURL.get() absoluteURL].path.fileSystemRepresentation);

Seems like we should just return path and let the NSString be converted to an NSString, rather than calling fileSystemRepresentation and then String::fromUTF8.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStore.mm:82
&gt; +    return wrapper(API::ContentRuleListStore::storeWithPath(String::fromUTF8(url.absoluteURL.fileSystemRepresentation)));

Ditto, absoluteURL is an NSString.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStore.mm:197
&gt; +    return wrapper(API::ContentRuleListStore::storeWithPath(String::fromUTF8(url.absoluteURL.fileSystemRepresentation)));

Ditto.

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:68
&gt; +        launchOptions.extraInitializationData.add&lt;HashTranslatorASCIILiteral&gt;(&quot;user-directory-suffix&quot;_s, String::fromUTF8(userDirectorySuffix));

Seems like the &quot;fromUTF8&quot; here could fail. In that case we probably want to ignore it rather than adding a null?

&gt; Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm:44
&gt; +            auto webkitFrameworkDirectory = WTF::FileSystemImpl::parentPath(String::fromUTF8(info.dli_fname));

Ditto.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:285
&gt; +    m_resolvedPaths.uiProcessBundleResourcePath = resolvePathForSandboxExtension(String { [[NSBundle mainBundle] resourcePath] });

Why is this needed? Since resourcePath is an NSString, we should be able to convert without an explicit call to the String constructor.

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:225
&gt; +            auto attObj = buildAttestationMap(WTFMove(authenticatorData), String { emptyString() }, { }, AttestationConveyancePreference::None);

I think we can just use the braces here without writing String. It does seem peculiar if this takes a String&amp;&amp;, but I assume that is the case since we can’t pass the const String&amp;.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:277
&gt; +        return WebKit::stringByResolvingSymlinksInPath(String { cachePath.stringByStandardizingPath });

Why is this needed? Since stringByStandardizingPath returns an NSString, we should be able to convert without an explicit call to the String constructor.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:403
&gt; +    return String::fromUTF8(url.absoluteURL.path.fileSystemRepresentation);

Should just return path, and let the NSString be converted to a String without calling fileSystemRepresentation and then String::fromUTF8.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:431
&gt; +    return String::fromUTF8(url.absoluteURL.path.fileSystemRepresentation);

Ditto.

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:460
&gt; +    return String::fromUTF8(url.absoluteURL.path.fileSystemRepresentation);

Ditto.

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:818
&gt; -    RetainPtr&lt;CABasicAnimation&gt; animation = [CABasicAnimation animationWithKeyPath:keyPath];
&gt; +    auto nsKeyPath = adoptNS([[NSString alloc] initWithBytes:keyPath.characters() length:keyPath.length() encoding:NSISOLatin1StringEncoding]);
&gt; +    RetainPtr&lt;CABasicAnimation&gt; animation = [CABasicAnimation animationWithKeyPath:nsKeyPath.get()];

Seems like the helper to create an NSString from an ASCIILiteral should go somewhere re-usable. Then we would not have to split this one line into two. Even if it was just local to this file.

&gt; Source/WebKit/webpushd/PushClientConnection.mm:155
&gt; +    sendDaemonMessage&lt;DaemonMessageType::DebugMessage&gt;(message.toStringWithoutCopying());

Seems suspect. If sendDaemonMessage really doesn’t need to hold onto the string, which is required to make toStringWithoutCopying safe, then maybe it should be changed to take StringView to make that explicit.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm:653
&gt; +    _destinationPath = FileSystem::openTemporaryFile(String { filename }, fileHandle);

Why is this needed? I’d think that NSString to String is not explicit.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm:88
&gt; +    NSString *existingDatbaseHash = WebCore::SQLiteFileSystem::computeHashForFileName(String { existingDatabaseName });
&gt; +    NSString *createdDatabaseHash = WebCore::SQLiteFileSystem::computeHashForFileName(String { createdDatabaseName });
&gt; +    NSString *unusedDatabaseHash = WebCore::SQLiteFileSystem::computeHashForFileName(String { createdDatabaseName });

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm:131
&gt; +    NSString *existingDatbaseHash = WebCore::SQLiteFileSystem::computeHashForFileName(String { existingDatabaseName });
&gt; +    NSString *createdDatabaseHash = WebCore::SQLiteFileSystem::computeHashForFileName(String { createdDatabaseName });

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856649</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 20:05:00 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 456179 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456179&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:253
&gt; &gt; -    String tableStatement = database.tableSQL(&quot;Records&quot;_s);
&gt; &gt; +    String tableStatement = database.tableSQL(&quot;Records&quot;);
&gt; 
&gt; I’ll just say this once and not push too hard: I would have liked to be able
&gt; to use ASCIILiteral instead of const char* here, just so the rule about when
&gt; to use _s was simpler. I’m thinking that it should almost never be harmful
&gt; to *add* _s; gives a little more information that this is a literal,
&gt; guaranteed all-ASCII, and has a constant-foldable strlen that we could
&gt; choose to take advantage of in future, and also allows converting to const
&gt; char* so doesn’t require much repetition of code if we don’t want to
&gt; optimize right now. For example, maybe here the specific thing needed is a
&gt; StringView constructor that takes an ASCIILiteral?

I mentioned this during one of your earlier reviews but StringView does have a constructor that takes in an ASCIILiteral. However, this constructor is marked as explicit for some reason.
This is why I am using &quot;Record&quot; (I feel `StringView { &quot;Record&quot;_s }` would be too verbose).

As I said last time, I don&apos;t know that there is a good reason for that constructor to be marked as explicit though. As far as I can tell, constructing a StringView from an ASCIILiteral is both always safe and efficient?
What do you think about dropping the explicit so that I can use _s more consistently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856651</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 20:16:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; What do you think about dropping the explicit so that I can use _s more
&gt; consistently?

I like the idea. I think that we should try it and see if it causes any problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856659</commentid>
    <comment_count>19</comment_count>
      <attachid>456179</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-30 20:31:52 -0700</bug_when>
    <thetext>Comment on attachment 456179
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:716
&gt;&gt; +    constexpr ASCIILiteral attributedTableName = &quot;AttributedPrivateClickMeasurement&quot;_s;
&gt; 
&gt; Why not auto here?

No good reason, will update.

&gt;&gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:44
&gt;&gt; +        API::ExperimentalFeature::create(String { &lt;%= @pref.humanReadableName %&gt; }, &quot;&lt;%= @pref.name %&gt;&quot;_s, String { &lt;%= @pref.humanReadableDescription %&gt; }, DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; 
&gt; Does this function need to take String rather than ASCIILiteral?

The issue is that we don&apos;t have an ASCIILiteral, we have things that are defined in the yaml like &quot;&quot;, &quot;foo&quot; or { }, or defaultFooValue().

I could modify the template here to append the `_s` suffix to @pref.humanReadableName and and @pref.humanReadableDescription. I am not particularly good with Ruby and it seems pretty awkward to do inside the ERB? That why I didn&apos;t bother.
I tried using ASCIILiterals in the yaml also but that leads to other issues because we have some code trying to Objc &quot;box&quot; (e.g `@(PSON_DEFAULT_VALUE)`) those things.

For WebCore settings, I did update the erb to append `_s` in the ERB when needed but it was a little simpler (there was only one value in the line that I had to worry about, not 2). Here, I decided not to bother but we can revisit.

&gt;&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:292
&gt;&gt; +    handle.m_sandboxExtension = SandboxExtensionImpl::create(FileSystem::fileSystemRepresentation(String::fromUTF8(path.data())).data(), type);
&gt; 
&gt; Any change here that the data is not valid UTF-8? If so we might have to check the result of String::fromUTF8 for null; the Latin-1 constructor can never fail, but UTF-8 decoding can.

That&apos;s a good point. I&apos;ll add a null check to be safe.

&gt;&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:75
&gt;&gt; +    clientIdentifier = String { xpc_dictionary_get_string(m_initializerMessage, &quot;client-identifier&quot;) };
&gt; 
&gt; Hoping these are all guaranteed to be ASCII or Latin-1.

Yes, I wasn&apos;t 100% sure about this one. I maintained existing behavior at least but I guess we could fromUTF8() to be safe.

&gt;&gt; Source/WebKit/Shared/IPCTester.cpp:94
&gt;&gt; +        driverName = String { getenv(&quot;WEBKIT_MESSAGE_TEST_DEFAULT_DRIVER&quot;) };
&gt; 
&gt; Encoding confusion here again, where we convert to String treating it as Latin-1, then convert back to a C string below treating as UTF-8.

I wasn&apos;t sure if this variable could contain UTF8. Will switch to fromUTF8() to be safe.

&gt;&gt; Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp:235
&gt;&gt; +    WebKit::NetworkCache::Data fileData = mapFile(path);
&gt; 
&gt; Seems like an auto would be good here.

Indeed, will fix.

&gt;&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:518
&gt;&gt; +    static API::String&amp; sessionHistoryURLValueType = API::String::create(&quot;SessionHistoryURL&quot;_s).leakRef();
&gt; 
&gt; I would use auto&amp; here.

OK.

&gt;&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:524
&gt;&gt; +    static API::String&amp; sessionBackForwardListValueType = API::String::create(&quot;SessionBackForwardListItem&quot;_s).leakRef();
&gt; 
&gt; Ditto.

Ok.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:61
&gt;&gt; +    return WTF::String::fromUTF8([contentRuleListStoreURL.get() absoluteURL].path.fileSystemRepresentation);
&gt; 
&gt; Seems like we should just return path and let the NSString be converted to an NSString, rather than calling fileSystemRepresentation and then String::fromUTF8.

Ok.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListStore.mm:82
&gt;&gt; +    return wrapper(API::ContentRuleListStore::storeWithPath(String::fromUTF8(url.absoluteURL.fileSystemRepresentation)));
&gt; 
&gt; Ditto, absoluteURL is an NSString.

Ok.

&gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:68
&gt;&gt; +        launchOptions.extraInitializationData.add&lt;HashTranslatorASCIILiteral&gt;(&quot;user-directory-suffix&quot;_s, String::fromUTF8(userDirectorySuffix));
&gt; 
&gt; Seems like the &quot;fromUTF8&quot; here could fail. In that case we probably want to ignore it rather than adding a null?

Ok.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm:44
&gt;&gt; +            auto webkitFrameworkDirectory = WTF::FileSystemImpl::parentPath(String::fromUTF8(info.dli_fname));
&gt; 
&gt; Ditto.

Ok.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:285
&gt;&gt; +    m_resolvedPaths.uiProcessBundleResourcePath = resolvePathForSandboxExtension(String { [[NSBundle mainBundle] resourcePath] });
&gt; 
&gt; Why is this needed? Since resourcePath is an NSString, we should be able to convert without an explicit call to the String constructor.

Because the function wants a StringView. I cannot implicitly construct a StringView from a NSString. Note that an implicit conversion to String was already happening. It is just explicit now since I updated resolvePathForSandboxExtension() to take a StringView instead of a String.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:225
&gt;&gt; +            auto attObj = buildAttestationMap(WTFMove(authenticatorData), String { emptyString() }, { }, AttestationConveyancePreference::None);
&gt; 
&gt; I think we can just use the braces here without writing String. It does seem peculiar if this takes a String&amp;&amp;, but I assume that is the case since we can’t pass the const String&amp;.

Yes, this takes a String&amp;&amp;, which was annoying. I&apos;ll try the curly brackets.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:277
&gt;&gt; +        return WebKit::stringByResolvingSymlinksInPath(String { cachePath.stringByStandardizingPath });
&gt; 
&gt; Why is this needed? Since stringByStandardizingPath returns an NSString, we should be able to convert without an explicit call to the String constructor.

Same as above the function wants a StringView, not a String (or NSString).

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:403
&gt;&gt; +    return String::fromUTF8(url.absoluteURL.path.fileSystemRepresentation);
&gt; 
&gt; Should just return path, and let the NSString be converted to a String without calling fileSystemRepresentation and then String::fromUTF8.

Ok.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:431
&gt;&gt; +    return String::fromUTF8(url.absoluteURL.path.fileSystemRepresentation);
&gt; 
&gt; Ditto.

Ok.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:460
&gt;&gt; +    return String::fromUTF8(url.absoluteURL.path.fileSystemRepresentation);
&gt; 
&gt; Ditto.

Ok.

&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:818
&gt;&gt; +    RetainPtr&lt;CABasicAnimation&gt; animation = [CABasicAnimation animationWithKeyPath:nsKeyPath.get()];
&gt; 
&gt; Seems like the helper to create an NSString from an ASCIILiteral should go somewhere re-usable. Then we would not have to split this one line into two. Even if it was just local to this file.

Ok, I will look into that.

&gt;&gt; Source/WebKit/webpushd/PushClientConnection.mm:155
&gt;&gt; +    sendDaemonMessage&lt;DaemonMessageType::DebugMessage&gt;(message.toStringWithoutCopying());
&gt; 
&gt; Seems suspect. If sendDaemonMessage really doesn’t need to hold onto the string, which is required to make toStringWithoutCopying safe, then maybe it should be changed to take StringView to make that explicit.

It really doesn&apos;t hold the String, it merely encodes it to do XPC:
```
void ClientConnection::sendDaemonMessage(Args&amp;&amp;... args) const
{
    if (!m_xpcConnection)
        return;

    Encoder encoder;
    encoder.encode(std::forward&lt;Args&gt;(args)...);
```

Not sure our Encoder would like a StringView but I can look into it. That said, if it is too annoying, I might just to toString() for safety (I don&apos;t think we&apos;re too worried about performance here).

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm:653
&gt;&gt; +    _destinationPath = FileSystem::openTemporaryFile(String { filename }, fileHandle);
&gt; 
&gt; Why is this needed? I’d think that NSString to String is not explicit.

Because openTemporaryFile() takes a StringView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856661</commentid>
    <comment_count>20</comment_count>
      <attachid>456179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 20:36:19 -0700</bug_when>
    <thetext>Comment on attachment 456179
Patch

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

&gt;&gt;&gt; Source/WebKit/webpushd/PushClientConnection.mm:155
&gt;&gt;&gt; +    sendDaemonMessage&lt;DaemonMessageType::DebugMessage&gt;(message.toStringWithoutCopying());
&gt;&gt; 
&gt;&gt; Seems suspect. If sendDaemonMessage really doesn’t need to hold onto the string, which is required to make toStringWithoutCopying safe, then maybe it should be changed to take StringView to make that explicit.
&gt; 
&gt; It really doesn&apos;t hold the String, it merely encodes it to do XPC:
&gt; ```
&gt; void ClientConnection::sendDaemonMessage(Args&amp;&amp;... args) const
&gt; {
&gt;     if (!m_xpcConnection)
&gt;         return;
&gt; 
&gt;     Encoder encoder;
&gt;     encoder.encode(std::forward&lt;Args&gt;(args)...);
&gt; ```
&gt; 
&gt; Not sure our Encoder would like a StringView but I can look into it. That said, if it is too annoying, I might just to toString() for safety (I don&apos;t think we&apos;re too worried about performance here).

I think it’s good for our Encoder to take StringView if it’s straightforward to allow that. I agree that we shouldn’t work too hard to fix this, but if it’s easy enough it would be nice to keep this call site simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856666</commentid>
    <comment_count>21</comment_count>
      <attachid>456179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 20:46:22 -0700</bug_when>
    <thetext>Comment on attachment 456179
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:285
&gt;&gt;&gt; +    m_resolvedPaths.uiProcessBundleResourcePath = resolvePathForSandboxExtension(String { [[NSBundle mainBundle] resourcePath] });
&gt;&gt; 
&gt;&gt; Why is this needed? Since resourcePath is an NSString, we should be able to convert without an explicit call to the String constructor.
&gt; 
&gt; Because the function wants a StringView. I cannot implicitly construct a StringView from a NSString. Note that an implicit conversion to String was already happening. It is just explicit now since I updated resolvePathForSandboxExtension() to take a StringView instead of a String.

If there is any performance-critical code that needs to pass a CFStringRef or NSString to a StringView, we can make a version that avoids memory allocation using a technique like StringView::UpconvertedCharacters. We can make a data structure that holds a fixed number of characters that is almost always enough to hold the string, either LChar or UChar based on whether we can efficiently decide if we can use the LChar, and then do heap allocation only if there are more characters. Could be as simple as Vector&lt;UChar, xxx&gt;. Then we won’t do any heap allocation for the common cases.

We can make this syntactically just as simple as converting to a String. If performance is never an issue, and we just want to avoid writing more code, then we can keep using String, it just means we’ll always allocate on the heap and also needlessly deal with the reference count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856668</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 20:47:26 -0700</bug_when>
    <thetext>Only real risk of the UpconvertedCharacters-style approach is that if we use it multiple times in the same function we might end up making a function that needlessly uses a lot of stack space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856815</commentid>
    <comment_count>23</comment_count>
      <attachid>456179</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-31 08:32:58 -0700</bug_when>
    <thetext>Comment on attachment 456179
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:225
&gt;&gt;&gt; +            auto attObj = buildAttestationMap(WTFMove(authenticatorData), String { emptyString() }, { }, AttestationConveyancePreference::None);
&gt;&gt; 
&gt;&gt; I think we can just use the braces here without writing String. It does seem peculiar if this takes a String&amp;&amp;, but I assume that is the case since we can’t pass the const String&amp;.
&gt; 
&gt; Yes, this takes a String&amp;&amp;, which was annoying. I&apos;ll try the curly brackets.

FYI, your proposal didn&apos;t build:
```
/Volumes/Data/WebKit/OpenSource/Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:225:27: error: no matching function for call to &apos;buildAttestationMap&apos;
            auto attObj = buildAttestationMap(WTFMove(authenticatorData), { emptyString() }, { }, AttestationConveyancePreference::None);
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualHidConnection.cpp:36:
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/WebCore.framework/PrivateHeaders/WebAuthenticationUtils.h:52:42: note: candidate function not viable: 2nd argument (&apos;const WTF::String&apos;) would lose const qualifier
WEBCORE_EXPORT cbor::CBORValue::MapValue buildAttestationMap(Vector&lt;uint8_t&gt;&amp;&amp;, String&amp;&amp;, cbor::CBORValue::MapValue&amp;&amp;, const AttestationConveyancePreference&amp;);
1 error generated.
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856820</commentid>
    <comment_count>24</comment_count>
      <attachid>456241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-31 08:52:20 -0700</bug_when>
    <thetext>Created attachment 456241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856826</commentid>
    <comment_count>25</comment_count>
      <attachid>456244</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-31 09:08:34 -0700</bug_when>
    <thetext>Created attachment 456244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857091</commentid>
    <comment_count>26</comment_count>
      <attachid>456305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-31 18:50:25 -0700</bug_when>
    <thetext>Created attachment 456305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857111</commentid>
    <comment_count>27</comment_count>
      <attachid>456305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-31 19:50:08 -0700</bug_when>
    <thetext>Comment on attachment 456305
Patch

Clearing flags on attachment: 456305

Committed r292197 (249100@trunk): &lt;https://commits.webkit.org/249100@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857112</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-31 19:50:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857113</commentid>
    <comment_count>29</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-31 19:51:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/91141513&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456072</attachid>
            <date>2022-03-29 15:50:12 -0700</date>
            <delta_ts>2022-03-29 16:27:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220329155011.patch</filename>
            <type>text/plain</type>
            <size>214303</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU0ZWVmYjYyZjdiOWE0YzRlYTRmN2Nl
N2EwZDJiYjVmZDQzYzg4NDQuLmEyYzE5NDdhYjE4YWY4ZmYxODk3YThhM2JhOTBlMjYxOTc0YzJh
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oOgorICAgICAgICAoV1RGOjptYWtlTlNBcnJheUVsZW1lbnQpOgorICAg
ICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5
c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTI4ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgY3VzdG9t
IHN0b3JhZ2UgcGF0aHMgZm9yIEluZGV4ZWREQiBhbmQgTG9jYWxTdG9yYWdlIGJ5IGRlZmF1bHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YjkwZDU0NmI2MTUxNjIyZjhmZWU5ZWNkOTQ4ZWY3OTY4OTIyYzIwLi5m
MjJjNjljMWM3NWJhMzg5YzY2Y2E3ZTk4NjdmN2RhODUwMzVmMzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhl
IFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEJsb2JU
YWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJ
bmZvVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZy
b21GaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29u
dHJvbGxlcjo6ZHVtcEhlYXApOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6
ZWRORkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6
ZWRORkE6OnNlcmlhbGl6ZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVy
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0
ZXJQYXJzZXI6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEJvb2xlYW4pOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXNGb3JJbmRleGVkREIpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlOjppbmRleFNRTCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZTo6aW5NZW1vcnlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbk1l
bW9yeVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5h
bWVUb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0u
aDoKKwogMjAyMi0wMy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gQXV0b21hdGljYWxseSByZWxheW91dCB0aGUgcGFnZSB3aGVu
IG5ldyBmb250cyBhcmUgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyYTJhZDUxZjI1ZjNlMjVmNzBm
MjIyZmQ3Yzg1N2Q5MmMzNzI2YzAuLjViNmRiNjljMDg3MzEwMjViNmZmODA2OWM5ODliYjE4Yjlh
MmQ2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQ3IEBACisyMDIyLTAzLTI5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0
TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4
cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFwcGVuZEJvb2xlYW4pOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
U3ViU3RhdGlzdGljU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVzb3VyY2VUb1N0cmluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlUHVzaEFuZE5vdGlm
aWNhdGlvblJlZ2lzdHJhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Jsb2Nr
ZWRDb29raWVJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYXRhYmFzZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmFkZERlc3RpbmF0aW9uVG9rZW5Db2x1bW5zSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjb2x1bW5zRm9yVGFi
bGUpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuRm9yRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6Z2V0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjptYXBGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9KU0lQ
Q0JpbmRpbmcuY3BwOgorICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFs
dWUpOgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVy
YjoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06Cisg
ICAgICAgIChlbmNvZGVPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
IF9zZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6XSk6CisgICAgICAgIChyZXBseUJsb2NrU2lnbmF0
dXJlKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2ludm9rZU1ldGhvZDpd
KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKToKKyAgICAgICAg
KFdlYktpdDo6cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24p
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKToKKyAgICAgICAg
KiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAoV2Vi
S2l0OjpYUENTZXJ2aWNlTWFpbik6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VUZXN0RHJpdmVyKToKKyAgICAgICAgKiBTaGFyZWQvSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpleHRlbnNpb25F
cnJvclRvU3RyaW5nKToKKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpzdHJpbmdCeVJl
c29sdmluZ1N5bWxpbmtzSW5QYXRoKToKKyAgICAgICAgKFdlYktpdDo6cmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6cmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAqIFNoYXJlZC9tYWMv
QXV4aWxpYXJ5UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6c2FuZGJveERhdGFWYXVs
dFBhcmVudERpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OmdldFVzZXJEaXJlY3RvcnlTdWZm
aXgpOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZVNhbmRib3hJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHA6CisgICAgICAgIChXS0Rvd25sb2FkU2V0Q2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdl
dFNlc3Npb25IaXN0b3J5VVJMVmFsdWVUeXBlKToKKyAgICAgICAgKFdLUGFnZUdldFNlc3Npb25C
YWNrRm9yd2FyZExpc3RJdGVtVmFsdWVUeXBlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRl
V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3Rv
cmU6OmRlZmF1bHRTdG9yZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50UnVsZUxpc3RTdG9yZS5tbToKKyAgICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RTdG9y
ZSBzdG9yZVdpdGhVUkw6XSk6CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3Rv
cmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIGluaXRdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6U3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpsb2FkUmVxdWVzdFRvRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJLaXRTd2lmdFNvZnRMaW5rLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRTd2lmdExpYnJh
cnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JT
YW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIF93a0NoYW5nZVRl
eHRTdHlsZTpdKToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tD
aGFuZ2VUZXh0QWxpZ25tZW50Ol0pOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0ZW1Db250
cm9sbGVyIF93a0NoYW5nZUNvbG9yOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
aW5zZXJ0VGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0U2VjdXJpdHlPcmlnaW5EYXRhKToKKyAgICAgICAg
KFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGVFbmNv
ZGVyRnJvbURhdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Q
cm9jZXNzTGF1bmNoZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVy
OjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hH
cmFudGluZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OmxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6cmVzZXQpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BX
YWl0aW5nRm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmV2ZW50T2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmNhbmNlbE91
dHN0YW5kaW5nRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6c3RvcFdhaXRpbmdGb3JFdmVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0
dWFsQXV0aGVudGljYXRvclV0aWxzLm1tOgorICAgICAgICAoV2ViS2l0OjpiYXNlNjRQcml2YXRl
S2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0
dWFsSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0
aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUdyb3VwOjpXZWJQYWdlR3JvdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFT
b3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hl
U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
S0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVs
OjppbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtOjpu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnJlY2VpdmVkTm9uTGlu
ZWFyaXplZFBERlNlbnRpbmVsKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp0aHJlYWRF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRvcHRCYWNrZ3JvdW5kVGhyZWFk
RG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBsdWdpbkluZm8pOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OmNzc0FsaWdu
bWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxvYWRVUkwp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVIYW5k
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Omdl
dERpcmVjdG9yeUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6cmVtb3ZlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OnJlc29sdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vz
c0hhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Z2V0SGFuZGxlTmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OmdldEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6bW92ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNo
YW5nZVdvcmRDYXNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTTWVzc2FnZUxpc3RlbmVy
Ojpqc0Rlc2NyaXB0aW9uRnJvbURlY29kZXIpOgorICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yRGVj
b2RlZEFyZ3VtZW50VmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpsYXllclRyZWVBc1RleHQgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OnRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9u
Rm9yS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIHdlYnB1c2hk
L0FwcEJ1bmRsZVJlcXVlc3QubW06CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRp
b25SZXF1ZXN0OjpkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcik6CisgICAgICAgICog
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9u
Ojpicm9hZGNhc3REZWJ1Z01lc3NhZ2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5l
Y3Rpb246OnNlbmREZWJ1Z01lc3NhZ2UpOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6OkRhZW1vbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorICAgICAg
ICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
dXNoRGFlbW9uTWFpbik6CisKIDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjcmVhdGUgZGlyZWN0b3JpZXMgb24g
aU9TIGlmIHdlIGFyZSBvbmx5IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwppbmRleCAxNTMxZWM4YTllNGFkZmYwYjk0MGM4NzgxZjY2YTFjMGFlZDI2MGY0Li4xZGM3
OGE5ZjQzNjdjNGYwM2U0Y2E1YzdiM2NkMjM3MTFkNjJkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFr
aW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcik6
CisKIDIwMjItMDMtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBEdXN0IG9mZiBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFu
Z2VMb2cKaW5kZXggMDA2NzM2NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uM2Q0
NWIyNTZhNjQyNmZkMjM5OGE1ODczYWFkZDM0NjZhNDVlMjZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8g
Zm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OnNldEluc3BlY3RvckF0dGFjaERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2Yg
Q0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVh
bWxpbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ5Njc3OWU0MTgwODgwYjc1
NWQ2Yzg4Y2NjMGE0NmQ2MWZmNGU1ZGUuLmQ3MWU4YWY5MTgyYjMzYWViYjI4N2UzYzIxMWMxOTk3
ZmQ5Y2M1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBy
ZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0
IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06Cisg
ICAgICAgIChIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2Vj
dXJpdHlPcmlnaW4ubW06CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06
CisgICAgICAgIChjcmVhdGVTZWxlY3RvckV4Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IGNvcmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxp
ZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdo
dDpvcmlnaW5hbFBhZ2VXaWR0aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlv
OmFkanVzdFZpZXdTaXplOnBhZ2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgrW1dlYlZpZXcgX2RlY29kZURhdGE6XSk6CisKIDIwMjItMDMtMjggIElhbiBBbmRl
cnNvbiAgPGlhbmFAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xp
ZW50cyBmYWlsIHRvIGJ1aWxkIGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJL
aXRMZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2ZjY2NWQwODNmNzU4MjcxZTE4ZjM4OGU3YjRm
MzVmMGNkODg0OTA4Li4yMTE4M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDksNyArMTQ5LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVI
YW4KIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVh
ZEVudGlyZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhl
IGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIFN0cmluZ1ZpZXcgc3VmZml4ID0geyB9KTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Bl
cm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJu
cyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYg
c3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNv
Y29hLm1tCmluZGV4IGVlNGY0MDBkNzNlOGY5MTRiMTM0NDQzNDFkODZiZDUxMjMyYjA1YmUuLmM1
ZGIwZjllOWU0MWJhY2UzYTkxODEwOWVlMGYwY2VkMjlhMDliMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIGNyZWF0ZVRl
bXBvcmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiB0ZW1wb3Jh
cnlGaWxlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcm
IHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQog
ewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCmluZGV4IGFiMjExNWY2MzE0Yzc5NjBhNjU3ZTA1
M2Q2NDJhN2M2YmYwMDVhZDYuLmUwNmJhYjRlMjg0ODAxZGNkMzAyMWMyNThiYThiYWRhYWE5NDI1
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKKysrIGIv
U291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00
Nyw2ICs0OCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vCiAvLyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvckVsZW1lbnRUeXBlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlw
ZSosIGlkIGFycmF5RWxlbWVudCk7CiAKK2lubGluZSBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5
RWxlbWVudChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhudWxscHRyLCBzdHJpbmcsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xKSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
VHlwZT4gUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjcmVhdGVOU0FycmF5KENvbGxlY3Rpb25U
eXBlJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+IFZlY3RvcjxWZWN0
b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGNkMTk0NzdhYzUxYTU0YjA0OTAxZWVhZjM3ZmRmMGNl
YmEzOGFlNzQuLjZlMGU0NzY3MjI2NjQ0YTk2MjNiMmJjNjMxYWE1MDkxMDFlNThmNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8g
RklYTUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUg
Y29kZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZm
aXgsIHN1ZmZpeC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKaW5kZXggNDI3NmY3N2UyMThkMWY0YWIxZWZlNWUyODEzMGI5MDU1MGNjNmI0NS4uN2Y5
ZThmYzNkMGZjM2UzYzY4NzRjZTY3MjhlMzZlZDI0YzgwZjM4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgQ1N0cmluZyBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkK
K1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZm
aXggaXMgbm90IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcg
aXQgaXMgbWFjT1MtcG9ydC1vbmx5LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXgu
aXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiMmM5NmUw
YzdiN2VhMTBiOGVhMmQ4MDM0ZjBlMDcyZTU1ZDE4MGM0Li4yOGQxY2U1ZjZlZTE4YmQwNjlkN2Y2
NzZkYjUxMjU0ZjRhMzVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1cm4gcHJv
cG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
LCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBw
b3J0ZWQsIGJ1dCBPSyBmb3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBv
cnQtb25seS4KICAgICBBU1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRlMjBhNGI5YmViM2RmZWRmNTlj
NTAzOGJiYzQyYTgxOWQ1MjhjMGMuLjJiOWIzODRjNTZhZGVmZWYyMzlhZGUyNGQ0ODFlMWY0ZjYw
NjU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNTAsNyArMjUw
LDcgQEAgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKIAog
c3RhdGljIElEQkVycm9yIGNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KFNR
TGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBk
YXRhYmFzZS50YWJsZVNRTCgiUmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50
ID0gZGF0YWJhc2UudGFibGVTUUwoIlJlY29yZHMiKTsKICAgICBpZiAodGFibGVTdGF0ZW1lbnQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNSZWNv
cmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIFJlY29yZHMgdGFibGUgKCIsIGRhdGFi
YXNlLmxhc3RFcnJvcigpLCAiKSAtICIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKSB9OwpAQCAt
Mjk0LDcgKzI5NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRCbG9iVGFibGVzKCkKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1fc3Fs
aXRlREItPmlzT3BlbigpKTsKIAotICAgIFN0cmluZyByZWNvcmRzVGFibGVTdGF0ZW1lbnQgPSBt
X3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiX3MpOworICAgIFN0cmluZyByZWNvcmRz
VGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiKTsKICAg
ICBpZiAocmVjb3Jkc1RhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1f
c3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9y
IGNyZWF0aW5nIEJsb2JSZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwg
IikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMwNCw3ICszMDQsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxlcygp
CiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYlJlY29y
ZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jkc1Rh
YmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwogCi0gICAgU3RyaW5nIGZpbGVzVGFibGVTdGF0ZW1lbnQg
PSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYkZpbGVzIl9zKTsKKyAgICBTdHJpbmcgZmlsZXNU
YWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iRmlsZXMiKTsKICAgICBp
ZiAoZmlsZXNUYWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNjaGVtYSgpKSkKICAgICAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiRXJyb3IgY3JlYXRp
bmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBt
X3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMzOCw3ICszMzgsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKQog
ICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkp
OwogCi0gICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIklu
ZGV4UmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+
dGFibGVTUUwoIkluZGV4UmVjb3JkcyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5
KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2M0luZGV4UmVj
b3Jkc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCIs
IG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJvck1z
ZygpKSB9OwpAQCAtMzc4LDcgKzM3OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKG1fc3FsaXRlREIp
OwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTdHJpbmcgaW5kZXhT
dGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzSW5kZXgiX3MpOwor
ICAgIFN0cmluZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRleFJl
Y29yZHNJbmRleCIpOwogICAgIGlmIChpbmRleFN0YXRlbWVudCA9PSBJbmRleFJlY29yZHNJbmRl
eFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTM5Niw3ICsz
OTYsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhS
ZWNvcmRzUmVjb3JkSW5kZXgoKQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQo
bV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIGluZGV4U3RhdGVtZW50ID0gbV9z
cWxpdGVEQi0+aW5kZXhTUUwoIkluZGV4UmVjb3Jkc1JlY29yZEluZGV4Il9zKTsKKyAgICBTdHJp
bmcgaW5kZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzUmVj
b3JkSW5kZXgiKTsKICAgICBpZiAoaW5kZXhTdGF0ZW1lbnQgPT0gdjFJbmRleFJlY29yZHNSZWNv
cmRJbmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTQ4
Niw3ICs0ODYsNyBAQCBzdGQ6Om9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZgogICAgIEFTU0VSVChtX3NxbGl0
ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIHRh
YmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVjdFN0b3JlSW5mbyJfcyk7
CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVj
dFN0b3JlSW5mbyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCkBAIC03NzUsNyArNzc1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhp
c3RpbmdEYXRhYmFzZUkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAKLSAgICBpZiAoIW1f
c3FsaXRlREItPnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUluZm8iX3MpKQorICAgIGlmICghbV9z
cWxpdGVEQi0+dGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFN0cmluZyBkYXRhYmFzZU5hbWU7CkBAIC05NTAsNyArOTUwLDcgQEAg
c3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmRhdGFiYXNlTmFtZUFuZFYKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3Bl
biBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBuYW1l
IiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KLSAgICBpZiAoIWRhdGFiYXNlLnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUlu
Zm8iX3MpKSB7CisgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJbmZv
IikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJEYXRhYmFzZUluZm8g
dGFibGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9y
KCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmlu
ZGV4IGNhYjRiOGRlMjAyZTc3ZDcwMjgyYjU5NGExYmVmYmQ3NWIwNmNiMmQuLjA5ZWM4ZjYwM2U5
ZDAyMmIzNzhkZGEwZTQyN2ZlYzUyMWZkZDUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNl
KQogICAgIC8vIGluaXRpYWxpemVyIGJ1dCBjdXJyZW50bHkgdGhhdCBkb2VzIG5vdCB3b3JrLgog
CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgYXV0
byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiX3Ms
IGZpbGVIYW5kbGUsICIudXNkeiJfcyk7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAg
ICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKICAgICBz
aXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKaW5kZXggY2QwYzQxNGZiMzEwMDI0MTNlYTJiZmRkMDk4MzA1ZDUxYjlmMWZk
Mi4uYjEzMjBmMDA4YmJmOTMzNTliMmI4NTMxZGViMTZmMTRkOWY5OGU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTM2NiwxMSAr
MzY2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH07CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIFN0cmluZyB0YWJsZU5hbWUodW5xdWFsaWZpZWRJbmZv
VGFibGVOYW1lKTsKLSAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0
cyh0YWJsZU5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVF
eGlzdHModW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1fbmV3
ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRl
Q29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhtYWtlU3RyaW5nKCJDUkVBVEUg
VEFCTEUgIiwgdW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lLCAiIChrZXkgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwg
ZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJv
cigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVE
YXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGE0ZjBjNzQ0NTIzNzFhNGRiZDhkZjA4
NjA2OWVjZDEwYWJhMzIyOWYuLjllYjM5MWM2ZDBiZDZkNDg2MDUxMGVkYWI3Mjg5MzM5OTUwNmJj
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgRGF0YWJhc2VUcmFja2VyOjpEYXRh
YmFzZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAKIFN0cmluZyBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBTUUxp
dGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCAiRGF0YWJhc2VzLmRiIl9zKTsKKyAgICByZXR1cm4g
U1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChtX2RhdGFiYXNl
RGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgIkRhdGFiYXNlcy5kYiIpOwogfQogCiB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25BY3Rp
b24gY3JlYXRlQWN0aW9uKQpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFjdGlv
bikKICAgICB9CiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKLSAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiX3MpKSB7CisgICAgaWYgKCFt
X2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYgKCFtX2RhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5J
UVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT3JpZ2lucyB0YWJsZSIpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMi
X3MpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkgewog
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBEYXRh
YmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4gVEVY
VCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIsIHBh
dGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0YWJhc2VzIHRhYmxlIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCA1ZjkzNDkxNzU2
ZjI3ZWMwNGQ0ZGVhOWQzODFiN2E2NGM2Yzc5MjA3Li42YTkwMTk3YjQ0NmM2NGVjM2E3M2IzMzIz
YTk0NTQwY2Q1OGQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6ZGVsZXRlQWxs
TGlua2VkQ29kZShEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkKIHZvaWQgR0NDb250cm9sbGVy
OjpkdW1wSGVhcCgpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGU7Ci0gICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJHQ0hlYXAiX3MsIGZpbGVIYW5kbGUpOworICAgIFN0cmluZyB0ZW1wRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiR0NIZWFwIiwgZmlsZUhhbmRsZSk7CiAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKSB7CiAgICAgICAg
IFdURkxvZ0Fsd2F5cygiRHVtcGluZyBHQyBoZWFwIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBm
aWxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMDUyYjU5N2JjZmI5MmE3NDM3OTNmOTE1
ZWQ2OTZlN2EwZTllNDhmMS4uMDRjNmRhNWE4NDhkMDg5MWYzM2Y0ZjgzOWRhOTUyYjhjNzY3OWEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogc3RkOjpvcHRp
b25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQog
ewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7
Ci0gICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJTZXJp
YWxpemVkTkZBIl9zLCBmaWxlKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIlNlcmlhbGl6ZWRORkEiLCBmaWxlKTsKICAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuY3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5Nzc2OTE4OWU3NGEuLmE5
ZWM4ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMzQ5
LDcgKzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFyc2VyKENvbWJpbmVkVVJM
RmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQYXJzZXI6On5VUkxGaWx0
ZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgVVJM
RmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBwYXR0
ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitVUkxGaWx0ZXJQYXJzZXI6
OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihTdHJpbmdWaWV3IHBhdHRl
cm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewog
ICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBOb25BU0NJSTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
LmgKaW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJjODAyOGI0MS4uYTQ5M2I5
MTY1YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVzU3RyaW5nKFBhcnNlU3Rh
dHVzKTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxGaWx0ZXJzJik7
CiAgICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVzIGFkZFBhdHRlcm4oY29u
c3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90
IHBhdHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihTdHJpbmdWaWV3IHBhdHRl
cm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsKIAog
cHJpdmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmluZWRVUkxGaWx0ZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmlu
ZGV4IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2NGQuLjBkNDdkN2MwNmIz
MTM5OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVu
c2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBh
cHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBl
bmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMmQzODZkYjFmZjNjNjJj
YWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uYTY4MmNjYmE3NTQyOWQ3Mjg1MjZkOGFjZjhmYjBl
ZTc1MjJkMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cApAQCAtODYsNyArODYsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlk
ZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0
b3JDaGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0
b3JDaGFyYWN0ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxTZWN1cml0
eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihT
dHJpbmdWaWV3IGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUn
cyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVu
dGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKGNvbgogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0
aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdC4KICAgICBhdXRvIHBv
cnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMTsK
LSAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0KHBvcnRMZW5ndGgpKTsK
KyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KHBvcnRMZW5ndGgpKTsKIAogICAgIC8vIE5vdGhp
bmcgYWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhlIGNv
bG9uIGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKQEAgLTExNyw3ICsxMTcs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogCiAgICAgYXV0byBwcm90b2NvbCA9IGRhdGFi
YXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0ID0g
ZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAt
IHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9j
b2wsIGhvc3QsIHBvcnQgfTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9j
b2wudG9TdHJpbmcoKSwgaG9zdC50b1N0cmluZygpLCBwb3J0IH07CiB9CiAKIFNlY3VyaXR5T3Jp
Z2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IDM3MzUwYWE0MGE2YmUwYmQy
NmRjNjU1MWJjNzA0NjM0ZGE5YzIzOWEuLmZhNDQ2ZGI2MTc4NDY0NzhlNDQ0MjVhODZmNTkyMDU2
OTg3OTQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAt
NzEsNyArNzEsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICAvLyBTZXJpYWxp
emUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVzZWQgYXMg
cGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBiZSB1c2VkIGlu
IHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFzZUlk
ZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmln
aW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwogICAgIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdp
bkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmluZGV4IGFmMWU0ZDhiYmZh
MmE3NTU3ZDhjZmExYTk1NWUxOTY0YTE5MzgyMTQuLjIwN2JmNDY2MmVmZGRlNDY1OWE2NjBkYjYx
ZDhjZTg4YTU3MmNlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRp
YyBTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVRJLCBjCiAgICAgYXV0byBzdWZmaXggPSBtYWtlU3RyaW5nKCcuJywgZGVz
dGluYXRpb25FeHRlbnNpb24pOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGRlc3RpbmF0aW9uRmlsZUhhbmRsZTsKLSAgICBTdHJpbmcgZGVzdGluYXRpb25QYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBJbWFnZSJfcywgZGVzdGluYXRpb25GaWxl
SGFuZGxlLCBzdWZmaXgpOworICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEltYWdlIiwgZGVzdGluYXRpb25GaWxlSGFuZGxlLCBz
dWZmaXgpOwogICAgIGlmIChkZXN0aW5hdGlvbkZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJbWFn
ZXMsICJ0cmFuc2NvZGVJbWFnZTogRGVzdGluYXRpb24gaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0
ZWQ6ICVzICVzXG4iLCBwYXRoLnV0ZjgoKS5kYXRhKCksIGRlc3RpbmF0aW9uVVRJLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCmluZGV4IDA3
NzNmNTg4NmU0MGEwMmVhOWUzY2EwODAyMDVjNDcyYTliMjgzNDkuLmRjN2EzY2U3ZmYzYjdlZDE5
ZGVmMGZmNDhhMjA0OTgwZDQ5NjdlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KQEAgLTUxMSwyMSArNTExLDIx
IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4g
LS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Ig
RW50ZXIuCiAgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7Ci0g
ICAgICAgICAgICBtX3RleHQgPSAiXHIiOwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9
ICJcciI7CisgICAgICAgICAgICBtX3RleHQgPSAiXHIiX3M7CisgICAgICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gbV90ZXh0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGFkanVzdG1l
bnRzIGJlbG93IGFyZSBvbmx5IG5lZWRlZCBpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUs
IGJ1dCB3ZSBjYW5ub3QgdGVsbCB3aGF0IG1vZGUgd2UgYXJlIGluIGZyb20gaGVyZS4KIAogICAg
ICAgICAvLyBUdXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdh
eXMgYmUgOC4KICAgICAgICAgaWYgKG1fdGV4dCA9PSAiXHg3RiIpCi0gICAgICAgICAgICBtX3Rl
eHQgPSAiXHg4IjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDgiX3M7CiAgICAgICAgIGlmICht
X3VubW9kaWZpZWRUZXh0ID09ICJceDdGIikKLSAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQg
PSAiXHg4IjsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg4Il9zOwogICAgICAg
ICAvLyBBbHdheXMgdXNlIDkgZm9yIHRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQn
cyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCiAgICAgICAgIGlmIChtX3dpbmRv
d3NWaXJ0dWFsS2V5Q29kZSA9PSA5KSB7Ci0gICAgICAgICAgICBtX3RleHQgPSAiXHg5IjsKLSAg
ICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICAgICAgICAgIG1fdGV4dCA9
ICJceDkiX3M7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0OwogICAgICAg
ICB9CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDM1MTUxYmE2NmYzYjJjNGVmYTFmNjlmNjZjNDI1
NGMyODRkNGQ1MGMuLmJiNTk1ZmRiZmMyMDc4NjZmODk4ZWRmOTFhZGNiOTkzYjcwZDdjNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QgVmVjdG9yPFN0cmluCiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKICAgICAgICAgZm9yIChhdXRvJiBibG9iIDog
YmxvYnNGb3JXcml0aW5nKSB7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZTsKLSAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiQmxvYiJfcywgZmlsZSk7CisgICAgICAgICAgICBTdHJpbmcg
dGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkJsb2IiLCBmaWxl
KTsKICAgICAgICAgICAgIGlmICghd3JpdGVGaWxlUGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGJs
b2IuZmlsZVBhdGhzT3JEYXRhQnVmZmVycywgZmlsZSwgdGVtcEZpbGVQYXRoKSkgewogICAgICAg
ICAgICAgICAgIGZpbGVQYXRocy5jbGVhcigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZjJl
M2VkYWQ1MGVkYTJmZGUwZTVkNTY3YWFlMzM3M2RjNTVkYjA1MC4uMWViNmRlYmFmYzIzYzQyZGQx
MmVkNzZhMWY2ZjEwNWZlMjljZWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC04OSwxMSArODksNiBAQCBTUUxpdGVEYXRhYmFzZTo6
flNRTGl0ZURhdGFiYXNlKCkKICAgICBjbG9zZSgpOwogfQogCi1jb25zdCBjaGFyKiBTUUxpdGVE
YXRhYmFzZTo6aW5NZW1vcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gIjptZW1vcnk6IjsKLX0KLQog
Ym9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9k
ZSBvcGVuTW9kZSkKIHsKICAgICBpbml0aWFsaXplU1FMaXRlSWZOZWNlc3NhcnkoKTsKQEAgLTQy
NiwxMiArNDIxLDEyIEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kKEFTQ0lJ
TGl0ZXJhbCBxdWVyeSkKICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0
ZUNvbW1hbmQoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCitib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhTdHJp
bmdWaWV3IHRhYmxlTmFtZSkKIHsKICAgICByZXR1cm4gIXRhYmxlU1FMKHRhYmxlTmFtZSkuaXNF
bXB0eSgpOwogfQogCi1TdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQorU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChTdHJpbmdWaWV3
IHRhYmxlTmFtZSkKIHsKICAgICBpZiAoIWlzT3BlbigpKQogICAgICAgICByZXR1cm4geyB9OwpA
QCAtNDQzLDcgKzQzOCw3IEBAIFN0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgcmV0dXJuIHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsK
IH0KIAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjppbmRleFNRTChjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoU3RyaW5nVmlldyBpbmRleE5h
bWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggZDQxNGI5YTZjYTM2
MzYxZjdiMTE3MTE3NmExZTk0ZDQxY2I5ZTgzYi4uOTE2MDEzNDgxNzU5MjEzYWE1MmQxOThhNDdl
MmU1YzRkNmE5ODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNR
TGl0ZURhdGFiYXNlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4g
IjptZW1vcnk6Il9zOyB9CiAKICAgICBlbnVtIGNsYXNzIE9wZW5Nb2RlIHsgUmVhZE9ubHksIFJl
YWRXcml0ZSwgUmVhZFdyaXRlQ3JlYXRlIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6OlJlYWRXcml0ZUNy
ZWF0ZSk7CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgdGFibGVTUUwoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGluZGV4U1FMKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVF
eGlzdHMoU3RyaW5nVmlldyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRhYmxlU1FMKFN0
cmluZ1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBpbmRleFNRTChTdHJpbmdWaWV3
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGFibGVzKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHJ1blZhY3V1bUNvbW1hbmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggNzJkNGE4NzQ5YTA4ZDBhNzM4MzQ4
NjRmNmY2ZjM4ZGY1NDk0NDgyMy4uZWMwZDFjZWU1YmExYTA4ODA1MDAwZmY3MGQ3NDY0NjUwMzZk
NzUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcApAQCAtNDksNyArNDksNyBAQCBTUUxpdGVGaWxlU3lzdGVtOjpTUUxpdGVGaWxlU3lz
dGVtKCkKIHsKIH0KIAotU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmls
ZU5hbWVUb1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQor
U3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgoU3Ry
aW5nVmlldyBwYXRoLCBTdHJpbmdWaWV3IGZpbGVOYW1lKQogewogICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwogfQpAQCAtMTI4
LDcgKzEyOCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRh
dGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KICAgICAKLVN0cmluZyBTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUpCitTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJp
bmdWaWV3IGZpbGVOYW1lKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAg
ICBhdXRvIHV0ZjhGaWxlTmFtZSA9IGZpbGVOYW1lLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmluZGV4IDY0ZjFhMmMxMmE5MTFhZWIw
YWRjNTllZmJiY2U1MzkwOWI5NTk1NmMuLjUzNDI3MTBmN2JiZDIxOWFkN2JkZWYwNzRkMGQzYzY0
OTIzMzY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVG
aWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBwYXRoIC0g
VGhlIGRpcmVjdG9yeS4KICAgICAvLyBmaWxlTmFtZSAtIFRoZSBmaWxlIG5hbWUuCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKFN0cmluZ1Zp
ZXcgcGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSk7CiAKICAgICAvLyBNYWtlcyBzdXJlIHRoZSBn
aXZlbiBkaXJlY3RvcnkgZXhpc3RzLCBieSBjcmVhdGluZyBhbGwgbWlzc2luZyBkaXJlY3Rvcmll
cwogICAgIC8vIG9uIHRoZSBnaXZlbiBwYXRoLgpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBNb3ZlcyBhIGRhdGFiYXNlIGZpbGUgdG8gYSBuZXcgcGxhY2UuCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgbW92ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIG9sZEZp
bGVQYXRoLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIGNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjb21wdXRlSGFzaEZvckZpbGVO
YW1lKFN0cmluZ1ZpZXcgZmlsZVBhdGgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBUcnVuY2F0ZXMgYSBkYXRhYmFzZSBmaWxlLiBVc2VkIHdoZW4gTW9iaWxlU2FmYXJpU2V0
dGluZ3MgZGVsZXRlcyBhIGRhdGFiYXNlIGZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApp
bmRleCBkNjRjY2MwYjYwMThjN2ZlNzQ2ZTdhY2ZlNjEwZmNlNGY5YjA2NWM1Li42ZGI2NDQwY2Y5
NmQ5MmFjMmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cgogICAgICAgICBT
dHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUs
IHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3Jl
KCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVh
dGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJ
UEM6OlNlbWFwaG9yZSB7IH0sIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGNjNjE1MjQ3OTNjMGYxMWNmZWI4ZDRhODRlY2ZhOWFmNGU2ZTJhYTcuLmZlMDdmZTNk
NjQyOGRmY2VhMmRmZjVlMzg0MmYxZmNlNGEzMzYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjUwMyw3ICsyNTAz
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0
U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2kKICAgICByZXR1cm4gKHN1YkZyYW1lVW5kZXJU
b3BGcmFtZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVDb3VudC0+Y29sdW1uSW50KDApID09IDEgJiYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
by0+Y29sdW1uSW50KDApID09IDEpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0
YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgQVNDSUlMaXRl
cmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJl
bCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CkBAIC0yNTMxLDMxICsyNTMxLDMxIEBA
IFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3Ry
aW5nRnJvbURvbWFpbklEKHVuc2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQVNDSUlM
aXRlcmFsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0
aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRl
bWVudChBU0NJSUxpdGVyYWwgdGFibGVOYW1lKSBjb25zdAogewotICAgIGlmICh0YWJsZU5hbWUg
PT0gIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIpCisgICAgaWYgKCFzdHJjbXAo
dGFibGVOYW1lLmNoYXJhY3RlcnMoKSwgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
cyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BMZXZlbERvbWFpbklEIGZyb20gU3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKLSAgICBp
ZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIikKKyAgICBpZiAoIXN0
cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIp
KQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFt
ZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikKKyAgICBpZiAoIXN0cmNtcCh0YWJs
ZU5hbWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikpCiAgICAg
ICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSBXSEVSRSB0YXJnZXREb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9
PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5h
bWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikpCiAgICAgICAg
IHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lTGlua0RlY29yYXRpb25z
RnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BG
cmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUu
Y2hhcmFjdGVycygpLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIpKQogICAgICAg
ICByZXR1cm4gIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJhbWVMb2FkZWRU
aGlyZFBhcnR5U2NyaXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAo
dGFibGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAoIXN0
cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
cyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyJfczsKLSAg
ICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAg
ICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklE
IGZyb20gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURv
bWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0Rv
bWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJj
ZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb20iKQorICAgIGlmICghc3RyY21wKHRhYmxlTmFtZS5jaGFyYWN0ZXJzKCks
ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKSkKICAgICAgICAgcmV0dXJuICJTRUxF
Q1QgZnJvbURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJF
IHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIAogICAgIHJldHVybiAiIl9zOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
CiB7CiAgICAgYXV0byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUp
OwogICAgIApAQCAtMjYwMyw3ICsyNjAzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAg
ICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCBkb21haW4sICdcbicpOwog
ICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIs
ICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CisgICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVy
YWN0aW9uKFNlY29uZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNv
bHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQpAQCAtMjYx
MSwzNCArMjYxMSwzNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGVsc2UKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
YXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgbV9nZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgp
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0g
ICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVEb21haW5zIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxk
ZXIsICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAg
ICAvLyBUb3AgZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIs
ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50IiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0
KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSIsIGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgZG9tYWluKTsK
KyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBkb21haW4pOworICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BG
cmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgZG9t
YWluKTsKIAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVu
dC0+Y29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCkp
OworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5j
b2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMiLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAvLyBTdWJyZXNvdXJj
ZSBzdGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xp
c3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAg
IGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAi
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9z
LCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgZG9tYWluKTsKIAogICAgIC8vIFByZXZhbGVudCBS
ZXNvdXJjZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2Ui
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzUHJl
dmFsZW50SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJl
c291cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1u
SW50KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBh
cHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVz
b3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50
SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbklu
dChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNl
RGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZElu
ZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDgxMWJiZjk3MGVhYzZmYTcw
ZGFhMDk3MmI1NjlkNWU5ZjgyZjE5MDkuLmYyMmJmMWY0YjA1OTFjNzM4YTJlMjliY2Y4NDhhYTBh
YjUyMWMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCkBAIC0xMzgsOCArMTM4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVu
c2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFu
ZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3QgZmluYWw7Ci0gICAgQVNDSUlMaXRlcmFsIGdldFN1
YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CisgICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0
YXRpc3RpY1N0YXRlbWVudChBU0NJSUxpdGVyYWwpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kU3Vi
U3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29u
c3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xl
YXJEYXRhYmFzZUNvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZi
OTMyZGJhZDQ0MGI1NTE1NTg0MjdkNDBkNmQyMmFkZDBkMzNjMDcuLmU0ZWEwM2MxMWI2YmIzZmZl
M2Y4MGQyZjNiNzhmYjlhMzk4YzU2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC03ODksNyArNzg5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFMKICNpZiBFTkFCTEUoSU5U
RUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChz
ZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9w
dCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00i
X3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJh
bWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CkBAIC04MDQs
NyArODA0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb24KICNpZiBFTkFCTEUoSU5URUxMSUdF
TlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9u
LT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlv
bigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TSJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBm
cmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApp
bmRleCA2ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0Li42NzRiOTg1NTM1
N2MxMGMzYTNjYzg3ZDA2Mzc3YjE3MTc2NDA2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTYxLDExICs2MSwx
MSBAQCBzdGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBj
b25zdCBpbnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1
ZXN0ZWRSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50
ZXJuYWxFcnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29u
dGVudCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxv
d2VkIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJs
ZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciogaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVU
ZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJf
czsKIAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJX
ZWJLaXRCbG9iUmVzb3VyY2UiX3M7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29kZSkK
ICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCV1KSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
cnJvckNvZGUpKTsKIAogICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tCbG9iPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBlcnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiIgOiBleHRyYWN0
TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCkpLCBlcnJvckNv
ZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAwIDogbV90b3RhbFJlbWFpbmluZ1NpemUsIFN0cmluZygp
KTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBl
cnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiJfcyA6IGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSksIGVycm9yQ29kZSAh
PSBFcnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwog
ICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBFcnJvcjo6Tm9FcnJvcjogewogICAg
ICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAhPSBrUG9zaXRpb25Ob3RT
cGVjaWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCmluZGV4IGU2NmM4NDczZDgyZTNhYzJjMDJlNDdmYmFkZjNiMDY5YWFkY2I0MTYuLmY0
OTY4YWFkYzdiODNjZGUwYmQ0OWUxYThjMzZiMjMzNDZjNjdkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzQ1LDcgKzIzNDUs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3NpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCi0gICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiIpOworICAgIGNh
bGxiYWNrKCJDYW5ub3QgZmluZCBuZXR3b3JrIHNlc3Npb24iX3MpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAzMmEwNmQ0OTQ2M2QzODhjZTYyZTM2YTg2YmI4YTg0MGE2YWFiOTEyLi41N2MxYjFi
NjkzZDcxNWJlMTJlYWQ2YzZmZDU5NjUxMjk3YzMyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTk0
LDEwICsxNTk0LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbigpIGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAg
ICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJl
cXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmln
aW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3Qo
KS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7
CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
U2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3Qo
KS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFn
ZUlEKCksIGNvcmVJZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29v
a2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmll
cikKK3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHN0
YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2Fw
ZUlERm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBhdXRvIGVzY2FwZWRSZWZlcnJlciA9IGVzY2Fw
ZUZvckpTT04ocmVmZXJyZXIpOwogCi0jZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2Vk
T2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NB
TF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAi
JXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFf
QVJHU19fKQogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZf
QUxMT1dFRCgibG9nQ29va2llSW5mb3JtYXRpb246IEJMT0NLRUQgY29va2llIGFjY2VzcyBmb3Ig
d2ViUGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlEPSVzLCBmaXJzdFBhcnR5PSVzOiAi
IHN0ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCku
ZGF0YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRmlyc3RQYXJ0
eS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBz
dGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAK
LXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nv
b2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyPiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aQogICAgIGF1dG8gZXNjYXBlZElkZW50aWZpZXIgPSBlc2NhcGVJREZvckpTT04o
aWRlbnRpZmllcik7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gKGZyYW1lSUQgJiYgcGFn
ZUlEKSA/IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmly
c3RQYXJ0eSB9LCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6IGZhbHNlOwogCi0j
ZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3
b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0
YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9i
amVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9M
T0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3Jt
YXRpb246IHdlYlBhZ2VJRD0lcywgZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0lczogIiBzdHIsIGVz
Y2FwZWRQYWdlSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwg
ZXNjYXBlZElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTY4
NSw3ICsxNjg1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0df
SUZfQUxMT1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAppbmRleCA2NWNlYzljZDNjMjRkNGJjN2UzNDBkNzlkYTVkY2Q4MmZkNjYxODQ0Li4yZmI5ZmFk
NDU1YTM5YjIwMTE3NjdiZWUzNzcxNzBjMzU3NjRjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0MCw3ICsx
NDAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVO
VElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNl
c3Npb25JRCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKKyAgICBzdGF0aWMg
dm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyPik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggZDZiYzA5MDEy
MDMzMWY4MzA2MGJjZGE2MTRkOTMyYWE1OWEyMWNhMC4uZWYxOGIyN2ZiNTNlYmI1ZjY4MDk2MjUz
NGNhYThiYjFlMmNjM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC00ODksMTQgKzQ4
OSwxNSBAQCB2b2lkIERhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEbwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21h
aW4gaXMgc3BlY2lmaWVkLgotICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOworICAgIFN0
cmluZyBiaW5kUGFyYW1ldGVyOwogICAgIGlmIChkb21haW4pIHsKICAgICAgICAgYXV0byBkb21h
aW5JRFRvTWF0Y2ggPSBkb21haW5JRCgqZG9tYWluKTsKICAgICAgICAgaWYgKCFkb21haW5JRFRv
TWF0Y2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0
cmluZzo6bnVtYmVyKCpkb21haW5JRFRvTWF0Y2gpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAg
ICAgYmluZFBhcmFtZXRlciA9ICIlIl9zOwogCiAgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0g
YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAKQEAgLTcxMiwxNyArNzEzLDE3IEBAIHZv
aWQgRGF0YWJhc2U6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKIAogdm9pZCBEYXRhYmFzZTo6YWRkRGVz
dGluYXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgU3RyaW5nIGF0dHJpYnV0
ZWRUYWJsZU5hbWUoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAg
Y29uc3RleHByIEFTQ0lJTGl0ZXJhbCBhdHRyaWJ1dGVkVGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKICAgICBTdHJpbmcgZGVzdGluYXRpb25LZXlJRENv
bHVtbk5hbWUoImRlc3RpbmF0aW9uS2V5SUQiX3MpOwogICAgIGF1dG8gY29sdW1ucyA9IGNvbHVt
bnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKTsKICAgICBpZiAoIWNvbHVtbnMuc2l6ZSgp
IHx8IGNvbHVtbnMubGFzdCgpICE9IGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKSB7CiAgICAg
ICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5h
dGlvblRva2VuIFRFWFQiX3MpOwogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRy
aWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCJfcyk7Ci0gICAgICAg
IGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlv
bktleUlEIFRFWFQiKTsKKyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRl
ZFRhYmxlTmFtZSwgImRlc3RpbmF0aW9uS2V5SUQgVEVYVCJfcyk7CiAgICAgfQogfQogCi1WZWN0
b3I8U3RyaW5nPiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKQorVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNGb3JUYWJsZShBU0NJSUxpdGVy
YWwgdGFibGVOYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgdGFibGVfaW5mbygiLCB0YWJsZU5hbWUs
ICIpIikpOwogCkBAIC03NDEsNyArNzQyLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNv
bHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICByZXR1cm4gY29sdW1u
czsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSkKK3ZvaWQgRGF0YWJhc2U6
OmFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJTGl0
ZXJhbCBjb2x1bW5OYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUsICIg
QUREIENPTFVNTiAiLCBjb2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmgKaW5kZXggMmZiN2QyNTY5ZWQzOGE1ODIzOGEyODAwZWUyNDhiNTdmNGU2ZDdm
ZS4uZTcxZDQwYmQ0OTg1OWViYzNlYWEzMzhjZDVlYjhiMDUyY2JjY2Q4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmgKQEAgLTgyLDggKzgyLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4m
IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKICAgICBTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gc29ydGVkVGFibGVzKCkgZmluYWw7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBj
b2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpOwotICAgIHZvaWQgYWRkTWlz
c2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYg
Y29sdW1uTmFtZSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKEFTQ0lJTGl0
ZXJhbCB0YWJsZU5hbWUpOworICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoQVNDSUlM
aXRlcmFsIHRhYmxlTmFtZSwgQVNDSUlMaXRlcmFsIGNvbHVtbk5hbWUpOwogCiAgICAgdXNpbmcg
U3RhdGVtZW50ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD47CiAg
ICAgbXV0YWJsZSBTdGF0ZW1lbnQgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCAyYTgyYTEx
NWExYjliYWQ1OGJhODY4ZTU1ZTU3N2NmOWY1NzNkMTQ1Li5lMmI2MzdiZDk2ODE3MjhjZTFiYWE3
ZTcwMzNlMWJmNDYzODdlY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlu
a2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFNvdXIKIAogICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25T
ZWNyZXRUb2tlbigqc2lnbmF0dXJlQmFzZTY0VVJMLCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5k
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewot
ICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0
eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgYXV0byBl
cnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biJfcyA6IHJl
c3VsdC5lcnJvcigpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdICJfcywgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpo
YW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgICAgICAgICAg
aWYgKHB1YmxpY0tleUJhc2U2NFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiVGhlIHB1YmxpYyBrZXkgVVJM
IHdhcyBlbXB0eS4iKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBUaGUgcHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIl9zKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTQwNSw3ICs0MDUs
NyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRp
b24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9
IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5lcnJvcigpOwor
ICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0
eSgpID8gIlVua25vd24iX3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcg
ZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4oKTog
JyV7cHVibGljfXMiLCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKaW5kZXggM2FhYTNjNDgwZTVmNmE5NTMwZGY4ZDhjY2ViYTJlNTc5
ZTAwMjgxMC4uZTA5ZDJlOWYzNmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyKCkKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRo
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGRhdGFiYXNlUGF0aChzZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSAr
ICIubG9jYWxzdG9yYWdlIik7CisgICAgcmV0dXJuIGRhdGFiYXNlUGF0aChtYWtlU3RyaW5nKHNl
Y3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLCAiLmxvY2Fsc3RvcmFnZSIpKTsKIH0K
IAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRpZE9wZW5EYXRhYmFzZVdpdGhP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKQEAgLTEyOSw3
ICsxMjksNyBAQCBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRh
aWxzPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OgogICAgIH0pOwogfQogCi1TdHJpbmcg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkgY29uc3QKK1N0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFi
YXNlUGF0aChTdHJpbmdWaWV3IGZpbGVuYW1lKSBjb25zdAogewogICAgIGF1dG8gbG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gdGhpcy0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFT
UUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgK
aW5kZXggNWJjMTNlYzM2ZjVkMmE5NmZjNjFlNzAyMmMxYzhhMWU1Yzc5MWE0Yi4uNmQ2YTA1Yzg5
YTc1MTYzOWY1MmI4NTBiMTk2ZTMxNWZiNjgwYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KSBjb25zdDsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKFN0cmluZ1ZpZXcgZmlsZW5hbWUpIGNv
bnN0OwogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIGVu
dW0gRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApp
bmRleCBjMjM0OWEwODJiNTY4ZGViZTNmYTU2ZDM1OGQ1NWRkOWM2ODhmNjI0Li5mNGU2MWQ2MDUy
YjM2ZDc0ODQ5YmJlNjZhYzIyMGY2ZjRhOGUwMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcApAQCAtMTIzLDggKzEyMyw3IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpn
ZXQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgYXV0byBsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLSAgICBhdXRvIGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7Cisg
ICAgYXV0byBkYXRhID0gbWFwRmlsZShwYXRoKTsKIAogICAgIHJldHVybiB7IGRhdGEsIGNvbXB1
dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IGFlZTEwMmJlYzUx
YmIzNDY5MDIzZmE3Nzk1YTgyMjc0ODEzMmYyNjYuLmE5MTY5OGQ1ZGM0MmQ4NmMyOTc3MjcwYjc0
ZmUzYjE4NWM1ZTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEYXRhIERh
dGE6Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGE6
OmFkb3B0TWFwKFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKLURhdGEgbWFwRmls
ZShjb25zdCBjaGFyKiBwYXRoKQorRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlKSkKQEAgLTY0LDExICs2NCw2IEBAIERhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKQog
ICAgIHJldHVybiBhZG9wdEFuZE1hcEZpbGUoZmlsZSwgMCwgKnNpemUpOwogfQogCi1EYXRhIG1h
cEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBtYXBGaWxlKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCiBEYXRhIGFk
b3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5k
ZXggMzI4MzI5NzY3OGMxNTRlZTQ5MDdkMzE0OTNjYmY3ZjhmMDAzY2JjMC4uMTI0OTI1OWU0YjA1
MjY5NDViYzU0NWYyZjY0YTE0MjdiNWU1NjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTExMSw3ICsxMTEs
NiBAQCBwcml2YXRlOgogRGF0YSBjb25jYXRlbmF0ZShjb25zdCBEYXRhJiwgY29uc3QgRGF0YSYp
OwogYm9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmLCBjb25zdCBEYXRhJik7CiBEYXRhIGFkb3B0
QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCk7Ci1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IEZpbGVTeXN0ZW06OlNhbHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCmluZGV4IDQzMjJlNDRlOGVhMDYz
YzNkYWE4ZTJjNmRlN2E1YTA4NWY1YTgxZTguLjE3Yzk1MmE5OTg3NmNlYmJkN2M0MjEyNWZlZjcz
ZjQwNjU5MTg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCkBA
IC0xNDIsOCArMTQyLDggQEAgdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6Omhh
bmRsZUV2ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9ESUNUSU9O
QVJZKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICAgICAgaWYgKG1lc3NhZ2VOYW1l
ICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisgICAgICAgIGF1dG8qIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgeHBjTWVzc2FnZU5hbWVLZXkp
OworICAgICAgICBpZiAoIW1lc3NhZ2VOYW1lIHx8IHN0cmNtcChtZXNzYWdlTmFtZSwgTGF1bmNo
U2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHN0
YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCmluZGV4
IDEwZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBhNDRlNDEuLmQyOTFhMDllOWVmMzE1
ZmI0Y2MwOWIzN2Q5NTg5Zjk3NGZiMzFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcApAQCAtMTI4
LDcgKzEyOCw3IEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3Nh
cnkoKQogICAgIGlmICghbV9kYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
U3RyaW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlU1FMKCJJdGVtVGFibGUiX3MpOwor
ICAgIFN0cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIik7
CiAgICAgaWYgKHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQgfHwgc3RhdGVt
ZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudEFsdGVybmF0aXZlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENC
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAK
aW5kZXggMGJlMzk1YzFjMzdjMmZlN2NiM2NjM2E1YjQ5NTYyYWZjNzM5ZTY0YS4uZTU5MmFhMDFj
NmM0MTE0ZWQwYzc4NTMzYzA5ZWRhNGYxMWI3YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBiCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0
cmluZyh2bSwgImJvb2wiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2
bSwgImJvb2wiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFs
dWUoKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInZhbHVlIl9zKSwgSlNDOjpqc0Jvb2xlYW4odmFsdWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CkBAIC05OSw2NyArOTksNjcgQEAg
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGIKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVl
Rm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImRvdWJsZSIpOworICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJkb3VibGUiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZmxv
YXQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0
Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDhfdCB2YWx1
ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShn
bG9iYWxPYmplY3QsIHZhbHVlLCAiaW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNv
ZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDhfdCJfcyk7
CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQxNl90IHZhbHVlKQog
ewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2Jh
bE9iamVjdCwgdmFsdWUsICJpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
TnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDE2X3QiX3MpOwog
fQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCB2YWx1ZSkKIHsK
LSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxP
YmplY3QsIHZhbHVlLCAiaW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51
bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQzMl90Il9zKTsKIH0K
IAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgImludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1l
cmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50NjRfdCJfcyk7CiB9CiAK
IHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50OF90IHZhbHVlKQogewotICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJ1aW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJp
Y0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ4X3QiX3MpOwogfQogCiB0
ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDE2X3QgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgInVpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJp
Y0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQxNl90Il9zKTsKIH0KIAog
dGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQzMl90IHZhbHVlKQogewotICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJ1aW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MzJfdCJfcyk7CiB9CiAK
IHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmpl
Y3QsIHZhbHVlLCAidWludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1l
cmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDY0X3QiX3MpOwogfQog
CiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IHZhbHVlKQogewotICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJzaXplX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAic2l6ZV90Il9zKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUmVjdFR5cGU+CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBKU0M6OkpTVmFs
dWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjbwogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6
OkludFJlY3QmJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1
ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiX3Mp
OwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6RmxvYXRS
ZWN0JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0
KGdsb2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkZsb2F0UmVjdCJfcyk7
CiB9CiAKIGJvb2wgcHV0SlNWYWx1ZUZvckRlY29kZWRBcmd1bWVudEF0SW5kZXhPckFycmF5QnVm
ZmVySWZVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
QXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxG
ZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgppbmRleCA5ZDJi
YzdhMjI2MjkyOTZjNzQxNmRjYjUwMDIzOGJlZjRmZjI5YjVlLi44MzBlYmFiOGU4NjIxODBlYjAz
MGE2NTM5NjYyNmY0Mzg5MTBjMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5j
cHAuZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKQEAgLTQxLDcgKzQxLDcg
QEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkV4cGVyaW1lbnRh
bEZlYXR1cmU6OmNyZWF0ZSg8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sICI8JT0gQHBy
ZWYubmFtZSAlPiIsIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4sIERFRkFV
TFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKKyAg
ICAgICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVm
Lmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nIHsg
PCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZP
Ul88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgppbmRl
eCA4NDljZjZmN2E4ODU3M2RmMjc5ZjNhZWQyNTExMDUwNWY3YjZjMzQ2Li5lNTY3ZjQ1YjFlNDQ1
MTZiNTJiMDM2NTBiYjlmMmU5NjRiODQ5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVh
dHVyZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgpAQCAtNDAs
NyArNDAsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlByZWZlcmVu
Y2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4K
ICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6Oklu
dGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+
LCAiPCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9u
ICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRl
biAlPiksCisgICAgICAgIEFQSTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6OmNyZWF0ZShTdHJpbmcg
eyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gfSwgIjwlPSBAcHJlZi5uYW1lICU+Il9z
LCBTdHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IH0sIERFRkFV
TFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKIDwl
LSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmlu
ZGV4IDVjNjMxZWRkYzk2N2NjZThhMTEwYmM0MGQyNzY5ZTJjZjkzNWQ2NDYuLmE2ZTI1Y2M0MDM0
NjdhNTAzZThlZWMxMDdhOGY3ZTQ3ZjgxYzM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC00Miw5ICs0Miw5
IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsYXNzTmFtZUtleSA9
ICIkY2xhc3MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFN0cmVhbUtleSA9ICIk
b2JqZWN0U3RyZWFtIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdLZXkgPSAiJHN0
cmluZyI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gY2xhc3NOYW1lS2V5ID0gIiRjbGFzcyJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBvYmplY3RTdHJlYW1LZXkgPSAiJG9iamVjdFN0cmVhbSJf
czsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzdHJpbmdLZXkgPSAiJHN0cmluZyJfczsKIAogc3Rh
dGljIE5TU3RyaW5nICogY29uc3Qgc2VsZWN0b3JLZXkgPSBAInNlbGVjdG9yIjsKIHN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IHR5cGVTdHJpbmdLZXkgPSBAInR5cGVTdHJpbmciOwpAQCAtNDQwLDcg
KzQ0MCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIg
KmVuY29kZXIsIGlkIG9iamVjdCkKICAgICAgICAgZW5jb2Rlci0+X29iamVjdHNCZWluZ0VuY29k
ZWQucmVtb3ZlKG9iamVjdCk7CiAgICAgfSk7CiAKLSAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rp
b25hcnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoY2xhc3NfZ2V0TmFt
ZShvYmplY3RDbGFzcykpKTsKKyAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNldChj
bGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgY2xhc3NfZ2V0TmFtZShv
YmplY3RDbGFzcykgfSkpOwogCiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNJbnZv
Y2F0aW9uIGNsYXNzXV0pIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBzcGVjaWFsIGNhc2UgTlNJ
bnZvY2F0aW9uIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gZW5jb2RlIHRoZSB0YXJnZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KaW5kZXggYjk4OTY2ZWNhZDQxYjQ4ZWVjZDI1ODIyYjRjM2MxZTZkOThhMDg3
ZS4uN2Q4ODU2MjI4NDhlZjdmNzlhNGRmMWQzM2NkNjA3YTdmMmUxNDU3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKHZvaWQpX3NlbmRJbnZvY2F0aW9uOihOU0lu
dm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50CiAgICAg
ICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6
cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkKICAgICAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJS
ZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcuICglcykiLCBzZWxf
Z2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVwbHlJbmZvID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJh
dGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CisgICAgICAgIHJlcGx5
SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUlu
Zm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmluZyB7IHJlcGx5QmxvY2tTaWduYXR1
cmUgfSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0
IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpAQCAtMjI3LDcg
KzIyNyw3IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJv
dG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAgICAgaWYgKCF0YXJnZXRNZXRob2RT
aWduYXR1cmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gW3RhcmdldE1ldGhv
ZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0u
X3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKKyAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVy
ZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJp
bmc7CiB9CiAKIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmpl
Y3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0aW9uCkBAIC0yNzAsNyArMjcwLDcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAgICAgIFN0cmluZyB3aXJlQmxvY2tT
aWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBs
eUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwogICAgICAg
ICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2lu
dGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCiAgICAgICAgIGlm
IChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNWJhOTJiYjgy
MzlmMjgwOWIwMTg0YzRkZjczMDk5OWM0MzBmNGQ0NS4uZjFiZmNmODdiMzc0MDViYjk2NjgxNGY4
YzE2NDNiYjYyN2E0NjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTg1LDI3ICsxODUsMjcgQEAgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJiBoYW5kbGUp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTYW5kYm94RXh0ZW5zaW9uKGhhbmRsZSkpOwogfQog
Ci1TdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgpCitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdWaWV3IHBh
dGgpCiB7CiAgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhdID0geyAwIH07CiAgICAgcmVh
bHBhdGgocGF0aC51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFBhdGgpOwogICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHJlc29sdmVkUGF0aCk7CiB9CiAKLVN0cmluZyByZXNvbHZlQW5kQ3JlYXRl
UmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgp
CitTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24oU3RyaW5nVmlldyBwYXRoKQogewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAg
IE5TU3RyaW5nICpuc1BhdGggPSBwYXRoOworICAgIGF1dG8gbnNQYXRoID0gcGF0aC5jcmVhdGVO
U1N0cmluZ1dpdGhvdXRDb3B5aW5nKCk7CiAKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOm5zUGF0aCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl0pIHsKLSAgICAgICAg
TlNMb2coQCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVAXCIgZm9yIGZ1dHVyZSBzYW5k
Ym94IGV4dGVuc2lvbiwgZXJyb3IgJUAiLCBuc1BhdGgsIGVycm9yKTsKKyAgICBpZiAoIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOm5zUGF0aC5n
ZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
OiZlcnJvcl0pIHsKKyAgICAgICAgTlNMb2coQCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBc
IiVAXCIgZm9yIGZ1dHVyZSBzYW5kYm94IGV4dGVuc2lvbiwgZXJyb3IgJUAiLCBuc1BhdGguZ2V0
KCksIGVycm9yKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpOwogfQogCi1TdHJpbmcgcmVzb2x2ZVBh
dGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyByZXNvbHZl
UGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKQogewogICAgIFN0cmluZyBy
ZXNvbHZlZFBhdGggPSBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBhdGgpOwogICAg
IGlmIChyZXNvbHZlZFBhdGguaXNOdWxsKCkpIHsKQEAgLTIxNiw3ICsyMTYsNyBAQCBTdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBy
ZXR1cm4gcmVzb2x2ZWRQYXRoOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlKSAt
PiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgVHlwZQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBl
KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4KIHsKICAgICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2
ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpLCB0eXBlKTsKIH0KQEAgLTI1OSw3ICsyNTks
NyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVz
KEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29ucwogICAgIH0pOwogfQogCi1hdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldyBwYXRoKSAtPiBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAg
aWYgKHJlc29sdmVkUGF0aC5pc051bGwoKSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpIC0+CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHJlc29sdmVkUGF0aCwgVHlwZTo6UmVhZFdyaXRlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBU
eXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KK2F1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdW
aWV3IHByZWZpeCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUs
IFN0cmluZz4+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pOwpAQCAtMjg0LDExICsyODQsMTIgQEAgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBU
eXBlIHQKICAgICBpZiAocGF0aC5sYXN0KCkgIT0gJy8nKQogICAgICAgICBwYXRoLmFwcGVuZCgn
LycpOwogICAgIAotICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLiAgICAKLSAgICBwYXRoLmFw
cGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKKyAgICAvLyBBcHBl
bmQgdGhlIGZpbGUgbmFtZS4KKyAgICBhdXRvIHByZWZpeEFzVVRGOCA9IHByZWZpeC51dGY4KCk7
CisgICAgcGF0aC5hcHBlbmQocHJlZml4QXNVVEY4LmRhdGEoKSwgcHJlZml4QXNVVEY4Lmxlbmd0
aCgpKTsKICAgICBwYXRoLmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFN0cmluZzo6ZnJvbVVURjgocGF0aC5k
YXRhKCkpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3gg
ZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzM5
LDcgKzM0MCw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTCiAgICAgcmV0dXJuIGNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXpl
KCkgfSwgYXVkaXRUb2tlbiwgZmxhZ3MpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90
b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0
aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsK
ICAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQubW0KaW5kZXggYTNkYjRhZjRjMTIzYjZlNmE5MWVhMWVjZGMxM2RiODJhMWJjOGIy
NC4uOWMzZWM0MDk1YTk0NzI3MWZkMTAyMTc3YjhiMDViMGY3NzhiOWZhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpA
QCAtNzIsMTMgKzcyLDEzIEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dENvbm5lY3Rpb25JZGVudGlmaWVyKElQQzo6Q29ubmVjdGlvbjo6SWRlCiAKIGJvb2wgWFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGll
bnRJZGVudGlmaWVyKQogewotICAgIGNsaWVudElkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKTsKKyAg
ICBjbGllbnRJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyht
X2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1pZGVudGlmaWVyIikgfTsKICAgICByZXR1cm4g
IWNsaWVudElkZW50aWZpZXIuaXNFbXB0eSgpOwogfQogCiBib29sIFhQQ1NlcnZpY2VJbml0aWFs
aXplckRlbGVnYXRlOjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50QnVu
ZGxlSWRlbnRpZmllcikKIHsKLSAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRl
bnRpZmllciIpOworICAgIGNsaWVudEJ1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcgeyB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1p
ZGVudGlmaWVyIikgfTsKICAgICByZXR1cm4gIWNsaWVudEJ1bmRsZUlkZW50aWZpZXIuaXNFbXB0
eSgpOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWYKIAog
Ym9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUo
U3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKIHsKLSAgICBjbGllbnRQcm9jZXNzTmFtZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNz
LW5hbWUiKTsKKyAgICBjbGllbnRQcm9jZXNzTmFtZSA9IFN0cmluZyB7IHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNzLW5hbWUiKSB9Owog
ICAgIHJldHVybiAhY2xpZW50UHJvY2Vzc05hbWUuaXNFbXB0eSgpOwogfQogCkBAIC0xMTksMzAg
KzExOSwzMCBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUlu
aXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgUwogewogICAgIHhwY19vYmplY3RfdCBl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUobV9pbml0aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CiAK
LSAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKTsK
KyAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKSB9
OwogICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmFkZCgiaW5zcGVjdG9yLXByb2Nlc3MiX3MsIGluc3BlY3RvclByb2Nl
c3MpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFN0cmluZyBzZXJ2aWNlV29y
a2VyUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6
YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpOworICAgIFN0cmluZyBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpIH07CiAg
ICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgV1RGTW92ZShz
ZXJ2aWNlV29ya2VyUHJvY2VzcykpOwotICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0
LCAicmVnaXN0cmFibGUtZG9tYWluIik7CisgICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWluIHsg
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmpl
Y3QsICJyZWdpc3RyYWJsZS1kb21haW4iKSB9OwogICAgIGlmICghcmVnaXN0cmFibGVEb21haW4u
aXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJh
YmxlLWRvbWFpbiJfcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpOwogI2VuZGlmCiAKLSAg
ICBTdHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKTsKKyAgICBT
dHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRy
YURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKSB9OwogICAgIGlm
ICghaXNQcmV3YXJtZWRQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQiX3MsIGlzUHJld2FybWVkUHJvY2Vzcyk7CiAKICAg
ICBpZiAoIWlzQ2xpZW50U2FuZGJveGVkKCkpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJEaXJlY3Rv
cnlTdWZmaXggPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOworICAgICAgICBTdHJpbmcg
dXNlckRpcmVjdG9yeVN1ZmZpeCB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAidXNlci1kaXJlY3Rvcnktc3VmZml4IikgfTsKICAg
ICAgICAgaWYgKCF1c2VyRGlyZWN0b3J5U3VmZml4LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2Vy
RGlyZWN0b3J5U3VmZml4KTsKICAgICB9CiAKLSAgICBTdHJpbmcgYWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Iik7
CisgICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiYWx3YXlz
LXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpIH07CiAgICAgaWYgKCFhbHdheXNSdW5zQXRC
YWNrZ3JvdW5kUHJpb3JpdHkuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsIGFsd2F5c1J1
bnNBdEJhY2tncm91bmRQcmlvcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCBkODYwZTdjN2FiMDYwMTZmZGYxMDdjNGNmMWRk
YTVjMzdmMzMyZmIxLi4xMDhjYjA4YWFiOGU2ZTUxODVhYTUxYWJiMGI2ZGYyYjUzNDQxMzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCkBA
IC0yMDMsNyArMjAzLDcgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioqKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgU3RyaW5nIHdlYktpdEJ1
bmRsZVZlcnNpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwg
IldlYktpdEJ1bmRsZVZlcnNpb24iKTsKKyAgICAgICAgU3RyaW5nIHdlYktpdEJ1bmRsZVZlcnNp
b24geyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1
bmRsZVZlcnNpb24iKSB9OwogICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uID0g
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdLmluZm9E
aWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldOwogICAg
ICAgICBpZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgIWV4cGVjdGVkQnVuZGxl
VmVyc2lvbi5pc051bGwoKSAmJiB3ZWJLaXRCdW5kbGVWZXJzaW9uICE9IGV4cGVjdGVkQnVuZGxl
VmVyc2lvbikgewogICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJX
ZWJLaXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0Y2g6ICIsIHdlYktpdEJ1bmRsZVZlcnNpb24s
ICIgIT0gIiwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
Y3BwCmluZGV4IDBkNTc0YjBjYzUwMzQxMzMyMTdmZTM5ZjBiMDQwYjU3OWQyZmMxYzAuLjhhOTk2
MTE2ODMzOTNhZTc5NzBiZjk1OWU1MmViYzkyYjY1ZWZmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBD
VGVzdGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBX
S01lc3NhZ2VUZXN0RHJpdmVyRnVuYyBtZXNzYWdlVGVzdERyaXZlcihTdHJpbmcmJiBkcml2ZXJO
YW1lKQogewogICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09ICJk
ZWZhdWx0IikKLSAgICAgICAgZHJpdmVyTmFtZSA9IGdldGVudigiV0VCS0lUX01FU1NBR0VfVEVT
VF9ERUZBVUxUX0RSSVZFUiIpOworICAgICAgICBkcml2ZXJOYW1lID0gU3RyaW5nIHsgZ2V0ZW52
KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIikgfTsKICAgICBpZiAoZHJpdmVy
TmFtZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCiAgICAgICAgIHJldHVy
biBkZWZhdWx0VGVzdERyaXZlcjsKICAgICBhdXRvIHRlc3REcml2ZXIgPSByZWludGVycHJldF9j
YXN0PFdLTWVzc2FnZVRlc3REcml2ZXJGdW5jPihkbHN5bShSVExEX0RFRkFVTFQsIGRyaXZlck5h
bWUudXRmOCgpLmRhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuY3BwCmluZGV4IDg2NjQ5YTc3MTFkYmE3MTRlYWEwMTVmM2YyNmY5Zjdk
NmMyN2Q5NWUuLmExMGI4YzcxNDBkODgxOWQyMjVjOWMxOWZhZWM4Zjc5ZTU1YjQyMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNp
b25FcnJvciBlcnJvcikKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gIkludGVybmFsRXJyb3IiOworICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciJfczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5z
aW9uLmgKaW5kZXggNWRkYTMwY2Q3ZjYxNzlmODM4YzkwZGMyYWY1NzgzYmE1MjFlNmU5Mi4uYjJi
YTUyMzIyY2RhNDk5ODc1ODI1MWMyMDIzOTU0MTkyMjVkYzBkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaApAQCAtODQsMTcgKzg0LDE3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIAogICAgIHN0YXRpYyBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKEhhbmRs
ZSYmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSk7CiAgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJl
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxIYW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgVHlwZSk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5k
bGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gV2lsbCBhdHRl
bXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldyBwYXRoLCBUeXBl
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpOyAvLyBXaWxsIGF0dGVtcHQgdG8gY3JlYXRl
IHRoZSBkaXJlY3RvcnkuCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRs
ZSwgU3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZp
eCwgVHlwZSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVG
b3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcyk7CiAjaWYgSEFW
RShBVURJVF9UT0tFTikKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3Rh
dGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9w
dGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYg
cGF0aCwgYXVkaXRfdG9rZW5fdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBj
cmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9r
ZW5fdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJ
T0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bnMoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRp
ZgpAQCAtMTE4LDkgKzExOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVN0cmluZyBzdHJp
bmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJp
bmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKTsKK1N0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5Q
YXRoKFN0cmluZ1ZpZXcgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5z
aW9uKFN0cmluZ1ZpZXcgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKTsKIAogI2lmICFFTkFC
TEUoU0FOREJPWF9FWFRFTlNJT05TKQogCkBAIC0xMjksMTEgKzEyOSwxMSBAQCBpbmxpbmUgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgeyByZXR1cm4gSGFuZGxlIHsgfTsgfQog
aW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUo
SGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhh
bmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgLT4gVmVjdG9yPEhhbmRsZT4geyByZXR1cm4geyB9OyB9Ci1pbmxpbmUgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBT
dHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsg
fTsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJl
dHVybiBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4geyByZXR1cm4gc3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPiB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldykgLT4gc3Rk
OjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldywg
VHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVy
biBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsgfTsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgU2Fu
ZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKSB7IH0KIGlubGluZSBib29sIFNhbmRi
b3hFeHRlbnNpb246OnJldm9rZSgpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE0MSw5ICsxNDEsOSBA
QCBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4gdHJ1ZTsg
fQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KGNvbnN0IEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBib29sIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8SGFuZGxlPiYpIHsg
cmV0dXJuIHRydWU7IH0KLWlubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KLWlubGluZSBTdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1
cm4gcGF0aDsgfQotaW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7
IH0KK2lubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdW
aWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQoraW5saW5lIFN0cmluZyByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRo
LnRvU3RyaW5nKCk7IH0KK2lubGluZSBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRo
LnRvU3RyaW5nKCk7IH0KIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggMjFlNmQ4NzU3MTM1OWQ5MWMyM2M1YjBiNjA5
ODk4NDMzYTlhMWZhNC4uNmIwODRkZmFmZmVkN2ZlOGYwYzRkOTZmN2RiN2VjMTY3YTRlNjY1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0K
QEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbmRib3hEYXRhVmF1bHRQYXJlbnRE
aXJlY3RvcnkoKQogICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2Fs
aXplIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwg
c2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAg
ICAgfQotICAgIHJldHVybiByZXNvbHZlZFBhdGg7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgocmVzb2x2ZWRQYXRoKTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5kYm94RGlyZWN0b3J5KFdl
YkNvcmU6OkF1eGlsaWFyeVByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBjb25zdCBTdHJpbmcmIHBh
cmVudERpcmVjdG9yeSkKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgYm9vbCBhcHBseVNhbmRi
b3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dAogCiBzdGF0aWMgU3RyaW5nIGdldFVzZXJEaXJlY3RvcnlTdWZmaXgoY29uc3QgQXV4aWxpYXJ5
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBhdXRv
IHVzZXJEaXJlY3RvcnlTdWZmaXggPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmZpbmQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOworICAgIGF1dG8gdXNlckRpcmVjdG9yeVN1
ZmZpeCA9IHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZmluZCgidXNlci1kaXJl
Y3Rvcnktc3VmZml4Il9zKTsKICAgICBpZiAodXNlckRpcmVjdG9yeVN1ZmZpeCAhPSBwYXJhbWV0
ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBzdWZm
aXggPSB1c2VyRGlyZWN0b3J5U3VmZml4LT52YWx1ZTsKICAgICAgICAgYXV0byBmaXJzdFBhdGhT
ZXBhcmF0b3IgPSBzdWZmaXguZmluZCgnLycpOwpAQCAtNzA0LDkgKzcwNCw5IEBAIHN0YXRpYyB2
b2lkIHBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0CiAKICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVy
KCJIT01FX0RJUiIsIHB3ZC5wd19kaXIpOwogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9t
VVRGOChwd2QucHdfZGlyKTsKLSAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKKyAgICBwYXRo
LmFwcGVuZCgiL0xpYnJhcnkiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJh
bWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7Cisg
ICAgcGF0aC5hcHBlbmQoIi9QcmVmZXJlbmNlcyJfcyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMu
YWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4
Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3Rv
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4
IDkyMGRlMDBiYjY4NjIwMmI2YzFkNjRmYWFkNzEyMzU5YzE2MDI3OGYuLjliZGU1MDUyN2QzNTU1
ZWIzMjczODM2NWExZjdjMmZjNGYxMzhjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDY5LDIwICs0NjksMjAgQEAgV2ViS2V5Ym9hcmRFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQs
IGJvb2wgaGEKIAogICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBk
b24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4K
ICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewotICAgICAgICB0
ZXh0ID0gIlxyIjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICB0ZXh0
ID0gIlxyIl9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAg
Ly8gQXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3Jy
ZWN0IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4KICAgICBpZiAod2luZG93c1Zp
cnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKLSAgICAgICAgdGV4dCA9ICJceDgiOwotICAgICAg
ICB1bm1vZGlmaWVkVGV4dCA9ICJceDgiOworICAgICAgICB0ZXh0ID0gIlx4OCJfczsKKyAgICAg
ICAgdW5tb2RpZmllZFRleHQgPSB0ZXh0OwogICAgIH0KIAogICAgIC8vIEFsd2F5cyB1c2UgOSBm
b3IgVGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0
ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RB
QikgewotICAgICAgICB0ZXh0ID0gIlx4OSI7Ci0gICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4
OSI7CisgICAgICAgIHRleHQgPSAiXHg5Il9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRl
eHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5t
b2RpZmllZFRleHQsIGtleSwgY29kZSwga2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlD
b2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgbWFjQ2hhckNvZGUsIGhhbmRsZWRCeUlucHV0TWV0
aG9kLCBjb21tYW5kcywgYXV0b1JlcGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmll
cnMsIHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBjMGE2NGZlZmJkMmY0NWMxMmFkOWNi
ZTJjNzg4M2IyNTE5ZDg4YjQ0Li5hYWM2MGI2NWIwMjc2NzU3M2IwMDcxODUxZjAxNmY0ZGUyNjgz
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3Ry
aW5nJiBwYQogewogICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZv
clBhdGgocGF0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCkpOworICAgIFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhIGZpbGVE
YXRhID0gbWFwRmlsZShwYXRoKTsKICAgICBpZiAoZmlsZURhdGEuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBtZXRhRGF0YSA9IGRlY29kZUNvbnRlbnRS
dWxlTGlzdE1ldGFEYXRhKGZpbGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKaW5kZXggZWViY2M5MmQ3OTlhNTViYWQxNzExNWNiODZh
N2M4YmM4NzA0NjMzNi4uYzJhYWQzNmZkZTdmZjllMjE0NDdkY2E0M2JiZTBmMTMzOTgzZGI4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAK
QEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdLRG93bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKIAogICAgICAgICB2b2lk
IHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlk
ZQogICAgICAgICB7Ci0gICAgICAgICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxv
YWQucmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25s
b2FkIiB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBk
b3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcg
ZG93bmxvYWQiX3MgfSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAppbmRleCBlMjU0OTI2ZGM1MWE0OWFlYmE0OThkNzk0OWFhZmM4MDdh
NGI3MjI5Li40MTE1MGI3ZDE1ZmIyZjU0ZGI1N2U2ODA3ZDU1ODQxNWU3ZDljYzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTUxNSwxMyArNTE1LDEzIEBA
IHZvaWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiBXS1N0cmluZ1JlZiBX
S1BhZ2VHZXRTZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6
U3RyaW5nJiBzZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
IlNlc3Npb25IaXN0b3J5VVJMIikubGVha1JlZigpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYg
c2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9u
SGlzdG9yeVVSTCJfcykubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkhpc3Rv
cnlVUkxWYWx1ZVR5cGUpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9uQmFja0Zv
cndhcmRMaXN0SXRlbVZhbHVlVHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNz
aW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lv
bkJhY2tGb3J3YXJkTGlzdEl0ZW0iKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5n
JiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgi
U2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iX3MpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9B
UEkoJnNlc3Npb25CYWNrRm9yd2FyZExpc3RWYWx1ZVR5cGUpOwogfQogCkBAIC0xNTgyLDIxICsx
NTgyLDIxIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBpZiAobV9jbGll
bnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHx8IG1fY2xpZW50LmNyZWF0
ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkgewogICAgICAgICAgICAgICAgIEFQSTo6
RGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd0ZlYXR1
cmVzLngpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoIngiLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKCp3aW5kb3dGZWF0dXJlcy54KSk7CisgICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoIngi
X3MsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLngpKTsKICAgICAgICAgICAg
ICAgICBpZiAod2luZG93RmVhdHVyZXMueSkKLSAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgi
eSIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLnkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbWFwLnNldCgieSJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVy
ZXMueSkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy53aWR0aCkKLSAgICAg
ICAgICAgICAgICAgICAgbWFwLnNldCgid2lkdGgiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5k
b3dGZWF0dXJlcy53aWR0aCkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ3aWR0aCJf
cywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMud2lkdGgpKTsKICAgICAgICAg
ICAgICAgICBpZiAod2luZG93RmVhdHVyZXMuaGVpZ2h0KQotICAgICAgICAgICAgICAgICAgICBt
YXAuc2V0KCJoZWlnaHQiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy5oZWln
aHQpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJtZW51QmFyVmlzaWJsZSIsIEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAg
ICAgICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJ0b29sQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRv
b2xCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNp
YmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNp
YmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgic2Nyb2xsYmFyc1Zpc2libGUiLCBBUEk6
OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSkpOwotICAg
ICAgICAgICAgICAgIG1hcC5zZXQoInJlc2l6YWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzLnJlc2l6YWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxz
Y3JlZW4iLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7
Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgiZGlhbG9nIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUo
d2luZG93RmVhdHVyZXMuZGlhbG9nKSk7CisgICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoImhl
aWdodCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMuaGVpZ2h0KSk7Cisg
ICAgICAgICAgICAgICAgbWFwLnNldCgibWVudUJhclZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6
Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAg
bWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93
RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoInRv
b2xCYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50b29s
QmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJs
ZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNp
YmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgic2Nyb2xsYmFyc1Zpc2libGUiX3MsIEFQ
STo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7Cisg
ICAgICAgICAgICAgICAgbWFwLnNldCgicmVzaXphYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5yZXNpemFibGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJm
dWxsc2NyZWVuIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2Ny
ZWVuKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgiZGlhbG9nIl9zLCBBUEk6OkJvb2xlYW46
OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cpKTsKICAgICAgICAgICAgICAgICBSZWY8QVBJ
OjpEaWN0aW9uYXJ5PiBmZWF0dXJlc01hcCA9IEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1v
dmUobWFwKSk7CiAKICAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDhlNjc1YjM5OTA3YmJjZDdhOTI0YzQ2Yzc4MGY3
MTQyZjBlYzk1MWEuLjFhNzNhNzBjYWM5OTY4MjY5YzQ2N2E4ODY3ZjgyMWM0YjBkYmEyYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBA
IC00MSwxMyArNDEsMTMgQEAgV0tUeXBlSUQgV0tQcmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdL
UHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZSgpCiB7Ci0gICAgYXV0byBwcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iX3Ms
ICJXZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRvQVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVmKCkp
OwogfQogCiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJlZmVyZW5jZXNDcmVhdGVXaXRoSWRlbnRpZmll
cihXS1N0cmluZ1JlZiBpZGVudGlmaWVyUmVmKQogewotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBX
ZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50
aWZpZXJSZWYpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhp
ZGVudGlmaWVyUmVmKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHJldHVybiB0
b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVDb2NvYS5tbQppbmRleCAzZDY1NzlmNTJjZTM1MDFhODYxYzNmNjU1ZWZiZWQyNGU4MWUxMmU0
Li4yMTU2Y2UwOTNiMjc0YTEzOTZlMGU3YTc0YjkxZjZhMjJkNTVjZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQpAQCAtNTgsNyArNTgsNyBAQCBXVEY6OlN0cmluZyBDb250
ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCgpCiAgICAgaWYgKCFbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmNvbnRlbnRSdWxlTGlz
dFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5nZXQo
KSk7CiAKLSAgICByZXR1cm4gW2NvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRl
VVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KFtjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0u
cGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggOWZhNzFiMDc1YTAzZmYxZGZkZDAwMTdlNDVjODEy
OTk1OWQzNWQ4My4uYTJiN2M1YjdjYWFlNzg5MzA5ZmQ2NmQ3Y2YyYzIxYjg1ZTQ5NDU2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTc5LDcgKzc5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRl
ZmF1bHRTdG9yZQogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTDooTlNVUkwgKil1cmwKIHsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6
Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1
bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgoU3RyaW5nOjpmcm9tVVRGOCh1cmwuYWJzb2x1dGVV
UkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkpOwogI2Vsc2UKICAgICByZXR1cm4gbmlsOwog
I2VuZGlmCkBAIC0xOTQsNyArMTk0LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZVdp
dGhMZWdhY3lGaWxlbmFtZQogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTEFuZExlZ2FjeUZp
bGVuYW1lOihOU1VSTCAqKXVybAogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0g
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0
aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7CisgICAgcmV0dXJu
IHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aChTdHJpbmc6
OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKSk7CiAj
ZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXggZWIyMzIxNjljZmI4YWEyYjIy
ZGU3MTM4Zjk4YWVmNDZjMzkwNDhjNS4uNTlmYjhkYzBhNzgxYzdlYWFkZWZiNjEyYTVmMzExMjYx
YjJmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJQcmVmZXJlbmNlcz4o
c2VsZiwgU3RyaW5nKCksICJXZWJLaXQiLCAiV2ViS2l0RGVidWciKTsKKyAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+KHNlbGYsIFN0cmlu
ZygpLCAiV2ViS2l0Il9zLCAiV2ViS2l0RGVidWciX3MpOwogICAgIHJldHVybiBzZWxmOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBmZGQyZjZlMGRhNGIwNmNkYWRhZDE2MzNiMDE0ZDViZDhiZTE5NjJmLi42YjJlZmE3
MjFjZGQ4MmRkMDEwMDUyNjhmNTFkZmFiOWE3MDhkM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTY1LDEwICs2NSwxMCBA
QCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1
bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdQogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc0lkZW50
aWZpZXIgPSBtX3Byb2Nlc3NJZGVudGlmaWVyOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIHVzZXJE
aXJlY3RvcnlTdWZmaXggPSBnZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgiKSkKLSAg
ICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInVzZXItZGly
ZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7CisgICAgICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgi
X3MsIFN0cmluZzo6ZnJvbVVURjgodXNlckRpcmVjdG9yeVN1ZmZpeCkpOwogCiAgICAgaWYgKG1f
YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KQotICAgICAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlv
cml0eSJfcywgInRydWUiKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsICJ0cnVl
Il9zKTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggNjBjMGQ5
ZGFlMGYwZDZhZGM1NmNmZDFjOGNmMTBlZjk0M2Q1MWQzNS4uMjA3MmI1YjZiMWNiOTBmOGY2Mjdm
Njk2NWMzMTBmMDFlN2Y0YjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBTdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFtZSgpCiAgICAgICAg
IHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKCk7CiAgICAgICAgIGF1dG8mIHVybCA9IG1fcmVxdWVzdHNUb0xvYWQuZmly
c3QoKS5maXJzdDsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihtX3JlcXVlc3RzVG9Mb2FkLmZpcnN0
KCkuc2Vjb25kLCBbJl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7Ci0gICAgICAgICAg
ICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAidGV4dC9odG1sIiwg
IlVURi04IiwgdXJsKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkRGF0YShJUEM6OkRhdGFSZWZl
cmVuY2UoZGF0YSksICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgdXJsKTsKICAgICAgICAgfSwg
WyZdKGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpIHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkVVJM
KHVybCwgcmVmZXJyZXIpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tCmluZGV4IDBlYzExNzQzYmIxZDhm
MzlhMjUwYjUxYjNlNTc4NGJhZTFlNTBlMzAuLmZlNDViNzQ1NGQ3YjRiMzA4NzVlMGU2ZTNjMTc3
OTQ1NmFkN2FhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YktpdFN3aWZ0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViS2l0U3dpZnRTb2Z0TGluay5tbQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkKiBXZWJLaXRTd2lm
dExpYnJhcnkoYm9vbCBpc09wdGlvbmFsKQogICAgICAgICAvLyBUaGVuIHNlYXJjaCBpbiB0aGUg
RnJhbWV3b3Jrcy8gZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50bHkgbG9hZGVkIHZlcnNpb24gb2Yg
V2ViS2l0LmZyYW1ld29yazoKICAgICAgICAgRGxfaW5mbyBpbmZvIHsgfTsKICAgICAgICAgaWYg
KGRsYWRkcigoY29uc3Qgdm9pZCopJldlYktpdFN3aWZ0TGlicmFyeSwgJmluZm8pICYmIHN0cmxl
bihpbmZvLmRsaV9mbmFtZSkpIHsKLSAgICAgICAgICAgIGF1dG8gd2Via2l0RnJhbWV3b3JrRGly
ZWN0b3J5ID0gV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGFyZW50UGF0aChpbmZvLmRsaV9mbmFtZSk7
CisgICAgICAgICAgICBhdXRvIHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSA9IFdURjo6RmlsZVN5
c3RlbUltcGw6OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChpbmZvLmRsaV9mbmFtZSkpOwog
ICAgICAgICAgICAgYXV0byBkeWxpYlBhdGggPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5LCAiRnJhbWV3b3Jrcy9s
aWJXZWJLaXRTd2lmdC5keWxpYiIpOwogICAgICAgICAgICAgaWYgKChsaWJyYXJ5ID0gZGxvcGVu
KGR5bGliUGF0aC51dGY4KCkuZGF0YSgpLCBSVExEX05PVykpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCmluZGV4IDI4YTU4NTFmNWVlMGFjMGEzNGJhNzczZGQ2MTM0MzdiZjU0ODcx
NzMuLjgwODU3MzIzZjlkOGY5YzM4ZjYxYTkyMWI3ZGViODQ0YjgwMGYyNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpA
QCAtMjgyLDcgKzI4Miw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURp
cmVjdG9yeSgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9y
U2FuZGJveEV4dGVuc2lvbnMoKQogewotICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5k
bGVSZXNvdXJjZVBhdGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSByZXNvdXJjZVBhdGhdKTsKKyAgICBtX3Jlc29sdmVkUGF0aHMudWlQcm9j
ZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0
cmluZyB7IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSB9KTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IDAwNzRkY2E3NzI3YTk2ODc0ZmIxZWQzODQ3ZjUxOWUxNjA0YTUz
ZjcuLmE3YmYzZDJkYzRkNmUzMmVlNmNiZjZjMjAyMGU1ZWNkY2M3MGVhYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC05MjYsMTcgKzkyNiwx
NyBAQCAtICh2b2lkKV93a0NoYW5nZVRleHRTdHlsZTooaWQpc2VuZGVyCiAKICAgICBpZiAoW3Nl
bGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjBdICE9IF90ZXh0SXNCb2xkKSB7CiAg
ICAgICAgIF90ZXh0SXNCb2xkID0gIV90ZXh0SXNCb2xkOwotICAgICAgICBfd2ViVmlld0ltcGwt
PnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoQCJUb2dnbGVCb2xkIiwgQCIiKTsKKyAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVCb2xkIl9zLCBl
bXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0
ZWRGb3JTZWdtZW50OjFdICE9IF90ZXh0SXNJdGFsaWMpIHsKICAgICAgICAgX3RleHRJc0l0YWxp
YyA9ICFfdGV4dElzSXRhbGljOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRl
RWRpdENvbW1hbmQoIlRvZ2dsZUl0YWxpYyIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+
cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xlSXRhbGljIl9zLCBlbXB0eVN0cmluZygp
KTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50
OjJdICE9IF90ZXh0SXNVbmRlcmxpbmVkKSB7CiAgICAgICAgIF90ZXh0SXNVbmRlcmxpbmVkID0g
IV90ZXh0SXNVbmRlcmxpbmVkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRl
RWRpdENvbW1hbmQoIlRvZ2dsZVVuZGVybGluZSIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1w
bC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5lIl9zLCBlbXB0eVN0
cmluZygpKTsKICAgICB9CiB9CiAKQEAgLTk1NSwxOSArOTU1LDE5IEBAIC0gKHZvaWQpX3drQ2hh
bmdlVGV4dEFsaWdubWVudDooaWQpc2VuZGVyCiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAg
ICBjYXNlIE5TVGV4dEFsaWdubWVudExlZnQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVu
dCA9IE5TVGV4dEFsaWdubWVudExlZnQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4
ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25MZWZ0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBs
LT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkxlZnQiX3MsIGVtcHR5U3RyaW5nKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudFJpZ2h0OgogICAgICAg
ICBfY3VycmVudFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRSaWdodDsKLSAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0IiwgQCIi
KTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGln
blJpZ2h0Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1Rl
eHRBbGlnbm1lbnRDZW50ZXI6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4
dEFsaWdubWVudENlbnRlcjsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVk
aXRDb21tYW5kKCJBbGlnbkNlbnRlciIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFn
ZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25DZW50ZXIiX3MsIGVtcHR5U3RyaW5nKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudEp1c3RpZmllZDoKICAgICAg
ICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOwotICAg
ICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduSnVzdGlm
aWVkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21t
YW5kKCJBbGlnbkp1c3RpZmllZCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTkzLDcgKzk5Myw3IEBAIC0gKHZvaWQp
X3drQ2hhbmdlQ29sb3I6KGlkKXNlbmRlcgogICAgICAgICByZXR1cm47CiAKICAgICBfdGV4dENv
bG9yID0gc2VsZi5jb2xvclBpY2tlckl0ZW0uY29sb3I7Ci0gICAgX3dlYlZpZXdJbXBsLT5wYWdl
KCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9u
Rm9ySFRNTChXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7
CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3Ii
X3MsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29h
Q29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsKIH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRl
eHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTUxMzIsNyArNTEzMiw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6Omluc2VydFRleHQoaWQgc3RyaW5nLCBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAg
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4qIGtleXByZXNzQ29tbWFuZHMgPSBtX2Nv
bGxlY3RlZEtleXByZXNzQ29tbWFuZHM7CiAgICAgaWYgKGtleXByZXNzQ29tbWFuZHMgJiYgIW1f
aXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29mdFNwYWNlKSB7CiAgICAgICAgIEFTU0VSVChyZXBs
YWNlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpOwotICAgICAgICBXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQgY29tbWFuZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KTsKKyAgICAgICAgV2Vi
Q29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQoImluc2VydFRleHQ6Il9zLCB0ZXh0KTsKICAg
ICAgICAga2V5cHJlc3NDb21tYW5kcy0+YXBwZW5kKGNvbW1hbmQpOwogICAgICAgICBMT0coVGV4
dElucHV0LCAiLi4uc3RvcmVkIik7CiAgICAgICAgIG1fcGFnZS0+cmVnaXN0ZXJLZXlwcmVzc0Nv
bW1hbmROYW1lKGNvbW1hbmQuY29tbWFuZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDRiMjFlOTg5ZjI3OWFl
NjczNGQ5ZDMyNjAxZGUzNjZkYjAwYWY3YjIuLmVjNjliZjZhZDNlN2M1OGUxNzExOTcxNTJkMGIz
NDRjMjIyNDFmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6On5EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0
U2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IGNoYXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2Rl
cikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlP
cmlnaW5EYXRhKEFTQ0lJTGl0ZXJhbCBuYW1lLCBLZXllZERlY29kZXIqIGRlY29kZXIpCiB7CiAg
ICAgU3RyaW5nIG9yaWdpbjsKIApAQCAtMTU3LDIwICsxNTcsMjAgQEAgdm9pZCBEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hNYXAKIAogc3RkOjp1bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNo
U2FsdEZvck9yaWdpbj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2Rl
cihLZXllZERlY29kZXIqIGRlY29kZXIsIFN0cmluZyYmIGRldmljZUlkSGFzaFNhbHQpIGNvbnN0
CiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEo
Im9yaWdpbiIsIGRlY29kZXIpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gZ2V0U2Vj
dXJpdHlPcmlnaW5EYXRhKCJvcmlnaW4iX3MsIGRlY29kZXIpOwogICAgIGlmICghc2VjdXJpdHlP
cmlnaW5EYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwg
IkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBUaGUgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhl
IGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBhcmVudFNl
Y3VyaXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgicGFyZW50T3JpZ2luIiwg
ZGVjb2Rlcik7CisgICAgYXV0byBwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0
eU9yaWdpbkRhdGEoInBhcmVudE9yaWdpbiJfcywgZGVjb2Rlcik7CiAgICAgaWYgKCFwYXJlbnRT
ZWN1cml0eU9yaWdpbkRhdGEpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNp
c3RlbmN5LCAiRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBwYXJlbnQgc2VjdXJpdHkgb3Jp
Z2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hT
YWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBkb3VibGUgbGFzdFRpbWVVc2VkOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJs
YXN0VGltZVVzZWQiLCBsYXN0VGltZVVzZWQpKSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVE
b3VibGUoImxhc3RUaW1lVXNlZCJfcywgbGFzdFRpbWVVc2VkKSkgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhl
IGxhc3QgdGltZSB1c2VkIHdhcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZvcjogJyVzJyIsIGRl
dmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KQEAgLTE4NSw5ICsxODUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0U3Rvcgogc3RkOjp1
bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNyZWF0ZUVu
Y29kZXJGcm9tRGF0YShjb25zdCBIYXNoU2FsdEZvck9yaWdpbiYgaGFzaFNhbHRGb3JPcmlnaW4p
IGNvbnN0CiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1
bWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3Ry
aW5nKCJwYXJlbnRPcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5wYXJlbnRPcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwotICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgibGFzdFRpbWVVc2Vk
IiwgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iX3MsIGhhc2hTYWx0Rm9y
T3JpZ2luLmRvY3VtZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVTdHJpbmcoInBhcmVudE9yaWdpbiJfcywgaGFzaFNhbHRGb3JPcmlnaW4ucGFyZW50
T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUo
Imxhc3RUaW1lVXNlZCJfcywgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSk7CiAgICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVuY2hl
ckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vz
c0xhdW5jaGVyQ29jb2EubW0KaW5kZXggMGM1Y2RkZDE5OTI3MTRmNTZmY2ZiMTAzMTYyMjZkMjEx
NjFlNGUyYi4uYjZhZjA2ODUwNDAxZWYwMzQwODkxNzQ3M2VmYjk4ZDllNzgzOWUxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5j
aGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2Ev
UHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGlu
aXRpYWxpemF0aW9uTWVzc2FnZS5nZXQoKSwgIkNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVz
IiwgY29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBh
dXRvIGxhbmd1YWdlc0l0ZXJhdG9yID0gbV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRp
b25EYXRhLmZpbmQoIk92ZXJyaWRlTGFuZ3VhZ2VzIik7CisgICAgYXV0byBsYW5ndWFnZXNJdGVy
YXRvciA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5maW5kKCJPdmVy
cmlkZUxhbmd1YWdlcyJfcyk7CiAgICAgaWYgKGxhbmd1YWdlc0l0ZXJhdG9yICE9IG1fbGF1bmNo
T3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5lbmQoKSkgewogICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiUHJvY2VzcyBMYXVuY2hlciBpcyBjb3B5aW5n
IE92ZXJyaWRlTGFuZ3VhZ2VzIGludG8gaW5pdGlhbGl6YXRpb24gbWVzc2FnZTogIiA8PCBsYW5n
dWFnZXNJdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBhdXRvIGxhbmd1YWdlcyA9IGFkb3B0T1NP
YmplY3QoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CmluZGV4IDJlODZjMWI2NmE0ZDUyZDZmMzA0YTQ5MDUyZTBmZTA5ODVkYzMzNzguLjZiY2UyYmFl
OWMzNjBhYWRjNzc0NGRmZTdkNDViMTEyMzlhYTQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBldmVudCkgY28KICAgICBpZiAoIWV2
ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7Ci0gICAgaWYg
KG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7
CisgICAgaWYgKCFtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKSB7CisgICAgaWYgKCFz
dHJjbXAobWVzc2FnZU5hbWUsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6Onhw
Y0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKSkgewogICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5tX2VuZHBvaW50TWVzc2FnZSA9IGV2ZW50OwogICAgICAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygp
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+cHJvY2Vz
c2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggZWY4ZDJkZDg2
MDE5NDAwZDBkZmMxM2ZhMWE0MjY2NjJmYjdiZDQyNS4uN2FjNDRhOTdiMGJmZGMzYzU1Nzc0YzRh
YThmMzkyYTQyYWJjYmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApA
QCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgdXBkYXRlU3Rv
cmVkUmVxdWVzdHMocmVxdWVzdCk7CiAKICAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
OjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVk
aW9EZXZpY2UoKSwgcmVxdWVzdC5oYXNWaWRlb0RldmljZSgpKSkgewotICAgICAgICBkZW55UmVx
dWVzdChyZXF1ZXN0LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFB
Y2Nlc3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJv
eC4iKTsKKyAgICAgICAgZGVueVJlcXVlc3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJV
bmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAK
aW5kZXggN2JkNTg3N2RkOGU5MjU4ZGM1ZDZhN2ZhNDI4NjdmYjkyOTc5ZDZmYS4uNGFhNzI5ZGI0
YTJjNjgyZTM3OWI3MTVjMTZiYTRmYjA2NDZmMDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAg
U3RyaW5nIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZl
bnRzRGVzY3JpcHRpb24oRXZlbnRzIGUKIH0KIAogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhT
dHJpbmdWaWV3IGxvZykgY29uc3QKIHsKICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJT
d2lwZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgbG9nLnV0ZjgoKS5kYXRhKCkpOwog
fQpAQCAtMzI0LDEzICszMjQsMTMgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLAogdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KCkKIHsKICAg
ICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykKLSAgICAgICAgbG9nKCJyZXNldDsgaGFkIG91dHN0
YW5kaW5nIGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMp
KTsKKyAgICAgICAgbG9nKG1ha2VTdHJpbmcoInJlc2V0OyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRz
OiAiLCBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSkpOwogICAgIG1fb3V0
c3RhbmRpbmdFdmVudHMgPSAwOwogICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAgbV9y
ZW1vdmFsQ2FsbGJhY2sgPSBudWxscHRyOwogfQogCi1ib29sIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2
ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCBz
aG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQorYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNu
YXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBB
U0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3VsZEln
bm9yZUV2ZW50SWZQYXVzZWQpCiB7CiAgICAgQVNTRVJUKGhhc09uZUJpdFNldChldmVudCkpOwog
CkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNo
b3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID09IFNob3Vs
ZElnbm9yZUV2ZW50SWZQYXVzZWQ6OlllcyAmJiBpc1BhdXNlZCgpKSB7Ci0gICAgICAgIGxvZygi
aXMgcGF1c2VkOyBpZ25vcmluZyBldmVudDogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50KSk7
CisgICAgICAgIGxvZyhtYWtlU3RyaW5nKCJpcyBwYXVzZWQ7IGlnbm9yaW5nIGV2ZW50OiAiLCBl
dmVudHNEZXNjcmlwdGlvbihldmVudCkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGxvZyhsb2dSZWFzb24gKyBldmVudHNEZXNjcmlwdGlvbihldmVudCkpOworICAgIGxv
ZyhtYWtlU3RyaW5nKGxvZ1JlYXNvbiwgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAKICAg
ICBtX291dHN0YW5kaW5nRXZlbnRzICY9IH5ldmVudDsKIApAQCAtMzUyLDEyICszNTIsMTIgQEAg
Ym9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9w
V2FpdGluZ0ZvckV2ZW50KEV2ZW50cwogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZChFdmVudHMgZXZlbnQsIFNob3VsZEln
bm9yZUV2ZW50SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCkKIHsKLSAgICByZXR1
cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVk
OiAiLCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdG
b3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiX3MsIHNob3VsZEln
bm9yZUV2ZW50SWZQYXVzZWQpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6Y2FuY2VsT3V0c3RhbmRpbmdFdmVudChFdmVudHMgZXZlbnQp
CiB7Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJ3YWl0IGZvciBldmVu
dCBjYW5jZWxsZWQ6ICIpOworICAgIHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAi
d2FpdCBmb3IgZXZlbnQgY2FuY2VsbGVkOiAiX3MpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVu
dCBldmVudCkKQEAgLTM2OCw3ICszNjgsNyBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldgogdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1v
dmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykg
ewotICAgICAgICBsb2coImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRz
OiAiICsgZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50cykpOworICAgICAgICBs
b2cobWFrZVN0cmluZygiZGVmZXJyaW5nIHJlbW92YWw7IGhhZCBvdXRzdGFuZGluZyBldmVudHM6
ICIsIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmgKaW5kZXggMjBjMzBiODM0ODg4N2YzZTUyMDBiZjg2OTcwZDgyNDljMzUwNDdi
Zi4uMDJhMGI4OThmZDVjYjJlYTYyZjBmN2NiMGQ4Njg4YWI1Njk0ZGIxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTI1MCwxMyAr
MjUwLDEzIEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU3RyaW5n
IGV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyk7Ci0gICAgICAgIHZvaWQgbG9nKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworICAgICAgICB2b2lkIGxvZyhTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgICAg
ICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpOwogICAgICAgICB2b2lkIGZp
cmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCk7CiAgICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1l
ckZpcmVkKCk7CiAKLSAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29u
c3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgPSBTaG91bGRJ
Z25vcmVFdmVudElmUGF1c2VkOjpZZXMpOworICAgICAgICBib29sIHN0b3BXYWl0aW5nRm9yRXZl
bnQoRXZlbnRzLCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1
c2VkID0gU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6WWVzKTsKIAogICAgICAgICBFdmVudHMg
bV9vdXRzdGFuZGluZ0V2ZW50cyB7IDAgfTsKICAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
IG1fcmVtb3ZhbENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBkODFkNzgwNjIxYzgwNTA5M2Q0
ODNmMWVhYzM1ZTI5MDFkODE4M2I5Li5mNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4
NmMxMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVk
ZW50aWFsUmVxCiAgICAgICAgIFttX3Byb3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25S
ZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlcildKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgZW5zdXJlT25NYWluUnVuTG9v
cChbd2Vha1RoaXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBjcmVkZW50aWFsID0gcmV0
YWluUHRyKGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAg
aGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsg
Tm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRh
dGEgeyBOb3RBbGxvd2VkRXJyb3IsICJPcGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBj
b250aW51ZUFmdGVyUmVxdWVzdChjcmVkZW50aWFsLCBlcnJvciwgV1RGTW92ZShoYW5kbGVyKSk7
CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXEKICAgICAgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2lu
ZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBkYWVtb25FbmRwb2ludCA9IHJldGFpblB0cihkYWVtb25F
bmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25FbmRwb2ludCkgewogICAgICAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3QgdG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVA
XG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50
aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3Bl
cmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9w
ZXJhdGlvbiBmYWlsZWQuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRv
clV0aWxzLm1tCmluZGV4IDc2ZTMzYTczODY3YmM0ZjdlY2Y3YmNkNjZjMDhlYWM1NmVmNjBmMWEu
LjNmMDBhNTBhNzllZjZmMTM0NzEwNWI0ZWY3ODY0YTYxY2MyMDQ2ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAgLTEwNCw3
ICsxMDQsNyBAQCBTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBw
cml2YXRlS2V5KQogICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAg
ICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIE5T
RGF0YSAqbnNQcml2YXRlS2V5UmVwID0gKE5TRGF0YSAqKXByaXZhdGVLZXlSZXAuZ2V0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1Zp
cnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MTUwZmU0MmNkNDY3NjljNTM2NjA5MWQ2ZjRmZjRjMzFlYTZmYzVmNS4uYTdkMGI1MDAxZTI0ZmUx
NmVhZTI4ZmM4MzUzOGVkOTU5YjgzNWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFZpcnR1YWxI
aWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgQ0JPUlZhbHVlOjpNYXBW
YWx1ZSByZXNwb25zZTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9S
VmFsdWUoIm5vbmUiKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgyKV0gPSBDQk9S
VmFsdWUoYXV0aGVudGljYXRvckRhdGEpOwotICAgICAgICAgICAgYXV0byBhdHRPYmogPSBidWls
ZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCAiIiwgeyB9LCBBdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKKyAgICAgICAgICAgIGF1dG8gYXR0
T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgU3Ry
aW5nIHsgZW1wdHlTdHJpbmcoKSB9LCB7IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6Ok5vbmUpOwogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDMpXSA9IENCT1JWYWx1
ZShhdHRPYmopOwogICAgICAgICAgICAgYXV0byBwYXlsb2FkID0gQ0JPUldyaXRlcjo6d3JpdGUo
Q0JPUlZhbHVlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVx
dWVzdCgpCiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1
dGhEYXRhKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUo
c2lnbmF0dXJlRm9yUHJpdmF0ZUtleShrZXksIGF1dGhEYXRhLCBjbGllbnREYXRhSGFzaCkpOwog
ICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwudXNlckhhbmRsZSkKLSAgICAgICAgICAgICAgICBy
ZXNwb25zZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3Jl
ZGVudGlhbC51c2VySGFuZGxlLCAiIiwgIiIpKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZVtD
Qk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51
c2VySGFuZGxlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgICAgICBy
ZXNwb25zZVtDQk9SVmFsdWUoNSldID0gQ0JPUlZhbHVlKChpbnQ2NF90KW1hdGNoaW5nQ3JlZGVu
dGlhbHMuc2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6Ondy
aXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCA4MGRjYzlmNmJmNWYwNWU0NzdlNmVkZjA0M2MwMTQ0NDhmMTUxNmM1Li5l
OGQwZmY5NTc5ZmQyODllNWRiYzU2N2IwMzYxZDAxN2RlMTI3OTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVx
dWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAo
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIiB9KTsKKyAg
ICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxs
ZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwogICAgIH07CiAgICAgCiAgICAgaWYgKCFkYXRhLnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3Bw
CmluZGV4IGYxYjkwZDNmYjZiNDUwOGQ2YTNmZmNkZDY3OTFiODliYTdlMDRjZjIuLjhhMzkzY2Vj
ZWI2NGE1MzgzNTg4ODVmYzRiMGViODJkNGVhYzQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgV2ViUGFnZUdyb3Vw
RGF0YSBwYWdlR3JvdXBEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIC8vIElmIGl0IHR1
cm5zIG91dCB0aGF0IGl0J3Mgd3JvbmcsIHdlIGNhbiBjaGFuZ2UgaXQgdG8gdG8gIldlYktpdDIu
IiBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsRGVidWdLZXlQcmVmaXggZnJvbSBXZWJQcmVmZXJl
bmNlcy4KIFdlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikKICAgICA6IG1fZGF0YShwYWdlR3JvdXBEYXRhKGlkZW50aWZpZXIpKQotICAgICwgbV9wcmVm
ZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKG1fZGF0YS5p
ZGVudGlmaWVyLCAiLldlYktpdDIiLCAiV2ViS2l0Mi4iKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmll
ciwgIi5XZWJLaXQyIl9zLCAiV2ViS2l0Mi4iX3MpKQogICAgICwgbV91c2VyQ29udGVudENvbnRy
b2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQogewogICAgIHdl
YlBhZ2VHcm91cE1hcCgpLnNldChtX2RhdGEucGFnZUdyb3VwSUQsIHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGZlMjExMDhkZDE5OTM3MDFlZDJi
NGE3ODhhYTBiNjgzZTlkYzViNS4uOTRkMjNjMmI5ODZhZDBmOWNjZDM3YzVmODQzODRlN2I5NGRk
NmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTEx
MSw3ICsxMTExMSw3IEBAIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlCiB7CiAgICAgYXV0byBjYXB0
dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURl
dmljZSgpOwogICAgIGlmICghY2FwdHVyZURldmljZSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVT
b3VyY2VPckVycm9yIHsgIk5vIGRldmljZSBpcyBhdmFpbGFibGUgZm9yIGNhcHR1cmUiIH07Cisg
ICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxh
YmxlIGZvciBjYXB0dXJlIl9zIH07CiAKICAgICBpZiAocHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVk
aW9JbkdQVVByb2Nlc3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JF
cnJvciB7IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRl
KG1fcHJvY2Vzcy0+ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlcigpLCAqY2FwdHVyZURldmljZSwgbV93ZWJQYWdlSUQpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMmYxNjgxNzQ2NTRmNjU2ODAz
OGE5M2I4YjZhZGI1YjE3NGUzZDI3Mi4uMWIyYjg1MWU5NzI0YWM1MGZlMzk4ZjkwNGZiM2VjNTdh
ZTUwOWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmICghc19pbnZhbGlk
TWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBzX2ludmFsaWRNZXNzYWdl
Q2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSkpLnB0cigpKSk7CisgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3Ry
aW5nOjpjcmVhdGUoU3RyaW5nIHsgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpIH0pLnB0cigpKSk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNp
b25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGJkYzhhNDMxY2Q1MzQ0NzA4NDVkYTVkYjBmYzE1MmU5YTY3NjBmMDkuLjU3ODBlNmUzYjI1YjM5
ODVhOTQ4ZDM4YzU2NmM5YWQzNzMyMzljYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTU5LDE5ICs1NTksMTkgQEAgV2ViUGFnZVByb3h5KiBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1By
b2Nlc3NlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAg
ICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRh
U2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7CisgICAgICAgIHBh
Z2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmlu
aXNoZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAg
ICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNj
YW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdl
LnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJl
Z2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNG
aW5pc2hlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAg
ICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRh
RGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAg
ICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVs
ZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTc4OSw3ICsx
Nzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0gV2Vh
a1B0ciB7IHRhcmdldFBhZ2UgfV0oKSB7Ci0gICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQ
YWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENh
cHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJu
IHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hS
ZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlkIl9z
IH07CiAgICAgfTsKICAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI+KCpjb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIFdURk1vdmUo
cGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlKSk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDMwOWE3NTQ0YjY0MzliYjRhZjc4MTVl
MjY3MDE5MThmNWZmODIzOGIuLjkwOTE3NTFiZmNkMTY3YTRhZTkzZDQ5YjU5Nzk4NmFlMTZmZTNm
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3OCwyMiArMjc4
LDIyIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOworICAgIHJldHVybiBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIl9zKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9y
eSgpCiB7Ci0gICAgYXV0byBkaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiRGVmYXVsdCIpOworICAgIGF1dG8gZGlyZWN0b3J5ID0gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRlZmF1bHQiX3MpOwogCiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBvbGQgc3RvcmFnZSBkaXJlY3Rv
cnksIGFuZCB0aGVyZSBtaWdodCBiZSBmaWxlcyBsZWZ0IGhlcmUuCi0gICAgICAgIGF1dG8gb2xk
RGlyZWN0b3J5ID0gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlN0b3Jh
Z2UiLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICAgICAgYXV0byBvbGREaXJlY3Rv
cnkgPSBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU3RvcmFnZSJfcywg
U2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiAgICAgICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgICAgICBOU0FycmF5
ICpmaWxlcyA9IFtmaWxlTWFuYWdlciBjb250ZW50c09mRGlyZWN0b3J5QXRQYXRoOm9sZERpcmVj
dG9yeSBlcnJvcjowXTsKICAgICAgICAgaWYgKGZpbGVzKSB7CkBAIC0zMTQsNjMgKzMxNCw2MyBA
QCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKQogewotICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQWx0ZXJuYXRpdmVTZXJ2
aWNlcyIsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOworICAgIHJldHVybiBjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQWx0ZXJuYXRpdmVTZXJ2aWNlcyJfcywgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKKyAgICByZXR1cm4gdGVtcERp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSJfcyk7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiSW5kZXhlZERCIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVkREIiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2Vydmlj
ZVdvcmtlcnMiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIlNlcnZpY2VXb3JrZXJzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIik7CisgICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJMb2Nh
bFN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlzIik7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiX3MpOwog
fQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJEZXZpY2VJZEhhc2hTYWx0cyIpOworICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiRGV2aWNlSWRIYXNoU2Fs
dHMiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIl9zKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkK
IHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiX3Mp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIFNob3VsZENyZWF0ZURpcmVjdG9y
eTo6Tm8pOworICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJKYXZhU2NyaXB0Q29yZURlYnVnIl9zLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKIH0K
IAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB0
ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNb2RlbEVsZW1lbnQiLCBTaG91
bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiTW9kZWxFbGVtZW50Il9zLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6
Ok5vKTsKIH0KICNlbmRpZgogCkBAIC00MDAsNyArNDAwLDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBkaXIKICAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAgICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0
ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOCh1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwog
fQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJl
Y3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQpAQCAtNDI4LDcgKzQyOCw3IEBAIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpCiAgICAgICAgICYmICFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6
WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKIAotICAgIHJldHVybiB1cmwuYWJz
b2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgodXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKQEAgLTQ1
Nyw3ICs0NTcsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaQogICAgIGlmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAK
LSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDg5ZmUzZmMwMzBhYmM3ZTI2Y2I4ZmIxNTQyMmU3MDllODFh
MDY3MzUuLjA0MjE5OTFhM2E0MDBjZTU3NTczYjYwZTQyYmE5ODRjZDQ5YmVjYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRj
aERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFhbGxvd3NXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmln
aW5zKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGhvc3RTdHJpbmcgPSBlbnRyeS5vcmlnaW4uaG9zdC5pc0VtcHR5KCkgPyAi
IiA6IG1ha2VTdHJpbmcoIiAiLCBlbnRyeS5vcmlnaW4uaG9zdCk7CisgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyBob3N0U3RyaW5nID0gZW50cnkub3JpZ2luLmhvc3QuaXNFbXB0eSgpID8gZW1w
dHlTdHJpbmcoKSA6IG1ha2VTdHJpbmcoIiAiLCBlbnRyeS5vcmlnaW4uaG9zdCk7CiAgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gbWFrZVN0cmluZyhlbnRyeS5vcmlnaW4ucHJvdG9j
b2wsIGhvc3RTdHJpbmcpOwogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXgg
NmQzYWUwZTA1YjQ4YmM2ZThmZWVhNDFiMmVmNzFkMWIwMzIyZDJlNS4uZjE0MTliNzQ5NzhlZTdl
NDk3Yjg5NmQyMDdiMzc0ODRiOGRiMTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xMjksNyArMTI5
LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgZm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUo
d2VicnRjOjpWaWRlb0NvZGVjVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gIlZQOSJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICJIMjY0IjsKKyAgICAgICAgcmV0dXJuICJIMjY0Il9zOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAppbmRleCBlMTliMWUwMzI0MGM3NWE4M2M1OTk0NzJhZTJlZGU0NmRi
ZmM3MWFiLi4zYjg4MzU1MmJiMjU4YjA1OTM1MTRiNWM1NTM1ZGVjNjA2NjYyNGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNjE3LDExICs2MTcsMTEgQEAgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYg
dGV4dCwgaW50IGYKICAgICAgICAgYXV0byogaGlnaGxpZ2h0RGF0YUFycmF5ID0gV2ViS2l0Ojp0
b0ltcGwoaGlnaGxpZ2h0RGF0YSk7CiAgICAgICAgIGhpZ2hsaWdodHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShoaWdobGlnaHREYXRhQXJyYXktPnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byBk
aWN0aW9uYXJ5IDogaGlnaGxpZ2h0RGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRpY3Rp
b25hcnk+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDxB
UEk6OlVJbnQ2NCo+KGRpY3Rpb25hcnktPmdldCgiZnJvbSIpKS0+dmFsdWUoKTsKKyAgICAgICAg
ICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25h
cnktPmdldCgiZnJvbSJfcykpLT52YWx1ZSgpOwogICAgICAgICAgICAgaGlnaGxpZ2h0cy51bmNo
ZWNrZWRBcHBlbmQoewogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFy
dE9mZnNldCksCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zm
c2V0ICsgc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCIp
KS0+dmFsdWUoKSksCi0gICAgICAgICAgICAgICAgV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNv
bG9yV2l0aG91dENvbnRleHQoc3RhdGljX2Nhc3Q8QVBJOjpTdHJpbmcqPihkaWN0aW9uYXJ5LT5n
ZXQoImNvbG9yIikpLT5zdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhcnRPZmZzZXQgKyBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25hcnkt
PmdldCgibGVuZ3RoIl9zKSktPnZhbHVlKCkpLAorICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0PEFQSTo6U3RyaW5n
Kj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciJfcykpLT5zdHJpbmcoKSkKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlYmM1M2ViZmE5MTA5YzQ5MTRiODlk
NzQ5YTA0YzBmNWRjZDE2N2YzLi5iNGRjYWNmZTA1ODE2OWE5MmY2YTFmODM1OGRhNWRiMTVlNWJi
MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5l
bDo6aW5jcmVhc2VCdWZmZXJlZEFtb3VudChzaXplX3QgYnl0ZUxlbmd0aCkKICAgICBDaGVja2Vk
U2l6ZSBjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQgPSBtX2J1ZmZlcmVkQW1vdW50OwogICAgIGNo
ZWNrZWROZXdCdWZmZXJlZEFtb3VudCArPSBieXRlTGVuZ3RoOwogICAgIGlmIChVTkxJS0VMWShj
aGVja2VkTmV3QnVmZmVyZWRBbW91bnQuaGFzT3ZlcmZsb3dlZCgpKSkgewotICAgICAgICBmYWls
KCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWU6IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFj
ZSIpOworICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWU6IGJ1ZmZl
ciBoYXMgbm8gbW9yZSBzcGFjZSJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCmluZGV4IGNlYmQ5N2FhZDhjYWIyNWY2Y2VkZTBlM2U3MDc5NWZjZjcyNzAzNGUuLjc4
ZDUwZjVkZjBkYWYwYmVmY2M2NDI4ZDQ5NGQ5OGYyODE2MjIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkK
ICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFj
ayA6IHN0cmVhbS0+bV9zZW5kSGFuZHNoYWtlQ2FsbGJhY2tzLnZhbHVlcygpKQogICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgc3RyZWFtLT5tX2NsaWVudC5kaWRG
YWlsU29ja2V0U3RyZWFtKCpzdHJlYW0sIFNvY2tldFN0cmVhbUVycm9yKDAsIHsgfSwgIk5ldHdv
cmsgcHJvY2VzcyBjcmFzaGVkLiIpKTsKKyAgICAgICAgc3RyZWFtLT5tX2NsaWVudC5kaWRGYWls
U29ja2V0U3RyZWFtKCpzdHJlYW0sIFNvY2tldFN0cmVhbUVycm9yKDAsIHsgfSwgIk5ldHdvcmsg
cHJvY2VzcyBjcmFzaGVkLiJfcykpOwogICAgICAgICBzdHJlYW0gPSBudWxscHRyOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KaW5kZXggNzllMzg1YmUwMjRlYmJmMTM2ZGMyN2RkY2VhYjQ5NDYyZTE1YzA1Zi4uYTQ4OTFi
OTJkYWZjZDQ2NjY0OGYxNmRjMTMzNjI2MGFiZjEyYzg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMjEsNyArMTIxLDcg
QEAgQGVuZAogLy8gU2V0IG92ZXJmbG93OiBoaWRkZW4gb24gdGhlIGFubm90YXRpb24gY29udGFp
bmVyIHNvIDxpbnB1dD4gZWxlbWVudHMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgZG9uJ3Qgc2hvdwog
Ly8gc2Nyb2xsYmFycyBvbiB0aGUgYm9keS4gV2UgY2FuJ3QgYWRkIGFubm90YXRpb25zIGRpcmVj
dGx5IHRvIHRoZSBib2R5LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gb24gdGhlIGJvZHkKIC8v
IHdpbGwgYnJlYWsgcnViYmVyLWJhbmRpbmcuCi1zdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlv
blN0eWxlID0KK3N0YXRpYyBjb25zdGV4cHIgYXV0byBhbm5vdGF0aW9uU3R5bGUgPQogIiNhbm5v
dGF0aW9uQ29udGFpbmVyIHsiCiAiICAgIG92ZXJmbG93OiBoaWRkZW47ICIKICIgICAgcG9zaXRp
b246IGFic29sdXRlOyAiCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFu
bm90YXRpb25TdHlsZSA9CiAiICAgIHBvc2l0aW9uOiBzdGF0aWM7ICIKICIgICAgd2lkdGg6IDIw
MHB4OyAiCiAiICAgIG1hcmdpbi10b3A6IDEwMHB4OyAiCi0ifSAiOworIn0gIl9zOwogCiAvLyBJ
biBub24tY29udGludW91cyBtb2RlcywgYSBzaW5nbGUgc2Nyb2xsIGV2ZW50IHdpdGggYSBtYWdu
aXR1ZGUgb2YgPj0gMjBweAogLy8gd2lsbCBqdW1wIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIHBh
Z2UsIHRvIG1hdGNoIFBERktpdCBiZWhhdmlvci4KQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIFBE
RlBsdWdpbjo6cmVjZWl2ZWROb25MaW5lYXJpemVkUERGU2VudGluZWwoKQogCiAgICAgaWYgKCFp
c01haW5SdW5Mb29wKCkpIHsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgICAgIHBkZkxvZygiRGlz
YWJsaW5nIGluY3JlbWVudGFsIFBERiBsb2FkaW5nIG9uIGJhY2tncm91bmQgdGhyZWFkIik7Cisg
ICAgICAgIHBkZkxvZygiRGlzYWJsaW5nIGluY3JlbWVudGFsIFBERiBsb2FkaW5nIG9uIGJhY2tn
cm91bmQgdGhyZWFkIl9zKTsKICNlbmRpZgogICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIHJlY2VpdmVk
Tm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CkBAIC05NjEsNyArOTYxLDcgQEAgdm9pZCBQREZQ
bHVnaW46OnRocmVhZEVudHJ5KFJlZjxQREZQbHVnaW4+JiYgcHJvdGVjdGVkUGx1Z2luKQogICAg
IGZpcnN0UGFnZVNlbWFwaG9yZS53YWl0KCk7CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgcGRm
TG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiKTsKKyAgICBwZGZMb2coIkZpbmlz
aGVkIHByZWxvYWRpbmcgZmlyc3QgcGFnZSJfcyk7CiAjZW5kaWYKIH0KIApAQCAtMTA1NSw3ICsx
MDU1LDcgQEAgdm9pZCBQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KCkK
ICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAogI2lmICFMT0dfRElTQUJMRUQKLSAgICBw
ZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWQiKTsKKyAg
ICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWQiX3Mp
OwogI2VuZGlmCiAKICAgICBtX3BkZkRvY3VtZW50ID0gV1RGTW92ZShtX2JhY2tncm91bmRUaHJl
YWREb2N1bWVudCk7CkBAIC0xMjgyLDEzICsxMjgyLDEzIEBAIFBsdWdpbkluZm8gUERGUGx1Z2lu
OjpwbHVnaW5JbmZvKCkKICAgICBpbmZvLmJ1bmRsZUlkZW50aWZpZXIgPSAiY29tLmFwcGxlLndl
YmtpdC5idWlsdGlucGRmcGx1Z2luIl9zOwogCiAgICAgTWltZUNsYXNzSW5mbyBwZGZNaW1lQ2xh
c3NJbmZvOwotICAgIHBkZk1pbWVDbGFzc0luZm8udHlwZSA9ICJhcHBsaWNhdGlvbi9wZGYiOwor
ICAgIHBkZk1pbWVDbGFzc0luZm8udHlwZSA9ICJhcHBsaWNhdGlvbi9wZGYiX3M7CiAgICAgcGRm
TWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKICAgICBw
ZGZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5kKCJwZGYiKTsKICAgICBpbmZvLm1pbWVz
LmFwcGVuZChwZGZNaW1lQ2xhc3NJbmZvKTsKIAogICAgIE1pbWVDbGFzc0luZm8gdGV4dFBERk1p
bWVDbGFzc0luZm87Ci0gICAgdGV4dFBERk1pbWVDbGFzc0luZm8udHlwZSA9ICJ0ZXh0L3BkZiI7
CisgICAgdGV4dFBERk1pbWVDbGFzc0luZm8udHlwZSA9ICJ0ZXh0L3BkZiJfczsKICAgICB0ZXh0
UERGTWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKICAg
ICB0ZXh0UERGTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIik7CiAgICAgaW5m
by5taW1lcy5hcHBlbmQodGV4dFBERk1pbWVDbGFzc0luZm8pOwpAQCAtMTU1Miw3ICsxNTUyLDcg
QEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5T
VVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNT
dHJpbmcqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAg
IGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmlu
ZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CisgICAgYXV0byByZXNvdXJjZSA9
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQo
KSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIl9zLCBTdHJpbmcoKSwgU3RyaW5nKCks
IHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKIH0KIApAQCAtMTY4OCwxMCArMTY4OCwxMCBAQCB2b2lkIFBERlBsdWdpbjo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICBtX3N1
Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7CiAKICAgICBpZiAobV9zdWdnZXN0
ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdn
ZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShuaWwsICJhcHBsaWNhdGlvbi9wZGYiKTsKKyAgICAg
ICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKG5p
bCwgImFwcGxpY2F0aW9uL3BkZiJfcyk7CiAKICAgICBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUu
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKQotICAgICAgICBtX3N1Z2dlc3RlZEZp
bGVuYW1lLmFwcGVuZCgiLnBkZiIpOworICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lLmFwcGVu
ZCgiLnBkZiJfcyk7CiB9CiAgICAgCiB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdCwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBib29sIFBERlBsdWdpbjo6aW5p
dGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIG1fc291cmNlVVJM
ID0gcGFyYW1ldGVycy51cmw7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLnNob3VsZFVzZU1hbnVhbExv
YWRlciAmJiAhcGFyYW1ldGVycy51cmwuaXNFbXB0eSgpKQotICAgICAgICBjb250cm9sbGVyKCkt
PmxvYWRVUkwocGRmRG9jdW1lbnRSZXF1ZXN0SUQsICJHRVQiLCBwYXJhbWV0ZXJzLnVybC5zdHJp
bmcoKSwgU3RyaW5nKCksIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNl
KTsKKyAgICAgICAgY29udHJvbGxlcigpLT5sb2FkVVJMKHBkZkRvY3VtZW50UmVxdWVzdElELCAi
R0VUIl9zLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgU3RyaW5nKCksIEhUVFBIZWFkZXJNYXAo
KSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlKTsKIAogICAgIGNvbnRyb2xsZXIoKS0+ZGlkSW5p
dGlhbGl6ZVBsdWdpbigpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tCmluZGV4IGQ3NDVmMDIwOTQ4NGY0ZWMyYjc0YTU1Mzc0ZDFiY2U5MWNhNjc4NWQuLjdk
NDNmYTAyMWM1YTIwZDY1NTQwOGU3OGJhOWJlZmY2NTQ3MDc4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4
dEFubm90YXRpb24ubW0KQEAgLTU0LDE1ICs1NCwxNSBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNz
c0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KE5TVGV4dEFsaWdubWVudCBhbGlnbm1l
bgogewogICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRM
ZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAg
ICAgY2FzZSBOU1RleHRBbGlnbm1lbnRSaWdodDoKLSAgICAgICAgcmV0dXJuICJyaWdodCI7Cisg
ICAgICAgIHJldHVybiAicmlnaHQiX3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6
Ci0gICAgICAgIHJldHVybiAiY2VudGVyIjsKKyAgICAgICAgcmV0dXJuICJjZW50ZXIiX3M7CiAg
ICAgY2FzZSBOU1RleHRBbGlnbm1lbnRKdXN0aWZpZWQ6Ci0gICAgICAgIHJldHVybiAianVzdGlm
eSI7CisgICAgICAgIHJldHVybiAianVzdGlmeSJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVu
dE5hdHVyYWw6Ci0gICAgICAgIHJldHVybiAiLXdlYmtpdC1zdGFydCI7CisgICAgICAgIHJldHVy
biAiLXdlYmtpdC1zdGFydCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCAwMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAz
MWI3ZWFlLi40NWEwMTFiZTU1NjYyMDdjOWNhYzQ1ZjllZjYwOTJjZTgwMTUwMDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTIz
MSw3ICsxMjMxLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpsb2FkVVJMKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWh0dHBCb2R5
LmlzRW1wdHkoKSkgewogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoaHR0cEJvZHkuZGF0YSgpLCBodHRwQm9keS5z
aXplKCkpKTsKICAgICAgICAgaWYgKGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
aHR0cENvbnRlbnRUeXBlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQ29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZCIpOworICAgICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS5zZXRIVFRQQ29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
ZW5jb2RlZCJfcyk7CiAgICAgfQogCiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xp
Y3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgZnJhbWUo
KS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggMGUxMTdhMGVjNjE5MDBkMTUwYWRiMWRl
OWM2ODIyOWE4ZTdhYjU3MC4uZjViZDg5ZjFjMzU0Njk0OTdiMjliNTY5ZTRiOGQyNGIzYmYwYzFj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VD
cmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXIKIAogICAgIGlmICghaXNX
ZWJCcm93c2VyKCkpIHsKICAgICAgICAgV0VCQVVUSE5fUkVMRUFTRV9MT0dfRVJST1IoIm1ha2VD
cmVkZW50aWFsOiBUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIEFQSSBpcyBvbmx5
IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIu
d2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIpOwotICAgICAgICBoYW5kbGVyKHsgfSwgc3RhdGlj
X2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRpb25EYXRhIHsgTm90QWxs
b3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMgb25s
eSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVy
LndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iIH0pOworICAgICAgICBoYW5kbGVyKHsgfSwgc3Rh
dGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRpb25EYXRhIHsgTm90
QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMg
b25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxv
cGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywg
aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdAogCiAgICAgaWYgKCFpc1dlYkJyb3dzZXIo
KSkgewogICAgICAgICBXRUJBVVRITl9SRUxFQVNFX0xPR19FUlJPUigiZ2V0QXNzZXJ0aW9uOiBU
aGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5nZXQnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBh
cHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVu
dGl0bGVtZW50LiIpOwotICAgICAgICBoYW5kbGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhl
ICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBw
bGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRp
dGxlbWVudC4iIH0pOworICAgICAgICBoYW5kbGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhl
ICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBw
bGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRp
dGxlbWVudC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCmluZGV4IGJhMjFlNGQ4YjQ3NGQ1ZGEwYTFlYmM0NzdhMTAzZDgyOWM1
ZWExMDcuLjQyNzVlYmRjNmUwOWVhMTZhNTNkOGE3N2U2ZTgxOGFhYzY2YTM2ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC02Niw3ICs2
Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZUhhbmRsZShX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6aXNTYW1lRW50cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgb3RoZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlNhbWVFbnRy
eUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBX
ZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5r
bm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgaWYgKGlkZW50aWZp
ZXIgPT0gb3RoZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjppc1NhbWVFbnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpCiB2b2lkIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZUhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgY3JlYXRlSWZOZWNlc3NhcnksIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4
Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBX
ZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpHZXRGaWxlSGFuZGxlKGlkZW50aWZpZXIsIG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuYW1lLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbgogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldERpcmVj
dG9yeUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnksIFdlYkNvcmU6OkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwg
IkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9u
IGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXREaXJlY3RvcnlIYW5kbGUoaWRlbnRp
ZmllciwgbmFtZSwgY3JlYXRlSWZOZWNlc3NhcnkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIG5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBA
IC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Omdl
dERpcmVjdG9yeUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGwKIHZvaWQgV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGVsZXRl
UmVjdXJzaXZlbHksIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJD
b3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93
bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVtb3Zl
RW50cnkoaWRlbnRpZmllciwgbmFtZSwgZGVsZXRlUmVjdXJzaXZlbHkpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25Pcihl
cnJvcikpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZW1vdmVFbnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpCiB2b2lk
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBvdGhlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6UmVzb2x2ZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3Qi
IH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9u
IHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6UmVzb2x2ZShpZGVudGlmaWVyLCBvdGhlcklkZW50aWZpZXIpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllcgogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Omdl
dEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3Ry
aW5nQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlv
bikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7
IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpV
bmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpH
ZXRGaWxlKGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Z2V0RmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcgogdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAi
Q29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24g
aXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoaWRl
bnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1ICiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25v
d25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJD
b25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbG9zZVN5bmNBY2Nlc3NI
YW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYQogdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6R2V0SGFuZGxlTmFtZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0
IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlv
biB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldEhhbmRsZU5hbWVzKGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZShX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVu
a25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3Is
ICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRIYW5kbGUoaWRl
bnRpZmllciwgbmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lk
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
Om1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5ld05hbWUsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlv
biBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJf
cyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok1vdmUoaWRlbnRpZmllciwgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBuZXdOYW1lKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50LmNwcAppbmRleCBjNTdlNzgwOWIyZWUxNjZkZDZmNjg4YmUyMmE4NTljN2RhZGRhOGZh
Li4wYzVkZjU0ZGM0NzNkMWE2ZjM2ZDI4ODM5YTViZjExZWQ2ODMxMjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcApAQCAtNzcsOSArNzcsOSBAQCB2b2lkIFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsoUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZQogICAgIH07CiAKICAgICBhdXRvIHZvaWNlID0gdXR0ZXJhbmNlLT52b2lj
ZSgpOwotICAgIGF1dG8gdm9pY2VVUkkgPSB2b2ljZSA/IHZvaWNlLT52b2ljZVVSSSgpIDogIiI7
Ci0gICAgYXV0byBuYW1lID0gdm9pY2UgPyB2b2ljZS0+bmFtZSgpIDogIiI7Ci0gICAgYXV0byBs
YW5nID0gdm9pY2UgPyB2b2ljZS0+bGFuZygpIDogIiI7CisgICAgYXV0byB2b2ljZVVSSSA9IHZv
aWNlID8gdm9pY2UtPnZvaWNlVVJJKCkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gbmFtZSA9
IHZvaWNlID8gdm9pY2UtPm5hbWUoKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byBsYW5nID0g
dm9pY2UgPyB2b2ljZS0+bGFuZygpIDogZW1wdHlTdHJpbmcoKTsKICAgICBhdXRvIGxvY2FsU2Vy
dmljZSA9IHZvaWNlID8gdm9pY2UtPmxvY2FsU2VydmljZSgpIDogZmFsc2U7CiAgICAgYXV0byBp
c0RlZmF1bHQgPSB2b2ljZSA/IHZvaWNlLT5pc0RlZmF1bHQoKSA6IGZhbHNlOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
ZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCBhYWM2YjNmYTEwNzBhN2EzYzA1ZGJh
NzcyN2Y0MGEzODFmYTQ4MTYzLi5hZmIxYjJkOTFkYWYyNzQ5ODBmMzcxY2JlN2RmNTE5ZDJmYzI1
MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAtNjksNyArNjksNyBA
QCBzdGF0aWMgdm9pZCBjaGFuZ2VXb3JkQ2FzZShXZWJQYWdlKiBwYWdlLCBOU1N0cmluZyAqKCpj
aGFuZ2VDYXNlKShOU1N0cmluZyAqKSkKICAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJzZWxl
Y3RXb3JkIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RX
b3JkIl9zKS5leGVjdXRlKCk7CiAKICAgICBOU1N0cmluZyAqc2VsZWN0ZWRTdHJpbmcgPSBmcmFt
ZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
ZWRUZXh0KCkpOwogICAgIHBhZ2UtPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChmcmFtZS5wdHIo
KSwgY2hhbmdlQ2FzZShzZWxlY3RlZFN0cmluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBlZTE2NDVlZjRlMGM4NDQ3
NTc0MDNkMmNkZTUxYWQ0YjExMzAyY2NiLi5kZTgwMTI3ZWIwYmUyM2E4M2FmZDQ1OTNkZWJlZTQ3
YWMzNjM0MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcApAQCAtMjE0MSw3ICsyMTQxLDcgQEAgSlNDOjpKU09iamVjdCogSlNN
ZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2RlcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KgogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm5hbWUiKSwgSlNDOjpKU1ZhbHVlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CiAKLSAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJkZXNjcmlwdGlvbiIpLCBKU0M6OmpzU3RyaW5nKHZtLCBJUEM6OmRlc2Ny
aXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKTsKKyAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXNjcmlwdGlvbiIpLCBKU0M6
OmpzU3RyaW5nKHZtLCBTdHJpbmcgeyBJUEM6OmRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5h
bWUoKSkgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAg
ICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZGVzdGluYXRpb25JRCIpLCBKU0M6OkpTVmFsdWUoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KTsKQEAgLTIyMDQsNyArMjIwNCw3IEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFy
Z3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIG9iamVjdCA9IEpT
Qzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFs
dWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNlbWFwaG9y
ZSIpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCAiU2VtYXBob3Jl
Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwog
ICAgIGF1dG8ganNWYWx1ZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCBXZWJLaXQ6OklQQ1Rlc3RpbmdB
UEk6OkpTSVBDU2VtYXBob3JlOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpLT5jcmVhdGVKU1dyYXBw
ZXIodG9SZWYoZ2xvYmFsT2JqZWN0KSkpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSJfcyksIGpzVmFsdWUpOwpAQCAtMjIy
MSw3ICsyMjIxLDcgQEAgdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKLSAg
ICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCAiU2hhcmVkTWVtb3J5IikpOwor
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJTaGFyZWRNZW1vcnkiX3Mp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKICAg
ICBhdXRvIHByb3RlY3Rpb24gPSBQcm90ZWN0aW9uOjpSZWFkV3JpdGU7CkBAIC0yMjQwLDcgKzIy
NDAsNyBAQCB0ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkYXRhU2l6ZSJfcyksIEpTQzo6SlNW
YWx1ZSh2YWx1ZS5kYXRhU2l6ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
Qzo6SlNWYWx1ZSgpKTsKIAotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0aW9uIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlID8gIlJlYWRXcml0ZSIg
OiAiUmVhZE9ubHkiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInByb3RlY3Rpb24iX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgcHJvdGVjdGlvbiA9PSBQcm90ZWN0aW9uOjpSZWFkV3JpdGUgPyAiUmVhZFdyaXRlIl9z
IDogIlJlYWRPbmx5Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpK
U1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA0MGI5OTczMjAwNzgyNWU2NjgzZTYzNjgw
NDNmNjJiNmI1OTAzMzdiLi5iM2JlZTI4MmVjY2M5ZDFkNjcyY2IxZWY3ZDg2ZDdlMGQzODU3MzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC00OTYsNyArNDk2LDcgQEAgUmVmPEFQSTo6QXJyYXk+IFdlYkZyYW1lOjpjaGlsZEZyYW1lcygp
CiBTdHJpbmcgV2ViRnJhbWU6OmxheWVyVHJlZUFzVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAogICAgIHJldHVybiBtX2NvcmVGcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmNvbXBv
c2l0b3IoKS5sYXllclRyZWVBc1RleHQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQppbmRleCA4NWY1YTQ4YWFlZmNmM2I2MzA4YWY2YzRmN2I0NTFmMGIyZmEx
NWNlLi5iMmM4NzJjNzAyNDNhZTlkYjFjN2ExZDgyZTVlNjNiMWFmNDM0NThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04MTAsMTEgKzgxMCwxMiBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGp1c3RUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIGZyYW1lVmlldy0+cmVuZGVyVmlldygpLT5sYXll
cigpLT5iYWNraW5nKCktPnRpbGVkQmFja2luZygpLT5wcmVwb3B1bGF0ZVJlY3QodGlsZUNvdmVy
YWdlUmVjdCk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gdHJhbnNp
ZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKFN0cmluZyBrZXlQYXRoKQorc3RhdGljIFJl
dGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktl
eVBhdGgoQVNDSUlMaXRlcmFsIGtleVBhdGgpCiB7CiAgICAgY29uc3QgZmxvYXQgdHJhbnNpZW50
Wm9vbVNuYXBCYWNrRHVyYXRpb24gPSAwLjI1OwogCi0gICAgUmV0YWluUHRyPENBQmFzaWNBbmlt
YXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRo
OmtleVBhdGhdOworICAgIGF1dG8gbnNLZXlQYXRoID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aEJ5dGVzOmtleVBhdGguY2hhcmFjdGVycygpIGxlbmd0aDprZXlQYXRoLmxlbmd0
aCgpIGVuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddKTsKKyAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gYW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9u
V2l0aEtleVBhdGg6bnNLZXlQYXRoLmdldCgpXTsKICAgICBbYW5pbWF0aW9uIHNldER1cmF0aW9u
OnRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uXTsKICAgICBbYW5pbWF0aW9uIHNldEZpbGxN
b2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFthbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29t
cGxldGlvbjpmYWxzZV07CkBAIC04NTMsNyArODU0LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9p
bnQKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnN0cmFpbmVkT3JpZ2luLngoKSwgY29uc3Ry
YWluZWRPcmlnaW4ueSgpKTsKICAgICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpOwogCi0gICAgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb25DQSA9IHRyYW5zaWVu
dFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgidHJhbnNmb3JtIik7CisgICAgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb25DQSA9IHRyYW5zaWVudFpvb21T
bmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgidHJhbnNmb3JtIl9zKTsKICAgICBhdXRvIHJlbmRlclZp
ZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3
QW5pbWF0aW9uQ0EuZ2V0KCkpOwogICAgIHJlbmRlclZpZXdBbmltYXRpb24tPnNldFRvVmFsdWUo
dHJhbnNmb3JtKTsKIApAQCAtODY2LDcgKzg2Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50
CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29t
cGxldGlvbkJsb2NrOlt6b29tTGF5ZXIsIHNoYWRvd0NBTGF5ZXIsIHBhZ2UsIHNjYWxlLCBvcmln
aW5dICgpIHsKLSAgICAgICAgem9vbUxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoInRyYW5z
aWVudFpvb21Db21taXQiKTsKKyAgICAgICAgem9vbUxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JL
ZXkoInRyYW5zaWVudFpvb21Db21taXQiX3MpOwogICAgICAgICBpZiAoc2hhZG93Q0FMYXllcikK
ICAgICAgICAgICAgIFtzaGFkb3dDQUxheWVyIHJlbW92ZUFsbEFuaW1hdGlvbnNdOwogCkBAIC04
NzQsMTcgKzg3NSwxNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21t
aXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgICAgICAgICAgZHJh
d2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShzY2FsZSwgb3JpZ2luKTsKICAgICB9
XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29t
bWl0IiwgcmVuZGVyVmlld0FuaW1hdGlvbi5nZXQoKSk7CisgICAgem9vbUxheWVyLT5hZGRBbmlt
YXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21taXQiX3MsIHJlbmRlclZpZXdBbmltYXRpb24u
Z2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IHNo
YWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUoZnJhbWVWaWV3LCBzY2FsZSk7
CiAgICAgICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0
aENyZWF0ZVdpdGhSZWN0KHNoYWRvd0JvdW5kcywgTlVMTCkpOwogCi0gICAgICAgIFJldGFpblB0
cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dCb3VuZHNBbmltYXRpb24gPSB0cmFuc2llbnRab29t
U25hcEFuaW1hdGlvbkZvcktleVBhdGgoImJvdW5kcyIpOworICAgICAgICBSZXRhaW5QdHI8Q0FC
YXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBB
bmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiX3MpOwogICAgICAgICBbc2hhZG93Qm91bmRzQW5p
bWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpzaGFkb3dCb3VuZHNdXTsK
LSAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd1Bvc2l0aW9uQW5pbWF0
aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJwb3NpdGlvbiIpOwor
ICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UG9zaXRpb25BbmltYXRp
b24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInBvc2l0aW9uIl9zKTsK
ICAgICAgICAgW3NoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFs
dWVXaXRoUG9pbnQ6c2hhZG93TGF5ZXJQb3NpdGlvbkZvckZyYW1lKGZyYW1lVmlldywgY29uc3Ry
YWluZWRPcmlnaW4pXV07Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFk
b3dQYXRoQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJz
aGFkb3dQYXRoIik7CisgICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQ
YXRoQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJzaGFk
b3dQYXRoIl9zKTsKICAgICAgICAgW3NoYWRvd1BhdGhBbmltYXRpb24gc2V0VG9WYWx1ZTooX19i
cmlkZ2UgaWQpc2hhZG93UGF0aC5nZXQoKV07CiAKICAgICAgICAgW3NoYWRvd0NBTGF5ZXIgYWRk
QW5pbWF0aW9uOnNoYWRvd0JvdW5kc0FuaW1hdGlvbi5nZXQoKSBmb3JLZXk6QCJ0cmFuc2llbnRa
b29tQ29tbWl0U2hhZG93Qm91bmRzIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KaW5k
ZXggNDg1NDZmYzE0YTE4OWY3ZjMxM2I5MzllYTBmNTI0YWQ5ZWU2Y2VkMy4uNzYwYjM0YjQzNDQ0
NGRjNjllODY2NDk0ZjNjYTI1YTRhOTU5MmI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkKIAogdm9pZCBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG1lc3NhZ2Up
CiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyht
ZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOwotICAgIGlmIChtZXNzYWdl
TmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byogbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAg
aWYgKCFtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpIHsKKyAgICBpZiAoIXN0cmNtcChtZXNzYWdlTmFtZSwg
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSkgewogI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCiAg
ICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwg
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRh
YmFzZUtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxl
UmVxdWVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQpp
bmRleCAwYzUzZDM1NjA0ZTM0YTY5NGJhYmNmZjNlNjQ3NjU0OGE4ZTEzNDFlLi4wNWFkNjc4YmEz
MGFhM2M3Mjg4ZWE0OTI5ZmRjNDU5MDQzZGZmM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBBcHBCdW5kbGVE
ZWxldGlvblJlcXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBC
dW5kbGUmIGIKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YnJvYWRjYXN0
RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBkZWxldGUgYXBwIGJ1bmRsZTogIiwg
U3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pKSk7CiAKLSAgICBjYWxsQ29tcGxldGlvbkhhbmRs
ZXJBbmRDbGVhbnVwKGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogIiIpOwor
ICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9y
IGRlc2NyaXB0aW9uXSkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
UHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaApp
bmRleCA0NjU1NTMxNTIwNWE0Yjc0NDVkM2U3OTdmYjczZTA2ZTljZWNmOTZhLi42MzVkMGFkODgy
ZTU0ZWRkZDkyYTM5OTY2OTZjOWZiNWEwMGU4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAgdm9pZCBicm9hZGNhc3REZWJ1Z01l
c3NhZ2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOworICAg
IHZvaWQgc2VuZERlYnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKIAogcHJpdmF0ZToKICAgICBDbGll
bnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZDA4YzA0NWIxNGU2MjVlMzcyZTBkMGZi
YmJjZDA2OTRmZjUxMmQzMi4uOGIyMWMxNWJiNjBkZWI2NWViYWYxOTk1NTQxZWQxMDk0MmM2MzE1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1t
CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJ
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3Ry
aW5nKCJUdXJuZWQgRGVidWcgTW9kZSAiLCBtX2RlYnVnTW9kZUVuYWJsZWQgPyAib24iIDogIm9m
ZiIpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3RE
ZWJ1Z01lc3NhZ2UoU3RyaW5nVmlldyBtZXNzYWdlKQogewogICAgIFN0cmluZyBtZXNzYWdlSWRl
bnRpZmllcjsKICAgICBhdXRvIHNpZ25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpi
cm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIERhZW1vbjo6
c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcobWVzc2FnZUlkZW50
aWZpZXIsIG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZERlYnVnTWVzc2FnZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdlIGN1
cnJlbnRseSBzZW5kIHRoZSBkZWJ1ZyBtZXNzYWdlIHR3aWNlLgogICAgIC8vIEFmdGVyIGdldHRp
bmcgYWxsIGRlYnVnIG1lc3NhZ2UgY2xpZW50cyBvbnRvIHRoZSBlbmNvZGVyL2RlY29kZXIgbWVj
aGFuaXNtLCByZW1vdmUgdGhlIG9sZCBzdHlsZSBtZXNzYWdlLgpAQCAtMTUyLDcgKzE1Miw3IEBA
IHZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhkaWN0aW9uYXJ5LmdldCgpLCBX
ZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbERlYnVnTWVzc2FnZUtleSwgbWVzc2FnZS51dGY4KCku
ZGF0YSgpKTsKICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV94cGNDb25uZWN0aW9u
LmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAotICAgIHNlbmREYWVtb25NZXNzYWdlPERhZW1v
bk1lc3NhZ2VUeXBlOjpEZWJ1Z01lc3NhZ2U+KG1lc3NhZ2UpOworICAgIHNlbmREYWVtb25NZXNz
YWdlPERhZW1vbk1lc3NhZ2VUeXBlOjpEZWJ1Z01lc3NhZ2U+KG1lc3NhZ2UudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKTsKIH0KIAogdm9pZCBDbGllbnRDb25uZWN0aW9uOjplbnF1ZXVlQXBwQnVu
ZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4mJiByZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAppbmRleCA5NzgyMzhmNTE3YjBkM2Zi
OTZkOTQwNjMxMTMzZmM4ZTQwYWE0NDk2Li4wNjYyZjEzZTk4Mzk0OTAwYzU0MWZhYmRlOTU2ZTg1
Yzk2NjJkYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODgs
NyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhD
bGllbnRDb25uZWN0aW9uKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwog
ICAgIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlv
biosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodW5zaWduZWQpPiYmKTsKIAotICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcp
OwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMoKTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1
OWVjZjVmMjUwN2M4MGRhYTAwM2JmZTJjOTczNGU0Li5kMWJmNjFlODNhZjBjMzg1Mjg3ZDdiMjVl
OWMyMWJjZThlZDRmZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1
c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1t
CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBEYWVtb246OnJ1bkFmdGVyU3RhcnRpbmdQdXNoU2Vy
dmljZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZnVuY3Rpb24oKTsKIH0KIAot
dm9pZCBEYWVtb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit2b2lkIERhZW1vbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkK
IHsKICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV9jb25uZWN0aW9uTWFwKSB7CiAgICAgICAg
IGlmIChpdGVyYXRvci52YWx1ZS0+ZGVidWdNb2RlSXNFbmFibGVkKCkpCkBAIC00OTUsNyArNDk1
LDcgQEAgdm9pZCBEYWVtb246OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKENsaWVudENvbm5lY3Rpb24qIGNvbm4KIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5k
Tm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHJlcGx5U2VuZGVyKQogewogICAgIGlmICghY2FuUmVnaXN0ZXJGb3JOb3RpZmlj
YXRpb25zKCpjb25uZWN0aW9uKSkgewotICAgICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRl
bGV0ZSBwdXNoIGFuZCBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjog
VW5rbm93biBob3N0IGFwcGxpY2F0aW9uIGNvZGUgc2lnbmluZyBpZGVudGlmaWVyIik7CisgICAg
ICAgIHJlcGx5U2VuZGVyKCJDb3VsZCBub3QgZGVsZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiBy
ZWdpc3RyYXRpb25zIGZvciBjb25uZWN0aW9uOiBVbmtub3duIGhvc3QgYXBwbGljYXRpb24gY29k
ZSBzaWduaW5nIGlkZW50aWZpZXIiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQppbmRleCBkN2E2YjYzZmU0
ZGIyZGViNTBhNWU5ZTE3MTc0MWYxMDg1ZGNhZWQ3Li44MTUxYzYwMWM2MTI4NDhmOTczZmY4OWEx
ZTg3YzYzZWE4ODQ4Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1
c2hEYWVtb25NYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bk1haW4ubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBpbnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsaWJy
YXJ5UGF0aCA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURp
cmVjdG9yeSwgTlNVc2VyRG9tYWluTWFzaywgWUVTKVswXTsKICAgICAgICAgICAgIFN0cmluZyBw
dXNoRGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhs
aWJyYXJ5UGF0aCwgeyAiV2ViS2l0IiwgIldlYlB1c2giLCAiUHVzaERhdGFiYXNlLmRiIiB9KTsK
LSAgICAgICAgICAgIDo6V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2Vy
dmljZShpbmNvbWluZ1B1c2hTZXJ2aWNlTmFtZSwgcHVzaERhdGFiYXNlUGF0aCk7CisgICAgICAg
ICAgICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbigpLnN0YXJ0UHVzaFNlcnZpY2UoU3Ry
aW5nIHsgaW5jb21pbmdQdXNoU2VydmljZU5hbWUgfSwgcHVzaERhdGFiYXNlUGF0aCk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgQ0ZSdW5Mb29wUnVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBiMjAyYjQ0ODA3OGMzZmVhNWJjOTU1
MDgwYWE3ZWVkZTZlY2E3OGE4Li45MTAxYzllYzZjNGZlZDMzYTNiNmFlNzk5ZjgxZjIzYjRhOTdm
YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFs
aXplKCkKIFN0b3JhZ2VUcmFja2VyJiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpCiB7CiAgICAg
aWYgKCFzdG9yYWdlVHJhY2tlcikKLSAgICAgICAgc3RvcmFnZVRyYWNrZXIgPSBuZXcgU3RvcmFn
ZVRyYWNrZXIoIiIpOworICAgICAgICBzdG9yYWdlVHJhY2tlciA9IG5ldyBTdG9yYWdlVHJhY2tl
cihlbXB0eVN0cmluZygpKTsKICAgICBpZiAoc3RvcmFnZVRyYWNrZXItPm1fbmVlZHNJbml0aWFs
aXphdGlvbikKICAgICAgICAgc3RvcmFnZVRyYWNrZXItPmludGVybmFsSW5pdGlhbGl6ZSgpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgw
ZmRjMzdkZmQ5NGY5NWE3YTlkZDFhLi4wMjZkNDg3MDNlMzRjZDc4ZTZkMDM0YWMwMGU2YjdhOTUy
Y2Q4ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTIsOCArNTIsOCBAQAog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KIAotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hl
ZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwotc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0
YWNoRGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluc3BlY3RvclN0YXJ0c0F0dGFj
aGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNo
RGlzYWJsZWQiX3M7CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZv
clByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewpAQCAtOTQsNyArOTQsNyBAQCBib29s
IFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogCiB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxl
ZCkKIHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBk
aXNhYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JB
dHRhY2hEaXNhYmxlZFNldHRpbmcsIGRpc2FibGVkID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWQoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
b3JTdGFydHNBdHRhY2hlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0
b3JTdGFydHNBdHRhY2hlZChib29sIGF0dGFjaGVkKQogewotICAgIHN0b3JlU2V0dGluZyhpbnNw
ZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiIDogImZhbHNlIik7
CisgICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNo
ZWQgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpkZWxldGVJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggNDc5MTZl
NzgxYTI0MzA0MWUxZDU4MjQ4YWJmYWVhYWMwYzU3YmI1OS4uNzk5YTdiNTk1MmIyYjg1Y2I3MGEw
YjAwYzU2MmI5MDE3ODZjMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lk
IEhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6OndyaXRlT2JqZWN0cyhCaW5hcnlQcm9wZXJ0eUxp
c3RPYmplY3RTdHJlYW0mIHN0cgogewogICAgIHNpemVfdCBvdXRlckRpY3Rpb25hcnlTdGFydCA9
IHN0cmVhbS53cml0ZURpY3Rpb25hcnlTdGFydCgpOwogCi0gICAgc3RyZWFtLndyaXRlU3RyaW5n
KCJXZWJIaXN0b3J5RmlsZVZlcnNpb24iKTsKLSAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhp
c3RvcnlEYXRlcyIpOworICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJz
aW9uIl9zKTsKKyAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyJfcyk7CiAK
ICAgICBzdHJlYW0ud3JpdGVJbnRlZ2VyKGN1cnJlbnRGaWxlVmVyc2lvbik7CiAgICAgc2l6ZV90
IG91dGVyRGF0ZUFycmF5U3RhcnQgPSBzdHJlYW0ud3JpdGVBcnJheVN0YXJ0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlv
bkNhY2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5tbQppbmRleCBjYWMwZThiYzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZk
MDllMzE2Li42MjkxMTQ2OWFjZGRhNDE5ODdmNDk1NGM1YTY1ZDYzYzhmYjcyZWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlv
bkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkFwcGxpY2F0aW9uQ2FjaGUubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBAZW5kCiAKIFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7
Ci0gICAgc3RhdGljIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0g
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hl
UGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlv
bkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3Jp
Z2luLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW0KaW5kZXggYjUyNWJiMGQ4YjQ4NTFjZDFhYTUzMzI3OTc5ZDEwNjRmNmVlZTcz
OS4uZjhlYzJmYjQwYzNkOGQ1Y2ViNTQ2ZWQ4N2FiYzk0YjA0NGY2ODkzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9t
RGF0YWJhc2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7
CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIoU3RyaW5nIHsgZGF0YWJhc2VJZGVudGlmaWVyIH0pOwogICAgIGlmICghb3JpZ2luKQog
ICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA4NzdmZjI4N2E3NmMzMTVmMTE5NzM5MWQyNmMwNGMzZWIy
NWU2MDVhLi5iZmQ1ZDA5ZTk4YWRmNzM5YWI4ZjM3N2JjYjdlNGQ1NGUyZTgwNzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI2MDgs
MTMgKzI2MDgsMTMgQEAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0
b3JFeGNlcHRpb25NYXAoKQogewogICAgIFNlbGVjdG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hN
YXA8U0VMLCBTdHJpbmc+OwogCi0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJ
Z25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNl
bGVjdG9yKGluc2VydFBhcmFncmFwaFNlcGFyYXRvcjopLCAiSW5zZXJ0TmV3bGluZSIpOwotICAg
IG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNl
cnRUYWIiKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246KSwgIk1vdmVQYWdlRG93
biIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjop
LCAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVj
dG9yKHBhZ2VVcDopLCAiTW92ZVBhZ2VVcCIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdl
VXBBbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsK
KyAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6
KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3I6KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxl
Y3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiX3MpOworICAg
IG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bjopLCAiTW92ZVBhZ2VEb3duIl9zKTsKKyAgICBt
YXAtPmFkZChAc2VsZWN0b3IocGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdl
RG93bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VV
cDopLCAiTW92ZVBhZ2VVcCJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1v
ZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CiAKICAg
ICByZXR1cm4gbWFwOwogfQpAQCAtMjY1MCw3ICsyNjUwLDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9y
OjpDb21tYW5kKWNvcmVDb21tYW5kQnlOYW1lOihjb25zdCBjaGFyKiluYW1lCiAgICAgYXV0byog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbW1hbmQobmFtZSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZChTdHJpbmcgeyBuYW1lIH0pOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3Jl
Q29tbWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjg4OCw3ICsyODg4LDcgQEAgSUdO
T1JFX1dBUk5JTkdTX0VORAogCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVu
dUl0ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVu
dUl0ZW0gY2xhc3NdXSkgewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdE
aXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwi
OworICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAg
ICAgIFttZW51SXRlbSBzZXRTdGF0ZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxl
KFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpG
YWxzZSldOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CkBAIC0y
OTA2LDcgKzI5MDYsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChbbWVudUl0
ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAgICAgICAgICAgICAvLyBU
YWtlIGNvbnRyb2wgb2YgdGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0
IGNoZWNraW5nL3VuY2hlY2tpbmcgaXQgYmVjYXVzZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3
b3VsZCBiZSBhbWJpZ3VvdXMuCi0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlv
biwgInJ0bCIpICE9IFRyaVN0YXRlOjpGYWxzZSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRU
aXRsZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5RGlyZWN0aW9uLCAicnRsIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAg
ICAgPyBVSV9TVFJJTkdfSU5URVJOQUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBj
b250ZXh0IG1lbnUgaXRlbSIpCiAgICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwo
IlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAg
ICAgICAgfQpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgLSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wp
cHJpbnRpbmcgbWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6KGZsb2F0KW1pblBhZ2VMb2dpY2EKICAg
ICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJh
bWUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvcmVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0g
ICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJw
cmludCIgOiAic2NyZWVuIik7CisgICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9w
cml2YXRlLT5wcmludGluZyA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MpOwogICAgICAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8v
IEluIHNldHRpbmcgcHJpbnRpbmcsIHdlIHNob3VsZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFs
cmVhZHkgY2FjaGVkIGZvciB0aGUgZG9jdW1lbnQuCiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzA0CkBAIC02NjcyLDcgKzY2NzIs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfSkoKTsK
IAogICAgICAgICBpZiAoIWlzRnVuY3Rpb25LZXlDb21tYW5kV2l0aE1hdGNoaW5nTWVudUl0ZW0p
Ci0gICAgICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQoImluc2VydFRleHQ6IiwgdGV4dCkpOworICAgICAgICAgICAgZXZlbnQt
PmtleXByZXNzQ29tbWFuZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNl
cnRUZXh0OiJfcywgdGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTY4MjI5MjUwYjhjM2IwYzFh
Y2Y2ZWMxOGVhOTg2MmE2YmI3ZWJmNS4uNzIxYjhiYWU3M2UwY2ZiYzMwZGUyZWI0ZmEwNDYxZWUx
MzNiMTM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMzMwNCw3ICszMzA0LDcgQEAgKyAoQk9PTClfY2FuSGFuZGxlUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdAogKyAoTlNTdHJpbmcgKilfZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YQog
ewogICAgIFdlYkNvcmU6OkhUTUxOYW1lczo6aW5pdCgpOyAvLyB0aGlzIG1ldGhvZCBpcyB1c2Vk
IGZvciBpbXBvcnRpbmcgYm9va21hcmtzIGF0IHN0YXJ0dXAsIHNvIEhUTUxOYW1lcyBhcmUgbGlr
ZWx5IHRvIGJlIHVuaW5pdGlhbGl6ZWQgeWV0Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsgLy8gYm9va21h
cmsgZmlsZXMgYXJlIEhUTUwKKyAgICByZXR1cm4gV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L2h0bWwiX3MpLT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7IC8vIGJvb2ttYXJrIGZpbGVz
IGFyZSBIVE1MCiB9CiAKIC0gKHZvaWQpX3B1c2hQZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTc5
ZTkzN2MzZDBhMTkwZGU2YjAwYjM5YjU4ZjY0MjgwOWMxMDJiLi4wYjU4YmQ1OWY2OTcyMDQxZWY0
YTVkZWM4NGUxZDNhMTNiMjI3ZjZmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRM
ZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhw
bGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1b
QmxvYldpdGhVU0RaRXh0ZW5zaW9uRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5t
bToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoY3JlYXRlRGlyZWN0b3JpZXMpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1
c3RvbVBhdGhzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjcmVhdGUg
ZGlyZWN0b3JpZXMgb24gaU9TIGlmIHdlIGFyZSBvbmx5IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdl
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KaW5kZXggYWNiN2U0MWJiNjRiZjNmNjk3ZGM4YmE5MTM5YjE5ZjgyYzQwYzlhOC4uNzQ3MDIy
ZDUxYzEwMjFiYTg0NGZiZjNmNjhiNmMwZDQ1YjdhM2E2NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC02NTAsNyArNjUwLDcg
QEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFz
U3VmZml4OkAiLnVzZHoiXSk7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmcgeyBmaWxlbmFtZSB9LCBmaWxlSGFu
ZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggMzljYWVhYzgwNDUyNGQ1ZGRkYjA4YmYxY2E4
MzY2N2RiZjk3NzU1MC4uNjNiZjY4ZDQwMDU4NGY0NWVmMTA2MDc3YWM5MTQ5ZjZhNzYwYmIwZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoKQogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVz
dCI7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVy
IjsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQi
OwotICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0g
ICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lz
dGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwotICAgIE5T
U3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpj
b21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5n
ICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBO
U1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06
OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsK
KyAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VOYW1l
IH0pOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CiAgICAgTlNVUkwgKm9sZFZl
cnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RV
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKQEAgLTEyNyw4ICsxMjcsOCBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcmllcyhTdHJpbmcgdGVzdE5hbWUpCiAgICAgaWYg
KHRlc3ROYW1lID09ICJub25lIikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE5TU3RyaW5n
ICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKmNy
ZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFz
aEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICpleGlzdGlu
Z0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JG
aWxlTmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAq
Y3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKICAgICBOU1VS
TCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBb
aWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwogICAgIE5TVVJM
ICpuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25EaXJlY3RvcnlVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggNjZmOTI1YWM2NGQ2ODBmOTllZjNlMzYyZWNi
ZTUzMjM2ZWNkYWM4NC4uYmUyM2QyZWIwNzRmOTEwZGRmNGZlZTEwYmRlNWY0NjliZjU5OTY5YiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTg3OSw3ICs4Nzks
NyBAQCBURVNUKFdlYktpdCwgTWlncmF0ZUluZGV4ZWREQkRhdGFUb0dlbmVyYWxTdG9yYWdlRGly
ZWN0b3J5KQogewogICAgIE5TVVJMICppbmRleGVkREJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0
QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUlu
UGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqaW5kZXhlZERCT3JpZ2luRGlyZWN0
b3J5ID0gW2luZGV4ZWREQkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2
MS9odHRwc193ZWJraXQub3JnXzAiXTsKLSAgICBOU1N0cmluZyAqaW5kZXhlZERCRGF0YWJhc2VO
YW1lID0gQCJUZXN0RGF0YWJhc2UiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGluZGV4ZWREQkRh
dGFiYXNlTmFtZVtdID0gIlRlc3REYXRhYmFzZSI7CiAgICAgTlNTdHJpbmcgKmhhc2hlZEluZGV4
ZWREQkRhdGFiYXNlTmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNo
Rm9yRmlsZU5hbWUoaW5kZXhlZERCRGF0YWJhc2VOYW1lKTsKICAgICBOU1VSTCAqaW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkgPSBbaW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5IFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpoYXNoZWRJbmRleGVkREJEYXRhYmFzZU5hbWVdOwogICAgIE5TVVJM
ICppbmRleGVkREJGaWxlID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07Cg==
</data>
<flag name="commit-queue"
          id="484263"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456079</attachid>
            <date>2022-03-29 16:23:08 -0700</date>
            <delta_ts>2022-03-30 08:42:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220329162307.patch</filename>
            <type>text/plain</type>
            <size>214727</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU0ZWVmYjYyZjdiOWE0YzRlYTRmN2Nl
N2EwZDJiYjVmZDQzYzg4NDQuLmEyYzE5NDdhYjE4YWY4ZmYxODk3YThhM2JhOTBlMjYxOTc0YzJh
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oOgorICAgICAgICAoV1RGOjptYWtlTlNBcnJheUVsZW1lbnQpOgorICAg
ICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5
c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTI4ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgY3VzdG9t
IHN0b3JhZ2UgcGF0aHMgZm9yIEluZGV4ZWREQiBhbmQgTG9jYWxTdG9yYWdlIGJ5IGRlZmF1bHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YjkwZDU0NmI2MTUxNjIyZjhmZWU5ZWNkOTQ4ZWY3OTY4OTIyYzIwLi5m
MjJjNjljMWM3NWJhMzg5YzY2Y2E3ZTk4NjdmN2RhODUwMzVmMzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhl
IFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEJsb2JU
YWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJ
bmZvVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZy
b21GaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29u
dHJvbGxlcjo6ZHVtcEhlYXApOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6
ZWRORkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6
ZWRORkE6OnNlcmlhbGl6ZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVy
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0
ZXJQYXJzZXI6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEJvb2xlYW4pOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXNGb3JJbmRleGVkREIpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlOjppbmRleFNRTCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZTo6aW5NZW1vcnlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbk1l
bW9yeVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5h
bWVUb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0u
aDoKKwogMjAyMi0wMy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gQXV0b21hdGljYWxseSByZWxheW91dCB0aGUgcGFnZSB3aGVu
IG5ldyBmb250cyBhcmUgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyYTJhZDUxZjI1ZjNlMjVmNzBm
MjIyZmQ3Yzg1N2Q5MmMzNzI2YzAuLjViNmRiNjljMDg3MzEwMjViNmZmODA2OWM5ODliYjE4Yjlh
MmQ2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQ3IEBACisyMDIyLTAzLTI5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0
TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4
cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFwcGVuZEJvb2xlYW4pOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
U3ViU3RhdGlzdGljU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVzb3VyY2VUb1N0cmluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlUHVzaEFuZE5vdGlm
aWNhdGlvblJlZ2lzdHJhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Jsb2Nr
ZWRDb29raWVJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYXRhYmFzZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmFkZERlc3RpbmF0aW9uVG9rZW5Db2x1bW5zSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjb2x1bW5zRm9yVGFi
bGUpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuRm9yRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6Z2V0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjptYXBGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9KU0lQ
Q0JpbmRpbmcuY3BwOgorICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFs
dWUpOgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVy
YjoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06Cisg
ICAgICAgIChlbmNvZGVPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
IF9zZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6XSk6CisgICAgICAgIChyZXBseUJsb2NrU2lnbmF0
dXJlKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2ludm9rZU1ldGhvZDpd
KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKToKKyAgICAgICAg
KFdlYktpdDo6cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24p
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKToKKyAgICAgICAg
KiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NO
YW1lKToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAoV2Vi
S2l0OjpYUENTZXJ2aWNlTWFpbik6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VUZXN0RHJpdmVyKToKKyAgICAgICAgKiBTaGFyZWQvSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpleHRlbnNpb25F
cnJvclRvU3RyaW5nKToKKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpzdHJpbmdCeVJl
c29sdmluZ1N5bWxpbmtzSW5QYXRoKToKKyAgICAgICAgKFdlYktpdDo6cmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6cmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAqIFNoYXJlZC9tYWMv
QXV4aWxpYXJ5UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6c2FuZGJveERhdGFWYXVs
dFBhcmVudERpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OmdldFVzZXJEaXJlY3RvcnlTdWZm
aXgpOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZVNhbmRib3hJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAg
ICAoQVBJOjpvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHA6CisgICAgICAgIChXS0Rvd25sb2FkU2V0Q2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdl
dFNlc3Npb25IaXN0b3J5VVJMVmFsdWVUeXBlKToKKyAgICAgICAgKFdLUGFnZUdldFNlc3Npb25C
YWNrRm9yd2FyZExpc3RJdGVtVmFsdWVUeXBlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRl
V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3Rv
cmU6OmRlZmF1bHRTdG9yZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50UnVsZUxpc3RTdG9yZS5tbToKKyAgICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RTdG9y
ZSBzdG9yZVdpdGhVUkw6XSk6CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3Rv
cmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIGluaXRdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6U3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpsb2FkUmVxdWVzdFRvRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJLaXRTd2lmdFNvZnRMaW5rLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRTd2lmdExpYnJh
cnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JT
YW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIF93a0NoYW5nZVRl
eHRTdHlsZTpdKToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tD
aGFuZ2VUZXh0QWxpZ25tZW50Ol0pOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0ZW1Db250
cm9sbGVyIF93a0NoYW5nZUNvbG9yOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
aW5zZXJ0VGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0U2VjdXJpdHlPcmlnaW5EYXRhKToKKyAgICAgICAg
KFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGVFbmNv
ZGVyRnJvbURhdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Q
cm9jZXNzTGF1bmNoZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVy
OjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hH
cmFudGluZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OmxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6cmVzZXQpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BX
YWl0aW5nRm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmV2ZW50T2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmNhbmNlbE91
dHN0YW5kaW5nRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6c3RvcFdhaXRpbmdGb3JFdmVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0
dWFsQXV0aGVudGljYXRvclV0aWxzLm1tOgorICAgICAgICAoV2ViS2l0OjpiYXNlNjRQcml2YXRl
S2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0
dWFsSGlkQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxIaWRDb25uZWN0
aW9uOjpwYXJzZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpoYW5kbGVSZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUdyb3VwOjpXZWJQYWdlR3JvdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFT
b3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hl
U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
S0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVs
OjppbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtOjpu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnJlY2VpdmVkTm9uTGlu
ZWFyaXplZFBERlNlbnRpbmVsKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp0aHJlYWRF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRvcHRCYWNrZ3JvdW5kVGhyZWFk
RG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBsdWdpbkluZm8pOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OmNzc0FsaWdu
bWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxvYWRVUkwp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVIYW5k
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Omdl
dERpcmVjdG9yeUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6cmVtb3ZlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OnJlc29sdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vz
c0hhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Z2V0SGFuZGxlTmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OmdldEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6bW92ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNo
YW5nZVdvcmRDYXNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTTWVzc2FnZUxpc3RlbmVy
Ojpqc0Rlc2NyaXB0aW9uRnJvbURlY29kZXIpOgorICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yRGVj
b2RlZEFyZ3VtZW50VmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpsYXllclRyZWVBc1RleHQgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OnRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9u
Rm9yS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIHdlYnB1c2hk
L0FwcEJ1bmRsZVJlcXVlc3QubW06CisgICAgICAgIChXZWJQdXNoRDo6QXBwQnVuZGxlRGVsZXRp
b25SZXF1ZXN0OjpkaWREZWxldGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcik6CisgICAgICAgICog
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9u
Ojpicm9hZGNhc3REZWJ1Z01lc3NhZ2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5l
Y3Rpb246OnNlbmREZWJ1Z01lc3NhZ2UpOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6OkRhZW1vbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorICAgICAg
ICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
dXNoRGFlbW9uTWFpbik6CisKIDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjcmVhdGUgZGlyZWN0b3JpZXMgb24g
aU9TIGlmIHdlIGFyZSBvbmx5IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwppbmRleCAxNTMxZWM4YTllNGFkZmYwYjk0MGM4NzgxZjY2YTFjMGFlZDI2MGY0Li4xZGM3
OGE5ZjQzNjdjNGYwM2U0Y2E1YzdiM2NkMjM3MTFkNjJkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFr
aW5nIHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcik6
CisKIDIwMjItMDMtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBEdXN0IG9mZiBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFu
Z2VMb2cKaW5kZXggMDA2NzM2NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uM2Q0
NWIyNTZhNjQyNmZkMjM5OGE1ODczYWFkZDM0NjZhNDVlMjZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8g
Zm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OnNldEluc3BlY3RvckF0dGFjaERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2Yg
Q0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVh
bWxpbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ5Njc3OWU0MTgwODgwYjc1
NWQ2Yzg4Y2NjMGE0NmQ2MWZmNGU1ZGUuLmQ3MWU4YWY5MTgyYjMzYWViYjI4N2UzYzIxMWMxOTk3
ZmQ5Y2M1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBy
ZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0
IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06Cisg
ICAgICAgIChIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2Vj
dXJpdHlPcmlnaW4ubW06CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06
CisgICAgICAgIChjcmVhdGVTZWxlY3RvckV4Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhU
TUxWaWV3IGNvcmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxp
ZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdo
dDpvcmlnaW5hbFBhZ2VXaWR0aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlv
OmFkanVzdFZpZXdTaXplOnBhZ2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgrW1dlYlZpZXcgX2RlY29kZURhdGE6XSk6CisKIDIwMjItMDMtMjggIElhbiBBbmRl
cnNvbiAgPGlhbmFAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xp
ZW50cyBmYWlsIHRvIGJ1aWxkIGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJL
aXRMZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2ZjY2NWQwODNmNzU4MjcxZTE4ZjM4OGU3YjRm
MzVmMGNkODg0OTA4Li4yMTE4M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDksNyArMTQ5LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVI
YW4KIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVh
ZEVudGlyZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhl
IGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIFN0cmluZ1ZpZXcgc3VmZml4ID0geyB9KTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Bl
cm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJu
cyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYg
c3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNv
Y29hLm1tCmluZGV4IGVlNGY0MDBkNzNlOGY5MTRiMTM0NDQzNDFkODZiZDUxMjMyYjA1YmUuLmM1
ZGIwZjllOWU0MWJhY2UzYTkxODEwOWVlMGYwY2VkMjlhMDliMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIGNyZWF0ZVRl
bXBvcmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiB0ZW1wb3Jh
cnlGaWxlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcm
IHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQog
ewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCmluZGV4IGFiMjExNWY2MzE0Yzc5NjBhNjU3ZTA1
M2Q2NDJhN2M2YmYwMDVhZDYuLmUwNmJhYjRlMjg0ODAxZGNkMzAyMWMyNThiYThiYWRhYWE5NDI1
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKKysrIGIv
U291cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00
Nyw2ICs0OCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vCiAvLyAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvckVsZW1lbnRUeXBlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlw
ZSosIGlkIGFycmF5RWxlbWVudCk7CiAKK2lubGluZSBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5
RWxlbWVudChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhudWxscHRyLCBzdHJpbmcsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xKSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
VHlwZT4gUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjcmVhdGVOU0FycmF5KENvbGxlY3Rpb25U
eXBlJiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+IFZlY3RvcjxWZWN0
b3JFbGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGNkMTk0NzdhYzUxYTU0YjA0OTAxZWVhZjM3ZmRmMGNl
YmEzOGFlNzQuLjZlMGU0NzY3MjI2NjQ0YTk2MjNiMmJjNjMxYWE1MDkxMDFlNThmNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8g
RklYTUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUg
Y29kZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZm
aXgsIHN1ZmZpeC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKaW5kZXggNDI3NmY3N2UyMThkMWY0YWIxZWZlNWUyODEzMGI5MDU1MGNjNmI0NS4uN2Y5
ZThmYzNkMGZjM2UzYzY4NzRjZTY3MjhlMzZlZDI0YzgwZjM4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgQ1N0cmluZyBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkK
K1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZm
aXggaXMgbm90IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcg
aXQgaXMgbWFjT1MtcG9ydC1vbmx5LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXgu
aXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiMmM5NmUw
YzdiN2VhMTBiOGVhMmQ4MDM0ZjBlMDcyZTU1ZDE4MGM0Li4yOGQxY2U1ZjZlZTE4YmQwNjlkN2Y2
NzZkYjUxMjU0ZjRhMzVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1cm4gcHJv
cG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
LCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBw
b3J0ZWQsIGJ1dCBPSyBmb3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBv
cnQtb25seS4KICAgICBBU1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRlMjBhNGI5YmViM2RmZWRmNTlj
NTAzOGJiYzQyYTgxOWQ1MjhjMGMuLjJiOWIzODRjNTZhZGVmZWYyMzlhZGUyNGQ0ODFlMWY0ZjYw
NjU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNTAsNyArMjUw
LDcgQEAgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKIAog
c3RhdGljIElEQkVycm9yIGNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KFNR
TGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBk
YXRhYmFzZS50YWJsZVNRTCgiUmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50
ID0gZGF0YWJhc2UudGFibGVTUUwoIlJlY29yZHMiKTsKICAgICBpZiAodGFibGVTdGF0ZW1lbnQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNSZWNv
cmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIFJlY29yZHMgdGFibGUgKCIsIGRhdGFi
YXNlLmxhc3RFcnJvcigpLCAiKSAtICIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKSB9OwpAQCAt
Mjk0LDcgKzI5NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRCbG9iVGFibGVzKCkKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1fc3Fs
aXRlREItPmlzT3BlbigpKTsKIAotICAgIFN0cmluZyByZWNvcmRzVGFibGVTdGF0ZW1lbnQgPSBt
X3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiX3MpOworICAgIFN0cmluZyByZWNvcmRz
VGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiKTsKICAg
ICBpZiAocmVjb3Jkc1RhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1f
c3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9y
IGNyZWF0aW5nIEJsb2JSZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwg
IikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMwNCw3ICszMDQsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxlcygp
CiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYlJlY29y
ZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jkc1Rh
YmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwogCi0gICAgU3RyaW5nIGZpbGVzVGFibGVTdGF0ZW1lbnQg
PSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYkZpbGVzIl9zKTsKKyAgICBTdHJpbmcgZmlsZXNU
YWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iRmlsZXMiKTsKICAgICBp
ZiAoZmlsZXNUYWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNjaGVtYSgpKSkKICAgICAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiRXJyb3IgY3JlYXRp
bmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBt
X3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMzOCw3ICszMzgsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKQog
ICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkp
OwogCi0gICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIklu
ZGV4UmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+
dGFibGVTUUwoIkluZGV4UmVjb3JkcyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5
KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2M0luZGV4UmVj
b3Jkc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCIs
IG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJvck1z
ZygpKSB9OwpAQCAtMzc4LDcgKzM3OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKG1fc3FsaXRlREIp
OwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTdHJpbmcgaW5kZXhT
dGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzSW5kZXgiX3MpOwor
ICAgIFN0cmluZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRleFJl
Y29yZHNJbmRleCIpOwogICAgIGlmIChpbmRleFN0YXRlbWVudCA9PSBJbmRleFJlY29yZHNJbmRl
eFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTM5Niw3ICsz
OTYsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhS
ZWNvcmRzUmVjb3JkSW5kZXgoKQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQo
bV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIGluZGV4U3RhdGVtZW50ID0gbV9z
cWxpdGVEQi0+aW5kZXhTUUwoIkluZGV4UmVjb3Jkc1JlY29yZEluZGV4Il9zKTsKKyAgICBTdHJp
bmcgaW5kZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzUmVj
b3JkSW5kZXgiKTsKICAgICBpZiAoaW5kZXhTdGF0ZW1lbnQgPT0gdjFJbmRleFJlY29yZHNSZWNv
cmRJbmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTQ4
Niw3ICs0ODYsNyBAQCBzdGQ6Om9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZgogICAgIEFTU0VSVChtX3NxbGl0
ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIHRh
YmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVjdFN0b3JlSW5mbyJfcyk7
CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVj
dFN0b3JlSW5mbyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCkBAIC03NzUsNyArNzc1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhp
c3RpbmdEYXRhYmFzZUkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAKLSAgICBpZiAoIW1f
c3FsaXRlREItPnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUluZm8iX3MpKQorICAgIGlmICghbV9z
cWxpdGVEQi0+dGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFN0cmluZyBkYXRhYmFzZU5hbWU7CkBAIC05NTAsNyArOTUwLDcgQEAg
c3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmRhdGFiYXNlTmFtZUFuZFYKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3Bl
biBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBuYW1l
IiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KLSAgICBpZiAoIWRhdGFiYXNlLnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUlu
Zm8iX3MpKSB7CisgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJbmZv
IikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJEYXRhYmFzZUluZm8g
dGFibGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9y
KCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmlu
ZGV4IGNhYjRiOGRlMjAyZTc3ZDcwMjgyYjU5NGExYmVmYmQ3NWIwNmNiMmQuLjA5ZWM4ZjYwM2U5
ZDAyMmIzNzhkZGEwZTQyN2ZlYzUyMWZkZDUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNl
KQogICAgIC8vIGluaXRpYWxpemVyIGJ1dCBjdXJyZW50bHkgdGhhdCBkb2VzIG5vdCB3b3JrLgog
CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgYXV0
byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiX3Ms
IGZpbGVIYW5kbGUsICIudXNkeiJfcyk7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAg
ICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKICAgICBz
aXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKaW5kZXggY2QwYzQxNGZiMzEwMDI0MTNlYTJiZmRkMDk4MzA1ZDUxYjlmMWZk
Mi4uYjEzMjBmMDA4YmJmOTMzNTliMmI4NTMxZGViMTZmMTRkOWY5OGU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTM2NiwxMSAr
MzY2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH07CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIFN0cmluZyB0YWJsZU5hbWUodW5xdWFsaWZpZWRJbmZv
VGFibGVOYW1lKTsKLSAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0
cyh0YWJsZU5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVF
eGlzdHModW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1fbmV3
ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRl
Q29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhtYWtlU3RyaW5nKCJDUkVBVEUg
VEFCTEUgIiwgdW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lLCAiIChrZXkgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwg
ZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJv
cigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVE
YXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGE0ZjBjNzQ0NTIzNzFhNGRiZDhkZjA4
NjA2OWVjZDEwYWJhMzIyOWYuLjllYjM5MWM2ZDBiZDZkNDg2MDUxMGVkYWI3Mjg5MzM5OTUwNmJj
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgRGF0YWJhc2VUcmFja2VyOjpEYXRh
YmFzZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAKIFN0cmluZyBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBTUUxp
dGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCAiRGF0YWJhc2VzLmRiIl9zKTsKKyAgICByZXR1cm4g
U1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChtX2RhdGFiYXNl
RGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgIkRhdGFiYXNlcy5kYiIpOwogfQogCiB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25BY3Rp
b24gY3JlYXRlQWN0aW9uKQpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFjdGlv
bikKICAgICB9CiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKLSAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiX3MpKSB7CisgICAgaWYgKCFt
X2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYgKCFtX2RhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5J
UVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT3JpZ2lucyB0YWJsZSIpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMi
X3MpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkgewog
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBEYXRh
YmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4gVEVY
VCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIsIHBh
dGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0YWJhc2VzIHRhYmxlIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCA1ZjkzNDkxNzU2
ZjI3ZWMwNGQ0ZGVhOWQzODFiN2E2NGM2Yzc5MjA3Li42YTkwMTk3YjQ0NmM2NGVjM2E3M2IzMzIz
YTk0NTQwY2Q1OGQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6ZGVsZXRlQWxs
TGlua2VkQ29kZShEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkKIHZvaWQgR0NDb250cm9sbGVy
OjpkdW1wSGVhcCgpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGU7Ci0gICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJHQ0hlYXAiX3MsIGZpbGVIYW5kbGUpOworICAgIFN0cmluZyB0ZW1wRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiR0NIZWFwIiwgZmlsZUhhbmRsZSk7CiAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKSB7CiAgICAgICAg
IFdURkxvZ0Fsd2F5cygiRHVtcGluZyBHQyBoZWFwIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBm
aWxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMDUyYjU5N2JjZmI5MmE3NDM3OTNmOTE1
ZWQ2OTZlN2EwZTllNDhmMS4uMDRjNmRhNWE4NDhkMDg5MWYzM2Y0ZjgzOWRhOTUyYjhjNzY3OWEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogc3RkOjpvcHRp
b25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQog
ewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7
Ci0gICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJTZXJp
YWxpemVkTkZBIl9zLCBmaWxlKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIlNlcmlhbGl6ZWRORkEiLCBmaWxlKTsKICAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuY3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5Nzc2OTE4OWU3NGEuLmE5
ZWM4ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMzQ5
LDcgKzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFyc2VyKENvbWJpbmVkVVJM
RmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQYXJzZXI6On5VUkxGaWx0
ZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgVVJM
RmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBwYXR0
ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitVUkxGaWx0ZXJQYXJzZXI6
OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihTdHJpbmdWaWV3IHBhdHRl
cm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewog
ICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBOb25BU0NJSTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
LmgKaW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJjODAyOGI0MS4uYTQ5M2I5
MTY1YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVzU3RyaW5nKFBhcnNlU3Rh
dHVzKTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxGaWx0ZXJzJik7
CiAgICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVzIGFkZFBhdHRlcm4oY29u
c3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90
IHBhdHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihTdHJpbmdWaWV3IHBhdHRl
cm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsKIAog
cHJpdmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmluZWRVUkxGaWx0ZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmlu
ZGV4IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2NGQuLjBkNDdkN2MwNmIz
MTM5OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVu
c2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBh
cHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBl
bmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMmQzODZkYjFmZjNjNjJj
YWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uYTY4MmNjYmE3NTQyOWQ3Mjg1MjZkOGFjZjhmYjBl
ZTc1MjJkMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cApAQCAtODYsNyArODYsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlk
ZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0
b3JDaGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0
b3JDaGFyYWN0ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxTZWN1cml0
eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihT
dHJpbmdWaWV3IGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUn
cyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVu
dGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKGNvbgogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0
aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdC4KICAgICBhdXRvIHBv
cnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMTsK
LSAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0KHBvcnRMZW5ndGgpKTsK
KyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KHBvcnRMZW5ndGgpKTsKIAogICAgIC8vIE5vdGhp
bmcgYWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhlIGNv
bG9uIGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKQEAgLTExNyw3ICsxMTcs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogCiAgICAgYXV0byBwcm90b2NvbCA9IGRhdGFi
YXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0ID0g
ZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAt
IHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9j
b2wsIGhvc3QsIHBvcnQgfTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9j
b2wudG9TdHJpbmcoKSwgaG9zdC50b1N0cmluZygpLCBwb3J0IH07CiB9CiAKIFNlY3VyaXR5T3Jp
Z2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IDM3MzUwYWE0MGE2YmUwYmQy
NmRjNjU1MWJjNzA0NjM0ZGE5YzIzOWEuLmZhNDQ2ZGI2MTc4NDY0NzhlNDQ0MjVhODZmNTkyMDU2
OTg3OTQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAt
NzEsNyArNzEsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICAvLyBTZXJpYWxp
emUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVzZWQgYXMg
cGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBiZSB1c2VkIGlu
IHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFzZUlk
ZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5n
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmln
aW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwogICAgIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdp
bkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmluZGV4IGFmMWU0ZDhiYmZh
MmE3NTU3ZDhjZmExYTk1NWUxOTY0YTE5MzgyMTQuLjIwN2JmNDY2MmVmZGRlNDY1OWE2NjBkYjYx
ZDhjZTg4YTU3MmNlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRp
YyBTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVRJLCBjCiAgICAgYXV0byBzdWZmaXggPSBtYWtlU3RyaW5nKCcuJywgZGVz
dGluYXRpb25FeHRlbnNpb24pOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGRlc3RpbmF0aW9uRmlsZUhhbmRsZTsKLSAgICBTdHJpbmcgZGVzdGluYXRpb25QYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBJbWFnZSJfcywgZGVzdGluYXRpb25GaWxl
SGFuZGxlLCBzdWZmaXgpOworICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEltYWdlIiwgZGVzdGluYXRpb25GaWxlSGFuZGxlLCBz
dWZmaXgpOwogICAgIGlmIChkZXN0aW5hdGlvbkZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJbWFn
ZXMsICJ0cmFuc2NvZGVJbWFnZTogRGVzdGluYXRpb24gaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0
ZWQ6ICVzICVzXG4iLCBwYXRoLnV0ZjgoKS5kYXRhKCksIGRlc3RpbmF0aW9uVVRJLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCmluZGV4IDA3
NzNmNTg4NmU0MGEwMmVhOWUzY2EwODAyMDVjNDcyYTliMjgzNDkuLmRjN2EzY2U3ZmYzYjdlZDE5
ZGVmMGZmNDhhMjA0OTgwZDQ5NjdlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KQEAgLTUxMSwyMSArNTExLDIx
IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4g
LS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Ig
RW50ZXIuCiAgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7Ci0g
ICAgICAgICAgICBtX3RleHQgPSAiXHIiOwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9
ICJcciI7CisgICAgICAgICAgICBtX3RleHQgPSAiXHIiX3M7CisgICAgICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gbV90ZXh0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGFkanVzdG1l
bnRzIGJlbG93IGFyZSBvbmx5IG5lZWRlZCBpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUs
IGJ1dCB3ZSBjYW5ub3QgdGVsbCB3aGF0IG1vZGUgd2UgYXJlIGluIGZyb20gaGVyZS4KIAogICAg
ICAgICAvLyBUdXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdh
eXMgYmUgOC4KICAgICAgICAgaWYgKG1fdGV4dCA9PSAiXHg3RiIpCi0gICAgICAgICAgICBtX3Rl
eHQgPSAiXHg4IjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDgiX3M7CiAgICAgICAgIGlmICht
X3VubW9kaWZpZWRUZXh0ID09ICJceDdGIikKLSAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQg
PSAiXHg4IjsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg4Il9zOwogICAgICAg
ICAvLyBBbHdheXMgdXNlIDkgZm9yIHRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQn
cyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCiAgICAgICAgIGlmIChtX3dpbmRv
d3NWaXJ0dWFsS2V5Q29kZSA9PSA5KSB7Ci0gICAgICAgICAgICBtX3RleHQgPSAiXHg5IjsKLSAg
ICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICAgICAgICAgIG1fdGV4dCA9
ICJceDkiX3M7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0OwogICAgICAg
ICB9CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDM1MTUxYmE2NmYzYjJjNGVmYTFmNjlmNjZjNDI1
NGMyODRkNGQ1MGMuLmJiNTk1ZmRiZmMyMDc4NjZmODk4ZWRmOTFhZGNiOTkzYjcwZDdjNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QgVmVjdG9yPFN0cmluCiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKICAgICAgICAgZm9yIChhdXRvJiBibG9iIDog
YmxvYnNGb3JXcml0aW5nKSB7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZTsKLSAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiQmxvYiJfcywgZmlsZSk7CisgICAgICAgICAgICBTdHJpbmcg
dGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkJsb2IiLCBmaWxl
KTsKICAgICAgICAgICAgIGlmICghd3JpdGVGaWxlUGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGJs
b2IuZmlsZVBhdGhzT3JEYXRhQnVmZmVycywgZmlsZSwgdGVtcEZpbGVQYXRoKSkgewogICAgICAg
ICAgICAgICAgIGZpbGVQYXRocy5jbGVhcigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZjJl
M2VkYWQ1MGVkYTJmZGUwZTVkNTY3YWFlMzM3M2RjNTVkYjA1MC4uMWViNmRlYmFmYzIzYzQyZGQx
MmVkNzZhMWY2ZjEwNWZlMjljZWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC04OSwxMSArODksNiBAQCBTUUxpdGVEYXRhYmFzZTo6
flNRTGl0ZURhdGFiYXNlKCkKICAgICBjbG9zZSgpOwogfQogCi1jb25zdCBjaGFyKiBTUUxpdGVE
YXRhYmFzZTo6aW5NZW1vcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gIjptZW1vcnk6IjsKLX0KLQog
Ym9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9k
ZSBvcGVuTW9kZSkKIHsKICAgICBpbml0aWFsaXplU1FMaXRlSWZOZWNlc3NhcnkoKTsKQEAgLTQy
NiwxMiArNDIxLDEyIEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kKEFTQ0lJ
TGl0ZXJhbCBxdWVyeSkKICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0
ZUNvbW1hbmQoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCitib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhTdHJp
bmdWaWV3IHRhYmxlTmFtZSkKIHsKICAgICByZXR1cm4gIXRhYmxlU1FMKHRhYmxlTmFtZSkuaXNF
bXB0eSgpOwogfQogCi1TdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQorU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChTdHJpbmdWaWV3
IHRhYmxlTmFtZSkKIHsKICAgICBpZiAoIWlzT3BlbigpKQogICAgICAgICByZXR1cm4geyB9OwpA
QCAtNDQzLDcgKzQzOCw3IEBAIFN0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgcmV0dXJuIHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsK
IH0KIAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjppbmRleFNRTChjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoU3RyaW5nVmlldyBpbmRleE5h
bWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggZDQxNGI5YTZjYTM2
MzYxZjdiMTE3MTE3NmExZTk0ZDQxY2I5ZTgzYi4uOTE2MDEzNDgxNzU5MjEzYWE1MmQxOThhNDdl
MmU1YzRkNmE5ODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNR
TGl0ZURhdGFiYXNlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4g
IjptZW1vcnk6Il9zOyB9CiAKICAgICBlbnVtIGNsYXNzIE9wZW5Nb2RlIHsgUmVhZE9ubHksIFJl
YWRXcml0ZSwgUmVhZFdyaXRlQ3JlYXRlIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6OlJlYWRXcml0ZUNy
ZWF0ZSk7CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCB0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgdGFibGVTUUwoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGluZGV4U1FMKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVF
eGlzdHMoU3RyaW5nVmlldyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRhYmxlU1FMKFN0
cmluZ1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBpbmRleFNRTChTdHJpbmdWaWV3
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGFibGVzKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHJ1blZhY3V1bUNvbW1hbmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggNzJkNGE4NzQ5YTA4ZDBhNzM4MzQ4
NjRmNmY2ZjM4ZGY1NDk0NDgyMy4uZWMwZDFjZWU1YmExYTA4ODA1MDAwZmY3MGQ3NDY0NjUwMzZk
NzUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcApAQCAtNDksNyArNDksNyBAQCBTUUxpdGVGaWxlU3lzdGVtOjpTUUxpdGVGaWxlU3lz
dGVtKCkKIHsKIH0KIAotU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmls
ZU5hbWVUb1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQor
U3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgoU3Ry
aW5nVmlldyBwYXRoLCBTdHJpbmdWaWV3IGZpbGVOYW1lKQogewogICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwogfQpAQCAtMTI4
LDcgKzEyOCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRh
dGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KICAgICAKLVN0cmluZyBTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUpCitTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJp
bmdWaWV3IGZpbGVOYW1lKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAg
ICBhdXRvIHV0ZjhGaWxlTmFtZSA9IGZpbGVOYW1lLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmluZGV4IDY0ZjFhMmMxMmE5MTFhZWIw
YWRjNTllZmJiY2U1MzkwOWI5NTk1NmMuLjUzNDI3MTBmN2JiZDIxOWFkN2JkZWYwNzRkMGQzYzY0
OTIzMzY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVG
aWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBwYXRoIC0g
VGhlIGRpcmVjdG9yeS4KICAgICAvLyBmaWxlTmFtZSAtIFRoZSBmaWxlIG5hbWUuCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKFN0cmluZ1Zp
ZXcgcGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSk7CiAKICAgICAvLyBNYWtlcyBzdXJlIHRoZSBn
aXZlbiBkaXJlY3RvcnkgZXhpc3RzLCBieSBjcmVhdGluZyBhbGwgbWlzc2luZyBkaXJlY3Rvcmll
cwogICAgIC8vIG9uIHRoZSBnaXZlbiBwYXRoLgpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBNb3ZlcyBhIGRhdGFiYXNlIGZpbGUgdG8gYSBuZXcgcGxhY2UuCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgbW92ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIG9sZEZp
bGVQYXRoLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIGNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjb21wdXRlSGFzaEZvckZpbGVO
YW1lKFN0cmluZ1ZpZXcgZmlsZVBhdGgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBUcnVuY2F0ZXMgYSBkYXRhYmFzZSBmaWxlLiBVc2VkIHdoZW4gTW9iaWxlU2FmYXJpU2V0
dGluZ3MgZGVsZXRlcyBhIGRhdGFiYXNlIGZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApp
bmRleCBkNjRjY2MwYjYwMThjN2ZlNzQ2ZTdhY2ZlNjEwZmNlNGY5YjA2NWM1Li42ZGI2NDQwY2Y5
NmQ5MmFjMmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cgogICAgICAgICBT
dHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUs
IHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3Jl
KCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVh
dGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJ
UEM6OlNlbWFwaG9yZSB7IH0sIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGNjNjE1MjQ3OTNjMGYxMWNmZWI4ZDRhODRlY2ZhOWFmNGU2ZTJhYTcuLmZlMDdmZTNk
NjQyOGRmY2VhMmRmZjVlMzg0MmYxZmNlNGEzMzYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjUwMyw3ICsyNTAz
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0
U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2kKICAgICByZXR1cm4gKHN1YkZyYW1lVW5kZXJU
b3BGcmFtZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVDb3VudC0+Y29sdW1uSW50KDApID09IDEgJiYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
by0+Y29sdW1uSW50KDApID09IDEpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0
YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgQVNDSUlMaXRl
cmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJl
bCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CkBAIC0yNTMxLDMxICsyNTMxLDMxIEBA
IFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3Ry
aW5nRnJvbURvbWFpbklEKHVuc2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQVNDSUlM
aXRlcmFsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0
aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRl
bWVudChBU0NJSUxpdGVyYWwgdGFibGVOYW1lKSBjb25zdAogewotICAgIGlmICh0YWJsZU5hbWUg
PT0gIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIpCisgICAgaWYgKCFzdHJjbXAo
dGFibGVOYW1lLmNoYXJhY3RlcnMoKSwgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
cyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BMZXZlbERvbWFpbklEIGZyb20gU3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKLSAgICBp
ZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIikKKyAgICBpZiAoIXN0
cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIp
KQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFt
ZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikKKyAgICBpZiAoIXN0cmNtcCh0YWJs
ZU5hbWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikpCiAgICAg
ICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSBXSEVSRSB0YXJnZXREb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9
PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5h
bWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikpCiAgICAgICAg
IHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lTGlua0RlY29yYXRpb25z
RnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BG
cmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUu
Y2hhcmFjdGVycygpLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIpKQogICAgICAg
ICByZXR1cm4gIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJhbWVMb2FkZWRU
aGlyZFBhcnR5U2NyaXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAo
dGFibGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAoIXN0
cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
cyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyJfczsKLSAg
ICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAg
ICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklE
IGZyb20gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURv
bWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0Rv
bWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJj
ZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb20iKQorICAgIGlmICghc3RyY21wKHRhYmxlTmFtZS5jaGFyYWN0ZXJzKCks
ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKSkKICAgICAgICAgcmV0dXJuICJTRUxF
Q1QgZnJvbURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJF
IHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIAogICAgIHJldHVybiAiIl9zOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
CiB7CiAgICAgYXV0byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUp
OwogICAgIApAQCAtMjYwMyw3ICsyNjAzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAg
ICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCBkb21haW4sICdcbicpOwog
ICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIs
ICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CisgICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVy
YWN0aW9uKFNlY29uZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNv
bHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQpAQCAtMjYx
MSwzNCArMjYxMSwzNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGVsc2UKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
YXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgbV9nZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgp
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0g
ICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVEb21haW5zIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxk
ZXIsICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAg
ICAvLyBUb3AgZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIs
ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50IiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0
KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSIsIGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgZG9tYWluKTsK
KyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBkb21haW4pOworICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BG
cmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgZG9t
YWluKTsKIAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVu
dC0+Y29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCkp
OworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5j
b2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMiLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAvLyBTdWJyZXNvdXJj
ZSBzdGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xp
c3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAg
IGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAi
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9z
LCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgZG9tYWluKTsKIAogICAgIC8vIFByZXZhbGVudCBS
ZXNvdXJjZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2Ui
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzUHJl
dmFsZW50SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJl
c291cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1u
SW50KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBh
cHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVz
b3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50
SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbklu
dChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNl
RGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZElu
ZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDgxMWJiZjk3MGVhYzZmYTcw
ZGFhMDk3MmI1NjlkNWU5ZjgyZjE5MDkuLmYyMmJmMWY0YjA1OTFjNzM4YTJlMjliY2Y4NDhhYTBh
YjUyMWMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCkBAIC0xMzgsOCArMTM4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVu
c2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFu
ZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3QgZmluYWw7Ci0gICAgQVNDSUlMaXRlcmFsIGdldFN1
YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CisgICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0
YXRpc3RpY1N0YXRlbWVudChBU0NJSUxpdGVyYWwpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kU3Vi
U3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29u
c3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xl
YXJEYXRhYmFzZUNvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZi
OTMyZGJhZDQ0MGI1NTE1NTg0MjdkNDBkNmQyMmFkZDBkMzNjMDcuLmU0ZWEwM2MxMWI2YmIzZmZl
M2Y4MGQyZjNiNzhmYjlhMzk4YzU2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC03ODksNyArNzg5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFMKICNpZiBFTkFCTEUoSU5U
RUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChz
ZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9w
dCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00i
X3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJh
bWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CkBAIC04MDQs
NyArODA0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb24KICNpZiBFTkFCTEUoSU5URUxMSUdF
TlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9u
LT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlv
bigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TSJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBm
cmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApp
bmRleCA2ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0Li42NzRiOTg1NTM1
N2MxMGMzYTNjYzg3ZDA2Mzc3YjE3MTc2NDA2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTYxLDExICs2MSwx
MSBAQCBzdGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBj
b25zdCBpbnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1
ZXN0ZWRSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50
ZXJuYWxFcnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29u
dGVudCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxv
d2VkIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJs
ZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciogaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVU
ZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJf
czsKIAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJX
ZWJLaXRCbG9iUmVzb3VyY2UiX3M7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29kZSkK
ICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCV1KSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
cnJvckNvZGUpKTsKIAogICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tCbG9iPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBlcnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiIgOiBleHRyYWN0
TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCkpLCBlcnJvckNv
ZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAwIDogbV90b3RhbFJlbWFpbmluZ1NpemUsIFN0cmluZygp
KTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBl
cnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiJfcyA6IGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSksIGVycm9yQ29kZSAh
PSBFcnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwog
ICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBFcnJvcjo6Tm9FcnJvcjogewogICAg
ICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAhPSBrUG9zaXRpb25Ob3RT
cGVjaWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCmluZGV4IGU2NmM4NDczZDgyZTNhYzJjMDJlNDdmYmFkZjNiMDY5YWFkY2I0MTYuLmY0
OTY4YWFkYzdiODNjZGUwYmQ0OWUxYThjMzZiMjMzNDZjNjdkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzQ1LDcgKzIzNDUs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3NpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCi0gICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiIpOworICAgIGNh
bGxiYWNrKCJDYW5ub3QgZmluZCBuZXR3b3JrIHNlc3Npb24iX3MpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAzMmEwNmQ0OTQ2M2QzODhjZTYyZTM2YTg2YmI4YTg0MGE2YWFiOTEyLi41N2MxYjFi
NjkzZDcxNWJlMTJlYWQ2YzZmZDU5NjUxMjk3YzMyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTk0
LDEwICsxNTk0LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbigpIGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAg
ICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJl
cXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmln
aW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3Qo
KS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7
CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
U2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3Qo
KS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFn
ZUlEKCksIGNvcmVJZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29v
a2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmll
cikKK3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHN0
YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2Fw
ZUlERm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBhdXRvIGVzY2FwZWRSZWZlcnJlciA9IGVzY2Fw
ZUZvckpTT04ocmVmZXJyZXIpOwogCi0jZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2Vk
T2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NB
TF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAi
JXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFf
QVJHU19fKQogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZf
QUxMT1dFRCgibG9nQ29va2llSW5mb3JtYXRpb246IEJMT0NLRUQgY29va2llIGFjY2VzcyBmb3Ig
d2ViUGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlEPSVzLCBmaXJzdFBhcnR5PSVzOiAi
IHN0ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCku
ZGF0YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRmlyc3RQYXJ0
eS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBz
dGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAK
LXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nv
b2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyPiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aQogICAgIGF1dG8gZXNjYXBlZElkZW50aWZpZXIgPSBlc2NhcGVJREZvckpTT04o
aWRlbnRpZmllcik7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gKGZyYW1lSUQgJiYgcGFn
ZUlEKSA/IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmly
c3RQYXJ0eSB9LCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6IGZhbHNlOwogCi0j
ZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3
b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0
YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9i
amVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9M
T0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3Jt
YXRpb246IHdlYlBhZ2VJRD0lcywgZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0lczogIiBzdHIsIGVz
Y2FwZWRQYWdlSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwg
ZXNjYXBlZElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTY4
NSw3ICsxNjg1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0df
SUZfQUxMT1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAppbmRleCA2NWNlYzljZDNjMjRkNGJjN2UzNDBkNzlkYTVkY2Q4MmZkNjYxODQ0Li4yZmI5ZmFk
NDU1YTM5YjIwMTE3NjdiZWUzNzcxNzBjMzU3NjRjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0MCw3ICsx
NDAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVO
VElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNl
c3Npb25JRCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKKyAgICBzdGF0aWMg
dm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyPik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggZDZiYzA5MDEy
MDMzMWY4MzA2MGJjZGE2MTRkOTMyYWE1OWEyMWNhMC4uZWYxOGIyN2ZiNTNlYmI1ZjY4MDk2MjUz
NGNhYThiYjFlMmNjM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC00ODksMTQgKzQ4
OSwxNSBAQCB2b2lkIERhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEbwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21h
aW4gaXMgc3BlY2lmaWVkLgotICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOworICAgIFN0
cmluZyBiaW5kUGFyYW1ldGVyOwogICAgIGlmIChkb21haW4pIHsKICAgICAgICAgYXV0byBkb21h
aW5JRFRvTWF0Y2ggPSBkb21haW5JRCgqZG9tYWluKTsKICAgICAgICAgaWYgKCFkb21haW5JRFRv
TWF0Y2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0
cmluZzo6bnVtYmVyKCpkb21haW5JRFRvTWF0Y2gpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAg
ICAgYmluZFBhcmFtZXRlciA9ICIlIl9zOwogCiAgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0g
YmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAKQEAgLTcxMiwxNyArNzEzLDE3IEBAIHZv
aWQgRGF0YWJhc2U6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKIAogdm9pZCBEYXRhYmFzZTo6YWRkRGVz
dGluYXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgU3RyaW5nIGF0dHJpYnV0
ZWRUYWJsZU5hbWUoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAg
Y29uc3RleHByIEFTQ0lJTGl0ZXJhbCBhdHRyaWJ1dGVkVGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKICAgICBTdHJpbmcgZGVzdGluYXRpb25LZXlJRENv
bHVtbk5hbWUoImRlc3RpbmF0aW9uS2V5SUQiX3MpOwogICAgIGF1dG8gY29sdW1ucyA9IGNvbHVt
bnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKTsKICAgICBpZiAoIWNvbHVtbnMuc2l6ZSgp
IHx8IGNvbHVtbnMubGFzdCgpICE9IGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKSB7CiAgICAg
ICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5h
dGlvblRva2VuIFRFWFQiX3MpOwogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRy
aWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCJfcyk7Ci0gICAgICAg
IGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlv
bktleUlEIFRFWFQiKTsKKyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRl
ZFRhYmxlTmFtZSwgImRlc3RpbmF0aW9uS2V5SUQgVEVYVCJfcyk7CiAgICAgfQogfQogCi1WZWN0
b3I8U3RyaW5nPiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKQorVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNGb3JUYWJsZShBU0NJSUxpdGVy
YWwgdGFibGVOYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgdGFibGVfaW5mbygiLCB0YWJsZU5hbWUs
ICIpIikpOwogCkBAIC03NDEsNyArNzQyLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNv
bHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICByZXR1cm4gY29sdW1u
czsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSkKK3ZvaWQgRGF0YWJhc2U6
OmFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJTGl0
ZXJhbCBjb2x1bW5OYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUsICIg
QUREIENPTFVNTiAiLCBjb2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmgKaW5kZXggMmZiN2QyNTY5ZWQzOGE1ODIzOGEyODAwZWUyNDhiNTdmNGU2ZDdm
ZS4uZTcxZDQwYmQ0OTg1OWViYzNlYWEzMzhjZDVlYjhiMDUyY2JjY2Q4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmgKQEAgLTgyLDggKzgyLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4m
IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKICAgICBTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gc29ydGVkVGFibGVzKCkgZmluYWw7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBj
b2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpOwotICAgIHZvaWQgYWRkTWlz
c2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYg
Y29sdW1uTmFtZSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKEFTQ0lJTGl0
ZXJhbCB0YWJsZU5hbWUpOworICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoQVNDSUlM
aXRlcmFsIHRhYmxlTmFtZSwgQVNDSUlMaXRlcmFsIGNvbHVtbk5hbWUpOwogCiAgICAgdXNpbmcg
U3RhdGVtZW50ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD47CiAg
ICAgbXV0YWJsZSBTdGF0ZW1lbnQgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCAyYTgyYTEx
NWExYjliYWQ1OGJhODY4ZTU1ZTU3N2NmOWY1NzNkMTQ1Li5lMmI2MzdiZDk2ODE3MjhjZTFiYWE3
ZTcwMzNlMWJmNDYzODdlY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlu
a2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFNvdXIKIAogICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25T
ZWNyZXRUb2tlbigqc2lnbmF0dXJlQmFzZTY0VVJMLCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5k
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewot
ICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0
eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgYXV0byBl
cnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biJfcyA6IHJl
c3VsdC5lcnJvcigpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdICJfcywgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpo
YW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgICAgICAgICAg
aWYgKHB1YmxpY0tleUJhc2U2NFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiVGhlIHB1YmxpYyBrZXkgVVJM
IHdhcyBlbXB0eS4iKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBUaGUgcHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIl9zKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTQwNSw3ICs0MDUs
NyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRp
b24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9
IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5lcnJvcigpOwor
ICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0
eSgpID8gIlVua25vd24iX3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcg
ZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4oKTog
JyV7cHVibGljfXMiLCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKaW5kZXggM2FhYTNjNDgwZTVmNmE5NTMwZGY4ZDhjY2ViYTJlNTc5
ZTAwMjgxMC4uZTA5ZDJlOWYzNmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyKCkKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRo
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGRhdGFiYXNlUGF0aChzZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSAr
ICIubG9jYWxzdG9yYWdlIik7CisgICAgcmV0dXJuIGRhdGFiYXNlUGF0aChtYWtlU3RyaW5nKHNl
Y3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLCAiLmxvY2Fsc3RvcmFnZSIpKTsKIH0K
IAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRpZE9wZW5EYXRhYmFzZVdpdGhP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKQEAgLTEyOSw3
ICsxMjksNyBAQCBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRh
aWxzPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OgogICAgIH0pOwogfQogCi1TdHJpbmcg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkgY29uc3QKK1N0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFi
YXNlUGF0aChTdHJpbmdWaWV3IGZpbGVuYW1lKSBjb25zdAogewogICAgIGF1dG8gbG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID0gdGhpcy0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFT
UUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgK
aW5kZXggNWJjMTNlYzM2ZjVkMmE5NmZjNjFlNzAyMmMxYzhhMWU1Yzc5MWE0Yi4uNmQ2YTA1Yzg5
YTc1MTYzOWY1MmI4NTBiMTk2ZTMxNWZiNjgwYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KSBjb25zdDsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKFN0cmluZ1ZpZXcgZmlsZW5hbWUpIGNv
bnN0OwogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIGVu
dW0gRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApp
bmRleCBjMjM0OWEwODJiNTY4ZGViZTNmYTU2ZDM1OGQ1NWRkOWM2ODhmNjI0Li5mNGU2MWQ2MDUy
YjM2ZDc0ODQ5YmJlNjZhYzIyMGY2ZjRhOGUwMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcApAQCAtMTIzLDggKzEyMyw3IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpn
ZXQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgYXV0byBsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKLSAgICBhdXRvIGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7Cisg
ICAgYXV0byBkYXRhID0gbWFwRmlsZShwYXRoKTsKIAogICAgIHJldHVybiB7IGRhdGEsIGNvbXB1
dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IGFlZTEwMmJlYzUx
YmIzNDY5MDIzZmE3Nzk1YTgyMjc0ODEzMmYyNjYuLmE5MTY5OGQ1ZGM0MmQ4NmMyOTc3MjcwYjc0
ZmUzYjE4NWM1ZTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEYXRhIERh
dGE6Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGE6
OmFkb3B0TWFwKFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKLURhdGEgbWFwRmls
ZShjb25zdCBjaGFyKiBwYXRoKQorRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlKSkKQEAgLTY0LDExICs2NCw2IEBAIERhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKQog
ICAgIHJldHVybiBhZG9wdEFuZE1hcEZpbGUoZmlsZSwgMCwgKnNpemUpOwogfQogCi1EYXRhIG1h
cEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBtYXBGaWxlKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCiBEYXRhIGFk
b3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5k
ZXggMzI4MzI5NzY3OGMxNTRlZTQ5MDdkMzE0OTNjYmY3ZjhmMDAzY2JjMC4uMTI0OTI1OWU0YjA1
MjY5NDViYzU0NWYyZjY0YTE0MjdiNWU1NjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTExMSw3ICsxMTEs
NiBAQCBwcml2YXRlOgogRGF0YSBjb25jYXRlbmF0ZShjb25zdCBEYXRhJiwgY29uc3QgRGF0YSYp
OwogYm9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmLCBjb25zdCBEYXRhJik7CiBEYXRhIGFkb3B0
QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCk7Ci1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IEZpbGVTeXN0ZW06OlNhbHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCmluZGV4IDQzMjJlNDRlOGVhMDYz
YzNkYWE4ZTJjNmRlN2E1YTA4NWY1YTgxZTguLjE3Yzk1MmE5OTg3NmNlYmJkN2M0MjEyNWZlZjcz
ZjQwNjU5MTg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCkBA
IC0xNDIsOCArMTQyLDggQEAgdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6Omhh
bmRsZUV2ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9ESUNUSU9O
QVJZKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICAgICAgaWYgKG1lc3NhZ2VOYW1l
ICE9IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisgICAgICAgIGF1dG8qIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgeHBjTWVzc2FnZU5hbWVLZXkp
OworICAgICAgICBpZiAoIW1lc3NhZ2VOYW1lIHx8IHN0cmNtcChtZXNzYWdlTmFtZSwgTGF1bmNo
U2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHN0
YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCmluZGV4
IDEwZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBhNDRlNDEuLmQyOTFhMDllOWVmMzE1
ZmI0Y2MwOWIzN2Q5NTg5Zjk3NGZiMzFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcApAQCAtMTI4
LDcgKzEyOCw3IEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3Nh
cnkoKQogICAgIGlmICghbV9kYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
U3RyaW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlU1FMKCJJdGVtVGFibGUiX3MpOwor
ICAgIFN0cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIik7
CiAgICAgaWYgKHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQgfHwgc3RhdGVt
ZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudEFsdGVybmF0aXZlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENC
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAK
aW5kZXggMGJlMzk1YzFjMzdjMmZlN2NiM2NjM2E1YjQ5NTYyYWZjNzM5ZTY0YS4uZTU5MmFhMDFj
NmM0MTE0ZWQwYzc4NTMzYzA5ZWRhNGYxMWI3YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBiCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0
cmluZyh2bSwgImJvb2wiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2
bSwgImJvb2wiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFs
dWUoKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInZhbHVlIl9zKSwgSlNDOjpqc0Jvb2xlYW4odmFsdWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CkBAIC05OSw2NyArOTksNjcgQEAg
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGIKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVl
Rm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImRvdWJsZSIpOworICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJkb3VibGUiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZmxv
YXQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0
Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDhfdCB2YWx1
ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShn
bG9iYWxPYmplY3QsIHZhbHVlLCAiaW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNv
ZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDhfdCJfcyk7
CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQxNl90IHZhbHVlKQog
ewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2Jh
bE9iamVjdCwgdmFsdWUsICJpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
TnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDE2X3QiX3MpOwog
fQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCB2YWx1ZSkKIHsK
LSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxP
YmplY3QsIHZhbHVlLCAiaW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51
bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQzMl90Il9zKTsKIH0K
IAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgImludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1l
cmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50NjRfdCJfcyk7CiB9CiAK
IHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50OF90IHZhbHVlKQogewotICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJ1aW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJp
Y0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ4X3QiX3MpOwogfQogCiB0
ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDE2X3QgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgInVpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJp
Y0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQxNl90Il9zKTsKIH0KIAog
dGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQzMl90IHZhbHVlKQogewotICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJ1aW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MzJfdCJfcyk7CiB9CiAK
IHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmpl
Y3QsIHZhbHVlLCAidWludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1l
cmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDY0X3QiX3MpOwogfQog
CiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IHZhbHVlKQogewotICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJzaXplX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAic2l6ZV90Il9zKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUmVjdFR5cGU+CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBKU0M6OkpTVmFs
dWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjbwogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6
OkludFJlY3QmJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1
ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiX3Mp
OwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6RmxvYXRS
ZWN0JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0
KGdsb2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkZsb2F0UmVjdCJfcyk7
CiB9CiAKIGJvb2wgcHV0SlNWYWx1ZUZvckRlY29kZWRBcmd1bWVudEF0SW5kZXhPckFycmF5QnVm
ZmVySWZVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
QXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxG
ZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgppbmRleCA5ZDJi
YzdhMjI2MjkyOTZjNzQxNmRjYjUwMDIzOGJlZjRmZjI5YjVlLi44MzBlYmFiOGU4NjIxODBlYjAz
MGE2NTM5NjYyNmY0Mzg5MTBjMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5j
cHAuZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKQEAgLTQxLDcgKzQxLDcg
QEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkV4cGVyaW1lbnRh
bEZlYXR1cmU6OmNyZWF0ZSg8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sICI8JT0gQHBy
ZWYubmFtZSAlPiIsIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4sIERFRkFV
TFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKKyAg
ICAgICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVm
Lmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nIHsg
PCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZP
Ul88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgppbmRl
eCA4NDljZjZmN2E4ODU3M2RmMjc5ZjNhZWQyNTExMDUwNWY3YjZjMzQ2Li5lNTY3ZjQ1YjFlNDQ1
MTZiNTJiMDM2NTBiYjlmMmU5NjRiODQ5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVh
dHVyZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgpAQCAtNDAs
NyArNDAsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlByZWZlcmVu
Y2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4K
ICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6Oklu
dGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+
LCAiPCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9u
ICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRl
biAlPiksCisgICAgICAgIEFQSTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6OmNyZWF0ZShTdHJpbmcg
eyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gfSwgIjwlPSBAcHJlZi5uYW1lICU+Il9z
LCBTdHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IH0sIERFRkFV
TFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKIDwl
LSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmlu
ZGV4IDVjNjMxZWRkYzk2N2NjZThhMTEwYmM0MGQyNzY5ZTJjZjkzNWQ2NDYuLmE2ZTI1Y2M0MDM0
NjdhNTAzZThlZWMxMDdhOGY3ZTQ3ZjgxYzM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC00Miw5ICs0Miw5
IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsYXNzTmFtZUtleSA9
ICIkY2xhc3MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFN0cmVhbUtleSA9ICIk
b2JqZWN0U3RyZWFtIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdLZXkgPSAiJHN0
cmluZyI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gY2xhc3NOYW1lS2V5ID0gIiRjbGFzcyJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBvYmplY3RTdHJlYW1LZXkgPSAiJG9iamVjdFN0cmVhbSJf
czsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzdHJpbmdLZXkgPSAiJHN0cmluZyJfczsKIAogc3Rh
dGljIE5TU3RyaW5nICogY29uc3Qgc2VsZWN0b3JLZXkgPSBAInNlbGVjdG9yIjsKIHN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IHR5cGVTdHJpbmdLZXkgPSBAInR5cGVTdHJpbmciOwpAQCAtNDQwLDcg
KzQ0MCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIg
KmVuY29kZXIsIGlkIG9iamVjdCkKICAgICAgICAgZW5jb2Rlci0+X29iamVjdHNCZWluZ0VuY29k
ZWQucmVtb3ZlKG9iamVjdCk7CiAgICAgfSk7CiAKLSAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rp
b25hcnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoY2xhc3NfZ2V0TmFt
ZShvYmplY3RDbGFzcykpKTsKKyAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNldChj
bGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgY2xhc3NfZ2V0TmFtZShv
YmplY3RDbGFzcykgfSkpOwogCiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNJbnZv
Y2F0aW9uIGNsYXNzXV0pIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBzcGVjaWFsIGNhc2UgTlNJ
bnZvY2F0aW9uIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gZW5jb2RlIHRoZSB0YXJnZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KaW5kZXggYjk4OTY2ZWNhZDQxYjQ4ZWVjZDI1ODIyYjRjM2MxZTZkOThhMDg3
ZS4uN2Q4ODU2MjI4NDhlZjdmNzlhNGRmMWQzM2NkNjA3YTdmMmUxNDU3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKHZvaWQpX3NlbmRJbnZvY2F0aW9uOihOU0lu
dm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50CiAgICAg
ICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6
cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkKICAgICAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJS
ZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcuICglcykiLCBzZWxf
Z2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVwbHlJbmZvID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJh
dGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CisgICAgICAgIHJlcGx5
SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUlu
Zm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmluZyB7IHJlcGx5QmxvY2tTaWduYXR1
cmUgfSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0
IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpAQCAtMjI3LDcg
KzIyNyw3IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJv
dG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAgICAgaWYgKCF0YXJnZXRNZXRob2RT
aWduYXR1cmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gW3RhcmdldE1ldGhv
ZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0u
X3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKKyAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVy
ZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJp
bmc7CiB9CiAKIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmpl
Y3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0aW9uCkBAIC0yNzAsNyArMjcwLDcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAgICAgIFN0cmluZyB3aXJlQmxvY2tT
aWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBs
eUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwogICAgICAg
ICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2lu
dGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCiAgICAgICAgIGlm
IChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNWJhOTJiYjgy
MzlmMjgwOWIwMTg0YzRkZjczMDk5OWM0MzBmNGQ0NS4uZjFiZmNmODdiMzc0MDViYjk2NjgxNGY4
YzE2NDNiYjYyN2E0NjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTg1LDI3ICsxODUsMjcgQEAgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJiBoYW5kbGUp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTYW5kYm94RXh0ZW5zaW9uKGhhbmRsZSkpOwogfQog
Ci1TdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgpCitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdWaWV3IHBh
dGgpCiB7CiAgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhdID0geyAwIH07CiAgICAgcmVh
bHBhdGgocGF0aC51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFBhdGgpOwogICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHJlc29sdmVkUGF0aCk7CiB9CiAKLVN0cmluZyByZXNvbHZlQW5kQ3JlYXRl
UmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgp
CitTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24oU3RyaW5nVmlldyBwYXRoKQogewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAg
IE5TU3RyaW5nICpuc1BhdGggPSBwYXRoOworICAgIGF1dG8gbnNQYXRoID0gcGF0aC5jcmVhdGVO
U1N0cmluZ1dpdGhvdXRDb3B5aW5nKCk7CiAKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOm5zUGF0aCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl0pIHsKLSAgICAgICAg
TlNMb2coQCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVAXCIgZm9yIGZ1dHVyZSBzYW5k
Ym94IGV4dGVuc2lvbiwgZXJyb3IgJUAiLCBuc1BhdGgsIGVycm9yKTsKKyAgICBpZiAoIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOm5zUGF0aC5n
ZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
OiZlcnJvcl0pIHsKKyAgICAgICAgTlNMb2coQCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBc
IiVAXCIgZm9yIGZ1dHVyZSBzYW5kYm94IGV4dGVuc2lvbiwgZXJyb3IgJUAiLCBuc1BhdGguZ2V0
KCksIGVycm9yKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpOwogfQogCi1TdHJpbmcgcmVzb2x2ZVBh
dGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyByZXNvbHZl
UGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKQogewogICAgIFN0cmluZyBy
ZXNvbHZlZFBhdGggPSBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBhdGgpOwogICAg
IGlmIChyZXNvbHZlZFBhdGguaXNOdWxsKCkpIHsKQEAgLTIxNiw3ICsyMTYsNyBAQCBTdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBy
ZXR1cm4gcmVzb2x2ZWRQYXRoOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlKSAt
PiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgVHlwZQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBl
KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4KIHsKICAgICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2
ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpLCB0eXBlKTsKIH0KQEAgLTI1OSw3ICsyNTks
NyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVz
KEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29ucwogICAgIH0pOwogfQogCi1hdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldyBwYXRoKSAtPiBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAg
aWYgKHJlc29sdmVkUGF0aC5pc051bGwoKSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpIC0+CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHJlc29sdmVkUGF0aCwgVHlwZTo6UmVhZFdyaXRlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBU
eXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KK2F1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdW
aWV3IHByZWZpeCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUs
IFN0cmluZz4+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pOwpAQCAtMjg0LDExICsyODQsMTIgQEAgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBU
eXBlIHQKICAgICBpZiAocGF0aC5sYXN0KCkgIT0gJy8nKQogICAgICAgICBwYXRoLmFwcGVuZCgn
LycpOwogICAgIAotICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLiAgICAKLSAgICBwYXRoLmFw
cGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKKyAgICAvLyBBcHBl
bmQgdGhlIGZpbGUgbmFtZS4KKyAgICBhdXRvIHByZWZpeEFzVVRGOCA9IHByZWZpeC51dGY4KCk7
CisgICAgcGF0aC5hcHBlbmQocHJlZml4QXNVVEY4LmRhdGEoKSwgcHJlZml4QXNVVEY4Lmxlbmd0
aCgpKTsKICAgICBwYXRoLmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFN0cmluZzo6ZnJvbVVURjgocGF0aC5k
YXRhKCkpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3gg
ZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzM5
LDcgKzM0MCw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTCiAgICAgcmV0dXJuIGNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXpl
KCkgfSwgYXVkaXRUb2tlbiwgZmxhZ3MpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90
b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0
aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsK
ICAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQubW0KaW5kZXggYTNkYjRhZjRjMTIzYjZlNmE5MWVhMWVjZGMxM2RiODJhMWJjOGIy
NC4uOWMzZWM0MDk1YTk0NzI3MWZkMTAyMTc3YjhiMDViMGY3NzhiOWZhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpA
QCAtNzIsMTMgKzcyLDEzIEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dENvbm5lY3Rpb25JZGVudGlmaWVyKElQQzo6Q29ubmVjdGlvbjo6SWRlCiAKIGJvb2wgWFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGll
bnRJZGVudGlmaWVyKQogewotICAgIGNsaWVudElkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKTsKKyAg
ICBjbGllbnRJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyht
X2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1pZGVudGlmaWVyIikgfTsKICAgICByZXR1cm4g
IWNsaWVudElkZW50aWZpZXIuaXNFbXB0eSgpOwogfQogCiBib29sIFhQQ1NlcnZpY2VJbml0aWFs
aXplckRlbGVnYXRlOjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50QnVu
ZGxlSWRlbnRpZmllcikKIHsKLSAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRl
bnRpZmllciIpOworICAgIGNsaWVudEJ1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcgeyB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1p
ZGVudGlmaWVyIikgfTsKICAgICByZXR1cm4gIWNsaWVudEJ1bmRsZUlkZW50aWZpZXIuaXNFbXB0
eSgpOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWYKIAog
Ym9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUo
U3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKIHsKLSAgICBjbGllbnRQcm9jZXNzTmFtZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNz
LW5hbWUiKTsKKyAgICBjbGllbnRQcm9jZXNzTmFtZSA9IFN0cmluZyB7IHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNzLW5hbWUiKSB9Owog
ICAgIHJldHVybiAhY2xpZW50UHJvY2Vzc05hbWUuaXNFbXB0eSgpOwogfQogCkBAIC0xMTksMzAg
KzExOSwzMCBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUlu
aXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgUwogewogICAgIHhwY19vYmplY3RfdCBl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUobV9pbml0aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CiAK
LSAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKTsK
KyAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKSB9
OwogICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmFkZCgiaW5zcGVjdG9yLXByb2Nlc3MiX3MsIGluc3BlY3RvclByb2Nl
c3MpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFN0cmluZyBzZXJ2aWNlV29y
a2VyUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6
YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpOworICAgIFN0cmluZyBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpIH07CiAg
ICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgV1RGTW92ZShz
ZXJ2aWNlV29ya2VyUHJvY2VzcykpOwotICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0
LCAicmVnaXN0cmFibGUtZG9tYWluIik7CisgICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWluIHsg
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmpl
Y3QsICJyZWdpc3RyYWJsZS1kb21haW4iKSB9OwogICAgIGlmICghcmVnaXN0cmFibGVEb21haW4u
aXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJh
YmxlLWRvbWFpbiJfcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpOwogI2VuZGlmCiAKLSAg
ICBTdHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKTsKKyAgICBT
dHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRy
YURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKSB9OwogICAgIGlm
ICghaXNQcmV3YXJtZWRQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQiX3MsIGlzUHJld2FybWVkUHJvY2Vzcyk7CiAKICAg
ICBpZiAoIWlzQ2xpZW50U2FuZGJveGVkKCkpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJEaXJlY3Rv
cnlTdWZmaXggPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOworICAgICAgICBTdHJpbmcg
dXNlckRpcmVjdG9yeVN1ZmZpeCB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAidXNlci1kaXJlY3Rvcnktc3VmZml4IikgfTsKICAg
ICAgICAgaWYgKCF1c2VyRGlyZWN0b3J5U3VmZml4LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2Vy
RGlyZWN0b3J5U3VmZml4KTsKICAgICB9CiAKLSAgICBTdHJpbmcgYWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Iik7
CisgICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiYWx3YXlz
LXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpIH07CiAgICAgaWYgKCFhbHdheXNSdW5zQXRC
YWNrZ3JvdW5kUHJpb3JpdHkuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsIGFsd2F5c1J1
bnNBdEJhY2tncm91bmRQcmlvcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCBkODYwZTdjN2FiMDYwMTZmZGYxMDdjNGNmMWRk
YTVjMzdmMzMyZmIxLi4xMDhjYjA4YWFiOGU2ZTUxODVhYTUxYWJiMGI2ZGYyYjUzNDQxMzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCkBA
IC0yMDMsNyArMjAzLDcgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioqKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgU3RyaW5nIHdlYktpdEJ1
bmRsZVZlcnNpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwg
IldlYktpdEJ1bmRsZVZlcnNpb24iKTsKKyAgICAgICAgU3RyaW5nIHdlYktpdEJ1bmRsZVZlcnNp
b24geyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1
bmRsZVZlcnNpb24iKSB9OwogICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uID0g
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdLmluZm9E
aWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldOwogICAg
ICAgICBpZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgIWV4cGVjdGVkQnVuZGxl
VmVyc2lvbi5pc051bGwoKSAmJiB3ZWJLaXRCdW5kbGVWZXJzaW9uICE9IGV4cGVjdGVkQnVuZGxl
VmVyc2lvbikgewogICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJX
ZWJLaXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0Y2g6ICIsIHdlYktpdEJ1bmRsZVZlcnNpb24s
ICIgIT0gIiwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
Y3BwCmluZGV4IDBkNTc0YjBjYzUwMzQxMzMyMTdmZTM5ZjBiMDQwYjU3OWQyZmMxYzAuLjhhOTk2
MTE2ODMzOTNhZTc5NzBiZjk1OWU1MmViYzkyYjY1ZWZmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBD
VGVzdGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBX
S01lc3NhZ2VUZXN0RHJpdmVyRnVuYyBtZXNzYWdlVGVzdERyaXZlcihTdHJpbmcmJiBkcml2ZXJO
YW1lKQogewogICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09ICJk
ZWZhdWx0IikKLSAgICAgICAgZHJpdmVyTmFtZSA9IGdldGVudigiV0VCS0lUX01FU1NBR0VfVEVT
VF9ERUZBVUxUX0RSSVZFUiIpOworICAgICAgICBkcml2ZXJOYW1lID0gU3RyaW5nIHsgZ2V0ZW52
KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIikgfTsKICAgICBpZiAoZHJpdmVy
TmFtZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCiAgICAgICAgIHJldHVy
biBkZWZhdWx0VGVzdERyaXZlcjsKICAgICBhdXRvIHRlc3REcml2ZXIgPSByZWludGVycHJldF9j
YXN0PFdLTWVzc2FnZVRlc3REcml2ZXJGdW5jPihkbHN5bShSVExEX0RFRkFVTFQsIGRyaXZlck5h
bWUudXRmOCgpLmRhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuY3BwCmluZGV4IDg2NjQ5YTc3MTFkYmE3MTRlYWEwMTVmM2YyNmY5Zjdk
NmMyN2Q5NWUuLmExMGI4YzcxNDBkODgxOWQyMjVjOWMxOWZhZWM4Zjc5ZTU1YjQyMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNp
b25FcnJvciBlcnJvcikKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gIkludGVybmFsRXJyb3IiOworICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciJfczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5z
aW9uLmgKaW5kZXggNWRkYTMwY2Q3ZjYxNzlmODM4YzkwZGMyYWY1NzgzYmE1MjFlNmU5Mi4uYjJi
YTUyMzIyY2RhNDk5ODc1ODI1MWMyMDIzOTU0MTkyMjVkYzBkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaApAQCAtODQsMTcgKzg0LDE3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIAogICAgIHN0YXRpYyBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKEhhbmRs
ZSYmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSk7CiAgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJl
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxIYW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgVHlwZSk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5k
bGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gV2lsbCBhdHRl
bXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldyBwYXRoLCBUeXBl
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpOyAvLyBXaWxsIGF0dGVtcHQgdG8gY3JlYXRl
IHRoZSBkaXJlY3RvcnkuCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRs
ZSwgU3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZp
eCwgVHlwZSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVG
b3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcyk7CiAjaWYgSEFW
RShBVURJVF9UT0tFTikKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3Rh
dGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9w
dGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYg
cGF0aCwgYXVkaXRfdG9rZW5fdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBj
cmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9r
ZW5fdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJ
T0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bnMoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRp
ZgpAQCAtMTE4LDkgKzExOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVN0cmluZyBzdHJp
bmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJp
bmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKTsKK1N0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5Q
YXRoKFN0cmluZ1ZpZXcgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5z
aW9uKFN0cmluZ1ZpZXcgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKTsKIAogI2lmICFFTkFC
TEUoU0FOREJPWF9FWFRFTlNJT05TKQogCkBAIC0xMjksMTEgKzEyOSwxMSBAQCBpbmxpbmUgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgeyByZXR1cm4gSGFuZGxlIHsgfTsgfQog
aW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUo
SGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhh
bmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgLT4gVmVjdG9yPEhhbmRsZT4geyByZXR1cm4geyB9OyB9Ci1pbmxpbmUgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBT
dHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsg
fTsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJl
dHVybiBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4geyByZXR1cm4gc3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPiB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldykgLT4gc3Rk
OjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldywg
VHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVy
biBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsgfTsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgU2Fu
ZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKSB7IH0KIGlubGluZSBib29sIFNhbmRi
b3hFeHRlbnNpb246OnJldm9rZSgpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE0MSw5ICsxNDEsOSBA
QCBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4gdHJ1ZTsg
fQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KGNvbnN0IEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBib29sIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8SGFuZGxlPiYpIHsg
cmV0dXJuIHRydWU7IH0KLWlubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KLWlubGluZSBTdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1
cm4gcGF0aDsgfQotaW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7
IH0KK2lubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdW
aWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQoraW5saW5lIFN0cmluZyByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRo
LnRvU3RyaW5nKCk7IH0KK2lubGluZSBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRo
LnRvU3RyaW5nKCk7IH0KIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggMjFlNmQ4NzU3MTM1OWQ5MWMyM2M1YjBiNjA5
ODk4NDMzYTlhMWZhNC4uNmIwODRkZmFmZmVkN2ZlOGYwYzRkOTZmN2RiN2VjMTY3YTRlNjY1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0K
QEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbmRib3hEYXRhVmF1bHRQYXJlbnRE
aXJlY3RvcnkoKQogICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2Fs
aXplIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwg
c2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAg
ICAgfQotICAgIHJldHVybiByZXNvbHZlZFBhdGg7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgocmVzb2x2ZWRQYXRoKTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5kYm94RGlyZWN0b3J5KFdl
YkNvcmU6OkF1eGlsaWFyeVByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBjb25zdCBTdHJpbmcmIHBh
cmVudERpcmVjdG9yeSkKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgYm9vbCBhcHBseVNhbmRi
b3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dAogCiBzdGF0aWMgU3RyaW5nIGdldFVzZXJEaXJlY3RvcnlTdWZmaXgoY29uc3QgQXV4aWxpYXJ5
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBhdXRv
IHVzZXJEaXJlY3RvcnlTdWZmaXggPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmZpbmQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOworICAgIGF1dG8gdXNlckRpcmVjdG9yeVN1
ZmZpeCA9IHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZmluZCgidXNlci1kaXJl
Y3Rvcnktc3VmZml4Il9zKTsKICAgICBpZiAodXNlckRpcmVjdG9yeVN1ZmZpeCAhPSBwYXJhbWV0
ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBzdWZm
aXggPSB1c2VyRGlyZWN0b3J5U3VmZml4LT52YWx1ZTsKICAgICAgICAgYXV0byBmaXJzdFBhdGhT
ZXBhcmF0b3IgPSBzdWZmaXguZmluZCgnLycpOwpAQCAtNzA0LDkgKzcwNCw5IEBAIHN0YXRpYyB2
b2lkIHBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0CiAKICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVy
KCJIT01FX0RJUiIsIHB3ZC5wd19kaXIpOwogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9t
VVRGOChwd2QucHdfZGlyKTsKLSAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKKyAgICBwYXRo
LmFwcGVuZCgiL0xpYnJhcnkiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJh
bWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7Cisg
ICAgcGF0aC5hcHBlbmQoIi9QcmVmZXJlbmNlcyJfcyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMu
YWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4
Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3Rv
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4
IDkyMGRlMDBiYjY4NjIwMmI2YzFkNjRmYWFkNzEyMzU5YzE2MDI3OGYuLjliZGU1MDUyN2QzNTU1
ZWIzMjczODM2NWExZjdjMmZjNGYxMzhjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDY5LDIwICs0NjksMjAgQEAgV2ViS2V5Ym9hcmRFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQs
IGJvb2wgaGEKIAogICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBk
b24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4K
ICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewotICAgICAgICB0
ZXh0ID0gIlxyIjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICB0ZXh0
ID0gIlxyIl9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAg
Ly8gQXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3Jy
ZWN0IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4KICAgICBpZiAod2luZG93c1Zp
cnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKLSAgICAgICAgdGV4dCA9ICJceDgiOwotICAgICAg
ICB1bm1vZGlmaWVkVGV4dCA9ICJceDgiOworICAgICAgICB0ZXh0ID0gIlx4OCJfczsKKyAgICAg
ICAgdW5tb2RpZmllZFRleHQgPSB0ZXh0OwogICAgIH0KIAogICAgIC8vIEFsd2F5cyB1c2UgOSBm
b3IgVGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0
ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RB
QikgewotICAgICAgICB0ZXh0ID0gIlx4OSI7Ci0gICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4
OSI7CisgICAgICAgIHRleHQgPSAiXHg5Il9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRl
eHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5t
b2RpZmllZFRleHQsIGtleSwgY29kZSwga2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlD
b2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgbWFjQ2hhckNvZGUsIGhhbmRsZWRCeUlucHV0TWV0
aG9kLCBjb21tYW5kcywgYXV0b1JlcGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmll
cnMsIHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBjMGE2NGZlZmJkMmY0NWMxMmFkOWNi
ZTJjNzg4M2IyNTE5ZDg4YjQ0Li5hYWM2MGI2NWIwMjc2NzU3M2IwMDcxODUxZjAxNmY0ZGUyNjgz
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3Ry
aW5nJiBwYQogewogICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZv
clBhdGgocGF0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCkpOworICAgIFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhIGZpbGVE
YXRhID0gbWFwRmlsZShwYXRoKTsKICAgICBpZiAoZmlsZURhdGEuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBtZXRhRGF0YSA9IGRlY29kZUNvbnRlbnRS
dWxlTGlzdE1ldGFEYXRhKGZpbGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKaW5kZXggZWViY2M5MmQ3OTlhNTViYWQxNzExNWNiODZh
N2M4YmM4NzA0NjMzNi4uYzJhYWQzNmZkZTdmZjllMjE0NDdkY2E0M2JiZTBmMTMzOTgzZGI4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAK
QEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdLRG93bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKIAogICAgICAgICB2b2lk
IHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlk
ZQogICAgICAgICB7Ci0gICAgICAgICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxv
YWQucmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25s
b2FkIiB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBk
b3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcg
ZG93bmxvYWQiX3MgfSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAppbmRleCBlMjU0OTI2ZGM1MWE0OWFlYmE0OThkNzk0OWFhZmM4MDdh
NGI3MjI5Li40MTE1MGI3ZDE1ZmIyZjU0ZGI1N2U2ODA3ZDU1ODQxNWU3ZDljYzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTUxNSwxMyArNTE1LDEzIEBA
IHZvaWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiBXS1N0cmluZ1JlZiBX
S1BhZ2VHZXRTZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6
U3RyaW5nJiBzZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
IlNlc3Npb25IaXN0b3J5VVJMIikubGVha1JlZigpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYg
c2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9u
SGlzdG9yeVVSTCJfcykubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkhpc3Rv
cnlVUkxWYWx1ZVR5cGUpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9uQmFja0Zv
cndhcmRMaXN0SXRlbVZhbHVlVHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNz
aW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lv
bkJhY2tGb3J3YXJkTGlzdEl0ZW0iKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5n
JiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgi
U2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iX3MpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9B
UEkoJnNlc3Npb25CYWNrRm9yd2FyZExpc3RWYWx1ZVR5cGUpOwogfQogCkBAIC0xNTgyLDIxICsx
NTgyLDIxIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBpZiAobV9jbGll
bnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHx8IG1fY2xpZW50LmNyZWF0
ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkgewogICAgICAgICAgICAgICAgIEFQSTo6
RGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd0ZlYXR1
cmVzLngpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoIngiLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKCp3aW5kb3dGZWF0dXJlcy54KSk7CisgICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoIngi
X3MsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLngpKTsKICAgICAgICAgICAg
ICAgICBpZiAod2luZG93RmVhdHVyZXMueSkKLSAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgi
eSIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLnkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbWFwLnNldCgieSJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVy
ZXMueSkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy53aWR0aCkKLSAgICAg
ICAgICAgICAgICAgICAgbWFwLnNldCgid2lkdGgiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5k
b3dGZWF0dXJlcy53aWR0aCkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ3aWR0aCJf
cywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMud2lkdGgpKTsKICAgICAgICAg
ICAgICAgICBpZiAod2luZG93RmVhdHVyZXMuaGVpZ2h0KQotICAgICAgICAgICAgICAgICAgICBt
YXAuc2V0KCJoZWlnaHQiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy5oZWln
aHQpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJtZW51QmFyVmlzaWJsZSIsIEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAg
ICAgICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJ0b29sQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRv
b2xCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNp
YmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNp
YmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgic2Nyb2xsYmFyc1Zpc2libGUiLCBBUEk6
OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSkpOwotICAg
ICAgICAgICAgICAgIG1hcC5zZXQoInJlc2l6YWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzLnJlc2l6YWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxz
Y3JlZW4iLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7
Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgiZGlhbG9nIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUo
d2luZG93RmVhdHVyZXMuZGlhbG9nKSk7CisgICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoImhl
aWdodCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMuaGVpZ2h0KSk7Cisg
ICAgICAgICAgICAgICAgbWFwLnNldCgibWVudUJhclZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6
Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAg
bWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93
RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoInRv
b2xCYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50b29s
QmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJs
ZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNp
YmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgic2Nyb2xsYmFyc1Zpc2libGUiX3MsIEFQ
STo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7Cisg
ICAgICAgICAgICAgICAgbWFwLnNldCgicmVzaXphYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5yZXNpemFibGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJm
dWxsc2NyZWVuIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2Ny
ZWVuKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgiZGlhbG9nIl9zLCBBUEk6OkJvb2xlYW46
OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cpKTsKICAgICAgICAgICAgICAgICBSZWY8QVBJ
OjpEaWN0aW9uYXJ5PiBmZWF0dXJlc01hcCA9IEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1v
dmUobWFwKSk7CiAKICAgICAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDhlNjc1YjM5OTA3YmJjZDdhOTI0YzQ2Yzc4MGY3
MTQyZjBlYzk1MWEuLjFhNzNhNzBjYWM5OTY4MjY5YzQ2N2E4ODY3ZjgyMWM0YjBkYmEyYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBA
IC00MSwxMyArNDEsMTMgQEAgV0tUeXBlSUQgV0tQcmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdL
UHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZSgpCiB7Ci0gICAgYXV0byBwcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iX3Ms
ICJXZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRvQVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVmKCkp
OwogfQogCiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJlZmVyZW5jZXNDcmVhdGVXaXRoSWRlbnRpZmll
cihXS1N0cmluZ1JlZiBpZGVudGlmaWVyUmVmKQogewotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBX
ZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50
aWZpZXJSZWYpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhp
ZGVudGlmaWVyUmVmKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHJldHVybiB0
b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVDb2NvYS5tbQppbmRleCAzZDY1NzlmNTJjZTM1MDFhODYxYzNmNjU1ZWZiZWQyNGU4MWUxMmU0
Li4yMTU2Y2UwOTNiMjc0YTEzOTZlMGU3YTc0YjkxZjZhMjJkNTVjZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQpAQCAtNTgsNyArNTgsNyBAQCBXVEY6OlN0cmluZyBDb250
ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCgpCiAgICAgaWYgKCFbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmNvbnRlbnRSdWxlTGlz
dFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5nZXQo
KSk7CiAKLSAgICByZXR1cm4gW2NvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRl
VVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KFtjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0u
cGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRS
dWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggOWZhNzFiMDc1YTAzZmYxZGZkZDAwMTdlNDVjODEy
OTk1OWQzNWQ4My4uYTJiN2M1YjdjYWFlNzg5MzA5ZmQ2NmQ3Y2YyYzIxYjg1ZTQ5NDU2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTc5LDcgKzc5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRl
ZmF1bHRTdG9yZQogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTDooTlNVUkwgKil1cmwKIHsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6
Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1
bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgoU3RyaW5nOjpmcm9tVVRGOCh1cmwuYWJzb2x1dGVV
UkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkpOwogI2Vsc2UKICAgICByZXR1cm4gbmlsOwog
I2VuZGlmCkBAIC0xOTQsNyArMTk0LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZVdp
dGhMZWdhY3lGaWxlbmFtZQogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTEFuZExlZ2FjeUZp
bGVuYW1lOihOU1VSTCAqKXVybAogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0g
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0
aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7CisgICAgcmV0dXJu
IHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aChTdHJpbmc6
OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKSk7CiAj
ZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXggZWIyMzIxNjljZmI4YWEyYjIy
ZGU3MTM4Zjk4YWVmNDZjMzkwNDhjNS4uNTlmYjhkYzBhNzgxYzdlYWFkZWZiNjEyYTVmMzExMjYx
YjJmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJQcmVmZXJlbmNlcz4o
c2VsZiwgU3RyaW5nKCksICJXZWJLaXQiLCAiV2ViS2l0RGVidWciKTsKKyAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+KHNlbGYsIFN0cmlu
ZygpLCAiV2ViS2l0Il9zLCAiV2ViS2l0RGVidWciX3MpOwogICAgIHJldHVybiBzZWxmOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBmZGQyZjZlMGRhNGIwNmNkYWRhZDE2MzNiMDE0ZDViZDhiZTE5NjJmLi42YjJlZmE3
MjFjZGQ4MmRkMDEwMDUyNjhmNTFkZmFiOWE3MDhkM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTY1LDEwICs2NSwxMCBA
QCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1
bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdQogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc0lkZW50
aWZpZXIgPSBtX3Byb2Nlc3NJZGVudGlmaWVyOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIHVzZXJE
aXJlY3RvcnlTdWZmaXggPSBnZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgiKSkKLSAg
ICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInVzZXItZGly
ZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7CisgICAgICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgi
X3MsIFN0cmluZzo6ZnJvbVVURjgodXNlckRpcmVjdG9yeVN1ZmZpeCkpOwogCiAgICAgaWYgKG1f
YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KQotICAgICAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlv
cml0eSJfcywgInRydWUiKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsICJ0cnVl
Il9zKTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggNjBjMGQ5
ZGFlMGYwZDZhZGM1NmNmZDFjOGNmMTBlZjk0M2Q1MWQzNS4uMjA3MmI1YjZiMWNiOTBmOGY2Mjdm
Njk2NWMzMTBmMDFlN2Y0YjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJh
bWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBTdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFtZSgpCiAgICAgICAg
IHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKCk7CiAgICAgICAgIGF1dG8mIHVybCA9IG1fcmVxdWVzdHNUb0xvYWQuZmly
c3QoKS5maXJzdDsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihtX3JlcXVlc3RzVG9Mb2FkLmZpcnN0
KCkuc2Vjb25kLCBbJl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7Ci0gICAgICAgICAg
ICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAidGV4dC9odG1sIiwg
IlVURi04IiwgdXJsKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkRGF0YShJUEM6OkRhdGFSZWZl
cmVuY2UoZGF0YSksICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgdXJsKTsKICAgICAgICAgfSwg
WyZdKGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpIHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkVVJM
KHVybCwgcmVmZXJyZXIpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tCmluZGV4IDBlYzExNzQzYmIxZDhm
MzlhMjUwYjUxYjNlNTc4NGJhZTFlNTBlMzAuLmZlNDViNzQ1NGQ3YjRiMzA4NzVlMGU2ZTNjMTc3
OTQ1NmFkN2FhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YktpdFN3aWZ0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViS2l0U3dpZnRTb2Z0TGluay5tbQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkKiBXZWJLaXRTd2lm
dExpYnJhcnkoYm9vbCBpc09wdGlvbmFsKQogICAgICAgICAvLyBUaGVuIHNlYXJjaCBpbiB0aGUg
RnJhbWV3b3Jrcy8gZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50bHkgbG9hZGVkIHZlcnNpb24gb2Yg
V2ViS2l0LmZyYW1ld29yazoKICAgICAgICAgRGxfaW5mbyBpbmZvIHsgfTsKICAgICAgICAgaWYg
KGRsYWRkcigoY29uc3Qgdm9pZCopJldlYktpdFN3aWZ0TGlicmFyeSwgJmluZm8pICYmIHN0cmxl
bihpbmZvLmRsaV9mbmFtZSkpIHsKLSAgICAgICAgICAgIGF1dG8gd2Via2l0RnJhbWV3b3JrRGly
ZWN0b3J5ID0gV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGFyZW50UGF0aChpbmZvLmRsaV9mbmFtZSk7
CisgICAgICAgICAgICBhdXRvIHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSA9IFdURjo6RmlsZVN5
c3RlbUltcGw6OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChpbmZvLmRsaV9mbmFtZSkpOwog
ICAgICAgICAgICAgYXV0byBkeWxpYlBhdGggPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5LCAiRnJhbWV3b3Jrcy9s
aWJXZWJLaXRTd2lmdC5keWxpYiIpOwogICAgICAgICAgICAgaWYgKChsaWJyYXJ5ID0gZGxvcGVu
KGR5bGliUGF0aC51dGY4KCkuZGF0YSgpLCBSVExEX05PVykpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCmluZGV4IDI4YTU4NTFmNWVlMGFjMGEzNGJhNzczZGQ2MTM0MzdiZjU0ODcx
NzMuLjgwODU3MzIzZjlkOGY5YzM4ZjYxYTkyMWI3ZGViODQ0YjgwMGYyNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpA
QCAtMjgyLDcgKzI4Miw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURp
cmVjdG9yeSgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9y
U2FuZGJveEV4dGVuc2lvbnMoKQogewotICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5k
bGVSZXNvdXJjZVBhdGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSByZXNvdXJjZVBhdGhdKTsKKyAgICBtX3Jlc29sdmVkUGF0aHMudWlQcm9j
ZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0
cmluZyB7IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSB9KTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IDAwNzRkY2E3NzI3YTk2ODc0ZmIxZWQzODQ3ZjUxOWUxNjA0YTUz
ZjcuLmE3YmYzZDJkYzRkNmUzMmVlNmNiZjZjMjAyMGU1ZWNkY2M3MGVhYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC05MjYsMTcgKzkyNiwx
NyBAQCAtICh2b2lkKV93a0NoYW5nZVRleHRTdHlsZTooaWQpc2VuZGVyCiAKICAgICBpZiAoW3Nl
bGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjBdICE9IF90ZXh0SXNCb2xkKSB7CiAg
ICAgICAgIF90ZXh0SXNCb2xkID0gIV90ZXh0SXNCb2xkOwotICAgICAgICBfd2ViVmlld0ltcGwt
PnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoQCJUb2dnbGVCb2xkIiwgQCIiKTsKKyAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVCb2xkIl9zLCBl
bXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0
ZWRGb3JTZWdtZW50OjFdICE9IF90ZXh0SXNJdGFsaWMpIHsKICAgICAgICAgX3RleHRJc0l0YWxp
YyA9ICFfdGV4dElzSXRhbGljOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRl
RWRpdENvbW1hbmQoIlRvZ2dsZUl0YWxpYyIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+
cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xlSXRhbGljIl9zLCBlbXB0eVN0cmluZygp
KTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50
OjJdICE9IF90ZXh0SXNVbmRlcmxpbmVkKSB7CiAgICAgICAgIF90ZXh0SXNVbmRlcmxpbmVkID0g
IV90ZXh0SXNVbmRlcmxpbmVkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRl
RWRpdENvbW1hbmQoIlRvZ2dsZVVuZGVybGluZSIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1w
bC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5lIl9zLCBlbXB0eVN0
cmluZygpKTsKICAgICB9CiB9CiAKQEAgLTk1NSwxOSArOTU1LDE5IEBAIC0gKHZvaWQpX3drQ2hh
bmdlVGV4dEFsaWdubWVudDooaWQpc2VuZGVyCiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAg
ICBjYXNlIE5TVGV4dEFsaWdubWVudExlZnQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVu
dCA9IE5TVGV4dEFsaWdubWVudExlZnQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4
ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25MZWZ0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBs
LT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkxlZnQiX3MsIGVtcHR5U3RyaW5nKCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudFJpZ2h0OgogICAgICAg
ICBfY3VycmVudFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRSaWdodDsKLSAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0IiwgQCIi
KTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGln
blJpZ2h0Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1Rl
eHRBbGlnbm1lbnRDZW50ZXI6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4
dEFsaWdubWVudENlbnRlcjsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVk
aXRDb21tYW5kKCJBbGlnbkNlbnRlciIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFn
ZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25DZW50ZXIiX3MsIGVtcHR5U3RyaW5nKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudEp1c3RpZmllZDoKICAgICAg
ICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOwotICAg
ICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduSnVzdGlm
aWVkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21t
YW5kKCJBbGlnbkp1c3RpZmllZCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTkzLDcgKzk5Myw3IEBAIC0gKHZvaWQp
X3drQ2hhbmdlQ29sb3I6KGlkKXNlbmRlcgogICAgICAgICByZXR1cm47CiAKICAgICBfdGV4dENv
bG9yID0gc2VsZi5jb2xvclBpY2tlckl0ZW0uY29sb3I7Ci0gICAgX3dlYlZpZXdJbXBsLT5wYWdl
KCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9u
Rm9ySFRNTChXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7
CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3Ii
X3MsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29h
Q29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsKIH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRl
eHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTUxMzIsNyArNTEzMiw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6Omluc2VydFRleHQoaWQgc3RyaW5nLCBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAg
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4qIGtleXByZXNzQ29tbWFuZHMgPSBtX2Nv
bGxlY3RlZEtleXByZXNzQ29tbWFuZHM7CiAgICAgaWYgKGtleXByZXNzQ29tbWFuZHMgJiYgIW1f
aXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29mdFNwYWNlKSB7CiAgICAgICAgIEFTU0VSVChyZXBs
YWNlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpOwotICAgICAgICBXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQgY29tbWFuZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KTsKKyAgICAgICAgV2Vi
Q29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQoImluc2VydFRleHQ6Il9zLCB0ZXh0KTsKICAg
ICAgICAga2V5cHJlc3NDb21tYW5kcy0+YXBwZW5kKGNvbW1hbmQpOwogICAgICAgICBMT0coVGV4
dElucHV0LCAiLi4uc3RvcmVkIik7CiAgICAgICAgIG1fcGFnZS0+cmVnaXN0ZXJLZXlwcmVzc0Nv
bW1hbmROYW1lKGNvbW1hbmQuY29tbWFuZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDRiMjFlOTg5ZjI3OWFl
NjczNGQ5ZDMyNjAxZGUzNjZkYjAwYWY3YjIuLmVjNjliZjZhZDNlN2M1OGUxNzExOTcxNTJkMGIz
NDRjMjIyNDFmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6On5EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0
U2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IGNoYXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2Rl
cikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlP
cmlnaW5EYXRhKEFTQ0lJTGl0ZXJhbCBuYW1lLCBLZXllZERlY29kZXIqIGRlY29kZXIpCiB7CiAg
ICAgU3RyaW5nIG9yaWdpbjsKIApAQCAtMTU3LDIwICsxNTcsMjAgQEAgdm9pZCBEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hNYXAKIAogc3RkOjp1bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNo
U2FsdEZvck9yaWdpbj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2Rl
cihLZXllZERlY29kZXIqIGRlY29kZXIsIFN0cmluZyYmIGRldmljZUlkSGFzaFNhbHQpIGNvbnN0
CiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEo
Im9yaWdpbiIsIGRlY29kZXIpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gZ2V0U2Vj
dXJpdHlPcmlnaW5EYXRhKCJvcmlnaW4iX3MsIGRlY29kZXIpOwogICAgIGlmICghc2VjdXJpdHlP
cmlnaW5EYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwg
IkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBUaGUgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhl
IGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBhcmVudFNl
Y3VyaXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgicGFyZW50T3JpZ2luIiwg
ZGVjb2Rlcik7CisgICAgYXV0byBwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0
eU9yaWdpbkRhdGEoInBhcmVudE9yaWdpbiJfcywgZGVjb2Rlcik7CiAgICAgaWYgKCFwYXJlbnRT
ZWN1cml0eU9yaWdpbkRhdGEpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNp
c3RlbmN5LCAiRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBwYXJlbnQgc2VjdXJpdHkgb3Jp
Z2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hT
YWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBkb3VibGUgbGFzdFRpbWVVc2VkOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJs
YXN0VGltZVVzZWQiLCBsYXN0VGltZVVzZWQpKSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVE
b3VibGUoImxhc3RUaW1lVXNlZCJfcywgbGFzdFRpbWVVc2VkKSkgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhl
IGxhc3QgdGltZSB1c2VkIHdhcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZvcjogJyVzJyIsIGRl
dmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KQEAgLTE4NSw5ICsxODUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0U3Rvcgogc3RkOjp1
bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNyZWF0ZUVu
Y29kZXJGcm9tRGF0YShjb25zdCBIYXNoU2FsdEZvck9yaWdpbiYgaGFzaFNhbHRGb3JPcmlnaW4p
IGNvbnN0CiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1
bWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3Ry
aW5nKCJwYXJlbnRPcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5wYXJlbnRPcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwotICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgibGFzdFRpbWVVc2Vk
IiwgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iX3MsIGhhc2hTYWx0Rm9y
T3JpZ2luLmRvY3VtZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVTdHJpbmcoInBhcmVudE9yaWdpbiJfcywgaGFzaFNhbHRGb3JPcmlnaW4ucGFyZW50
T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUo
Imxhc3RUaW1lVXNlZCJfcywgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSk7CiAgICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVuY2hl
ckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vz
c0xhdW5jaGVyQ29jb2EubW0KaW5kZXggMGM1Y2RkZDE5OTI3MTRmNTZmY2ZiMTAzMTYyMjZkMjEx
NjFlNGUyYi4uYjZhZjA2ODUwNDAxZWYwMzQwODkxNzQ3M2VmYjk4ZDllNzgzOWUxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5j
aGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2Ev
UHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGlu
aXRpYWxpemF0aW9uTWVzc2FnZS5nZXQoKSwgIkNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVz
IiwgY29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBh
dXRvIGxhbmd1YWdlc0l0ZXJhdG9yID0gbV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRp
b25EYXRhLmZpbmQoIk92ZXJyaWRlTGFuZ3VhZ2VzIik7CisgICAgYXV0byBsYW5ndWFnZXNJdGVy
YXRvciA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5maW5kKCJPdmVy
cmlkZUxhbmd1YWdlcyJfcyk7CiAgICAgaWYgKGxhbmd1YWdlc0l0ZXJhdG9yICE9IG1fbGF1bmNo
T3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5lbmQoKSkgewogICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiUHJvY2VzcyBMYXVuY2hlciBpcyBjb3B5aW5n
IE92ZXJyaWRlTGFuZ3VhZ2VzIGludG8gaW5pdGlhbGl6YXRpb24gbWVzc2FnZTogIiA8PCBsYW5n
dWFnZXNJdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBhdXRvIGxhbmd1YWdlcyA9IGFkb3B0T1NP
YmplY3QoeHBjX2FycmF5X2NyZWF0ZShudWxscHRyLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CmluZGV4IDJlODZjMWI2NmE0ZDUyZDZmMzA0YTQ5MDUyZTBmZTA5ODVkYzMzNzguLjZiY2UyYmFl
OWMzNjBhYWRjNzc0NGRmZTdkNDViMTEyMzlhYTQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBldmVudCkgY28KICAgICBpZiAoIWV2
ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7Ci0gICAgaWYg
KG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7
CisgICAgaWYgKCFtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY0xh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKSB7CisgICAgaWYgKCFz
dHJjbXAobWVzc2FnZU5hbWUsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6Onhw
Y0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lKSkgewogICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5tX2VuZHBvaW50TWVzc2FnZSA9IGV2ZW50OwogICAgICAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygp
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+cHJvY2Vz
c2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggZWY4ZDJkZDg2
MDE5NDAwZDBkZmMxM2ZhMWE0MjY2NjJmYjdiZDQyNS4uN2FjNDRhOTdiMGJmZGMzYzU1Nzc0YzRh
YThmMzkyYTQyYWJjYmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApA
QCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgdXBkYXRlU3Rv
cmVkUmVxdWVzdHMocmVxdWVzdCk7CiAKICAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
OjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVk
aW9EZXZpY2UoKSwgcmVxdWVzdC5oYXNWaWRlb0RldmljZSgpKSkgewotICAgICAgICBkZW55UmVx
dWVzdChyZXF1ZXN0LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFB
Y2Nlc3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJv
eC4iKTsKKyAgICAgICAgZGVueVJlcXVlc3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJV
bmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAK
aW5kZXggN2JkNTg3N2RkOGU5MjU4ZGM1ZDZhN2ZhNDI4NjdmYjkyOTc5ZDZmYS4uNGFhNzI5ZGI0
YTJjNjgyZTM3OWI3MTVjMTZiYTRmYjA2NDZmMDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAg
U3RyaW5nIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZl
bnRzRGVzY3JpcHRpb24oRXZlbnRzIGUKIH0KIAogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhT
dHJpbmdWaWV3IGxvZykgY29uc3QKIHsKICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJT
d2lwZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgbG9nLnV0ZjgoKS5kYXRhKCkpOwog
fQpAQCAtMzI0LDEzICszMjQsMTMgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLAogdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KCkKIHsKICAg
ICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykKLSAgICAgICAgbG9nKCJyZXNldDsgaGFkIG91dHN0
YW5kaW5nIGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMp
KTsKKyAgICAgICAgbG9nKG1ha2VTdHJpbmcoInJlc2V0OyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRz
OiAiLCBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSkpOwogICAgIG1fb3V0
c3RhbmRpbmdFdmVudHMgPSAwOwogICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAgbV9y
ZW1vdmFsQ2FsbGJhY2sgPSBudWxscHRyOwogfQogCi1ib29sIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2
ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCBz
aG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQorYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNu
YXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBB
U0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3VsZEln
bm9yZUV2ZW50SWZQYXVzZWQpCiB7CiAgICAgQVNTRVJUKGhhc09uZUJpdFNldChldmVudCkpOwog
CkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNo
b3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID09IFNob3Vs
ZElnbm9yZUV2ZW50SWZQYXVzZWQ6OlllcyAmJiBpc1BhdXNlZCgpKSB7Ci0gICAgICAgIGxvZygi
aXMgcGF1c2VkOyBpZ25vcmluZyBldmVudDogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50KSk7
CisgICAgICAgIGxvZyhtYWtlU3RyaW5nKCJpcyBwYXVzZWQ7IGlnbm9yaW5nIGV2ZW50OiAiLCBl
dmVudHNEZXNjcmlwdGlvbihldmVudCkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGxvZyhsb2dSZWFzb24gKyBldmVudHNEZXNjcmlwdGlvbihldmVudCkpOworICAgIGxv
ZyhtYWtlU3RyaW5nKGxvZ1JlYXNvbiwgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAKICAg
ICBtX291dHN0YW5kaW5nRXZlbnRzICY9IH5ldmVudDsKIApAQCAtMzUyLDEyICszNTIsMTIgQEAg
Ym9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9w
V2FpdGluZ0ZvckV2ZW50KEV2ZW50cwogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZChFdmVudHMgZXZlbnQsIFNob3VsZEln
bm9yZUV2ZW50SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCkKIHsKLSAgICByZXR1
cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVk
OiAiLCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdG
b3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiX3MsIHNob3VsZEln
bm9yZUV2ZW50SWZQYXVzZWQpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6Y2FuY2VsT3V0c3RhbmRpbmdFdmVudChFdmVudHMgZXZlbnQp
CiB7Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJ3YWl0IGZvciBldmVu
dCBjYW5jZWxsZWQ6ICIpOworICAgIHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAi
d2FpdCBmb3IgZXZlbnQgY2FuY2VsbGVkOiAiX3MpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVu
dCBldmVudCkKQEAgLTM2OCw3ICszNjgsNyBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldgogdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1v
dmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykg
ewotICAgICAgICBsb2coImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRz
OiAiICsgZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50cykpOworICAgICAgICBs
b2cobWFrZVN0cmluZygiZGVmZXJyaW5nIHJlbW92YWw7IGhhZCBvdXRzdGFuZGluZyBldmVudHM6
ICIsIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmgKaW5kZXggMjBjMzBiODM0ODg4N2YzZTUyMDBiZjg2OTcwZDgyNDljMzUwNDdi
Zi4uMDJhMGI4OThmZDVjYjJlYTYyZjBmN2NiMGQ4Njg4YWI1Njk0ZGIxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTI1MCwxMyAr
MjUwLDEzIEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU3RyaW5n
IGV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyk7Ci0gICAgICAgIHZvaWQgbG9nKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworICAgICAgICB2b2lkIGxvZyhTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgICAg
ICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpOwogICAgICAgICB2b2lkIGZp
cmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCk7CiAgICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1l
ckZpcmVkKCk7CiAKLSAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29u
c3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgPSBTaG91bGRJ
Z25vcmVFdmVudElmUGF1c2VkOjpZZXMpOworICAgICAgICBib29sIHN0b3BXYWl0aW5nRm9yRXZl
bnQoRXZlbnRzLCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1
c2VkID0gU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6WWVzKTsKIAogICAgICAgICBFdmVudHMg
bV9vdXRzdGFuZGluZ0V2ZW50cyB7IDAgfTsKICAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
IG1fcmVtb3ZhbENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBkODFkNzgwNjIxYzgwNTA5M2Q0
ODNmMWVhYzM1ZTI5MDFkODE4M2I5Li5mNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4
NmMxMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVk
ZW50aWFsUmVxCiAgICAgICAgIFttX3Byb3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25S
ZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlcildKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgZW5zdXJlT25NYWluUnVuTG9v
cChbd2Vha1RoaXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBjcmVkZW50aWFsID0gcmV0
YWluUHRyKGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAg
aGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsg
Tm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRh
dGEgeyBOb3RBbGxvd2VkRXJyb3IsICJPcGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBj
b250aW51ZUFmdGVyUmVxdWVzdChjcmVkZW50aWFsLCBlcnJvciwgV1RGTW92ZShoYW5kbGVyKSk7
CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXEKICAgICAgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2lu
ZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBkYWVtb25FbmRwb2ludCA9IHJldGFpblB0cihkYWVtb25F
bmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25FbmRwb2ludCkgewogICAgICAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3QgdG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVA
XG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50
aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3Bl
cmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9w
ZXJhdGlvbiBmYWlsZWQuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRv
clV0aWxzLm1tCmluZGV4IDc2ZTMzYTczODY3YmM0ZjdlY2Y3YmNkNjZjMDhlYWM1NmVmNjBmMWEu
LjNmMDBhNTBhNzllZjZmMTM0NzEwNWI0ZWY3ODY0YTYxY2MyMDQ2ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAgLTEwNCw3
ICsxMDQsNyBAQCBTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBw
cml2YXRlS2V5KQogICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAg
ICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIE5T
RGF0YSAqbnNQcml2YXRlS2V5UmVwID0gKE5TRGF0YSAqKXByaXZhdGVLZXlSZXAuZ2V0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1Zp
cnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MTUwZmU0MmNkNDY3NjljNTM2NjA5MWQ2ZjRmZjRjMzFlYTZmYzVmNS4uYTdkMGI1MDAxZTI0ZmUx
NmVhZTI4ZmM4MzUzOGVkOTU5YjgzNWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFZpcnR1YWxI
aWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgQ0JPUlZhbHVlOjpNYXBW
YWx1ZSByZXNwb25zZTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9S
VmFsdWUoIm5vbmUiKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgyKV0gPSBDQk9S
VmFsdWUoYXV0aGVudGljYXRvckRhdGEpOwotICAgICAgICAgICAgYXV0byBhdHRPYmogPSBidWls
ZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCAiIiwgeyB9LCBBdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKKyAgICAgICAgICAgIGF1dG8gYXR0
T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgU3Ry
aW5nIHsgZW1wdHlTdHJpbmcoKSB9LCB7IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6Ok5vbmUpOwogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDMpXSA9IENCT1JWYWx1
ZShhdHRPYmopOwogICAgICAgICAgICAgYXV0byBwYXlsb2FkID0gQ0JPUldyaXRlcjo6d3JpdGUo
Q0JPUlZhbHVlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVx
dWVzdCgpCiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1
dGhEYXRhKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUo
c2lnbmF0dXJlRm9yUHJpdmF0ZUtleShrZXksIGF1dGhEYXRhLCBjbGllbnREYXRhSGFzaCkpOwog
ICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwudXNlckhhbmRsZSkKLSAgICAgICAgICAgICAgICBy
ZXNwb25zZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3Jl
ZGVudGlhbC51c2VySGFuZGxlLCAiIiwgIiIpKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZVtD
Qk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51
c2VySGFuZGxlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgICAgICBy
ZXNwb25zZVtDQk9SVmFsdWUoNSldID0gQ0JPUlZhbHVlKChpbnQ2NF90KW1hdGNoaW5nQ3JlZGVu
dGlhbHMuc2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6Ondy
aXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCA4MGRjYzlmNmJmNWYwNWU0NzdlNmVkZjA0M2MwMTQ0NDhmMTUxNmM1Li5l
OGQwZmY5NTc5ZmQyODllNWRiYzU2N2IwMzYxZDAxN2RlMTI3OTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVx
dWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAo
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIiB9KTsKKyAg
ICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxs
ZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwogICAgIH07CiAgICAgCiAgICAgaWYgKCFkYXRhLnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3Bw
CmluZGV4IGYxYjkwZDNmYjZiNDUwOGQ2YTNmZmNkZDY3OTFiODliYTdlMDRjZjIuLjhhMzkzY2Vj
ZWI2NGE1MzgzNTg4ODVmYzRiMGViODJkNGVhYzQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgV2ViUGFnZUdyb3Vw
RGF0YSBwYWdlR3JvdXBEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIC8vIElmIGl0IHR1
cm5zIG91dCB0aGF0IGl0J3Mgd3JvbmcsIHdlIGNhbiBjaGFuZ2UgaXQgdG8gdG8gIldlYktpdDIu
IiBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsRGVidWdLZXlQcmVmaXggZnJvbSBXZWJQcmVmZXJl
bmNlcy4KIFdlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikKICAgICA6IG1fZGF0YShwYWdlR3JvdXBEYXRhKGlkZW50aWZpZXIpKQotICAgICwgbV9wcmVm
ZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKG1fZGF0YS5p
ZGVudGlmaWVyLCAiLldlYktpdDIiLCAiV2ViS2l0Mi4iKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmll
ciwgIi5XZWJLaXQyIl9zLCAiV2ViS2l0Mi4iX3MpKQogICAgICwgbV91c2VyQ29udGVudENvbnRy
b2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQogewogICAgIHdl
YlBhZ2VHcm91cE1hcCgpLnNldChtX2RhdGEucGFnZUdyb3VwSUQsIHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGZlMjExMDhkZDE5OTM3MDFlZDJi
NGE3ODhhYTBiNjgzZTlkYzViNS4uOTRkMjNjMmI5ODZhZDBmOWNjZDM3YzVmODQzODRlN2I5NGRk
NmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTEx
MSw3ICsxMTExMSw3IEBAIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlCiB7CiAgICAgYXV0byBjYXB0
dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURl
dmljZSgpOwogICAgIGlmICghY2FwdHVyZURldmljZSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVT
b3VyY2VPckVycm9yIHsgIk5vIGRldmljZSBpcyBhdmFpbGFibGUgZm9yIGNhcHR1cmUiIH07Cisg
ICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxh
YmxlIGZvciBjYXB0dXJlIl9zIH07CiAKICAgICBpZiAocHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVk
aW9JbkdQVVByb2Nlc3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JF
cnJvciB7IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRl
KG1fcHJvY2Vzcy0+ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlcigpLCAqY2FwdHVyZURldmljZSwgbV93ZWJQYWdlSUQpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMmYxNjgxNzQ2NTRmNjU2ODAz
OGE5M2I4YjZhZGI1YjE3NGUzZDI3Mi4uMWIyYjg1MWU5NzI0YWM1MGZlMzk4ZjkwNGZiM2VjNTdh
ZTUwOWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmICghc19pbnZhbGlk
TWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBzX2ludmFsaWRNZXNzYWdl
Q2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSkpLnB0cigpKSk7CisgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3Ry
aW5nOjpjcmVhdGUoU3RyaW5nIHsgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpIH0pLnB0cigpKSk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNp
b25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGJkYzhhNDMxY2Q1MzQ0NzA4NDVkYTVkYjBmYzE1MmU5YTY3NjBmMDkuLjU3ODBlNmUzYjI1YjM5
ODVhOTQ4ZDM4YzU2NmM5YWQzNzMyMzljYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTU5LDE5ICs1NTksMTkgQEAgV2ViUGFnZVByb3h5KiBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1By
b2Nlc3NlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAg
ICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRh
U2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7CisgICAgICAgIHBh
Z2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmlu
aXNoZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAg
ICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNj
YW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdl
LnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJl
Z2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNG
aW5pc2hlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAg
ICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRh
RGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAg
ICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVs
ZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTc4OSw3ICsx
Nzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0gV2Vh
a1B0ciB7IHRhcmdldFBhZ2UgfV0oKSB7Ci0gICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQ
YWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENh
cHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJu
IHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hS
ZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlkIl9z
IH07CiAgICAgfTsKICAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI+KCpjb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIFdURk1vdmUo
cGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlKSk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDMwOWE3NTQ0YjY0MzliYjRhZjc4MTVl
MjY3MDE5MThmNWZmODIzOGIuLmNlNWEwOWQ5YjFmMDBhZDZjNzliNTlhYzA4NGQwNjhhMGQ2ZWNi
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3NCwyNiArMjc0
LDI2IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpCiAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFy
aSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewogICAg
ICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNo
ZSJdOwogCi0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJ
blBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAgICAgICByZXR1
cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZyB7IGNhY2hl
UGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoIH0pOwogICAgIH0KICNlbmRpZgogCi0gICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0g
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0
b3JhZ2UiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkNhY2hlU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIGF1dG8gZGlyZWN0b3J5ID0gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRlZmF1bHQiKTsKKyAg
ICBhdXRvIGRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJEZWZhdWx0Il9zKTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRv
a2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgb2xkIHN0b3JhZ2UgZGlyZWN0b3J5LCBhbmQgdGhlcmUgbWlnaHQgYmUgZmlsZXMgbGVm
dCBoZXJlLgotICAgICAgICBhdXRvIG9sZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJTdG9yYWdlIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7
CisgICAgICAgIGF1dG8gb2xkRGlyZWN0b3J5ID0gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIlN0b3JhZ2UiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogICAg
ICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXTsKICAgICAgICAgTlNBcnJheSAqZmlsZXMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNP
ZkRpcmVjdG9yeUF0UGF0aDpvbGREaXJlY3RvcnkgZXJyb3I6MF07CiAgICAgICAgIGlmIChmaWxl
cykgewpAQCAtMzE0LDYzICszMTQsNjMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOworICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIl9zKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNlcnZpY2Vz
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIkFsdGVybmF0aXZlU2VydmljZXMiLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5v
KTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkFs
dGVybmF0aXZlU2VydmljZXMiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNh
Y2hlIik7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Ik1lZGlhQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIl9z
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7CisgICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyJfcyk7CiB9CiAK
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
S2V5cyIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTWVkaWFLZXlzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiRGV2aWNlSWRIYXNo
U2FsdHMiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIkRldmljZUlkSGFzaFNhbHRzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldl
YlNRTCJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cisg
ICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVi
dWciLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICByZXR1cm4gdGVtcERpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyJfcywgU2hvdWxk
Q3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVcpCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiTW9kZWxFbGVtZW50IiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0
dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1vZGVsRWxlbWVudCJf
cywgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAjZW5kaWYKIApAQCAtNDAwLDcgKzQw
MCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyCiAgICAgICAgICYmICghW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCiAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogICAg
IAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRp
b247CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodXJsLmFic29sdXRlVVJMLnBhdGguZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKQEAg
LTQyOCw3ICs0MjgsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaQogICAgICAgICAmJiAhW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRy
XSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7CiAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5wYXRo
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
Ojp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpCkBAIC00NTcsNyArNDU3LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmkKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGly
ZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRl
czpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0
ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRo
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogfQogCiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA4OWZlM2ZjMDMw
YWJjN2UyNmNiOGZiMTU0MjJlNzA5ZTgxYTA2NzM1Li4wNDIxOTkxYTNhNDAwY2U1NzU3M2I2MGU0
MmJhOTg0Y2Q0OWJlY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dzV2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucykKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBob3N0U3RyaW5nID0gZW50cnku
b3JpZ2luLmhvc3QuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3RyaW5nKCIgIiwgZW50cnkub3JpZ2lu
Lmhvc3QpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5Lm9y
aWdpbi5ob3N0LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBtYWtlU3RyaW5nKCIgIiwgZW50
cnkub3JpZ2luLmhvc3QpOwogICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IG1ha2VT
dHJpbmcoZW50cnkub3JpZ2luLnByb3RvY29sLCBob3N0U3RyaW5nKTsKICAgICAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFi
MDMyMmQyZTUuLmYxNDE5Yjc0OTc4ZWU3ZTQ5N2I4OTZkMjA3YjM3NDg0YjhkYjE3ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1h
dE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKICAg
ICAgICAgcmV0dXJuICJWUDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiSDI2NCI7CisgICAgICAgIHJldHVybiAiSDI2NCJf
czsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZTE5YjFlMDMy
NDBjNzVhODNjNTk5NDcyYWUyZWRlNDZkYmZjNzFhYi4uM2I4ODM1NTJiYjI1OGIwNTkzNTE0YjVj
NTUzNWRlYzYwNjY2MjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTYxNywx
MSArNjE3LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmCiAgICAgICAgIGF1dG8qIGhpZ2hs
aWdodERhdGFBcnJheSA9IFdlYktpdDo6dG9JbXBsKGhpZ2hsaWdodERhdGEpOwogICAgICAgICBo
aWdobGlnaHRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFycmF5LT5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8gZGljdGlvbmFyeSA6IGhpZ2hsaWdodERhdGFBcnJheS0+
ZWxlbWVudHNPZlR5cGU8QVBJOjpEaWN0aW9uYXJ5PigpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0
YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZy
b20iKSktPnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iX3MpKS0+dmFsdWUoKTsKICAg
ICAgICAgICAgIGhpZ2hsaWdodHMudW5jaGVja2VkQXBwZW5kKHsKICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLAotICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4o
ZGljdGlvbmFyeS0+Z2V0KCJsZW5ndGgiKSktPnZhbHVlKCkpLAotICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0PEFQ
STo6U3RyaW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciIpKS0+c3RyaW5nKCkpCisgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8
QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCJfcykpLT52YWx1ZSgpKSwKKyAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4
dChzdGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiX3MpKS0+
c3RyaW5nKCkpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggZWJjNTNlYmZhOTEwOWM0OTE0Yjg5ZDc0OWEwNGMwZjVkY2QxNjdmMy4uYjRkY2FjZmUwNTgx
NjlhOTJmNmExZjgzNThkYTVkYjE1ZTViYjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQoc2l6ZV90
IGJ5dGVMZW5ndGgpCiAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50ID0g
bV9idWZmZXJlZEFtb3VudDsKICAgICBjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQgKz0gYnl0ZUxl
bmd0aDsKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50Lmhhc092ZXJm
bG93ZWQoKSkpIHsKLSAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1l
OiBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UiKTsKKyAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNl
bmQgV2ViU29ja2V0IGZyYW1lOiBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UiX3MpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBjZWJkOTdhYWQ4Y2FiMjVmNmNl
ZGUwZTNlNzA3OTVmY2Y3MjcwMzRlLi43OGQ1MGY1ZGYwZGFmMGJlZmNjNjQyOGQ0OTRkOThmMjgx
NjIyMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJlYW06
Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAg
ICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBzdHJlYW0tPm1fc2VuZEhhbmRzaGFrZUNhbGxi
YWNrcy52YWx1ZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBmYWxzZSk7Ci0gICAg
ICAgIHN0cmVhbS0+bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRT
dHJlYW1FcnJvcigwLCB7IH0sICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZC4iKSk7CisgICAgICAg
IHN0cmVhbS0+bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRTdHJl
YW1FcnJvcigwLCB7IH0sICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZC4iX3MpKTsKICAgICAgICAg
c3RyZWFtID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDc5ZTM4NWJlMDI0ZWJiZjEzNmRjMjdk
ZGNlYWI0OTQ2MmUxNWMwNWYuLmE0ODkxYjkyZGFmY2Q0NjY2NDhmMTZkYzEzMzYyNjBhYmYxMmM4
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtMTIxLDcgKzEyMSw3IEBAIEBlbmQKIC8vIFNldCBvdmVyZmxvdzogaGlkZGVu
IG9uIHRoZSBhbm5vdGF0aW9uIGNvbnRhaW5lciBzbyA8aW5wdXQ+IGVsZW1lbnRzIHNjcm9sbGVk
IG91dCBvZiB2aWV3IGRvbid0IHNob3cKIC8vIHNjcm9sbGJhcnMgb24gdGhlIGJvZHkuIFdlIGNh
bid0IGFkZCBhbm5vdGF0aW9ucyBkaXJlY3RseSB0byB0aGUgYm9keSwgYmVjYXVzZSBvdmVyZmxv
dzogaGlkZGVuIG9uIHRoZSBib2R5CiAvLyB3aWxsIGJyZWFrIHJ1YmJlci1iYW5kaW5nLgotc3Rh
dGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CitzdGF0aWMgY29uc3RleHByIGF1dG8g
YW5ub3RhdGlvblN0eWxlID0KICIjYW5ub3RhdGlvbkNvbnRhaW5lciB7IgogIiAgICBvdmVyZmxv
dzogaGlkZGVuOyAiCiAiICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIgpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQogIiAgICBwb3NpdGlvbjog
c3RhdGljOyAiCiAiICAgIHdpZHRoOiAyMDBweDsgIgogIiAgICBtYXJnaW4tdG9wOiAxMDBweDsg
IgotIn0gIjsKKyJ9ICJfczsKIAogLy8gSW4gbm9uLWNvbnRpbnVvdXMgbW9kZXMsIGEgc2luZ2xl
IHNjcm9sbCBldmVudCB3aXRoIGEgbWFnbml0dWRlIG9mID49IDIwcHgKIC8vIHdpbGwganVtcCB0
byB0aGUgbmV4dCBvciBwcmV2aW91cyBwYWdlLCB0byBtYXRjaCBQREZLaXQgYmVoYXZpb3IuCkBA
IC03NjksNyArNzY5LDcgQEAgdm9pZCBQREZQbHVnaW46OnJlY2VpdmVkTm9uTGluZWFyaXplZFBE
RlNlbnRpbmVsKCkKIAogICAgIGlmICghaXNNYWluUnVuTG9vcCgpKSB7CiAjaWYgIUxPR19ESVNB
QkxFRAotICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZyBv
biBiYWNrZ3JvdW5kIHRocmVhZCIpOworICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNyZW1l
bnRhbCBQREYgbG9hZGluZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCJfcyk7CiAjZW5kaWYKICAgICAg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XSB7CiAgICAgICAgICAgICByZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZTZW50aW5lbCgpOwpAQCAt
OTYxLDcgKzk2MSw3IEBAIHZvaWQgUERGUGx1Z2luOjp0aHJlYWRFbnRyeShSZWY8UERGUGx1Z2lu
PiYmIHByb3RlY3RlZFBsdWdpbikKICAgICBmaXJzdFBhZ2VTZW1hcGhvcmUud2FpdCgpOwogCiAj
aWYgIUxPR19ESVNBQkxFRAotICAgIHBkZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJzdCBw
YWdlIik7CisgICAgcGRmTG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiX3MpOwog
I2VuZGlmCiB9CiAKQEAgLTEwNTUsNyArMTA1NSw3IEBAIHZvaWQgUERGUGx1Z2luOjphZG9wdEJh
Y2tncm91bmRUaHJlYWREb2N1bWVudCgpCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAK
ICNpZiAhTE9HX0RJU0FCTEVECi0gICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBmcm9t
IGJhY2tncm91bmQgdGhyZWFkIik7CisgICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBm
cm9tIGJhY2tncm91bmQgdGhyZWFkIl9zKTsKICNlbmRpZgogCiAgICAgbV9wZGZEb2N1bWVudCA9
IFdURk1vdmUobV9iYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQpOwpAQCAtMTI4MiwxMyArMTI4Miwx
MyBAQCBQbHVnaW5JbmZvIFBERlBsdWdpbjo6cGx1Z2luSW5mbygpCiAgICAgaW5mby5idW5kbGVJ
ZGVudGlmaWVyID0gImNvbS5hcHBsZS53ZWJraXQuYnVpbHRpbnBkZnBsdWdpbiJfczsKIAogICAg
IE1pbWVDbGFzc0luZm8gcGRmTWltZUNsYXNzSW5mbzsKLSAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5
cGUgPSAiYXBwbGljYXRpb24vcGRmIjsKKyAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAiYXBw
bGljYXRpb24vcGRmIl9zOwogICAgIHBkZk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3VtZW50
VHlwZURlc2NyaXB0aW9uKCk7CiAgICAgcGRmTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVu
ZCgicGRmIik7CiAgICAgaW5mby5taW1lcy5hcHBlbmQocGRmTWltZUNsYXNzSW5mbyk7CiAKICAg
ICBNaW1lQ2xhc3NJbmZvIHRleHRQREZNaW1lQ2xhc3NJbmZvOwotICAgIHRleHRQREZNaW1lQ2xh
c3NJbmZvLnR5cGUgPSAidGV4dC9wZGYiOworICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLnR5cGUg
PSAidGV4dC9wZGYiX3M7CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3Vt
ZW50VHlwZURlc2NyaXB0aW9uKCk7CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9u
cy5hcHBlbmQoInBkZiIpOwogICAgIGluZm8ubWltZXMuYXBwZW5kKHRleHRQREZNaW1lQ2xhc3NJ
bmZvKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVz
b3VyY2UoKQogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMo
W1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVz
Q29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJG
aWVsZHM6aGVhZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25z
ZShyZXNwb25zZS5nZXQoKSk7CiAKLSAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkws
ICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9u
c2UpOworICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3Bk
ZiJfcywgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVn
aW5WaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3Vy
Y2UocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTE2ODgsMTAgKzE2ODgsMTAg
QEAgdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVu
YW1lOwogCiAgICAgaWYgKG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICBt
X3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUobmlsLCAi
YXBwbGljYXRpb24vcGRmIik7CisgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShuaWwsICJhcHBsaWNhdGlvbi9wZGYiX3MpOwogCiAgICAg
aWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYi
KSkKLSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiKTsKKyAgICAgICAg
bV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiX3MpOwogfQogICAgIAogdm9pZCBQREZQ
bHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
VVJMJiwgdWludDMyX3QsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTg5Myw3ICsxODkz
LDcgQEAgYm9vbCBQREZQbHVnaW46OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICAgICBtX3NvdXJjZVVSTCA9IHBhcmFtZXRlcnMudXJsOwogICAgIGlmICghcGFy
YW1ldGVycy5zaG91bGRVc2VNYW51YWxMb2FkZXIgJiYgIXBhcmFtZXRlcnMudXJsLmlzRW1wdHko
KSkKLSAgICAgICAgY29udHJvbGxlcigpLT5sb2FkVVJMKHBkZkRvY3VtZW50UmVxdWVzdElELCAi
R0VUIiwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCks
IFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CisgICAgICAgIGNvbnRyb2xsZXIoKS0+bG9hZFVS
TChwZGZEb2N1bWVudFJlcXVlc3RJRCwgIkdFVCJfcywgcGFyYW1ldGVycy51cmwuc3RyaW5nKCks
IFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CiAK
ICAgICBjb250cm9sbGVyKCktPmRpZEluaXRpYWxpemVQbHVnaW4oKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBkNzQ1ZjAyMDk0ODRmNGVjMmI3
NGE1NTM3NGQxYmNlOTFjYTY3ODVkLi43ZDQzZmEwMjFjNWEyMGQ2NTU0MDhlNzhiYTliZWZmNjU0
NzA3ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC01NCwxNSArNTQsMTUg
QEAgc3RhdGljIGNvbnN0IFN0cmluZyBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVu
dChOU1RleHRBbGlnbm1lbnQgYWxpZ25tZW4KIHsKICAgICBzd2l0Y2ggKGFsaWdubWVudCkgewog
ICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50TGVmdDoKLSAgICAgICAgcmV0dXJuICJsZWZ0IjsKKyAg
ICAgICAgcmV0dXJuICJsZWZ0Il9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50UmlnaHQ6Ci0g
ICAgICAgIHJldHVybiAicmlnaHQiOworICAgICAgICByZXR1cm4gInJpZ2h0Il9zOwogICAgIGNh
c2UgTlNUZXh0QWxpZ25tZW50Q2VudGVyOgotICAgICAgICByZXR1cm4gImNlbnRlciI7CisgICAg
ICAgIHJldHVybiAiY2VudGVyIl9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVk
OgotICAgICAgICByZXR1cm4gImp1c3RpZnkiOworICAgICAgICByZXR1cm4gImp1c3RpZnkiX3M7
CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnROYXR1cmFsOgotICAgICAgICByZXR1cm4gIi13ZWJr
aXQtc3RhcnQiOworICAgICAgICByZXR1cm4gIi13ZWJraXQtc3RhcnQiX3M7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDM0NGY0YmUy
M2E0Mzc2NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2VhZS4uNDVhMDExYmU1NTY2MjA3YzljYWM0NWY5
ZWY2MDkyY2U4MDE1MDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6
bG9hZFVSTCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBT
dHJpbmcmCiAgICAgaWYgKCFodHRwQm9keS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWVMb2Fk
UmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGh0
dHBCb2R5LmRhdGEoKSwgaHR0cEJvZHkuc2l6ZSgpKSk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRl
bnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAg
IGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRUeXBlKCJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiX3MpOwogICAgIH0KIAogICAgIFN0cmlu
ZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1l
KCktPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDBlMTE3YTBlYzYxOTAwZDE1MGFkYjFkZTljNjgyMjlhOGU3YWI1NzAuLmY1YmQ4OWYxYzM1NDY5
NDk3YjI5YjU2OWU0YjhkMjRiM2JmMGMxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFNlY3VyCiAKICAgICBpZiAoIWlzV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIFdFQkFVVEhO
X1JFTEVBU0VfTE9HX0VSUk9SKCJtYWtlQ3JlZGVudGlhbDogVGhlICduYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGgg
dGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsKLSAg
ICAgICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50Pigw
KSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRo
IHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9KTsK
KyAgICAgICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3
aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok1ha2VD
cmVkZW50aWFsKGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92
ZShoYW5kbGVyKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXQK
IAogICAgIGlmICghaXNXZWJCcm93c2VyKCkpIHsKICAgICAgICAgV0VCQVVUSE5fUkVMRUFTRV9M
T0dfRVJST1IoImdldEFzc2VydGlvbjogVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBB
UEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUu
ZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsKLSAgICAgICAgaGFuZGxlcih7
IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJ
IGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRl
dmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9KTsKKyAgICAgICAgaGFuZGxlcih7
IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJ
IGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRl
dmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEFzc2VydGlvbihoYXNoLCBvcHRpb25z
LCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBiYTIxZTRkOGI0
NzRkNWRhMGExZWJjNDc3YTEwM2Q4MjljNWVhMTA3Li40Mjc1ZWJkYzZlMDllYTE2YTUzZDhhNzdl
NmU4MThhYWM2NmEzNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6Y2xvc2VIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aQog
dm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIG90aGVySWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpTYW1lRW50cnlDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlv
biBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJf
cyB9KTsKIAogICAgIGlmIChpZGVudGlmaWVyID09IG90aGVySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Omdl
dEZpbGVIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5LCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3Is
ICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlv
biBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RmlsZUhhbmRsZShpZGVudGlmaWVy
LCBuYW1lLCBjcmVhdGVJZk5lY2Vzc2FyeSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVI
YW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW4KIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0
ZUlmTmVjZXNzYXJ5LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhh
bmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24g
eyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
R2V0RGlyZWN0b3J5SGFuZGxlKGlkZW50aWZpZXIsIG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5KSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuYW1lLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50
cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBXZWJDb3JlOjpGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBp
cyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4
Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9
KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUVudHJ5KGlkZW50aWZpZXIsIG5hbWUsIGRlbGV0ZVJl
Y3Vyc2l2ZWx5KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8gZXJyb3IpIG11dGFibGUgewogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OnJlc29sdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgb3RoZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlJlc29sdmVDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVy
cm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5l
Y3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlc29sdmUoaWRlbnRpZmllciwg
b3RoZXJJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBA
IC0xMzAsNyArMTMwLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJl
c29sdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKIHZvaWQgV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0
aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0
Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RmlsZShpZGVudGlmaWVyKSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFu
ZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlv
bikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7
IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpV
bmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpD
cmVhdGVTeW5jQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SAogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vzc0hh
bmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRl
bnRpZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpF
eGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0p
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsg
V2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAg
bV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q2xvc2VTeW5jQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZl
cnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGEKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5k
bGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZU5hbWVzQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25F
cnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25u
ZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRIYW5kbGVOYW1lcyhpZGVu
dGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZU5h
bWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGUKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpnZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3Qi
IH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9u
IHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6R2V0SGFuZGxlKGlkZW50aWZpZXIsIG5hbWUpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQp
CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmkKIHZvaWQgV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBWb2lkQ2FsbGJh
Y2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6
OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJy
b3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpNb3ZlKGlkZW50
aWZpZXIsIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbmV3TmFtZSksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKaW5kZXggYzU3ZTc4MDliMmVlMTY2
ZGQ2ZjY4OGJlMjJhODU5YzdkYWRkYThmYS4uMGM1ZGY1NGRjNDczZDFhNmYzNmQyODgzOWE1YmYx
MWVkNjgzMTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKQEAg
LTc3LDkgKzc3LDkgQEAgdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKFJlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGUKICAgICB9OwogCiAgICAgYXV0
byB2b2ljZSA9IHV0dGVyYW5jZS0+dm9pY2UoKTsKLSAgICBhdXRvIHZvaWNlVVJJID0gdm9pY2Ug
PyB2b2ljZS0+dm9pY2VVUkkoKSA6ICIiOwotICAgIGF1dG8gbmFtZSA9IHZvaWNlID8gdm9pY2Ut
Pm5hbWUoKSA6ICIiOwotICAgIGF1dG8gbGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6ICIi
OworICAgIGF1dG8gdm9pY2VVUkkgPSB2b2ljZSA/IHZvaWNlLT52b2ljZVVSSSgpIDogZW1wdHlT
dHJpbmcoKTsKKyAgICBhdXRvIG5hbWUgPSB2b2ljZSA/IHZvaWNlLT5uYW1lKCkgOiBlbXB0eVN0
cmluZygpOworICAgIGF1dG8gbGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6IGVtcHR5U3Ry
aW5nKCk7CiAgICAgYXV0byBsb2NhbFNlcnZpY2UgPSB2b2ljZSA/IHZvaWNlLT5sb2NhbFNlcnZp
Y2UoKSA6IGZhbHNlOwogICAgIGF1dG8gaXNEZWZhdWx0ID0gdm9pY2UgPyB2b2ljZS0+aXNEZWZh
dWx0KCkgOiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5k
ZXggYWFjNmIzZmExMDcwYTdhM2MwNWRiYTc3MjdmNDBhMzgxZmE0ODE2My4uYWZiMWIyZDkxZGFm
Mjc0OTgwZjM3MWNiZTdkZjUxOWQyZmMyNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGll
bnRNYWMubW0KQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlV29yZENhc2UoV2Vi
UGFnZSogcGFnZSwgTlNTdHJpbmcgKigqY2hhbmdlQ2FzZSkoTlNTdHJpbmcgKikpCiAgICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCJfcykuZXhlY3V0ZSgpOwogCiAgICAgTlNTdHJp
bmcgKnNlbGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rp
bmcoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICBwYWdlLT5yZXBsYWNlU2Vs
ZWN0aW9uV2l0aFRleHQoZnJhbWUucHRyKCksIGNoYW5nZUNhc2Uoc2VsZWN0ZWRTdHJpbmcpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdB
UEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKaW5kZXggZWUxNjQ1ZWY0ZTBjODQ0NzU3NDAzZDJjZGU1MWFkNGIxMTMwMmNjYi4uZGU4MDEy
N2ViMGJlMjNhODNhZmQ0NTkzZGViZWU0N2FjMzYzNDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIxNDEsNyArMjE0
MSw3IEBAIEpTQzo6SlNPYmplY3QqIEpTTWVzc2FnZUxpc3RlbmVyOjpqc0Rlc2NyaXB0aW9uRnJv
bURlY29kZXIoSlNDOjpKU0dsb2JhbE9iamVjdCoKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIiksIEpTQzo6SlNWYWx1ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAganNSZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iKSwgSlND
Ojpqc1N0cmluZyh2bSwgSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSk7
CisgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZGVzY3JpcHRpb24iKSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgSVBDOjpkZXNj
cmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpIH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc3RpbmF0aW9uSUQiKSwgSlNDOjpKU1ZhbHVl
KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJTZW1hcGhvcmUiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlNlbWFwaG9yZSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9i
amVjdCwgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlKFdURk1v
dmUodmFsdWUpKS0+Y3JlYXRlSlNXcmFwcGVyKHRvUmVmKGdsb2JhbE9iamVjdCkpKTsKICAgICBv
YmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFs
dWUiX3MpLCBqc1ZhbHVlKTsKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHRlbXBsYXRlPD4gSlNDOjpK
U1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlNoYXJlZE1lbW9yeSIpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3Ry
aW5nKHZtLCAiU2hhcmVkTWVtb3J5Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6
UmVhZFdyaXRlOwpAQCAtMjI0MCw3ICsyMjQwLDcgQEAgdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IK
ICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiZGF0YVNpemUiX3MpLCBKU0M6OkpTVmFsdWUodmFsdWUuZGF0YVNpemUpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKLSAgICBvYmplY3QtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvdGVjdGlvbiJf
cyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm90ZWN0aW9uID09IFByb3RlY3Rpb246
OlJlYWRXcml0ZSA/ICJSZWFkV3JpdGUiIDogIlJlYWRPbmx5IikpOworICAgIG9iamVjdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0aW9uIl9z
KSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6
UmVhZFdyaXRlID8gIlJlYWRXcml0ZSJfcyA6ICJSZWFkT25seSJfcykpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBvYmplY3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXgg
NDBiOTk3MzIwMDc4MjVlNjY4M2U2MzY4MDQzZjYyYjZiNTkwMzM3Yi4uYjNiZWUyODJlY2NjOWQx
ZDY3MmNiMWVmN2Q4NmQ3ZTBkMzg1NzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIFJlZjxBUEk6OkFycmF5
PiBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMoKQogU3RyaW5nIFdlYkZyYW1lOjpsYXllclRyZWVBc1Rl
eHQoKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAiIjsK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gbV9jb3JlRnJhbWUt
PmNvbnRlbnRSZW5kZXJlcigpLT5jb21wb3NpdG9yKCkubGF5ZXJUcmVlQXNUZXh0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggODVmNWE0OGFhZWZj
ZjNiNjMwOGFmNmM0ZjdiNDUxZjBiMmZhMTVjZS4uYjJjODcyYzcwMjQzYWU5ZGIxYzdhMWQ4MmU1
ZTYzYjFhZjQzNDU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQpAQCAtODEwLDExICs4MTAsMTIgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICBmcmFt
ZVZpZXctPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+YmFja2luZygpLT50aWxlZEJhY2tpbmcoKS0+
cHJlcG9wdWxhdGVSZWN0KHRpbGVDb3ZlcmFnZVJlY3QpOwogfQogCi1zdGF0aWMgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aChT
dHJpbmcga2V5UGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gdHJhbnNp
ZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKEFTQ0lJTGl0ZXJhbCBrZXlQYXRoKQogewog
ICAgIGNvbnN0IGZsb2F0IHRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uID0gMC4yNTsKIAot
ICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBhbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1h
dGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDprZXlQYXRoXTsKKyAgICBhdXRvIG5zS2V5UGF0aCA9
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczprZXlQYXRoLmNoYXJhY3Rl
cnMoKSBsZW5ndGg6a2V5UGF0aC5sZW5ndGgoKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0Vu
Y29kaW5nXSk7CisgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOm5zS2V5UGF0aC5nZXQoKV07CiAg
ICAgW2FuaW1hdGlvbiBzZXREdXJhdGlvbjp0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlvbl07
CiAgICAgW2FuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBb
YW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFsc2VdOwpAQCAtODUzLDcgKzg1NCw3
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb25z
dHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAgdHJhbnNmb3Jt
LnNjYWxlKHNjYWxlKTsKIAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJW
aWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRy
YW5zZm9ybSIpOworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5p
bWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9y
bSJfcyk7CiAgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJW
aWV3QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKQEAgLTg2Niw3ICs4NjcsNyBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29t
KGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwog
ICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbem9vbUxheWVyLCBzaGFkb3dD
QUxheWVyLCBwYWdlLCBzY2FsZSwgb3JpZ2luXSAoKSB7Ci0gICAgICAgIHpvb21MYXllci0+cmVt
b3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Iik7CisgICAgICAgIHpvb21M
YXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zKTsKICAg
ICAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpCiAgICAgICAgICAgICBbc2hhZG93Q0FMYXllciByZW1v
dmVBbGxBbmltYXRpb25zXTsKIApAQCAtODc0LDE3ICs4NzUsMTcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1Bh
Z2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlv
bkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkp
OworICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0
Il9zLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVy
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0Zv
ckZyYW1lKGZyYW1lVmlldywgc2NhbGUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBz
aGFkb3dQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5V
TEwpKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRz
QW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMi
KTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1h
dGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIl9zKTsK
ICAgICAgICAgW3NoYWRvd0JvdW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVl
V2l0aFJlY3Q6c2hhZG93Qm91bmRzXV07Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0
aW9uPiBzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9u
Rm9yS2V5UGF0aCgicG9zaXRpb24iKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRp
b24+IHNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25G
b3JLZXlQYXRoKCJwb3NpdGlvbiJfcyk7CiAgICAgICAgIFtzaGFkb3dQb3NpdGlvbkFuaW1hdGlv
biBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OnNoYWRvd0xheWVyUG9zaXRpb25G
b3JGcmFtZShmcmFtZVZpZXcsIGNvbnN0cmFpbmVkT3JpZ2luKV1dOwotICAgICAgICBSZXRhaW5Q
dHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21T
bmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCIpOworICAgICAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFw
QW5pbWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCJfcyk7CiAgICAgICAgIFtzaGFkb3dQYXRo
QW5pbWF0aW9uIHNldFRvVmFsdWU6KF9fYnJpZGdlIGlkKXNoYWRvd1BhdGguZ2V0KCldOwogCiAg
ICAgICAgIFtzaGFkb3dDQUxheWVyIGFkZEFuaW1hdGlvbjpzaGFkb3dCb3VuZHNBbmltYXRpb24u
Z2V0KCkgZm9yS2V5OkAidHJhbnNpZW50Wm9vbUNvbW1pdFNoYWRvd0JvdW5kcyJdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDQ4NTQ2ZmMxNGExODlmN2YzMTNiOTM5ZWEwZjUy
NGFkOWVlNmNlZDMuLjc2MGIzNGI0MzQ0NDRkYzY5ZTg2NjQ5NGYzY2EyNWE0YTk1OTJiOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTQ0LDEwICs0NCwxMCBAQCBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlciYgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNp
bmdsZXRvbigpCiAKIHZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2
ZW50KHhwY19vYmplY3RfdCBtZXNzYWdlKQogewotICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobWVzc2FnZSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5KTsKLSAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8qIG1lc3Nh
Z2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6
eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlmICghbWVzc2FnZU5hbWUpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAg
aWYgKCFzdHJjbXAobWVzc2FnZU5hbWUsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSkpIHsKICNpZiBI
QVZFKExTREFUQUJBU0VDT05URVhUKQogICAgICAgICBhdXRvIGRhdGFiYXNlID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3ZhbHVlKG1lc3NhZ2UsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KaW5kZXggMGM1M2QzNTYwNGUzNGE2OTRiYWJjZmYzZTY0
NzY1NDhhOGUxMzQxZS4uMDVhZDY3OGJhMzBhYTNjNzI4OGVhNDkyOWZkYzQ1OTA0M2RmZjNhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQpAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0OjpkaWREZWxldGVFeGlzdGlu
Z0J1bmRsZVdpdGhFcnJvcihQdXNoQXBwQnVuZGxlJiBiCiAgICAgaWYgKGVycm9yKQogICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJGYWlsZWQg
dG8gZGVsZXRlIGFwcCBidW5kbGU6ICIsIFN0cmluZyhbZXJyb3IgZGVzY3JpcHRpb25dKSkpOwog
Ci0gICAgY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xlYW51cChlcnJvciA/IFN0cmluZyhbZXJy
b3IgZGVzY3JpcHRpb25dKSA6ICIiKTsKKyAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVh
bnVwKGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogZW1wdHlTdHJpbmcoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNDY1NTUzMTUyMDVhNGI3NDQ1ZDNlNzk3ZmI3
M2UwNmU5Y2VjZjk2YS4uNjM1ZDBhZDg4MmU1NGVkZGQ5MmEzOTk2Njk2YzlmYjVhMDBlODEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaApAQCAt
NzIsOCArNzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAot
ICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
c2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGJyb2FkY2FzdERlYnVn
TWVzc2FnZShTdHJpbmdWaWV3KTsKKyAgICB2b2lkIHNlbmREZWJ1Z01lc3NhZ2UoU3RyaW5nVmll
dyk7CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4
IGQwOGMwNDViMTRlNjI1ZTM3MmUwZDBmYmJiY2QwNjk0ZmY1MTJkMzIuLjhiMjFjMTViYjYwZGVi
NjVlYmFmMTk5NTU0MWVkMTA5NDJjNjMxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ2xpZW50
Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UobWFrZVN0cmluZygiVHVybmVkIERlYnVnIE1vZGUgIiwgbV9kZWJ1
Z01vZGVFbmFibGVkID8gIm9uIiA6ICJvZmYiKSk7CiB9CiAKLXZvaWQgQ2xpZW50Q29ubmVjdGlv
bjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQ2xp
ZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkK
IHsKICAgICBTdHJpbmcgbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgYXV0byBzaWduaW5nSWRlbnRp
ZmVyID0gaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpOwpAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKICAgICBEYWVtb246OnNpbmdsZXRvbigpLmJyb2FkY2FzdERlYnVnTWVzc2Fn
ZShtYWtlU3RyaW5nKG1lc3NhZ2VJZGVudGlmaWVyLCBtZXNzYWdlKSk7CiB9CiAKLXZvaWQgQ2xp
ZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2
b2lkIENsaWVudENvbm5lY3Rpb246OnNlbmREZWJ1Z01lc3NhZ2UoU3RyaW5nVmlldyBtZXNzYWdl
KQogewogICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgc2VuZCB0aGUgZGVidWcgbWVzc2FnZSB0
d2ljZS4KICAgICAvLyBBZnRlciBnZXR0aW5nIGFsbCBkZWJ1ZyBtZXNzYWdlIGNsaWVudHMgb250
byB0aGUgZW5jb2Rlci9kZWNvZGVyIG1lY2hhbmlzbSwgcmVtb3ZlIHRoZSBvbGQgc3R5bGUgbWVz
c2FnZS4KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIENsaWVudENvbm5lY3Rpb246OnNlbmREZWJ1
Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9z
dHJpbmcoZGljdGlvbmFyeS5nZXQoKSwgV2ViS2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xEZWJ1Z01l
c3NhZ2VLZXksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSk7CiAKLSAg
ICBzZW5kRGFlbW9uTWVzc2FnZTxEYWVtb25NZXNzYWdlVHlwZTo6RGVidWdNZXNzYWdlPihtZXNz
YWdlKTsKKyAgICBzZW5kRGFlbW9uTWVzc2FnZTxEYWVtb25NZXNzYWdlVHlwZTo6RGVidWdNZXNz
YWdlPihtZXNzYWdlLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiB9CiAKIHZvaWQgQ2xpZW50
Q29ubmVjdGlvbjo6ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3Qoc3RkOjp1bmlxdWVfcHRyPEFwcEJ1
bmRsZVJlcXVlc3Q+JiYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
LmgKaW5kZXggOTc4MjM4ZjUxN2IwZDNmYjk2ZDk0MDYzMTEzM2ZjOGU0MGFhNDQ5Ni4uMDY2MmYx
M2U5ODM5NDkwMGM1NDFmYWJkZTk1NmU4NWM5NjYyZGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlQWxsUHVzaFN1YnNjcmlwdGlvbnMoQ2xpZW50Q29ubmVjdGlvbiosIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodW5zaWduZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25z
Rm9yT3JpZ2luKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAKLSAgICB2b2lk
IGJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGJyb2FkY2Fz
dERlYnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKICAgICB2b2lkIGJyb2FkY2FzdEFsbENvbm5lY3Rp
b25JZGVudGl0aWVzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb24ubW0KaW5kZXggY2JkMTI3MDNiNTllY2Y1ZjI1MDdjODBkYWEwMDNiZmUyYzk3MzRlNC4u
ZDFiZjYxZTgzYWYwYzM4NTI4N2Q3YjI1ZTljMjFiY2U4ZWQ0ZmVjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgRGFlbW9u
OjpydW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZpY2UoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KQogICAgIGZ1bmN0aW9uKCk7CiB9CiAKLXZvaWQgRGFlbW9uOjpicm9hZGNhc3REZWJ1Z01lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBEYWVtb246OmJyb2FkY2FzdERlYnVnTWVz
c2FnZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1f
Y29ubmVjdGlvbk1hcCkgewogICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUtPmRlYnVnTW9kZUlz
RW5hYmxlZCgpKQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgRGFlbW9uOjpnZXRPcmlnaW5zV2l0
aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDbGllbnRDb25uZWN0aW9uKiBjb25uCiB2
b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihDbGllbnRD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcikKIHsKICAgICBp
ZiAoIWNhblJlZ2lzdGVyRm9yTm90aWZpY2F0aW9ucygqY29ubmVjdGlvbikpIHsKLSAgICAgICAg
cmVwbHlTZW5kZXIoIkNvdWxkIG5vdCBkZWxldGUgcHVzaCBhbmQgbm90aWZpY2F0aW9uIHJlZ2lz
dHJhdGlvbnMgZm9yIGNvbm5lY3Rpb246IFVua25vd24gaG9zdCBhcHBsaWNhdGlvbiBjb2RlIHNp
Z25pbmcgaWRlbnRpZmllciIpOworICAgICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0
ZSBwdXNoIGFuZCBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5r
bm93biBob3N0IGFwcGxpY2F0aW9uIGNvZGUgc2lnbmluZyBpZGVudGlmaWVyIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bk1haW4ubW0KaW5kZXggZDdhNmI2M2ZlNGRiMmRlYjUwYTVlOWUxNzE3NDFmMTA4NWRjYWVkNy4u
ODE1MWM2MDFjNjEyODQ4Zjk3M2ZmODlhMWU4N2M2M2VhODg0OGNmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgaW50
IFdlYlB1c2hEYWVtb25NYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rv
cmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUylb
MF07CiAgICAgICAgICAgICBTdHJpbmcgcHVzaERhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobGlicmFyeVBhdGgsIHsgIldlYktpdCIsICJXZWJQdXNo
IiwgIlB1c2hEYXRhYmFzZS5kYiIgfSk7Ci0gICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVtb246
OnNpbmdsZXRvbigpLnN0YXJ0UHVzaFNlcnZpY2UoaW5jb21pbmdQdXNoU2VydmljZU5hbWUsIHB1
c2hEYXRhYmFzZVBhdGgpOworICAgICAgICAgICAgOjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0
b24oKS5zdGFydFB1c2hTZXJ2aWNlKFN0cmluZyB7IGluY29taW5nUHVzaFNlcnZpY2VOYW1lIH0s
IHB1c2hEYXRhYmFzZVBhdGgpOwogICAgICAgICB9CiAgICAgfQogICAgIENGUnVuTG9vcFJ1bigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5k
ZXggYjIwMmI0NDgwNzhjM2ZlYTViYzk1NTA4MGFhN2VlZGU2ZWNhNzhhOC4uOTEwMWM5ZWM2YzRm
ZWQzM2EzYjZhZTc5OWY4MWYyM2I0YTk3ZmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFn
ZVRyYWNrZXI6OmludGVybmFsSW5pdGlhbGl6ZSgpCiBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKQogewogICAgIGlmICghc3RvcmFnZVRyYWNrZXIpCi0gICAgICAgIHN0
b3JhZ2VUcmFja2VyID0gbmV3IFN0b3JhZ2VUcmFja2VyKCIiKTsKKyAgICAgICAgc3RvcmFnZVRy
YWNrZXIgPSBuZXcgU3RvcmFnZVRyYWNrZXIoZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKHN0b3Jh
Z2VUcmFja2VyLT5tX25lZWRzSW5pdGlhbGl6YXRpb24pCiAgICAgICAgIHN0b3JhZ2VUcmFja2Vy
LT5pbnRlcm5hbEluaXRpYWxpemUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAK
aW5kZXggM2U1NTJkZWI5YTllMzRkMDM4MGZkYzM3ZGZkOTRmOTVhN2E5ZGQxYS4uMDI2ZDQ4NzAz
ZTM0Y2Q3OGU2ZDAzNGFjMDBlNmI3YTk1MmNkOGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKQEAgLTUyLDggKzUyLDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKLXN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFj
aGVkIjsKLXN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogaW5zcGVjdG9yQXR0YWNoRGlzYWJs
ZWRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaERpc2FibGVkIjsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0
YWNoZWQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRT
ZXR0aW5nID0gImluc3BlY3RvckF0dGFjaERpc2FibGVkIl9zOwogCiBzdGF0aWMgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkK
IHsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0
dGFjaERpc2FibGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3RvckF0
dGFjaERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgc3RvcmVTZXR0aW5nKGluc3BlY3Rv
ckF0dGFjaERpc2FibGVkU2V0dGluZywgZGlzYWJsZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
ICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBkaXNhYmxlZCA/
ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRl
bGV0ZUluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkKQEAgLTEwOSw3ICsxMDksNyBAQCBib29sIFdl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkK
IHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nLCBhdHRh
Y2hlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JTdGFy
dHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJv
cGVydHlMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJv
cGVydHlMaXN0Lm1tCmluZGV4IDQ3OTE2ZTc4MWEyNDMwNDFlMWQ1ODI0OGFiZmFlYWFjMGM1N2Ji
NTkuLjc5OWE3YjU5NTJiMmI4NWNiNzBhMGIwMGM1NjJiOTAxNzg2YzMzNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3Qu
bW0KQEAgLTY5LDggKzY5LDggQEAgdm9pZCBIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjp3cml0
ZU9iamVjdHMoQmluYXJ5UHJvcGVydHlMaXN0T2JqZWN0U3RyZWFtJiBzdHIKIHsKICAgICBzaXpl
X3Qgb3V0ZXJEaWN0aW9uYXJ5U3RhcnQgPSBzdHJlYW0ud3JpdGVEaWN0aW9uYXJ5U3RhcnQoKTsK
IAotICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9uIik7Ci0gICAg
c3RyZWFtLndyaXRlU3RyaW5nKCJXZWJIaXN0b3J5RGF0ZXMiKTsKKyAgICBzdHJlYW0ud3JpdGVT
dHJpbmcoIldlYkhpc3RvcnlGaWxlVmVyc2lvbiJfcyk7CisgICAgc3RyZWFtLndyaXRlU3RyaW5n
KCJXZWJIaXN0b3J5RGF0ZXMiX3MpOwogCiAgICAgc3RyZWFtLndyaXRlSW50ZWdlcihjdXJyZW50
RmlsZVZlcnNpb24pOwogICAgIHNpemVfdCBvdXRlckRhdGVBcnJheVN0YXJ0ID0gc3RyZWFtLndy
aXRlQXJyYXlTdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KaW5kZXggY2FjMGU4YmM2
ZjgwNDRhY2U1YWFmOTRkYzk5MWFhYmU2ZDA5ZTMxNi4uNjI5MTE0NjlhY2RkYTQxOTg3ZjQ5NTRj
NWE2NWQ2M2M4ZmI3MmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCkBAIC0xMzUsNyAr
MTM1LDcgQEAgQGVuZAogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgd2ViQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5sZWFr
UmVmKCk7CisgICAgc3RhdGljIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9y
YWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlv
bkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSJfcykubGVha1JlZigpOwogCiAgICAgcmV0
dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGI1MjViYjBkOGI0ODUx
Y2QxYWE1MzMyNzk3OWQxMDY0ZjZlZWU3MzkuLmY4ZWMyZmI0MGMzZDhkNWNlYjU0NmVkODdhYmM5
NGIwNDRmNjg5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC00NCw3ICs0NCw3IEBAICsg
KGlkKXdlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilk
YXRhYmFzZUlkZW50aWZpZXIKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAK
LSAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRp
ZmllcihkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZyB7IGRhdGFiYXNlSWRlbnRpZmll
ciB9KTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODc3ZmYyODdh
NzZjMzE1ZjExOTczOTFkMjZjMDRjM2ViMjVlNjA1YS4uYmZkNWQwOWU5OGFkZjczOWFiOGYzNzdi
Y2I3ZTRkNTRlMmU4MDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCkBAIC0yNjA4LDEzICsyNjA4LDEzIEBAIHN0YXRpYyBjb25zdCBTZWxl
Y3Rvck5hbWVNYXAqIGNyZWF0ZVNlbGVjdG9yRXhjZXB0aW9uTWFwKCkKIHsKICAgICBTZWxlY3Rv
ck5hbWVNYXAqIG1hcCA9IG5ldyBIYXNoTWFwPFNFTCwgU3RyaW5nPjsKIAotICAgIG1hcC0+YWRk
KEBzZWxlY3RvcihpbnNlcnROZXdsaW5lSWdub3JpbmdGaWVsZEVkaXRvcjopLCAiSW5zZXJ0TmV3
bGluZSIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6
KSwgIkluc2VydE5ld2xpbmUiKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0VGFiSWdu
b3JpbmdGaWVsZEVkaXRvcjopLCAiSW5zZXJ0VGFiIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9y
KHBhZ2VEb3duOiksICJNb3ZlUGFnZURvd24iKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFn
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlv
biIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXA6KSwgIk1vdmVQYWdlVXAiKTsKLSAg
ICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOiksICJNb3ZlUGFn
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIik7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydE5l
d2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnROZXdsaW5lIl9zKTsKKyAgICBtYXAt
PmFkZChAc2VsZWN0b3IoaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOiksICJJbnNlcnROZXdsaW5l
Il9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0VGFiSWdub3JpbmdGaWVsZEVkaXRv
cjopLCAiSW5zZXJ0VGFiIl9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246KSwg
Ik1vdmVQYWdlRG93biJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uOiksICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MpOworICAg
IG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXA6KSwgIk1vdmVQYWdlVXAiX3MpOworICAgIG1hcC0+
YWRkKEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBBbmRN
b2RpZnlTZWxlY3Rpb24iX3MpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KQEAgLTI2NTAsNyArMjY1
MCw3IEBAIC0gKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZCljb3JlQ29tbWFuZEJ5TmFtZTooY29u
c3QgY2hhciopbmFtZQogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFZGl0b3I6OkNv
bW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpOwor
ICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgbmFtZSB9KTsK
IH0KIAogLSAodm9pZClleGVjdXRlQ29yZUNvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2VsZWN0b3IK
QEAgLTI4ODgsNyArMjg4OCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgICAgICBOU01l
bnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAgaWYgKFttZW51
SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIFN0
cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxl
ZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24g
PSB3cml0aW5nRGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0
ciJfcyA6ICJydGwiX3M7CiAgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6KGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwg
ZGlyZWN0aW9uKSAhPSBUcmlTdGF0ZTo6RmFsc2UpXTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gW3NlbGYgX2NhbkVkaXRdOwpAQCAtMjkwNiw3ICsyOTA2LDcgQEAgSUdOT1JFX1dBUk5JTkdT
X0VORAogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xh
c3NdXSkgewogICAgICAgICAgICAgLy8gVGFrZSBjb250cm9sIG9mIHRoZSB0aXRsZSBvZiB0aGUg
bWVudSBpdGVtIGluc3RlYWQgb2YganVzdCBjaGVja2luZy91bmNoZWNraW5nIGl0IGJlY2F1c2UK
ICAgICAgICAgICAgIC8vIGEgY2hlY2sgd291bGQgYmUgYW1iaWd1b3VzLgotICAgICAgICAgICAg
W21lbnVJdGVtIHNldFRpdGxlOihmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCisg
ICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25I
YXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCJfcykgIT0gVHJpU3Rh
dGU6OkZhbHNlKQogICAgICAgICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0IHRv
IFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAgICAg
ICAgIDogVUlfU1RSSU5HX0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQg
Y29udGV4dCBtZW51IGl0ZW0iKV07CiAgICAgICAgIH0KQEAgLTQ2ODMsNyArNDY4Myw3IEBAIC0g
KHZvaWQpX3NldFByaW50aW5nOihCT09MKXByaW50aW5nIG1pbmltdW1QYWdlTG9naWNhbFdpZHRo
OihmbG9hdCltaW5QYWdlTG9naWNhCiAgICAgYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKICAgICBpZiAoY29yZUZyYW1lKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb3JlVmll
dyA9IGNvcmVGcmFtZS0+dmlldygpKQotICAgICAgICAgICAgY29yZVZpZXctPnNldE1lZGlhVHlw
ZShfcHJpdmF0ZS0+cHJpbnRpbmcgPyAicHJpbnQiIDogInNjcmVlbiIpOworICAgICAgICAgICAg
Y29yZVZpZXctPnNldE1lZGlhVHlwZShfcHJpdmF0ZS0+cHJpbnRpbmcgPyAicHJpbnQiX3MgOiAi
c2NyZWVuIl9zKTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1
bWVudCgpKSB7CiAgICAgICAgICAgICAvLyBJbiBzZXR0aW5nIHByaW50aW5nLCB3ZSBzaG91bGQg
bm90IHZhbGlkYXRlIHJlc291cmNlcyBhbHJlYWR5IGNhY2hlZCBmb3IgdGhlIGRvY3VtZW50Lgog
ICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MzcwNApAQCAtNjY3Miw3ICs2NjcyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgICAgIH0pKCk7CiAKICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uS2V5Q29t
bWFuZFdpdGhNYXRjaGluZ01lbnVJdGVtKQotICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29t
bWFuZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRUZXh0OiIsIHRl
eHQpKTsKKyAgICAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCkuYXBwZW5kKFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZCgiaW5zZXJ0VGV4dDoiX3MsIHRleHQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDk2ODIyOTI1MGI4YzNiMGMxYWNmNmVjMThlYTk4NjJhNmJiN2ViZjUuLjcyMWI4YmFl
NzNlMGNmYmMzMGRlMmViNGZhMDQ2MWVlMTMzYjEzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMzMDQsNyArMzMwNCw3IEBAICsgKEJPT0wpX2Nh
bkhhbmRsZVJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICsgKE5TU3RyaW5nICopX2Rl
Y29kZURhdGE6KE5TRGF0YSAqKWRhdGEKIHsKICAgICBXZWJDb3JlOjpIVE1MTmFtZXM6OmluaXQo
KTsgLy8gdGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgaW1wb3J0aW5nIGJvb2ttYXJrcyBhdCBzdGFy
dHVwLCBzbyBIVE1MTmFtZXMgYXJlIGxpa2VseSB0byBiZSB1bmluaXRpYWxpemVkIHlldAotICAg
IHJldHVybiBXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCIp
LT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwg
W2RhdGEgbGVuZ3RoXSk7IC8vIGJvb2ttYXJrIGZpbGVzIGFyZSBIVE1MCisgICAgcmV0dXJuIFdl
YkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIl9zKS0+ZGVjb2Rl
QW5kRmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxl
bmd0aF0pOyAvLyBib29rbWFyayBmaWxlcyBhcmUgSFRNTAogfQogCiAtICh2b2lkKV9wdXNoUGVy
Zm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzE3OWU5MzdjM2QwYTE5MGRlNmIwMGIzOWI1OGY2NDI4MDlj
MTAyYi4uMGI1OGJkNTlmNjk3MjA0MWVmNGE1ZGVjODRlMWQzYTEzYjIyN2Y2ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29u
c3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWQubW06CisgICAgICAgICgtW0Jsb2JXaXRoVVNEWkV4dGVuc2lvbkRvd25sb2FkRGVs
ZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW06CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
KGNyZWF0ZURpcmVjdG9yaWVzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKFRFU1QpOgor
CiAyMDIyLTAzLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRG9uJ3QgY3JlYXRlIGRpcmVjdG9yaWVzIG9uIGlPUyBpZiB3ZSBhcmUgb25s
eSB1c2luZyBlcGhlbWVyYWwgc3RvcmFnZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IGFjYjdlNDFiYjY0YmYzZjY5N2RjOGJh
OTEzOWIxOWY4MmM0MGM5YTguLjc0NzAyMmQ1MWMxMDIxYmE4NDRmYmYzZjY4YjZjMGQ0NWI3YTNh
NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbQpAQCAtNjUwLDcgKzY1MCw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiAgICAg
RVhQRUNUX1RSVUUoW2ZpbGVuYW1lIGhhc1N1ZmZpeDpAIi51c2R6Il0pOwogCiAgICAgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKGZpbGVuYW1lLCBmaWxlSGFuZGxlKTsK
KyAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoU3Ry
aW5nIHsgZmlsZW5hbWUgfSwgZmlsZUhhbmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRs
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCmluZGV4IDM5
Y2FlYWM4MDQ1MjRkNWRkZGIwOGJmMWNhODM2NjdkYmY5Nzc1NTAuLjYzYmY2OGQ0MDA1ODRmNDVl
ZjEwNjA3N2FjOTE0OWY2YTc2MGJiMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQpAQCAtODMsOSAr
ODMsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KCkKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRh
YmFzZU5hbWUgPSBAIkluZGV4ZWREQlRlc3QiOwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJh
c2VOYW1lID0gQCJJbmRleGVkREJPdGhlciI7CiAgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNl
TmFtZSA9IEAiSW5kZXhlZERCVW51c2VkIjsKLSAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNl
SGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUo
ZXhpc3RpbmdEYXRhYmFzZU5hbWUpOwotICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNo
ID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVh
dGVkRGF0YWJhc2VOYW1lKTsKLSAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0
YWJhc2VOYW1lKTsKKyAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6
OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgZXhpc3Rp
bmdEYXRhYmFzZU5hbWUgfSk7CisgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7
IGNyZWF0ZWREYXRhYmFzZU5hbWUgfSk7CisgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFz
aCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3Ry
aW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKICAgICBOU1VSTCAqaWRiUm9vdFVSTCA9IFt3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKSBfaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnldOwogICAgIE5TVVJMICpvbGRWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lv
bkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
InYxIl07CkBAIC0xMjcsOCArMTI3LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3JpZXMo
U3RyaW5nIHRlc3ROYW1lKQogICAgIGlmICh0ZXN0TmFtZSA9PSAibm9uZSIpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6
OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFz
ZU5hbWUpOwotICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1l
KTsKKyAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgZXhpc3RpbmdEYXRhYmFz
ZU5hbWUgfSk7CisgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpT
UUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGNyZWF0ZWRE
YXRhYmFzZU5hbWUgfSk7CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRi
Um9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpu
ZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAidjEiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9
IFtuZXdWZXJzaW9uRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJm
aWxlX18wIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDY2
ZjkyNWFjNjRkNjgwZjk5ZWYzZTM2MmVjYmU1MzIzNmVjZGFjODQuLmJlMjNkMmViMDc0ZjkxMGRk
ZjRmZWUxMGJkZTVmNDY5YmY1OTk2OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tCkBAIC04NzksNyArODc5LDcgQEAgVEVTVChXZWJLaXQsIE1pZ3JhdGVJbmRleGVk
REJEYXRhVG9HZW5lcmFsU3RvcmFnZURpcmVjdG9yeSkKIHsKICAgICBOU1VSTCAqaW5kZXhlZERC
RGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2Nv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9JbmRleGVkREIi
IHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CiAgICAgTlNV
UkwgKmluZGV4ZWREQk9yaWdpbkRpcmVjdG9yeSA9IFtpbmRleGVkREJEaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEvaHR0cHNfd2Via2l0Lm9yZ18wIl07Ci0gICAgTlNT
dHJpbmcgKmluZGV4ZWREQkRhdGFiYXNlTmFtZSA9IEAiVGVzdERhdGFiYXNlIjsKKyAgICBzdGF0
aWMgY29uc3QgY2hhciBpbmRleGVkREJEYXRhYmFzZU5hbWVbXSA9ICJUZXN0RGF0YWJhc2UiOwog
ICAgIE5TU3RyaW5nICpoYXNoZWRJbmRleGVkREJEYXRhYmFzZU5hbWUgPSBXZWJDb3JlOjpTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGluZGV4ZWREQkRhdGFiYXNlTmFt
ZSk7CiAgICAgTlNVUkwgKmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gW2luZGV4ZWREQk9y
aWdpbkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6aGFzaGVkSW5kZXhlZERC
RGF0YWJhc2VOYW1lXTsKICAgICBOU1VSTCAqaW5kZXhlZERCRmlsZSA9IFtpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3Fs
aXRlMyJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456125</attachid>
            <date>2022-03-30 08:42:14 -0700</date>
            <delta_ts>2022-03-30 12:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220330084213.patch</filename>
            <type>text/plain</type>
            <size>213180</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjNWExNTExMTkwYzc3MjkyY2E0ODdi
NDk3NzZkNDY0NDZjYWEyMTkuLjAwYjZkM2MzNzY0OWY3OWViNzg0OGFhNTEzOTdhMTc1NzYxMjFl
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oOgorICAgICAgICAoV1RGOjptYWtlTlNBcnJheUVsZW1lbnQpOgorICAg
ICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5
c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhhc2hUcmFuc2xh
dG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNo
U2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGJlYmEzMjU2ZjhiNzJmZmYyZGI5YTU2Njg5MjFiNGYxYzE0ODhh
ZGIuLmQ5YmNkYjgxOWM0MDhmMGFmZTViNzE0YzVlZThjZmI4ZDBhNWVmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NiBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2lu
ZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6Y3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlk
QmxvYlRhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29y
ZHNJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNSZWNvcmRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RT
dG9yZUluZm9UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJz
aW9uRnJvbUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBv
cmFyeUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0NDb250cm9sbGVyOjpkdW1wSGVhcCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvU2Vy
aWFsaXplZE5GQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2Vy
aWFsaXplZE5GQTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxG
aWx0ZXJQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVS
TEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
VVJMRmlsdGVyUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQm9vbGVhbik6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0
aWVzQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1
aWxkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlc0ZvckluZGV4ZWREQik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmluZGV4U1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
OmluTWVtb3J5UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VG
aWxlTmFtZVRvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21w
dXRlSGFzaEZvckZpbGVOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5oOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBs
b29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOWQ1Y2M5MTQ4NTdlOTVi
YTU2MTNlNzE4NzQyMjQyNTg1MjJkZWRjLi44Yjg5ZTdhMTYzYzMzZDQ3YzMwNTU5MWMzZTg0ZmU5
NzQ4NWQwY2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAyMi0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdl
YktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjphcHBlbmRCb29sZWFu
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlc291cmNlVG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENv
b2tpZXNGcm9tRE9NKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0Ojpsb2dC
bG9ja2VkQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1u
c0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y29sdW1uc0Zv
clRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVt
blRvVGFibGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OmRhdGFiYXNlUGF0aCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6QmxvYlN0b3JhZ2U6OmdldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6bWFwRmlsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRh
YmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3Jh
Z2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
SlNJUENCaW5kaW5nLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKToKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNw
cC5lcmI6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
OgorICAgICAgICAoZW5jb2RlT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSBfc2VuZEludm9jYXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAocmVwbHlCbG9ja1Np
Z25hdHVyZSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZva2VNZXRo
b2Q6XSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aCk6CisgICAg
ICAgIChXZWJLaXQ6OnJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5z
aW9uKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0
aG91dFJlc29sdmluZ1BhdGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbik6CisgICAg
ICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2
aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVy
RGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2
aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9j
ZXNzTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRl
OjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6WFBDU2VydmljZU1haW4pOgorICAgICAgICAqIFNoYXJlZC9JUENUZXN0ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgICogU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6c3RyaW5n
QnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRh
VmF1bHRQYXJlbnREaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpnZXRVc2VyRGlyZWN0b3J5
U3VmZml4KToKKyAgICAgICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAg
ICAgICAgKEFQSTo6b3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwOgorICAgICAgICAoV0tEb3dubG9hZFNldENsaWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VHZXRTZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VHZXRTZXNz
aW9uQmFja0ZvcndhcmRMaXN0SXRlbVZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdl
VUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNDcmVhdGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0Ny
ZWF0ZVdpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlz
dFN0b3JlOjpkZWZhdWx0U3RvcmVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW06CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0
U3RvcmUgc3RvcmVXaXRoVVJMOl0pOgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3Jl
IHN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBpbml0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6OlN1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6bG9hZFJlcXVlc3RUb0ZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViS2l0U3dpZnRTb2Z0TGluay5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0U3dpZnRM
aWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhz
Rm9yU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tDaGFu
Z2VUZXh0U3R5bGU6XSk6CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIg
X3drQ2hhbmdlVGV4dEFsaWdubWVudDpdKToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVt
Q29udHJvbGxlciBfd2tDaGFuZ2VDb2xvcjpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6Omluc2VydFRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldFNlY3VyaXR5T3JpZ2luRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y3JlYXRl
RW5jb2RlckZyb21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvY29j
b2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpYUENFdmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Zmlu
aXNoR3JhbnRpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFw
c2hvdFJlbW92YWxUcmFja2VyOjpsb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpz
dG9wV2FpdGluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpldmVudE9jY3VycmVkKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpjYW5j
ZWxPdXRzdGFuZGluZ0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OnN0b3BXYWl0aW5nRm9yRXZlbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJp
dmF0ZUtleSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbEhpZENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsSGlkQ29u
bmVjdGlvbjo6cGFyc2VSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1l
ZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURl
bGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRD
YWNoZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNo
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpmb3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAg
ICAoV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hh
bm5lbDo6aW5jcmVhc2VCdWZmZXJlZEFtb3VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVh
bTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZE5v
bkxpbmVhcml6ZWRQREZTZW50aW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dGhy
ZWFkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRo
cmVhZERvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojpjc3NB
bGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2Fk
VVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxl
SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpnZXREaXJlY3RvcnlIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OnJlbW92ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNB
Y2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OmdldEhhbmRsZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246Om1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50OjpzcGVhayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VMaXN0
ZW5lcjo6anNEZXNjcmlwdGlvbkZyb21EZWNvZGVyKToKKyAgICAgICAgKElQQzo6anNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0IGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2llbnRab29tU25hcEFuaW1h
dGlvbkZvcktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1
bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiB3ZWJw
dXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURl
bGV0aW9uUmVxdWVzdDo6ZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorICAgICAg
ICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVj
dGlvbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRD
b25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdlKToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAg
KFdlYlB1c2hEOjpEYWVtb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHVzaERhZW1vbk1haW4pOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwg
Zm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCAxNTMxZWM4YTllNGFkZmYwYjk0MGM4NzgxZjY2YTFjMGFlZDI2MGY0Li4xZGM3OGE5
ZjQzNjdjNGYwM2U0Y2E1YzdiM2NkMjM3MTFkNjJkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5n
IHRoZSBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcik6CisK
IDIwMjItMDMtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBEdXN0IG9mZiBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VM
b2cKaW5kZXggMDA2NzM2NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uM2Q0NWIy
NTZhNjQyNmZkMjM5OGE1ODczYWFkZDM0NjZhNDVlMjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9y
IG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6OnNldEluc3BlY3RvckF0dGFjaERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZH
ZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxp
bmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ5Njc3OWU0MTgwODgwYjc1NWQ2
Yzg4Y2NjMGE0NmQ2MWZmNGU1ZGUuLmQ3MWU4YWY5MTgyYjMzYWViYjI4N2UzYzIxMWMxOTk3ZmQ5
Y2M1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAy
Mi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBh
cmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAg
ICAgIChIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW06CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTZWxlY3RvckV4Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGNvcmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0
ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1M
VmlldyBfc2V0UHJpbnRpbmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpv
cmlnaW5hbFBhZ2VXaWR0aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFk
anVzdFZpZXdTaXplOnBhZ2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgrW1dlYlZpZXcgX2RlY29kZURhdGE6XSk6CisKIDIwMjItMDMtMjggIElhbiBBbmRlcnNv
biAgPGlhbmFAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xpZW50
cyBmYWlsIHRvIGJ1aWxkIGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJLaXRM
ZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2ZjY2NWQwODNmNzU4MjcxZTE4ZjM4OGU3YjRmMzVm
MGNkODg0OTA4Li4yMTE4M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCkBAIC0xNDksNyArMTQ5LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW4K
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVu
dGlyZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZp
bGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIFN0cmluZ1ZpZXcgc3VmZml4ID0geyB9KTsKIFdURl9F
WFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1p
c3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0
aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3Vj
Y2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
RmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCmluZGV4IGVlNGY0MDBkNzNlOGY5MTRiMTM0NDQzNDFkODZiZDUxMjMyYjA1YmUuLmM1ZGIw
ZjllOWU0MWJhY2UzYTkxODEwOWVlMGYwY2VkMjlhMDliMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIGNyZWF0ZVRlbXBv
cmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiB0ZW1wb3JhcnlG
aWxlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1
ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQogewog
ICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oCmluZGV4IGFiMjExNWY2MzE0Yzc5NjBhNjU3ZTA1M2Q2
NDJhN2M2YmYwMDVhZDYuLmUwNmJhYjRlMjg0ODAxZGNkMzAyMWMyNThiYThiYWRhYWE5NDI1MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKKysrIGIvU291
cmNlL1dURi93dGYvY29jb2EvVmVjdG9yQ29jb2EuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00Nyw2
ICs0OCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vCiAvLyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
ckVsZW1lbnRUeXBlPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBWZWN0b3JFbGVtZW50VHlwZSos
IGlkIGFycmF5RWxlbWVudCk7CiAKK2lubGluZSBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxl
bWVudChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhudWxscHRyLCBzdHJpbmcsIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xKSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlw
ZT4gUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjcmVhdGVOU0FycmF5KENvbGxlY3Rpb25UeXBl
JiYpOwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yRWxlbWVudFR5cGU+IFZlY3RvcjxWZWN0b3JF
bGVtZW50VHlwZT4gbWFrZVZlY3RvcihOU0FycmF5ICopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCmluZGV4IGNkMTk0NzdhYzUxYTU0YjA0OTAxZWVhZjM3ZmRmMGNlYmEz
OGFlNzQuLjZlMGU0NzY3MjI2NjQ0YTk2MjNiMmJjNjMxYWE1MDkxMDFlNThmNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RkOjpv
cHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYg
c3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8gRklY
TUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29k
ZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgs
IHN1ZmZpeC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKaW5kZXggNDI3NmY3N2UyMThkMWY0YWIxZWZlNWUyODEzMGI5MDU1MGNjNmI0NS4uN2Y5ZThm
YzNkMGZjM2UzYzY4NzRjZTY3MjhlMzZlZDI0YzgwZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXgg
aXMgbm90IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQg
aXMgbWFjT1MtcG9ydC1vbmx5LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNF
bXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiMmM5NmUwYzdi
N2VhMTBiOGVhMmQ4MDM0ZjBlMDcyZTU1ZDE4MGM0Li4yOGQxY2U1ZjZlZTE4YmQwNjlkN2Y2NzZk
YjUxMjU0ZjRhMzVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0y
MTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1cm4gcHJvcG9z
ZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBT
dHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0
ZWQsIGJ1dCBPSyBmb3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQt
b25seS4KICAgICBBU1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRlMjBhNGI5YmViM2RmZWRmNTljNTAz
OGJiYzQyYTgxOWQ1MjhjMGMuLjJiOWIzODRjNTZhZGVmZWYyMzlhZGUyNGQ0ODFlMWY0ZjYwNjU2
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNTAsNyArMjUwLDcg
QEAgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkKIAogc3Rh
dGljIElEQkVycm9yIGNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KFNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBkYXRh
YmFzZS50YWJsZVNRTCgiUmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0g
ZGF0YWJhc2UudGFibGVTUUwoIlJlY29yZHMiKTsKICAgICBpZiAodGFibGVTdGF0ZW1lbnQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNSZWNvcmRz
VGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIFJlY29yZHMgdGFibGUgKCIsIGRhdGFiYXNl
Lmxhc3RFcnJvcigpLCAiKSAtICIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKSB9OwpAQCAtMjk0
LDcgKzI5NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRC
bG9iVGFibGVzKCkKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1fc3FsaXRl
REItPmlzT3BlbigpKTsKIAotICAgIFN0cmluZyByZWNvcmRzVGFibGVTdGF0ZW1lbnQgPSBtX3Nx
bGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiX3MpOworICAgIFN0cmluZyByZWNvcmRzVGFi
bGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiKTsKICAgICBp
ZiAocmVjb3Jkc1RhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1fc3Fs
aXRlREItPmV4ZWN1dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNy
ZWF0aW5nIEJsb2JSZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikg
LSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMwNCw3ICszMDQsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxlcygpCiAK
ICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYlJlY29yZHNU
YWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jkc1RhYmxl
U2NoZW1hQWx0ZXJuYXRlKCkpOwogCi0gICAgU3RyaW5nIGZpbGVzVGFibGVTdGF0ZW1lbnQgPSBt
X3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYkZpbGVzIl9zKTsKKyAgICBTdHJpbmcgZmlsZXNUYWJs
ZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iRmlsZXMiKTsKICAgICBpZiAo
ZmlsZXNUYWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0ZURC
LT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNjaGVtYSgpKSkKICAgICAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiRXJyb3IgY3JlYXRpbmcg
QmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMzOCw3ICszMzgsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUoKQogICAg
IEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwog
Ci0gICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIkluZGV4
UmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFi
bGVTUUwoIkluZGV4UmVjb3JkcyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkp
IHsKICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2M0luZGV4UmVjb3Jk
c1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCIsIG1f
c3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KSB9OwpAQCAtMzc4LDcgKzM3OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwog
ICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTdHJpbmcgaW5kZXhTdGF0
ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzSW5kZXgiX3MpOworICAg
IFN0cmluZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRleFJlY29y
ZHNJbmRleCIpOwogICAgIGlmIChpbmRleFN0YXRlbWVudCA9PSBJbmRleFJlY29yZHNJbmRleFNj
aGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTM5Niw3ICszOTYs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNv
cmRzUmVjb3JkSW5kZXgoKQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIGluZGV4U3RhdGVtZW50ID0gbV9zcWxp
dGVEQi0+aW5kZXhTUUwoIkluZGV4UmVjb3Jkc1JlY29yZEluZGV4Il9zKTsKKyAgICBTdHJpbmcg
aW5kZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzUmVjb3Jk
SW5kZXgiKTsKICAgICBpZiAoaW5kZXhTdGF0ZW1lbnQgPT0gdjFJbmRleFJlY29yZHNSZWNvcmRJ
bmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTQ4Niw3
ICs0ODYsNyBAQCBzdGQ6Om9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZgogICAgIEFTU0VSVChtX3NxbGl0ZURC
KTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIHRhYmxl
U3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVjdFN0b3JlSW5mbyJfcyk7Cisg
ICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVjdFN0
b3JlSW5mbyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCkBAIC03NzUsNyArNzc1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3Rp
bmdEYXRhYmFzZUkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAKLSAgICBpZiAoIW1fc3Fs
aXRlREItPnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUluZm8iX3MpKQorICAgIGlmICghbV9zcWxp
dGVEQi0+dGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyIpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIFN0cmluZyBkYXRhYmFzZU5hbWU7CkBAIC05NTAsNyArOTUwLDcgQEAgc3Rk
OjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmRhdGFiYXNlTmFtZUFuZFYKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBT
UUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBuYW1lIiwg
ZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KLSAgICBpZiAoIWRhdGFiYXNlLnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUluZm8i
X3MpKSB7CisgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJbmZvIikp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJEYXRhYmFzZUluZm8gdGFi
bGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCks
IGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
c2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4
IGNhYjRiOGRlMjAyZTc3ZDcwMjgyYjU5NGExYmVmYmQ3NWIwNmNiMmQuLjA5ZWM4ZjYwM2U5ZDAy
MmIzNzhkZGEwZTQyN2ZlYzUyMWZkZDUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtp
dE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQog
ICAgIC8vIGluaXRpYWxpemVyIGJ1dCBjdXJyZW50bHkgdGhhdCBkb2VzIG5vdCB3b3JrLgogCiAg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiX3MsIGZp
bGVIYW5kbGUsICIudXNkeiJfcyk7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBB
U1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKICAgICBzaXpl
X3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKaW5kZXggY2QwYzQxNGZiMzEwMDI0MTNlYTJiZmRkMDk4MzA1ZDUxYjlmMWZkMi4u
YjEzMjBmMDA4YmJmOTMzNTliMmI4NTMxZGViMTZmMTRkOWY5OGU5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTM2NiwxMSArMzY2
LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShi
b29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH07CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIFN0cmluZyB0YWJsZU5hbWUodW5xdWFsaWZpZWRJbmZvVGFi
bGVOYW1lKTsKLSAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0cyh0
YWJsZU5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVFeGlz
dHModW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1fbmV3ID0g
dHJ1ZTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29t
bWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFt
X3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhtYWtlU3RyaW5nKCJDUkVBVEUgVEFC
TEUgIiwgdW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lLCAiIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBt
ZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwgZmFp
bGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigp
LCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICAgICAg
dHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRh
YmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGE0ZjBjNzQ0NTIzNzFhNGRiZDhkZjA4NjA2
OWVjZDEwYWJhMzIyOWYuLjllYjM5MWM2ZDBiZDZkNDg2MDUxMGVkYWI3Mjg5MzM5OTUwNmJjNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgRGF0YWJhc2VUcmFja2VyOjpEYXRhYmFz
ZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAKIFN0cmluZyBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBTUUxpdGVG
aWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLmlzb2xhdGVkQ29weSgpLCAiRGF0YWJhc2VzLmRiIl9zKTsKKyAgICByZXR1cm4gU1FM
aXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChtX2RhdGFiYXNlRGly
ZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgIkRhdGFiYXNlcy5kYiIpOwogfQogCiB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25BY3Rpb24g
Y3JlYXRlQWN0aW9uKQpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFjdGlvbikK
ICAgICB9CiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKLSAgICBp
ZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiX3MpKSB7CisgICAgaWYgKCFtX2Rh
dGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVF
IE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT3JpZ2lucyB0YWJsZSIpOwogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiX3Mp
KSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkgewogICAg
ICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBEYXRhYmFz
ZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwg
bmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIsIHBhdGgg
VEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0YWJhc2VzIHRhYmxlIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCA1ZjkzNDkxNzU2ZjI3
ZWMwNGQ0ZGVhOWQzODFiN2E2NGM2Yzc5MjA3Li42YTkwMTk3YjQ0NmM2NGVjM2E3M2IzMzIzYTk0
NTQwY2Q1OGQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6ZGVsZXRlQWxsTGlu
a2VkQ29kZShEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkKIHZvaWQgR0NDb250cm9sbGVyOjpk
dW1wSGVhcCgpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5k
bGU7Ci0gICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJHQ0hlYXAiX3MsIGZpbGVIYW5kbGUpOworICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiR0NIZWFwIiwgZmlsZUhhbmRsZSk7CiAgICAg
aWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRHVtcGluZyBHQyBoZWFwIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBmaWxl
Iik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMDUyYjU5N2JjZmI5MmE3NDM3OTNmOTE1ZWQ2
OTZlN2EwZTllNDhmMS4uMDRjNmRhNWE4NDhkMDg5MWYzM2Y0ZjgzOWRhOTUyYjhjNzY3OWEwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5G
QS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5G
QS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQogewog
ICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0g
ICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJTZXJpYWxp
emVkTkZBIl9zLCBmaWxlKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoIlNlcmlhbGl6ZWRORkEiLCBmaWxlKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIu
Y3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5Nzc2OTE4OWU3NGEuLmE5ZWM4
ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMzQ5LDcg
KzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFyc2VyKENvbWJpbmVkVVJMRmls
dGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQYXJzZXI6On5VUkxGaWx0ZXJQ
YXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgVVJMRmls
dGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBwYXR0ZXJu
SXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitVUkxGaWx0ZXJQYXJzZXI6OlBh
cnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihTdHJpbmdWaWV3IHBhdHRlcm4s
IGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewogICAg
IGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBOb25BU0NJSTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgK
aW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJjODAyOGI0MS4uYTQ5M2I5MTY1
YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVzU3RyaW5nKFBhcnNlU3RhdHVz
KTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxGaWx0ZXJzJik7CiAg
ICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVzIGFkZFBhdHRlcm4oY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90IHBh
dHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihTdHJpbmdWaWV3IHBhdHRlcm4s
IGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsKIAogcHJp
dmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmluZWRVUkxGaWx0ZXJzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmluZGV4
IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2NGQuLjBkNDdkN2MwNmIzMTM5
OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2ln
bmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBhcHBl
bmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJv
b2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBlbmQo
IiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMmQzODZkYjFmZjNjNjJjYWZh
Nzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uYTY4MmNjYmE3NTQyOWQ3Mjg1MjZkOGFjZjhmYjBlZTc1
MjJkMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApA
QCAtODYsNyArODYsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50
aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JD
aGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JD
aGFyYWN0ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxTZWN1cml0eU9y
aWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihTdHJp
bmdWaWV3IGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBh
IGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlm
aWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGQ6Om9w
dGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKGNvbgogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9u
IGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdC4KICAgICBhdXRvIHBvcnRM
ZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMTsKLSAg
ICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4o
U3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0KHBvcnRMZW5ndGgpKTsKKyAg
ICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4o
ZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KHBvcnRMZW5ndGgpKTsKIAogICAgIC8vIE5vdGhpbmcg
YWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhlIGNvbG9u
IGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKQEAgLTExNyw3ICsxMTcsNyBA
QCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogCiAgICAgYXV0byBwcm90b2NvbCA9IGRhdGFiYXNl
SWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0ID0gZGF0
YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNl
cGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2ws
IGhvc3QsIHBvcnQgfTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wu
dG9TdHJpbmcoKSwgaG9zdC50b1N0cmluZygpLCBwb3J0IH07CiB9CiAKIFNlY3VyaXR5T3JpZ2lu
RGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IDM3MzUwYWE0MGE2YmUwYmQyNmRj
NjU1MWJjNzA0NjM0ZGE5YzIzOWEuLmZhNDQ2ZGI2MTc4NDY0NzhlNDQ0MjVhODZmNTkyMDU2OTg3
OTQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNzEs
NyArNzEsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICAvLyBTZXJpYWxpemUg
dGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVzZWQgYXMgcGFy
dCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBiZSB1c2VkIGluIHN0
b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFzZUlkZW50
aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5E
YXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwogICAgIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRh
dGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCmluZGV4IGFmMWU0ZDhiYmZhMmE3
NTU3ZDhjZmExYTk1NWUxOTY0YTE5MzgyMTQuLjIwN2JmNDY2MmVmZGRlNDY1OWE2NjBkYjYxZDhj
ZTg4YTU3MmNlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBT
dHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uVVRJLCBjCiAgICAgYXV0byBzdWZmaXggPSBtYWtlU3RyaW5nKCcuJywgZGVzdGlu
YXRpb25FeHRlbnNpb24pOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGRl
c3RpbmF0aW9uRmlsZUhhbmRsZTsKLSAgICBTdHJpbmcgZGVzdGluYXRpb25QYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBJbWFnZSJfcywgZGVzdGluYXRpb25GaWxlSGFu
ZGxlLCBzdWZmaXgpOworICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcEltYWdlIiwgZGVzdGluYXRpb25GaWxlSGFuZGxlLCBzdWZm
aXgpOwogICAgIGlmIChkZXN0aW5hdGlvbkZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJbWFnZXMs
ICJ0cmFuc2NvZGVJbWFnZTogRGVzdGluYXRpb24gaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0ZWQ6
ICVzICVzXG4iLCBwYXRoLnV0ZjgoKS5kYXRhKCksIGRlc3RpbmF0aW9uVVRJLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCmluZGV4IDA3NzNm
NTg4NmU0MGEwMmVhOWUzY2EwODAyMDVjNDcyYTliMjgzNDkuLmRjN2EzY2U3ZmYzYjdlZDE5ZGVm
MGZmNDhhMjA0OTgwZDQ5NjdlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KQEAgLTUxMSwyMSArNTExLDIxIEBA
IHB1YmxpYzoKIAogICAgICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0g
d2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50
ZXIuCiAgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSAnXHInKSB7Ci0gICAg
ICAgICAgICBtX3RleHQgPSAiXHIiOwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJc
ciI7CisgICAgICAgICAgICBtX3RleHQgPSAiXHIiX3M7CisgICAgICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gbV90ZXh0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGFkanVzdG1lbnRz
IGJlbG93IGFyZSBvbmx5IG5lZWRlZCBpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUsIGJ1
dCB3ZSBjYW5ub3QgdGVsbCB3aGF0IG1vZGUgd2UgYXJlIGluIGZyb20gaGVyZS4KIAogICAgICAg
ICAvLyBUdXJuIDB4N0YgaW50byA4LCBiZWNhdXNlIGJhY2tzcGFjZSBuZWVkcyB0byBhbHdheXMg
YmUgOC4KICAgICAgICAgaWYgKG1fdGV4dCA9PSAiXHg3RiIpCi0gICAgICAgICAgICBtX3RleHQg
PSAiXHg4IjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDgiX3M7CiAgICAgICAgIGlmIChtX3Vu
bW9kaWZpZWRUZXh0ID09ICJceDdGIikKLSAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAi
XHg4IjsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg4Il9zOwogICAgICAgICAv
LyBBbHdheXMgdXNlIDkgZm9yIHRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBk
aWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCiAgICAgICAgIGlmIChtX3dpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9PSA5KSB7Ci0gICAgICAgICAgICBtX3RleHQgPSAiXHg5IjsKLSAgICAg
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJc
eDkiX3M7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0OwogICAgICAgICB9
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDM1MTUxYmE2NmYzYjJjNGVmYTFmNjlmNjZjNDI1NGMy
ODRkNGQ1MGMuLmJiNTk1ZmRiZmMyMDc4NjZmODk4ZWRmOTFhZGNiOTkzYjcwZDdjNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIoY29uc3QgVmVjdG9yPFN0cmluCiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKICAgICAgICAgZm9yIChhdXRvJiBibG9iIDogYmxv
YnNGb3JXcml0aW5nKSB7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZTsKLSAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgiQmxvYiJfcywgZmlsZSk7CisgICAgICAgICAgICBTdHJpbmcgdGVt
cEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkJsb2IiLCBmaWxlKTsK
ICAgICAgICAgICAgIGlmICghd3JpdGVGaWxlUGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGJsb2Iu
ZmlsZVBhdGhzT3JEYXRhQnVmZmVycywgZmlsZSwgdGVtcEZpbGVQYXRoKSkgewogICAgICAgICAg
ICAgICAgIGZpbGVQYXRocy5jbGVhcigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZjJlM2Vk
YWQ1MGVkYTJmZGUwZTVkNTY3YWFlMzM3M2RjNTVkYjA1MC4uMWViNmRlYmFmYzIzYzQyZGQxMmVk
NzZhMWY2ZjEwNWZlMjljZWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC04OSwxMSArODksNiBAQCBTUUxpdGVEYXRhYmFzZTo6flNR
TGl0ZURhdGFiYXNlKCkKICAgICBjbG9zZSgpOwogfQogCi1jb25zdCBjaGFyKiBTUUxpdGVEYXRh
YmFzZTo6aW5NZW1vcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gIjptZW1vcnk6IjsKLX0KLQogYm9v
bCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBv
cGVuTW9kZSkKIHsKICAgICBpbml0aWFsaXplU1FMaXRlSWZOZWNlc3NhcnkoKTsKQEAgLTQyNiwx
MiArNDIxLDEyIEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0
ZXJhbCBxdWVyeSkKICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0ZUNv
bW1hbmQoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUpCitib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhTdHJpbmdW
aWV3IHRhYmxlTmFtZSkKIHsKICAgICByZXR1cm4gIXRhYmxlU1FMKHRhYmxlTmFtZSkuaXNFbXB0
eSgpOwogfQogCi1TdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQorU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChTdHJpbmdWaWV3IHRh
YmxlTmFtZSkKIHsKICAgICBpZiAoIWlzT3BlbigpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAt
NDQzLDcgKzQzOCw3IEBAIFN0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUpCiAgICAgcmV0dXJuIHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKIH0K
IAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjppbmRleFNRTChjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoU3RyaW5nVmlldyBpbmRleE5hbWUp
CiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggZDQxNGI5YTZjYTM2MzYx
ZjdiMTE3MTE3NmExZTk0ZDQxY2I5ZTgzYi4uOTE2MDEzNDgxNzU5MjEzYWE1MmQxOThhNDdlMmU1
YzRkNmE5ODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0
ZURhdGFiYXNlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlKCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCk7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjpt
ZW1vcnk6Il9zOyB9CiAKICAgICBlbnVtIGNsYXNzIE9wZW5Nb2RlIHsgUmVhZE9ubHksIFJlYWRX
cml0ZSwgUmVhZFdyaXRlQ3JlYXRlIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVuKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6OlJlYWRXcml0ZUNyZWF0
ZSk7CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4
ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCB0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgdGFibGVTUUwoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGlu
ZGV4U1FMKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVFeGlz
dHMoU3RyaW5nVmlldyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRhYmxlU1FMKFN0cmlu
Z1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBpbmRleFNRTChTdHJpbmdWaWV3KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGFibGVzKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50IHJ1blZhY3V1bUNvbW1hbmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcnVu
SW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggNzJkNGE4NzQ5YTA4ZDBhNzM4MzQ4NjRm
NmY2ZjM4ZGY1NDk0NDgyMy4uZWMwZDFjZWU1YmExYTA4ODA1MDAwZmY3MGQ3NDY0NjUwMzZkNzUy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmNwcApAQCAtNDksNyArNDksNyBAQCBTUUxpdGVGaWxlU3lzdGVtOjpTUUxpdGVGaWxlU3lzdGVt
KCkKIHsKIH0KIAotU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5h
bWVUb1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQorU3Ry
aW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgoU3RyaW5n
VmlldyBwYXRoLCBTdHJpbmdWaWV3IGZpbGVOYW1lKQogewogICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwogfQpAQCAtMTI4LDcg
KzEyOCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFi
YXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KICAgICAKLVN0cmluZyBTUUxpdGVG
aWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUp
CitTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmdW
aWV3IGZpbGVOYW1lKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBh
dXRvIHV0ZjhGaWxlTmFtZSA9IGZpbGVOYW1lLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmluZGV4IDY0ZjFhMmMxMmE5MTFhZWIwYWRj
NTllZmJiY2U1MzkwOWI5NTk1NmMuLjUzNDI3MTBmN2JiZDIxOWFkN2JkZWYwNzRkMGQzYzY0OTIz
MzY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0
ZW0uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBwYXRoIC0gVGhl
IGRpcmVjdG9yeS4KICAgICAvLyBmaWxlTmFtZSAtIFRoZSBmaWxlIG5hbWUuCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKFN0cmluZ1ZpZXcg
cGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSk7CiAKICAgICAvLyBNYWtlcyBzdXJlIHRoZSBnaXZl
biBkaXJlY3RvcnkgZXhpc3RzLCBieSBjcmVhdGluZyBhbGwgbWlzc2luZyBkaXJlY3Rvcmllcwog
ICAgIC8vIG9uIHRoZSBnaXZlbiBwYXRoLgpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBNb3ZlcyBhIGRhdGFiYXNlIGZpbGUgdG8gYSBuZXcgcGxhY2UuCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgbW92ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIG9sZEZpbGVQ
YXRoLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVQYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIGNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjb21wdXRlSGFzaEZvckZpbGVOYW1l
KFN0cmluZ1ZpZXcgZmlsZVBhdGgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBUcnVuY2F0ZXMgYSBkYXRhYmFzZSBmaWxlLiBVc2VkIHdoZW4gTW9iaWxlU2FmYXJpU2V0dGlu
Z3MgZGVsZXRlcyBhIGRhdGFiYXNlIGZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBkNjRjY2MwYjYwMThjN2ZlNzQ2ZTdhY2ZlNjEwZmNlNGY5YjA2NWM1Li42ZGI2NDQwY2Y5NmQ5
MmFjMmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
QEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVl
dWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cgogICAgICAgICBTdHJp
bmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3ND
b250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUsIHJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3JlKCks
IGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVk
KGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJUEM6
OlNlbWFwaG9yZSB7IH0sIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmlu
ZGV4IGNjNjE1MjQ3OTNjMGYxMWNmZWI4ZDRhODRlY2ZhOWFmNGU2ZTJhYTcuLmZlMDdmZTNkNjQy
OGRmY2VhMmRmZjVlMzg0MmYxZmNlNGEzMzYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjUwMyw3ICsyNTAzLDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3Vi
U3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2kKICAgICByZXR1cm4gKHN1YkZyYW1lVW5kZXJUb3BG
cmFtZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVD
b3VudC0+Y29sdW1uSW50KDApID09IDEgJiYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby0+
Y29sdW1uSW50KDApID09IDEpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0YXRp
YyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgQVNDSUlMaXRlcmFs
IGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJlbCwg
IjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CkBAIC0yNTMxLDMxICsyNTMxLDMxIEBAIFN0
cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5n
RnJvbURvbWFpbklEKHVuc2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQVNDSUlMaXRl
cmFsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNT
dGF0ZW1lbnQoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVu
dChBU0NJSUxpdGVyYWwgdGFibGVOYW1lKSBjb25zdAogewotICAgIGlmICh0YWJsZU5hbWUgPT0g
IlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIpCisgICAgaWYgKCFzdHJjbXAodGFi
bGVOYW1lLmNoYXJhY3RlcnMoKSwgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIp
KQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BMZXZlbERvbWFpbklEIGZyb20gU3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKLSAgICBpZiAo
dGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIikKKyAgICBpZiAoIXN0cmNt
cCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIpKQog
ICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9
PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5h
bWUuY2hhcmFjdGVycygpLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikpCiAgICAgICAg
IHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
RnJvbSBXSEVSRSB0YXJnZXREb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAi
VG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUu
Y2hhcmFjdGVycygpLCAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikpCiAgICAgICAgIHJl
dHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSBXSEVSRSB0b0RvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFt
ZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hh
cmFjdGVycygpLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIpKQogICAgICAgICBy
ZXR1cm4gIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJhbWVMb2FkZWRUaGly
ZFBhcnR5U2NyaXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFi
bGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAoIXN0cmNt
cCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIp
KQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyJfczsKLSAgICBp
ZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBp
ZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZy
b20gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFp
bklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvIikKKyAgICBpZiAoIXN0cmNtcCh0YWJsZU5hbWUuY2hhcmFjdGVycygpLCAiU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIpKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFp
bklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURv
bWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20iKQorICAgIGlmICghc3RyY21wKHRhYmxlTmFtZS5jaGFyYWN0ZXJzKCksICJT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKSkKICAgICAgICAgcmV0dXJuICJTRUxFQ1Qg
ZnJvbURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1
YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIAogICAgIHJldHVybiAiIl9zOwogfQogCi12
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0
aWNMaXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBj
b25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiB7
CiAgICAgYXV0byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUpOwog
ICAgIApAQCAtMjYwMyw3ICsyNjAzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAgICBi
dWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCBkb21haW4sICdcbicpOwogICAg
IAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJo
YWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVu
dC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9t
YWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0
aW9uKFNlY29uZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVt
bkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQpAQCAtMjYxMSwz
NCArMjYxMSwzNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpy
ZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGVsc2UKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7CisgICAg
YXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgbV9nZXRSZXNvdXJjZURh
dGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsK
ICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0gICAg
YXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIs
ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAv
LyBUb3AgZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0
aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50IiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1
aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOwotICAgIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIs
IGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGlj
TGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgZG9tYWluKTsKKyAg
ICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBkb21haW4pOworICAgIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJf
cywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGlj
TGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgZG9tYWlu
KTsKIAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+
Y29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCkpOwor
ICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1
bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwotICAgIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMi
LCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAvLyBTdWJyZXNvdXJjZSBz
dGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJT
dGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBk
b21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgZG9tYWluKTsKIAogICAgIC8vIFByZXZhbGVudCBSZXNv
dXJjZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBt
X2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzUHJldmFs
ZW50SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJlc291
cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50
KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBhcHBl
bmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5k
ZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChJ
c1ZlcnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1
aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDgxMWJiZjk3MGVhYzZmYTcwZGFh
MDk3MmI1NjlkNWU5ZjgyZjE5MDkuLmYyMmJmMWY0YjA1OTFjNzM4YTJlMjliY2Y4NDhhYTBhYjUy
MWMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCkBAIC0xMzgsOCArMTM4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2ln
bmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFuZFVw
ZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zyb21E
b21haW5JRCh1bnNpZ25lZCkgY29uc3QgZmluYWw7Ci0gICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0
YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIGFwcGVuZFN1
YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBj
b25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CisgICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0YXRp
c3RpY1N0YXRlbWVudChBU0NJSUxpdGVyYWwpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kU3ViU3Rh
dGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJE
YXRhYmFzZUNvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZiOTMy
ZGJhZDQ0MGI1NTE1NTg0MjdkNDBkNmQyMmFkZDBkMzNjMDcuLmU0ZWEwM2MxMWI2YmIzZmZlM2Y4
MGQyZjNiNzhmYjlhMzk4YzU2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03
ODksNyArNzg5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFMKICNpZiBFTkFCTEUoSU5URUxM
SUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNz
aW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9u
KCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iX3Ms
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJ
RCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CkBAIC04MDQsNyAr
ODA0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb24KICNpZiBFTkFCTEUoSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5z
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9p
ZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwor
ICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigq
dGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSJf
cywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFt
ZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRl
eCA2ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0Li42NzRiOTg1NTM1N2Mx
MGMzYTNjYzg3ZDA2Mzc3YjE3MTc2NDA2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTYxLDExICs2MSwxMSBA
QCBzdGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBjb25z
dCBpbnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1ZXN0
ZWRSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50ZXJu
YWxFcnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsKLXN0
YXRpYyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVu
dCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2Vk
IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRl
eHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3QgY2hh
ciogaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVUZXh0
ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJfczsK
IAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJL
aXRCbG9iUmVzb3VyY2UiX3M7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29kZSkKICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKCV1KSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlcnJv
ckNvZGUpKTsKIAogICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tCbG9iPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBlcnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiIgOiBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKG1fYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCkpLCBlcnJvckNvZGUg
IT0gRXJyb3I6Ok5vRXJyb3IgPyAwIDogbV90b3RhbFJlbWFpbmluZ1NpemUsIFN0cmluZygpKTsK
KyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBlcnJv
ckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiJfcyA6IGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSksIGVycm9yQ29kZSAhPSBF
cnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwogICAg
IHN3aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBFcnJvcjo6Tm9FcnJvcjogewogICAgICAg
ICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAhPSBrUG9zaXRpb25Ob3RTcGVj
aWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDhmYjdhNDg0OTkzZmVjZGFjNDRkYzAxMTMyNThlYTIyYWRmMjhkYzkuLjkxZDkw
YjA4OGFkYTUxOGZjMTM3Y2YxZTkwNjNlMThlMjkxM2JhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzQ1LDcgKzIzNDUsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3NpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
Ci0gICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiIpOworICAgIGNhbGxi
YWNrKCJDYW5ub3QgZmluZCBuZXR3b3JrIHNlc3Npb24iX3MpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzMmEwNmQ0OTQ2M2QzODhjZTYyZTM2YTg2YmI4YTg0MGE2YWFiOTEyLi41N2MxYjFiNjkz
ZDcxNWJlMTJlYWQ2YzZmZDU5NjUxMjk3YzMyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTk0LDEw
ICsxNTk0LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbigpIGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25uZWN0
aW9uLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAgICBB
U1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9u
KG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVl
c3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5h
bFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5o
dHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7Cisg
ICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9h
ZGVyIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2Ft
ZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51
cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlE
KCksIGNvcmVJZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2ll
SW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikK
K3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHN0YXRp
YyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2FwZUlE
Rm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBhdXRvIGVzY2FwZWRSZWZlcnJlciA9IGVzY2FwZUZv
ckpTT04ocmVmZXJyZXIpOwogCi0jZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2Jq
ZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9M
T0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNz
aW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAg
LSAlczo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJH
U19fKQogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxM
T1dFRCgibG9nQ29va2llSW5mb3JtYXRpb246IEJMT0NLRUQgY29va2llIGFjY2VzcyBmb3Igd2Vi
UGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlEPSVzLCBmaXJzdFBhcnR5PSVzOiAiIHN0
ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCkuZGF0
YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRmlyc3RQYXJ0eS51
dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBzdGF0
aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0
YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQq
IGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tp
ZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBzdGF0aWMgdm9pZCBsb2dD
b29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBj
b25uZWN0aQogICAgIGF1dG8gZXNjYXBlZElkZW50aWZpZXIgPSBlc2NhcGVJREZvckpTT04oaWRl
bnRpZmllcik7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gKGZyYW1lSUQgJiYgcGFnZUlE
KSA/IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQ
YXJ0eSB9LCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6IGZhbHNlOwogCi0jZGVm
aW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgp
LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVj
dCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9MT0co
c3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3JtYXRp
b246IHdlYlBhZ2VJRD0lcywgZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0lczogIiBzdHIsIGVzY2Fw
ZWRQYWdlSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwgZXNj
YXBlZElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTY4NSw3
ICsxNjg1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0dfSUZf
QUxMT1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3Jt
YXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dn
ZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNv
bm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApp
bmRleCA2NWNlYzljZDNjMjRkNGJjN2UzNDBkNzlkYTVkY2Q4MmZkNjYxODQ0Li4yZmI5ZmFkNDU1
YTM5YjIwMTE3NjdiZWUzNzcxNzBjMzU3NjRjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0MCw3ICsxNDAs
NyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElP
TikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Np
b25JRCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dn
ZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKKyAgICBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEFT
Q0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyPik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggZDZiYzA5MDEyMDMz
MWY4MzA2MGJjZGE2MTRkOTMyYWE1OWEyMWNhMC4uZWYxOGIyN2ZiNTNlYmI1ZjY4MDk2MjUzNGNh
YThiYjFlMmNjM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC00ODksMTQgKzQ4OSwx
NSBAQCB2b2lkIERhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEbwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgLy8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21haW4g
aXMgc3BlY2lmaWVkLgotICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOworICAgIFN0cmlu
ZyBiaW5kUGFyYW1ldGVyOwogICAgIGlmIChkb21haW4pIHsKICAgICAgICAgYXV0byBkb21haW5J
RFRvTWF0Y2ggPSBkb21haW5JRCgqZG9tYWluKTsKICAgICAgICAgaWYgKCFkb21haW5JRFRvTWF0
Y2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0cmlu
Zzo6bnVtYmVyKCpkb21haW5JRFRvTWF0Y2gpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAg
YmluZFBhcmFtZXRlciA9ICIlIl9zOwogCiAgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVn
aW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAKQEAgLTcxMiwxNyArNzEzLDE3IEBAIHZvaWQg
RGF0YWJhc2U6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKIAogdm9pZCBEYXRhYmFzZTo6YWRkRGVzdGlu
YXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgU3RyaW5nIGF0dHJpYnV0ZWRU
YWJsZU5hbWUoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAgY29u
c3RleHByIEFTQ0lJTGl0ZXJhbCBhdHRyaWJ1dGVkVGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCJfczsKICAgICBTdHJpbmcgZGVzdGluYXRpb25LZXlJRENvbHVt
bk5hbWUoImRlc3RpbmF0aW9uS2V5SUQiX3MpOwogICAgIGF1dG8gY29sdW1ucyA9IGNvbHVtbnNG
b3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKTsKICAgICBpZiAoIWNvbHVtbnMuc2l6ZSgpIHx8
IGNvbHVtbnMubGFzdCgpICE9IGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKSB7CiAgICAgICAg
IGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlv
blRva2VuIFRFWFQiX3MpOwogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1
dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCJfcyk7Ci0gICAgICAgIGFk
ZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvbktl
eUlEIFRFWFQiKTsKKyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRh
YmxlTmFtZSwgImRlc3RpbmF0aW9uS2V5SUQgVEVYVCJfcyk7CiAgICAgfQogfQogCi1WZWN0b3I8
U3RyaW5nPiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQorVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNGb3JUYWJsZShBU0NJSUxpdGVyYWwg
dGFibGVOYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgdGFibGVfaW5mbygiLCB0YWJsZU5hbWUsICIp
IikpOwogCkBAIC03NDEsNyArNzQyLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVt
bnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICByZXR1cm4gY29sdW1uczsK
IH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5n
JiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSkKK3ZvaWQgRGF0YWJhc2U6OmFk
ZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJTGl0ZXJh
bCBjb2x1bW5OYW1lKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUsICIgQURE
IENPTFVNTiAiLCBjb2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmgKaW5kZXggMmZiN2QyNTY5ZWQzOGE1ODIzOGEyODAwZWUyNDhiNTdmNGU2ZDdmZS4u
ZTcxZDQwYmQ0OTg1OWViYzNlYWEzMzhjZDVlYjhiMDUyY2JjY2Q4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmgKQEAgLTgyLDggKzgyLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4
cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKICAgICBTcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gc29ydGVkVGFibGVzKCkgZmluYWw7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBjb2x1
bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpOwotICAgIHZvaWQgYWRkTWlzc2lu
Z0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29s
dW1uTmFtZSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKEFTQ0lJTGl0ZXJh
bCB0YWJsZU5hbWUpOworICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoQVNDSUlMaXRl
cmFsIHRhYmxlTmFtZSwgQVNDSUlMaXRlcmFsIGNvbHVtbk5hbWUpOwogCiAgICAgdXNpbmcgU3Rh
dGVtZW50ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD47CiAgICAg
bXV0YWJsZSBTdGF0ZW1lbnQgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCAyYTgyYTExNWEx
YjliYWQ1OGJhODY4ZTU1ZTU3N2NmOWY1NzNkMTQ1Li5lMmI2MzdiZDk2ODE3MjhjZTFiYWE3ZTcw
MzNlMWJmNDYzODdlY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcg
QEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2Fi
bGVUb2tlbkZvckRlc3RpbmF0aW9uKFNvdXIKIAogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25TZWNy
ZXRUb2tlbigqc2lnbmF0dXJlQmFzZTY0VVJMLCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0
aW5hdGlvblVubGlua2FibGVUb2tlbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgp
ID8gIlVua25vd24iIDogcmVzdWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnJv
ck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biJfcyA6IHJlc3Vs
dC5lcnJvcigpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRh
dGVTb3VyY2VTZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdICJfcywgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzkwLDcgKzM5MCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5k
bGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgICAgICAgICAgaWYg
KHB1YmxpY0tleUJhc2U2NFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiVGhlIHB1YmxpYyBrZXkgVVJMIHdh
cyBlbXB0eS4iKTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBU
aGUgcHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIl9zKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTQwNSw3ICs0MDUsNyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24o
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IHJl
c3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5lcnJvcigpOworICAg
ICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgp
ID8gIlVua25vd24iX3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJy
b3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4oKTogJyV7
cHVibGljfXMiLCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1h
a2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAKaW5kZXggM2FhYTNjNDgwZTVmNmE5NTMwZGY4ZDhjY2ViYTJlNTc5ZTAw
MjgxMC4uZTA5ZDJlOWYzNmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
KCkKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGRhdGFiYXNlUGF0aChzZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIu
bG9jYWxzdG9yYWdlIik7CisgICAgcmV0dXJuIGRhdGFiYXNlUGF0aChtYWtlU3RyaW5nKHNlY3Vy
aXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLCAiLmxvY2Fsc3RvcmFnZSIpKTsKIH0KIAog
dm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRpZE9wZW5EYXRhYmFzZVdpdGhPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKQEAgLTEyOSw3ICsx
MjksNyBAQCBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxz
PiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OgogICAgIH0pOwogfQogCi1TdHJpbmcgTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSkgY29uc3QKK1N0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNl
UGF0aChTdHJpbmdWaWV3IGZpbGVuYW1lKSBjb25zdAogewogICAgIGF1dG8gbG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gdGhpcy0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFTUUxp
dGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5k
ZXggNWJjMTNlYzM2ZjVkMmE5NmZjNjFlNzAyMmMxYzhhMWU1Yzc5MWE0Yi4uNmQ2YTA1Yzg5YTc1
MTYzOWY1MmI4NTBiMTk2ZTMxNWZiNjgwYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBj
b25zdDsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKFN0cmluZ1ZpZXcgZmlsZW5hbWUpIGNvbnN0
OwogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIGVudW0g
RGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAppbmRl
eCBjMjM0OWEwODJiNTY4ZGViZTNmYTU2ZDM1OGQ1NWRkOWM2ODhmNjI0Li5mNGU2MWQ2MDUyYjM2
ZDc0ODQ5YmJlNjZhYzIyMGY2ZjRhOGUwMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNw
cApAQCAtMTIzLDggKzEyMyw3IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgYXV0byBsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKLSAgICBhdXRvIGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7CisgICAg
YXV0byBkYXRhID0gbWFwRmlsZShwYXRoKTsKIAogICAgIHJldHVybiB7IGRhdGEsIGNvbXB1dGVT
SEExKGRhdGEsIG1fc2FsdCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IGFlZTEwMmJlYzUxYmIz
NDY5MDIzZmE3Nzk1YTgyMjc0ODEzMmYyNjYuLmE5MTY5OGQ1ZGM0MmQ4NmMyOTc3MjcwYjc0ZmUz
YjE4NWM1ZTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEYXRhIERhdGE6
Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGE6OmFk
b3B0TWFwKFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKLURhdGEgbWFwRmlsZShj
b25zdCBjaGFyKiBwYXRoKQorRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxl
KSkKQEAgLTY0LDExICs2NCw2IEBAIERhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKQogICAg
IHJldHVybiBhZG9wdEFuZE1hcEZpbGUoZmlsZSwgMCwgKnNpemUpOwogfQogCi1EYXRhIG1hcEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBtYXBGaWxlKEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCiBEYXRhIGFkb3B0
QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXgg
MzI4MzI5NzY3OGMxNTRlZTQ5MDdkMzE0OTNjYmY3ZjhmMDAzY2JjMC4uMTI0OTI1OWU0YjA1MjY5
NDViYzU0NWYyZjY0YTE0MjdiNWU1NjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTExMSw3ICsxMTEsNiBA
QCBwcml2YXRlOgogRGF0YSBjb25jYXRlbmF0ZShjb25zdCBEYXRhJiwgY29uc3QgRGF0YSYpOwog
Ym9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmLCBjb25zdCBEYXRhJik7CiBEYXRhIGFkb3B0QW5k
TWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNp
emVfdCk7Ci1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IEZpbGVTeXN0ZW06OlNhbHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCmluZGV4IDQzMjJlNDRlOGVhMDYzYzNk
YWE4ZTJjNmRlN2E1YTA4NWY1YTgxZTguLjE3Yzk1MmE5OTg3NmNlYmJkN2M0MjEyNWZlZjczZjQw
NjU5MTg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCkBAIC0x
NDIsOCArMTQyLDggQEAgdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmhhbmRs
ZUV2ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZ
KSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisgICAgICAgIGF1dG8qIG1lc3NhZ2VOYW1l
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgeHBjTWVzc2FnZU5hbWVLZXkpOwor
ICAgICAgICBpZiAoIW1lc3NhZ2VOYW1lIHx8IHN0cmNtcChtZXNzYWdlTmFtZSwgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VVcGRhdGVNZXNzYWdlTmFtZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHN0YXJ0
T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCmluZGV4IDEw
ZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBhNDRlNDEuLmQyOTFhMDllOWVmMzE1ZmI0
Y2MwOWIzN2Q5NTg5Zjk3NGZiMzFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcApAQCAtMTI4LDcg
KzEyOCw3IEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3Nhcnko
KQogICAgIGlmICghbV9kYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3Ry
aW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlU1FMKCJJdGVtVGFibGUiX3MpOworICAg
IFN0cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIik7CiAg
ICAgaWYgKHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQgfHwgc3RhdGVtZW50
ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudEFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5k
aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAKaW5k
ZXggMGJlMzk1YzFjMzdjMmZlN2NiM2NjM2E1YjQ5NTYyYWZjNzM5ZTY0YS4uZTU5MmFhMDFjNmM0
MTE0ZWQwYzc4NTMzYzA5ZWRhNGYxMWI3YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBiCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImJvb2wiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwg
ImJvb2wiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUo
KSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInZhbHVlIl9zKSwgSlNDOjpqc0Jvb2xlYW4odmFsdWUpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CkBAIC05OSw2NyArOTksNjcgQEAgSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGIKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImRvdWJsZSIpOworICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJk
b3VibGUiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29k
ZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZmxvYXQg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFs
dWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Il9z
KTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1l
bnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDhfdCB2YWx1ZSkK
IHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIHZhbHVlLCAiaW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
TnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDhfdCJfcyk7CiB9
CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQxNl90IHZhbHVlKQogewot
ICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9i
amVjdCwgdmFsdWUsICJpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVt
ZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDE2X3QiX3MpOwogfQog
CiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmpl
Y3QsIHZhbHVlLCAiaW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQzMl90Il9zKTsKIH0KIAog
dGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgImludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50NjRfdCJfcyk7CiB9CiAKIHRl
bXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50OF90IHZhbHVlKQogewotICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJ1aW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ4X3QiX3MpOwogfQogCiB0ZW1w
bGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDE2X3QgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgInVpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQxNl90Il9zKTsKIH0KIAogdGVt
cGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQzMl90IHZhbHVlKQogewotICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJ1aW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNB
cmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MzJfdCJfcyk7CiB9CiAKIHRl
bXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCAidWludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDY0X3QiX3MpOwogfQogCiB0
ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IHZhbHVlKQogewotICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJzaXplX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJn
dW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAic2l6ZV90Il9zKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgUmVjdFR5cGU+CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjbwogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6Oklu
dFJlY3QmJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJl
Y3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiX3MpOwog
fQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGds
b2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkZsb2F0UmVjdCJfcyk7CiB9
CiAKIGJvb2wgcHV0SlNWYWx1ZUZvckRlY29kZWRBcmd1bWVudEF0SW5kZXhPckFycmF5QnVmZmVy
SWZVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTQXJy
YXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0
dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgppbmRleCA5ZDJiYzdh
MjI2MjkyOTZjNzQxNmRjYjUwMDIzOGJlZjRmZjI5YjVlLi44MzBlYmFiOGU4NjIxODBlYjAzMGE2
NTM5NjYyNmY0Mzg5MTBjMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAu
ZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKQEAgLTQxLDcgKzQxLDcgQEAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhwZXJp
bWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkV4cGVyaW1lbnRhbEZl
YXR1cmU6OmNyZWF0ZSg8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sICI8JT0gQHByZWYu
bmFtZSAlPiIsIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4sIERFRkFVTFRf
VkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKKyAgICAg
ICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVmLmh1
bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nIHsgPCU9
IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZPUl88
JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHByZWYuY29u
ZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmVzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgppbmRleCA4
NDljZjZmN2E4ODU3M2RmMjc5ZjNhZWQyNTExMDUwNWY3YjZjMzQ2Li5lNTY3ZjQ1YjFlNDQ1MTZi
NTJiMDM2NTBiYjlmMmU5NjRiODQ5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVy
ZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgpAQCAtNDAsNyAr
NDAsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlByZWZlcmVuY2Vz
OjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNp
ZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkludGVy
bmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCAi
PCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+
LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAl
PiksCisgICAgICAgIEFQSTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6OmNyZWF0ZShTdHJpbmcgeyA8
JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gfSwgIjwlPSBAcHJlZi5uYW1lICU+Il9zLCBT
dHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IH0sIERFRkFVTFRf
VkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKIDwlLSBp
ZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4
IDVjNjMxZWRkYzk2N2NjZThhMTEwYmM0MGQyNzY5ZTJjZjkzNWQ2NDYuLmE2ZTI1Y2M0MDM0Njdh
NTAzZThlZWMxMDdhOGY3ZTQ3ZjgxYzM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC00Miw5ICs0Miw5IEBA
CiAjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsYXNzTmFtZUtleSA9ICIk
Y2xhc3MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFN0cmVhbUtleSA9ICIkb2Jq
ZWN0U3RyZWFtIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdLZXkgPSAiJHN0cmlu
ZyI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gY2xhc3NOYW1lS2V5ID0gIiRjbGFzcyJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBvYmplY3RTdHJlYW1LZXkgPSAiJG9iamVjdFN0cmVhbSJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBzdHJpbmdLZXkgPSAiJHN0cmluZyJfczsKIAogc3RhdGlj
IE5TU3RyaW5nICogY29uc3Qgc2VsZWN0b3JLZXkgPSBAInNlbGVjdG9yIjsKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHR5cGVTdHJpbmdLZXkgPSBAInR5cGVTdHJpbmciOwpAQCAtNDQwLDcgKzQ0
MCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKmVu
Y29kZXIsIGlkIG9iamVjdCkKICAgICAgICAgZW5jb2Rlci0+X29iamVjdHNCZWluZ0VuY29kZWQu
cmVtb3ZlKG9iamVjdCk7CiAgICAgfSk7CiAKLSAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25h
cnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoY2xhc3NfZ2V0TmFtZShv
YmplY3RDbGFzcykpKTsKKyAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNldChjbGFz
c05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgY2xhc3NfZ2V0TmFtZShvYmpl
Y3RDbGFzcykgfSkpOwogCiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNJbnZvY2F0
aW9uIGNsYXNzXV0pIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBzcGVjaWFsIGNhc2UgTlNJbnZv
Y2F0aW9uIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gZW5jb2RlIHRoZSB0YXJnZXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KaW5kZXggYjk4OTY2ZWNhZDQxYjQ4ZWVjZDI1ODIyYjRjM2MxZTZkOThhMDg3ZS4u
N2Q4ODU2MjI4NDhlZjdmNzlhNGRmMWQzM2NkNjA3YTdmMmUxNDU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKHZvaWQpX3NlbmRJbnZvY2F0aW9uOihOU0ludm9j
YXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50CiAgICAgICAg
IGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVw
bHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkKICAgICAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJSZXR1
cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcuICglcykiLCBzZWxfZ2V0
TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVwbHlJbmZvID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVS
ZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CisgICAgICAgIHJlcGx5SW5m
byA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+
KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmluZyB7IHJlcGx5QmxvY2tTaWduYXR1cmUg
fSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRy
eSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9j
b2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWdu
YXR1cmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmcuVVRGOFN0cmluZzsKKyAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBf
c2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7
CiB9CiAKIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0aW9uCkBAIC0yNzAsNyArMjcwLDcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2ln
bmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRh
KCldLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWdu
YXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUlu
Zm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwogICAgICAgICBT
dHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVy
ZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCiAgICAgICAgIGlmIChl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNWJhOTJiYjgyMzlm
MjgwOWIwMTg0YzRkZjczMDk5OWM0MzBmNGQ0NS4uZjFiZmNmODdiMzc0MDViYjk2NjgxNGY4YzE2
NDNiYjYyN2E0NjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1Nh
bmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTg1LDI3ICsxODUsMjcgQEAgUmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJiBoYW5kbGUpCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTYW5kYm94RXh0ZW5zaW9uKGhhbmRsZSkpOwogfQogCi1T
dHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
CitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdWaWV3IHBhdGgp
CiB7CiAgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhdID0geyAwIH07CiAgICAgcmVhbHBh
dGgocGF0aC51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFBhdGgpOwogICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHJlc29sdmVkUGF0aCk7CiB9CiAKLVN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCitT
dHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNp
b24oU3RyaW5nVmlldyBwYXRoKQogewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIE5T
U3RyaW5nICpuc1BhdGggPSBwYXRoOworICAgIGF1dG8gbnNQYXRoID0gcGF0aC5jcmVhdGVOU1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCk7CiAKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOm5zUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl0pIHsKLSAgICAgICAgTlNM
b2coQCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVAXCIgZm9yIGZ1dHVyZSBzYW5kYm94
IGV4dGVuc2lvbiwgZXJyb3IgJUAiLCBuc1BhdGgsIGVycm9yKTsKKyAgICBpZiAoIVtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOm5zUGF0aC5nZXQo
KSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZl
cnJvcl0pIHsKKyAgICAgICAgTlNMb2coQCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVA
XCIgZm9yIGZ1dHVyZSBzYW5kYm94IGV4dGVuc2lvbiwgZXJyb3IgJUAiLCBuc1BhdGguZ2V0KCks
IGVycm9yKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzb2x2
ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpOwogfQogCi1TdHJpbmcgcmVzb2x2ZVBhdGhG
b3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyByZXNvbHZlUGF0
aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKQogewogICAgIFN0cmluZyByZXNv
bHZlZFBhdGggPSBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKHBhdGgpOwogICAgIGlm
IChyZXNvbHZlZFBhdGguaXNOdWxsKCkpIHsKQEAgLTIxNiw3ICsyMTYsNyBAQCBTdHJpbmcgcmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1
cm4gcmVzb2x2ZWRQYXRoOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlKSAtPiBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6
b3B0aW9uYWw8SGFuZGxlPgogewogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5k
bGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgVHlwZQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlKSAt
PiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4K
IHsKICAgICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZVBh
dGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpLCB0eXBlKTsKIH0KQEAgLTI1OSw3ICsyNTksNyBA
QCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFT
Q0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29ucwogICAgIH0pOwogfQogCi1hdXRvIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldyBwYXRoKSAtPiBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4KIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAgaWYg
KHJlc29sdmVkUGF0aC5pc051bGwoKSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpIC0+CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJl
c29sdmVkUGF0aCwgVHlwZTo6UmVhZFdyaXRlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBl
IHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KK2F1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3
IHByZWZpeCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0
cmluZz4+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24pOwpAQCAtMjg0LDExICsyODQsMTIgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBl
IHQKICAgICBpZiAocGF0aC5sYXN0KCkgIT0gJy8nKQogICAgICAgICBwYXRoLmFwcGVuZCgnLycp
OwogICAgIAotICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lLiAgICAKLSAgICBwYXRoLmFwcGVu
ZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKKyAgICAvLyBBcHBlbmQg
dGhlIGZpbGUgbmFtZS4KKyAgICBhdXRvIHByZWZpeEFzVVRGOCA9IHByZWZpeC51dGY4KCk7Cisg
ICAgcGF0aC5hcHBlbmQocHJlZml4QXNVVEY4LmRhdGEoKSwgcHJlZml4QXNVVEY4Lmxlbmd0aCgp
KTsKICAgICBwYXRoLmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFuZGxl
Lm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFN0cmluZzo6ZnJvbVVURjgocGF0aC5kYXRh
KCkpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0
ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzM5LDcg
KzM0MCw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTCiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRs
ZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkg
fSwgYXVkaXRUb2tlbiwgZmxhZ3MpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tl
bl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwg
YXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAg
ICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5
UG9pbnQubW0KaW5kZXggYTNkYjRhZjRjMTIzYjZlNmE5MWVhMWVjZGMxM2RiODJhMWJjOGIyNC4u
OWMzZWM0MDk1YTk0NzI3MWZkMTAyMTc3YjhiMDViMGY3NzhiOWZhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAt
NzIsMTMgKzcyLDEzIEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENv
bm5lY3Rpb25JZGVudGlmaWVyKElQQzo6Q29ubmVjdGlvbjo6SWRlCiAKIGJvb2wgWFBDU2Vydmlj
ZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRJ
ZGVudGlmaWVyKQogewotICAgIGNsaWVudElkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9nZXRf
c3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKTsKKyAgICBj
bGllbnRJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2lu
aXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1pZGVudGlmaWVyIikgfTsKICAgICByZXR1cm4gIWNs
aWVudElkZW50aWZpZXIuaXNFbXB0eSgpOwogfQogCiBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXpl
ckRlbGVnYXRlOjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50QnVuZGxl
SWRlbnRpZmllcikKIHsKLSAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0geHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRlbnRp
ZmllciIpOworICAgIGNsaWVudEJ1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcgeyB4cGNfZGljdGlv
bmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1pZGVu
dGlmaWVyIikgfTsKICAgICByZXR1cm4gIWNsaWVudEJ1bmRsZUlkZW50aWZpZXIuaXNFbXB0eSgp
OwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWYKIAogYm9v
bCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUoU3Ry
aW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKIHsKLSAgICBjbGllbnRQcm9jZXNzTmFtZSA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNzLW5h
bWUiKTsKKyAgICBjbGllbnRQcm9jZXNzTmFtZSA9IFN0cmluZyB7IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNzLW5hbWUiKSB9OwogICAg
IHJldHVybiAhY2xpZW50UHJvY2Vzc05hbWUuaXNFbXB0eSgpOwogfQogCkBAIC0xMTksMzAgKzEx
OSwzMCBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgUwogewogICAgIHhwY19vYmplY3RfdCBleHRy
YURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUo
bV9pbml0aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CiAKLSAg
ICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0
cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKTsKKyAg
ICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0
cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKSB9Owog
ICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgiaW5zcGVjdG9yLXByb2Nlc3MiX3MsIGluc3BlY3RvclByb2Nlc3Mp
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRp
b25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpOworICAgIFN0cmluZyBzZXJ2
aWNlV29ya2VyUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5p
dGlhbGl6YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpIH07CiAgICAg
aWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgV1RGTW92ZShzZXJ2
aWNlV29ya2VyUHJvY2VzcykpOwotICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAi
cmVnaXN0cmFibGUtZG9tYWluIik7CisgICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWluIHsgeHBj
X2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3Qs
ICJyZWdpc3RyYWJsZS1kb21haW4iKSB9OwogICAgIGlmICghcmVnaXN0cmFibGVEb21haW4uaXNF
bXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJhYmxl
LWRvbWFpbiJfcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpOwogI2VuZGlmCiAKLSAgICBT
dHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRy
YURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKTsKKyAgICBTdHJp
bmcgaXNQcmV3YXJtZWRQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURh
dGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKSB9OwogICAgIGlmICgh
aXNQcmV3YXJtZWRQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlv
bkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQiX3MsIGlzUHJld2FybWVkUHJvY2Vzcyk7CiAKICAgICBp
ZiAoIWlzQ2xpZW50U2FuZGJveGVkKCkpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJEaXJlY3RvcnlT
dWZmaXggPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9u
RGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOworICAgICAgICBTdHJpbmcgdXNl
ckRpcmVjdG9yeVN1ZmZpeCB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5p
dGlhbGl6YXRpb25EYXRhT2JqZWN0LCAidXNlci1kaXJlY3Rvcnktc3VmZml4IikgfTsKICAgICAg
ICAgaWYgKCF1c2VyRGlyZWN0b3J5U3VmZml4LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZCgidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGly
ZWN0b3J5U3VmZml4KTsKICAgICB9CiAKLSAgICBTdHJpbmcgYWx3YXlzUnVuc0F0QmFja2dyb3Vu
ZFByaW9yaXR5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXph
dGlvbkRhdGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Iik7Cisg
ICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSB7IHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiYWx3YXlzLXJ1
bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpIH07CiAgICAgaWYgKCFhbHdheXNSdW5zQXRCYWNr
Z3JvdW5kUHJpb3JpdHkuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0
YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsIGFsd2F5c1J1bnNB
dEJhY2tncm91bmRQcmlvcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCBkODYwZTdjN2FiMDYwMTZmZGYxMDdjNGNmMWRkYTVj
MzdmMzMyZmIxLi4xMDhjYjA4YWFiOGU2ZTUxODVhYTUxYWJiMGI2ZGYyYjUzNDQxMzY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCkBAIC0y
MDMsNyArMjAzLDcgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioqKQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgU3RyaW5nIHdlYktpdEJ1bmRs
ZVZlcnNpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldl
YktpdEJ1bmRsZVZlcnNpb24iKTsKKyAgICAgICAgU3RyaW5nIHdlYktpdEJ1bmRsZVZlcnNpb24g
eyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1bmRs
ZVZlcnNpb24iKSB9OwogICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uID0gW05T
QnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdLmluZm9EaWN0
aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldOwogICAgICAg
ICBpZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgIWV4cGVjdGVkQnVuZGxlVmVy
c2lvbi5pc051bGwoKSAmJiB3ZWJLaXRCdW5kbGVWZXJzaW9uICE9IGV4cGVjdGVkQnVuZGxlVmVy
c2lvbikgewogICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJXZWJL
aXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0Y2g6ICIsIHdlYktpdEJ1bmRsZVZlcnNpb24sICIg
IT0gIiwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0lQQ1Rlc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3Bw
CmluZGV4IDBkNTc0YjBjYzUwMzQxMzMyMTdmZTM5ZjBiMDQwYjU3OWQyZmMxYzAuLjhhOTk2MTE2
ODMzOTNhZTc5NzBiZjk1OWU1MmViYzkyYjY1ZWZmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVz
dGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBXS01l
c3NhZ2VUZXN0RHJpdmVyRnVuYyBtZXNzYWdlVGVzdERyaXZlcihTdHJpbmcmJiBkcml2ZXJOYW1l
KQogewogICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09ICJkZWZh
dWx0IikKLSAgICAgICAgZHJpdmVyTmFtZSA9IGdldGVudigiV0VCS0lUX01FU1NBR0VfVEVTVF9E
RUZBVUxUX0RSSVZFUiIpOworICAgICAgICBkcml2ZXJOYW1lID0gU3RyaW5nIHsgZ2V0ZW52KCJX
RUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIikgfTsKICAgICBpZiAoZHJpdmVyTmFt
ZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCiAgICAgICAgIHJldHVybiBk
ZWZhdWx0VGVzdERyaXZlcjsKICAgICBhdXRvIHRlc3REcml2ZXIgPSByZWludGVycHJldF9jYXN0
PFdLTWVzc2FnZVRlc3REcml2ZXJGdW5jPihkbHN5bShSVExEX0RFRkFVTFQsIGRyaXZlck5hbWUu
dXRmOCgpLmRhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0
ZW5zaW9uVHlwZXMuY3BwCmluZGV4IDg2NjQ5YTc3MTFkYmE3MTRlYWEwMTVmM2YyNmY5ZjdkNmMy
N2Q5NWUuLmExMGI4YzcxNDBkODgxOWQyMjVjOWMxOWZhZWM4Zjc5ZTU1YjQyMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgV1RGOjpTdHJpbmcgZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhFeHRlbnNpb25F
cnJvciBlcnJvcikKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gIkludGVybmFsRXJyb3IiOworICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciJfczsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9u
LmgKaW5kZXggNWRkYTMwY2Q3ZjYxNzlmODM4YzkwZGMyYWY1NzgzYmE1MjFlNmU5Mi4uYjJiYTUy
MzIyY2RhNDk5ODc1ODI1MWMyMDIzOTU0MTkyMjVkYzBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NhbmRib3hFeHRlbnNpb24uaApAQCAtODQsMTcgKzg0LDE3IEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIAogICAgIHN0YXRpYyBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gY3JlYXRlKEhhbmRsZSYm
KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3Jl
YXRlSGFuZGxlKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSk7CiAgICAgc3RhdGljIFZlY3RvcjxIYW5k
bGU+IGNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxI
YW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCwgVHlwZSk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gV2lsbCBhdHRlbXB0
IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldyBwYXRoLCBUeXBlKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRXcml0
ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpOyAvLyBXaWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRo
ZSBkaXJlY3RvcnkuCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwg
VHlwZSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JH
ZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcyk7CiAjaWYgSEFWRShB
VURJVF9UT0tFTikKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGlj
IFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlv
blNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0
aCwgYXVkaXRfdG9rZW5fdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5f
dCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tp
dENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0
YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMo
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRpZgpA
QCAtMTE4LDkgKzExOCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLVN0cmluZyBzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJpbmcgcmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJpbmcg
cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBwYXRoKTsKK1N0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRo
KFN0cmluZ1ZpZXcgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9u
KFN0cmluZ1ZpZXcgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVj
dG9yeUZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKTsKIAogI2lmICFFTkFCTEUo
U0FOREJPWF9FWFRFTlNJT05TKQogCkBAIC0xMjksMTEgKzEyOSwxMSBAQCBpbmxpbmUgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxlKCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KIGlubGluZSBz
dGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgeyByZXR1cm4gSGFuZGxlIHsgfTsgfQogaW5s
aW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFu
ZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7
IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikgLT4gVmVjdG9yPEhhbmRsZT4geyByZXR1cm4geyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJp
bmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsg
fQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVy
biBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4geyByZXR1cm4gc3RkOjpwYWlyPEhhbmRsZSwgU3Ry
aW5nPiB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldykgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldywgVHlw
ZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBz
dGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsgfTsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgU2FuZGJv
eEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKSB7IH0KIGlubGluZSBib29sIFNhbmRib3hF
eHRlbnNpb246OnJldm9rZSgpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE0MSw5ICsxNDEsOSBAQCBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4gdHJ1ZTsgfQog
aW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCkgeyByZXR1
cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KGNvbnN0IEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBib29sIFNhbmRib3hF
eHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8SGFuZGxlPiYpIHsgcmV0
dXJuIHRydWU7IH0KLWlubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KLWlubGluZSBTdHJpbmcgcmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4g
cGF0aDsgfQotaW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5
Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0K
K2lubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdWaWV3
IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQoraW5saW5lIFN0cmluZyByZXNvbHZl
UGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRoLnRv
U3RyaW5nKCk7IH0KK2lubGluZSBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVj
dG9yeUZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRoLnRv
U3RyaW5nKCk7IH0KIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1
eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggZTA1YWNjY2U3ZmYxNGU2MDIxMTMxZmUzMmZhODY2
OTFkNDFiNjhiNy4uOGYyNTlkYTZkNTEwMjZjY2Q2MTg5YmJlY2E0OGQ1M2RiOTgxZGI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAg
LTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJl
Y3RvcnkoKQogICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXpl
IHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2Fm
ZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAg
fQotICAgIHJldHVybiByZXNvbHZlZFBhdGg7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
cmVzb2x2ZWRQYXRoKTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5kYm94RGlyZWN0b3J5KFdlYkNv
cmU6OkF1eGlsaWFyeVByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlLCBjb25zdCBTdHJpbmcmIHBhcmVu
dERpcmVjdG9yeSkKQEAgLTcwNCw5ICs3MDQsOSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNhbmRi
b3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMoU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldAog
CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9ESVIiLCBwd2Qu
cHdfZGlyKTsKICAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgocHdkLnB3X2Rpcik7
Ci0gICAgcGF0aC5hcHBlbmQoIi9MaWJyYXJ5Iik7CisgICAgcGF0aC5hcHBlbmQoIi9MaWJyYXJ5
Il9zKTsKICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJB
UllfRElSIiwgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSk7Ci0gICAgcGF0aC5hcHBlbmQoIi9QcmVmZXJlbmNlcyIpOworICAgIHBhdGguYXBwZW5kKCIv
UHJlZmVyZW5jZXMiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIo
IkhPTUVfTElCUkFSWV9QUkVGRVJFTkNFU19ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIAogI2lmIENQVShYODZfNjQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQppbmRleCA5MjBkZTAwYmI2ODYyMDJi
NmMxZDY0ZmFhZDcxMjM1OWMxNjAyNzhmLi45YmRlNTA1MjdkMzU1NWViMzI3MzgzNjVhMWY3YzJm
YzRmMTM4YzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3Rvcnku
bW0KQEAgLTQ2OSwyMCArNDY5LDIwIEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBib29sIGhhCiAKICAgICAv
LyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2Ug
QXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50ZXIuCiAgICAgaWYgKHdpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9PSBWS19SRVRVUk4pIHsKLSAgICAgICAgdGV4dCA9ICJcciI7Ci0gICAg
ICAgIHVubW9kaWZpZWRUZXh0ID0gIlxyIjsKKyAgICAgICAgdGV4dCA9ICJcciJfczsKKyAgICAg
ICAgdW5tb2RpZmllZFRleHQgPSB0ZXh0OwogICAgIH0KIAogICAgIC8vIEFwcEtpdCBzZXRzIHRl
eHQgdG8gIlx4N0YiIGZvciBiYWNrc3BhY2UsIGJ1dCB0aGUgY29ycmVjdCBLZXlib2FyZEV2ZW50
IGNoYXJhY3RlciBjb2RlIGlzIDguCiAgICAgaWYgKHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBW
S19CQUNLKSB7Ci0gICAgICAgIHRleHQgPSAiXHg4IjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQg
PSAiXHg4IjsKKyAgICAgICAgdGV4dCA9ICJceDgiX3M7CisgICAgICAgIHVubW9kaWZpZWRUZXh0
ID0gdGV4dDsKICAgICB9CiAKICAgICAvLyBBbHdheXMgdXNlIDkgZm9yIFRhYiAtLSB3ZSBkb24n
dCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIu
CiAgICAgaWYgKHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19UQUIpIHsKLSAgICAgICAgdGV4
dCA9ICJceDkiOwotICAgICAgICB1bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICB0ZXh0
ID0gIlx4OSJfczsKKyAgICAgICAgdW5tb2RpZmllZFRleHQgPSB0ZXh0OwogICAgIH0KIAogICAg
IHJldHVybiBXZWJLZXlib2FyZEV2ZW50KHR5cGUsIHRleHQsIHVubW9kaWZpZWRUZXh0LCBrZXks
IGNvZGUsIGtleUlkZW50aWZpZXIsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgbmF0aXZlVmlydHVh
bEtleUNvZGUsIG1hY0NoYXJDb2RlLCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgY29tbWFuZHMsIGF1
dG9SZXBlYXQsIGlzS2V5cGFkLCBpc1N5c3RlbUtleSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKaW5kZXggYzBhNjRmZWZiZDJmNDVjMTJhZDljYmUyYzc4ODNiMjUxOWQ4OGI0
NC4uYWFjNjBiNjViMDI3Njc1NzNiMDA3MTg1MWYwMTZmNGRlMjY4Mzk5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFwcGVkRGF0YT4g
b3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgcGEKIHsKICAgICBp
ZiAoIUZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRh
IGZpbGVEYXRhID0gbWFwRmlsZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgp
KTsKKyAgICBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBmaWxlRGF0YSA9IG1hcEZpbGUocGF0
aCk7CiAgICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gbWV0YURhdGEgPSBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShm
aWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRS
ZWYuY3BwCmluZGV4IGVlYmNjOTJkNzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJjODcwNDYzMzYuLmMy
YWFkMzZmZGU3ZmY5ZTIxNDQ3ZGNhNDNiYmUwZjEzMzk4M2RiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCkBAIC0xMjksNyArMTI5LDcg
QEAgdm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRG93
bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCiAKICAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKICAgICAgICAgewotICAg
ICAgICAgICAgZGlkRmFpbChkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNv
cmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGRvd25sb2FkLnJlcXVlc3QoKS51cmwo
KSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkIGR1cmluZyBkb3dubG9hZCIgfSwgbnVsbHB0cik7
CisgICAgICAgICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsg
V2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgp
LnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIl9zIH0sIG51
bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
aW5kZXggZTI1NDkyNmRjNTFhNDlhZWJhNDk4ZDc5NDlhYWZjODA3YTRiNzIyOS4uNDExNTBiN2Qx
NWZiMmY1NGRiNTdlNjgwN2Q1NTg0MTVlN2Q5Y2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC01MTUsMTMgKzUxNSwxMyBAQCB2b2lkIFdLUGFnZVRlcm1p
bmF0ZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0U2Vzc2lvbkhp
c3RvcnlVUkxWYWx1ZVR5cGUoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vzc2lvbkhp
c3RvcnlVUkxWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlzdG9yeVVS
TCIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIHNlc3Npb25IaXN0b3J5VVJM
VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkhpc3RvcnlVUkwiX3MpLmxl
YWtSZWYoKTsKICAgICByZXR1cm4gdG9BUEkoJnNlc3Npb25IaXN0b3J5VVJMVmFsdWVUeXBlKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0U2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW1WYWx1
ZVR5cGUoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vzc2lvbkJhY2tGb3J3YXJkTGlz
dFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25CYWNrRm9yd2FyZExpc3RJ
dGVtIikubGVha1JlZigpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vzc2lvbkJhY2tGb3J3
YXJkTGlzdFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25CYWNrRm9yd2Fy
ZExpc3RJdGVtIl9zKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRvQVBJKCZzZXNzaW9uQmFja0Zv
cndhcmRMaXN0VmFsdWVUeXBlKTsKIH0KIApAQCAtMTU4MiwyMSArMTU4MiwyMSBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2Vf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB8fCBtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjApIHsKICAgICAgICAgICAgICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5
cGUgbWFwOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy54KQotICAgICAgICAg
ICAgICAgICAgICBtYXAuc2V0KCJ4IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVy
ZXMueCkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ4Il9zLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy54KSk7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd0Zl
YXR1cmVzLnkpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoInkiLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy55KSk7CisgICAgICAgICAgICAgICAgICAgIG1hcC5zZXQo
InkiX3MsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLnkpKTsKICAgICAgICAg
ICAgICAgICBpZiAod2luZG93RmVhdHVyZXMud2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIG1h
cC5zZXQoIndpZHRoIiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMud2lkdGgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgid2lkdGgiX3MsIEFQSTo6RG91YmxlOjpj
cmVhdGUoKndpbmRvd0ZlYXR1cmVzLndpZHRoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRv
d0ZlYXR1cmVzLmhlaWdodCkKLSAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgiaGVpZ2h0Iiwg
QVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMuaGVpZ2h0KSk7Ci0gICAgICAgICAg
ICAgICAgbWFwLnNldCgibWVudUJhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5k
b3dGZWF0dXJlcy5tZW51QmFyVmlzaWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInN0
YXR1c0JhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zdGF0
dXNCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgidG9vbEJhclZpc2libGUi
LCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50b29sQmFyVmlzaWJsZSkpOwot
ICAgICAgICAgICAgICAgIG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSkpOwotICAgICAgICAg
ICAgICAgIG1hcC5zZXQoInNjcm9sbGJhcnNWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUo
d2luZG93RmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAu
c2V0KCJyZXNpemFibGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5yZXNp
emFibGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJmdWxsc2NyZWVuIiwgQVBJOjpCb29s
ZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZnVsbHNjcmVlbikpOwotICAgICAgICAgICAgICAg
IG1hcC5zZXQoImRpYWxvZyIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRp
YWxvZykpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJoZWlnaHQiX3MsIEFQSTo6RG91
YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLmhlaWdodCkpOworICAgICAgICAgICAgICAgIG1h
cC5zZXQoIm1lbnVCYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0
dXJlcy5tZW51QmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoInN0YXR1c0Jh
clZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnN0YXR1c0Jh
clZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJ0b29sQmFyVmlzaWJsZSJfcywg
QVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMudG9vbEJhclZpc2libGUpKTsKKyAg
ICAgICAgICAgICAgICBtYXAuc2V0KCJsb2NhdGlvbkJhclZpc2libGUiX3MsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSkpOworICAgICAgICAg
ICAgICAgIG1hcC5zZXQoInNjcm9sbGJhcnNWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1h
cC5zZXQoInJlc2l6YWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMu
cmVzaXphYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgiZnVsbHNjcmVlbiJfcywgQVBJ
OjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZnVsbHNjcmVlbikpOworICAgICAgICAg
ICAgICAgIG1hcC5zZXQoImRpYWxvZyJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVh
dHVyZXMuZGlhbG9nKSk7CiAgICAgICAgICAgICAgICAgUmVmPEFQSTo6RGljdGlvbmFyeT4gZmVh
dHVyZXNNYXAgPSBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAppbmRleCA4ZTY3NWIzOTkwN2JiY2Q3YTkyNGM0NmM3ODBmNzE0MmYwZWM5NTFhLi4xYTcz
YTcwY2FjOTk2ODI2OWM0NjdhODg2N2Y4MjFjNGIwZGJhMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBA
IFdLVHlwZUlEIFdLUHJlZmVyZW5jZXNHZXRUeXBlSUQoKQogCiBXS1ByZWZlcmVuY2VzUmVmIFdL
UHJlZmVyZW5jZXNDcmVhdGUoKQogewotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2Vi
S2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwog
ICAgIHJldHVybiB0b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsKIH0KIAogV0tQcmVmZXJl
bmNlc1JlZiBXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRl
bnRpZmllclJlZikKIHsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVyUmVmKSwgIldlYktp
dDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2Vz
OjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmllclJlZiksICJX
ZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICByZXR1cm4gdG9BUEkoJnByZWZlcmVuY2Vz
LmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KaW5kZXgg
M2Q2NTc5ZjUyY2UzNTAxYTg2MWMzZjY1NWVmYmVkMjRlODFlMTJlNC4uMjE1NmNlMDkzYjI3NGEx
Mzk2ZTBlN2E3NGI5MWY2YTIyZDU1Y2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29j
b2EubW0KQEAgLTU4LDcgKzU4LDcgQEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OmRlZmF1bHRTdG9yZVBhdGgoKQogICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5n
ZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkpOwogCi0gICAgcmV0dXJu
IFtjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOChbY29u
dGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgYWJzb2x1dGVVUkxdLnBhdGguZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3Jl
Lm1tCmluZGV4IDlmYTcxYjA3NWEwM2ZmMWRmZGQwMDE3ZTQ1YzgxMjk5NTlkMzVkODMuLmEyYjdj
NWI3Y2FhZTc4OTMwOWZkNjZkN2NmMmMyMWI4NWU0OTQ1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3Jl
Lm1tCkBAIC03OSw3ICs3OSw3IEBAICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKICsgKGlu
c3RhbmNldHlwZSlzdG9yZVdpdGhVUkw6KE5TVVJMICopdXJsCiB7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0
b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pKTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9y
ZVdpdGhQYXRoKFN0cmluZzo6ZnJvbVVURjgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbikpKTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNlbmRpZgpAQCAtMTk0LDcg
KzE5NCw3IEBAICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmVXaXRoTGVnYWN5RmlsZW5hbWUK
ICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTooTlNVUkwgKil1
cmwKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHJldHVybiB3cmFwcGVy
KEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJM
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29u
dGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgoU3RyaW5nOjpmcm9tVVRGOCh1cmwuYWJz
b2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkpOwogI2Vsc2UKICAgICByZXR1cm4g
bmlsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tCmluZGV4IGViMjMyMTY5Y2ZiOGFhMmIyMmRlNzEzOGY5OGFlZjQ2YzM5
MDQ4YzUuLjU5ZmI4ZGMwYTc4MWM3ZWFhZGVmYjYxMmE1ZjMxMTI2MWIyZmQyNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBA
IC00NCw3ICs0NCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+KHNlbGYsIFN0cmluZygpLCAi
V2ViS2l0IiwgIldlYktpdERlYnVnIik7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3Jh
cHBlcjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPihzZWxmLCBTdHJpbmcoKSwgIldlYktpdCJfcywg
IldlYktpdERlYnVnIl9zKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKaW5kZXggMWM1NGUwMTU4
NGU2MDMwNTQwODY0YmIxNmUxNDU2NmE4Mjc4MzBiZS4uM2ZiOTY5ODBlZmQ5ZTJmMmFlOGExN2Nm
NGM2ZDQyNmQ0M2EyODNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC02NSwxMCArNjUsMTAgQEAgdm9pZCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRp
b25zJiBsYXUKICAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NJZGVudGlmaWVyID0gbV9wcm9jZXNz
SWRlbnRpZmllcjsKIAogICAgIGlmIChjb25zdCBjaGFyKiB1c2VyRGlyZWN0b3J5U3VmZml4ID0g
Z2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikpCi0gICAgICAgIGxhdW5jaE9wdGlv
bnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFs
PigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0b3J5U3VmZml4KTsKKyAgICAg
ICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0
b3JBU0NJSUxpdGVyYWw+KCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiX3MsIFN0cmluZzo6ZnJvbVVU
RjgodXNlckRpcmVjdG9yeVN1ZmZpeCkpOwogCiAgICAgaWYgKG1fYWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5KQotICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImFsd2F5cy1ydW5zLWF0LWJhY2tn
cm91bmQtcHJpb3JpdHkiX3MsICJ0cnVlIik7CisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiYWx3YXlz
LXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSJfcywgInRydWUiX3MpOwogCiAjaWYgRU5BQkxF
KERFVkVMT1BFUl9NT0RFKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKQogICAg
IGNvbnN0IGNoYXIqIHZhcm5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1l
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCA2MGMwZDlkYWUwZjBkNmFkYzU2Y2ZkMWM4
Y2YxMGVmOTQzZDUxZDM1Li4yMDcyYjViNmIxY2I5MGY4ZjYyN2Y2OTY1YzMxMGYwMWU3ZjRiMTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6bG9hZFJlcXVlc3RUb0ZyYW1lKCkKICAgICAgICAgcGFnZS0+c2V0U2hvdWxkU3Vw
cHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oKTsKICAg
ICAgICAgYXV0byYgdXJsID0gbV9yZXF1ZXN0c1RvTG9hZC5maXJzdCgpLmZpcnN0OwogICAgICAg
ICBXVEY6OnN3aXRjaE9uKG1fcmVxdWVzdHNUb0xvYWQuZmlyc3QoKS5zZWNvbmQsIFsmXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIHsKLSAgICAgICAgICAgIGZyYW1lLT5sb2FkRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UoZGF0YSksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCB1cmwpOworICAg
ICAgICAgICAgZnJhbWUtPmxvYWREYXRhKElQQzo6RGF0YVJlZmVyZW5jZShkYXRhKSwgInRleHQv
aHRtbCJfcywgIlVURi04Il9zLCB1cmwpOwogICAgICAgICB9LCBbJl0oY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikgewogICAgICAgICAgICAgZnJhbWUtPmxvYWRVUkwodXJsLCByZWZlcnJlcik7CiAg
ICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
S2l0U3dpZnRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYktp
dFN3aWZ0U29mdExpbmsubW0KaW5kZXggMGVjMTE3NDNiYjFkOGYzOWEyNTBiNTFiM2U1Nzg0YmFl
MWU1MGUzMC4uZmU0NWI3NDU0ZDdiNGIzMDg3NWUwZTZlM2MxNzc5NDU2YWQ3YWE3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGluay5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5r
Lm1tCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQqIFdlYktpdFN3aWZ0TGlicmFyeShib29sIGlzT3B0
aW9uYWwpCiAgICAgICAgIC8vIFRoZW4gc2VhcmNoIGluIHRoZSBGcmFtZXdvcmtzLyBkaXJlY3Rv
cnkgb2YgdGhlIGN1cnJlbnRseSBsb2FkZWQgdmVyc2lvbiBvZiBXZWJLaXQuZnJhbWV3b3JrOgog
ICAgICAgICBEbF9pbmZvIGluZm8geyB9OwogICAgICAgICBpZiAoZGxhZGRyKChjb25zdCB2b2lk
KikmV2ViS2l0U3dpZnRMaWJyYXJ5LCAmaW5mbykgJiYgc3RybGVuKGluZm8uZGxpX2ZuYW1lKSkg
ewotICAgICAgICAgICAgYXV0byB3ZWJraXRGcmFtZXdvcmtEaXJlY3RvcnkgPSBXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpwYXJlbnRQYXRoKGluZm8uZGxpX2ZuYW1lKTsKKyAgICAgICAgICAgIGF1dG8g
d2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5ID0gV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGFyZW50UGF0
aChTdHJpbmc6OmZyb21VVEY4KGluZm8uZGxpX2ZuYW1lKSk7CiAgICAgICAgICAgICBhdXRvIGR5
bGliUGF0aCA9IFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh3
ZWJraXRGcmFtZXdvcmtEaXJlY3RvcnksICJGcmFtZXdvcmtzL2xpYldlYktpdFN3aWZ0LmR5bGli
Iik7CiAgICAgICAgICAgICBpZiAoKGxpYnJhcnkgPSBkbG9wZW4oZHlsaWJQYXRoLnV0ZjgoKS5k
YXRhKCksIFJUTERfTk9XKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXgg
MjhhNTg1MWY1ZWUwYWMwYTM0YmE3NzNkZDYxMzQzN2JmNTQ4NzE3My4uODA4NTczMjNmOWQ4Zjlj
MzhmNjFhOTIxYjdkZWI4NDRiODAwZjI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yODIsNyArMjgyLDcgQEAg
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkKIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCA9IHJl
c29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihbW05TQnVuZGxlIG1haW5CdW5kbGVdIHJlc291
cmNlUGF0aF0pOworICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBh
dGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nIHsgW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSByZXNvdXJjZVBhdGhdIH0pOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
MDA3NGRjYTc3MjdhOTY4NzRmYjFlZDM4NDdmNTE5ZTE2MDRhNTNmNy4uYTdiZjNkMmRjNGQ2ZTMy
ZWU2Y2JmNmMyMDIwZTVlY2RjYzcwZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTkyNiwxNyArOTI2LDE3IEBAIC0gKHZvaWQpX3drQ2hh
bmdlVGV4dFN0eWxlOihpZClzZW5kZXIKIAogICAgIGlmIChbc2VsZi50ZXh0U3R5bGUgaXNTZWxl
Y3RlZEZvclNlZ21lbnQ6MF0gIT0gX3RleHRJc0JvbGQpIHsKICAgICAgICAgX3RleHRJc0JvbGQg
PSAhX3RleHRJc0JvbGQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0
Q29tbWFuZChAIlRvZ2dsZUJvbGQiLCBAIiIpOworICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2Uo
KS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZUJvbGQiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAg
IH0KIAogICAgIGlmIChbc2VsZi50ZXh0U3R5bGUgaXNTZWxlY3RlZEZvclNlZ21lbnQ6MV0gIT0g
X3RleHRJc0l0YWxpYykgewogICAgICAgICBfdGV4dElzSXRhbGljID0gIV90ZXh0SXNJdGFsaWM7
Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xl
SXRhbGljIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRD
b21tYW5kKCJUb2dnbGVJdGFsaWMiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgIH0KIAogICAgIGlm
IChbc2VsZi50ZXh0U3R5bGUgaXNTZWxlY3RlZEZvclNlZ21lbnQ6Ml0gIT0gX3RleHRJc1VuZGVy
bGluZWQpIHsKICAgICAgICAgX3RleHRJc1VuZGVybGluZWQgPSAhX3RleHRJc1VuZGVybGluZWQ7
Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xl
VW5kZXJsaW5lIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVk
aXRDb21tYW5kKCJUb2dnbGVVbmRlcmxpbmUiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgIH0KIH0K
IApAQCAtOTU1LDE5ICs5NTUsMTkgQEAgLSAodm9pZClfd2tDaGFuZ2VUZXh0QWxpZ25tZW50Oihp
ZClzZW5kZXIKICAgICBzd2l0Y2ggKGFsaWdubWVudCkgewogICAgIGNhc2UgTlNUZXh0QWxpZ25t
ZW50TGVmdDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50
TGVmdDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJB
bGlnbkxlZnQiLCBAIiIpOworICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRp
dENvbW1hbmQoIkFsaWduTGVmdCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50UmlnaHQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdu
bWVudCA9IE5TVGV4dEFsaWdubWVudFJpZ2h0OwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2Uo
KS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduUmlnaHQiLCBAIiIpOworICAgICAgICBfd2ViVmll
d0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduUmlnaHQiX3MsIGVtcHR5U3Ry
aW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudENlbnRlcjoK
ICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50Q2VudGVyOwot
ICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduQ2Vu
dGVyIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21t
YW5kKCJBbGlnbkNlbnRlciJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOgogICAgICAgICBfY3VycmVudFRleHRBbGln
bm1lbnQgPSBOU1RleHRBbGlnbm1lbnRKdXN0aWZpZWQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+
cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25KdXN0aWZpZWQiLCBAIiIpOworICAgICAg
ICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduSnVzdGlmaWVk
Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC05OTMsNyArOTkzLDcgQEAgLSAodm9pZClfd2tDaGFuZ2VDb2xvcjooaWQp
c2VuZGVyCiAgICAgICAgIHJldHVybjsKIAogICAgIF90ZXh0Q29sb3IgPSBzZWxmLmNvbG9yUGlj
a2VySXRlbS5jb2xvcjsKLSAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1h
bmQoIkZvcmVDb2xvciIsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNv
bG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsKKyAgICBfd2ViVmlld0ltcGwt
PnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciJfcywgV2ViQ29yZTo6c2VyaWFs
aXphdGlvbkZvckhUTUwoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xvcihfdGV4dENvbG9yLmdl
dCgpKSkpOwogfQogCiAtIChOU1ZpZXdDb250cm9sbGVyICopdGV4dExpc3RWaWV3Q29udHJvbGxl
cgpAQCAtNTEzMiw3ICs1MTMyLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5zZXJ0VGV4dChpZCBz
dHJpbmcsIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBWZWN0b3I8V2ViQ29yZTo6S2V5
cHJlc3NDb21tYW5kPioga2V5cHJlc3NDb21tYW5kcyA9IG1fY29sbGVjdGVkS2V5cHJlc3NDb21t
YW5kczsKICAgICBpZiAoa2V5cHJlc3NDb21tYW5kcyAmJiAhbV9pc1RleHRJbnNlcnRpb25SZXBs
YWNpbmdTb2Z0U3BhY2UpIHsKICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCk7Ci0gICAgICAgIFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCBjb21t
YW5kKCJpbnNlcnRUZXh0OiIsIHRleHQpOworICAgICAgICBXZWJDb3JlOjpLZXlwcmVzc0NvbW1h
bmQgY29tbWFuZCgiaW5zZXJ0VGV4dDoiX3MsIHRleHQpOwogICAgICAgICBrZXlwcmVzc0NvbW1h
bmRzLT5hcHBlbmQoY29tbWFuZCk7CiAgICAgICAgIExPRyhUZXh0SW5wdXQsICIuLi5zdG9yZWQi
KTsKICAgICAgICAgbV9wYWdlLT5yZWdpc3RlcktleXByZXNzQ29tbWFuZE5hbWUoY29tbWFuZC5j
b21tYW5kTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggNGIyMWU5ODlmMjc5YWU2NzM0ZDlkMzI2MDFkZTM2NmRi
MDBhZjdiMi4uZWM2OWJmNmFkM2U3YzU4ZTE3MTE5NzE1MmQwYjM0NGMyMjI0MWZiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNw
cApAQCAtOTMsNyArOTMsNyBAQCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6fkRldmljZUlkSGFz
aFNhbHRTdG9yYWdlKCkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0eU9yaWdpbkRhdGEo
Y29uc3QgY2hhciogbmFtZSwgS2V5ZWREZWNvZGVyKiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0eU9yaWdpbkRhdGEoQVNDSUlMaXRl
cmFsIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2RlcikKIHsKICAgICBTdHJpbmcgb3JpZ2luOwog
CkBAIC0xNTcsMjAgKzE1NywyMCBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpsb2Fk
U3RvcmFnZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaE1hcAogCiBzdGQ6OnVu
aXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyKEtleWVkRGVjb2RlciogZGVj
b2RlciwgU3RyaW5nJiYgZGV2aWNlSWRIYXNoU2FsdCkgY29uc3QKIHsKLSAgICBhdXRvIHNlY3Vy
aXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgib3JpZ2luIiwgZGVjb2Rlcik7
CisgICAgYXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoIm9y
aWdpbiJfcywgZGVjb2Rlcik7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbkRhdGEpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6IFRoZSBzZWN1cml0eSBvcmlnaW4gZGF0YSBpbiB0aGUgZmlsZSBpcyBub3QgY29ycmVj
dDogJyVzJyIsIGRldmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhID0g
Z2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJwYXJlbnRPcmlnaW4iLCBkZWNvZGVyKTsKKyAgICBhdXRv
IHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgicGFyZW50
T3JpZ2luIl9zLCBkZWNvZGVyKTsKICAgICBpZiAoIXBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YSkg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTogVGhlIHBhcmVudCBzZWN1cml0eSBvcmlnaW4gZGF0YSBpbiB0aGUgZmls
ZSBpcyBub3QgY29ycmVjdDogJyVzJyIsIGRldmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGRvdWJsZSBsYXN0VGltZVVz
ZWQ7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCIsIGxhc3RU
aW1lVXNlZCkpIHsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSgibGFzdFRpbWVVc2Vk
Il9zLCBsYXN0VGltZVVzZWQpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJz
aXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBUaGUgbGFzdCB0aW1lIHVzZWQgd2Fz
IG5vdCBjb3JyZWN0bHkgcmVzdG9yZWQgZm9yOiAnJXMnIiwgZGV2aWNlSWRIYXNoU2FsdC51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTg1LDkgKzE4
NSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRG
b3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNv
ZGVyPiBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRhKGNvbnN0
IEhhc2hTYWx0Rm9yT3JpZ2luJiBoYXNoU2FsdEZvck9yaWdpbikgY29uc3QKIHsKICAgICBhdXRv
IGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVT
dHJpbmcoIm9yaWdpbiIsIGhhc2hTYWx0Rm9yT3JpZ2luLmRvY3VtZW50T3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoInBhcmVudE9yaWdpbiIs
IGhhc2hTYWx0Rm9yT3JpZ2luLnBhcmVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiLCBoYXNoU2FsdEZvck9yaWdp
bi5sYXN0VGltZVVzZWQuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVTdHJpbmcoIm9yaWdpbiJfcywgaGFzaFNhbHRGb3JPcmlnaW4uZG9jdW1lbnRPcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGVuY29kZXItPmVuY29kZVN0cmluZygicGFy
ZW50T3JpZ2luIl9zLCBoYXNoU2FsdEZvck9yaWdpbi5wYXJlbnRPcmlnaW4uZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOworICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgibGFzdFRpbWVVc2VkIl9zLCBo
YXNoU2FsdEZvck9yaWdpbi5sYXN0VGltZVVzZWQuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKICAgICByZXR1cm4gZW5jb2RlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCAy
ZTg2YzFiNjZhNGQ1MmQ2ZjMwNGE0OTA1MmUwZmUwOTg1ZGMzMzc4Li42YmNlMmJhZTljMzYwYWFk
Yzc3NDRkZmU3ZDQ1YjExMjM5YWE0NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtNTQs
MTEgKzU0LDExIEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpo
YW5kbGVYUENFdmVudCh4cGNfb2JqZWN0X3QgZXZlbnQpIGNvCiAgICAgaWYgKCFldmVudCB8fCB4
cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOwotICAgIGlmIChtZXNzYWdl
TmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byogbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOworICAgIGlm
ICghbWVzc2FnZU5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkgeworICAgIGlmICghc3RyY21wKG1l
c3NhZ2VOYW1lLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkpIHsKICAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+bV9lbmRwb2ludE1lc3NhZ2UgPSBldmVudDsKICAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGVmOGQyZGQ4NjAxOTQwMGQw
ZGZjMTNmYTFhNDI2NjYyZmI3YmQ0MjUuLjdhYzQ0YTk3YjBiZmRjM2M1NTc3NGM0YWE4ZjM5MmE0
MmFiY2JiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTI3Myw3
ICsyNzMsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpm
aW5pc2hHcmFudGluZ1JlcXVlc3QoVXNlck1lZGlhUGVybQogICAgIHVwZGF0ZVN0b3JlZFJlcXVl
c3RzKHJlcXVlc3QpOwogCiAgICAgaWYgKCFVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xl
dG9uKCkud2lsbENyZWF0ZU1lZGlhU3RyZWFtKCp0aGlzLCByZXF1ZXN0Lmhhc0F1ZGlvRGV2aWNl
KCksIHJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKSkpIHsKLSAgICAgICAgZGVueVJlcXVlc3QocmVx
dWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVu
aWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIik7Cisg
ICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6T3RoZXJGYWlsdXJlLCAiVW5hYmxlIHRv
IGV4dGVuZCBzYW5kYm94LiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDdi
ZDU4NzdkZDhlOTI1OGRjNWQ2YTdmYTQyODY3ZmI5Mjk3OWQ2ZmEuLjRhYTcyOWRiNGEyYzY4MmUz
NzliNzE1YzE2YmE0ZmIwNjQ2ZjA0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIFN0cmluZyBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmV2ZW50c0Rlc2Ny
aXB0aW9uKEV2ZW50cyBlCiB9CiAKIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhjb25zdCBTdHJpbmcmIGxvZykgY29uc3QKK3ZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpsb2coU3RyaW5nVmll
dyBsb2cpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9MT0coVmlld0dlc3R1cmVzLCAiU3dpcGUgU25h
cHNob3QgUmVtb3ZhbCAoJTAuMmYgbXMpIC0gJXMiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X3N0YXJ0VGltZSkubWlsbGlzZWNvbmRzKCksIGxvZy51dGY4KCkuZGF0YSgpKTsKIH0KQEAgLTMy
NCwxMyArMzI0LDEzIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92
YWxUcmFja2VyOjpzdGFydChFdmVudHMgZGVzaXJlZEV2ZW50cywKIHZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZXNldCgpCiB7CiAgICAgaWYgKG1f
b3V0c3RhbmRpbmdFdmVudHMpCi0gICAgICAgIGxvZygicmVzZXQ7IGhhZCBvdXRzdGFuZGluZyBl
dmVudHM6ICIgKyBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSk7CisgICAg
ICAgIGxvZyhtYWtlU3RyaW5nKCJyZXNldDsgaGFkIG91dHN0YW5kaW5nIGV2ZW50czogIiwgZXZl
bnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50cykpKTsKICAgICBtX291dHN0YW5kaW5n
RXZlbnRzID0gMDsKICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgpOwogICAgIG1fcmVtb3ZhbENh
bGxiYWNrID0gbnVsbHB0cjsKIH0KIAotYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cyBldmVudCwgY29u
c3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgc2hvdWxkSWdu
b3JlRXZlbnRJZlBhdXNlZCkKK2Jvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cyBldmVudCwgQVNDSUlMaXRl
cmFsIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCBzaG91bGRJZ25vcmVFdmVu
dElmUGF1c2VkKQogewogICAgIEFTU0VSVChoYXNPbmVCaXRTZXQoZXZlbnQpKTsKIApAQCAtMzM4
LDExICszMzgsMTEgQEAgYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3Zh
bFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCA9PSBTaG91bGRJZ25vcmVF
dmVudElmUGF1c2VkOjpZZXMgJiYgaXNQYXVzZWQoKSkgewotICAgICAgICBsb2coImlzIHBhdXNl
ZDsgaWdub3JpbmcgZXZlbnQ6ICIgKyBldmVudHNEZXNjcmlwdGlvbihldmVudCkpOworICAgICAg
ICBsb2cobWFrZVN0cmluZygiaXMgcGF1c2VkOyBpZ25vcmluZyBldmVudDogIiwgZXZlbnRzRGVz
Y3JpcHRpb24oZXZlbnQpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBs
b2cobG9nUmVhc29uICsgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKTsKKyAgICBsb2cobWFrZVN0
cmluZyhsb2dSZWFzb24sIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50KSkpOwogCiAgICAgbV9vdXRz
dGFuZGluZ0V2ZW50cyAmPSB+ZXZlbnQ7CiAKQEAgLTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjogc3RvcFdhaXRpbmdG
b3JFdmVudChFdmVudHMKIAogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVt
b3ZhbFRyYWNrZXI6OmV2ZW50T2NjdXJyZWQoRXZlbnRzIGV2ZW50LCBTaG91bGRJZ25vcmVFdmVu
dElmUGF1c2VkIHNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQpCiB7Ci0gICAgcmV0dXJuIHN0b3BX
YWl0aW5nRm9yRXZlbnQoZXZlbnQsICJvdXRzdGFuZGluZyBldmVudCBvY2N1cnJlZDogIiwgc2hv
dWxkSWdub3JlRXZlbnRJZlBhdXNlZCk7CisgICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQo
ZXZlbnQsICJvdXRzdGFuZGluZyBldmVudCBvY2N1cnJlZDogIl9zLCBzaG91bGRJZ25vcmVFdmVu
dElmUGF1c2VkKTsKIH0KIAogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVt
b3ZhbFRyYWNrZXI6OmNhbmNlbE91dHN0YW5kaW5nRXZlbnQoRXZlbnRzIGV2ZW50KQogewotICAg
IHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAid2FpdCBmb3IgZXZlbnQgY2FuY2Vs
bGVkOiAiKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIndhaXQgZm9y
IGV2ZW50IGNhbmNlbGxlZDogIl9zKTsKIH0KIAogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Omhhc091dHN0YW5kaW5nRXZlbnQoRXZlbnQgZXZlbnQp
CkBAIC0zNjgsNyArMzY4LDcgQEAgYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6Omhhc091dHN0YW5kaW5nRXZlbnQoRXZlbnQgZXYKIHZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpmaXJlUmVtb3ZhbENhbGxi
YWNrSWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fb3V0c3RhbmRpbmdFdmVudHMpIHsKLSAgICAg
ICAgbG9nKCJkZWZlcnJpbmcgcmVtb3ZhbDsgaGFkIG91dHN0YW5kaW5nIGV2ZW50czogIiArIGV2
ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsKKyAgICAgICAgbG9nKG1ha2VT
dHJpbmcoImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiLCBldmVu
dHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oCmluZGV4IDIwYzMwYjgzNDg4ODdmM2U1MjAwYmY4Njk3MGQ4MjQ5YzM1MDQ3YmYuLjAyYTBi
ODk4ZmQ1Y2IyZWE2MmYwZjdjYjBkODY4OGFiNTY5NGRiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yNTAsMTMgKzI1MCwxMyBA
QCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIFN0cmluZyBldmVudHNE
ZXNjcmlwdGlvbihFdmVudHMpOwotICAgICAgICB2b2lkIGxvZyhjb25zdCBTdHJpbmcmKSBjb25z
dDsKKyAgICAgICAgdm9pZCBsb2coU3RyaW5nVmlldykgY29uc3Q7CiAKICAgICAgICAgdm9pZCBm
aXJlUmVtb3ZhbENhbGxiYWNrSW1tZWRpYXRlbHkoKTsKICAgICAgICAgdm9pZCBmaXJlUmVtb3Zh
bENhbGxiYWNrSWZQb3NzaWJsZSgpOwogICAgICAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgp
OwogCi0gICAgICAgIGJvb2wgc3RvcFdhaXRpbmdGb3JFdmVudChFdmVudHMsIGNvbnN0IFN0cmlu
ZyYgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID0gU2hvdWxkSWdub3JlRXZl
bnRJZlBhdXNlZDo6WWVzKTsKKyAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50
cywgQVNDSUlMaXRlcmFsIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCA9IFNo
b3VsZElnbm9yZUV2ZW50SWZQYXVzZWQ6Olllcyk7CiAKICAgICAgICAgRXZlbnRzIG1fb3V0c3Rh
bmRpbmdFdmVudHMgeyAwIH07CiAgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3JlbW92
YWxDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkubW0KaW5kZXggZDgxZDc4MDYyMWM4MDUwOTNkNDgzZjFlYWMz
NWUyOTAxZDgxODNiOS4uZjY3Y2U0MDQzMTVlZDYyOGVmMWY4MmU0MTM1MmIxYTVhODZjMTA3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkubW0KQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5OjpwZXJmb3JtUmVxdWVzdChSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJl
cQogICAgICAgICBbbV9wcm94eSBwZXJmb3JtQXV0b0ZpbGxBdXRob3JpemF0aW9uUmVxdWVzdHNG
b3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGhhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpXShpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGVuc3VyZU9uTWFpblJ1bkxvb3AoW3dlYWtU
aGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgY3JlZGVudGlhbCA9IHJldGFpblB0cihj
cmVkZW50aWFsKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
eyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93
ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIiB9KTsKKyAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90
QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iX3MgfSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWVB
ZnRlclJlcXVlc3QoY3JlZGVudGlhbCwgZXJyb3IsIFdURk1vdmUoaGFuZGxlcikpOwpAQCAtNDM0
LDcgKzQzNCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZv
cm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxCiAgICAgICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt3ZWFrVGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIHdpbmRvdyA9IFdU
Rk1vdmUod2luZG93KSwgZGFlbW9uRW5kcG9pbnQgPSByZXRhaW5QdHIoZGFlbW9uRW5kcG9pbnQp
LCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhZGFlbW9uRW5kcG9pbnQpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBjb25uZWN0IHRvIGF1dGhvcml6YXRpb24gZGFlbW9uOiAlQFxuIiwgZXJy
b3IuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0
dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiBm
YWlsZWQuIiB9KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJPcGVyYXRpb24g
ZmFpbGVkLiJfcyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1Zp
cnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5t
bQppbmRleCA3NmUzM2E3Mzg2N2JjNGY3ZWNmN2JjZDY2YzA4ZWFjNTZlZjYwZjFhLi4zZjAwYTUw
YTc5ZWY2ZjEzNDcxMDViNGVmNzg2NGE2MWNjMjA0NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNh
dG9yVXRpbHMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tCkBAIC0xMDQsNyArMTA0LDcg
QEAgU3RyaW5nIGJhc2U2NFByaXZhdGVLZXkoUmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtl
eSkKICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CiAgICAgaWYgKGVy
cm9yUmVmKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KICAgICBOU0RhdGEgKm5z
UHJpdmF0ZUtleVJlcCA9IChOU0RhdGEgKilwcml2YXRlS2V5UmVwLmdldCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1Zp
cnR1YWxIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCmluZGV4IDE1MGZlNDJj
ZDQ2NzY5YzUzNjYwOTFkNmY0ZmY0YzMxZWE2ZmM1ZjUuLmE3ZDBiNTAwMWUyNGZlMTZlYWUyOGZj
ODM1MzhlZDk1OWI4MzVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhp
ZENvbm5lY3Rpb24uY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBWaXJ0dWFsSGlkQ29ubmVj
dGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAgICAgICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgcmVz
cG9uc2U7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMSldID0gQ0JPUlZhbHVlKCJu
b25lIik7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1
dGhlbnRpY2F0b3JEYXRhKTsKLSAgICAgICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3Rh
dGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7CisgICAgICAgICAgICBhdXRvIGF0dE9iaiA9IGJ1
aWxkQXR0ZXN0YXRpb25NYXAoV1RGTW92ZShhdXRoZW50aWNhdG9yRGF0YSksIFN0cmluZyB7IGVt
cHR5U3RyaW5nKCkgfSwgeyB9LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25l
KTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoYXR0T2Jq
KTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JWYWx1
ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKQEAgLTMw
OSw3ICszMDksNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQog
ICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDIpXSA9IENCT1JWYWx1ZShhdXRoRGF0YSk7
CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMyldID0gQ0JPUlZhbHVlKHNpZ25hdHVy
ZUZvclByaXZhdGVLZXkoa2V5LCBhdXRoRGF0YSwgY2xpZW50RGF0YUhhc2gpKTsKICAgICAgICAg
ICAgIGlmIChjcmVkZW50aWFsLnVzZXJIYW5kbGUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2Vb
Q0JPUlZhbHVlKDQpXSA9IENCT1JWYWx1ZShidWlsZFVzZXJFbnRpdHlNYXAoKmNyZWRlbnRpYWwu
dXNlckhhbmRsZSwgIiIsICIiKSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVl
KDQpXSA9IENCT1JWYWx1ZShidWlsZFVzZXJFbnRpdHlNYXAoKmNyZWRlbnRpYWwudXNlckhhbmRs
ZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICAgICAgcmVzcG9uc2Vb
Q0JPUlZhbHVlKDUpXSA9IENCT1JWYWx1ZSgoaW50NjRfdCltYXRjaGluZ0NyZWRlbnRpYWxzLnNp
emUoKSk7CiAgICAgICAgICAgICBhdXRvIHBheWxvYWQgPSBDQk9SV3JpdGVyOjp3cml0ZShDQk9S
VmFsdWUocmVzcG9uc2UpKTsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAK
aW5kZXggODBkY2M5ZjZiZjVmMDVlNDc3ZTZlZGYwNDNjMDE0NDQ4ZjE1MTZjNS4uZThkMGZmOTU3
OWZkMjg5ZTVkYmM1NjdiMDM2MWQwMTdkZTEyNzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2Vi
QXV0aGVudGljYXRpb25SZXF1ZXN0RGF0CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGlz
IHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IHRoZSB1c2VyLiIgfSk7CisgICAgICAgICAg
ICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IHRo
ZSB1c2VyLiJfcyB9KTsKICAgICB9OwogICAgIAogICAgIGlmICghZGF0YS5wcm9jZXNzaW5nVXNl
ckdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3Jv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCBm
MWI5MGQzZmI2YjQ1MDhkNmEzZmZjZGQ2NzkxYjg5YmE3ZTA0Y2YyLi44YTM5M2NlY2ViNjRhNTM4
MzU4ODg1ZmM0YjBlYjgyZDRlYWM0MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VHcm91cC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFdlYlBhZ2VHcm91cERhdGEgcGFn
ZUdyb3VwRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAvLyBJZiBpdCB0dXJucyBvdXQg
dGhhdCBpdCdzIHdyb25nLCB3ZSBjYW4gY2hhbmdlIGl0IHRvIHRvICJXZWJLaXQyLiIgYW5kIGdl
dCByaWQgb2YgdGhlIGdsb2JhbERlYnVnS2V5UHJlZml4IGZyb20gV2ViUHJlZmVyZW5jZXMuCiBX
ZWJQYWdlR3JvdXA6OldlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAg
OiBtX2RhdGEocGFnZUdyb3VwRGF0YShpZGVudGlmaWVyKSkKLSAgICAsIG1fcHJlZmVyZW5jZXMo
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmll
ciwgIi5XZWJLaXQyIiwgIldlYktpdDIuIikpCisgICAgLCBtX3ByZWZlcmVuY2VzKFdlYlByZWZl
cmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMobV9kYXRhLmlkZW50aWZpZXIsICIuV2Vi
S2l0MiJfcywgIldlYktpdDIuIl9zKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKSkKIHsKICAgICB3ZWJQYWdlR3Jv
dXBNYXAoKS5zZXQobV9kYXRhLnBhZ2VHcm91cElELCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhmZTIxMTA4ZGQxOTkzNzAxZWQyYjRhNzg4YWEw
YjY4M2U5ZGM1YjUuLjk0ZDIzYzJiOTg2YWQwZjljY2QzN2M1Zjg0Mzg0ZTdiOTRkZDZhYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTExMTEsNyArMTEx
MTEsNyBAQCBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0
ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZQogewogICAgIGF1dG8gY2FwdHVyZURldmlj
ZSA9IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZTo6ZmluZENhcHR1cmVEZXZpY2UoKTsK
ICAgICBpZiAoIWNhcHR1cmVEZXZpY2UpCi0gICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JF
cnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxhYmxlIGZvciBjYXB0dXJlIiB9OworICAgICAgICBy
ZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiTm8gZGV2aWNlIGlzIGF2YWlsYWJsZSBmb3Ig
Y2FwdHVyZSJfcyB9OwogCiAgICAgaWYgKHByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5HUFVQ
cm9jZXNzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2U6OmNyZWF0ZShtX3Byb2Nl
c3MtPmVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIoKSwgKmNhcHR1cmVEZXZpY2UsIG1fd2ViUGFnZUlEKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDJmMTY4MTc0NjU0ZjY1NjgwMzhhOTNiOGI2
YWRiNWIxNzRlM2QyNzIuLjFiMmI4NTFlOTcyNGFjNTBmZTM5OGY5MDRmYjNlYzU3YWU1MDlhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYzNSw3
ICs2MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBpZiAoIXNfaW52YWxpZE1lc3NhZ2VD
YWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNr
KHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpKS5wdHIo
KSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3Jl
YXRlKFN0cmluZyB7IGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSB9KS5wdHIoKSkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhOGVmNWRi
YzQ3ZTZlY2IyYTQ2M2ZlN2I4NWQxY2VkOWVhMDM0NWVlLi5kOTk0NzIwMWY4Yjk0YjVkM2UyZDMy
YmI0ODJkYTI2OWQ2NzlmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTU1OSwxOSArNTU5LDE5IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQo
KQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAgICAgcGFn
ZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNjYW5Gb3JS
ZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdlLnZhbHVl
LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJh
YmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6Om5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkK
IHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFwKCkpCi0gICAgICAgIHBhZ2Uu
dmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yUmVn
aXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBudWxscHRyKTsKKyAgICAgICAgcGFnZS52YWx1ZS0+
cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJs
ZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQo
KQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAgICAgcGFn
ZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YURlbGV0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBudWxscHRyKTsKKyAgICAgICAgcGFnZS52
YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YURlbGV0aW9uRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3ODksNyArMTc4OSw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IGF1dG8gY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9IFt3ZWFrUGFnZSA9IFdlYWtQdHIgeyB0
YXJnZXRQYWdlIH1dKCkgewotICAgICAgICByZXR1cm4gd2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3Jl
YXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCkgOiBDYXB0dXJlU291
cmNlT3JFcnJvciB7ICJQYWdlIGlzIGludmFsaWQiIH07CisgICAgICAgIHJldHVybiB3ZWFrUGFn
ZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRp
b24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxpZCJfcyB9OwogICAg
IH07CiAgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29n
bml0aW9uU2VydmVyPigqY29ubmVjdGlvbigpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Np
b25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCksIFdU
Rk1vdmUoY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCAzMDlhNzU0NGI2NDM5YmI0YWY3ODE1ZTI2NzAxOTE4
ZjVmZjgyMzhiLi5jZTVhMDlkOWIxZjAwYWQ2Yzc5YjU5YWMwODRkMDY4YTBkNmVjYjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0yNzQsMjYgKzI3NCwyNiBAQCBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KQogICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NEKCkpIHsKICAgICAgICAgTlNT
dHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViQXBwQ2FjaGUiXTsKIAot
ICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNh
Y2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKKyAgICAgICAgcmV0dXJuIFdlYktp
dDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmcgeyBjYWNoZVBhdGguc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aCB9KTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7
CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNo
ZVN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVy
YWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICBhdXRvIGRpcmVjdG9yeSA9IHdlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJEZWZhdWx0Iik7CisgICAgYXV0byBk
aXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
RGVmYXVsdCJfcyk7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9s
ZCBzdG9yYWdlIGRpcmVjdG9yeSwgYW5kIHRoZXJlIG1pZ2h0IGJlIGZpbGVzIGxlZnQgaGVyZS4K
LSAgICAgICAgYXV0byBvbGREaXJlY3RvcnkgPSBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiU3RvcmFnZSIsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOworICAgICAg
ICBhdXRvIG9sZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJTdG9yYWdlIl9zLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKICAgICAgICAgTlNG
aWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07
CiAgICAgICAgIE5TQXJyYXkgKmZpbGVzID0gW2ZpbGVNYW5hZ2VyIGNvbnRlbnRzT2ZEaXJlY3Rv
cnlBdFBhdGg6b2xkRGlyZWN0b3J5IGVycm9yOjBdOwogICAgICAgICBpZiAoZmlsZXMpIHsKQEAg
LTMxNCw2MyArMzE0LDYzIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSJfcyk7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9y
eSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJBbHRlcm5hdGl2ZVNlcnZpY2VzIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJBbHRlcm5hdGl2
ZVNlcnZpY2VzIl9zLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOwor
ICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNh
Y2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVkREIiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiJfcyk7CiB9CiAK
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMiX3MpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJMb2Nh
bFN0b3JhZ2UiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Ik1lZGlhS2V5cyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRldmljZUlkSGFzaFNhbHRzIik7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJEZXZpY2VJZEhhc2hTYWx0cyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIik7CisgICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiX3Mp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewotICAgIHJldHVybiB0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciX3MsIFNob3VsZENyZWF0ZURp
cmVjdG9yeTo6Tm8pOwogfQogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1v
ZGVsRWxlbWVudCIsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOworICAgIHJldHVybiB0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNb2RlbEVsZW1lbnQiX3MsIFNob3Vs
ZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogI2VuZGlmCiAKQEAgLTQwMCw3ICs0MDAsNyBAQCBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIGRpcgogICAgICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pKQogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKICAgICAKLSAgICBy
ZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUs
IFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCkBAIC00MjgsNyAr
NDI4LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGkKICAgICAgICAgJiYgIVtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogCi0g
ICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsK
KyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb24pOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnlOYW1lKQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpCiAg
ICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5ICVAIiwgdXJsKTsKIAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodXJsLmFic29s
dXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKIH0KIAogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTFiYmY1NGYwYjQwZmYxMjNh
MjQxYmFjZjM2NmJiOTJiYmYwMzkxNy4uYjE1MjYwOWE2ZmU1NDk5M2VjOGYxODgyODlkZWZkYzBj
MmIwYmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFsbG93c1dlYnNpdGVEYXRh
UmVjb3Jkc0ZvckFsbE9yaWdpbnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5Lm9yaWdpbi5o
b3N0LmlzRW1wdHkoKSA/ICIiIDogbWFrZVN0cmluZygiICIsIGVudHJ5Lm9yaWdpbi5ob3N0KTsK
KyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGhvc3RTdHJpbmcgPSBlbnRyeS5vcmlnaW4uaG9z
dC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogbWFrZVN0cmluZygiICIsIGVudHJ5Lm9yaWdp
bi5ob3N0KTsKICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBtYWtlU3RyaW5nKGVu
dHJ5Lm9yaWdpbi5wcm90b2NvbCwgaG9zdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcAppbmRleCA2ZDNhZTBlMDViNDhiYzZlOGZlZWE0MWIyZWY3MWQxYjAzMjJkMmU1
Li5mMTQxOWI3NDk3OGVlN2U0OTdiODk2ZDIwN2IzNzQ4NGI4ZGIxN2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJv
bVdlYlJUQ0NvZGVjVHlwZSh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIHR5cGUpCiAgICAgICAgIHJl
dHVybiAiVlA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gIkgyNjQiOworICAgICAgICByZXR1cm4gIkgyNjQiX3M7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGUxOWIxZTAzMjQwYzc1YTgz
YzU5OTQ3MmFlMmVkZTQ2ZGJmYzcxYWIuLjNiODgzNTUyYmIyNThiMDU5MzUxNGI1YzU1MzVkZWM2
MDY2NjI0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02MTcsMTEgKzYxNywx
MSBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS1N0cmluZ1JlZiB0ZXh0LCBpbnQgZgogICAgICAgICBhdXRvKiBoaWdobGlnaHREYXRh
QXJyYXkgPSBXZWJLaXQ6OnRvSW1wbChoaWdobGlnaHREYXRhKTsKICAgICAgICAgaGlnaGxpZ2h0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGhpZ2hsaWdodERhdGFBcnJheS0+c2l6ZSgpKTsKICAg
ICAgICAgZm9yIChhdXRvIGRpY3Rpb25hcnkgOiBoaWdobGlnaHREYXRhQXJyYXktPmVsZW1lbnRz
T2ZUeXBlPEFQSTo6RGljdGlvbmFyeT4oKSkgewotICAgICAgICAgICAgYXV0byBzdGFydE9mZnNl
dCA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGljdGlvbmFyeS0+Z2V0KCJmcm9tIikpLT52
YWx1ZSgpOworICAgICAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHN0YXRpY19jYXN0PEFQSTo6
VUludDY0Kj4oZGljdGlvbmFyeS0+Z2V0KCJmcm9tIl9zKSktPnZhbHVlKCk7CiAgICAgICAgICAg
ICBoaWdobGlnaHRzLnVuY2hlY2tlZEFwcGVuZCh7CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhcnRPZmZzZXQgKyBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25h
cnktPmdldCgibGVuZ3RoIikpLT52YWx1ZSgpKSwKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChzdGF0aWNfY2FzdDxBUEk6OlN0cmlu
Zyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiKSktPnN0cmluZygpKQorICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUlu
dDY0Kj4oZGljdGlvbmFyeS0+Z2V0KCJsZW5ndGgiX3MpKS0+dmFsdWUoKSksCisgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yV2l0aG91dENvbnRleHQoc3RhdGlj
X2Nhc3Q8QVBJOjpTdHJpbmcqPihkaWN0aW9uYXJ5LT5nZXQoImNvbG9yIl9zKSktPnN0cmluZygp
KQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGViYzUz
ZWJmYTkxMDljNDkxNGI4OWQ3NDlhMDRjMGY1ZGNkMTY3ZjMuLmI0ZGNhY2ZlMDU4MTY5YTkyZjZh
MWY4MzU4ZGE1ZGIxNWU1YmIyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9v
bCBXZWJTb2NrZXRDaGFubmVsOjppbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KHNpemVfdCBieXRlTGVu
Z3RoKQogICAgIENoZWNrZWRTaXplIGNoZWNrZWROZXdCdWZmZXJlZEFtb3VudCA9IG1fYnVmZmVy
ZWRBbW91bnQ7CiAgICAgY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50ICs9IGJ5dGVMZW5ndGg7CiAg
ICAgaWYgKFVOTElLRUxZKGNoZWNrZWROZXdCdWZmZXJlZEFtb3VudC5oYXNPdmVyZmxvd2VkKCkp
KSB7Ci0gICAgICAgIGZhaWwoIkZhaWxlZCB0byBzZW5kIFdlYlNvY2tldCBmcmFtZTogYnVmZmVy
IGhhcyBubyBtb3JlIHNwYWNlIik7CisgICAgICAgIGZhaWwoIkZhaWxlZCB0byBzZW5kIFdlYlNv
Y2tldCBmcmFtZTogYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlIl9zKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggY2ViZDk3YWFkOGNhYjI1ZjZjZWRlMGUzZTcw
Nzk1ZmNmNzI3MDM0ZS4uNzhkNTBmNWRmMGRhZjBiZWZjYzY0MjhkNDk0ZDk4ZjI4MTYyMjI4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2ViU29ja2V0U3RyZWFtOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQoKQogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogc3RyZWFtLT5tX3NlbmRIYW5kc2hha2VDYWxsYmFja3MudmFs
dWVzKCkpCiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgZmFsc2UpOwotICAgICAgICBzdHJl
YW0tPm1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnN0cmVhbSwgU29ja2V0U3RyZWFtRXJy
b3IoMCwgeyB9LCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQuIikpOworICAgICAgICBzdHJlYW0t
Pm1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnN0cmVhbSwgU29ja2V0U3RyZWFtRXJyb3Io
MCwgeyB9LCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQuIl9zKSk7CiAgICAgICAgIHN0cmVhbSA9
IG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA3OWUzODViZTAyNGViYmYxMzZkYzI3ZGRjZWFiNDk0
NjJlMTVjMDVmLi5hNDg5MWI5MmRhZmNkNDY2NjQ4ZjE2ZGMxMzM2MjYwYWJmMTJjODc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
QEAgLTEyMSw3ICsxMjEsNyBAQCBAZW5kCiAvLyBTZXQgb3ZlcmZsb3c6IGhpZGRlbiBvbiB0aGUg
YW5ub3RhdGlvbiBjb250YWluZXIgc28gPGlucHV0PiBlbGVtZW50cyBzY3JvbGxlZCBvdXQgb2Yg
dmlldyBkb24ndCBzaG93CiAvLyBzY3JvbGxiYXJzIG9uIHRoZSBib2R5LiBXZSBjYW4ndCBhZGQg
YW5ub3RhdGlvbnMgZGlyZWN0bHkgdG8gdGhlIGJvZHksIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRl
biBvbiB0aGUgYm9keQogLy8gd2lsbCBicmVhayBydWJiZXItYmFuZGluZy4KLXN0YXRpYyBjb25z
dCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQorc3RhdGljIGNvbnN0ZXhwciBhdXRvIGFubm90YXRp
b25TdHlsZSA9CiAiI2Fubm90YXRpb25Db250YWluZXIgeyIKICIgICAgb3ZlcmZsb3c6IGhpZGRl
bjsgIgogIiAgICBwb3NpdGlvbjogYWJzb2x1dGU7ICIKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxlID0KICIgICAgcG9zaXRpb246IHN0YXRpYzsg
IgogIiAgICB3aWR0aDogMjAwcHg7ICIKICIgICAgbWFyZ2luLXRvcDogMTAwcHg7ICIKLSJ9ICI7
CisifSAiX3M7CiAKIC8vIEluIG5vbi1jb250aW51b3VzIG1vZGVzLCBhIHNpbmdsZSBzY3JvbGwg
ZXZlbnQgd2l0aCBhIG1hZ25pdHVkZSBvZiA+PSAyMHB4CiAvLyB3aWxsIGp1bXAgdG8gdGhlIG5l
eHQgb3IgcHJldmlvdXMgcGFnZSwgdG8gbWF0Y2ggUERGS2l0IGJlaGF2aW9yLgpAQCAtNzY5LDcg
Kzc2OSw3IEBAIHZvaWQgUERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZTZW50aW5l
bCgpCiAKICAgICBpZiAoIWlzTWFpblJ1bkxvb3AoKSkgewogI2lmICFMT0dfRElTQUJMRUQKLSAg
ICAgICAgcGRmTG9nKCJEaXNhYmxpbmcgaW5jcmVtZW50YWwgUERGIGxvYWRpbmcgb24gYmFja2dy
b3VuZCB0aHJlYWQiKTsKKyAgICAgICAgcGRmTG9nKCJEaXNhYmxpbmcgaW5jcmVtZW50YWwgUERG
IGxvYWRpbmcgb24gYmFja2dyb3VuZCB0aHJlYWQiX3MpOwogI2VuZGlmCiAgICAgICAgIGNhbGxP
bk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAg
ICAgICAgICAgcmVjZWl2ZWROb25MaW5lYXJpemVkUERGU2VudGluZWwoKTsKQEAgLTk2MSw3ICs5
NjEsNyBAQCB2b2lkIFBERlBsdWdpbjo6dGhyZWFkRW50cnkoUmVmPFBERlBsdWdpbj4mJiBwcm90
ZWN0ZWRQbHVnaW4pCiAgICAgZmlyc3RQYWdlU2VtYXBob3JlLndhaXQoKTsKIAogI2lmICFMT0df
RElTQUJMRUQKLSAgICBwZGZMb2coIkZpbmlzaGVkIHByZWxvYWRpbmcgZmlyc3QgcGFnZSIpOwor
ICAgIHBkZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJzdCBwYWdlIl9zKTsKICNlbmRpZgog
fQogCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCB2b2lkIFBERlBsdWdpbjo6YWRvcHRCYWNrZ3JvdW5k
VGhyZWFkRG9jdW1lbnQoKQogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCiAjaWYgIUxP
R19ESVNBQkxFRAotICAgIHBkZkxvZygiQWRvcHRpbmcgUERGRG9jdW1lbnQgZnJvbSBiYWNrZ3Jv
dW5kIHRocmVhZCIpOworICAgIHBkZkxvZygiQWRvcHRpbmcgUERGRG9jdW1lbnQgZnJvbSBiYWNr
Z3JvdW5kIHRocmVhZCJfcyk7CiAjZW5kaWYKIAogICAgIG1fcGRmRG9jdW1lbnQgPSBXVEZNb3Zl
KG1fYmFja2dyb3VuZFRocmVhZERvY3VtZW50KTsKQEAgLTEyODIsMTMgKzEyODIsMTMgQEAgUGx1
Z2luSW5mbyBQREZQbHVnaW46OnBsdWdpbkluZm8oKQogICAgIGluZm8uYnVuZGxlSWRlbnRpZmll
ciA9ICJjb20uYXBwbGUud2Via2l0LmJ1aWx0aW5wZGZwbHVnaW4iX3M7CiAKICAgICBNaW1lQ2xh
c3NJbmZvIHBkZk1pbWVDbGFzc0luZm87Ci0gICAgcGRmTWltZUNsYXNzSW5mby50eXBlID0gImFw
cGxpY2F0aW9uL3BkZiI7CisgICAgcGRmTWltZUNsYXNzSW5mby50eXBlID0gImFwcGxpY2F0aW9u
L3BkZiJfczsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmRlc2MgPSBwZGZEb2N1bWVudFR5cGVEZXNj
cmlwdGlvbigpOwogICAgIHBkZk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiIp
OwogICAgIGluZm8ubWltZXMuYXBwZW5kKHBkZk1pbWVDbGFzc0luZm8pOwogCiAgICAgTWltZUNs
YXNzSW5mbyB0ZXh0UERGTWltZUNsYXNzSW5mbzsKLSAgICB0ZXh0UERGTWltZUNsYXNzSW5mby50
eXBlID0gInRleHQvcGRmIjsKKyAgICB0ZXh0UERGTWltZUNsYXNzSW5mby50eXBlID0gInRleHQv
cGRmIl9zOwogICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLmRlc2MgPSBwZGZEb2N1bWVudFR5cGVE
ZXNjcmlwdGlvbigpOwogICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5k
KCJwZGYiKTsKICAgICBpbmZvLm1pbWVzLmFwcGVuZCh0ZXh0UERGTWltZUNsYXNzSW5mbyk7CkBA
IC0xNTUyLDcgKzE1NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKCkK
ICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQ
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOm1fc291cmNlVVJMIHN0YXR1c0NvZGU6MjAw
IEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOmhl
YWRlcnNdKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNpemVkUmVzcG9uc2UocmVzcG9u
c2UuZ2V0KCkpOwogCi0gICAgYXV0byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGlj
YXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKKyAg
ICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiX3MsIFN0
cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygp
LT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQg
UERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lKQogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsKIAog
ICAgIGlmIChtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zdWdnZXN0
ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKG5pbCwgImFwcGxpY2F0
aW9uL3BkZiIpOworICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUobmlsLCAiYXBwbGljYXRpb24vcGRmIl9zKTsKIAogICAgIGlmICghbV9z
dWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpCi0gICAg
ICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUuYXBwZW5kKCIucGRmIik7CisgICAgICAgIG1fc3VnZ2Vz
dGVkRmlsZW5hbWUuYXBwZW5kKCIucGRmIl9zKTsKIH0KICAgICAKIHZvaWQgUERGUGx1Z2luOjpz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVp
bnQzMl90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKQEAgLTE4OTMsNyArMTg5Myw3IEBAIGJv
b2wgUERGUGx1Z2luOjppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CiAgICAgbV9zb3VyY2VVUkwgPSBwYXJhbWV0ZXJzLnVybDsKICAgICBpZiAoIXBhcmFtZXRlcnMu
c2hvdWxkVXNlTWFudWFsTG9hZGVyICYmICFwYXJhbWV0ZXJzLnVybC5pc0VtcHR5KCkpCi0gICAg
ICAgIGNvbnRyb2xsZXIoKS0+bG9hZFVSTChwZGZEb2N1bWVudFJlcXVlc3RJRCwgIkdFVCIsIHBh
cmFtZXRlcnMudXJsLnN0cmluZygpLCBTdHJpbmcoKSwgSFRUUEhlYWRlck1hcCgpLCBWZWN0b3I8
dWludDhfdD4oKSwgZmFsc2UpOworICAgICAgICBjb250cm9sbGVyKCktPmxvYWRVUkwocGRmRG9j
dW1lbnRSZXF1ZXN0SUQsICJHRVQiX3MsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpLCBTdHJpbmco
KSwgSFRUUEhlYWRlck1hcCgpLCBWZWN0b3I8dWludDhfdD4oKSwgZmFsc2UpOwogCiAgICAgY29u
dHJvbGxlcigpLT5kaWRJbml0aWFsaXplUGx1Z2luKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4
dEFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luVGV4dEFubm90YXRpb24ubW0KaW5kZXggZDc0NWYwMjA5NDg0ZjRlYzJiNzRhNTUzNzRk
MWJjZTkxY2E2Nzg1ZC4uN2Q0M2ZhMDIxYzVhMjBkNjU1NDA4ZTc4YmE5YmVmZjY1NDcwNzgzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAtNTQsMTUgKzU0LDE1IEBAIHN0YXRp
YyBjb25zdCBTdHJpbmcgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQoTlNUZXh0
QWxpZ25tZW50IGFsaWdubWVuCiB7CiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAgICBjYXNl
IE5TVGV4dEFsaWdubWVudExlZnQ6Ci0gICAgICAgIHJldHVybiAibGVmdCI7CisgICAgICAgIHJl
dHVybiAibGVmdCJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudFJpZ2h0OgotICAgICAgICBy
ZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAgICBjYXNlIE5TVGV4
dEFsaWdubWVudENlbnRlcjoKLSAgICAgICAgcmV0dXJuICJjZW50ZXIiOworICAgICAgICByZXR1
cm4gImNlbnRlciJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudEp1c3RpZmllZDoKLSAgICAg
ICAgcmV0dXJuICJqdXN0aWZ5IjsKKyAgICAgICAgcmV0dXJuICJqdXN0aWZ5Il9zOwogICAgIGNh
c2UgTlNUZXh0QWxpZ25tZW50TmF0dXJhbDoKLSAgICAgICAgcmV0dXJuICItd2Via2l0LXN0YXJ0
IjsKKyAgICAgICAgcmV0dXJuICItd2Via2l0LXN0YXJ0Il9zOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDAzNDRmNGJlMjNhNDM3Njcx
OTc3ODk5OTdkNzYzN2EyMDMxYjdlYWUuLjQ1YTAxMWJlNTU2NjIwN2M5Y2FjNDVmOWVmNjA5MmNl
ODAxNTAwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC0xMjMxLDcgKzEyMzEsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJgog
ICAgIGlmICghaHR0cEJvZHkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShodHRwQm9keS5k
YXRhKCksIGh0dHBCb2R5LnNpemUoKSkpOwogICAgICAgICBpZiAoZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBDb250ZW50VHlwZSgi
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CisgICAgICAgICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBDb250ZW50VHlwZSgiYXBwbGljYXRp
b24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zKTsKICAgICB9CiAKICAgICBTdHJpbmcgcmVmZXJy
ZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZSgpLT5kb2N1
bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnVybCgpLCBmcmFtZSgpLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCAwZTExN2Ew
ZWM2MTkwMGQxNTBhZGIxZGU5YzY4MjI5YThlN2FiNTcwLi5mNWJkODlmMWMzNTQ2OTQ5N2IyOWI1
NjllNGI4ZDI0YjNiZjBjMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1
cgogCiAgICAgaWYgKCFpc1dlYkJyb3dzZXIoKSkgewogICAgICAgICBXRUJBVVRITl9SRUxFQVNF
X0xPR19FUlJPUigibWFrZUNyZWRlbnRpYWw6IFRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29t
LmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIik7Ci0gICAgICAgIGhh
bmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4oMCksIEV4Y2Vw
dGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2Nv
bS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIgfSk7CisgICAgICAg
IGhhbmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4oMCksIEV4
Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUg
J2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpNYWtlQ3JlZGVudGlh
bChoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxl
cikpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBTZWN1cml0CiAKICAgICBp
ZiAoIWlzV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIFdFQkFVVEhOX1JFTEVBU0VfTE9HX0VSUk9S
KCJnZXRBc3NlcnRpb246IFRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJIGlzIG9u
bHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Bl
ci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIik7Ci0gICAgICAgIGhhbmRsZXIoeyB9LCBzdGF0
aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4oMCksIEV4Y2VwdGlvbkRhdGEgeyBOb3RB
bGxvd2VkRXJyb3IsICJUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5nZXQnIEFQSSBpcyBvbmx5
IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIu
d2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIgfSk7CisgICAgICAgIGhhbmRsZXIoeyB9LCBzdGF0
aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4oMCksIEV4Y2VwdGlvbkRhdGEgeyBOb3RB
bGxvd2VkRXJyb3IsICJUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5nZXQnIEFQSSBpcyBvbmx5
IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIu
d2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVXZWJBdXRoblByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aG5D
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRBc3NlcnRpb24oaGFzaCwgb3B0aW9ucywgaXNQcm9j
ZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggYmEyMWU0ZDhiNDc0ZDVkYTBh
MWViYzQ3N2ExMDNkODI5YzVlYTEwNy4uNDI3NWViZGM2ZTA5ZWExNmE1M2Q4YTc3ZTZlODE4YWFj
NjZhMzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmNsb3NlSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGkKIHZvaWQgV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjppc1NhbWVFbnRyeShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBvdGhlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6U2FtZUVudHJ5Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAK
ICAgICBpZiAoaWRlbnRpZmllciA9PSBvdGhlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGkKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSwgV2ViQ29yZTo6RmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEZpbGVIYW5kbGUoaWRlbnRpZmllciwgbmFtZSwg
Y3JlYXRlSWZOZWNlc3NhcnkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC05Miw3ICs5Miw3
IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVuCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vz
c2FyeSwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29y
ZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25F
cnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldERpcmVj
dG9yeUhhbmRsZShpZGVudGlmaWVyLCBuYW1lLCBjcmVhdGVJZk5lY2Vzc2FyeSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXJlc3VsdCkKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bAogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUVudHJ5KFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCBkZWxldGVSZWN1cnNpdmVseSwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIg
fSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24g
eyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpSZW1vdmVFbnRyeShpZGVudGlmaWVyLCBuYW1lLCBkZWxldGVSZWN1cnNpdmVs
eSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZl
cnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUVudHJ5KFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGkKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZXNvbHZl
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIG90aGVySWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNvbHZlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNv
bm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlz
IGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZXNvbHZlKGlkZW50aWZpZXIsIG90aGVySWRl
bnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTMwLDcg
KzEzMCw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZXNvbHZlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Z2V0RmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTdHJpbmdDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBs
b3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2Vw
dGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsK
IAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkdldEZpbGUoaWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghcmVzdWx0KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxi
YWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3Jl
OjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVy
cm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShpZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUgKIHZvaWQg
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0
aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9u
IHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6
OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVj
dGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNsb3NlU3luY0FjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8g
ZXJyb3IpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNl
cHRpb25PcihlcnJvcikpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlTmFtZXMo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVOYW1lc0NhbGxiYWNrJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJD
b25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBp
cyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0SGFuZGxlTmFtZXMoaWRlbnRpZmllciks
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTc5LDcgKzE3OSw3IEBA
IHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyhXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Z2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpH
ZXRIYW5kbGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0
aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkdldEhhbmRsZShpZGVudGlmaWVyLCBuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTk0
LDcgKzE5NCw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5k
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpCiB2b2lkIFdlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6bW92ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgVm9pZENhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3du
RXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29u
bmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TW92ZShpZGVudGlmaWVyLCBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIG5ld05hbWUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCmluZGV4IGM1N2U3ODA5YjJlZTE2NmRkNmY2ODhi
ZTIyYTg1OWM3ZGFkZGE4ZmEuLjBjNWRmNTRkYzQ3M2QxYTZmMzZkMjg4MzlhNWJmMTFlZDY4MzEy
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCkBAIC03Nyw5ICs3
Nyw5IEBAIHZvaWQgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50OjpzcGVhayhSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlCiAgICAgfTsKIAogICAgIGF1dG8gdm9pY2Ug
PSB1dHRlcmFuY2UtPnZvaWNlKCk7Ci0gICAgYXV0byB2b2ljZVVSSSA9IHZvaWNlID8gdm9pY2Ut
PnZvaWNlVVJJKCkgOiAiIjsKLSAgICBhdXRvIG5hbWUgPSB2b2ljZSA/IHZvaWNlLT5uYW1lKCkg
OiAiIjsKLSAgICBhdXRvIGxhbmcgPSB2b2ljZSA/IHZvaWNlLT5sYW5nKCkgOiAiIjsKKyAgICBh
dXRvIHZvaWNlVVJJID0gdm9pY2UgPyB2b2ljZS0+dm9pY2VVUkkoKSA6IGVtcHR5U3RyaW5nKCk7
CisgICAgYXV0byBuYW1lID0gdm9pY2UgPyB2b2ljZS0+bmFtZSgpIDogZW1wdHlTdHJpbmcoKTsK
KyAgICBhdXRvIGxhbmcgPSB2b2ljZSA/IHZvaWNlLT5sYW5nKCkgOiBlbXB0eVN0cmluZygpOwog
ICAgIGF1dG8gbG9jYWxTZXJ2aWNlID0gdm9pY2UgPyB2b2ljZS0+bG9jYWxTZXJ2aWNlKCkgOiBm
YWxzZTsKICAgICBhdXRvIGlzRGVmYXVsdCA9IHZvaWNlID8gdm9pY2UtPmlzRGVmYXVsdCgpIDog
ZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IGFhYzZi
M2ZhMTA3MGE3YTNjMDVkYmE3NzI3ZjQwYTM4MWZhNDgxNjMuLmFmYjFiMmQ5MWRhZjI3NDk4MGYz
NzFjYmU3ZGY1MTlkMmZjMjUzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1t
CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGNoYW5nZVdvcmRDYXNlKFdlYlBhZ2UqIHBh
Z2UsIE5TU3RyaW5nICooKmNoYW5nZUNhc2UpKE5TU3RyaW5nICopKQogICAgIGlmICghZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoInNlbGVjdFdvcmQiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoInNlbGVjdFdvcmQiX3MpLmV4ZWN1dGUoKTsKIAogICAgIE5TU3RyaW5nICpzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAgcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KGZyYW1lLnB0cigpLCBjaGFuZ2VDYXNlKHNlbGVjdGVkU3RyaW5nKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4
IGVlMTY0NWVmNGUwYzg0NDc1NzQwM2QyY2RlNTFhZDRiMTEzMDJjY2IuLmRlODAxMjdlYjBiZTIz
YTgzYWZkNDU5M2RlYmVlNDdhYzM2MzQwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0yMTQxLDcgKzIxNDEsNyBAQCBK
U0M6OkpTT2JqZWN0KiBKU01lc3NhZ2VMaXN0ZW5lcjo6anNEZXNjcmlwdGlvbkZyb21EZWNvZGVy
KEpTQzo6SlNHbG9iYWxPYmplY3QqCiAgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpLCBKU0M6OkpTVmFsdWUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc2NyaXB0aW9uIiksIEpTQzo6anNTdHJp
bmcodm0sIElQQzo6ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpOworICAgIGpz
UmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRl
c2NyaXB0aW9uIiksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyB7IElQQzo6ZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJkZXN0aW5hdGlvbklEIiksIEpTQzo6SlNWYWx1ZShkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpOwpAQCAtMjIwNCw3ICsyMjA0LDcgQEAgSlNDOjpKU1ZhbHVlIGpz
VmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3Ry
aW5nKHZtLCAiU2VtYXBob3JlIikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJTZW1hcGhvcmUiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U0M6OkpTVmFsdWUoKSk7CiAgICAgYXV0byBqc1ZhbHVlID0gdG9KUyhnbG9iYWxPYmplY3QsIFdl
YktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OmNyZWF0ZShXVEZNb3ZlKHZhbHVl
KSktPmNyZWF0ZUpTV3JhcHBlcih0b1JlZihnbG9iYWxPYmplY3QpKSk7CiAgICAgb2JqZWN0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlIl9zKSwg
anNWYWx1ZSk7CkBAIC0yMjIxLDcgKzIyMjEsNyBAQCB0ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBvYmpl
Y3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlND
OjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJT
aGFyZWRNZW1vcnkiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlNoYXJlZE1lbW9yeSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6
SlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvdGVjdGlvbiA9IFByb3RlY3Rpb246OlJlYWRXcml0
ZTsKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVG
b3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgb2Jq
ZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRhdGFT
aXplIl9zKSwgSlNDOjpKU1ZhbHVlKHZhbHVlLmRhdGFTaXplKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCi0gICAgb2JqZWN0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInByb3RlY3Rpb24iX3MpLCBKU0M6
OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvdGVjdGlvbiA9PSBQcm90ZWN0aW9uOjpSZWFkV3Jp
dGUgPyAiUmVhZFdyaXRlIiA6ICJSZWFkT25seSIpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvdGVjdGlvbiJfcyksIEpTQzo6
anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm90ZWN0aW9uID09IFByb3RlY3Rpb246OlJlYWRXcml0
ZSA/ICJSZWFkV3JpdGUiX3MgOiAiUmVhZE9ubHkiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDQwYjk5NzMy
MDA3ODI1ZTY2ODNlNjM2ODA0M2Y2MmI2YjU5MDMzN2IuLmIzYmVlMjgyZWNjYzlkMWQ2NzJjYjFl
ZjdkODZkN2UwZDM4NTczNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBSZWY8QVBJOjpBcnJheT4gV2ViRnJh
bWU6OmNoaWxkRnJhbWVzKCkKIFN0cmluZyBXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0KCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLmxheWVyVHJlZUFzVGV4dCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDg1ZjVhNDhhYWVmY2YzYjYzMDhh
ZjZjNGY3YjQ1MWYwYjJmYTE1Y2UuLmIyYzg3MmM3MDI0M2FlOWRiMWM3YTFkODJlNWU2M2IxYWY0
MzQ1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTgx
MCwxMSArODEwLDEyIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkanVz
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgZnJhbWVWaWV3LT5y
ZW5kZXJWaWV3KCktPmxheWVyKCktPmJhY2tpbmcoKS0+dGlsZWRCYWNraW5nKCktPnByZXBvcHVs
YXRlUmVjdCh0aWxlQ292ZXJhZ2VSZWN0KTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDQUJhc2lj
QW5pbWF0aW9uPiB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoU3RyaW5nIGtl
eVBhdGgpCitzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHRyYW5zaWVudFpvb21T
bmFwQW5pbWF0aW9uRm9yS2V5UGF0aChBU0NJSUxpdGVyYWwga2V5UGF0aCkKIHsKICAgICBjb25z
dCBmbG9hdCB0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlvbiA9IDAuMjU7CiAKLSAgICBSZXRh
aW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gYW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5p
bWF0aW9uV2l0aEtleVBhdGg6a2V5UGF0aF07CisgICAgYXV0byBuc0tleVBhdGggPSBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5UGF0aC5jaGFyYWN0ZXJzKCkgbGVu
Z3RoOmtleVBhdGgubGVuZ3RoKCkgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10p
OworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBhbmltYXRpb24gPSBbQ0FCYXNpY0Fu
aW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpuc0tleVBhdGguZ2V0KCldOwogICAgIFthbmlt
YXRpb24gc2V0RHVyYXRpb246dHJhbnNpZW50Wm9vbVNuYXBCYWNrRHVyYXRpb25dOwogICAgIFth
bmltYXRpb24gc2V0RmlsbE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107CiAgICAgW2FuaW1hdGlv
biBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKQEAgLTg1Myw3ICs4NTQsNyBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29uc3RyYWluZWRP
cmlnaW4ueCgpLCBjb25zdHJhaW5lZE9yaWdpbi55KCkpOwogICAgIHRyYW5zZm9ybS5zY2FsZShz
Y2FsZSk7CiAKLSAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1h
dGlvbkNBID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0i
KTsKKyAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNB
ID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iX3MpOwog
ICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6
Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAgICAgcmVuZGVyVmlld0FuaW1h
dGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCkBAIC04NjYsNyArODY3LDcgQEAgdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUg
c2NhbGUsIEZsb2F0UG9pbnQKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FU
cmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W3pvb21MYXllciwgc2hhZG93Q0FMYXllciwg
cGFnZSwgc2NhbGUsIG9yaWdpbl0gKCkgewotICAgICAgICB6b29tTGF5ZXItPnJlbW92ZUFuaW1h
dGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIpOworICAgICAgICB6b29tTGF5ZXItPnJl
bW92ZUFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCJfcyk7CiAgICAgICAgIGlm
IChzaGFkb3dDQUxheWVyKQogICAgICAgICAgICAgW3NoYWRvd0NBTGF5ZXIgcmVtb3ZlQWxsQW5p
bWF0aW9uc107CiAKQEAgLTg3NCwxNyArODc1LDE3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50
CiAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+YXBwbHlUcmFuc2llbnRab29tVG9QYWdlKHNjYWxl
LCBvcmlnaW4pOwogICAgIH1dOwogCi0gICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXko
InRyYW5zaWVudFpvb21Db21taXQiLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKKyAgICB6
b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCJfcywgcmVu
ZGVyVmlld0FuaW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAg
ICAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShm
cmFtZVZpZXcsIHNjYWxlKTsKICAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93UGF0
aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3Qoc2hhZG93Qm91bmRzLCBOVUxMKSk7CiAK
LSAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1hdGlv
biA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIik7CisgICAg
ICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dCb3VuZHNBbmltYXRpb24gPSB0
cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoImJvdW5kcyJfcyk7CiAgICAgICAg
IFtzaGFkb3dCb3VuZHNBbmltYXRpb24gc2V0VG9WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0
OnNoYWRvd0JvdW5kc11dOwotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hh
ZG93UG9zaXRpb25BbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBh
dGgoInBvc2l0aW9uIik7CisgICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFk
b3dQb3NpdGlvbkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0
aCgicG9zaXRpb24iX3MpOwogICAgICAgICBbc2hhZG93UG9zaXRpb25BbmltYXRpb24gc2V0VG9W
YWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDpzaGFkb3dMYXllclBvc2l0aW9uRm9yRnJhbWUo
ZnJhbWVWaWV3LCBjb25zdHJhaW5lZE9yaWdpbildXTsKLSAgICAgICAgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IHNoYWRvd1BhdGhBbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1h
dGlvbkZvcktleVBhdGgoInNoYWRvd1BhdGgiKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNB
bmltYXRpb24+IHNoYWRvd1BhdGhBbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlv
bkZvcktleVBhdGgoInNoYWRvd1BhdGgiX3MpOwogICAgICAgICBbc2hhZG93UGF0aEFuaW1hdGlv
biBzZXRUb1ZhbHVlOihfX2JyaWRnZSBpZClzaGFkb3dQYXRoLmdldCgpXTsKIAogICAgICAgICBb
c2hhZG93Q0FMYXllciBhZGRBbmltYXRpb246c2hhZG93Qm91bmRzQW5pbWF0aW9uLmdldCgpIGZv
cktleTpAInRyYW5zaWVudFpvb21Db21taXRTaGFkb3dCb3VuZHMiXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5tbQppbmRleCA0ODU0NmZjMTRhMTg5ZjdmMzEzYjkzOWVhMGY1MjRhZDllZTZj
ZWQzLi43NjBiMzRiNDM0NDQ0ZGM2OWU4NjY0OTRmM2NhMjVhNGE5NTkyYjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1h
bmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC00NCwxMCArNDQsMTAgQEAgTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXImIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24o
KQogCiB2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5kbGVFdmVudCh4cGNf
b2JqZWN0X3QgbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlv
bmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7
Ci0gICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvKiBtZXNzYWdlTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobWVzc2FnZSwgWFBDRW5kcG9pbnQ6OnhwY01lc3Nh
Z2VOYW1lS2V5KTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKG1lc3NhZ2VOYW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6Onhw
Y1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSkgeworICAgIGlmICghc3Ry
Y21wKG1lc3NhZ2VOYW1lLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNV
cGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpKSB7CiAjaWYgSEFWRShMU0RB
VEFCQVNFQ09OVEVYVCkKICAgICAgICAgYXV0byBkYXRhYmFzZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF92YWx1ZShtZXNzYWdlLCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBC
dW5kbGVSZXF1ZXN0Lm1tCmluZGV4IDBjNTNkMzU2MDRlMzRhNjk0YmFiY2ZmM2U2NDc2NTQ4YThl
MTM0MWUuLjA1YWQ2NzhiYTMwYWEzYzcyODhlYTQ5MjlmZGM0NTkwNDNkZmYzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KQEAgLTEzNiw3ICsxMzYsNyBA
QCB2b2lkIEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6ZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVX
aXRoRXJyb3IoUHVzaEFwcEJ1bmRsZSYgYgogICAgIGlmIChlcnJvcikKICAgICAgICAgbV9jb25u
ZWN0aW9uLT5icm9hZGNhc3REZWJ1Z01lc3NhZ2UobWFrZVN0cmluZygiRmFpbGVkIHRvIGRlbGV0
ZSBhcHAgYnVuZGxlOiAiLCBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9uXSkpKTsKIAotICAgIGNh
bGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2Ny
aXB0aW9uXSkgOiAiIik7CisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xlYW51cChlcnJv
ciA/IFN0cmluZyhbZXJyb3IgZGVzY3JpcHRpb25dKSA6IGVtcHR5U3RyaW5nKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oCmluZGV4IDQ2NTU1MzE1MjA1YTRiNzQ0NWQzZTc5N2ZiNzNlMDZlOWNl
Y2Y5NmEuLjYzNWQwYWQ4ODJlNTRlZGRkOTJhMzk5NjY5NmM5ZmI1YTAwZTgxMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKQEAgLTcyLDggKzcy
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKLSAgICB2b2lk
IGJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNlbmREZWJ1
Z01lc3NhZ2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2Uo
U3RyaW5nVmlldyk7CisgICAgdm9pZCBzZW5kRGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOwogCiBw
cml2YXRlOgogICAgIENsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBkMDhjMDQ1
YjE0ZTYyNWUzNzJlMGQwZmJiYmNkMDY5NGZmNTEyZDMyLi44YjIxYzE1YmI2MGRlYjY1ZWJhZjE5
OTU1NDFlZDEwOTQyYzYzMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENs
aWVudENvbm5lY3Rpb24ubW0KQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIENsaWVudENvbm5lY3Rp
b246OnNldERlYnVnTW9kZUlzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgYnJvYWRjYXN0RGVi
dWdNZXNzYWdlKG1ha2VTdHJpbmcoIlR1cm5lZCBEZWJ1ZyBNb2RlICIsIG1fZGVidWdNb2RlRW5h
YmxlZCA/ICJvbiIgOiAib2ZmIikpOwogfQogCi12b2lkIENsaWVudENvbm5lY3Rpb246OmJyb2Fk
Y2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIENsaWVudENvbm5l
Y3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAg
U3RyaW5nIG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIGF1dG8gc2lnbmluZ0lkZW50aWZlciA9IGhv
c3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIENs
aWVudENvbm5lY3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5icm9hZGNhc3REZWJ1Z01lc3NhZ2UobWFrZVN0
cmluZyhtZXNzYWdlSWRlbnRpZmllciwgbWVzc2FnZSkpOwogfQogCi12b2lkIENsaWVudENvbm5l
Y3Rpb246OnNlbmREZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDbGll
bnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkKIHsKICAg
ICAvLyBGSVhNRTogV2UgY3VycmVudGx5IHNlbmQgdGhlIGRlYnVnIG1lc3NhZ2UgdHdpY2UuCiAg
ICAgLy8gQWZ0ZXIgZ2V0dGluZyBhbGwgZGVidWcgbWVzc2FnZSBjbGllbnRzIG9udG8gdGhlIGVu
Y29kZXIvZGVjb2RlciBtZWNoYW5pc20sIHJlbW92ZSB0aGUgb2xkIHN0eWxlIG1lc3NhZ2UuCkBA
IC0xNTIsNyArMTUyLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGRp
Y3Rpb25hcnkuZ2V0KCksIFdlYktpdDo6V2ViUHVzaEQ6OnByb3RvY29sRGVidWdNZXNzYWdlS2V5
LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2Fn
ZShtX3hwY0Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOwogCi0gICAgc2VuZERh
ZW1vbk1lc3NhZ2U8RGFlbW9uTWVzc2FnZVR5cGU6OkRlYnVnTWVzc2FnZT4obWVzc2FnZSk7Cisg
ICAgc2VuZERhZW1vbk1lc3NhZ2U8RGFlbW9uTWVzc2FnZVR5cGU6OkRlYnVnTWVzc2FnZT4obWVz
c2FnZS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogfQogCiB2b2lkIENsaWVudENvbm5lY3Rp
b246OmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxBcHBCdW5kbGVSZXF1
ZXN0PiYmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1
c2hEYWVtb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCmluZGV4
IDk3ODIzOGY1MTdiMGQzZmI5NmQ5NDA2MzExMzNmYzhlNDBhYTQ0OTYuLjA2NjJmMTNlOTgzOTQ5
MDBjNTQxZmFiZGU5NTZlODVjOTY2MmRiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbFB1
c2hTdWJzY3JpcHRpb25zKENsaWVudENvbm5lY3Rpb24qLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVuc2lnbmVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdp
bihDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogCi0gICAgdm9pZCBicm9hZGNh
c3REZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01l
c3NhZ2UoU3RyaW5nVmlldyk7CiAgICAgdm9pZCBicm9hZGNhc3RBbGxDb25uZWN0aW9uSWRlbnRp
dGllcygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1t
CmluZGV4IGNiZDEyNzAzYjU5ZWNmNWYyNTA3YzgwZGFhMDAzYmZlMmM5NzM0ZTQuLmQxYmY2MWU4
M2FmMGMzODUyODdkN2IyNWU5YzIxYmNlOGVkNGZlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1dlYlB1c2hEYWVtb24ubW0KQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIERhZW1vbjo6cnVuQWZ0
ZXJTdGFydGluZ1B1c2hTZXJ2aWNlKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBm
dW5jdGlvbigpOwogfQogCi12b2lkIERhZW1vbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgRGFlbW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoU3Ry
aW5nVmlldyBtZXNzYWdlKQogewogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX2Nvbm5lY3Rp
b25NYXApIHsKICAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVlLT5kZWJ1Z01vZGVJc0VuYWJsZWQo
KSkKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIERhZW1vbjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5k
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ2xpZW50Q29ubmVjdGlvbiogY29ubgogdm9pZCBEYWVt
b246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oQ2xpZW50Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIpCiB7CiAgICAgaWYgKCFjYW5S
ZWdpc3RlckZvck5vdGlmaWNhdGlvbnMoKmNvbm5lY3Rpb24pKSB7Ci0gICAgICAgIHJlcGx5U2Vu
ZGVyKCJDb3VsZCBub3QgZGVsZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25z
IGZvciBjb25uZWN0aW9uOiBVbmtub3duIGhvc3QgYXBwbGljYXRpb24gY29kZSBzaWduaW5nIGlk
ZW50aWZpZXIiKTsKKyAgICAgICAgcmVwbHlTZW5kZXIoIkNvdWxkIG5vdCBkZWxldGUgcHVzaCBh
bmQgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbnMgZm9yIGNvbm5lY3Rpb246IFVua25vd24gaG9z
dCBhcHBsaWNhdGlvbiBjb2RlIHNpZ25pbmcgaWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERh
ZW1vbk1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1t
CmluZGV4IGQ3YTZiNjNmZTRkYjJkZWI1MGE1ZTllMTcxNzQxZjEwODVkY2FlZDcuLjgxNTFjNjAx
YzYxMjg0OGY5NzNmZjg5YTFlODdjNjNlYTg4NDhjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIGludCBXZWJQdXNo
RGFlbW9uTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgU3RyaW5nIGxpYnJhcnlQYXRoID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRv
bWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpWzBdOwogICAg
ICAgICAgICAgU3RyaW5nIHB1c2hEYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnRzKGxpYnJhcnlQYXRoLCB7ICJXZWJLaXQiLCAiV2ViUHVzaCIsICJQdXNo
RGF0YWJhc2UuZGIiIH0pOwotICAgICAgICAgICAgOjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0
b24oKS5zdGFydFB1c2hTZXJ2aWNlKGluY29taW5nUHVzaFNlcnZpY2VOYW1lLCBwdXNoRGF0YWJh
c2VQYXRoKTsKKyAgICAgICAgICAgIDo6V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3Rh
cnRQdXNoU2VydmljZShTdHJpbmcgeyBpbmNvbWluZ1B1c2hTZXJ2aWNlTmFtZSB9LCBwdXNoRGF0
YWJhc2VQYXRoKTsKICAgICAgICAgfQogICAgIH0KICAgICBDRlJ1bkxvb3BSdW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGIyMDJi
NDQ4MDc4YzNmZWE1YmM5NTUwODBhYTdlZWRlNmVjYTc4YTguLjkxMDFjOWVjNmM0ZmVkMzNhM2I2
YWU3OTlmODFmMjNiNGE5N2ZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2Vy
OjppbnRlcm5hbEluaXRpYWxpemUoKQogU3RvcmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2VyOjp0
cmFja2VyKCkKIHsKICAgICBpZiAoIXN0b3JhZ2VUcmFja2VyKQotICAgICAgICBzdG9yYWdlVHJh
Y2tlciA9IG5ldyBTdG9yYWdlVHJhY2tlcigiIik7CisgICAgICAgIHN0b3JhZ2VUcmFja2VyID0g
bmV3IFN0b3JhZ2VUcmFja2VyKGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChzdG9yYWdlVHJhY2tl
ci0+bV9uZWVkc0luaXRpYWxpemF0aW9uKQogICAgICAgICBzdG9yYWdlVHJhY2tlci0+aW50ZXJu
YWxJbml0aWFsaXplKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDNl
NTUyZGViOWE5ZTM0ZDAzODBmZGMzN2RmZDk0Zjk1YTdhOWRkMWEuLjAyNmQ0ODcwM2UzNGNkNzhl
NmQwMzRhYzAwZTZiN2E5NTJjZDhkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBA
IC01Miw4ICs1Miw4IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi1zdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCI7Ci1z
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGlu
ZyA9ICJpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIl9z
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZyA9
ICJpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCJfczsKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCiB7CkBAIC05
NCw3ICs5NCw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hEaXNh
YmxlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JBdHRhY2hEaXNh
YmxlZChib29sIGRpc2FibGVkKQogewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRhY2hE
aXNhYmxlZFNldHRpbmcsIGRpc2FibGVkID8gInRydWUiIDogImZhbHNlIik7CisgICAgc3RvcmVT
ZXR0aW5nKGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZywgZGlzYWJsZWQgPyAidHJ1ZSJf
cyA6ICJmYWxzZSJfcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkZWxldGVJbnNw
ZWN0b3JTdGFydHNBdHRhY2hlZCgpCkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCiB7Ci0gICAg
c3RvcmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWRTZXR0aW5nLCBhdHRhY2hlZCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmRlbGV0ZUluc3BlY3RvckF0dGFjaERpc2FibGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlz
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlz
dC5tbQppbmRleCA0NzkxNmU3ODFhMjQzMDQxZTFkNTgyNDhhYmZhZWFhYzBjNTdiYjU5Li43OTlh
N2I1OTUyYjJiODVjYjcwYTBiMDBjNTYyYjkwMTc4NmMzMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCkBAIC02
OSw4ICs2OSw4IEBAIHZvaWQgSGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjo6d3JpdGVPYmplY3Rz
KEJpbmFyeVByb3BlcnR5TGlzdE9iamVjdFN0cmVhbSYgc3RyCiB7CiAgICAgc2l6ZV90IG91dGVy
RGljdGlvbmFyeVN0YXJ0ID0gc3RyZWFtLndyaXRlRGljdGlvbmFyeVN0YXJ0KCk7CiAKLSAgICBz
dHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlGaWxlVmVyc2lvbiIpOwotICAgIHN0cmVhbS53
cml0ZVN0cmluZygiV2ViSGlzdG9yeURhdGVzIik7CisgICAgc3RyZWFtLndyaXRlU3RyaW5nKCJX
ZWJIaXN0b3J5RmlsZVZlcnNpb24iX3MpOworICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlz
dG9yeURhdGVzIl9zKTsKIAogICAgIHN0cmVhbS53cml0ZUludGVnZXIoY3VycmVudEZpbGVWZXJz
aW9uKTsKICAgICBzaXplX3Qgb3V0ZXJEYXRlQXJyYXlTdGFydCA9IHN0cmVhbS53cml0ZUFycmF5
U3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCmluZGV4IGNhYzBlOGJjNmY4MDQ0YWNl
NWFhZjk0ZGM5OTFhYWJlNmQwOWUzMTYuLjYyOTExNDY5YWNkZGE0MTk4N2Y0OTU0YzVhNjVkNjNj
OGZiNzJlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQpAQCAtMTM1LDcgKzEzNSw3IEBA
IEBlbmQKIAogV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHdlYkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlKCkKIHsKLSAgICBzdGF0aWMgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UmIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRl
KGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIikubGVha1JlZigpOwor
ICAgIHN0YXRpYyBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBh
dGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzdG9y
YWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCBiNTI1YmIwZDhiNDg1MWNkMWFhNTMz
Mjc5NzlkMTA2NGY2ZWVlNzM5Li5mOGVjMmZiNDBjM2Q4ZDVjZWI1NDZlZDg3YWJjOTRiMDQ0ZjY4
OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtNDQsNyArNDQsNyBAQCArIChpZCl3ZWJT
ZWN1cml0eU9yaWdpbkZyb21EYXRhYmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJ
ZGVudGlmaWVyCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCi0gICAgYXV0
byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0
YWJhc2VJZGVudGlmaWVyKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbURhdGFiYXNlSWRlbnRpZmllcihTdHJpbmcgeyBkYXRhYmFzZUlkZW50aWZpZXIgfSk7CiAg
ICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDg3N2ZmMjg3YTc2YzMxNWYx
MTk3MzkxZDI2YzA0YzNlYjI1ZTYwNWEuLmJmZDVkMDllOThhZGY3MzlhYjhmMzc3YmNiN2U0ZDU0
ZTJlODA3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtMjYwOCwxMyArMjYwOCwxMyBAQCBzdGF0aWMgY29uc3QgU2VsZWN0b3JOYW1l
TWFwKiBjcmVhdGVTZWxlY3RvckV4Y2VwdGlvbk1hcCgpCiB7CiAgICAgU2VsZWN0b3JOYW1lTWFw
KiBtYXAgPSBuZXcgSGFzaE1hcDxTRUwsIFN0cmluZz47CiAKLSAgICBtYXAtPmFkZChAc2VsZWN0
b3IoaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6KSwgIkluc2VydE5ld2xpbmUiKTsK
LSAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOiksICJJbnNl
cnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydFRhYklnbm9yaW5nRmll
bGRFZGl0b3I6KSwgIkluc2VydFRhYiIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlRG93
bjopLCAiTW92ZVBhZ2VEb3duIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VEb3duQW5k
TW9kaWZ5U2VsZWN0aW9uOiksICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKTsKLSAg
ICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZVVwOiksICJNb3ZlUGFnZVVwIik7Ci0gICAgbWFwLT5h
ZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VVcEFuZE1v
ZGlmeVNlbGVjdGlvbiIpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnROZXdsaW5lSWdu
b3JpbmdGaWVsZEVkaXRvcjopLCAiSW5zZXJ0TmV3bGluZSJfcyk7CisgICAgbWFwLT5hZGQoQHNl
bGVjdG9yKGluc2VydFBhcmFncmFwaFNlcGFyYXRvcjopLCAiSW5zZXJ0TmV3bGluZSJfcyk7Cisg
ICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydFRhYklnbm9yaW5nRmllbGRFZGl0b3I6KSwgIklu
c2VydFRhYiJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VEb3duOiksICJNb3ZlUGFn
ZURvd24iX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbjopLCAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zKTsKKyAgICBtYXAtPmFk
ZChAc2VsZWN0b3IocGFnZVVwOiksICJNb3ZlUGFnZVVwIl9zKTsKKyAgICBtYXAtPmFkZChAc2Vs
ZWN0b3IocGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOiksICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2Vs
ZWN0aW9uIl9zKTsKIAogICAgIHJldHVybiBtYXA7CiB9CkBAIC0yNjUwLDcgKzI2NTAsNyBAQCAt
IChXZWJDb3JlOjpFZGl0b3I6OkNvbW1hbmQpY29yZUNvbW1hbmRCeU5hbWU6KGNvbnN0IGNoYXIq
KW5hbWUKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlm
ICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kKCk7
Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKTsKKyAgICByZXR1
cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IG5hbWUgfSk7CiB9CiAKIC0g
KHZvaWQpZXhlY3V0ZUNvcmVDb21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCkBAIC0yODg4
LDcgKzI4ODgsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICAgICAgICAgTlNNZW51SXRlbSAq
bWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNL
aW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZGly
ZWN0aW9uID0gd3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdo
dCA/ICJsdHIiIDogInJ0bCI7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0aW9uID0gd3JpdGlu
Z0RpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/ICJsdHIiX3MgOiAi
cnRsIl9zOwogICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOihmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0aW9uSGFzU3R5bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlv
bikgIT0gVHJpU3RhdGU6OkZhbHNlKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxm
IF9jYW5FZGl0XTsKQEAgLTI5MDYsNyArMjkwNiw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAg
ICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsK
ICAgICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUgb2YgdGhlIG1lbnUgaXRl
bSBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBiZWNhdXNlCiAgICAgICAg
ICAgICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAgICAgICAgIFttZW51SXRl
bSBzZXRUaXRsZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNT
U1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIikgIT0gVHJpU3RhdGU6OkZhbHNlKQorICAgICAgICAg
ICAgW21lbnVJdGVtIHNldFRpdGxlOihmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
V2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiX3MpICE9IFRyaVN0YXRlOjpGYWxz
ZSkKICAgICAgICAgICAgICAgICA/IFVJX1NUUklOR19JTlRFUk5BTCgiTGVmdCB0byBSaWdodCIs
ICJMZWZ0IHRvIFJpZ2h0IGNvbnRleHQgbWVudSBpdGVtIikKICAgICAgICAgICAgICAgICA6IFVJ
X1NUUklOR19JTlRFUk5BTCgiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBMZWZ0IGNvbnRleHQg
bWVudSBpdGVtIildOwogICAgICAgICB9CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCAtICh2b2lkKV9z
ZXRQcmludGluZzooQk9PTClwcmludGluZyBtaW5pbXVtUGFnZUxvZ2ljYWxXaWR0aDooZmxvYXQp
bWluUGFnZUxvZ2ljYQogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7
CiAgICAgaWYgKGNvcmVGcmFtZSkgewogICAgICAgICBpZiAoYXV0byogY29yZVZpZXcgPSBjb3Jl
RnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIGNvcmVWaWV3LT5zZXRNZWRpYVR5cGUoX3ByaXZh
dGUtPnByaW50aW5nID8gInByaW50IiA6ICJzY3JlZW4iKTsKKyAgICAgICAgICAgIGNvcmVWaWV3
LT5zZXRNZWRpYVR5cGUoX3ByaXZhdGUtPnByaW50aW5nID8gInByaW50Il9zIDogInNjcmVlbiJf
cyk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkg
ewogICAgICAgICAgICAgLy8gSW4gc2V0dGluZyBwcmludGluZywgd2Ugc2hvdWxkIG5vdCB2YWxp
ZGF0ZSByZXNvdXJjZXMgYWxyZWFkeSBjYWNoZWQgZm9yIHRoZSBkb2N1bWVudC4KICAgICAgICAg
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MDQK
QEAgLTY2NzIsNyArNjY3Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICB9KSgpOwogCiAgICAgICAgIGlmICghaXNGdW5jdGlvbktleUNvbW1hbmRXaXRo
TWF0Y2hpbmdNZW51SXRlbSkKLSAgICAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCku
YXBwZW5kKFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KSk7Cisg
ICAgICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQoImluc2VydFRleHQ6Il9zLCB0ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5
NjgyMjkyNTBiOGMzYjBjMWFjZjZlYzE4ZWE5ODYyYTZiYjdlYmY1Li43MjFiOGJhZTczZTBjZmJj
MzBkZTJlYjRmYTA0NjFlZTEzM2IxMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC0zMzA0LDcgKzMzMDQsNyBAQCArIChCT09MKV9jYW5IYW5kbGVS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiArIChOU1N0cmluZyAqKV9kZWNvZGVEYXRh
OihOU0RhdGEgKilkYXRhCiB7CiAgICAgV2ViQ29yZTo6SFRNTE5hbWVzOjppbml0KCk7IC8vIHRo
aXMgbWV0aG9kIGlzIHVzZWQgZm9yIGltcG9ydGluZyBib29rbWFya3MgYXQgc3RhcnR1cCwgc28g
SFRNTE5hbWVzIGFyZSBsaWtlbHkgdG8gYmUgdW5pbml0aWFsaXplZCB5ZXQKLSAgICByZXR1cm4g
V2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwiKS0+ZGVjb2Rl
QW5kRmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxl
bmd0aF0pOyAvLyBib29rbWFyayBmaWxlcyBhcmUgSFRNTAorICAgIHJldHVybiBXZWJDb3JlOjpU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCJfcyktPmRlY29kZUFuZEZsdXNo
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsg
Ly8gYm9va21hcmsgZmlsZXMgYXJlIEhUTUwKIH0KIAogLSAodm9pZClfcHVzaFBlcmZvcm1pbmdQ
cm9ncmFtbWF0aWNGb2N1cwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDcxNzllOTM3YzNkMGExOTBkZTZiMDBiMzliNThmNjQyODA5YzEwMmIuLjBi
NThiZDU5ZjY5NzIwNDFlZjRhNWRlYzg0ZTFkM2ExM2IyMjdmNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0w
My0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUg
V2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIq
KSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tOgorICAgICAgICAoLVtCbG9iV2l0aFVTRFpFeHRlbnNpb25Eb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQkZpbGVOYW1lLm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChjcmVhdGVE
aXJlY3Rvcmllcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKwogMjAyMi0w
My0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIERvbid0IGNyZWF0ZSBkaXJlY3RvcmllcyBvbiBpT1MgaWYgd2UgYXJlIG9ubHkgdXNpbmcg
ZXBoZW1lcmFsIHN0b3JhZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCBhY2I3ZTQxYmI2NGJmM2Y2OTdkYzhiYTkxMzliMTlm
ODJjNDBjOWE4Li43NDcwMjJkNTFjMTAyMWJhODQ0ZmJmM2Y2OGI2YzBkNDViN2EzYTY0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0K
QEAgLTY1MCw3ICs2NTAsNyBAQCAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZQogICAgIEVYUEVDVF9U
UlVFKFtmaWxlbmFtZSBoYXNTdWZmaXg6QCIudXNkeiJdKTsKIAogICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShmaWxlbmFtZSwgZmlsZUhhbmRsZSk7CisgICAgX2Rl
c3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZyB7IGZp
bGVuYW1lIH0sIGZpbGVIYW5kbGUpOwogICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQppbmRleCAzOWNhZWFjODA0
NTI0ZDVkZGRiMDhiZjFjYTgzNjY3ZGJmOTc3NTUwLi42M2JmNjhkNDAwNTg0ZjQ1ZWYxMDYwNzdh
YzkxNDlmNmE3NjBiYjBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KQEAgLTgzLDkgKzgzLDkgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdCgpCiAgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YWJhc2VOYW1l
ID0gQCJJbmRleGVkREJUZXN0IjsKICAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlTmFtZSA9
IEAiSW5kZXhlZERCT3RoZXIiOwogICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZU5hbWUgPSBA
IkluZGV4ZWREQlVudXNlZCI7Ci0gICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0aW5n
RGF0YWJhc2VOYW1lKTsKLSAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNv
cmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFi
YXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNR
TGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFt
ZSk7CisgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVG
aWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGV4aXN0aW5nRGF0YWJh
c2VOYW1lIH0pOworICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6
U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVhdGVk
RGF0YWJhc2VOYW1lIH0pOworICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJD
b3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGNy
ZWF0ZWREYXRhYmFzZU5hbWUgfSk7CiAgICAgTlNVUkwgKmlkYlJvb3RVUkwgPSBbd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkgX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsK
ICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3Rv
cnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwpA
QCAtMTI3LDggKzEyNyw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9yaWVzKFN0cmluZyB0
ZXN0TmFtZSkKICAgICBpZiAodGVzdE5hbWUgPT0gIm5vbmUiKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVG
aWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0aW5nRGF0YWJhc2VOYW1lKTsK
LSAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVT
eXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CisgICAg
TlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGV4aXN0aW5nRGF0YWJhc2VOYW1lIH0p
OworICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VO
YW1lIH0pOwogICAgIE5TVVJMICpvbGRWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lv
bkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
InYxIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbbmV3VmVy
c2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9fMCJd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCA2NmY5MjVhYzY0
ZDY4MGY5OWVmM2UzNjJlY2JlNTMyMzZlY2RhYzg0Li5iZTIzZDJlYjA3NGY5MTBkZGY0ZmVlMTBi
ZGU1ZjQ2OWJmNTk5NjliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQpAQCAtODc5LDcgKzg3OSw3IEBAIFRFU1QoV2ViS2l0LCBNaWdyYXRlSW5kZXhlZERCRGF0YVRv
R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkpCiB7CiAgICAgTlNVUkwgKmluZGV4ZWREQkRpcmVjdG9y
eSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvSW5kZXhlZERCIiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIE5TVVJMICppbmRl
eGVkREJPcmlnaW5EaXJlY3RvcnkgPSBbaW5kZXhlZERCRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAInYxL2h0dHBzX3dlYmtpdC5vcmdfMCJdOwotICAgIE5TU3RyaW5nICpp
bmRleGVkREJEYXRhYmFzZU5hbWUgPSBAIlRlc3REYXRhYmFzZSI7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIgaW5kZXhlZERCRGF0YWJhc2VOYW1lW10gPSAiVGVzdERhdGFiYXNlIjsKICAgICBOU1N0
cmluZyAqaGFzaGVkSW5kZXhlZERCRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpbmRleGVkREJEYXRhYmFzZU5hbWUpOwogICAg
IE5TVVJMICppbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFtpbmRleGVkREJPcmlnaW5EaXJl
Y3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hlZEluZGV4ZWREQkRhdGFiYXNl
TmFtZV07CiAgICAgTlNVUkwgKmluZGV4ZWREQkZpbGUgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456163</attachid>
            <date>2022-03-30 12:19:52 -0700</date>
            <delta_ts>2022-03-30 12:54:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220330121951.patch</filename>
            <type>text/plain</type>
            <size>218794</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjNWExNTExMTkwYzc3MjkyY2E0ODdi
NDk3NzZkNDY0NDZjYWEyMTkuLmMxMWIwMDYwYTAzOWY1YmNjYWFlODFkODRlMmNhNzFkYWZjOGZk
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5U
ZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAg
ICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxp
dGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGJlYmEzMjU2ZjhiNzJmZmYyZGI5YTU2Njg5MjFiNGYxYzE0ODhhZGIuLmQ5YmNkYjgxOWM0
MDhmMGFmZTViNzE0YzVlZThjZmI4ZDBhNWVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBA
QAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNv
bnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6Y3JlYXRl
T3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRJbmRleFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRJbmRleFJlY29yZHNSZWNvcmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZm9UYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0
cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgor
ICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpk
dW1wSGVhcCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6c2Vy
aWFsaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6
YWRkUGF0dGVybik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwZW5kQm9vbGVhbik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4
ZWREQik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6OmluZGV4U1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpp
bk1lbW9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmluTWVtb3J5UGF0aCk6
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorCiAyMDIy
LTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhh
c2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1h
cHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOWQ1Y2M5MTQ4NTdlOTViYTU2MTNlNzE4NzQyMjQy
NTg1MjJkZWRjLi44Yjg5ZTdhMTYzYzMzZDQ3YzMwNTU5MWMzZTg0ZmU5NzQ4NWQwY2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9y
IG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjphcHBlbmRCb29sZWFuKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3Rp
Y1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdp
c3RyYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0Ojpsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFs
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVu
bGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0
aCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
QmxvYlN0b3JhZ2U6OmdldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFwRmlsZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9y
YWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNw
cDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKToKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsRmVhdHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAg
ICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAgICAgICAoZW5j
b2RlT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9j
YXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAocmVwbHlCbG9ja1NpZ25hdHVyZSk6CisgICAg
ICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZva2VNZXRob2Q6XSk6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbik6CisgICAgICAgICogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENs
aWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2Vy
dmljZU1haW4pOgorICAgICAgICAqIFNoYXJlZC9JUENUZXN0ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVu
c2lvblR5cGVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmlu
Zyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpnZXRVc2VyRGlyZWN0b3J5U3VmZml4KToKKyAgICAg
ICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6b3Bl
bkFuZE1hcENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWRSZWYuY3BwOgorICAgICAgICAoV0tEb3dubG9hZFNldENsaWVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZXNzaW9uSGlz
dG9yeVVSTFZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRM
aXN0SXRlbVZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJl
ZmVyZW5jZXNDcmVhdGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlm
aWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0
U3RvcmVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW06CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRo
VVJMOl0pOgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTEFu
ZExlZ2FjeUZpbGVuYW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBpbml0XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6bG9h
ZFJlcXVlc3RUb0ZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRT
b2Z0TGluay5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0U3dpZnRMaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVu
c2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tDaGFuZ2VUZXh0U3R5bGU6XSk6
CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgX3drQ2hhbmdlVGV4dEFs
aWdubWVudDpdKToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tD
aGFuZ2VDb2xvcjpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omluc2VydFRleHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmdldFNlY3VyaXR5T3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRl
dmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRh
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5j
aGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1
ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFj
a2VyOjpsb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpldmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpjYW5jZWxPdXRzdGFuZGluZ0V2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OnN0b3BXYWl0aW5nRm9yRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW06CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRp
Y2F0b3JVdGlscy5tbToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJpdmF0ZUtleSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VS
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6V2Vi
UGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3Bl
ZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdl
YnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0
cmFibGVEb21haW5zRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2ViS2l0Ojpm
b3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
U2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6aW5jcmVhc2VC
dWZmZXJlZEFtb3VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZT
ZW50aW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dGhyZWFkRW50cnkpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojpjc3NBbGlnbm1lbnRWYWx1ZUZv
ck5TVGV4dEFsaWdubWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFr
ZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlI
YW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OnJlbW92ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpnZXRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRs
ZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpnZXRIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246Om1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50OjpzcGVhayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2Fz
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VMaXN0ZW5lcjo6anNEZXNjcmlw
dGlvbkZyb21EZWNvZGVyKToKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0IGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0
VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiB3ZWJwdXNoZC9BcHBCdW5kbGVS
ZXF1ZXN0Lm1tOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6
ZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorICAgICAgICAqIHdlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0
RGVidWdNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpzZW5k
RGVidWdNZXNzYWdlKToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmg6CisgICAg
ICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaERhZW1vbk1h
aW4pOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29r
dXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAxNTMxZWM4
YTllNGFkZmYwYjk0MGM4NzgxZjY2YTFjMGFlZDI2MGY0Li4xZGM3OGE5ZjQzNjdjNGYwM2U0Y2E1
YzdiM2NkMjM3MTFkNjJkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29u
c3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcik6CisKIDIwMjItMDMtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEdXN0
IG9mZiBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggMDA2NzM2
NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uM2Q0NWIyNTZhNjQyNmZkMjM5OGE1
ODczYWFkZDM0NjZhNDVlMjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3Rv
ckF0dGFjaERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5n
IGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ5Njc3OWU0MTgwODgwYjc1NWQ2Yzg4Y2NjMGE0NmQ2MWZm
NGU1ZGUuLmQ3MWU4YWY5MTgyYjMzYWViYjI4N2UzYzIxMWMxOTk3ZmQ5Y2M1ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdl
YktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAgICAgIChIaXN0b3J5UHJv
cGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVT
ZWxlY3RvckV4Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcmVDb21tYW5k
QnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRp
bmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0
aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdFZpZXdTaXplOnBh
Z2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4
dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcg
X2RlY29kZURhdGE6XSk6CisKIDIwMjItMDMtMjggIElhbiBBbmRlcnNvbiAgPGlhbmFAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xpZW50cyBmYWlsIHRvIGJ1aWxk
IGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJLaXRMZWdhY3kKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCA2ZjY2NWQwODNmNzU4MjcxZTE4ZjM4OGU3YjRmMzVmMGNkODg0OTA4Li4yMTE4
M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW4KIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBi
ZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYsIFN0cmluZ1ZpZXcgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1v
ZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9v
bCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9m
ZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3Ro
ZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAppbmRleCAzMjY5YzU2MWQxNTU2ZGNkYWI4Y2U0MGU0
MmEyMzljM2Y1YWY0N2YzLi5kMWYxOTkwYzNkMjM5MDBmZmViMWY3NDgzYjA2MzhhZjhiNDJlOTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3JUcmFpdHMuaApAQCAtNzQsNiArNzQsMTMgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+IDog
U2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3Rv
clRyYWl0czxBdG9tU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIAorICAg
IHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxBU0NJSUxpdGVyYWw+IDogVmVjdG9yVHJh
aXRzQmFzZTxmYWxzZSwgdm9pZD4KKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7CisgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Nb3ZlV2l0aE1lbWNweSA9IHRydWU7CisgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworICAgIH07CisKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgogICAgIHN0cnVjdCBWZWN0b3JU
cmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+PgogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBlZTRmNDAwZDczZThmOTE0YjEzNDQ0MzQxZDg2YmQ1
MTIzMmIwNWJlLi5jNWRiMGY5ZTllNDFiYWNlM2E5MTgxMDllZTBmMGNlZDI5YTA5YjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysrIGIvU291
cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC04OSw3ICs4OSw3IEBAIFN0
cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBy
ZXR1cm4gdGVtcG9yYXJ5RmlsZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSwg
Y29uc3QgU3RyaW5nJiBzdWZmaXgpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmll
dyBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBTdHJpbmdW
aWV3IHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGNk
MTk0NzdhYzUxYTU0YjA0OTAxZWVhZjM3ZmRmMGNlYmEzOGFlNzQuLjZlMGU0NzY3MjI2NjQ0YTk2
MjNiMmJjNjMxYWE1MDkxMDFlNThmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZmlsZUNy
ZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
LVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwg
U3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8gRklYTUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9y
dGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0
LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1ZmZpeC5pc0VtcHR5KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggNDI3NmY3N2UyMThkMWY0
YWIxZWZlNWUyODEzMGI5MDU1MGNjNmI0NS4uN2Y5ZThmYzNkMGZjM2UzYzY4NzRjZTY3MjhlMzZl
ZDI0YzgwZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBA
IC0yMTUsNyArMjE1LDcgQEAgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBwYXRoKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShT
dHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIFN0cmluZ1ZpZXcg
c3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRlZCwgYnV0IE9L
IGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1vbmx5LgogICAg
IEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FT
Q0lJTGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYjgwY2VhYTJhM2MyYWMyYThjNGRhYTcyZTYz
MWQuLjgwMjY0NjI2Mjk4ZDYyZWQyMTdmMWQ1OWNhOGMyZjE5ZWRmYmUwZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BU0NJSUxpdGVyYWwuaApAQCAtNjMsNiArNjMsMTYgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBjaGFyKiBtX2NoYXJhY3RlcnM7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJ
TGl0ZXJhbCBhLCBjb25zdCBjaGFyKiBiKQoreworICAgIHJldHVybiBiICYmICFzdHJjbXAoYS5j
aGFyYWN0ZXJzKCksIGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJTGl0ZXJh
bCBhLCBBU0NJSUxpdGVyYWwgYikKK3sKKyAgICByZXR1cm4gIXN0cmNtcChhLmNoYXJhY3RlcnMo
KSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxz
IHsKIAogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBvcGVyYXRvciIiIF9zKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4
IGIyYzk2ZTBjN2I3ZWExMGI4ZWEyZDgwMzRmMGUwNzJlNTVkMTgwYzQuLjI4ZDFjZTVmNmVlMThi
ZDA2OWQ3ZjY3NmRiNTEyNTRmNGEzNWVmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5
UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAgIHJl
dHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgp
CitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldywgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUsIFN0cmluZ1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMg
bm90IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMg
bWFjT1MtcG9ydC1vbmx5LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0
eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNGUyMGE0YjliZWIz
ZGZlZGY1OWM1MDM4YmJjNDJhODE5ZDUyOGMwYy4uMmI5YjM4NGM1NmFkZWZlZjIzOWFkZTI0ZDQ4
MWUxZjRmNjA2NTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI1
MCw3ICsyNTAsNyBAQCBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNraW5nU3Rv
cmUoKQogCiBzdGF0aWMgSURCRXJyb3IgY3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNl
c3NhcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIFN0cmluZyB0YWJsZVN0YXRl
bWVudCA9IGRhdGFiYXNlLnRhYmxlU1FMKCJSZWNvcmRzIl9zKTsKKyAgICBTdHJpbmcgdGFibGVT
dGF0ZW1lbnQgPSBkYXRhYmFzZS50YWJsZVNRTCgiUmVjb3JkcyIpOwogICAgIGlmICh0YWJsZVN0
YXRlbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZCh2M1JlY29yZHNUYWJsZVNjaGVtYSgpKSkKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiRXJyb3IgY3JlYXRpbmcgUmVjb3JkcyB0YWJsZSAo
IiwgZGF0YWJhc2UubGFzdEVycm9yKCksICIpIC0gIiwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
IH07CkBAIC0yOTQsNyArMjk0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpl
bnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NF
UlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIHJlY29yZHNUYWJsZVN0YXRl
bWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iUmVjb3JkcyJfcyk7CisgICAgU3RyaW5n
IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iUmVjb3Jk
cyIpOwogICAgIGlmIChyZWNvcmRzVGFibGVTdGF0ZW1lbnQuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgp
KSkKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFrZVN0cmlu
ZygiRXJyb3IgY3JlYXRpbmcgQmxvYlJlY29yZHMgdGFibGUgKCIsIG1fc3FsaXRlREItPmxhc3RF
cnJvcigpLCAiKSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKSB9OwpAQCAtMzA0LDcg
KzMwNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9i
VGFibGVzKCkKIAogICAgIFJFTEVBU0VfQVNTRVJUKHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBi
bG9iUmVjb3Jkc1RhYmxlU2NoZW1hKCkgfHwgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID09IGJsb2JS
ZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKSk7CiAKLSAgICBTdHJpbmcgZmlsZXNUYWJsZVN0
YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iRmlsZXMiX3MpOworICAgIFN0cmlu
ZyBmaWxlc1RhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIkJsb2JGaWxlcyIp
OwogICAgIGlmIChmaWxlc1RhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAo
IW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkpKQogICAg
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJv
ciBjcmVhdGluZyBCbG9iRmlsZXMgdGFibGUgKCIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAi
KSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKSB9OwpAQCAtMzM4LDcgKzMzOCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNU
YWJsZSgpCiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5p
c09wZW4oKSk7CiAKLSAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJs
ZVNRTCgiSW5kZXhSZWNvcmRzIl9zKTsKKyAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBtX3Nx
bGl0ZURCLT50YWJsZVNRTCgiSW5kZXhSZWNvcmRzIik7CiAgICAgaWYgKHRhYmxlU3RhdGVtZW50
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKHYz
SW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIEluZGV4UmVjb3JkcyB0
YWJsZSAoIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpIH07CkBAIC0zNzgsNyArMzc4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCkKICAgICBBU1NFUlQobV9z
cWxpdGVEQik7CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFN0cmlu
ZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRleFJlY29yZHNJbmRl
eCJfcyk7CisgICAgU3RyaW5nIGluZGV4U3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+aW5kZXhTUUwo
IkluZGV4UmVjb3Jkc0luZGV4Iik7CiAgICAgaWYgKGluZGV4U3RhdGVtZW50ID09IEluZGV4UmVj
b3Jkc0luZGV4U2NoZW1hKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIApAQCAt
Mzk2LDcgKzM5Niw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRJbmRleFJlY29yZHNSZWNvcmRJbmRleCgpCiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwogICAg
IEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTdHJpbmcgaW5kZXhTdGF0ZW1l
bnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgiX3MpOwor
ICAgIFN0cmluZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRleFJl
Y29yZHNSZWNvcmRJbmRleCIpOwogICAgIGlmIChpbmRleFN0YXRlbWVudCA9PSB2MUluZGV4UmVj
b3Jkc1JlY29yZEluZGV4U2NoZW1hKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAg
IApAQCAtNDg2LDcgKzQ4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FM
aXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mCiAgICAgQVNTRVJU
KG1fc3FsaXRlREIpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBT
dHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiT2JqZWN0U3RvcmVJ
bmZvIl9zKTsKKyAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNR
TCgiT2JqZWN0U3RvcmVJbmZvIik7CiAgICAgaWYgKHRhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKQEAgLTc3NSw3ICs3NzUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4
dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogewogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKIAotICAg
IGlmICghbV9zcWxpdGVEQi0+dGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyJfcykpCisgICAg
aWYgKCFtX3NxbGl0ZURCLT50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJbmZvIikpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZTsKQEAgLTk1MCw3ICs5
NTAsNyBAQCBzdGQ6Om9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVgogICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcycgd2hlbiBnZXR0aW5nIGRhdGFi
YXNlIG5hbWUiLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIGlmICghZGF0YWJhc2UudGFibGVFeGlzdHMoIklEQkRh
dGFiYXNlSW5mbyJfcykpIHsKKyAgICBpZiAoIWRhdGFiYXNlLnRhYmxlRXhpc3RzKCJJREJEYXRh
YmFzZUluZm8iKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBmaW5kIElEQkRhdGFi
YXNlSW5mbyB0YWJsZSBhbmQgZ2V0IGRhdGFiYXNlIG5hbWUoJWkpIC0gJXMiLCBkYXRhYmFzZS5s
YXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJV
U0QubW0KaW5kZXggY2FiNGI4ZGUyMDJlNzdkNzAyODJiNTk0YTFiZWZiZDc1YjA2Y2IyZC4uMDll
YzhmNjAzZTlkMDIyYjM3OGRkYTBlNDI3ZmVjNTIxZmRkNTJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2Fk
ZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCiAgICAgLy8gaW5pdGlhbGl6ZXIgYnV0IGN1cnJlbnRseSB0aGF0IGRvZXMgbm90
IHdvcmsuCiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
LSAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVs
RmlsZSJfcywgZmlsZUhhbmRsZSwgIi51c2R6Il9zKTsKKyAgICBhdXRvIGZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNk
eiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsK
IAogICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFu
ZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBjZDBjNDE0ZmIzMTAwMjQxM2VhMmJmZGQwOTgzMDVk
NTFiOWYxZmQyLi5iMTMyMGYwMDhiYmY5MzM1OWIyYjg1MzFkZWIxNmYxNGQ5Zjk4ZTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAt
MzY2LDExICszNjYsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVu
QW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIFdURk1vdmUobWVzc2FnZSkg
fTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgU3RyaW5nIHRhYmxlTmFtZSh1bnF1YWxp
ZmllZEluZm9UYWJsZU5hbWUpOwotICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRh
YmxlRXhpc3RzKHRhYmxlTmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFz
ZS50YWJsZUV4aXN0cyh1bnF1YWxpZmllZEluZm9UYWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAg
ICAgbV9uZXcgPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kU2xvdygiQ1JFQVRFIFRBQkxFICIgKyB0YWJsZU5hbWUgKyAiIChrZXkg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmRTbG93KG1ha2VTdHJpbmco
IkNSRUFURSBUQUJMRSAiLCB1bnF1YWxpZmllZEluZm9UYWJsZU5hbWUsICIgKGtleSBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRh
dGFiYXNlLCBmYWlsZWQgdG8gY3JlYXRlICdpbmZvJyB0YWJsZSIsIG1fc3FsaXRlRGF0YWJhc2Uu
bGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAg
ICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICBt
X3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggYTRmMGM3NDQ1MjM3MWE0
ZGJkOGRmMDg2MDY5ZWNkMTBhYmEzMjI5Zi4uOWViMzkxYzZkMGJkNmQ0ODYwNTEwZWRhYjcyODkz
Mzk5NTA2YmM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBEYXRhYmFzZVRyYWNr
ZXI6OkRhdGFiYXNlVHJhY2tlcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKIAogU3RyaW5n
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgobV9kYXRh
YmFzZURpcmVjdG9yeVBhdGguaXNvbGF0ZWRDb3B5KCksICJEYXRhYmFzZXMuZGIiX3MpOworICAg
IHJldHVybiBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCAiRGF0YWJhc2VzLmRiIik7CiB9
CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVh
dGlvbkFjdGlvbiBjcmVhdGVBY3Rpb24pCkBAIC0xMTgsMTQgKzExOCwxNCBAQCB2b2lkIERhdGFi
YXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25BY3Rpb24gY3Jl
YXRlQWN0aW9uKQogICAgIH0KICAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3Mo
KTsKIAotICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyJfcykpIHsKKyAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiKSkgewogICAgICAgICBpZiAo
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4g
VEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiX3MpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUK
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRh
dGFiYXNlcyJfcykpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNl
cyIpKSB7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9y
aWdpbiBURVhULCBuYW1lIFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5U
RUdFUiwgcGF0aCBURVhUKTsiX3MpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUK
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBEYXRhYmFzZXMgdGFibGUi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDVm
OTM0OTE3NTZmMjdlYzA0ZDRkZWE5ZDM4MWI3YTY0YzZjNzkyMDcuLjZhOTAxOTdiNDQ2YzY0ZWMz
YTczYjMzMjNhOTQ1NDBjZDU4ZDRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
R0NDb250cm9sbGVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgR0NDb250cm9sbGVyOjpk
ZWxldGVBbGxMaW5rZWRDb2RlKERlbGV0ZUFsbENvZGVFZmZvcnQgZWZmb3J0KQogdm9pZCBHQ0Nv
bnRyb2xsZXI6OmR1bXBIZWFwKCkKIHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZUhhbmRsZTsKLSAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIkdDSGVhcCJfcywgZmlsZUhhbmRsZSk7CisgICAgU3RyaW5nIHRlbXBG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJHQ0hlYXAiLCBmaWxlSGFu
ZGxlKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpIHsK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJEdW1waW5nIEdDIGhlYXAgZmFpbGVkIHRvIG9wZW4gdGVt
cG9yYXJ5IGZpbGUiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAppbmRleCAwNTJiNTk3YmNmYjkyYTc0
Mzc5M2Y5MTVlZDY5NmU3YTBlOWU0OGYxLi4wNGM2ZGE1YTg0OGQwODkxZjMzZjRmODM5ZGE5NTJi
OGM3Njc5YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcApAQCAtNTIsNyArNTIsNyBAQCBib29sIHdyaXRlQWxsVG9GaWxlKEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBUJiBjb250YWluZXIpCiBz
dGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRORkE+IFNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZShORkEm
JiBuZmEpCiB7CiAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKLSAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlNlcmlhbGl6ZWRORkEiX3MsIGZpbGUpOworICAgIGF1dG8gZmlsZW5hbWUgPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiU2VyaWFsaXplZE5GQSIsIGZpbGUpOwogICAgIGlmICgh
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJM
RmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5jcHAKaW5kZXggNGZmMTIyNWZhYTgyMjg1YjMxY2VkNTc1OWRiODk3NzY5MTg5
ZTc0YS4uYTllYzhkMzI3ODllZDhkZGUzYzJkZGMyNTRhOWYyOTQxZWZmZGI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3Bw
CkBAIC0zNDksNyArMzQ5LDcgQEAgVVJMRmlsdGVyUGFyc2VyOjpVUkxGaWx0ZXJQYXJzZXIoQ29t
YmluZWRVUkxGaWx0ZXJzJiBjb21iaW5lZFVSTEZpbHRlcnMpCiAKIFVSTEZpbHRlclBhcnNlcjo6
flVSTEZpbHRlclBhcnNlcigpID0gZGVmYXVsdDsKIAotVVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0
YXR1cyBVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBi
b29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90IHBhdHRlcm5JZCkKK1VSTEZpbHRl
clBhcnNlcjo6UGFyc2VTdGF0dXMgVVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKFN0cmluZ1Zp
ZXcgcGF0dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJu
SWQpCiB7CiAgICAgaWYgKCFwYXR0ZXJuLmlzQWxsQVNDSUkoKSkKICAgICAgICAgcmV0dXJuIE5v
bkFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJM
RmlsdGVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0
ZXJQYXJzZXIuaAppbmRleCA4ODk4M2I1NWMzY2JlZDU5ZjRhNGEwMWFlZDI1YTQzMmM4MDI4YjQx
Li5hNDkzYjkxNjVhMjVjOWYyZjg3NzVkMTJhYzJmZjE1OTAyMWIyMzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdGF0dXNTdHJpbmco
UGFyc2VTdGF0dXMpOwogICAgIGV4cGxpY2l0IFVSTEZpbHRlclBhcnNlcihDb21iaW5lZFVSTEZp
bHRlcnMmKTsKICAgICB+VVJMRmlsdGVyUGFyc2VyKCk7Ci0gICAgUGFyc2VTdGF0dXMgYWRkUGF0
dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwg
dWludDY0X3QgcGF0dGVybklkKTsKKyAgICBQYXJzZVN0YXR1cyBhZGRQYXR0ZXJuKFN0cmluZ1Zp
ZXcgcGF0dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJu
SWQpOwogCiBwcml2YXRlOgogICAgIENvbWJpbmVkVVJMRmlsdGVycyYgbV9jb21iaW5lZFVSTEZp
bHRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5jcHAKaW5kZXggNDZiNWM5ZTIzZDUyNWJlZDFjZjcyNjgwOTM5NTZlNDU3YWEwMDY0ZC4uMGQ0
N2Q3YzA2YjMxMzk5MmFjYTJkNjhkOTgxMjY2NDgxY2E1Yzk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtMzQ5LDcgKzM0OSw3
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVj
b2RlciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgYm9vbCBmbGFnKQorc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBBU0NJSUxpdGVyYWwgbGFiZWwsIGJvb2wgZmxhZykKIHsKICAgICBidWls
ZGVyLmFwcGVuZCgiICAgICIsIGxhYmVsLCAiOiAiLCBmbGFnID8gIlllcyIgOiAiTm8iKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCAyZDM4NmRi
MWZmM2M2MmNhZmE3OTllNTgyZjdlNWMwMjViZjBkYzNjLi5hNjgyY2NiYTc1NDI5ZDcyODUyNmQ4
YWNmOGZiMGVlNzUyMmQyMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRh
dGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2ws
IHNlcGFyYXRvckNoYXJhY3RlciwgRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCks
IHNlcGFyYXRvckNoYXJhY3RlciwgcG9ydC52YWx1ZV9vcigwKSk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFs
PFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKFN0cmluZ1ZpZXcgZGF0YWJhc2VJZGVudGlmaWVyKQogewogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBkYXRh
YmFzZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwpAQCAtMTA1LDcgKzEwNSw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBw
b3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0LgogICAg
IGF1dG8gcG9ydExlbmd0aCA9IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRv
cjIgLSAxOwotICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQxNl90PihTdHJpbmdWaWV3IHsgZGF0YWJhc2VJZGVudGlmaWVyIH0ucmlnaHQocG9ydExl
bmd0aCkpOworICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQxNl90PihkYXRhYmFzZUlkZW50aWZpZXIucmlnaHQocG9ydExlbmd0aCkpOwogCiAgICAg
Ly8gTm90aGluZyBhZnRlciB0aGUgY29sb24gaXMgZmluZS4gRmFpbHVyZSB0byBwYXJzZSBhZnRl
ciB0aGUgY29sb24gaXMgbm90LgogICAgIGlmICghcG9ydCAmJiBwb3J0TGVuZ3RoKQpAQCAtMTE3
LDcgKzExNyw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uCiAKICAgICBhdXRvIHByb3RvY29s
ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKICAgICBhdXRv
IGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBh
cmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eyBwcm90b2NvbCwgaG9zdCwgcG9ydCB9OworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eyBwcm90b2NvbC50b1N0cmluZygpLCBob3N0LnRvU3RyaW5nKCksIHBvcnQgfTsKIH0KIAogU2Vj
dXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggMzczNTBhYTQw
YTZiZTBiZDI2ZGM2NTUxYmM3MDQ2MzRkYTljMjM5YS4uZmE0NDZkYjYxNzg0NjQ3OGU0NDQyNWE4
NmY1OTIwNTY5ODc5NDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oCkBAIC03MSw3ICs3MSw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogICAgIC8v
IFNlcmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIHRvIGEgc3RyaW5nIHRoYXQgY291bGQgYmUg
dXNlZCBhcyBwYXJ0IG9mCiAgICAgLy8gZmlsZSBuYW1lcy4gVGhpcyBmb3JtYXQgc2hvdWxkIGJl
IHVzZWQgaW4gc3RvcmFnZSBBUElzIG9ubHkuCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRh
dGFiYXNlSWRlbnRpZmllcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoU3RyaW5nVmlldyk7CiAgICAg
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3Vy
aXR5T3JpZ2luRGF0YT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNWFjYjI5Y2ZiNDU5OTdhMTg4NmZiY2E3NWMw
MTUwN2EzYmJlNjRmYi4uMjljZmMzMDQzMjJiYmQyZGE4ZDAzNTViYmVlMzVkNzE1MjU0M2M1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTE1
MiwxNiArMTUyLDE2IEBAIGNvbnN0ZXhwciBDb21wYXJhYmxlQ2FzZUZvbGRpbmdBU0NJSUxpdGVy
YWwgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUFycmF5W10gPSB7CiAjZW5kaWYKIH07CiAKLXRlbXBs
YXRlPEFTQ0lJU3Vic2V0IHN1YnNldCwgdW5zaWduZWQgc2l6ZT4gc3RhdGljIEZpeGVkVmVjdG9y
PGNvbnN0IGNoYXIqPiBtYWtlRml4ZWRWZWN0b3IoY29uc3QgQ29tcGFyYWJsZUFTQ0lJU3Vic2V0
TGl0ZXJhbDxzdWJzZXQ+ICgmYXJyYXkpW3NpemVdKQordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vi
c2V0LCB1bnNpZ25lZCBzaXplPiBzdGF0aWMgRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiBtYWtl
Rml4ZWRWZWN0b3IoY29uc3QgQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxzdWJzZXQ+ICgm
YXJyYXkpW3NpemVdKQogewotICAgIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiByZXN1bHQoc3Rk
OjpzaXplKGFycmF5KSk7CisgICAgRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiByZXN1bHQoc3Rk
OjpzaXplKGFycmF5KSk7CiAgICAgc3RkOjp0cmFuc2Zvcm0oc3RkOjpiZWdpbihhcnJheSksIHN0
ZDo6ZW5kKGFycmF5KSwgcmVzdWx0LmJlZ2luKCksIFtdIChhdXRvIGxpdGVyYWwpIHsKICAgICAg
ICAgcmV0dXJuIGxpdGVyYWwubGl0ZXJhbDsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1GaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMoKQorRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiBNSU1FVHlwZVJlZ2lz
dHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCiB7CiAgICAgcmV0dXJuIG1ha2VGaXhlZFZl
Y3RvcihzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXkpOwogfQpAQCAtMjQ0LDcgKzI0NCw3IEBA
IGNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgcGRmTUlNRVR5cGVBcnJheVtdID0g
ewogICAgICJ0ZXh0L3BkZiIsCiB9OwogCi1GaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlNRVR5
cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gTUlN
RVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkKIHsKICAgICByZXR1cm4gbWFrZUZpeGVkVmVj
dG9yKHBkZk1JTUVUeXBlQXJyYXkpOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIGNvbnN0ZXhwciBD
b21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVBcnJheVtdID0g
ewogICAgICJ0ZXh0L3gtdmNmIiwKIH07CiAKLUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1F
VHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQorRml4ZWRWZWN0b3I8QVND
SUlMaXRlcmFsPiBNSU1FVHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQog
ewogICAgIHJldHVybiBtYWtlRml4ZWRWZWN0b3IodW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVBcnJh
eSk7CiB9CkBAIC02OTAsNyArNjkwLDcgQEAgY29uc3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0
ZXJhbCB1c2RNSU1FVHlwZUFycmF5W10gPSB7CiAgICAgIm1vZGVsL3ZuZC51c2R6K3ppcCIsIC8v
IFRoZSBvZmZpY2lhbCB0eXBlOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRp
YS10eXBlcy9tb2RlbC92bmQudXNkeit6aXAKIH07CiAKLUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIq
PiBNSU1FVHlwZVJlZ2lzdHJ5Ojp1c2RNSU1FVHlwZXMoKQorRml4ZWRWZWN0b3I8QVNDSUlMaXRl
cmFsPiBNSU1FVHlwZVJlZ2lzdHJ5Ojp1c2RNSU1FVHlwZXMoKQogewogICAgIHJldHVybiBtYWtl
Rml4ZWRWZWN0b3IodXNkTUlNRVR5cGVBcnJheSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggOGMyZDZmYTAyNTY5Njg2NzJlMWNiNDdhMzcyMDc5
YTYyYTkxZmZjNy4uNmI1MTYyZDlhZGNmMmNlZTIyOTgzNGQ1ODVjNTA2NTk0NzdkZWNiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApAQCAtMTMyLDEzICsx
MzIsMTMgQEAgcHVibGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90
aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9y
PEFTQ0lJTGl0ZXJhbD4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBwZGZNSU1FVHlw
ZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+
IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBG
aXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gdXNkTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gcGRmTUlNRVR5cGVzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gdW5zdXBwb3J0
ZWRUZXh0TUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9y
PEFTQ0lJTGl0ZXJhbD4gdXNkTUlNRVR5cGVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIGFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAppbmRleCBh
ZjFlNGQ4YmJmYTJhNzU1N2Q4Y2ZhMWE5NTVlMTk2NGExOTM4MjE0Li4yMDdiZjQ2NjJlZmRkZTQ2
NTlhNjYwZGI2MWQ4Y2U4OGE1NzJjZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcApAQCAtNjksNyArNjks
NyBAQCBzdGF0aWMgU3RyaW5nIHRyYW5zY29kZUltYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVUSSwgYwogICAgIGF1dG8gc3VmZml4ID0gbWFrZVN0cmlu
ZygnLicsIGRlc3RpbmF0aW9uRXh0ZW5zaW9uKTsKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBkZXN0aW5hdGlvbkZpbGVIYW5kbGU7Ci0gICAgU3RyaW5nIGRlc3RpbmF0aW9u
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wSW1hZ2UiX3MsIGRlc3Rp
bmF0aW9uRmlsZUhhbmRsZSwgc3VmZml4KTsKKyAgICBTdHJpbmcgZGVzdGluYXRpb25QYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBJbWFnZSIsIGRlc3RpbmF0aW9uRmls
ZUhhbmRsZSwgc3VmZml4KTsKICAgICBpZiAoZGVzdGluYXRpb25GaWxlSGFuZGxlID09IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoSW1hZ2VzLCAidHJhbnNjb2RlSW1hZ2U6IERlc3RpbmF0aW9uIGltYWdlIGNvdWxkIG5v
dCBiZSBjcmVhdGVkOiAlcyAlc1xuIiwgcGF0aC51dGY4KCkuZGF0YSgpLCBkZXN0aW5hdGlvblVU
SS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5t
bQppbmRleCAwNzczZjU4ODZlNDBhMDJlYTllM2NhMDgwMjA1YzQ3MmE5YjI4MzQ5Li5kYzdhM2Nl
N2ZmM2I3ZWQxOWRlZjBmZjQ4YTIwNDk4MGQ0OTY3ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCkBAIC01MTEs
MjEgKzUxMSwyMSBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50
ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFy
YWN0ZXIgZm9yIEVudGVyLgogICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0g
J1xyJykgewotICAgICAgICAgICAgbV90ZXh0ID0gIlxyIjsKLSAgICAgICAgICAgIG1fdW5tb2Rp
ZmllZFRleHQgPSAiXHIiOworICAgICAgICAgICAgbV90ZXh0ID0gIlxyIl9zOworICAgICAgICAg
ICAgbV91bm1vZGlmaWVkVGV4dCA9IG1fdGV4dDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRo
ZSBhZGp1c3RtZW50cyBiZWxvdyBhcmUgb25seSBuZWVkZWQgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCBidXQgd2UgY2Fubm90IHRlbGwgd2hhdCBtb2RlIHdlIGFyZSBpbiBmcm9tIGhl
cmUuCiAKICAgICAgICAgLy8gVHVybiAweDdGIGludG8gOCwgYmVjYXVzZSBiYWNrc3BhY2UgbmVl
ZHMgdG8gYWx3YXlzIGJlIDguCiAgICAgICAgIGlmIChtX3RleHQgPT0gIlx4N0YiKQotICAgICAg
ICAgICAgbV90ZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBtX3RleHQgPSAiXHg4Il9zOwogICAg
ICAgICBpZiAobV91bm1vZGlmaWVkVGV4dCA9PSAiXHg3RiIpCi0gICAgICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCJf
czsKICAgICAgICAgLy8gQWx3YXlzIHVzZSA5IGZvciB0YWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1
c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgogICAgICAgICBp
ZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gOSkgewotICAgICAgICAgICAgbV90ZXh0ID0g
Ilx4OSI7Ci0gICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAgICAgICAg
ICBtX3RleHQgPSAiXHg5Il9zOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IG1fdGV4
dDsKICAgICAgICAgfQogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCAzNTE1MWJhNjZmM2IyYzRlZmEx
ZjY5ZjY2YzQyNTRjMjg0ZDRkNTBjLi5iYjU5NWZkYmZjMjA3ODY2Zjg5OGVkZjkxYWRjYjk5M2I3
MGQ3YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUlt
cGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNvbnN0IFZlY3RvcjxT
dHJpbgogICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHM7CiAgICAgICAgIGZvciAoYXV0
byYgYmxvYiA6IGJsb2JzRm9yV3JpdGluZykgewogICAgICAgICAgICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgICAgICAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkJsb2IiX3MsIGZpbGUpOworICAgICAgICAg
ICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJC
bG9iIiwgZmlsZSk7CiAgICAgICAgICAgICBpZiAoIXdyaXRlRmlsZVBhdGhzT3JEYXRhQnVmZmVy
c1RvRmlsZShibG9iLmZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMsIGZpbGUsIHRlbXBGaWxlUGF0aCkp
IHsKICAgICAgICAgICAgICAgICBmaWxlUGF0aHMuY2xlYXIoKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
CmluZGV4IGYyZTNlZGFkNTBlZGEyZmRlMGU1ZDU2N2FhZTMzNzNkYzU1ZGIwNTAuLjFlYjZkZWJh
ZmMyM2M0MmRkMTJlZDc2YTFmNmYxMDVmZTI5Y2VmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtODksMTEgKzg5LDYgQEAgU1FMaXRl
RGF0YWJhc2U6On5TUUxpdGVEYXRhYmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotY29uc3QgY2hh
ciogU1FMaXRlRGF0YWJhc2U6OmluTWVtb3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuICI6bWVtb3J5
OiI7Ci19Ci0KIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiB7CiAgICAgaW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5
KCk7CkBAIC00MjYsMTIgKzQyMSwxMiBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29t
bWFuZChBU0NJSUxpdGVyYWwgcXVlcnkpCiAgICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1l
bnQtPmV4ZWN1dGVDb21tYW5kKCk7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhp
c3RzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVF
eGlzdHMoU3RyaW5nVmlldyB0YWJsZU5hbWUpCiB7CiAgICAgcmV0dXJuICF0YWJsZVNRTCh0YWJs
ZU5hbWUpLmlzRW1wdHkoKTsKIH0KIAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwo
U3RyaW5nVmlldyB0YWJsZU5hbWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKQEAgLTQ0Myw3ICs0MzgsNyBAQCBTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxl
U1FMKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBzdGF0ZW1lbnQtPmNvbHVt
blRleHQoMCk7CiB9CiAKLVN0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCitTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OmluZGV4U1FMKFN0cmluZ1Zp
ZXcgaW5kZXhOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGQ0
MTRiOWE2Y2EzNjM2MWY3YjExNzExNzZhMWU5NGQ0MWNiOWU4M2IuLjkxNjAxMzQ4MTc1OTIxM2Fh
NTJkMTk4YTQ3ZTJlNWM0ZDZhOTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBTUUxpdGVEYXRhYmFzZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRh
YmFzZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGNoYXIqIGluTWVtb3J5
UGF0aCgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGluTWVtb3J5UGF0aCgp
IHsgcmV0dXJuICI6bWVtb3J5OiJfczsgfQogCiAgICAgZW51bSBjbGFzcyBPcGVuTW9kZSB7IFJl
YWRPbmx5LCBSZWFkV3JpdGUsIFJlYWRXcml0ZUNyZWF0ZSB9OwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSA9IE9wZW5Nb2RlOjpS
ZWFkV3JpdGVDcmVhdGUpOwpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwpOwogICAgIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgdGFibGVFeGlzdHMoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRhYmxlU1FMKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBpbmRleFNRTChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHRhYmxlRXhpc3RzKFN0cmluZ1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
YWJsZVNRTChTdHJpbmdWaWV3KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaW5kZXhTUUwo
U3RyaW5nVmlldyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRhYmxlcygpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDcyZDRhODc0OWEw
OGQwYTczODM0ODY0ZjZmNmYzOGRmNTQ5NDQ4MjMuLmVjMGQxY2VlNWJhMWEwODgwNTAwMGZmNzBk
NzQ2NDY1MDM2ZDc1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1FMaXRlRmlsZVN5c3RlbTo6U1FM
aXRlRmlsZVN5c3RlbSgpCiB7CiB9CiAKLVN0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmRE
YXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKK1N0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1l
VG9QYXRoKFN0cmluZ1ZpZXcgcGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSkKIHsKICAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsK
IH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxpdGVGaWxl
U3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJgogICAgIHJldHVy
biBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSk7CiB9CiAgICAgCi1T
dHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lKQorU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmls
ZU5hbWUoU3RyaW5nVmlldyBmaWxlTmFtZSkKIHsKICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1Nik7CiAgICAgYXV0byB1dGY4RmlsZU5hbWUgPSBmaWxlTmFtZS51dGY4KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCA2NGYxYTJj
MTJhOTExYWViMGFkYzU5ZWZiYmNlNTM5MDliOTU5NTZjLi41MzQyNzEwZjdiYmQyMTlhZDdiZGVm
MDc0ZDBkM2M2NDkyMzM2OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIC8vCiAgICAg
Ly8gcGF0aCAtIFRoZSBkaXJlY3RvcnkuCiAgICAgLy8gZmlsZU5hbWUgLSBUaGUgZmlsZSBuYW1l
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRGF0YWJhc2VGaWxlTmFt
ZVRvUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0
aChTdHJpbmdWaWV3IHBhdGgsIFN0cmluZ1ZpZXcgZmlsZU5hbWUpOwogCiAgICAgLy8gTWFrZXMg
c3VyZSB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGV4aXN0cywgYnkgY3JlYXRpbmcgYWxsIG1pc3Npbmcg
ZGlyZWN0b3JpZXMKICAgICAvLyBvbiB0aGUgZ2l2ZW4gcGF0aC4KQEAgLTgyLDcgKzgyLDcgQEAg
cHVibGljOgogCiAgICAgLy8gTW92ZXMgYSBkYXRhYmFzZSBmaWxlIHRvIGEgbmV3IHBsYWNlLgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIG1vdmVEYXRhYmFzZUZpbGUoY29uc3QgU3Ry
aW5nJiBvbGRGaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdGaWxlUGF0aCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUhh
c2hGb3JGaWxlTmFtZShTdHJpbmdWaWV3IGZpbGVQYXRoKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgLy8gVHJ1bmNhdGVzIGEgZGF0YWJhc2UgZmlsZS4gVXNlZCB3aGVuIE1vYmls
ZVNhZmFyaVNldHRpbmdzIGRlbGV0ZXMgYSBkYXRhYmFzZSBmaWxlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKaW5kZXggZDY0Y2NjMGI2MDE4YzdmZTc0NmU3YWNmZTYxMGZjZTRmOWIwNjVjNS4u
NmRiNjQ0MGNmOTZkOTJhYzJkN2Y1YmUxZDUyMjNhZTA1YTAxNzFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHIK
ICAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3Ry
aW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3Jl
YXRlZCh0cnVlLCByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLndha2VV
cFNlbWFwaG9yZSgpLCBleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpKTsKICAgICB9
IGVsc2UKLSAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpTZW1hcGhvcmUgeyB9LCAiIiwgIiIpKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRl
ZChmYWxzZSwgSVBDOjpTZW1hcGhvcmUgeyB9LCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygp
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZVVuaW5pdGlh
bGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCBjYzYxNTI0NzkzYzBmMTFjZmViOGQ0YTg0ZWNmYTlhZjRlNmUyYWE3
Li5mNmIzMjMwODc3ZTdlYjU2MTU0YWQwZWExZDE0M2RiZjFiNGNkYmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI1
MDMsNyArMjUwMyw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmlzQ29ycmVjdFN1YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpCiAgICAgcmV0dXJuIChzdWJG
cmFtZVVuZGVyVG9wRnJhbWVDb3VudC0+Y29sdW1uSW50KDApID09IDEgJiYgc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lQ291bnQtPmNvbHVtbkludCgwKSA9PSAxICYmIHN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8tPmNvbHVtbkludCgwKSA9PSAxKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5k
Qm9vbGVhbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29s
IGZsYWcpCitzdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IEFTQ0lJTGl0ZXJhbCBsYWJlbCwgYm9vbCBmbGFnKQogewogICAgIGJ1aWxkZXIuYXBwZW5kKCIg
ICAgIiwgbGFiZWwsICI6ICIsIGZsYWcgPyAiWWVzIiA6ICJObyIpOwogfQpAQCAtMjUzMSwzMSAr
MjUzMSwzMSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdl
dERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUFTQ0lJTGl0ZXJhbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKSBjb25zdAorQVND
SUlMaXRlcmFsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0
aXN0aWNTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSkgY29uc3QKIHsKLSAgICBpZiAo
dGFibGVOYW1lID09ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiKQorICAgIGlm
ICh0YWJsZU5hbWUgPT0gIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcykKICAg
ICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wTGV2ZWxEb21haW5JRCBmcm9tIFN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxl
TmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIpCisgICAgaWYgKHRhYmxlTmFtZSA9
PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1Qg
dG9Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc291cmNlRG9t
YWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tIl9zKQogICAgICAgICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb20gV0hFUkUgdGFyZ2V0RG9tYWluSUQgPSA/Il9zOwotICAgIGlm
ICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIpCisgICAgaWYgKHRh
YmxlTmFtZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIl9zKQogICAgICAgICByZXR1
cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20g
V0hFUkUgdG9Eb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1Qgc3VicmVz
b3VyY2VEb21haW5JRCBmcm9tIFRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMgV0hFUkUg
dG9wRnJhbWVEb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAiU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21h
aW5JRCBmcm9tIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVEb21h
aW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBm
cm9tIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21h
aW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbyIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbyJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9Eb21haW5JRCBmcm9tIFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci0g
ICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIikKKyAg
ICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MpCiAg
ICAgICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbSBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKICAgICAKICAg
ICByZXR1cm4gIiJfczsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Cit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIGNvbnN0IFN0
cmluZyYgZG9tYWluKSBjb25zdAogewogICAgIGF1dG8gcXVlcnkgPSBnZXRTdWJTdGF0aXN0aWNT
dGF0ZW1lbnQodGFibGVOYW1lKTsKICAgICAKQEAgLTI2MDMsNyArMjYwMyw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5n
QnVpbGRlciYgYnVpbGRlCiAgICAgYnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJhYmxlIGRvbWFpbjog
IiwgZG9tYWluLCAnXG4nKTsKICAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCi0gICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgbV9nZXRSZXNvdXJjZURh
dGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChIYWRVc2VySW50ZXJhY3Rpb25JbmRl
eCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiJfcywg
bV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChIYWRVc2Vy
SW50ZXJhY3Rpb25JbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7CiAgICAgaWYgKGhh
c0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21h
aW5OYW1lU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWVJbmRleCkpKSkKQEAgLTI2MTEsMzQgKzI2MTEsMzQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWls
ZGUKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItMSIpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQi
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEdyYW5k
ZmF0aGVyZWRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVy
ZWQiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQo
R3JhbmRmYXRoZXJlZEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAv
LyBTdG9yYWdlIGFjY2VzcwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3Vi
U3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5z
Il9zLCBkb21haW4pOwogCiAgICAgLy8gVG9wIGZyYW1lIHN0YXRzCi0gICAgYXBwZW5kU3ViU3Rh
dGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIsIGRvbWFpbik7
Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCIsIGRvbWFpbik7Ci0gICAgYXBw
ZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
IiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20iLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xp
c3QoYnVpbGRlciwgIlRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCBkb21haW4pOwor
ICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAi
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCJf
cywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGlj
TGlzdChidWlsZGVyLCAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIl9zLCBkb21haW4pOwor
ICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lTG9hZGVkVGhpcmRQ
YXJ0eVNjcmlwdHMiX3MsIGRvbWFpbik7CiAKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJJ
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIiwgbV9nZXRSZXNvdXJjZURhdGFC
eURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJJc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9t
YWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWxJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3Vi
ZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNM
aXN0KGJ1aWxkZXIsICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBkb21haW4pOwog
CiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1
aWxkZXIsICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgZG9tYWluKTsKLSAgICBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRp
c3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRv
bWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbyJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0
KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIGRvbWFpbik7CiAK
ICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJp
c1ByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1l
bnQtPmNvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWls
ZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNWZXJ5UHJldmFsZW50
UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1u
SW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAi
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1l
U3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKICAgICBidWlsZGVyLmFwcGVuZCgiICAgIGRhdGFSZWNvcmRzUmVtb3Zl
ZDogIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChE
YXRhUmVjb3Jkc1JlbW92ZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRl
eCA4MTFiYmY5NzBlYWM2ZmE3MGRhYTA5NzJiNTY5ZDVlOWY4MmYxOTA5Li5mMjJiZjFmNGIwNTkx
YzczOGEyZTI5YmNmODQ4YWEwYWI1MjFjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTM4LDggKzEzOCw4IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICB2b2lkIG9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpOwogICAgIFN0cmlu
ZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQpIGNvbnN0IGZpbmFsOwotICAg
IEFTQ0lJTGl0ZXJhbCBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29u
c3Q7Ci0gICAgdm9pZCBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBjb25z
dCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OworICAgIEFT
Q0lJTGl0ZXJhbCBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsKSBjb25zdDsK
KyAgICB2b2lkIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIEFTQ0lJTGl0
ZXJhbCB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdDsKICAgICB2b2lkIG1l
cmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2b2lkIG1l
cmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmKTsKICAgICB2b2lkIGNsZWFyRGF0YWJhc2VDb250ZW50cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA2YjkzMmRiYWQ0NDBiNTUxNTU4NDI3ZDQwZDZkMjJhZGQwZDMzYzA3
Li5lNGVhMDNjMTFiNmJiM2ZmZTNmODBkMmYzYjc4ZmI5YTM5OGM1NmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNzg5LDcgKzc4OSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pICYmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
KSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkK
LSAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwg
cGFnZUlELCBzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlz
KSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAj
ZW5kaWYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3Vs
dC5zZWNvbmQpOwpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uCiAj
aWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pICYmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAg
ICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKnRoaXMs
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00iLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBh
Z2VJRCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
bG9nQ29va2llSW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2V0Q29va2llc0Zyb21ET00iX3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRo
aXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0K
ICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggNmRiYjUyZGEyNTdlNzQwMzcyYzYyZGJkM2MwNDc3NmM2
MjdiOTU5NC4uNjc0Yjk4NTUzNTdjMTBjM2EzY2M4N2QwNjM3N2IxNzE3NjQwNjJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCkBAIC02MSwxMSArNjEsMTEgQEAgc3RhdGljIGNvbnN0IGludCBodHRwUGFydGlhbENvbnRl
bnQgPSAyMDY7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBOb3RBbGxvd2VkID0gNDAzOwogc3RhdGlj
IGNvbnN0IGludCBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSA9IDQxNjsKIHN0YXRp
YyBjb25zdCBpbnQgaHR0cEludGVybmFsRXJyb3IgPSA1MDA7Ci1zdGF0aWMgY29uc3QgY2hhciog
aHR0cE9LVGV4dCA9ICJPSyI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cFBhcnRpYWxDb250ZW50
VGV4dCA9ICJQYXJ0aWFsIENvbnRlbnQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBOb3RBbGxv
d2VkVGV4dCA9ICJOb3QgQWxsb3dlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cFJlcXVlc3Rl
ZFJhbmdlTm90U2F0aXNmaWFibGVUZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFi
bGUiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRlcm5h
bCBTZXJ2ZXIgRXJyb3IiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBPS1RleHQgPSAiT0si
X3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFBhcnRpYWxDb250ZW50VGV4dCA9ICJQYXJ0
aWFsIENvbnRlbnQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cE5vdEFsbG93ZWRUZXh0
ID0gIk5vdCBBbGxvd2VkIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBSZXF1ZXN0ZWRS
YW5nZU5vdFNhdGlzZmlhYmxlVGV4dCA9ICJSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxl
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBJbnRlcm5hbEVycm9yVGV4dCA9ICJJbnRl
cm5hbCBTZXJ2ZXIgRXJyb3IiX3M7CiAKIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3ZWJLaXRCbG9i
UmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIl9zOwogCkBAIC0yNTgsNyArMjU4
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZShFcnJvciBlcnJvckNvZGUpCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJXAgLSBOZXR3b3Jr
RGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgldSkiLCB0aGlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JDb2RlKSk7CiAKICAgICBSZWY8TmV0d29ya0RhdGFUYXNr
QmxvYj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShtX2ZpcnN0UmVxdWVzdC51cmwoKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gInRl
eHQvcGxhaW4iIDogZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX2Jsb2JEYXRhLT5jb250
ZW50VHlwZSgpKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxSZW1h
aW5pbmdTaXplLCBTdHJpbmcoKSk7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX2Zp
cnN0UmVxdWVzdC51cmwoKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gInRleHQvcGxh
aW4iX3MgOiBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fYmxvYkRhdGEtPmNvbnRlbnRU
eXBlKCkpLCBlcnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAwIDogbV90b3RhbFJlbWFpbmlu
Z1NpemUsIFN0cmluZygpKTsKICAgICBzd2l0Y2ggKGVycm9yQ29kZSkgewogICAgIGNhc2UgRXJy
b3I6Ok5vRXJyb3I6IHsKICAgICAgICAgYm9vbCBpc1JhbmdlUmVxdWVzdCA9IG1fcmFuZ2VPZmZz
ZXQgIT0ga1Bvc2l0aW9uTm90U3BlY2lmaWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4ZmI3YTQ4NDk5M2ZlY2RhYzQ0ZGMwMTEz
MjU4ZWEyMmFkZjI4ZGM5Li45MWQ5MGIwODhhZGE1MThmYzEzN2NmMWU5MDYzZTE4ZTI5MTNiYTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlUHVzaEFu
ZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIGNhbGxiYWNrKCJDYW5ub3QgZmluZCBuZXR3b3Jr
IHNlc3Npb24iKTsKKyAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBzZXNzaW9uIl9z
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYg
Y2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzJhMDZkNDk0NjNkMzg4Y2U2MmUzNmE4NmJiOGE4
NDBhNmFhYjkxMi4uNTdjMWIxYjY5M2Q3MTViZTEyZWFkNmM2ZmQ1OTY1MTI5N2MzMjE1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtMTU5NCwxMCArMTU5NCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7CiAKLSAg
ICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNp
dGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCks
IGNvcmVJZGVudGlmaWVyKCkpOworICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlv
biwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0
UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgp
KSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJl
cigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb3JlSWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGlj
IHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dn
ZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3Rk
OjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXI+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3Jt
YXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEFTQ0lJTGl0
ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0x
NjA4LDcgKzE2MDgsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogICAgIGF1dG8gZXNjYXBl
ZElkZW50aWZpZXIgPSBlc2NhcGVJREZvckpTT04oaWRlbnRpZmllcik7CiAgICAgYXV0byBlc2Nh
cGVkUmVmZXJyZXIgPSBlc2NhcGVGb3JKU09OKHJlZmVycmVyKTsKIAotI2RlZmluZSBMT0NBTF9M
T0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNz
aW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAg
LSAlczo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgTE9DQUxfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6OiIgZm10LCBsb2dnZWRPYmplY3QsIGxhYmVsLmNo
YXJhY3RlcnMoKSwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgTE9DQUxfTE9HKHN0ciwgLi4uKSBc
CiAgICAgTE9DQUxfTE9HX0lGX0FMTE9XRUQoImxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBCTE9DS0VE
IGNvb2tpZSBhY2Nlc3MgZm9yIHdlYlBhZ2VJRD0lcywgZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0l
cywgZmlyc3RQYXJ0eT0lczogIiBzdHIsIGVzY2FwZWRQYWdlSUQudXRmOCgpLmRhdGEoKSwgZXNj
YXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZElkZW50aWZpZXIudXRmOCgpLmRhdGEo
KSwgZXNjYXBlZEZpcnN0UGFydHkudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAt
MTYyNCw3ICsxNjI0LDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW8KICN1bmRlZiBMT0NBTF9M
T0dfSUZfQUxMT1dFRAogfQogCi1zdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVy
bmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIp
CitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9u
LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTY0MCw3ICsxNjQw
LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICAgICBhdXRvIGVzY2FwZWRJZGVudGlmaWVy
ID0gZXNjYXBlSURGb3JKU09OKGlkZW50aWZpZXIpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
cyA9IChmcmFtZUlEICYmIHBhZ2VJRCkgPyBuZXR3b3JrU3RvcmFnZVNlc3Npb24uaGFzU3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkgfSwgZnJhbWVJRC52YWx1ZSgpLCBwYWdlSUQudmFs
dWUoKSkgOiBmYWxzZTsKIAotI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVj
dCwgbGFiZWwudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTE9DQUxfTE9H
X0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0g
JXM6OiIgZm10LCBsb2dnZWRPYmplY3QsIGxhYmVsLmNoYXJhY3RlcnMoKSwgIyNfX1ZBX0FSR1Nf
XykKICNkZWZpbmUgTE9DQUxfTE9HKHN0ciwgLi4uKSBcCiAgICAgTE9DQUxfTE9HX0lGX0FMTE9X
RUQoImxvZ0Nvb2tpZUluZm9ybWF0aW9uOiB3ZWJQYWdlSUQ9JXMsIGZyYW1lSUQ9JXMsIHJlc291
cmNlSUQ9JXM6ICIgc3RyLCBlc2NhcGVkUGFnZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRGcmFt
ZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksICMjX19W
QV9BUkdTX18pCiAKQEAgLTE2ODUsNyArMTY4NSw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
CiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmpl
Y3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGlkZW50
aWZpZXIpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vz
c2lvbklEKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNjVjZWM5Y2QzYzI0ZDRiYzdlMzQwZDc5ZGE1ZGNk
ODJmZDY2MTg0NC4uMmZiOWZhZDQ1NWEzOWIyMDExNzY3YmVlMzc3MTcwYzM1NzY0Y2JmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOVEVMTElH
RU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0
YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBBU0NJSUxpdGVyYWwgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4pOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
Y3BwCmluZGV4IGQ2YmMwOTAxMjAzMzFmODMwNjBiY2RhNjE0ZDkzMmFhNTlhMjFjYTAuLmVmMThi
MjdmYjUzZWJiNWY2ODA5NjI1MzRjYWE4YmIxZTJjYzNhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcApAQCAtNDg5LDE0ICs0ODksMTUgQEAgdm9pZCBEYXRhYmFzZTo6Y2xlYXJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG8KICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8vIERlZmF1bHQgdG8gY2xlYXIgYWxs
IGVudHJpZXMgaWYgbm8gZG9tYWluIGlzIHNwZWNpZmllZC4KLSAgICBTdHJpbmcgYmluZFBhcmFt
ZXRlciA9ICIlIjsKKyAgICBTdHJpbmcgYmluZFBhcmFtZXRlcjsKICAgICBpZiAoZG9tYWluKSB7
CiAgICAgICAgIGF1dG8gZG9tYWluSURUb01hdGNoID0gZG9tYWluSUQoKmRvbWFpbik7CiAgICAg
ICAgIGlmICghZG9tYWluSURUb01hdGNoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGJpbmRQYXJhbWV0ZXIgPSBTdHJpbmc6Om51bWJlcigqZG9tYWluSURUb01hdGNoKTsKLSAgICB9
CisgICAgfSBlbHNlCisgICAgICAgIGJpbmRQYXJhbWV0ZXIgPSAiJSJfczsKIAogICAgIGF1dG8g
dHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwogCkBAIC03
MTIsMTcgKzcxMywxNyBAQCB2b2lkIERhdGFiYXNlOjpkZXN0cm95U3RhdGVtZW50cygpCiAKIHZv
aWQgRGF0YWJhc2U6OmFkZERlc3RpbmF0aW9uVG9rZW5Db2x1bW5zSWZOZWNlc3NhcnkoKQogewot
ICAgIFN0cmluZyBhdHRyaWJ1dGVkVGFibGVOYW1lKCJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQiX3MpOworICAgIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgYXR0cmlidXRlZFRhYmxl
TmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7CiAgICAgU3RyaW5n
IGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKCJkZXN0aW5hdGlvbktleUlEIl9zKTsKICAgICBh
dXRvIGNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSk7CiAgICAg
aWYgKCFjb2x1bW5zLnNpemUoKSB8fCBjb2x1bW5zLmxhc3QoKSAhPSBkZXN0aW5hdGlvbktleUlE
Q29sdW1uTmFtZSkgewogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVk
VGFibGVOYW1lLCAiZGVzdGluYXRpb25Ub2tlbiBURVhUIl9zKTsKICAgICAgICAgYWRkTWlzc2lu
Z0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRlc3RpbmF0aW9uU2lnbmF0dXJl
IFRFWFQiX3MpOwotICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVkVGFi
bGVOYW1lLCAiZGVzdGluYXRpb25LZXlJRCBURVhUIik7CisgICAgICAgIGFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvbktleUlEIFRFWFQiX3Mp
OwogICAgIH0KIH0KIAotVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNGb3JUYWJsZShj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpjb2x1bW5z
Rm9yVGFibGUoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9
IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiUFJBR01BIHRhYmxl
X2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKIApAQCAtNzQxLDcgKzc0Miw3IEBAIFZlY3RvcjxT
dHJpbmc+IERhdGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUp
CiAgICAgcmV0dXJuIGNvbHVtbnM7CiB9CiAKLXZvaWQgRGF0YWJhc2U6OmFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbHVtbk5h
bWUpCit2b2lkIERhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShBU0NJSUxpdGVyYWwg
dGFibGVOYW1lLCBBU0NJSUxpdGVyYWwgY29sdW1uTmFtZSkKIHsKICAgICBhdXRvIHN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIgVEFC
TEUgIiwgdGFibGVOYW1lLCAiIEFERCBDT0xVTU4gIiwgY29sdW1uTmFtZSkpOwogICAgIGlmICgh
c3RhdGVtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCmluZGV4IDJmYjdkMjU2OWVkMzhhNTgyMzhh
MjgwMGVlMjQ4YjU3ZjRlNmQ3ZmUuLmU3MWQ0MGJkNDk4NTllYmMzZWFhMzM4Y2Q1ZWI4YjA1MmNi
Y2NkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCkBAIC04Miw4ICs4Miw4IEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywg
VGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkgZmluYWw7
CiAgICAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNvcnRlZFRhYmxlcygpIGZpbmFsOwogCi0g
ICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lLCBjb25zdCBTdHJpbmcmIGNvbHVtbk5hbWUpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVt
bnNGb3JUYWJsZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKTsKKyAgICB2b2lkIGFkZE1pc3NpbmdD
b2x1bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJTGl0ZXJhbCBjb2x1bW5O
YW1lKTsKIAogICAgIHVzaW5nIFN0YXRlbWVudCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1fc2V0VW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ci5jcHAKaW5kZXggMmE4MmExMTVhMWI5YmFkNThiYTg2OGU1NWU1NzdjZjlmNTczZDE0NS4uZTJi
NjM3YmQ5NjgxNzI4Y2UxYmFhN2U3MDMzZTFiZjQ2Mzg3ZWNhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbihTb3VyCiAKICAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFu
ZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oKnNpZ25hdHVyZUJhc2U2NFVSTCwgKmF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4pOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IHJl
c3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5lcnJvcigpOworICAg
ICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgp
ID8gIlVua25vd24iX3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJy
b3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oKTogJyV7cHVibGljfXMi
LCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQt
PmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmco
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2FnZSkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSYmCiAKICAgICAgICAgICAgIGlmIChwdWJsaWNLZXlCYXNlNjRVUkwuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IlRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7Ci0gICAgICAgICAgICAgICAgbV9jbGll
bnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gVGhlIHB1YmxpYyBrZXkgVVJMIHdhcyBlbXB0eS4iKTsKKyAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxl
dmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUaGUgcHVibGljIGtleSBV
Ukwgd2FzIGVtcHR5LiJfcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJgogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
YXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biIg
OiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IHJl
c3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIl9zIDogcmVzdWx0LmVycm9yKCk7CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9u
VW5saW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDNhYWEzYzQ4MGU1ZjZh
OTUzMGRmOGQ4Y2NlYmEyZTU3OWUwMDI4MTAuLmUwOWQyZTlmMzZjYWIyNWMxNzU0MWM4NzQ5NmZm
MjliOTFhMDUzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6fkxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcigpCiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKSBjb25zdAogewotICAgIHJldHVybiBkYXRhYmFzZVBhdGgoc2VjdXJpdHlPcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkgKyAiLmxvY2Fsc3RvcmFnZSIpOworICAgIHJldHVybiBkYXRhYmFz
ZVBhdGgobWFrZVN0cmluZyhzZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSwgIi5s
b2NhbHN0b3JhZ2UiKSk7CiB9CiAKIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpk
aWRPcGVuRGF0YWJhc2VXaXRoT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4pCkBAIC0xMjksNyArMTI5LDcgQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKICAg
ICB9KTsKIH0KIAotU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQ
YXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0CitTdHJpbmcgTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoU3RyaW5nVmlldyBmaWxlbmFtZSkgY29uc3QKIHsK
ICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPmxvY2FsU3RvcmFnZURpcmVj
dG9yeSgpOwogICAgIGlmICghU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3Rv
cnlFeGlzdHMobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IDViYzEzZWMzNmY1ZDJhOTZmYzYxZTcwMjJjMWM4YTFl
NWM3OTFhNGIuLjZkNmEwNWM4OWE3NTE2MzlmNTJiODUwYjE5NmUzMTVmYjY4MGI2MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5n
JiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSkgY29uc3Q7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aChTdHJp
bmdWaWV3IGZpbGVuYW1lKSBjb25zdDsKICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3Q7CiAKICAgICBlbnVtIERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggYzIzNDlhMDgyYjU2OGRlYmUzZmE1NmQzNThkNTVkZDlj
Njg4ZjYyNC4uZjRlNjFkNjA1MmIzNmQ3NDg0OWJiZTY2YWMyMjBmNmY0YThlMDMyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9i
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTEyMyw4ICsxMjMsNyBAQCBCbG9iU3RvcmFnZTo6
QmxvYiBCbG9iU3RvcmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAgYXV0byBkYXRhID0gbWFwRmlsZShs
aW5rUGF0aC5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUocGF0aCk7CiAKICAgICBy
ZXR1cm4geyBkYXRhLCBjb21wdXRlU0hBMShkYXRhLCBtX3NhbHQpIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNw
cAppbmRleCBhZWUxMDJiZWM1MWJiMzQ2OTAyM2ZhNzc5NWE4MjI3NDgxMzJmMjY2Li5hOTE2OThk
NWRjNDJkODZjMjk3NzI3MGI3NGZlM2IxODVjNWU1YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25z
dAogICAgIHJldHVybiBEYXRhOjphZG9wdE1hcChXVEZNb3ZlKG1hcHBlZEZpbGUpLCBoYW5kbGUp
OwogfQogCi1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCkKK0RhdGEgbWFwRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCkBAIC02NCwxMSArNjQsNiBAQCBEYXRhIG1hcEZpbGUo
Y29uc3QgY2hhciogcGF0aCkKICAgICByZXR1cm4gYWRvcHRBbmRNYXBGaWxlKGZpbGUsIDAsICpz
aXplKTsKIH0KIAotRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gbWFwRmlsZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpKTsKLX0KLQogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFz
aXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5oCmluZGV4IDMyODMyOTc2NzhjMTU0ZWU0OTA3ZDMxNDkzY2JmN2Y4ZjAw
M2NiYzAuLjEyNDkyNTllNGIwNTI2OTQ1YmM1NDVmMmY2NGExNDI3YjVlNTYwMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5oCkBAIC0xMTEsNyArMTExLDYgQEAgcHJpdmF0ZToKIERhdGEgY29uY2F0ZW5hdGUoY29uc3Qg
RGF0YSYsIGNvbnN0IERhdGEmKTsKIGJvb2wgYnl0ZXNFcXVhbChjb25zdCBEYXRhJiwgY29uc3Qg
RGF0YSYpOwogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwotRGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBh
dGgpOwogRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKIHVzaW5nIFNhbHQgPSBG
aWxlU3lzdGVtOjpTYWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQpp
bmRleCA0MzIyZTQ0ZThlYTA2M2MzZGFhOGUyYzZkZTdhNWEwODVmNWE4MWU4Li40MmY4ODgyNTA0
NzZiZWQ3MzI0YjY3MjNiMzc0OTJmOGY1NWZkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlci5tbQpAQCAtMTQyLDggKzE0Miw4IEBAIHZvaWQgTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24s
IHhwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHhwY19nZXRfdHlwZShldmVudCkg
PT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4cGNNZXNzYWdlTmFtZUtleSk7Ci0gICAg
ICAgIGlmIChtZXNzYWdlTmFtZSAhPSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRz
Ojp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lKQorICAg
ICAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQs
IHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2Fn
ZU5hbWUgIT0gbWVzc2FnZU5hbWUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHN0YXJ0
T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCmluZGV4IDEw
ZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBhNDRlNDEuLmQyOTFhMDllOWVmMzE1ZmI0
Y2MwOWIzN2Q5NTg5Zjk3NGZiMzFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcApAQCAtMTI4LDcg
KzEyOCw3IEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3Nhcnko
KQogICAgIGlmICghbV9kYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3Ry
aW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlU1FMKCJJdGVtVGFibGUiX3MpOworICAg
IFN0cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIik7CiAg
ICAgaWYgKHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQgfHwgc3RhdGVtZW50
ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudEFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5k
aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAKaW5k
ZXggMGJlMzk1YzFjMzdjMmZlN2NiM2NjM2E1YjQ5NTYyYWZjNzM5ZTY0YS4uZTU5MmFhMDFjNmM0
MTE0ZWQwYzc4NTMzYzA5ZWRhNGYxMWI3YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBiCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImJvb2wiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwg
ImJvb2wiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUo
KSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInZhbHVlIl9zKSwgSlNDOjpqc0Jvb2xlYW4odmFsdWUpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CkBAIC05OSw2NyArOTksNjcgQEAgSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGIKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImRvdWJsZSIpOworICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJk
b3VibGUiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29k
ZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZmxvYXQg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFs
dWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Il9z
KTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1l
bnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDhfdCB2YWx1ZSkK
IHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIHZhbHVlLCAiaW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
TnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDhfdCJfcyk7CiB9
CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQxNl90IHZhbHVlKQogewot
ICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9i
amVjdCwgdmFsdWUsICJpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVt
ZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDE2X3QiX3MpOwogfQog
CiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmpl
Y3QsIHZhbHVlLCAiaW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQzMl90Il9zKTsKIH0KIAog
dGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgImludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50NjRfdCJfcyk7CiB9CiAKIHRl
bXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50OF90IHZhbHVlKQogewotICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJ1aW50OF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ4X3QiX3MpOwogfQogCiB0ZW1w
bGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDE2X3QgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgInVpbnQxNl90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQxNl90Il9zKTsKIH0KIAogdGVt
cGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQzMl90IHZhbHVlKQogewotICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJ1aW50MzJfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNB
cmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MzJfdCJfcyk7CiB9CiAKIHRl
bXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCAidWludDY0X3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDY0X3QiX3MpOwogfQogCiB0
ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IHZhbHVlKQogewotICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJzaXplX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJn
dW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAic2l6ZV90Il9zKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgUmVjdFR5cGU+CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjbwogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6Oklu
dFJlY3QmJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJl
Y3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3QiX3MpOwog
fQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGds
b2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkZsb2F0UmVjdCJfcyk7CiB9
CiAKIGJvb2wgcHV0SlNWYWx1ZUZvckRlY29kZWRBcmd1bWVudEF0SW5kZXhPckFycmF5QnVmZmVy
SWZVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTQXJy
YXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0
dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgppbmRleCA5ZDJiYzdh
MjI2MjkyOTZjNzQxNmRjYjUwMDIzOGJlZjRmZjI5YjVlLi44MzBlYmFiOGU4NjIxODBlYjAzMGE2
NTM5NjYyNmY0Mzg5MTBjMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAu
ZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKQEAgLTQxLDcgKzQxLDcgQEAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhwZXJp
bWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkV4cGVyaW1lbnRhbEZl
YXR1cmU6OmNyZWF0ZSg8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sICI8JT0gQHByZWYu
bmFtZSAlPiIsIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4sIERFRkFVTFRf
VkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKKyAgICAg
ICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVmLmh1
bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nIHsgPCU9
IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZPUl88
JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHByZWYuY29u
ZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmVzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgppbmRleCA4
NDljZjZmN2E4ODU3M2RmMjc5ZjNhZWQyNTExMDUwNWY3YjZjMzQ2Li5lNTY3ZjQ1YjFlNDQ1MTZi
NTJiMDM2NTBiYjlmMmU5NjRiODQ5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVy
ZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgpAQCAtNDAsNyAr
NDAsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlByZWZlcmVuY2Vz
OjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNp
ZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkludGVy
bmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCAi
PCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+
LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAl
PiksCisgICAgICAgIEFQSTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6OmNyZWF0ZShTdHJpbmcgeyA8
JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gfSwgIjwlPSBAcHJlZi5uYW1lICU+Il9zLCBT
dHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IH0sIERFRkFVTFRf
VkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKIDwlLSBp
ZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4
IDVjNjMxZWRkYzk2N2NjZThhMTEwYmM0MGQyNzY5ZTJjZjkzNWQ2NDYuLmE2ZTI1Y2M0MDM0Njdh
NTAzZThlZWMxMDdhOGY3ZTQ3ZjgxYzM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC00Miw5ICs0Miw5IEBA
CiAjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNsYXNzTmFtZUtleSA9ICIk
Y2xhc3MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9iamVjdFN0cmVhbUtleSA9ICIkb2Jq
ZWN0U3RyZWFtIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdLZXkgPSAiJHN0cmlu
ZyI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gY2xhc3NOYW1lS2V5ID0gIiRjbGFzcyJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBvYmplY3RTdHJlYW1LZXkgPSAiJG9iamVjdFN0cmVhbSJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBzdHJpbmdLZXkgPSAiJHN0cmluZyJfczsKIAogc3RhdGlj
IE5TU3RyaW5nICogY29uc3Qgc2VsZWN0b3JLZXkgPSBAInNlbGVjdG9yIjsKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHR5cGVTdHJpbmdLZXkgPSBAInR5cGVTdHJpbmciOwpAQCAtNDQwLDcgKzQ0
MCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKmVu
Y29kZXIsIGlkIG9iamVjdCkKICAgICAgICAgZW5jb2Rlci0+X29iamVjdHNCZWluZ0VuY29kZWQu
cmVtb3ZlKG9iamVjdCk7CiAgICAgfSk7CiAKLSAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25h
cnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoY2xhc3NfZ2V0TmFtZShv
YmplY3RDbGFzcykpKTsKKyAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNldChjbGFz
c05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgY2xhc3NfZ2V0TmFtZShvYmpl
Y3RDbGFzcykgfSkpOwogCiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNJbnZvY2F0
aW9uIGNsYXNzXV0pIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBzcGVjaWFsIGNhc2UgTlNJbnZv
Y2F0aW9uIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gZW5jb2RlIHRoZSB0YXJnZXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KaW5kZXggYjk4OTY2ZWNhZDQxYjQ4ZWVjZDI1ODIyYjRjM2MxZTZkOThhMDg3ZS4u
N2Q4ODU2MjI4NDhlZjdmNzlhNGRmMWQzM2NkNjA3YTdmMmUxNDU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKHZvaWQpX3NlbmRJbnZvY2F0aW9uOihOU0ludm9j
YXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50CiAgICAgICAg
IGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVw
bHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkKICAgICAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJSZXR1
cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcuICglcykiLCBzZWxfZ2V0
TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVwbHlJbmZvID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVS
ZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CisgICAgICAgIHJlcGx5SW5m
byA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+
KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmluZyB7IHJlcGx5QmxvY2tTaWduYXR1cmUg
fSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRy
eSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9j
b2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWdu
YXR1cmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmcuVVRGOFN0cmluZzsKKyAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBf
c2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7
CiB9CiAKIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0aW9uCkBAIC0yNzAsNyArMjcwLDcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2ln
bmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRh
KCldLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWdu
YXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUlu
Zm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwogICAgICAgICBT
dHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVy
ZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCiAgICAgICAgIGlmIChl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzLmgKaW5kZXggMWJlMmE4MDA3YzI3NzY3YmY5YTU4YTlkMmI5ODdlNTY3NGRmY2EzOS4uMjgz
MmE5OTE2ZGZiMzg3M2U3Njc4MzIzY2Y5NzVjY2JhNTViNDU3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHMuaApAQCAtMjUsMTUgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cyB7CiAKLWNvbnN0ZXhw
ciBhdXRvIHhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9ICJ1cGRh
dGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3NhZ2UiOwotY29uc3RleHByIGF1dG8geHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiOwot
Y29uc3RleHByIGF1dG8geHBjUmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNz
YWdlTmFtZSA9ICJyZXF1ZXN0LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS11cGRhdGUtbWVzc2Fn
ZSI7Ci1jb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRO
YW1lS2V5ID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiOwotY29uc3Rl
eHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUg
PSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0
ZXhwciBhdXRvIHhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9ICJ1
cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3NhZ2UiX3M7Citjb25zdGV4cHIgYXV0
byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5ID0gImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFz
ZSJfczsKK2NvbnN0ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBk
YXRlTWVzc2FnZU5hbWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRl
LW1lc3NhZ2UiX3M7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBD
RW5kcG9pbnROYW1lS2V5ID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2Ui
X3M7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRN
ZXNzYWdlTmFtZSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3Nh
Z2UiX3M7CiB9IC8vIG5hbWVzcGFjZSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRz
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDViYTkyYmI4MjM5ZjI4MDliMDE4
NGM0ZGY3MzA5OTljNDMwZjRkNDUuLmYxYmZjZjg3YjM3NDA1YmI5NjY4MTRmOGMxNjQzYmI2Mjdh
NDY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0
ZW5zaW9uQ29jb2EubW0KQEAgLTE4NSwyNyArMTg1LDI3IEBAIFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFuZGxlJiYgaGFuZGxlKQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2FuZGJveEV4dGVuc2lvbihoYW5kbGUpKTsKIH0KIAotU3RyaW5nIHN0
cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5n
IHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoU3RyaW5nVmlldyBwYXRoKQogewogICAg
IGNoYXIgcmVzb2x2ZWRQYXRoW1BBVEhfTUFYXSA9IHsgMCB9OwogICAgIHJlYWxwYXRoKHBhdGgu
dXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRQYXRoKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChyZXNvbHZlZFBhdGgpOwogfQogCi1TdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURp
cmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmlu
Z1ZpZXcgcGF0aCkKIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBOU1N0cmluZyAq
bnNQYXRoID0gcGF0aDsKKyAgICBhdXRvIG5zUGF0aCA9IHBhdGguY3JlYXRlTlNTdHJpbmdXaXRo
b3V0Q29weWluZygpOwogCi0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpuc1BhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdKSB7Ci0gICAgICAgIE5TTG9nKEAiY291
bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlQFwiIGZvciBmdXR1cmUgc2FuZGJveCBleHRlbnNp
b24sIGVycm9yICVAIiwgbnNQYXRoLCBlcnJvcik7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpuc1BhdGguZ2V0KCkgd2l0aElu
dGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdKSB7
CisgICAgICAgIE5TTG9nKEAiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlQFwiIGZvciBm
dXR1cmUgc2FuZGJveCBleHRlbnNpb24sIGVycm9yICVAIiwgbnNQYXRoLmdldCgpLCBlcnJvcik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbihwYXRoKTsKIH0KIAotU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJv
eEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCitTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5k
Ym94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkKIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRo
ID0gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChwYXRoKTsKICAgICBpZiAocmVzb2x2
ZWRQYXRoLmlzTnVsbCgpKSB7CkBAIC0yMTYsNyArMjE2LDcgQEAgU3RyaW5nIHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHJlc29s
dmVkUGF0aDsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRp
b25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRS
ZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4KIHsKICAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbik7CkBAIC0yMjksNyArMjI5LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5
cGUKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShTdHJp
bmdWaWV3IHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAg
cmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29sdmVQYXRoRm9yU2Fu
ZGJveEV4dGVuc2lvbihwYXRoKSwgdHlwZSk7CiB9CkBAIC0yNTksNyArMjU5LDcgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVy
YWwgbG9nTGFiZWwsIGNvbnMKICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKSAtPiBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KFN0cmluZ1ZpZXcgcGF0aCkgLT4gc3RkOjpvcHRpb25hbDxI
YW5kbGU+CiB7CiAgICAgU3RyaW5nIHJlc29sdmVkUGF0aCA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpOwogICAgIGlmIChyZXNvbHZl
ZFBhdGguaXNOdWxsKCkpCkBAIC0yNjcsNyArMjY3LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKSAt
PgogICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBh
dGgsIFR5cGU6OlJlYWRXcml0ZSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlKSAt
PiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+CithdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgs
IFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+Pgog
ewogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uKTsKQEAgLTI4NCwxMSArMjg0LDEyIEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0CiAgICAg
aWYgKHBhdGgubGFzdCgpICE9ICcvJykKICAgICAgICAgcGF0aC5hcHBlbmQoJy8nKTsKICAgICAK
LSAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFtZS4gICAgCi0gICAgcGF0aC5hcHBlbmQocHJlZml4
LnV0ZjgoKS5kYXRhKCksIHByZWZpeC5sZW5ndGgoKSk7CisgICAgLy8gQXBwZW5kIHRoZSBmaWxl
IG5hbWUuCisgICAgYXV0byBwcmVmaXhBc1VURjggPSBwcmVmaXgudXRmOCgpOworICAgIHBhdGgu
YXBwZW5kKHByZWZpeEFzVVRGOC5kYXRhKCksIHByZWZpeEFzVVRGOC5sZW5ndGgoKSk7CiAgICAg
cGF0aC5hcHBlbmQoJ1wwJyk7CiAgICAgCi0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOworICAgIGhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmc6OmZyb21VVEY4KHBhdGguZGF0YSgpKSkuZGF0
YSgpLCB0eXBlKTsKIAogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAg
ICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBm
b3IgdGVtcG9yYXJ5IGZpbGUgJyVzJyIsIHBhdGguZGF0YSgpKTsKQEAgLTMzOSw3ICszNDAsNyBA
QCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBUwogICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4oKSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0
VG9rZW4sIGZsYWdzKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRp
dFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihTdHJpbmdWaWV3IHBhdGgsIGF1ZGl0X3Rv
a2VuX3QgYXVkaXRUb2tlbikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxl
IGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1t
CmluZGV4IGEzZGI0YWY0YzEyM2I2ZTZhOTFlYTFlY2RjMTNkYjgyYTFiYzhiMjQuLjljM2VjNDA5
NWE5NDcyNzFmZDEwMjE3N2I4YjA1YjBmNzc4YjlmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNl
RW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTcyLDEzICs3
MiwxMyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDb25uZWN0aW9u
SWRlbnRpZmllcihJUEM6OkNvbm5lY3Rpb246OklkZQogCiBib29sIFhQQ1NlcnZpY2VJbml0aWFs
aXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50SWRlbnRpZmll
cikKIHsKLSAgICBjbGllbnRJZGVudGlmaWVyID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyht
X2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1pZGVudGlmaWVyIik7CisgICAgY2xpZW50SWRl
bnRpZmllciA9IFN0cmluZyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXpl
ck1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIpIH07CiAgICAgcmV0dXJuICFjbGllbnRJZGVu
dGlmaWVyLmlzRW1wdHkoKTsKIH0KIAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0
ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcihTdHJpbmcmIGNsaWVudEJ1bmRsZUlkZW50aWZp
ZXIpCiB7Ci0gICAgY2xpZW50QnVuZGxlSWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtYnVuZGxlLWlkZW50aWZpZXIiKTsK
KyAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRlbnRpZmllciIp
IH07CiAgICAgcmV0dXJuICFjbGllbnRCdW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKTsKIH0KIApA
QCAtMTExLDcgKzExMSw3IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dFByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmCiAKIGJvb2wgWFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xp
ZW50UHJvY2Vzc05hbWUpCiB7Ci0gICAgY2xpZW50UHJvY2Vzc05hbWUgPSB4cGNfZGljdGlvbmFy
eV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1lIik7Cisg
ICAgY2xpZW50UHJvY2Vzc05hbWUgPSBTdHJpbmcgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1lIikgfTsKICAgICByZXR1cm4g
IWNsaWVudFByb2Nlc3NOYW1lLmlzRW1wdHkoKTsKIH0KIApAQCAtMTE5LDMwICsxMTksMzAgQEAg
Ym9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlv
bkRhdGEoSGFzaE1hcDxTdHJpbmcsIFMKIHsKICAgICB4cGNfb2JqZWN0X3QgZXh0cmFEYXRhSW5p
dGlhbGl6YXRpb25EYXRhT2JqZWN0ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1faW5pdGlh
bGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5pdGlhbGl6YXRpb24tZGF0YSIpOwogCi0gICAgU3RyaW5n
IGluc3BlY3RvclByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUlu
aXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIik7CisgICAgU3RyaW5n
IGluc3BlY3RvclByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUlu
aXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIikgfTsKICAgICBpZiAo
IWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoImluc3BlY3Rvci1wcm9jZXNzIl9zLCBpbnNwZWN0b3JQcm9jZXNzKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBTdHJpbmcgc2VydmljZVdvcmtlclByb2Nlc3Mg
PSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9i
amVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKTsKKyAgICBTdHJpbmcgc2VydmljZVdvcmtl
clByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSB9OwogICAgIGlmICghc2Vy
dmljZVdvcmtlclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsIFdURk1vdmUoc2VydmljZVdvcmtl
clByb2Nlc3MpKTsKLSAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4gPSB4cGNfZGljdGlvbmFy
eV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInJlZ2lzdHJh
YmxlLWRvbWFpbiIpOworICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAicmVnaXN0
cmFibGUtZG9tYWluIikgfTsKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkK
ICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4i
X3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKTsKICNlbmRpZgogCi0gICAgU3RyaW5nIGlz
UHJld2FybWVkUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5p
dGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJld2FybWVkIik7CisgICAgU3RyaW5nIGlzUHJl
d2FybWVkUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlh
bGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJld2FybWVkIikgfTsKICAgICBpZiAoIWlzUHJld2Fy
bWVkUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFk
ZCgiaXMtcHJld2FybWVkIl9zLCBpc1ByZXdhcm1lZFByb2Nlc3MpOwogCiAgICAgaWYgKCFpc0Ns
aWVudFNhbmRib3hlZCgpKSB7Ci0gICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3VmZml4ID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmpl
Y3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKKyAgICAgICAgU3RyaW5nIHVzZXJEaXJlY3Rv
cnlTdWZmaXggeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpIH07CiAgICAgICAgIGlmICgh
dXNlckRpcmVjdG9yeVN1ZmZpeC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBleHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1
ZmZpeCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRh
T2JqZWN0LCAiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpOworICAgIFN0cmlu
ZyBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3Ry
aW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImFsd2F5cy1ydW5zLWF0LWJh
Y2tncm91bmQtcHJpb3JpdHkiKSB9OwogICAgIGlmICghYWx3YXlzUnVuc0F0QmFja2dyb3VuZFBy
aW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJh
bHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCBhbHdheXNSdW5zQXRCYWNrZ3Jv
dW5kUHJpb3JpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0KaW5kZXggZDg2MGU3YzdhYjA2MDE2ZmRmMTA3YzRjZjFkZGE1YzM3ZjMzMmZi
MS4uMTA4Y2IwOGFhYjhlNmU1MTg1YWE1MWFiYjBiNmRmMmI1MzQ0MTM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMjAzLDcgKzIw
Myw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9u
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5k
bGVWZXJzaW9uIik7CisgICAgICAgIFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9uIHsgeHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9u
IikgfTsKICAgICAgICAgU3RyaW5nIGV4cGVjdGVkQnVuZGxlVmVyc2lvbiA9IFtOU0J1bmRsZSBi
dW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXS5pbmZvRGljdGlvbmFyeVso
X19icmlkZ2UgTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsKICAgICAgICAgaWYgKCF3
ZWJLaXRCdW5kbGVWZXJzaW9uLmlzTnVsbCgpICYmICFleHBlY3RlZEJ1bmRsZVZlcnNpb24uaXNO
dWxsKCkgJiYgd2ViS2l0QnVuZGxlVmVyc2lvbiAhPSBleHBlY3RlZEJ1bmRsZVZlcnNpb24pIHsK
ICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiV2ViS2l0IGZyYW1l
d29yayB2ZXJzaW9uIG1pc21hdGNoOiAiLCB3ZWJLaXRCdW5kbGVWZXJzaW9uLCAiICE9ICIsIGV4
cGVjdGVkQnVuZGxlVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCAw
ZDU3NGIwY2M1MDM0MTMzMjE3ZmUzOWYwYjA0MGI1NzlkMmZjMWMwLi44YTk5NjExNjgzMzkzYWU3
OTcwYmY5NTllNTJlYmM5MmI2NWVmZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgV0tNZXNzYWdlVGVz
dERyaXZlckZ1bmMgbWVzc2FnZVRlc3REcml2ZXIoU3RyaW5nJiYgZHJpdmVyTmFtZSkKIHsKICAg
ICBpZiAoZHJpdmVyTmFtZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCi0g
ICAgICAgIGRyaXZlck5hbWUgPSBnZXRlbnYoIldFQktJVF9NRVNTQUdFX1RFU1RfREVGQVVMVF9E
UklWRVIiKTsKKyAgICAgICAgZHJpdmVyTmFtZSA9IFN0cmluZyB7IGdldGVudigiV0VCS0lUX01F
U1NBR0VfVEVTVF9ERUZBVUxUX0RSSVZFUiIpIH07CiAgICAgaWYgKGRyaXZlck5hbWUuaXNFbXB0
eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQogICAgICAgICByZXR1cm4gZGVmYXVsdFRl
c3REcml2ZXI7CiAgICAgYXV0byB0ZXN0RHJpdmVyID0gcmVpbnRlcnByZXRfY2FzdDxXS01lc3Nh
Z2VUZXN0RHJpdmVyRnVuYz4oZGxzeW0oUlRMRF9ERUZBVUxULCBkcml2ZXJOYW1lLnV0ZjgoKS5k
YXRhKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVu
c2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5
cGVzLmNwcAppbmRleCA4NjY0OWE3NzExZGJhNzE0ZWFhMDE1ZjNmMjZmOWY3ZDZjMjdkOTVlLi5h
MTBiOGM3MTQwZDg4MTlkMjI1YzljMTlmYWVjOGY3OWU1NWI0MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIFdURjo6U3RyaW5nIGV4dGVuc2lvbkVycm9yVG9TdHJpbmcoRXh0ZW5zaW9uRXJyb3IgZXJy
b3IpCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICJJbnRl
cm5hbEVycm9yIjsKKyAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4
dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4
IDVkZGEzMGNkN2Y2MTc5ZjgzOGM5MGRjMmFmNTc4M2JhNTIxZTZlOTIuLmIyYmE1MjMyMmNkYTQ5
OTg3NTgyNTFjMjAyMzk1NDE5MjI1ZGMwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94
RXh0ZW5zaW9uLmgKQEAgLTg0LDE3ICs4NCwxNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKICAg
ICBzdGF0aWMgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGNyZWF0ZShIYW5kbGUmJik7Ci0gICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRs
ZShTdHJpbmdWaWV3IHBhdGgsIFR5cGUpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVh
dGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwgbG9nTGFiZWwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocyk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUp
OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCk7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVh
dGUgdGhlIGRpcmVjdG9yeS4KLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFu
ZGxlLCBTdHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcgcGF0aCwgVHlwZSk7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkoU3RyaW5nVmlldyBwYXRoKTsgLy8gV2lsbCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0
b3J5LgorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+
IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFR5cGUpOwog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4
dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lmIEhBVkUoQVVESVRfVE9L
RU4pCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8
SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFn
cz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVy
YWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8Rmxh
Z3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0
X3Rva2VuX3QpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxl
Rm9yUmVhZEJ5QXVkaXRUb2tlbihTdHJpbmdWaWV3IHBhdGgsIGF1ZGl0X3Rva2VuX3QpOwogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4
dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9raXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgVmVj
dG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAjZW5kaWYKQEAgLTExOCw5
ICsxMTgsOSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1TdHJpbmcgc3RyaW5nQnlSZXNvbHZp
bmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwotU3RyaW5nIHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpOwotU3RyaW5nIHJlc29sdmVB
bmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJpbmdW
aWV3IHBhdGgpOworU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdW
aWV3IHBhdGgpOworU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JT
YW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCk7CiAKICNpZiAhRU5BQkxFKFNBTkRCT1hf
RVhURU5TSU9OUykKIApAQCAtMTI5LDExICsxMjksMTEgQEAgaW5saW5lIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9CiBpbmxpbmUgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmKSB7
IHJldHVybiBudWxscHRyOyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0
dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZShTdHJpbmdWaWV3LCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4g
SGFuZGxlIHsgfTsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9u
bHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIC0+
IFZlY3RvcjxIYW5kbGU+IHsgcmV0dXJuIHsgfTsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiwgVHlw
ZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KLWlubGlu
ZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxl
IHsgfTsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFp
cjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4geyB9
OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVz
b2x2aW5nUGF0aChTdHJpbmdWaWV3LCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyBy
ZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFN0cmluZ1ZpZXcpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcsIFR5cGUpIC0+IHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4geyByZXR1cm4gc3RkOjpwYWly
PEhhbmRsZSwgU3RyaW5nPiB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNp
b246On5TYW5kYm94RXh0ZW5zaW9uKCkgeyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9u
OjpyZXZva2UoKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNDEsOSArMTQxLDkgQEAgaW5saW5lIGJv
b2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBi
b29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSgpIHsgcmV0dXJuIHRydWU7
IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25z
dCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVjdG9yPEhhbmRsZT4mKSB7IHJldHVybiB0cnVl
OyB9Ci1pbmxpbmUgU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9Ci1pbmxpbmUgU3RyaW5nIHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0K
LWlubGluZSBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRi
b3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9CitpbmxpbmUg
U3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoU3RyaW5nVmlldyBwYXRoKSB7
IHJldHVybiBwYXRoLnRvU3RyaW5nKCk7IH0KK2lubGluZSBTdHJpbmcgcmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkgeyByZXR1cm4gcGF0aC50b1N0cmluZygp
OyB9CitpbmxpbmUgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JT
YW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkgeyByZXR1cm4gcGF0aC50b1N0cmluZygp
OyB9CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQ
cm9jZXNzTWFjLm1tCmluZGV4IGUwNWFjY2NlN2ZmMTRlNjAyMTEzMWZlMzJmYTg2NjkxZDQxYjY4
YjcuLjhmMjU5ZGE2ZDUxMDI2Y2NkNjE4OWJiZWNhNDhkNTNkYjk4MWRiNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC0yODIsNyAr
MjgyLDcgQEAgc3RhdGljIFN0cmluZyBzYW5kYm94RGF0YVZhdWx0UGFyZW50RGlyZWN0b3J5KCkK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGNhbm9uaWNhbGl6ZSB1c2VyIHRl
bXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJv
cihlcnJubykuZGF0YSgpKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KLSAgICBy
ZXR1cm4gcmVzb2x2ZWRQYXRoOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHJlc29sdmVk
UGF0aCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuZGJveERpcmVjdG9yeShXZWJDb3JlOjpBdXhp
bGlhcnlQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgY29uc3QgU3RyaW5nJiBwYXJlbnREaXJlY3Rv
cnkpCkBAIC03MDQsOSArNzA0LDkgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzKFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXQKIAogICAgIHNh
bmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfRElSIiwgcHdkLnB3X2Rpcik7
CiAgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHB3ZC5wd19kaXIpOwotICAgIHBh
dGguYXBwZW5kKCIvTGlicmFyeSIpOworICAgIHBhdGguYXBwZW5kKCIvTGlicmFyeSJfcyk7CiAg
ICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX0RJUiIs
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotICAg
IHBhdGguYXBwZW5kKCIvUHJlZmVyZW5jZXMiKTsKKyAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVu
Y2VzIl9zKTsKICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJ
QlJBUllfUFJFRkVSRU5DRVNfRElSIiwgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSk7CiAKICNpZiBDUFUoWDg2XzY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KaW5kZXggOTIwZGUwMGJiNjg2MjAyYjZjMWQ2NGZh
YWQ3MTIzNTljMTYwMjc4Zi4uOWJkZTUwNTI3ZDM1NTVlYjMyNzM4MzY1YTFmN2MyZmM0ZjEzOGMw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCkBAIC00
NjksMjAgKzQ2OSwyMCBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCwgYm9vbCBoYQogCiAgICAgLy8gQWx3YXlz
IHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdz
IGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgogICAgIGlmICh3aW5kb3dzVmlydHVhbEtl
eUNvZGUgPT0gVktfUkVUVVJOKSB7Ci0gICAgICAgIHRleHQgPSAiXHIiOwotICAgICAgICB1bm1v
ZGlmaWVkVGV4dCA9ICJcciI7CisgICAgICAgIHRleHQgPSAiXHIiX3M7CisgICAgICAgIHVubW9k
aWZpZWRUZXh0ID0gdGV4dDsKICAgICB9CiAKICAgICAvLyBBcHBLaXQgc2V0cyB0ZXh0IHRvICJc
eDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVudCBjaGFyYWN0
ZXIgY29kZSBpcyA4LgogICAgIGlmICh3aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfQkFDSykg
ewotICAgICAgICB0ZXh0ID0gIlx4OCI7Ci0gICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4OCI7
CisgICAgICAgIHRleHQgPSAiXHg4Il9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7
CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIHVzZSA5IGZvciBUYWIgLS0gd2UgZG9uJ3Qgd2FudCB0
byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgogICAgIGlm
ICh3aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfVEFCKSB7Ci0gICAgICAgIHRleHQgPSAiXHg5
IjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICAgICAgdGV4dCA9ICJceDki
X3M7CisgICAgICAgIHVubW9kaWZpZWRUZXh0ID0gdGV4dDsKICAgICB9CiAKICAgICByZXR1cm4g
V2ViS2V5Ym9hcmRFdmVudCh0eXBlLCB0ZXh0LCB1bm1vZGlmaWVkVGV4dCwga2V5LCBjb2RlLCBr
ZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5hdGl2ZVZpcnR1YWxLZXlDb2Rl
LCBtYWNDaGFyQ29kZSwgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIGNvbW1hbmRzLCBhdXRvUmVwZWF0
LCBpc0tleXBhZCwgaXNTeXN0ZW1LZXksIG1vZGlmaWVycywgdGltZXN0YW1wKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCmluZGV4IGMwYTY0ZmVmYmQyZjQ1YzEyYWQ5Y2JlMmM3ODgzYjI1MTlkODhiNDQuLmFhYzYw
YjY1YjAyNzY3NTczYjAwNzE4NTFmMDE2ZjRkZTI2ODM5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAt
MjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcHBlZERhdGE+IG9wZW5BbmRN
YXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIHBhCiB7CiAgICAgaWYgKCFGaWxl
U3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBmaWxlRGF0
YSA9IG1hcEZpbGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAg
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBtYXBGaWxlKHBhdGgpOwogICAg
IGlmIChmaWxlRGF0YS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIG1ldGFEYXRhID0gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoZmlsZURhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJl
Zi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcApp
bmRleCBlZWJjYzkyZDc5OWE1NWJhZDE3MTE1Y2I4NmE3YzhiYzg3MDQ2MzM2Li5jMmFhZDM2ZmRl
N2ZmOWUyMTQ0N2RjYTQzYmJlMGYxMzM5ODNkYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
V0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xp
ZW50QmFzZSogY2xpZW50KQogCiAgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6
RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3
b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93bmxvYWQiIH0sIG51bGxwdHIpOworICAgICAg
ICAgICAgZGlkRmFpbChkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6
OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGRvd25sb2FkLnJlcXVlc3QoKS51cmwoKSwg
Ik5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkIGR1cmluZyBkb3dubG9hZCJfcyB9LCBudWxscHRyKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGUy
NTQ5MjZkYzUxYTQ5YWViYTQ5OGQ3OTQ5YWFmYzgwN2E0YjcyMjkuLjQxMTUwYjdkMTVmYjJmNTRk
YjU3ZTY4MDdkNTU4NDE1ZTdkOWNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcApAQCAtNTE1LDEzICs1MTUsMTMgQEAgdm9pZCBXS1BhZ2VUZXJtaW5hdGUoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdldFNlc3Npb25IaXN0b3J5VVJM
VmFsdWVUeXBlKCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIHNlc3Npb25IaXN0b3J5VVJM
VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkhpc3RvcnlVUkwiKS5sZWFr
UmVmKCk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlw
ZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25IaXN0b3J5VVJMIl9zKS5sZWFrUmVmKCk7
CiAgICAgcmV0dXJuIHRvQVBJKCZzZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSk7CiB9CiAKIFdL
U3RyaW5nUmVmIFdLUGFnZUdldFNlc3Npb25CYWNrRm9yd2FyZExpc3RJdGVtVmFsdWVUeXBlKCkK
IHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIHNlc3Npb25CYWNrRm9yd2FyZExpc3RWYWx1ZVR5
cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRlbSIpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIHNlc3Npb25CYWNrRm9yd2FyZExpc3RW
YWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRl
bSJfcykubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkJhY2tGb3J3YXJkTGlz
dFZhbHVlVHlwZSk7CiB9CiAKQEAgLTE1ODIsMjEgKzE1ODIsMjEgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSog
d2tDbGllbnQKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEgfHwgbV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKSB7CiAgICAgICAgICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsK
ICAgICAgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueCkKLSAgICAgICAgICAgICAgICAg
ICAgbWFwLnNldCgieCIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLngpKTsK
KyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgieCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgq
d2luZG93RmVhdHVyZXMueCkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy55
KQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ5IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgq
d2luZG93RmVhdHVyZXMueSkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ5Il9zLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy55KSk7CiAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvd0ZlYXR1cmVzLndpZHRoKQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ3
aWR0aCIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLndpZHRoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQoIndpZHRoIl9zLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3
aW5kb3dGZWF0dXJlcy53aWR0aCkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJl
cy5oZWlnaHQpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoImhlaWdodCIsIEFQSTo6RG91
YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLmhlaWdodCkpOwotICAgICAgICAgICAgICAgIG1h
cC5zZXQoIm1lbnVCYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVy
ZXMubWVudUJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJW
aXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlz
aWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInRvb2xCYXJWaXNpYmxlIiwgQVBJOjpC
b29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMudG9vbEJhclZpc2libGUpKTsKLSAgICAgICAg
ICAgICAgICBtYXAuc2V0KCJsb2NhdGlvbkJhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBt
YXAuc2V0KCJzY3JvbGxiYXJzVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0Zl
YXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgicmVz
aXphYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMucmVzaXphYmxlKSk7
Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgiZnVsbHNjcmVlbiIsIEFQSTo6Qm9vbGVhbjo6Y3Jl
YXRlKHdpbmRvd0ZlYXR1cmVzLmZ1bGxzY3JlZW4pKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJkaWFsb2ciLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cpKTsK
KyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgiaGVpZ2h0Il9zLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKCp3aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJt
ZW51QmFyVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubWVu
dUJhclZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJWaXNpYmxl
Il9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxl
KSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgidG9vbEJhclZpc2libGUiX3MsIEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlKSk7CisgICAgICAgICAg
ICAgICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBt
YXAuc2V0KCJzY3JvbGxiYXJzVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93
RmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJy
ZXNpemFibGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnJlc2l6YWJs
ZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxzY3JlZW4iX3MsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmZ1bGxzY3JlZW4pKTsKKyAgICAgICAgICAgICAgICBt
YXAuc2V0KCJkaWFsb2ciX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRp
YWxvZykpOwogICAgICAgICAgICAgICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IGZlYXR1cmVzTWFw
ID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtYXApKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5k
ZXggOGU2NzViMzk5MDdiYmNkN2E5MjRjNDZjNzgwZjcxNDJmMGVjOTUxYS4uMWE3M2E3MGNhYzk5
NjgyNjljNDY3YTg4NjdmODIxYzRiMGRiYTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXS1R5cGVJ
RCBXS1ByZWZlcmVuY2VzR2V0VHlwZUlEKCkKIAogV0tQcmVmZXJlbmNlc1JlZiBXS1ByZWZlcmVu
Y2VzQ3JlYXRlKCkKIHsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5
RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICByZXR1
cm4gdG9BUEkoJnByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYg
V0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXJS
ZWYpCiB7Ci0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRo
TGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmllclJlZiksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
V2l0aExlZ2FjeURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50aWZpZXJSZWYpLCAiV2ViS2l0Mi4i
X3MsICJXZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRvQVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVm
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCmluZGV4IDNkNjU3OWY1
MmNlMzUwMWE4NjFjM2Y2NTVlZmJlZDI0ZTgxZTEyZTQuLjIxNTZjZTA5M2IyNzRhMTM5NmUwZTdh
NzRiOTFmNmEyMmQ1NWNkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCkBA
IC01OCw3ICs1OCw3IEBAIFdURjo6U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0
U3RvcmVQYXRoKCkKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3Jl
YXRlRGlyZWN0b3J5QXRVUkw6Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRy
XSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIGNv
bnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpKTsKIAotICAgIHJldHVybiBbY29udGVu
dFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgYWJzb2x1dGVVUkxdLnBhdGguZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uOworICAgIHJldHVybiBXVEY6OlN0cmluZzo6ZnJvbVVURjgoW2NvbnRlbnRSdWxl
TGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRlVVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQppbmRl
eCA5ZmE3MWIwNzVhMDNmZjFkZmRkMDAxN2U0NWM4MTI5OTU5ZDM1ZDgzLi5hMmI3YzViN2NhYWU3
ODkzMDlmZDY2ZDdjZjJjMjFiODVlNDk0NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQpAQCAt
NzksNyArNzksNyBAQCArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlCiArIChpbnN0YW5jZXR5
cGUpc3RvcmVXaXRoVVJMOihOU1VSTCAqKXVybAogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3Rv
cmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7Cisg
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0
aChTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pKSk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKQEAgLTE5NCw3ICsxOTQsNyBA
QCArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlV2l0aExlZ2FjeUZpbGVuYW1lCiArIChpbnN0
YW5jZXR5cGUpc3RvcmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6KE5TVVJMICopdXJsCiB7CiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNv
bnRlbnRSdWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNvbHV0ZVVSTC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb24pKTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxl
TGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKFN0cmluZzo6ZnJvbVVURjgodXJsLmFic29sdXRlVVJM
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpKTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbQppbmRleCBlYjIzMjE2OWNmYjhhYTJiMjJkZTcxMzhmOThhZWY0NmMzOTA0OGM1Li41
OWZiOGRjMGE3ODFjN2VhYWRlZmI2MTJhNWYzMTEyNjFiMmZkMjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtNDQsNyAr
NDQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdElu
V3JhcHBlcjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPihzZWxmLCBTdHJpbmcoKSwgIldlYktpdCIs
ICJXZWJLaXREZWJ1ZyIpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2Vi
S2l0OjpXZWJQcmVmZXJlbmNlcz4oc2VsZiwgU3RyaW5nKCksICJXZWJLaXQiX3MsICJXZWJLaXRE
ZWJ1ZyJfcyk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCmluZGV4IDFjNTRlMDE1ODRlNjAzMDU0
MDg2NGJiMTZlMTQ1NjZhODI3ODMwYmUuLjNmYjk2OTgwZWZkOWUyZjJhZThhMTdjZjRjNmQ0MjZk
NDNhMjgzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNjUsMTAgKzY1LDEwIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1
CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzSWRlbnRpZmllciA9IG1fcHJvY2Vzc0lkZW50aWZp
ZXI7CiAKICAgICBpZiAoY29uc3QgY2hhciogdXNlckRpcmVjdG9yeVN1ZmZpeCA9IGdldGVudigi
RElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIpKQotICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInVzZXIt
ZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7CisgICAgICAgIGxhdW5j
aE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlM
aXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCBTdHJpbmc6OmZyb21VVEY4KHVzZXJE
aXJlY3RvcnlTdWZmaXgpKTsKIAogICAgIGlmIChtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8
SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXBy
aW9yaXR5Il9zLCAidHJ1ZSIpOworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImFsd2F5cy1ydW5zLWF0
LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsICJ0cnVlIl9zKTsKIAogI2lmIEVOQUJMRShERVZFTE9Q
RVJfTU9ERSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKSkKICAgICBjb25zdCBj
aGFyKiB2YXJuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24ubW0KaW5kZXggNjBjMGQ5ZGFlMGYwZDZhZGM1NmNmZDFjOGNmMTBlZjk0
M2Q1MWQzNS4uMjA3MmI1YjZiMWNiOTBmOGY2MjdmNjk2NWMzMTBmMDFlN2Y0YjE1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZy
YW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1t
CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246
OmxvYWRSZXF1ZXN0VG9GcmFtZSgpCiAgICAgICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09B
dXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgIGF1
dG8mIHVybCA9IG1fcmVxdWVzdHNUb0xvYWQuZmlyc3QoKS5maXJzdDsKICAgICAgICAgV1RGOjpz
d2l0Y2hPbihtX3JlcXVlc3RzVG9Mb2FkLmZpcnN0KCkuc2Vjb25kLCBbJl0oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKSB7Ci0gICAgICAgICAgICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRh
UmVmZXJlbmNlKGRhdGEpLCAidGV4dC9odG1sIiwgIlVURi04IiwgdXJsKTsKKyAgICAgICAgICAg
IGZyYW1lLT5sb2FkRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSksICJ0ZXh0L2h0bWwiX3Ms
ICJVVEYtOCJfcywgdXJsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
IHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkVVJMKHVybCwgcmVmZXJyZXIpOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0
U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNv
ZnRMaW5rLm1tCmluZGV4IDBlYzExNzQzYmIxZDhmMzlhMjUwYjUxYjNlNTc4NGJhZTFlNTBlMzAu
LmZlNDViNzQ1NGQ3YjRiMzA4NzVlMGU2ZTNjMTc3OTQ1NmFkN2FhN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGluay5tbQpAQCAt
NDEsNyArNDEsNyBAQCB2b2lkKiBXZWJLaXRTd2lmdExpYnJhcnkoYm9vbCBpc09wdGlvbmFsKQog
ICAgICAgICAvLyBUaGVuIHNlYXJjaCBpbiB0aGUgRnJhbWV3b3Jrcy8gZGlyZWN0b3J5IG9mIHRo
ZSBjdXJyZW50bHkgbG9hZGVkIHZlcnNpb24gb2YgV2ViS2l0LmZyYW1ld29yazoKICAgICAgICAg
RGxfaW5mbyBpbmZvIHsgfTsKICAgICAgICAgaWYgKGRsYWRkcigoY29uc3Qgdm9pZCopJldlYktp
dFN3aWZ0TGlicmFyeSwgJmluZm8pICYmIHN0cmxlbihpbmZvLmRsaV9mbmFtZSkpIHsKLSAgICAg
ICAgICAgIGF1dG8gd2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5ID0gV1RGOjpGaWxlU3lzdGVtSW1w
bDo6cGFyZW50UGF0aChpbmZvLmRsaV9mbmFtZSk7CisgICAgICAgICAgICBhdXRvIHdlYmtpdEZy
YW1ld29ya0RpcmVjdG9yeSA9IFdURjo6RmlsZVN5c3RlbUltcGw6OnBhcmVudFBhdGgoU3RyaW5n
Ojpmcm9tVVRGOChpbmZvLmRsaV9mbmFtZSkpOwogICAgICAgICAgICAgYXV0byBkeWxpYlBhdGgg
PSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJh
bWV3b3JrRGlyZWN0b3J5LCAiRnJhbWV3b3Jrcy9saWJXZWJLaXRTd2lmdC5keWxpYiIpOwogICAg
ICAgICAgICAgaWYgKChsaWJyYXJ5ID0gZGxvcGVuKGR5bGliUGF0aC51dGY4KCkuZGF0YSgpLCBS
VExEX05PVykpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDI4YTU4NTFm
NWVlMGFjMGEzNGJhNzczZGQ2MTM0MzdiZjU0ODcxNzMuLjgwODU3MzIzZjlkOGY5YzM4ZjYxYTky
MWI3ZGViODQ0YjgwMGYyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjgyLDcgKzI4Miw3IEBAIFN0cmluZyBX
ZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSgpCiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogewotICAg
IG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGggPSByZXNvbHZlUGF0
aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSByZXNvdXJjZVBhdGhd
KTsKKyAgICBtX3Jlc29sdmVkUGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gcmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZyB7IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gcmVzb3VyY2VQYXRoXSB9KTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDAwNzRkY2E3
NzI3YTk2ODc0ZmIxZWQzODQ3ZjUxOWUxNjA0YTUzZjcuLmE3YmYzZDJkYzRkNmUzMmVlNmNiZjZj
MjAyMGU1ZWNkY2M3MGVhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC05MjYsMTcgKzkyNiwxNyBAQCAtICh2b2lkKV93a0NoYW5nZVRleHRT
dHlsZTooaWQpc2VuZGVyCiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JT
ZWdtZW50OjBdICE9IF90ZXh0SXNCb2xkKSB7CiAgICAgICAgIF90ZXh0SXNCb2xkID0gIV90ZXh0
SXNCb2xkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQo
QCJUb2dnbGVCb2xkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0
ZUVkaXRDb21tYW5kKCJUb2dnbGVCb2xkIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiAKICAg
ICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjFdICE9IF90ZXh0SXNJ
dGFsaWMpIHsKICAgICAgICAgX3RleHRJc0l0YWxpYyA9ICFfdGV4dElzSXRhbGljOwotICAgICAg
ICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZUl0YWxpYyIs
IEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgi
VG9nZ2xlSXRhbGljIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYu
dGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjJdICE9IF90ZXh0SXNVbmRlcmxpbmVkKSB7
CiAgICAgICAgIF90ZXh0SXNVbmRlcmxpbmVkID0gIV90ZXh0SXNVbmRlcmxpbmVkOwotICAgICAg
ICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZVVuZGVybGlu
ZSIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFu
ZCgiVG9nZ2xlVW5kZXJsaW5lIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiB9CiAKQEAgLTk1
NSwxOSArOTU1LDE5IEBAIC0gKHZvaWQpX3drQ2hhbmdlVGV4dEFsaWdubWVudDooaWQpc2VuZGVy
CiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudExlZnQ6
CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudExlZnQ7Ci0g
ICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25MZWZ0
IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5k
KCJBbGlnbkxlZnQiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE5TVGV4dEFsaWdubWVudFJpZ2h0OgogICAgICAgICBfY3VycmVudFRleHRBbGlnbm1lbnQgPSBO
U1RleHRBbGlnbm1lbnRSaWdodDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0
ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5w
YWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0Il9zLCBlbXB0eVN0cmluZygpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6CiAgICAgICAg
IF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudENlbnRlcjsKLSAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkNlbnRlciIsIEAi
Iik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxp
Z25DZW50ZXIiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5T
VGV4dEFsaWdubWVudEp1c3RpZmllZDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0g
TlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5l
eGVjdXRlRWRpdENvbW1hbmQoIkFsaWduSnVzdGlmaWVkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZp
ZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkp1c3RpZmllZCJfcywgZW1w
dHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwpAQCAtOTkzLDcgKzk5Myw3IEBAIC0gKHZvaWQpX3drQ2hhbmdlQ29sb3I6KGlkKXNlbmRlcgog
ICAgICAgICByZXR1cm47CiAKICAgICBfdGV4dENvbG9yID0gc2VsZi5jb2xvclBpY2tlckl0ZW0u
Y29sb3I7Ci0gICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3Jl
Q29sb3IiLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3JlOjpjb2xvckZyb21D
b2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCku
ZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25G
b3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsK
IH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTUx
MzIsNyArNTEzMiw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Omluc2VydFRleHQoaWQgc3RyaW5nLCBO
U1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4qIGtleXByZXNzQ29tbWFuZHMgPSBtX2NvbGxlY3RlZEtleXByZXNzQ29tbWFuZHM7CiAg
ICAgaWYgKGtleXByZXNzQ29tbWFuZHMgJiYgIW1faXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29m
dFNwYWNlKSB7CiAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpOwotICAgICAgICBXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQgY29tbWFuZCgiaW5z
ZXJ0VGV4dDoiLCB0ZXh0KTsKKyAgICAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1h
bmQoImluc2VydFRleHQ6Il9zLCB0ZXh0KTsKICAgICAgICAga2V5cHJlc3NDb21tYW5kcy0+YXBw
ZW5kKGNvbW1hbmQpOwogICAgICAgICBMT0coVGV4dElucHV0LCAiLi4uc3RvcmVkIik7CiAgICAg
ICAgIG1fcGFnZS0+cmVnaXN0ZXJLZXlwcmVzc0NvbW1hbmROYW1lKGNvbW1hbmQuY29tbWFuZE5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UuY3BwCmluZGV4IDRiMjFlOTg5ZjI3OWFlNjczNGQ5ZDMyNjAxZGUzNjZkYjAwYWY3YjIu
LmVjNjliZjZhZDNlN2M1OGUxNzExOTcxNTJkMGIzNDRjMjIyNDFmYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6On5EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IGNo
YXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKEFTQ0lJTGl0ZXJhbCBuYW1l
LCBLZXllZERlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIG9yaWdpbjsKIApAQCAtMTU3
LDIwICsxNTcsMjAgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VG
cm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hNYXAKIAogc3RkOjp1bmlxdWVfcHRy
PERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4gRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXIqIGRlY29kZXIsIFN0
cmluZyYmIGRldmljZUlkSGFzaFNhbHQpIGNvbnN0CiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdp
bkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoIm9yaWdpbiIsIGRlY29kZXIpOworICAgIGF1
dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJvcmlnaW4iX3Ms
IGRlY29kZXIpOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW5EYXRhKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBU
aGUgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyci
LCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YSA9IGdldFNlY3Vy
aXR5T3JpZ2luRGF0YSgicGFyZW50T3JpZ2luIiwgZGVjb2Rlcik7CisgICAgYXV0byBwYXJlbnRT
ZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoInBhcmVudE9yaWdpbiJf
cywgZGVjb2Rlcik7CiAgICAgaWYgKCFwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6IFRoZSBwYXJlbnQgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90
IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBkb3VibGUgbGFzdFRpbWVVc2VkOwotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiLCBsYXN0VGltZVVzZWQp
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJfcywgbGFz
dFRpbWVVc2VkKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ks
ICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIGxhc3QgdGltZSB1c2VkIHdhcyBub3QgY29y
cmVjdGx5IHJlc3RvcmVkIGZvcjogJyVzJyIsIGRldmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE4NSw5ICsxODUsOSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2lu
PiBEZXZpY2VJZEhhc2hTYWx0U3Rvcgogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YShjb25zdCBIYXNoU2Fs
dEZvck9yaWdpbiYgaGFzaFNhbHRGb3JPcmlnaW4pIGNvbnN0CiB7CiAgICAgYXV0byBlbmNvZGVy
ID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJv
cmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1bWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJwYXJlbnRPcmlnaW4iLCBoYXNoU2Fs
dEZvck9yaWdpbi5wYXJlbnRPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIGVuY29k
ZXItPmVuY29kZURvdWJsZSgibGFzdFRpbWVVc2VkIiwgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRp
bWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2Rl
U3RyaW5nKCJvcmlnaW4iX3MsIGhhc2hTYWx0Rm9yT3JpZ2luLmRvY3VtZW50T3JpZ2luLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoInBhcmVudE9yaWdp
biJfcywgaGFzaFNhbHRGb3JPcmlnaW4ucGFyZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJfcywgaGFzaFNhbHRG
b3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CiAgICAg
cmV0dXJuIGVuY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggMmU4NmMxYjY2
YTRkNTJkNmYzMDRhNDkwNTJlMGZlMDk4NWRjMzM3OC4uNTE3MTYwMjg3NDlkMGJmODM0MWUzNzA5
MDdmZWFiOThmNTU0MzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTU0LDExICs1NCwx
MSBAQCBib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBD
RXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBjbwogICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90
eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwg
WFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICBpZiAobWVzc2FnZU5hbWUuaXNF
bXB0eSgpKQorICAgIGF1dG8qIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmlu
ZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAoIW1lc3Nh
Z2VOYW1lIHx8ICEqbWVzc2FnZU5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkgeworICAgIGlmIChM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSA9PSBtZXNzYWdlTmFtZSkgewogICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5tX2VuZHBvaW50TWVzc2FnZSA9IGV2ZW50OwogICAgICAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggZWY4ZDJkZDg2MDE5NDAw
ZDBkZmMxM2ZhMWE0MjY2NjJmYjdiZDQyNS4uN2FjNDRhOTdiMGJmZGMzYzU1Nzc0YzRhYThmMzky
YTQyYWJjYmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjcz
LDcgKzI3Myw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgdXBkYXRlU3RvcmVkUmVx
dWVzdHMocmVxdWVzdCk7CiAKICAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5n
bGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVkaW9EZXZp
Y2UoKSwgcmVxdWVzdC5oYXNWaWRlb0RldmljZSgpKSkgewotICAgICAgICBkZW55UmVxdWVzdChy
ZXF1ZXN0LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJveC4iKTsK
KyAgICAgICAgZGVueVJlcXVlc3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUg
dG8gZXh0ZW5kIHNhbmRib3guIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXgg
N2JkNTg3N2RkOGU5MjU4ZGM1ZDZhN2ZhNDI4NjdmYjkyOTc5ZDZmYS4uNGFhNzI5ZGI0YTJjNjgy
ZTM3OWI3MTVjMTZiYTRmYjA2NDZmMDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgU3RyaW5n
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRzRGVz
Y3JpcHRpb24oRXZlbnRzIGUKIH0KIAogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAordm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhTdHJpbmdW
aWV3IGxvZykgY29uc3QKIHsKICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJTd2lwZSBT
bmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgbG9nLnV0ZjgoKS5kYXRhKCkpOwogfQpAQCAt
MzI0LDEzICszMjQsMTMgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVt
b3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLAogdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KCkKIHsKICAgICBpZiAo
bV9vdXRzdGFuZGluZ0V2ZW50cykKLSAgICAgICAgbG9nKCJyZXNldDsgaGFkIG91dHN0YW5kaW5n
IGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsKKyAg
ICAgICAgbG9nKG1ha2VTdHJpbmcoInJlc2V0OyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiLCBl
dmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSkpOwogICAgIG1fb3V0c3RhbmRp
bmdFdmVudHMgPSAwOwogICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAgbV9yZW1vdmFs
Q2FsbGJhY2sgPSBudWxscHRyOwogfQogCi1ib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBj
b25zdCBTdHJpbmcmIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCBzaG91bGRJ
Z25vcmVFdmVudElmUGF1c2VkKQorYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OnN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBBU0NJSUxp
dGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3VsZElnbm9yZUV2
ZW50SWZQYXVzZWQpCiB7CiAgICAgQVNTRVJUKGhhc09uZUJpdFNldChldmVudCkpOwogCkBAIC0z
MzgsMTEgKzMzOCwxMSBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1v
dmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID09IFNob3VsZElnbm9y
ZUV2ZW50SWZQYXVzZWQ6OlllcyAmJiBpc1BhdXNlZCgpKSB7Ci0gICAgICAgIGxvZygiaXMgcGF1
c2VkOyBpZ25vcmluZyBldmVudDogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50KSk7CisgICAg
ICAgIGxvZyhtYWtlU3RyaW5nKCJpcyBwYXVzZWQ7IGlnbm9yaW5nIGV2ZW50OiAiLCBldmVudHNE
ZXNjcmlwdGlvbihldmVudCkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGxvZyhsb2dSZWFzb24gKyBldmVudHNEZXNjcmlwdGlvbihldmVudCkpOworICAgIGxvZyhtYWtl
U3RyaW5nKGxvZ1JlYXNvbiwgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAKICAgICBtX291
dHN0YW5kaW5nRXZlbnRzICY9IH5ldmVudDsKIApAQCAtMzUyLDEyICszNTIsMTIgQEAgYm9vbCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGlu
Z0ZvckV2ZW50KEV2ZW50cwogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RS
ZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZChFdmVudHMgZXZlbnQsIFNob3VsZElnbm9yZUV2
ZW50SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCkKIHsKLSAgICByZXR1cm4gc3Rv
cFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiLCBz
aG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVu
dChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiX3MsIHNob3VsZElnbm9yZUV2
ZW50SWZQYXVzZWQpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RS
ZW1vdmFsVHJhY2tlcjo6Y2FuY2VsT3V0c3RhbmRpbmdFdmVudChFdmVudHMgZXZlbnQpCiB7Ci0g
ICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJ3YWl0IGZvciBldmVudCBjYW5j
ZWxsZWQ6ICIpOworICAgIHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAid2FpdCBm
b3IgZXZlbnQgY2FuY2VsbGVkOiAiX3MpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldmVu
dCkKQEAgLTM2OCw3ICszNjgsNyBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNo
b3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldgogdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1vdmFsQ2Fs
bGJhY2tJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykgewotICAg
ICAgICBsb2coImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiICsg
ZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50cykpOworICAgICAgICBsb2cobWFr
ZVN0cmluZygiZGVmZXJyaW5nIHJlbW92YWw7IGhhZCBvdXRzdGFuZGluZyBldmVudHM6ICIsIGV2
ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmgKaW5kZXggMjBjMzBiODM0ODg4N2YzZTUyMDBiZjg2OTcwZDgyNDljMzUwNDdiZi4uMDJh
MGI4OThmZDVjYjJlYTYyZjBmN2NiMGQ4Njg4YWI1Njk0ZGIxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTI1MCwxMyArMjUwLDEz
IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU3RyaW5nIGV2ZW50
c0Rlc2NyaXB0aW9uKEV2ZW50cyk7Ci0gICAgICAgIHZvaWQgbG9nKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgICAgICB2b2lkIGxvZyhTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgICAgICB2b2lk
IGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpOwogICAgICAgICB2b2lkIGZpcmVSZW1v
dmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCk7CiAgICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVk
KCk7CiAKLSAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3Ry
aW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgPSBTaG91bGRJZ25vcmVF
dmVudElmUGF1c2VkOjpZZXMpOworICAgICAgICBib29sIHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZl
bnRzLCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID0g
U2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6WWVzKTsKIAogICAgICAgICBFdmVudHMgbV9vdXRz
dGFuZGluZ0V2ZW50cyB7IDAgfTsKICAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcmVt
b3ZhbENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBkODFkNzgwNjIxYzgwNTA5M2Q0ODNmMWVh
YzM1ZTI5MDFkODE4M2I5Li5mNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4NmMxMDcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5tbQpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFs
UmVxCiAgICAgICAgIFttX3Byb3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25SZXF1ZXN0
c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlcildKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJv
ciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgZW5zdXJlT25NYWluUnVuTG9vcChbd2Vh
a1RoaXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBjcmVkZW50aWFsID0gcmV0YWluUHRy
KGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxl
cih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxs
b3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgICAgICBo
YW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBO
b3RBbGxvd2VkRXJyb3IsICJPcGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51
ZUFmdGVyUmVxdWVzdChjcmVkZW50aWFsLCBlcnJvciwgV1RGTW92ZShoYW5kbGVyKSk7CkBAIC00
MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVy
Zm9ybVJlcXVlc3QoUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXEKICAgICAgICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2luZG93ID0g
V1RGTW92ZSh3aW5kb3cpLCBkYWVtb25FbmRwb2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2lu
dCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25FbmRwb2ludCkgewogICAgICAgICAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNvbm5lY3QgdG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVAXG4iLCBl
cnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9y
QXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9u
IGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlv
biBmYWlsZWQuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxz
Lm1tCmluZGV4IDc2ZTMzYTczODY3YmM0ZjdlY2Y3YmNkNjZjMDhlYWM1NmVmNjBmMWEuLjNmMDBh
NTBhNzllZjZmMTM0NzEwNWI0ZWY3ODY0YTYxY2MyMDQ2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRp
Y2F0b3JVdGlscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAgLTEwNCw3ICsxMDQs
NyBAQCBTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRl
S2V5KQogICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICBpZiAo
ZXJyb3JSZWYpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIE5TRGF0YSAq
bnNQcml2YXRlS2V5UmVwID0gKE5TRGF0YSAqKXByaXZhdGVLZXlSZXAuZ2V0KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggMTUwZmU0
MmNkNDY3NjljNTM2NjA5MWQ2ZjRmZjRjMzFlYTZmYzVmNS4uYTdkMGI1MDAxZTI0ZmUxNmVhZTI4
ZmM4MzUzOGVkOTU5YjgzNWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFs
SGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25u
ZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSBy
ZXNwb25zZTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUo
Im5vbmUiKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgyKV0gPSBDQk9SVmFsdWUo
YXV0aGVudGljYXRvckRhdGEpOwotICAgICAgICAgICAgYXV0byBhdHRPYmogPSBidWlsZEF0dGVz
dGF0aW9uTWFwKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCAiIiwgeyB9LCBBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKKyAgICAgICAgICAgIGF1dG8gYXR0T2JqID0g
YnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgU3RyaW5nIHsg
ZW1wdHlTdHJpbmcoKSB9LCB7IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5v
bmUpOwogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDMpXSA9IENCT1JWYWx1ZShhdHRP
YmopOwogICAgICAgICAgICAgYXV0byBwYXlsb2FkID0gQ0JPUldyaXRlcjo6d3JpdGUoQ0JPUlZh
bHVlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwpAQCAt
MzA5LDcgKzMwOSw3IEBAIHZvaWQgVmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgp
CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1dGhEYXRh
KTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoc2lnbmF0
dXJlRm9yUHJpdmF0ZUtleShrZXksIGF1dGhEYXRhLCBjbGllbnREYXRhSGFzaCkpOwogICAgICAg
ICAgICAgaWYgKGNyZWRlbnRpYWwudXNlckhhbmRsZSkKLSAgICAgICAgICAgICAgICByZXNwb25z
ZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlh
bC51c2VySGFuZGxlLCAiIiwgIiIpKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFs
dWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51c2VySGFu
ZGxlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgICAgICByZXNwb25z
ZVtDQk9SVmFsdWUoNSldID0gQ0JPUlZhbHVlKChpbnQ2NF90KW1hdGNoaW5nQ3JlZGVudGlhbHMu
c2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENC
T1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNw
cAppbmRleCA4MGRjYzlmNmJmNWYwNWU0NzdlNmVkZjA0M2MwMTQ0NDhmMTUxNmM1Li5lOGQwZmY5
NTc5ZmQyODllNWRiYzU2N2IwMzYxZDAxN2RlMTI3OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChX
ZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRo
aXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIiB9KTsKKyAgICAgICAg
ICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkg
dGhlIHVzZXIuIl9zIH0pOwogICAgIH07CiAgICAgCiAgICAgaWYgKCFkYXRhLnByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCmluZGV4
IGYxYjkwZDNmYjZiNDUwOGQ2YTNmZmNkZDY3OTFiODliYTdlMDRjZjIuLjhhMzkzY2VjZWI2NGE1
MzgzNTg4ODVmYzRiMGViODJkNGVhYzQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUdyb3VwLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgV2ViUGFnZUdyb3VwRGF0YSBw
YWdlR3JvdXBEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIC8vIElmIGl0IHR1cm5zIG91
dCB0aGF0IGl0J3Mgd3JvbmcsIHdlIGNhbiBjaGFuZ2UgaXQgdG8gdG8gIldlYktpdDIuIiBhbmQg
Z2V0IHJpZCBvZiB0aGUgZ2xvYmFsRGVidWdLZXlQcmVmaXggZnJvbSBXZWJQcmVmZXJlbmNlcy4K
IFdlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAg
ICA6IG1fZGF0YShwYWdlR3JvdXBEYXRhKGlkZW50aWZpZXIpKQotICAgICwgbV9wcmVmZXJlbmNl
cyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKG1fZGF0YS5pZGVudGlm
aWVyLCAiLldlYktpdDIiLCAiV2ViS2l0Mi4iKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMoV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmllciwgIi5X
ZWJLaXQyIl9zLCAiV2ViS2l0Mi4iX3MpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIo
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQogewogICAgIHdlYlBhZ2VH
cm91cE1hcCgpLnNldChtX2RhdGEucGFnZUdyb3VwSUQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGZlMjExMDhkZDE5OTM3MDFlZDJiNGE3ODhh
YTBiNjgzZTlkYzViNS4uOTRkMjNjMmI5ODZhZDBmOWNjZDM3YzVmODQzODRlN2I5NGRkNmFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTExMSw3ICsx
MTExMSw3IEBAIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlCiB7CiAgICAgYXV0byBjYXB0dXJlRGV2
aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURldmljZSgp
OwogICAgIGlmICghY2FwdHVyZURldmljZSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VP
ckVycm9yIHsgIk5vIGRldmljZSBpcyBhdmFpbGFibGUgZm9yIGNhcHR1cmUiIH07CisgICAgICAg
IHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxhYmxlIGZv
ciBjYXB0dXJlIl9zIH07CiAKICAgICBpZiAocHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JbkdQ
VVByb2Nlc3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7
IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlKG1fcHJv
Y2Vzcy0+ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlcigpLCAqY2FwdHVyZURldmljZSwgbV93ZWJQYWdlSUQpIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMmYxNjgxNzQ2NTRmNjU2ODAzOGE5M2I4
YjZhZGI1YjE3NGUzZDI3Mi4uMWIyYjg1MWU5NzI0YWM1MGZlMzk4ZjkwNGZiM2VjNTdhZTUwOWEw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjM1
LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmICghc19pbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJh
Y2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpLnB0
cigpKSk7CisgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpj
cmVhdGUoU3RyaW5nIHsgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpIH0pLnB0cigpKSk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE4ZWY1
ZGJjNDdlNmVjYjJhNDYzZmU3Yjg1ZDFjZWQ5ZWEwMzQ1ZWUuLmQ5OTQ3MjAxZjhiOTRiNWQzZTJk
MzJiYjQ4MmRhMjY5ZDY3OWY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNTU5LDE5ICs1NTksMTkgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Nl
ZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAgICAgICBw
YWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZv
clJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7CisgICAgICAgIHBhZ2UudmFs
dWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0
cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQo
KQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAgICAgcGFn
ZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNjYW5Gb3JS
ZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdlLnZhbHVl
LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJh
YmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hl
ZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAgICAgICBw
YWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdl
LnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25G
b3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTc4OSw3ICsxNzg5LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0gV2Vha1B0ciB7
IHRhcmdldFBhZ2UgfV0oKSB7Ci0gICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5j
cmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVT
b3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJuIHdlYWtQ
YWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25p
dGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlkIl9zIH07CiAg
ICAgfTsKICAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI+KCpjb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlz
c2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwg
V1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDMwOWE3NTQ0YjY0MzliYjRhZjc4MTVlMjY3MDE5
MThmNWZmODIzOGIuLmNlNWEwOWQ5YjFmMDBhZDZjNzliNTlhYzA4NGQwNjhhMGQ2ZWNiOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3NCwyNiArMjc0LDI2IEBA
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8
IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewogICAgICAgICBO
U1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwog
Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
Y2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAgICAgICByZXR1cm4gV2Vi
S2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZyB7IGNhY2hlUGF0aC5z
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoIH0pOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZSIpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2Ui
KTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNh
Y2hlU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIGF1dG8gZGlyZWN0b3J5ID0gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRlZmF1bHQiKTsKKyAgICBhdXRv
IGRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJEZWZhdWx0Il9zKTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwog
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
b2xkIHN0b3JhZ2UgZGlyZWN0b3J5LCBhbmQgdGhlcmUgbWlnaHQgYmUgZmlsZXMgbGVmdCBoZXJl
LgotICAgICAgICBhdXRvIG9sZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJTdG9yYWdlIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAg
ICAgIGF1dG8gb2xkRGlyZWN0b3J5ID0gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIlN0b3JhZ2UiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogICAgICAgICBO
U0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XTsKICAgICAgICAgTlNBcnJheSAqZmlsZXMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVj
dG9yeUF0UGF0aDpvbGREaXJlY3RvcnkgZXJyb3I6MF07CiAgICAgICAgIGlmIChmaWxlcykgewpA
QCAtMzE0LDYzICszMTQsNjMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRHZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOworICAgIHJldHVybiBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIl9zKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkFsdGVybmF0aXZlU2VydmljZXMiLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkFsdGVybmF0
aXZlU2VydmljZXMiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJl
dHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7
CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
Q2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIl9zKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyJfcyk7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxv
Y2FsU3RvcmFnZSIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIp
OworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTWVkaWFLZXlzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiRGV2aWNlSWRIYXNoU2FsdHMi
KTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkRldmljZUlkSGFzaFNhbHRzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKKyAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCJf
cyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0
dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBT
aG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyJfcywgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5OjpObyk7CiB9CiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
TW9kZWxFbGVtZW50IiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIHRl
bXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1vZGVsRWxlbWVudCJfcywgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAjZW5kaWYKIApAQCAtNDAwLDcgKzQwMCw3IEBA
IFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyCiAgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURp
cmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogICAgIAotICAg
IHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFt
ZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKQEAgLTQyOCw3
ICs0MjgsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaQogICAgICAgICAmJiAhW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAK
LSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeU5hbWUpCkBAIC00NTcsNyArNDU3LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmkK
ICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgJUAiLCB1cmwpOwogCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh1cmwuYWJz
b2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogfQogCiAjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAxMWJiZjU0ZjBiNDBmZjEy
M2EyNDFiYWNmMzY2YmI5MmJiZjAzOTE3Li5iMTUyNjA5YTZmZTU0OTkzZWM4ZjE4ODI4OWRlZmRj
MGMyYjBiYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dzV2Vic2l0ZURh
dGFSZWNvcmRzRm9yQWxsT3JpZ2lucykKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBob3N0U3RyaW5nID0gZW50cnkub3JpZ2lu
Lmhvc3QuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3RyaW5nKCIgIiwgZW50cnkub3JpZ2luLmhvc3Qp
OworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5Lm9yaWdpbi5o
b3N0LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBtYWtlU3RyaW5nKCIgIiwgZW50cnkub3Jp
Z2luLmhvc3QpOwogICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IG1ha2VTdHJpbmco
ZW50cnkub3JpZ2luLnByb3RvY29sLCBob3N0U3RyaW5nKTsKICAgICAgICAgICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwCmluZGV4IDZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFiMDMyMmQy
ZTUuLmYxNDE5Yjc0OTc4ZWU3ZTQ5N2I4OTZkMjA3YjM3NDg0YjhkYjE3ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVG
cm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKICAgICAgICAg
cmV0dXJuICJWUDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAiSDI2NCI7CisgICAgICAgIHJldHVybiAiSDI2NCJfczsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZTE5YjFlMDMyNDBjNzVh
ODNjNTk5NDcyYWUyZWRlNDZkYmZjNzFhYi4uM2I4ODM1NTJiYjI1OGIwNTkzNTE0YjVjNTUzNWRl
YzYwNjY2MjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTYxNywxMSArNjE3
LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmCiAgICAgICAgIGF1dG8qIGhpZ2hsaWdodERh
dGFBcnJheSA9IFdlYktpdDo6dG9JbXBsKGhpZ2hsaWdodERhdGEpOwogICAgICAgICBoaWdobGln
aHRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFycmF5LT5zaXplKCkpOwog
ICAgICAgICBmb3IgKGF1dG8gZGljdGlvbmFyeSA6IGhpZ2hsaWdodERhdGFBcnJheS0+ZWxlbWVu
dHNPZlR5cGU8QVBJOjpEaWN0aW9uYXJ5PigpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0T2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iKSkt
PnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJ
OjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iX3MpKS0+dmFsdWUoKTsKICAgICAgICAg
ICAgIGhpZ2hsaWdodHMudW5jaGVja2VkQXBwZW5kKHsKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGljdGlv
bmFyeS0+Z2V0KCJsZW5ndGgiKSktPnZhbHVlKCkpLAotICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0PEFQSTo6U3Ry
aW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciIpKS0+c3RyaW5nKCkpCisgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8QVBJOjpV
SW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCJfcykpLT52YWx1ZSgpKSwKKyAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChzdGF0
aWNfY2FzdDxBUEk6OlN0cmluZyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiX3MpKS0+c3RyaW5n
KCkpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWJj
NTNlYmZhOTEwOWM0OTE0Yjg5ZDc0OWEwNGMwZjVkY2QxNjdmMy4uYjRkY2FjZmUwNTgxNjlhOTJm
NmExZjgzNThkYTVkYjE1ZTViYjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBi
b29sIFdlYlNvY2tldENoYW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQoc2l6ZV90IGJ5dGVM
ZW5ndGgpCiAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50ID0gbV9idWZm
ZXJlZEFtb3VudDsKICAgICBjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQgKz0gYnl0ZUxlbmd0aDsK
ICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50Lmhhc092ZXJmbG93ZWQo
KSkpIHsKLSAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lOiBidWZm
ZXIgaGFzIG5vIG1vcmUgc3BhY2UiKTsKKyAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2Vi
U29ja2V0IGZyYW1lOiBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UiX3MpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBjZWJkOTdhYWQ4Y2FiMjVmNmNlZGUwZTNl
NzA3OTVmY2Y3MjcwMzRlLi43OGQ1MGY1ZGYwZGFmMGJlZmNjNjQyOGQ0OTRkOThmMjgxNjIyMjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJlYW06Om5ldHdv
cmtQcm9jZXNzQ3Jhc2hlZCgpCiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBzdHJlYW0tPm1fc2VuZEhhbmRzaGFrZUNhbGxiYWNrcy52
YWx1ZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgIHN0
cmVhbS0+bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRTdHJlYW1F
cnJvcigwLCB7IH0sICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZC4iKSk7CisgICAgICAgIHN0cmVh
bS0+bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRTdHJlYW1FcnJv
cigwLCB7IH0sICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZC4iX3MpKTsKICAgICAgICAgc3RyZWFt
ID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDc5ZTM4NWJlMDI0ZWJiZjEzNmRjMjdkZGNlYWI0
OTQ2MmUxNWMwNWYuLmE0ODkxYjkyZGFmY2Q0NjY2NDhmMTZkYzEzMzYyNjBhYmYxMmM4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtMTIxLDcgKzEyMSw3IEBAIEBlbmQKIC8vIFNldCBvdmVyZmxvdzogaGlkZGVuIG9uIHRo
ZSBhbm5vdGF0aW9uIGNvbnRhaW5lciBzbyA8aW5wdXQ+IGVsZW1lbnRzIHNjcm9sbGVkIG91dCBv
ZiB2aWV3IGRvbid0IHNob3cKIC8vIHNjcm9sbGJhcnMgb24gdGhlIGJvZHkuIFdlIGNhbid0IGFk
ZCBhbm5vdGF0aW9ucyBkaXJlY3RseSB0byB0aGUgYm9keSwgYmVjYXVzZSBvdmVyZmxvdzogaGlk
ZGVuIG9uIHRoZSBib2R5CiAvLyB3aWxsIGJyZWFrIHJ1YmJlci1iYW5kaW5nLgotc3RhdGljIGNv
bnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CitzdGF0aWMgY29uc3RleHByIGF1dG8gYW5ub3Rh
dGlvblN0eWxlID0KICIjYW5ub3RhdGlvbkNvbnRhaW5lciB7IgogIiAgICBvdmVyZmxvdzogaGlk
ZGVuOyAiCiAiICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIgpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQogIiAgICBwb3NpdGlvbjogc3RhdGlj
OyAiCiAiICAgIHdpZHRoOiAyMDBweDsgIgogIiAgICBtYXJnaW4tdG9wOiAxMDBweDsgIgotIn0g
IjsKKyJ9ICJfczsKIAogLy8gSW4gbm9uLWNvbnRpbnVvdXMgbW9kZXMsIGEgc2luZ2xlIHNjcm9s
bCBldmVudCB3aXRoIGEgbWFnbml0dWRlIG9mID49IDIwcHgKIC8vIHdpbGwganVtcCB0byB0aGUg
bmV4dCBvciBwcmV2aW91cyBwYWdlLCB0byBtYXRjaCBQREZLaXQgYmVoYXZpb3IuCkBAIC03Njks
NyArNzY5LDcgQEAgdm9pZCBQREZQbHVnaW46OnJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRp
bmVsKCkKIAogICAgIGlmICghaXNNYWluUnVuTG9vcCgpKSB7CiAjaWYgIUxPR19ESVNBQkxFRAot
ICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZyBvbiBiYWNr
Z3JvdW5kIHRocmVhZCIpOworICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNyZW1lbnRhbCBQ
REYgbG9hZGluZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCJfcyk7CiAjZW5kaWYKICAgICAgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAg
ICAgICAgICAgICByZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZTZW50aW5lbCgpOwpAQCAtOTYxLDcg
Kzk2MSw3IEBAIHZvaWQgUERGUGx1Z2luOjp0aHJlYWRFbnRyeShSZWY8UERGUGx1Z2luPiYmIHBy
b3RlY3RlZFBsdWdpbikKICAgICBmaXJzdFBhZ2VTZW1hcGhvcmUud2FpdCgpOwogCiAjaWYgIUxP
R19ESVNBQkxFRAotICAgIHBkZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJzdCBwYWdlIik7
CisgICAgcGRmTG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiX3MpOwogI2VuZGlm
CiB9CiAKQEAgLTEwNTUsNyArMTA1NSw3IEBAIHZvaWQgUERGUGx1Z2luOjphZG9wdEJhY2tncm91
bmRUaHJlYWREb2N1bWVudCgpCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKICNpZiAh
TE9HX0RJU0FCTEVECi0gICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBmcm9tIGJhY2tn
cm91bmQgdGhyZWFkIik7CisgICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBmcm9tIGJh
Y2tncm91bmQgdGhyZWFkIl9zKTsKICNlbmRpZgogCiAgICAgbV9wZGZEb2N1bWVudCA9IFdURk1v
dmUobV9iYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQpOwpAQCAtMTI4MiwxMyArMTI4MiwxMyBAQCBQ
bHVnaW5JbmZvIFBERlBsdWdpbjo6cGx1Z2luSW5mbygpCiAgICAgaW5mby5idW5kbGVJZGVudGlm
aWVyID0gImNvbS5hcHBsZS53ZWJraXQuYnVpbHRpbnBkZnBsdWdpbiJfczsKIAogICAgIE1pbWVD
bGFzc0luZm8gcGRmTWltZUNsYXNzSW5mbzsKLSAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAi
YXBwbGljYXRpb24vcGRmIjsKKyAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAiYXBwbGljYXRp
b24vcGRmIl9zOwogICAgIHBkZk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURl
c2NyaXB0aW9uKCk7CiAgICAgcGRmTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRm
Iik7CiAgICAgaW5mby5taW1lcy5hcHBlbmQocGRmTWltZUNsYXNzSW5mbyk7CiAKICAgICBNaW1l
Q2xhc3NJbmZvIHRleHRQREZNaW1lQ2xhc3NJbmZvOwotICAgIHRleHRQREZNaW1lQ2xhc3NJbmZv
LnR5cGUgPSAidGV4dC9wZGYiOworICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAidGV4
dC9wZGYiX3M7CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlw
ZURlc2NyaXB0aW9uKCk7CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBl
bmQoInBkZiIpOwogICAgIGluZm8ubWltZXMuYXBwZW5kKHRleHRQREZNaW1lQ2xhc3NJbmZvKTsK
QEAgLTE1NTIsNyArMTU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2Uo
KQogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToy
MDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6
aGVhZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNw
b25zZS5nZXQoKSk7CiAKLSAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBs
aWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwor
ICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiJfcywg
U3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3
KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVz
b3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTE2ODgsMTAgKzE2ODgsMTAgQEAgdm9p
ZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUpCiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lOwog
CiAgICAgaWYgKG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICBtX3N1Z2dl
c3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUobmlsLCAiYXBwbGlj
YXRpb24vcGRmIik7CisgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxl
bmFtZVdpdGhNSU1FVHlwZShuaWwsICJhcHBsaWNhdGlvbi9wZGYiX3MpOwogCiAgICAgaWYgKCFt
X3N1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkKLSAg
ICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiKTsKKyAgICAgICAgbV9zdWdn
ZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiX3MpOwogfQogICAgIAogdm9pZCBQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwg
dWludDMyX3QsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTg5Myw3ICsxODkzLDcgQEAg
Ym9vbCBQREZQbHVnaW46OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKICAgICBtX3NvdXJjZVVSTCA9IHBhcmFtZXRlcnMudXJsOwogICAgIGlmICghcGFyYW1ldGVy
cy5zaG91bGRVc2VNYW51YWxMb2FkZXIgJiYgIXBhcmFtZXRlcnMudXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgY29udHJvbGxlcigpLT5sb2FkVVJMKHBkZkRvY3VtZW50UmVxdWVzdElELCAiR0VUIiwg
cGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rv
cjx1aW50OF90PigpLCBmYWxzZSk7CisgICAgICAgIGNvbnRyb2xsZXIoKS0+bG9hZFVSTChwZGZE
b2N1bWVudFJlcXVlc3RJRCwgIkdFVCJfcywgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmlu
ZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CiAKICAgICBj
b250cm9sbGVyKCktPmRpZEluaXRpYWxpemVQbHVnaW4oKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBkNzQ1ZjAyMDk0ODRmNGVjMmI3NGE1NTM3
NGQxYmNlOTFjYTY3ODVkLi43ZDQzZmEwMjFjNWEyMGQ2NTU0MDhlNzhiYTliZWZmNjU0NzA3ODM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luVGV4dEFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC01NCwxNSArNTQsMTUgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudChOU1Rl
eHRBbGlnbm1lbnQgYWxpZ25tZW4KIHsKICAgICBzd2l0Y2ggKGFsaWdubWVudCkgewogICAgIGNh
c2UgTlNUZXh0QWxpZ25tZW50TGVmdDoKLSAgICAgICAgcmV0dXJuICJsZWZ0IjsKKyAgICAgICAg
cmV0dXJuICJsZWZ0Il9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50UmlnaHQ6Ci0gICAgICAg
IHJldHVybiAicmlnaHQiOworICAgICAgICByZXR1cm4gInJpZ2h0Il9zOwogICAgIGNhc2UgTlNU
ZXh0QWxpZ25tZW50Q2VudGVyOgotICAgICAgICByZXR1cm4gImNlbnRlciI7CisgICAgICAgIHJl
dHVybiAiY2VudGVyIl9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOgotICAg
ICAgICByZXR1cm4gImp1c3RpZnkiOworICAgICAgICByZXR1cm4gImp1c3RpZnkiX3M7CiAgICAg
Y2FzZSBOU1RleHRBbGlnbm1lbnROYXR1cmFsOgotICAgICAgICByZXR1cm4gIi13ZWJraXQtc3Rh
cnQiOworICAgICAgICByZXR1cm4gIi13ZWJraXQtc3RhcnQiX3M7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDM0NGY0YmUyM2E0Mzc2
NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2VhZS4uNDVhMDExYmU1NTY2MjA3YzljYWM0NWY5ZWY2MDky
Y2U4MDE1MDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVS
TCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcm
CiAgICAgaWYgKCFodHRwQm9keS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGh0dHBCb2R5
LmRhdGEoKSwgaHR0cEJvZHkuc2l6ZSgpKSk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRSZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRUeXBl
KCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgIGZyYW1l
TG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiX3MpOwogICAgIH0KIAogICAgIFN0cmluZyByZWZl
cnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lKCktPmRv
Y3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDBlMTE3
YTBlYzYxOTAwZDE1MGFkYjFkZTljNjgyMjlhOGU3YWI1NzAuLmY1YmQ4OWYxYzM1NDY5NDk3YjI5
YjU2OWU0YjhkMjRiM2JmMGMxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNl
Y3VyCiAKICAgICBpZiAoIWlzV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIFdFQkFVVEhOX1JFTEVB
U0VfTE9HX0VSUk9SKCJtYWtlQ3JlZGVudGlhbDogVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdj
b20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsKLSAgICAgICAg
aGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhj
ZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAn
Y29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9KTsKKyAgICAg
ICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwg
RXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRo
ZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIl9zIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok1ha2VDcmVkZW50
aWFsKGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5k
bGVyKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXQKIAogICAg
IGlmICghaXNXZWJCcm93c2VyKCkpIHsKICAgICAgICAgV0VCQVVUSE5fUkVMRUFTRV9MT0dfRVJS
T1IoImdldEFzc2VydGlvbjogVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBBUEkgaXMg
b25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxv
cGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsKLSAgICAgICAgaGFuZGxlcih7IH0sIHN0
YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5v
dEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJIGlzIG9u
bHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Bl
ci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9KTsKKyAgICAgICAgaGFuZGxlcih7IH0sIHN0
YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5v
dEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJIGlzIG9u
bHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Bl
ci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRo
bkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEFzc2VydGlvbihoYXNoLCBvcHRpb25zLCBpc1By
b2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBiYTIxZTRkOGI0NzRkNWRh
MGExZWJjNDc3YTEwM2Q4MjljNWVhMTA3Li40Mjc1ZWJkYzZlMDllYTE2YTUzZDhhNzdlNmU4MThh
YWM2NmEzNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y2xvc2VIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aQogdm9pZCBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIG90aGVySWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpTYW1lRW50cnlDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBs
b3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2Vw
dGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsK
IAogICAgIGlmIChpZGVudGlmaWVyID09IG90aGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVI
YW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5LCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25u
ZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBs
b3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RmlsZUhhbmRsZShpZGVudGlmaWVyLCBuYW1l
LCBjcmVhdGVJZk5lY2Vzc2FyeSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW4KIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpnZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVj
ZXNzYXJ5LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZUNh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJD
b3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93
bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RGly
ZWN0b3J5SGFuZGxlKGlkZW50aWZpZXIsIG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5KSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghcmVzdWx0KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0
IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlv
biB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OlJlbW92ZUVudHJ5KGlkZW50aWZpZXIsIG5hbWUsIGRlbGV0ZVJlY3Vyc2l2
ZWx5KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8gZXJyb3IpIG11dGFibGUgewogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY29u
dmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlc29s
dmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgb3RoZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlJlc29sdmVDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAi
Q29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24g
aXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlc29sdmUoaWRlbnRpZmllciwgb3RoZXJJ
ZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlc29sdmUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFN0cmluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlz
IGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhj
ZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0p
OwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6R2V0RmlsZShpZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3du
RXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
IXJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogdm9p
ZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29y
ZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Q2xvc2VTeW5jQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4
Y2VwdGlvbk9yKGVycm9yKSk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGEKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1l
cyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZU5hbWVzQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwg
IkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9u
IGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRIYW5kbGVOYW1lcyhpZGVudGlmaWVy
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8g
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNzksNyArMTc5LDcg
QEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZU5hbWVzKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGUKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpnZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNl
cHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9j
b25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6R2V0SGFuZGxlKGlkZW50aWZpZXIsIG5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0x
OTQsNyArMTk0LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhh
bmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmkKIHZvaWQgV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBWb2lkQ2FsbGJhY2smJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25v
d25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJD
b25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpNb3ZlKGlkZW50aWZpZXIs
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbmV3TmFtZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50
aGVzaXNDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKaW5kZXggYzU3ZTc4MDliMmVlMTY2ZGQ2ZjY4
OGJlMjJhODU5YzdkYWRkYThmYS4uMGM1ZGY1NGRjNDczZDFhNmYzNmQyODgzOWE1YmYxMWVkNjgz
MTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKQEAgLTc3LDkg
Kzc3LDkgQEAgdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKFJlZlB0cjxXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGUKICAgICB9OwogCiAgICAgYXV0byB2b2lj
ZSA9IHV0dGVyYW5jZS0+dm9pY2UoKTsKLSAgICBhdXRvIHZvaWNlVVJJID0gdm9pY2UgPyB2b2lj
ZS0+dm9pY2VVUkkoKSA6ICIiOwotICAgIGF1dG8gbmFtZSA9IHZvaWNlID8gdm9pY2UtPm5hbWUo
KSA6ICIiOwotICAgIGF1dG8gbGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6ICIiOworICAg
IGF1dG8gdm9pY2VVUkkgPSB2b2ljZSA/IHZvaWNlLT52b2ljZVVSSSgpIDogZW1wdHlTdHJpbmco
KTsKKyAgICBhdXRvIG5hbWUgPSB2b2ljZSA/IHZvaWNlLT5uYW1lKCkgOiBlbXB0eVN0cmluZygp
OworICAgIGF1dG8gbGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6IGVtcHR5U3RyaW5nKCk7
CiAgICAgYXV0byBsb2NhbFNlcnZpY2UgPSB2b2ljZSA/IHZvaWNlLT5sb2NhbFNlcnZpY2UoKSA6
IGZhbHNlOwogICAgIGF1dG8gaXNEZWZhdWx0ID0gdm9pY2UgPyB2b2ljZS0+aXNEZWZhdWx0KCkg
OiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggYWFj
NmIzZmExMDcwYTdhM2MwNWRiYTc3MjdmNDBhMzgxZmE0ODE2My4uYWZiMWIyZDkxZGFmMjc0OTgw
ZjM3MWNiZTdkZjUxOWQyZmMyNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMu
bW0KQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlV29yZENhc2UoV2ViUGFnZSog
cGFnZSwgTlNTdHJpbmcgKigqY2hhbmdlQ2FzZSkoTlNTdHJpbmcgKikpCiAgICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgic2VsZWN0V29yZCJfcykuZXhlY3V0ZSgpOwogCiAgICAgTlNTdHJpbmcgKnNl
bGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICBwYWdlLT5yZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQoZnJhbWUucHRyKCksIGNoYW5nZUNhc2Uoc2VsZWN0ZWRTdHJpbmcpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5k
ZXggZWUxNjQ1ZWY0ZTBjODQ0NzU3NDAzZDJjZGU1MWFkNGIxMTMwMmNjYi4uZGU4MDEyN2ViMGJl
MjNhODNhZmQ0NTkzZGViZWU0N2FjMzYzNDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIxNDEsNyArMjE0MSw3IEBA
IEpTQzo6SlNPYmplY3QqIEpTTWVzc2FnZUxpc3RlbmVyOjpqc0Rlc2NyaXB0aW9uRnJvbURlY29k
ZXIoSlNDOjpKU0dsb2JhbE9iamVjdCoKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIiksIEpTQzo6SlNWYWx1ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iKSwgSlNDOjpqc1N0
cmluZyh2bSwgSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSk7CisgICAg
anNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZGVzY3JpcHRpb24iKSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgSVBDOjpkZXNjcmlwdGlv
bihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpIH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKIAogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc3RpbmF0aW9uSUQiKSwgSlNDOjpKU1ZhbHVlKGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSk7CkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJTZW1hcGhvcmUiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlNlbWFwaG9yZSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTQzo6SlNWYWx1ZSgpKTsKICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwg
V2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlKFdURk1vdmUodmFs
dWUpKS0+Y3JlYXRlSlNXcmFwcGVyKHRvUmVmKGdsb2JhbE9iamVjdCkpKTsKICAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3Mp
LCBqc1ZhbHVlKTsKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVl
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIG9i
amVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlNoYXJlZE1lbW9yeSIpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZt
LCAiU2hhcmVkTWVtb3J5Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlND
OjpKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6UmVhZFdy
aXRlOwpAQCAtMjI0MCw3ICsyMjQwLDcgQEAgdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1
ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBv
YmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGF0
YVNpemUiX3MpLCBKU0M6OkpTVmFsdWUodmFsdWUuZGF0YVNpemUpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKLSAgICBvYmplY3QtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvdGVjdGlvbiJfcyksIEpT
Qzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm90ZWN0aW9uID09IFByb3RlY3Rpb246OlJlYWRX
cml0ZSA/ICJSZWFkV3JpdGUiIDogIlJlYWRPbmx5IikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0aW9uIl9zKSwgSlND
Ojpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZFdy
aXRlID8gIlJlYWRXcml0ZSJfcyA6ICJSZWFkT25seSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBvYmplY3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNDBiOTk3
MzIwMDc4MjVlNjY4M2U2MzY4MDQzZjYyYjZiNTkwMzM3Yi4uYjNiZWUyODJlY2NjOWQxZDY3MmNi
MWVmN2Q4NmQ3ZTBkMzg1NzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIFJlZjxBUEk6OkFycmF5PiBXZWJG
cmFtZTo6Y2hpbGRGcmFtZXMoKQogU3RyaW5nIFdlYkZyYW1lOjpsYXllclRyZWVBc1RleHQoKSBj
b25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpLT5jb21wb3NpdG9yKCkubGF5ZXJUcmVlQXNUZXh0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggODVmNWE0OGFhZWZjZjNiNjMw
OGFmNmM0ZjdiNDUxZjBiMmZhMTVjZS4uYjJjODcyYzcwMjQzYWU5ZGIxYzdhMWQ4MmU1ZTYzYjFh
ZjQzNDU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAt
ODEwLDExICs4MTAsMTIgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+YmFja2luZygpLT50aWxlZEJhY2tpbmcoKS0+cHJlcG9w
dWxhdGVSZWN0KHRpbGVDb3ZlcmFnZVJlY3QpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aChTdHJpbmcg
a2V5UGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gdHJhbnNpZW50Wm9v
bVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKEFTQ0lJTGl0ZXJhbCBrZXlQYXRoKQogewogICAgIGNv
bnN0IGZsb2F0IHRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uID0gMC4yNTsKIAotICAgIFJl
dGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBhbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBh
bmltYXRpb25XaXRoS2V5UGF0aDprZXlQYXRoXTsKKyAgICBhdXRvIG5zS2V5UGF0aCA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczprZXlQYXRoLmNoYXJhY3RlcnMoKSBs
ZW5ndGg6a2V5UGF0aC5sZW5ndGgoKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5n
XSk7CisgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2lj
QW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOm5zS2V5UGF0aC5nZXQoKV07CiAgICAgW2Fu
aW1hdGlvbiBzZXREdXJhdGlvbjp0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlvbl07CiAgICAg
W2FuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbYW5pbWF0
aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFsc2VdOwpAQCAtODUzLDcgKzg1NCw3IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91
YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb25zdHJhaW5l
ZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAgdHJhbnNmb3JtLnNjYWxl
KHNjYWxlKTsKIAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5p
bWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9y
bSIpOworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9u
Q0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSJfcyk7
CiAgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3QW5p
bWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKQEAgLTg2Niw3ICs4NjcsNyBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgRmxvYXRQb2ludAogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtD
QVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbem9vbUxheWVyLCBzaGFkb3dDQUxheWVy
LCBwYWdlLCBzY2FsZSwgb3JpZ2luXSAoKSB7Ci0gICAgICAgIHpvb21MYXllci0+cmVtb3ZlQW5p
bWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Iik7CisgICAgICAgIHpvb21MYXllci0+
cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zKTsKICAgICAgICAg
aWYgKHNoYWRvd0NBTGF5ZXIpCiAgICAgICAgICAgICBbc2hhZG93Q0FMYXllciByZW1vdmVBbGxB
bmltYXRpb25zXTsKIApAQCAtODc0LDE3ICs4NzUsMTcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9p
bnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uoc2Nh
bGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktl
eSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOworICAg
IHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zLCBy
ZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVyKSB7CiAg
ICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0ZvckZyYW1l
KGZyYW1lVmlldywgc2NhbGUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFkb3dQ
YXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5VTEwpKTsK
IAotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5pbWF0
aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiKTsKKyAg
ICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1hdGlvbiA9
IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIl9zKTsKICAgICAg
ICAgW3NoYWRvd0JvdW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6c2hhZG93Qm91bmRzXV07Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBz
aGFkb3dQb3NpdGlvbkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5
UGF0aCgicG9zaXRpb24iKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNo
YWRvd1Bvc2l0aW9uQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQ
YXRoKCJwb3NpdGlvbiJfcyk7CiAgICAgICAgIFtzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiBzZXRU
b1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OnNoYWRvd0xheWVyUG9zaXRpb25Gb3JGcmFt
ZShmcmFtZVZpZXcsIGNvbnN0cmFpbmVkT3JpZ2luKV1dOwotICAgICAgICBSZXRhaW5QdHI8Q0FC
YXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5p
bWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCIpOworICAgICAgICBSZXRhaW5QdHI8Q0FCYXNp
Y0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0
aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCJfcyk7CiAgICAgICAgIFtzaGFkb3dQYXRoQW5pbWF0
aW9uIHNldFRvVmFsdWU6KF9fYnJpZGdlIGlkKXNoYWRvd1BhdGguZ2V0KCldOwogCiAgICAgICAg
IFtzaGFkb3dDQUxheWVyIGFkZEFuaW1hdGlvbjpzaGFkb3dCb3VuZHNBbmltYXRpb24uZ2V0KCkg
Zm9yS2V5OkAidHJhbnNpZW50Wm9vbUNvbW1pdFNoYWRvd0JvdW5kcyJdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDQ4NTQ2ZmMxNGExODlmN2YzMTNiOTM5ZWEwZjUyNGFkOWVl
NmNlZDMuLmJmY2ZhYTJhYWY1NDk3ODBmNWRiYjljZjM2NTkyM2I3YmEzODRkNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTQ0LDEwICs0NCw4IEBAIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9u
KCkKIAogdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQoeHBj
X29iamVjdF90IG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkp
OwotICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
VXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgYXV0byogbWVz
c2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBvaW50
Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUEND
b25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9PSBt
ZXNzYWdlTmFtZSkgewogI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCiAgICAgICAgIGF1dG8g
ZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQppbmRleCAwYzUzZDM1
NjA0ZTM0YTY5NGJhYmNmZjNlNjQ3NjU0OGE4ZTEzNDFlLi4wNWFkNjc4YmEzMGFhM2M3Mjg4ZWE0
OTI5ZmRjNDU5MDQzZGZmM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0Fw
cEJ1bmRsZVJlcXVlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVS
ZXF1ZXN0Lm1tCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBBcHBCdW5kbGVEZWxldGlvblJlcXVl
c3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5kbGUmIGIKICAg
ICBpZiAoZXJyb3IpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YnJvYWRjYXN0RGVidWdNZXNzYWdl
KG1ha2VTdHJpbmcoIkZhaWxlZCB0byBkZWxldGUgYXBwIGJ1bmRsZTogIiwgU3RyaW5nKFtlcnJv
ciBkZXNjcmlwdGlvbl0pKSk7CiAKLSAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVw
KGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogIiIpOworICAgIGNhbGxDb21w
bGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9u
XSkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCA0NjU1NTMx
NTIwNWE0Yjc0NDVkM2U3OTdmYjczZTA2ZTljZWNmOTZhLi42MzVkMGFkODgyZTU0ZWRkZDkyYTM5
OTY2OTZjOWZiNWEwMGU4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29u
bmVjdGlvbkNsb3NlZCgpOwogCi0gICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgc2VuZERl
YnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKIAogcHJpdmF0ZToKICAgICBDbGllbnRDb25uZWN0aW9u
KHhwY19jb25uZWN0aW9uX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVu
dENvbm5lY3Rpb24ubW0KaW5kZXggZDA4YzA0NWIxNGU2MjVlMzcyZTBkMGZiYmJjZDA2OTRmZjUx
MmQzMi4uOGIyMWMxNWJiNjBkZWI2NWViYWYxOTk1NTQxZWQxMDk0MmM2MzE1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogICAgIGJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJUdXJuZWQg
RGVidWcgTW9kZSAiLCBtX2RlYnVnTW9kZUVuYWJsZWQgPyAib24iIDogIm9mZiIpKTsKIH0KIAot
dm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQordm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2Uo
U3RyaW5nVmlldyBtZXNzYWdlKQogewogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRpZmllcjsKICAg
ICBhdXRvIHNpZ25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCk7
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1
Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIERhZW1vbjo6c2luZ2xldG9uKCku
YnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZpZXIsIG1lc3Nh
Z2UpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2Fn
ZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBzZW5k
IHRoZSBkZWJ1ZyBtZXNzYWdlIHR3aWNlLgogICAgIC8vIEFmdGVyIGdldHRpbmcgYWxsIGRlYnVn
IG1lc3NhZ2UgY2xpZW50cyBvbnRvIHRoZSBlbmNvZGVyL2RlY29kZXIgbWVjaGFuaXNtLCByZW1v
dmUgdGhlIG9sZCBzdHlsZSBtZXNzYWdlLgpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQ2xpZW50
Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhkaWN0aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1
c2hEOjpwcm90b2NvbERlYnVnTWVzc2FnZUtleSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAg
ICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV94cGNDb25uZWN0aW9uLmdldCgpLCBkaWN0
aW9uYXJ5LmdldCgpKTsKIAotICAgIHNlbmREYWVtb25NZXNzYWdlPERhZW1vbk1lc3NhZ2VUeXBl
OjpEZWJ1Z01lc3NhZ2U+KG1lc3NhZ2UpOworICAgIHNlbmREYWVtb25NZXNzYWdlPERhZW1vbk1l
c3NhZ2VUeXBlOjpEZWJ1Z01lc3NhZ2U+KG1lc3NhZ2UudG9TdHJpbmdXaXRob3V0Q29weWluZygp
KTsKIH0KIAogdm9pZCBDbGllbnRDb25uZWN0aW9uOjplbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChz
dGQ6OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4mJiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaAppbmRleCA5NzgyMzhmNTE3YjBkM2ZiOTZkOTQwNjMxMTMz
ZmM4ZTQwYWE0NDk2Li4wNjYyZjEzZTk4Mzk0OTAwYzU0MWZhYmRlOTU2ZTg1Yzk2NjJkYjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODgsNyArODgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGllbnRDb25uZWN0
aW9uKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogICAgIHZvaWQgcmVt
b3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWdu
ZWQpPiYmKTsKIAotICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOwogICAgIHZvaWQg
YnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1OWVjZjVmMjUwN2M4
MGRhYTAwM2JmZTJjOTczNGU0Li5kMWJmNjFlODNhZjBjMzg1Mjg3ZDdiMjVlOWMyMWJjZThlZDRm
ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zMjAsNyAr
MzIwLDcgQEAgdm9pZCBEYWVtb246OnJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShGdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZnVuY3Rpb24oKTsKIH0KIAotdm9pZCBEYWVtb246
OmJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIERhZW1v
bjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkKIHsKICAgICBmb3Ig
KGF1dG8mIGl0ZXJhdG9yIDogbV9jb25uZWN0aW9uTWFwKSB7CiAgICAgICAgIGlmIChpdGVyYXRv
ci52YWx1ZS0+ZGVidWdNb2RlSXNFbmFibGVkKCkpCkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBE
YWVtb246OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENsaWVu
dENvbm5lY3Rpb24qIGNvbm4KIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJl
cGx5U2VuZGVyKQogewogICAgIGlmICghY2FuUmVnaXN0ZXJGb3JOb3RpZmljYXRpb25zKCpjb25u
ZWN0aW9uKSkgewotICAgICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0ZSBwdXNoIGFu
ZCBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5rbm93biBob3N0
IGFwcGxpY2F0aW9uIGNvZGUgc2lnbmluZyBpZGVudGlmaWVyIik7CisgICAgICAgIHJlcGx5U2Vu
ZGVyKCJDb3VsZCBub3QgZGVsZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25z
IGZvciBjb25uZWN0aW9uOiBVbmtub3duIGhvc3QgYXBwbGljYXRpb24gY29kZSBzaWduaW5nIGlk
ZW50aWZpZXIiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQppbmRleCBkN2E2YjYzZmU0ZGIyZGViNTBhNWU5
ZTE3MTc0MWYxMDg1ZGNhZWQ3Li44MTUxYzYwMWM2MTI4NDhmOTczZmY4OWExZTg3YzYzZWE4ODQ4
Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWlu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KQEAg
LTEzMCw3ICsxMzAsNyBAQCBpbnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IE5T
U2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNV
c2VyRG9tYWluTWFzaywgWUVTKVswXTsKICAgICAgICAgICAgIFN0cmluZyBwdXNoRGF0YWJhc2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhsaWJyYXJ5UGF0aCwg
eyAiV2ViS2l0IiwgIldlYlB1c2giLCAiUHVzaERhdGFiYXNlLmRiIiB9KTsKLSAgICAgICAgICAg
IDo6V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2VydmljZShpbmNvbWlu
Z1B1c2hTZXJ2aWNlTmFtZSwgcHVzaERhdGFiYXNlUGF0aCk7CisgICAgICAgICAgICA6OldlYlB1
c2hEOjpEYWVtb246OnNpbmdsZXRvbigpLnN0YXJ0UHVzaFNlcnZpY2UoU3RyaW5nIHsgaW5jb21p
bmdQdXNoU2VydmljZU5hbWUgfSwgcHVzaERhdGFiYXNlUGF0aCk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgQ0ZSdW5Mb29wUnVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcAppbmRleCBiMjAyYjQ0ODA3OGMzZmVhNWJjOTU1MDgwYWE3ZWVkZTZl
Y2E3OGE4Li45MTAxYzllYzZjNGZlZDMzYTNiNmFlNzk5ZjgxZjIzYjRhOTdmYjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTg3LDcg
Kzg3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFsaXplKCkKIFN0b3Jh
Z2VUcmFja2VyJiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpCiB7CiAgICAgaWYgKCFzdG9yYWdl
VHJhY2tlcikKLSAgICAgICAgc3RvcmFnZVRyYWNrZXIgPSBuZXcgU3RvcmFnZVRyYWNrZXIoIiIp
OworICAgICAgICBzdG9yYWdlVHJhY2tlciA9IG5ldyBTdG9yYWdlVHJhY2tlcihlbXB0eVN0cmlu
ZygpKTsKICAgICBpZiAoc3RvcmFnZVRyYWNrZXItPm1fbmVlZHNJbml0aWFsaXphdGlvbikKICAg
ICAgICAgc3RvcmFnZVRyYWNrZXItPmludGVybmFsSW5pdGlhbGl6ZSgpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgwZmRjMzdkZmQ5NGY5
NWE3YTlkZDFhLi4wMjZkNDg3MDNlMzRjZDc4ZTZkMDM0YWMwMGU2YjdhOTUyY2Q4ZDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTIsOCArNTIsOCBAQAogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAotc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAi
aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBp
bnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQi
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9
ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBpbnNw
ZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQiX3M7
CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZvclByZWZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYga2V5KQogewpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdlYkluc3BlY3Rv
ckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6c2V0SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBz
dG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBkaXNhYmxlZCA/ICJ0
cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRhY2hEaXNhYmxl
ZFNldHRpbmcsIGRpc2FibGVkID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKQpAQCAtMTA5
LDcgKzEwOSw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JTdGFydHNBdHRh
Y2hlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JTdGFydHNBdHRh
Y2hlZChib29sIGF0dGFjaGVkKQogewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JTdGFydHNB
dHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiIDogImZhbHNlIik7CisgICAgc3RvcmVT
ZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQgPyAidHJ1ZSJf
cyA6ICJmYWxzZSJfcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkZWxldGVJbnNw
ZWN0b3JBdHRhY2hEaXNhYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggNDc5MTZlNzgxYTI0MzA0MWUx
ZDU4MjQ4YWJmYWVhYWMwYzU3YmI1OS4uNzk5YTdiNTk1MmIyYjg1Y2I3MGEwYjAwYzU2MmI5MDE3
ODZjMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0
b3J5UHJvcGVydHlMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
SGlzdG9yeVByb3BlcnR5TGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIEhpc3RvcnlQcm9w
ZXJ0eUxpc3RXcml0ZXI6OndyaXRlT2JqZWN0cyhCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJl
YW0mIHN0cgogewogICAgIHNpemVfdCBvdXRlckRpY3Rpb25hcnlTdGFydCA9IHN0cmVhbS53cml0
ZURpY3Rpb25hcnlTdGFydCgpOwogCi0gICAgc3RyZWFtLndyaXRlU3RyaW5nKCJXZWJIaXN0b3J5
RmlsZVZlcnNpb24iKTsKLSAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyIp
OworICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9uIl9zKTsKKyAg
ICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyJfcyk7CiAKICAgICBzdHJlYW0u
d3JpdGVJbnRlZ2VyKGN1cnJlbnRGaWxlVmVyc2lvbik7CiAgICAgc2l6ZV90IG91dGVyRGF0ZUFy
cmF5U3RhcnQgPSBzdHJlYW0ud3JpdGVBcnJheVN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNo
ZS5tbQppbmRleCBjYWMwZThiYzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZkMDllMzE2Li42Mjkx
MTQ2OWFjZGRhNDE5ODdmNDk1NGM1YTY1ZDYzYzhmYjcyZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9u
Q2FjaGUubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBAZW5kCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlJiB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGlj
IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBw
bGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5s
ZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0K
aW5kZXggYjUyNWJiMGQ4YjQ4NTFjZDFhYTUzMzI3OTc5ZDEwNjRmNmVlZTczOS4uZjhlYzJmYjQw
YzNkOGQ1Y2ViNTQ2ZWQ4N2FiYzk0YjA0NGY2ODkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0K
QEAgLTQ0LDcgKzQ0LDcgQEAgKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVu
dGlmaWVyOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgYXV0byBv
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoU3RyaW5n
IHsgZGF0YWJhc2VJZGVudGlmaWVyIH0pOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1
cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4NzdmZjI4N2E3NmMzMTVmMTE5NzM5MWQyNmMwNGMzZWIyNWU2MDVhLi5iZmQ1
ZDA5ZTk4YWRmNzM5YWI4ZjM3N2JjYjdlNGQ1NGUyZTgwNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI2MDgsMTMgKzI2MDgsMTMg
QEAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0b3JFeGNlcHRpb25N
YXAoKQogewogICAgIFNlbGVjdG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hNYXA8U0VMLCBTdHJp
bmc+OwogCi0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxk
RWRpdG9yOiksICJJbnNlcnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2Vy
dFBhcmFncmFwaFNlcGFyYXRvcjopLCAiSW5zZXJ0TmV3bGluZSIpOwotICAgIG1hcC0+YWRkKEBz
ZWxlY3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiKTsKLSAg
ICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246KSwgIk1vdmVQYWdlRG93biIpOwotICAgIG1h
cC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDop
LCAiTW92ZVBhZ2VVcCIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlT
ZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBtYXAtPmFk
ZChAc2VsZWN0b3IoaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6KSwgIkluc2VydE5l
d2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3I6KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRU
YWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiX3MpOworICAgIG1hcC0+YWRkKEBz
ZWxlY3RvcihwYWdlRG93bjopLCAiTW92ZVBhZ2VEb3duIl9zKTsKKyAgICBtYXAtPmFkZChAc2Vs
ZWN0b3IocGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbiJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAiTW92ZVBh
Z2VVcCJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlv
bjopLCAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CiAKICAgICByZXR1cm4gbWFw
OwogfQpAQCAtMjY1MCw3ICsyNjUwLDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kKWNv
cmVDb21tYW5kQnlOYW1lOihjb25zdCBjaGFyKiluYW1lCiAgICAgYXV0byogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQobmFtZSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChTdHJpbmcgeyBuYW1lIH0pOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2Vs
ZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjg4OCw3ICsyODg4LDcgQEAgSUdOT1JFX1dBUk5JTkdT
X0VORAogCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVt
OwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3Nd
XSkgewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0g
TlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAgICAg
ICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0
aW9uTGVmdFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgICAgIFttZW51SXRl
bSBzZXRTdGF0ZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNT
U1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZSldOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CkBAIC0yOTA2LDcgKzI5MDYs
NyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZD
bGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAgICAgICAgICAgICAvLyBUYWtlIGNvbnRyb2wg
b2YgdGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nL3Vu
Y2hlY2tpbmcgaXQgYmVjYXVzZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3b3VsZCBiZSBhbWJp
Z3VvdXMuCi0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCIpICE9
IFRyaVN0YXRlOjpGYWxzZSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTooZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9u
LCAicnRsIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJ
TkdfSU5URVJOQUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUg
aXRlbSIpCiAgICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExl
ZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQpAQCAt
NDY4Myw3ICs0NjgzLDcgQEAgLSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJpbnRpbmcgbWlu
aW11bVBhZ2VMb2dpY2FsV2lkdGg6KGZsb2F0KW1pblBhZ2VMb2dpY2EKICAgICBhdXRvKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJhbWUpIHsKICAgICAg
ICAgaWYgKGF1dG8qIGNvcmVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBj
b3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJwcmludCIgOiAic2Ny
ZWVuIik7CisgICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmlu
dGluZyA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MpOwogICAgICAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEluIHNldHRpbmcg
cHJpbnRpbmcsIHdlIHNob3VsZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFscmVhZHkgY2FjaGVk
IGZvciB0aGUgZG9jdW1lbnQuCiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzA0CkBAIC02NjcyLDcgKzY2NzIsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfSkoKTsKIAogICAgICAgICBp
ZiAoIWlzRnVuY3Rpb25LZXlDb21tYW5kV2l0aE1hdGNoaW5nTWVudUl0ZW0pCi0gICAgICAgICAg
ICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpLZXlwcmVzc0NvbW1h
bmQoImluc2VydFRleHQ6IiwgdGV4dCkpOworICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29t
bWFuZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRUZXh0OiJfcywg
dGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTY4MjI5MjUwYjhjM2IwYzFhY2Y2ZWMxOGVhOTg2
MmE2YmI3ZWJmNS4uNzIxYjhiYWU3M2UwY2ZiYzMwZGUyZWI0ZmEwNDYxZWUxMzNiMTM2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzMwNCw3ICsz
MzA0LDcgQEAgKyAoQk9PTClfY2FuSGFuZGxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dAogKyAoTlNTdHJpbmcgKilfZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YQogewogICAgIFdlYkNv
cmU6OkhUTUxOYW1lczo6aW5pdCgpOyAvLyB0aGlzIG1ldGhvZCBpcyB1c2VkIGZvciBpbXBvcnRp
bmcgYm9va21hcmtzIGF0IHN0YXJ0dXAsIHNvIEhUTUxOYW1lcyBhcmUgbGlrZWx5IHRvIGJlIHVu
aW5pdGlhbGl6ZWQgeWV0Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9odG1sIiktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsgLy8gYm9va21hcmsgZmlsZXMgYXJl
IEhUTUwKKyAgICByZXR1cm4gV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0
ZXh0L2h0bWwiX3MpLT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7IC8vIGJvb2ttYXJrIGZpbGVzIGFyZSBIVE1MCiB9
CiAKIC0gKHZvaWQpX3B1c2hQZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTc5ZTkzN2MzZDBhMTkw
ZGU2YjAwYjM5YjU4ZjY0MjgwOWMxMDJiLi4wYjU4YmQ1OWY2OTcyMDQxZWY0YTVkZWM4NGUxZDNh
MTNiMjI3ZjZmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBt
YWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQmxvYldpdGhVU0Ra
RXh0ZW5zaW9uRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAg
KHJ1blRlc3QpOgorICAgICAgICAoY3JlYXRlRGlyZWN0b3JpZXMpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
OgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjcmVhdGUgZGlyZWN0b3JpZXMg
b24gaU9TIGlmIHdlIGFyZSBvbmx5IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdlcwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggYWNi
N2U0MWJiNjRiZjNmNjk3ZGM4YmE5MTM5YjE5ZjgyYzQwYzlhOC4uNzQ3MDIyZDUxYzEwMjFiYTg0
NGZiZjNmNjhiNmMwZDQ1YjdhM2E2NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC02NTAsNyArNjUwLDcgQEAgLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3VmZml4OkAiLnVz
ZHoiXSk7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
LSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmls
ZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZShTdHJpbmcgeyBmaWxlbmFtZSB9LCBmaWxlSGFuZGxlKTsKICAgICBF
WFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxl
TmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
RmlsZU5hbWUubW0KaW5kZXggMzljYWVhYzgwNDUyNGQ1ZGRkYjA4YmYxY2E4MzY2N2RiZjk3NzU1
MC4uNjNiZjY4ZDQwMDU4NGY0NWVmMTA2MDc3YWM5MTQ5ZjZhNzYwYmIwZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZp
bGVOYW1lLm1tCkBAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoKQogICAgIE5T
U3RyaW5nICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNT
dHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0
cmluZyAqdW51c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwotICAgIE5TU3Ry
aW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29t
cHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcg
KmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRl
SGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwotICAgIE5TU3RyaW5nICp1bnVz
ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICpleGlzdGluZ0Rh
dGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqY3Jl
YXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNo
Rm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmlu
ZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VOYW1lIH0pOwogICAgIE5T
VVJMICppZGJSb290VVJMID0gW3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpIF9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3Rv
cnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwog
ICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKQEAgLTEyNyw4ICsxMjcsOCBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVEaXJlY3RvcmllcyhTdHJpbmcgdGVzdE5hbWUpCiAgICAgaWYgKHRlc3ROYW1lID09
ICJub25lIikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE5TU3RyaW5nICpleGlzdGluZ0Rh
dGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFz
ZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNo
ID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJp
bmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFi
YXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5h
bWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKICAgICBOU1VSTCAqb2xkVmVyc2lv
bkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
InYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9u
T3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMubW0KaW5kZXggNjZmOTI1YWM2NGQ2ODBmOTllZjNlMzYyZWNiZTUzMjM2ZWNkYWM4
NC4uYmUyM2QyZWIwNzRmOTEwZGRmNGZlZTEwYmRlNWY0NjliZjU5OTY5YiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTg3OSw3ICs4NzksNyBAQCBURVNUKFdl
YktpdCwgTWlncmF0ZUluZGV4ZWREQkRhdGFUb0dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KQogewog
ICAgIE5TVVJMICppbmRleGVkREJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltA
In4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdl
YnNpdGVEYXRhL0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJl
Y3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqaW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5ID0gW2luZGV4
ZWREQkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MS9odHRwc193ZWJr
aXQub3JnXzAiXTsKLSAgICBOU1N0cmluZyAqaW5kZXhlZERCRGF0YWJhc2VOYW1lID0gQCJUZXN0
RGF0YWJhc2UiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGluZGV4ZWREQkRhdGFiYXNlTmFtZVtd
ID0gIlRlc3REYXRhYmFzZSI7CiAgICAgTlNTdHJpbmcgKmhhc2hlZEluZGV4ZWREQkRhdGFiYXNl
TmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUo
aW5kZXhlZERCRGF0YWJhc2VOYW1lKTsKICAgICBOU1VSTCAqaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkgPSBbaW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpoYXNoZWRJbmRleGVkREJEYXRhYmFzZU5hbWVdOwogICAgIE5TVVJMICppbmRleGVkREJG
aWxlID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07Cg==
</data>
<flag name="commit-queue"
          id="484386"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456165</attachid>
            <date>2022-03-30 12:42:59 -0700</date>
            <delta_ts>2022-03-30 15:06:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220330124258.patch</filename>
            <type>text/plain</type>
            <size>219574</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjNWExNTExMTkwYzc3MjkyY2E0ODdi
NDk3NzZkNDY0NDZjYWEyMTkuLmMxMWIwMDYwYTAzOWY1YmNjYWFlODFkODRlMmNhNzFkYWZjOGZk
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5U
ZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAg
ICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxp
dGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGJlYmEzMjU2ZjhiNzJmZmYyZGI5YTU2Njg5MjFiNGYxYzE0ODhhZGIuLmQ5YmNkYjgxOWM0
MDhmMGFmZTViNzE0YzVlZThjZmI4ZDBhNWVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBA
QAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNv
bnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6Y3JlYXRl
T3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRJbmRleFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRJbmRleFJlY29yZHNSZWNvcmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZm9UYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0
cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgor
ICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpk
dW1wSGVhcCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6c2Vy
aWFsaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6
YWRkUGF0dGVybik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwZW5kQm9vbGVhbik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4
ZWREQik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6OmluZGV4U1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpp
bk1lbW9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmluTWVtb3J5UGF0aCk6
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorCiAyMDIy
LTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhh
c2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1h
cHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOWQ1Y2M5MTQ4NTdlOTViYTU2MTNlNzE4NzQyMjQy
NTg1MjJkZWRjLi44Yjg5ZTdhMTYzYzMzZDQ3YzMwNTU5MWMzZTg0ZmU5NzQ4NWQwY2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9y
IG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjphcHBlbmRCb29sZWFuKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3Rp
Y1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdp
c3RyYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0Ojpsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFs
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVu
bGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0
aCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
QmxvYlN0b3JhZ2U6OmdldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFwRmlsZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9y
YWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNw
cDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKToKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsRmVhdHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAg
ICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAgICAgICAoZW5j
b2RlT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9j
YXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAocmVwbHlCbG9ja1NpZ25hdHVyZSk6CisgICAg
ICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZva2VNZXRob2Q6XSk6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbik6CisgICAgICAgICogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENs
aWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2Vy
dmljZU1haW4pOgorICAgICAgICAqIFNoYXJlZC9JUENUZXN0ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVu
c2lvblR5cGVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmlu
Zyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpnZXRVc2VyRGlyZWN0b3J5U3VmZml4KToKKyAgICAg
ICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6b3Bl
bkFuZE1hcENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWRSZWYuY3BwOgorICAgICAgICAoV0tEb3dubG9hZFNldENsaWVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZXNzaW9uSGlz
dG9yeVVSTFZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRM
aXN0SXRlbVZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJl
ZmVyZW5jZXNDcmVhdGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlm
aWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0
U3RvcmVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW06CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRo
VVJMOl0pOgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTEFu
ZExlZ2FjeUZpbGVuYW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBpbml0XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6bG9h
ZFJlcXVlc3RUb0ZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRT
b2Z0TGluay5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0U3dpZnRMaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVu
c2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tDaGFuZ2VUZXh0U3R5bGU6XSk6
CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgX3drQ2hhbmdlVGV4dEFs
aWdubWVudDpdKToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tD
aGFuZ2VDb2xvcjpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omluc2VydFRleHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmdldFNlY3VyaXR5T3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRl
dmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRh
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5j
aGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1
ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFj
a2VyOjpsb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpldmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpjYW5jZWxPdXRzdGFuZGluZ0V2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OnN0b3BXYWl0aW5nRm9yRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW06CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRp
Y2F0b3JVdGlscy5tbToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJpdmF0ZUtleSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VS
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6V2Vi
UGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3Bl
ZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdl
YnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0
cmFibGVEb21haW5zRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2ViS2l0Ojpm
b3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
U2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6aW5jcmVhc2VC
dWZmZXJlZEFtb3VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZT
ZW50aW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dGhyZWFkRW50cnkpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojpjc3NBbGlnbm1lbnRWYWx1ZUZv
ck5TVGV4dEFsaWdubWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFr
ZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlI
YW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OnJlbW92ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpnZXRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRs
ZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpnZXRIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246Om1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50OjpzcGVhayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2Fz
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VMaXN0ZW5lcjo6anNEZXNjcmlw
dGlvbkZyb21EZWNvZGVyKToKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0IGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0
VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiB3ZWJwdXNoZC9BcHBCdW5kbGVS
ZXF1ZXN0Lm1tOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6
ZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorICAgICAgICAqIHdlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0
RGVidWdNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpzZW5k
RGVidWdNZXNzYWdlKToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmg6CisgICAg
ICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaERhZW1vbk1h
aW4pOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29r
dXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAxNTMxZWM4
YTllNGFkZmYwYjk0MGM4NzgxZjY2YTFjMGFlZDI2MGY0Li4xZGM3OGE5ZjQzNjdjNGYwM2U0Y2E1
YzdiM2NkMjM3MTFkNjJkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29u
c3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcik6CisKIDIwMjItMDMtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEdXN0
IG9mZiBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggMDA2NzM2
NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uM2Q0NWIyNTZhNjQyNmZkMjM5OGE1
ODczYWFkZDM0NjZhNDVlMjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3Rv
ckF0dGFjaERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5n
IGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ5Njc3OWU0MTgwODgwYjc1NWQ2Yzg4Y2NjMGE0NmQ2MWZm
NGU1ZGUuLmQ3MWU4YWY5MTgyYjMzYWViYjI4N2UzYzIxMWMxOTk3ZmQ5Y2M1ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdl
YktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAgICAgIChIaXN0b3J5UHJv
cGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVT
ZWxlY3RvckV4Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcmVDb21tYW5k
QnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRp
bmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0
aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdFZpZXdTaXplOnBh
Z2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4
dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcg
X2RlY29kZURhdGE6XSk6CisKIDIwMjItMDMtMjggIElhbiBBbmRlcnNvbiAgPGlhbmFAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xpZW50cyBmYWlsIHRvIGJ1aWxk
IGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJLaXRMZWdhY3kKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCA2ZjY2NWQwODNmNzU4MjcxZTE4ZjM4OGU3YjRmMzVmMGNkODg0OTA4Li4yMTE4
M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW4KIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBi
ZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYsIFN0cmluZ1ZpZXcgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1v
ZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9v
bCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9m
ZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3Ro
ZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAppbmRleCAzMjY5YzU2MWQxNTU2ZGNkYWI4Y2U0MGU0
MmEyMzljM2Y1YWY0N2YzLi4wMTY3N2I2MzllNzdmNjNmMDgxMjJiZTU0OTYxMDI2ZDA2YjJkYjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3JUcmFpdHMuaApAQCAtNzQsNiArNzQsMTIgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+IDog
U2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3Rv
clRyYWl0czxBdG9tU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIAorICAg
IHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxBU0NJSUxpdGVyYWw+IDogVmVjdG9yVHJh
aXRzQmFzZTxmYWxzZSwgdm9pZD4geworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2Fu
SW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KICAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPj4KICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggZWU0ZjQwMGQ3M2U4ZjkxNGIxMzQ0NDM0MWQ4NmJkNTEyMzJi
MDViZS4uYzVkYjBmOWU5ZTQxYmFjZTNhOTE4MTA5ZWUwZjBjZWQyOWEwOWIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtODksNyArODksNyBAQCBTdHJpbmcg
Y3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IHRlbXBvcmFyeUZpbGU7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0
IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSwgU3RyaW5nVmlldyBz
dWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCBjZDE5NDc3
YWM1MWE1NGIwNDkwMWVlYWYzN2ZkZjBjZWJhMzhhZTc0Li42ZTBlNDc2NzIyNjY0NGE5NjIzYjJi
YzYzMWFhNTA5MTAxZTU4ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlv
blRpbWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1TdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIFN0cmlu
Z1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRlZCwg
YnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1vbmx5
LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDQyNzZmNzdlMjE4ZDFmNGFiMWVm
ZTVlMjgxMzBiOTA1NTBjYzZiNDUuLjdmOWU4ZmMzZDBmYzNlM2M2ODc0Y2U2NzI4ZTM2ZWQyNGM4
MGYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjE1
LDcgKzIxNSw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5n
VmlldyBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBTdHJpbmdWaWV3IHN1ZmZp
eCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBPSyBmb3Ig
bm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQtb25seS4KICAgICBBU1NF
UlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxp
dGVyYWwuaAppbmRleCA1YzIzN2YzMDllMWI4MGNlYWEyYTNjMmFjMmE4YzRkYWE3MmU2MzFkLi44
MDI2NDYyNjI5OGQ2MmVkMjE3ZjFkNTljYThjMmYxOWVkZmJlMGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QVNDSUlMaXRlcmFsLmgKQEAgLTYzLDYgKzYzLDE2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogbV9jaGFyYWN0ZXJzOwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShBU0NJSUxpdGVy
YWwgYSwgY29uc3QgY2hhciogYikKK3sKKyAgICByZXR1cm4gYiAmJiAhc3RyY21wKGEuY2hhcmFj
dGVycygpLCBiKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShBU0NJSUxpdGVyYWwgYSwg
QVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuICFzdHJjbXAoYS5jaGFyYWN0ZXJzKCksIGIu
Y2hhcmFjdGVycygpKTsKK30KKwogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFscyB7CiAK
IGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3BlcmF0b3IiIiBfcyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzLCBzaXplX3QgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiMmM5
NmUwYzdiN2VhMTBiOGVhMmQ4MDM0ZjBlMDcyZTU1ZDE4MGM0Li4yOGQxY2U1ZjZlZTE4YmQwNjlk
N2Y2NzZkYjUxMjU0ZjRhMzVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgo
Y29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1cm4g
cHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlLCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBz
dXBwb3J0ZWQsIGJ1dCBPSyBmb3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09T
LXBvcnQtb25seS4KICAgICBBU1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRlMjBhNGI5YmViM2RmZWRm
NTljNTAzOGJiYzQyYTgxOWQ1MjhjMGMuLjJiOWIzODRjNTZhZGVmZWYyMzlhZGUyNGQ0ODFlMWY0
ZjYwNjU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNTAsNyAr
MjUwLDcgQEAgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkK
IAogc3RhdGljIElEQkVycm9yIGNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5
KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQg
PSBkYXRhYmFzZS50YWJsZVNRTCgiUmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVt
ZW50ID0gZGF0YWJhc2UudGFibGVTUUwoIlJlY29yZHMiKTsKICAgICBpZiAodGFibGVTdGF0ZW1l
bnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNS
ZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIFJlY29yZHMgdGFibGUgKCIsIGRh
dGFiYXNlLmxhc3RFcnJvcigpLCAiKSAtICIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKSB9OwpA
QCAtMjk0LDcgKzI5NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRCbG9iVGFibGVzKCkKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1f
c3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFN0cmluZyByZWNvcmRzVGFibGVTdGF0ZW1lbnQg
PSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiX3MpOworICAgIFN0cmluZyByZWNv
cmRzVGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiKTsK
ICAgICBpZiAocmVjb3Jkc1RhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAo
IW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVy
cm9yIGNyZWF0aW5nIEJsb2JSZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3Io
KSwgIikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMwNCw3ICszMDQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxl
cygpCiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYlJl
Y29yZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwogCi0gICAgU3RyaW5nIGZpbGVzVGFibGVTdGF0ZW1l
bnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYkZpbGVzIl9zKTsKKyAgICBTdHJpbmcgZmls
ZXNUYWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iRmlsZXMiKTsKICAg
ICBpZiAoZmlsZXNUYWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3Nx
bGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNjaGVtYSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiRXJyb3IgY3Jl
YXRpbmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAi
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMzOCw3ICszMzgsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUo
KQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVu
KCkpOwogCi0gICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwo
IkluZGV4UmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVE
Qi0+dGFibGVTUUwoIkluZGV4UmVjb3JkcyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2M0luZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBJbmRleFJlY29yZHMgdGFibGUg
KCIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJv
ck1zZygpKSB9OwpAQCAtMzc4LDcgKzM3OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKG1fc3FsaXRl
REIpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTdHJpbmcgaW5k
ZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzSW5kZXgiX3Mp
OworICAgIFN0cmluZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRl
eFJlY29yZHNJbmRleCIpOwogICAgIGlmIChpbmRleFN0YXRlbWVudCA9PSBJbmRleFJlY29yZHNJ
bmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTM5Niw3
ICszOTYsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzUmVjb3JkSW5kZXgoKQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NF
UlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIGluZGV4U3RhdGVtZW50ID0g
bV9zcWxpdGVEQi0+aW5kZXhTUUwoIkluZGV4UmVjb3Jkc1JlY29yZEluZGV4Il9zKTsKKyAgICBT
dHJpbmcgaW5kZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRz
UmVjb3JkSW5kZXgiKTsKICAgICBpZiAoaW5kZXhTdGF0ZW1lbnQgPT0gdjFJbmRleFJlY29yZHNS
ZWNvcmRJbmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAg
LTQ4Niw3ICs0ODYsNyBAQCBzdGQ6Om9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZgogICAgIEFTU0VSVChtX3Nx
bGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5n
IHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVjdFN0b3JlSW5mbyJf
cyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9i
amVjdFN0b3JlSW5mbyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCkBAIC03NzUsNyArNzc1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0
RXhpc3RpbmdEYXRhYmFzZUkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAKLSAgICBpZiAo
IW1fc3FsaXRlREItPnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUluZm8iX3MpKQorICAgIGlmICgh
bV9zcWxpdGVEQi0+dGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyIpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBkYXRhYmFzZU5hbWU7CkBAIC05NTAsNyArOTUwLDcg
QEAgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmRhdGFiYXNlTmFtZUFuZFYKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
b3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBu
YW1lIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KLSAgICBpZiAoIWRhdGFiYXNlLnRhYmxlRXhpc3RzKCJJREJEYXRhYmFz
ZUluZm8iX3MpKSB7CisgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJ
bmZvIikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJEYXRhYmFzZUlu
Zm8gdGFibGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVy
cm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CmluZGV4IGNhYjRiOGRlMjAyZTc3ZDcwMjgyYjU5NGExYmVmYmQ3NWIwNmNiMmQuLjA5ZWM4ZjYw
M2U5ZDAyMmIzNzhkZGEwZTQyN2ZlYzUyMWZkZDUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIC8vIGluaXRpYWxpemVyIGJ1dCBjdXJyZW50bHkgdGhhdCBkb2VzIG5vdCB3b3Jr
LgogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUi
X3MsIGZpbGVIYW5kbGUsICIudXNkeiJfcyk7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsK
ICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKICAg
ICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKaW5kZXggY2QwYzQxNGZiMzEwMDI0MTNlYTJiZmRkMDk4MzA1ZDUxYjlm
MWZkMi4uYjEzMjBmMDA4YmJmOTMzNTliMmI4NTMxZGViMTZmMTRkOWY5OGU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTM2Niwx
MSArMzY2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZl
cmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH07CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFN0cmluZyB0YWJsZU5hbWUodW5xdWFsaWZpZWRJ
bmZvVGFibGVOYW1lKTsKLSAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4
aXN0cyh0YWJsZU5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFi
bGVFeGlzdHModW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1f
bmV3ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVj
dXRlQ29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1
ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhtYWtlU3RyaW5nKCJDUkVB
VEUgVEFCTEUgIiwgdW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lLCAiIChrZXkgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0
cmluZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFz
ZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RF
cnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxp
dGVEYXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGE0ZjBjNzQ0NTIzNzFhNGRiZDhk
ZjA4NjA2OWVjZDEwYWJhMzIyOWYuLjllYjM5MWM2ZDBiZDZkNDg2MDUxMGVkYWI3Mjg5MzM5OTUw
NmJjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgRGF0YWJhc2VUcmFja2VyOjpE
YXRhYmFzZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAKIFN0cmluZyBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBT
UUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG1fZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCAiRGF0YWJhc2VzLmRiIl9zKTsKKyAgICByZXR1
cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgIkRhdGFiYXNlcy5kYiIpOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25B
Y3Rpb24gY3JlYXRlQWN0aW9uKQpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFj
dGlvbikKICAgICB9CiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAK
LSAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiX3MpKSB7CisgICAgaWYg
KCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYgKCFtX2Rh
dGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQg
VU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT3JpZ2lucyB0YWJsZSIpOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFz
ZXMiX3MpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkg
ewogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBE
YXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4g
VEVYVCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIs
IHBhdGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0YWJhc2VzIHRhYmxlIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCA1ZjkzNDkx
NzU2ZjI3ZWMwNGQ0ZGVhOWQzODFiN2E2NGM2Yzc5MjA3Li42YTkwMTk3YjQ0NmM2NGVjM2E3M2Iz
MzIzYTk0NTQwY2Q1OGQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6ZGVsZXRl
QWxsTGlua2VkQ29kZShEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkKIHZvaWQgR0NDb250cm9s
bGVyOjpkdW1wSGVhcCgpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGVIYW5kbGU7Ci0gICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJHQ0hlYXAiX3MsIGZpbGVIYW5kbGUpOworICAgIFN0cmluZyB0ZW1wRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiR0NIZWFwIiwgZmlsZUhhbmRsZSk7
CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRHVtcGluZyBHQyBoZWFwIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFy
eSBmaWxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMDUyYjU5N2JjZmI5MmE3NDM3OTNm
OTE1ZWQ2OTZlN2EwZTllNDhmMS4uMDRjNmRhNWE4NDhkMDg5MWYzM2Y0ZjgzOWRhOTUyYjhjNzY3
OWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFs
aXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFs
aXplZE5GQS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZh
KQogewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7Ci0gICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJT
ZXJpYWxpemVkTkZBIl9zLCBmaWxlKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIlNlcmlhbGl6ZWRORkEiLCBmaWxlKTsKICAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRl
clBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuY3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5Nzc2OTE4OWU3NGEu
LmE5ZWM4ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAt
MzQ5LDcgKzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFyc2VyKENvbWJpbmVk
VVJMRmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQYXJzZXI6On5VUkxG
aWx0ZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMg
VVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBw
YXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitVUkxGaWx0ZXJQYXJz
ZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihTdHJpbmdWaWV3IHBh
dHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQog
ewogICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBOb25BU0NJ
STsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRl
clBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmgKaW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJjODAyOGI0MS4uYTQ5
M2I5MTY1YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVzU3RyaW5nKFBhcnNl
U3RhdHVzKTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxGaWx0ZXJz
Jik7CiAgICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVzIGFkZFBhdHRlcm4o
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2
NF90IHBhdHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihTdHJpbmdWaWV3IHBh
dHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsK
IAogcHJpdmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmluZWRVUkxGaWx0ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CmluZGV4IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2NGQuLjBkNDdkN2Mw
NmIzMTM5OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIs
IHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9p
ZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5h
cHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMmQzODZkYjFmZjNj
NjJjYWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uYTY4MmNjYmE3NTQyOWQ3Mjg1MjZkOGFjZjhm
YjBlZTc1MjJkMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcApAQCAtODYsNyArODYsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBh
cmF0b3JDaGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBh
cmF0b3JDaGFyYWN0ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihTdHJpbmdWaWV3IGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhl
cmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJ
ZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBz
dGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKGNvbgogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBz
ZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdC4KICAgICBhdXRv
IHBvcnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0g
MTsKLSAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
MTZfdD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0KHBvcnRMZW5ndGgp
KTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
MTZfdD4oZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KHBvcnRMZW5ndGgpKTsKIAogICAgIC8vIE5v
dGhpbmcgYWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhl
IGNvbG9uIGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKQEAgLTExNyw3ICsx
MTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogCiAgICAgYXV0byBwcm90b2NvbCA9IGRh
dGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0
ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9y
MiAtIHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wsIGhvc3QsIHBvcnQgfTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wudG9TdHJpbmcoKSwgaG9zdC50b1N0cmluZygpLCBwb3J0IH07CiB9CiAKIFNlY3VyaXR5
T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IDM3MzUwYWE0MGE2YmUw
YmQyNmRjNjU1MWJjNzA0NjM0ZGE5YzIzOWEuLmZhNDQ2ZGI2MTc4NDY0NzhlNDQ0MjVhODZmNTky
MDU2OTg3OTQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApA
QCAtNzEsNyArNzEsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICAvLyBTZXJp
YWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVzZWQg
YXMgcGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBiZSB1c2Vk
IGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlP
cmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwogICAgIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9y
aWdpbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDVhY2IyOWNmYjQ1OTk3YTE4ODZmYmNhNzVjMDE1MDdh
M2JiZTY0ZmIuLjI5Y2ZjMzA0MzIyYmJkMmRhOGQwMzU1YmJlZTM1ZDcxNTI1NDNjNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xNTIsMTYg
KzE1MiwxNiBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVNDSUlMaXRlcmFsIHN1
cHBvcnRlZEltYWdlTUlNRVR5cGVBcnJheVtdID0gewogI2VuZGlmCiB9OwogCi10ZW1wbGF0ZTxB
U0NJSVN1YnNldCBzdWJzZXQsIHVuc2lnbmVkIHNpemU+IHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25z
dCBjaGFyKj4gbWFrZUZpeGVkVmVjdG9yKGNvbnN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVy
YWw8c3Vic2V0PiAoJmFycmF5KVtzaXplXSkKK3RlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNldCwg
dW5zaWduZWQgc2l6ZT4gc3RhdGljIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gbWFrZUZpeGVk
VmVjdG9yKGNvbnN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiAoJmFycmF5
KVtzaXplXSkKIHsKLSAgICBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gcmVzdWx0KHN0ZDo6c2l6
ZShhcnJheSkpOworICAgIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gcmVzdWx0KHN0ZDo6c2l6
ZShhcnJheSkpOwogICAgIHN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4oYXJyYXkpLCBzdGQ6OmVu
ZChhcnJheSksIHJlc3VsdC5iZWdpbigpLCBbXSAoYXV0byBsaXRlcmFsKSB7CiAgICAgICAgIHJl
dHVybiBsaXRlcmFsLmxpdGVyYWw7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Rml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gTUlNRVR5cGVSZWdpc3RyeTo6
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogewogICAgIHJldHVybiBtYWtlRml4ZWRWZWN0b3Io
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUFycmF5KTsKIH0KQEAgLTI0NCw3ICsyNDQsNyBAQCBjb25z
dGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHBkZk1JTUVUeXBlQXJyYXlbXSA9IHsKICAg
ICAidGV4dC9wZGYiLAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1JTUVUeXBlUmVn
aXN0cnk6OnBkZk1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IE1JTUVUeXBl
UmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpCiB7CiAgICAgcmV0dXJuIG1ha2VGaXhlZFZlY3Rvcihw
ZGZNSU1FVHlwZUFycmF5KTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBjb25zdGV4cHIgQ29tcGFy
YWJsZUxldHRlcnNMaXRlcmFsIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlQXJyYXlbXSA9IHsKICAg
ICAidGV4dC94LXZjZiIsCiB9OwogCi1GaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlNRVR5cGVS
ZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0
ZXJhbD4gTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKIHsKICAg
ICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlQXJyYXkpOwog
fQpAQCAtNjkwLDcgKzY5MCw3IEBAIGNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwg
dXNkTUlNRVR5cGVBcnJheVtdID0gewogICAgICJtb2RlbC92bmQudXNkeit6aXAiLCAvLyBUaGUg
b2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlw
ZXMvbW9kZWwvdm5kLnVzZHoremlwCiB9OwogCi1GaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlN
RVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4g
TUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkKIHsKICAgICByZXR1cm4gbWFrZUZpeGVk
VmVjdG9yKHVzZE1JTUVUeXBlQXJyYXkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oCmluZGV4IDhjMmQ2ZmEwMjU2OTY4NjcyZTFjYjQ3YTM3MjA3OWE2MmE5
MWZmYzcuLjZiNTE2MmQ5YWRjZjJjZWUyMjk4MzRkNTg1YzUwNjU5NDc3ZGVjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTEzMiwxMyArMTMyLDEz
IEBAIHB1YmxpYzoKICAgICAvLyBtYWtlcyB0aGlzIHRlc3QgaXMgYWZ0ZXIgbWFueSBvdGhlciB0
ZXN0cyBhcmUgZG9uZSBvbiB0aGUgTUlNRSB0eXBlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gcGRmTUlNRVR5cGVzKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRW
ZWN0b3I8Y29uc3QgY2hhcio+IHVzZE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHBkZk1JTUVUeXBlcygpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHVuc3VwcG9ydGVkVGV4
dE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHVzZE1JTUVUeXBlcygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKaW5kZXggYWYxZTRk
OGJiZmEyYTc1NTdkOGNmYTFhOTU1ZTE5NjRhMTkzODIxNC4uMjA3YmY0NjYyZWZkZGU0NjU5YTY2
MGRiNjFkOGNlODhhNTcyY2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
c3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25VVEksIGMKICAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoJy4n
LCBkZXN0aW5hdGlvbkV4dGVuc2lvbik7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZGVzdGluYXRpb25GaWxlSGFuZGxlOwotICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEltYWdlIl9zLCBkZXN0aW5hdGlv
bkZpbGVIYW5kbGUsIHN1ZmZpeCk7CisgICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wSW1hZ2UiLCBkZXN0aW5hdGlvbkZpbGVIYW5k
bGUsIHN1ZmZpeCk7CiAgICAgaWYgKGRlc3RpbmF0aW9uRmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KEltYWdlcywgInRyYW5zY29kZUltYWdlOiBEZXN0aW5hdGlvbiBpbWFnZSBjb3VsZCBub3QgYmUg
Y3JlYXRlZDogJXMgJXNcbiIsIHBhdGgudXRmOCgpLmRhdGEoKSwgZGVzdGluYXRpb25VVEkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KaW5k
ZXggMDc3M2Y1ODg2ZTQwYTAyZWE5ZTNjYTA4MDIwNWM0NzJhOWIyODM0OS4uZGM3YTNjZTdmZjNi
N2VkMTlkZWYwZmY0OGEyMDQ5ODBkNDk2N2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQpAQCAtNTExLDIxICs1
MTEsMjEgQEAgcHVibGljOgogCiAgICAgICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1Jl
dHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVy
IGZvciBFbnRlci4KICAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09ICdccicp
IHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAgICAgICAgICBtX3VubW9kaWZpZWRU
ZXh0ID0gIlxyIjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJcciJfczsKKyAgICAgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgYWRq
dXN0bWVudHMgYmVsb3cgYXJlIG9ubHkgbmVlZGVkIGluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
bW9kZSwgYnV0IHdlIGNhbm5vdCB0ZWxsIHdoYXQgbW9kZSB3ZSBhcmUgaW4gZnJvbSBoZXJlLgog
CiAgICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDgsIGJlY2F1c2UgYmFja3NwYWNlIG5lZWRzIHRv
IGFsd2F5cyBiZSA4LgogICAgICAgICBpZiAobV90ZXh0ID09ICJceDdGIikKLSAgICAgICAgICAg
IG1fdGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCJfczsKICAgICAgICAg
aWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQotICAgICAgICAgICAgbV91bm1vZGlmaWVk
VGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiX3M7CiAg
ICAgICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgdGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFw
cEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICAgICAgaWYgKG1f
d2luZG93c1ZpcnR1YWxLZXlDb2RlID09IDkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJceDki
OwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICAgICAgbV90
ZXh0ID0gIlx4OSJfczsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CiAg
ICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMzUxNTFiYTY2ZjNiMmM0ZWZhMWY2OWY2
NmM0MjU0YzI4NGQ0ZDUwYy4uYmI1OTVmZGJmYzIwNzg2NmY4OThlZGY5MWFkY2I5OTNiNzBkN2M2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdCBWZWN0b3I8U3RyaW4K
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOwogICAgICAgICBmb3IgKGF1dG8mIGJs
b2IgOiBibG9ic0ZvcldyaXRpbmcpIHsKICAgICAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlOwotICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJCbG9iIl9zLCBmaWxlKTsKKyAgICAgICAgICAgIFN0
cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQmxvYiIs
IGZpbGUpOwogICAgICAgICAgICAgaWYgKCF3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNUb0Zp
bGUoYmxvYi5maWxlUGF0aHNPckRhdGFCdWZmZXJzLCBmaWxlLCB0ZW1wRmlsZVBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgZmlsZVBhdGhzLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBmMmUzZWRhZDUwZWRhMmZkZTBlNWQ1NjdhYWUzMzczZGM1NWRiMDUwLi4xZWI2ZGViYWZjMjNj
NDJkZDEyZWQ3NmExZjZmMTA1ZmUyOWNlZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTg5LDExICs4OSw2IEBAIFNRTGl0ZURhdGFi
YXNlOjp+U1FMaXRlRGF0YWJhc2UoKQogICAgIGNsb3NlKCk7CiB9CiAKLWNvbnN0IGNoYXIqIFNR
TGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgoKQotewotICAgIHJldHVybiAiOm1lbW9yeToiOwot
fQotCiBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9w
ZW5Nb2RlIG9wZW5Nb2RlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vzc2FyeSgpOwpA
QCAtNDI2LDEyICs0MjEsMTIgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmQo
QVNDSUlMaXRlcmFsIHF1ZXJ5KQogICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5l
eGVjdXRlQ29tbWFuZCgpOwogfQogCi1ib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3Rz
KFN0cmluZ1ZpZXcgdGFibGVOYW1lKQogewogICAgIHJldHVybiAhdGFibGVTUUwodGFibGVOYW1l
KS5pc0VtcHR5KCk7CiB9CiAKLVN0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCitTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKFN0cmlu
Z1ZpZXcgdGFibGVOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7
IH07CkBAIC00NDMsNyArNDM4LDcgQEAgU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICByZXR1cm4gc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDApOwogfQogCi1TdHJpbmcgU1FMaXRlRGF0YWJhc2U6OmluZGV4U1FMKGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lKQorU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjppbmRleFNRTChTdHJpbmdWaWV3IGlu
ZGV4TmFtZSkKIHsKICAgICBpZiAoIWlzT3BlbigpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCBkNDE0Yjlh
NmNhMzYzNjFmN2IxMTcxMTc2YTFlOTRkNDFjYjllODNiLi45MTYwMTM0ODE3NTkyMTNhYTUyZDE5
OGE0N2UyZTVjNGQ2YTk4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgU1FMaXRlRGF0YWJhc2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2Uo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBjaGFyKiBpbk1lbW9yeVBhdGgo
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBpbk1lbW9yeVBhdGgoKSB7IHJl
dHVybiAiOm1lbW9yeToiX3M7IH0KIAogICAgIGVudW0gY2xhc3MgT3Blbk1vZGUgeyBSZWFkT25s
eSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVDcmVhdGUgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgPSBPcGVuTW9kZTo6UmVhZFdy
aXRlQ3JlYXRlKTsKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZXhlY3V0ZUNvbW1hbmRTbG93KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKTsKICAgICAKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyB0YWJsZVNRTChjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgaW5kZXhTUUwoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0
YWJsZUV4aXN0cyhTdHJpbmdWaWV3KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGFibGVT
UUwoU3RyaW5nVmlldyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGluZGV4U1FMKFN0cmlu
Z1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxUYWJsZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgcnVuVmFjdXVtQ29tbWFuZCgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA3MmQ0YTg3NDlhMDhkMGE3
MzgzNDg2NGY2ZjZmMzhkZjU0OTQ0ODIzLi5lYzBkMWNlZTViYTFhMDg4MDUwMDBmZjcwZDc0NjQ2
NTAzNmQ3NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNRTGl0ZUZpbGVTeXN0ZW06OlNRTGl0ZUZp
bGVTeXN0ZW0oKQogewogfQogCi1TdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJh
c2VGaWxlTmFtZVRvUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUpCitTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0
aChTdHJpbmdWaWV3IHBhdGgsIFN0cmluZ1ZpZXcgZmlsZU5hbWUpCiB7CiAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7CiB9CkBA
IC0xMjgsNyArMTI4LDcgQEAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gU1FMaXRlRmlsZVN5c3Rl
bTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gRmls
ZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUpOwogfQogICAgIAotU3RyaW5n
IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKK1N0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KFN0cmluZ1ZpZXcgZmlsZU5hbWUpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNy
eXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OwogICAgIGF1dG8gdXRmOEZpbGVOYW1lID0gZmlsZU5hbWUudXRmOCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKaW5kZXggNjRmMWEyYzEyYTkx
MWFlYjBhZGM1OWVmYmJjZTUzOTA5Yjk1OTU2Yy4uNTM0MjcxMGY3YmJkMjE5YWQ3YmRlZjA3NGQw
ZDNjNjQ5MjMzNjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIHBh
dGggLSBUaGUgZGlyZWN0b3J5LgogICAgIC8vIGZpbGVOYW1lIC0gVGhlIGZpbGUgbmFtZS4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1Bh
dGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgoU3Ry
aW5nVmlldyBwYXRoLCBTdHJpbmdWaWV3IGZpbGVOYW1lKTsKIAogICAgIC8vIE1ha2VzIHN1cmUg
dGhlIGdpdmVuIGRpcmVjdG9yeSBleGlzdHMsIGJ5IGNyZWF0aW5nIGFsbCBtaXNzaW5nIGRpcmVj
dG9yaWVzCiAgICAgLy8gb24gdGhlIGdpdmVuIHBhdGguCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIE1vdmVzIGEgZGF0YWJhc2UgZmlsZSB0byBhIG5ldyBwbGFjZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBtb3ZlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYg
b2xkRmlsZVBhdGgsIGNvbnN0IFN0cmluZyYgbmV3RmlsZVBhdGgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoU3RyaW5nVmlldyBmaWxlUGF0aCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNlIGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZh
cmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2UgZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IGQ2NGNjYzBiNjAxOGM3ZmU3NDZlN2FjZmU2MTBmY2U0ZjliMDY1YzUuLjZkYjY0
NDBjZjk2ZDkyYWMyZDdmNWJlMWQ1MjIzYWUwNWEwMTcxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyCiAgICAg
ICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhH
cmFwaGljc0NvbnRleHRHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQo
dHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1h
cGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldh
c0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFs
c2UsIElQQzo6U2VtYXBob3JlIHsgfSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKaW5kZXggY2M2MTUyNDc5M2MwZjExY2ZlYjhkNGE4NGVjZmE5YWY0ZTZlMmFhNy4uZjZi
MzIzMDg3N2U3ZWI1NjE1NGFkMGVhMWQxNDNkYmYxYjRjZGJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNTAzLDcg
KzI1MDMsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0Nv
cnJlY3RTdWJTdGF0aXN0aWNzQ291bnQoY29uc3QgUmVnaQogICAgIHJldHVybiAoc3ViRnJhbWVV
bmRlclRvcEZyYW1lQ291bnQtPmNvbHVtbkludCgwKSA9PSAxICYmIHN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLT5jb2x1bW5JbnQoMCkgPT0gMSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJvb2xl
YW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBmbGFn
KQorc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBBU0NJ
SUxpdGVyYWwgbGFiZWwsIGJvb2wgZmxhZykKIHsKICAgICBidWlsZGVyLmFwcGVuZCgiICAgICIs
IGxhYmVsLCAiOiAiLCBmbGFnID8gIlllcyIgOiAiTm8iKTsKIH0KQEAgLTI1MzEsMzEgKzI1MzEs
MzEgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21h
aW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1B
U0NJSUxpdGVyYWwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0
YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkgY29uc3QKK0FTQ0lJTGl0
ZXJhbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGlj
U3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKHRhYmxl
TmFtZSA9PSAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAodGFi
bGVOYW1lID09ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MpCiAgICAgICAg
IHJldHVybiAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBTdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUg
PT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9t
YWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklE
ID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zy
b20iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJf
cykKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNGcm9tIFdIRVJFIHRhcmdldERvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFi
bGVOYW1lID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQorICAgIGlmICh0YWJsZU5h
bWUgPT0gIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcykKICAgICAgICAgcmV0dXJuICJT
RUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJF
IHRvRG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTG9hZGVk
VGhpcmRQYXJ0eVNjcmlwdHMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTG9hZGVk
VGhpcmRQYXJ0eVNjcmlwdHMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHN1YnJlc291cmNl
RG9tYWluSUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIFdIRVJFIHRvcEZy
YW1lRG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQg
ZnJvbSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQg
PSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQg
PSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8i
X3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwotICAgIGlm
ICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIpCisgICAgaWYg
KHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zKQogICAgICAg
ICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7CiAgICAgCiAgICAgcmV0
dXJuICIiX3M7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBBU0NJSUxpdGVyYWwgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcm
IGRvbWFpbikgY29uc3QKIHsKICAgICBhdXRvIHF1ZXJ5ID0gZ2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50KHRhYmxlTmFtZSk7CiAgICAgCkBAIC0yNjAzLDcgKzI2MDMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIGRv
bWFpbiwgJ1xuJyk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAgIGFwcGVuZEJv
b2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsK
KyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iX3MsIG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVy
YWN0aW9uSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICBidWlsZGVyLmFw
cGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAgIGlmIChoYXNIYWRS
ZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC0+Y29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5k
ZXgpKSkpCkBAIC0yNjExLDM0ICsyNjExLDM0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAg
ICAgZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiLTEiKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhl
cmVkSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIl9z
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEdyYW5k
ZmF0aGVyZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3Rv
cmFnZSBhY2Nlc3MKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRp
c3RpY0xpc3QoYnVpbGRlciwgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
ZG9tYWluKTsKIAogICAgIC8vIFRvcCBmcmFtZSBzdGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3Rp
Y0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAg
IGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiLCBkb21haW4pOwotICAgIGFwcGVuZFN1
YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIGRv
bWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMaW5r
RGVjb3JhdGlvbnNGcm9tIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1
aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgZG9tYWluKTsKKyAgICBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
Il9zLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiX3MsIGRv
bWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNGcm9tIl9zLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgZG9tYWluKTsKKyAgICBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlT
Y3JpcHRzIl9zLCBkb21haW4pOwogCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21h
aW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN1YmZyYW1l
IHN0YXRzCi0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChi
dWlsZGVyLCAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKIAogICAg
IC8vIFN1YnJlc291cmNlIHN0YXRzCi0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVy
LCAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsIGRvbWFpbik7Ci0gICAgYXBwZW5k
U3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIs
IGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNM
aXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBkb21haW4p
OworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWls
ZGVyLCAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBkb21haW4pOwogCiAgICAg
Ly8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2
YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5j
b2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwg
ImlzUHJldmFsZW50UmVzb3VyY2UiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3Rh
dGVtZW50LT5jb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291
cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChJ
c1ZlcnlQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVy
eVByZXZhbGVudFJlc291cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIs
IG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoRGF0YVJl
Y29yZHNSZW1vdmVkSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggODEx
YmJmOTcwZWFjNmZhNzBkYWEwOTcyYjU2OWQ1ZTlmODJmMTkwOS4uZjIyYmYxZjRiMDU5MWM3Mzhh
MmUyOWJjZjg0OGFhMGFiNTIxYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEzOCw4ICsxMzgsOCBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAg
ICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBTdHJpbmcgZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdCBmaW5hbDsKLSAgICBBU0NJ
SUxpdGVyYWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0Owot
ICAgIHZvaWQgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdDsKKyAgICBBU0NJSUxp
dGVyYWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCkgY29uc3Q7CisgICAg
dm9pZCBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBBU0NJSUxpdGVyYWwg
dGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVN0
YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBtZXJnZShX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7
CiAgICAgdm9pZCBjbGVhckRhdGFiYXNlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNmI5MzJkYmFkNDQwYjU1MTU1ODQyN2Q0MGQ2ZDIyYWRkMGQzM2MwNy4uZTRl
YTAzYzExYjZiYjNmZmUzZjgwZDJmM2I3OGZiOWEzOThjNTZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTc4OSw3ICs3ODksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwog
I2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsK
ICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAg
ICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlz
LCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJ
RCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0
eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlm
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vj
b25kKTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbgogI2lmIEVO
QUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAg
ICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQs
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nv
b2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENvb2tpZXNGcm9tRE9NIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwg
Km5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVt
cHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCmluZGV4IDZkYmI1MmRhMjU3ZTc0MDM3MmM2MmRiZDNjMDQ3NzZjNjI3Yjk1
OTQuLjY3NGI5ODU1MzU3YzEwYzNhM2NjODdkMDYzNzdiMTcxNzY0MDYyYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApA
QCAtNjEsMTEgKzYxLDExIEBAIHN0YXRpYyBjb25zdCBpbnQgaHR0cFBhcnRpYWxDb250ZW50ID0g
MjA2Owogc3RhdGljIGNvbnN0IGludCBodHRwTm90QWxsb3dlZCA9IDQwMzsKIHN0YXRpYyBjb25z
dCBpbnQgaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGUgPSA0MTY7CiBzdGF0aWMgY29u
c3QgaW50IGh0dHBJbnRlcm5hbEVycm9yID0gNTAwOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBP
S1RleHQgPSAiT0siOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBQYXJ0aWFsQ29udGVudFRleHQg
PSAiUGFydGlhbCBDb250ZW50IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwTm90QWxsb3dlZFRl
eHQgPSAiTm90IEFsbG93ZWQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBSZXF1ZXN0ZWRSYW5n
ZU5vdFNhdGlzZmlhYmxlVGV4dCA9ICJSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwSW50ZXJuYWxFcnJvclRleHQgPSAiSW50ZXJuYWwgU2Vy
dmVyIEVycm9yIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwT0tUZXh0ID0gIk9LIl9zOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBQYXJ0aWFsQ29udGVudFRleHQgPSAiUGFydGlhbCBD
b250ZW50Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBOb3RBbGxvd2VkVGV4dCA9ICJO
b3QgQWxsb3dlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwUmVxdWVzdGVkUmFuZ2VO
b3RTYXRpc2ZpYWJsZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwSW50ZXJuYWxFcnJvclRleHQgPSAiSW50ZXJuYWwg
U2VydmVyIEVycm9yIl9zOwogCiBzdGF0aWMgY29uc3RleHByIGF1dG8gd2ViS2l0QmxvYlJlc291
cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSJfczsKIApAQCAtMjU4LDcgKzI1OCw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRXJy
b3IgZXJyb3JDb2RlKQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoJXUpIiwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVycm9yQ29kZSkpOwogCiAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0Jsb2I+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9m
aXJzdFJlcXVlc3QudXJsKCksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/ICJ0ZXh0L3Bs
YWluIiA6IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5
cGUoKSksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5n
U2l6ZSwgU3RyaW5nKCkpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9maXJzdFJl
cXVlc3QudXJsKCksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/ICJ0ZXh0L3BsYWluIl9z
IDogZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgp
KSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxSZW1haW5pbmdTaXpl
LCBTdHJpbmcoKSk7CiAgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKICAgICBjYXNlIEVycm9yOjpO
b0Vycm9yOiB7CiAgICAgICAgIGJvb2wgaXNSYW5nZVJlcXVlc3QgPSBtX3JhbmdlT2Zmc2V0ICE9
IGtQb3NpdGlvbk5vdFNwZWNpZmllZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOGZiN2E0ODQ5OTNmZWNkYWM0NGRjMDExMzI1OGVh
MjJhZGYyOGRjOS4uOTFkOTBiMDg4YWRhNTE4ZmMxMzdjZjFlOTA2M2UxOGUyOTEzYmE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTIzNDUsNyArMjM0NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3Rp
ZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKLSAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBzZXNz
aW9uIik7CisgICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiJfcyk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmIGNhbGxi
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDMyYTA2ZDQ5NDYzZDM4OGNlNjJlMzZhODZiYjhhODQwYTZh
YWI5MTIuLjU3YzFiMWI2OTNkNzE1YmUxMmVhZDZjNmZkNTk2NTEyOTdjMzIxNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTE1OTQsMTAgKzE1OTQsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKCkpOwogICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNlc3Npb24pOwogCi0gICAgbG9n
Q29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb3Jl
SWRlbnRpZmllcigpKTsKKyAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIiX3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRo
aXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9y
aWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwg
ZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2Jq
ZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NF
UlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25u
ZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTYwOCw3
ICsxNjA4LDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW8KICAgICBhdXRvIGVzY2FwZWRJZGVu
dGlmaWVyID0gZXNjYXBlSURGb3JKU09OKGlkZW50aWZpZXIpOwogICAgIGF1dG8gZXNjYXBlZFJl
ZmVycmVyID0gZXNjYXBlRm9ySlNPTihyZWZlcnJlcik7CiAKLSNkZWZpbmUgTE9DQUxfTE9HX0lG
X0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5z
ZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6
OiIgZm10LCBsb2dnZWRPYmplY3QsIGxhYmVsLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihu
ZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC5jaGFyYWN0
ZXJzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQ0FMX0xPRyhzdHIsIC4uLikgXAogICAg
IExPQ0FMX0xPR19JRl9BTExPV0VEKCJsb2dDb29raWVJbmZvcm1hdGlvbjogQkxPQ0tFRCBjb29r
aWUgYWNjZXNzIGZvciB3ZWJQYWdlSUQ9JXMsIGZyYW1lSUQ9JXMsIHJlc291cmNlSUQ9JXMsIGZp
cnN0UGFydHk9JXM6ICIgc3RyLCBlc2NhcGVkUGFnZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRG
cmFtZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIGVz
Y2FwZWRGaXJzdFBhcnR5LnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCiAKQEAgLTE2MjQs
NyArMTYyNCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvCiAjdW5kZWYgTE9DQUxfTE9HX0lG
X0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorc3Rh
dGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2NDAsNyArMTY0MCw3IEBA
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVz
Y2FwZUlERm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MgPSAo
ZnJhbWVJRCAmJiBwYWdlSUQpID8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmhhc1N0b3JhZ2VBY2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyBmaXJzdFBhcnR5IH0sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCkp
IDogZmFsc2U7CiAKLSNkZWZpbmUgTE9DQUxfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6OiIgZm10LCBsb2dnZWRPYmplY3QsIGxh
YmVsLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIExPQ0FMX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vz
c2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoi
IGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC5jaGFyYWN0ZXJzKCksICMjX19WQV9BUkdTX18pCiAj
ZGVmaW5lIExPQ0FMX0xPRyhzdHIsIC4uLikgXAogICAgIExPQ0FMX0xPR19JRl9BTExPV0VEKCJs
b2dDb29raWVJbmZvcm1hdGlvbjogd2ViUGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlE
PSVzOiAiIHN0ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51
dGY4KCkuZGF0YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJH
U19fKQogCkBAIC0xNjg1LDcgKzE2ODUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1h
dGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3Vu
ZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVy
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDY1Y2VjOWNkM2MyNGQ0YmM3ZTM0MGQ3OWRhNWRjZDgyZmQ2
NjE4NDQuLjJmYjlmYWQ0NTVhMzliMjAxMTc2N2JlZTM3NzE3MGMzNTc2NGNiZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9U
UkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1h
dGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4p
OworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmpl
Y3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKICNlbmRpZgogCiAgICAgdm9pZCBk
aXNhYmxlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApp
bmRleCBkNmJjMDkwMTIwMzMxZjgzMDYwYmNkYTYxNGQ5MzJhYTU5YTIxY2EwLi5lZjE4YjI3ZmI1
M2ViYjVmNjgwOTYyNTM0Y2FhOGJiMWUyY2MzYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAK
QEAgLTQ4OSwxNCArNDg5LDE1IEBAIHZvaWQgRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIGNsZWFyIGFsbCBlbnRy
aWVzIGlmIG5vIGRvbWFpbiBpcyBzcGVjaWZpZWQuCi0gICAgU3RyaW5nIGJpbmRQYXJhbWV0ZXIg
PSAiJSI7CisgICAgU3RyaW5nIGJpbmRQYXJhbWV0ZXI7CiAgICAgaWYgKGRvbWFpbikgewogICAg
ICAgICBhdXRvIGRvbWFpbklEVG9NYXRjaCA9IGRvbWFpbklEKCpkb21haW4pOwogICAgICAgICBp
ZiAoIWRvbWFpbklEVG9NYXRjaCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBiaW5k
UGFyYW1ldGVyID0gU3RyaW5nOjpudW1iZXIoKmRvbWFpbklEVG9NYXRjaCk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBiaW5kUGFyYW1ldGVyID0gIiUiX3M7CiAKICAgICBhdXRvIHRyYW5z
YWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKIApAQCAtNzEyLDE3
ICs3MTMsMTcgQEAgdm9pZCBEYXRhYmFzZTo6ZGVzdHJveVN0YXRlbWVudHMoKQogCiB2b2lkIERh
dGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBT
dHJpbmcgYXR0cmlidXRlZFRhYmxlTmFtZSgiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Il9zKTsKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGF0dHJpYnV0ZWRUYWJsZU5hbWUg
PSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwogICAgIFN0cmluZyBkZXN0
aW5hdGlvbktleUlEQ29sdW1uTmFtZSgiZGVzdGluYXRpb25LZXlJRCJfcyk7CiAgICAgYXV0byBj
b2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwogICAgIGlmICgh
Y29sdW1ucy5zaXplKCkgfHwgY29sdW1ucy5sYXN0KCkgIT0gZGVzdGluYXRpb25LZXlJRENvbHVt
bk5hbWUpIHsKICAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxl
TmFtZSwgImRlc3RpbmF0aW9uVG9rZW4gVEVYVCJfcyk7CiAgICAgICAgIGFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvblNpZ25hdHVyZSBURVhU
Il9zKTsKLSAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFt
ZSwgImRlc3RpbmF0aW9uS2V5SUQgVEVYVCIpOworICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25LZXlJRCBURVhUIl9zKTsKICAg
ICB9CiB9CiAKLVZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCitWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRh
YmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlBSQUdNQSB0YWJsZV9pbmZv
KCIsIHRhYmxlTmFtZSwgIikiKSk7CiAKQEAgLTc0MSw3ICs3NDIsNyBAQCBWZWN0b3I8U3RyaW5n
PiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAg
IHJldHVybiBjb2x1bW5zOwogfQogCi12b2lkIERhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb2x1bW5OYW1lKQor
dm9pZCBEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoQVNDSUlMaXRlcmFsIHRhYmxl
TmFtZSwgQVNDSUlMaXRlcmFsIGNvbHVtbk5hbWUpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBt
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIs
IHRhYmxlTmFtZSwgIiBBREQgQ09MVU1OICIsIGNvbHVtbk5hbWUpKTsKICAgICBpZiAoIXN0YXRl
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAppbmRleCAyZmI3ZDI1NjllZDM4YTU4MjM4YTI4MDBl
ZTI0OGI1N2Y0ZTZkN2ZlLi5lNzFkNDBiZDQ5ODU5ZWJjM2VhYTMzOGNkNWViOGIwNTJjYmNjZDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaApAQCAtODIsOCArODIsOCBAQCBwcml2YXRlOgogICAgIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxl
QW5kSW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpIGZpbmFsOwogICAg
IFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzb3J0ZWRUYWJsZXMoKSBmaW5hbDsKIAotICAgIFZl
Y3RvcjxTdHJpbmc+IGNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSk7Ci0g
ICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb2x1bW5OYW1lKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zRm9y
VGFibGUoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSk7CisgICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1u
VG9UYWJsZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lLCBBU0NJSUxpdGVyYWwgY29sdW1uTmFtZSk7
CiAKICAgICB1c2luZyBTdGF0ZW1lbnQgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PjsKICAgICBtdXRhYmxlIFN0YXRlbWVudCBtX3NldFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3Bw
CmluZGV4IDJhODJhMTE1YTFiOWJhZDU4YmE4NjhlNTVlNTc3Y2Y5ZjU3M2QxNDUuLmUyYjYzN2Jk
OTY4MTcyOGNlMWJhYTdlNzAzM2UxYmY0NjM4N2VjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuRm9yRGVzdGluYXRpb24oU291cgogCiAgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRh
dGVEZXN0aW5hdGlvblNlY3JldFRva2VuKCpzaWduYXR1cmVCYXNlNjRVUkwsICphdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKTsKICAgICAgICAgICAgIGlm
ICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQu
ZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biIgOiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJV
bmtub3duIl9zIDogcmVzdWx0LmVycm9yKCk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGlu
IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJy
b3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJgog
CiAgICAgICAgICAgICBpZiAocHVibGljS2V5QmFzZTY0VVJMLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJUaGUg
cHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVGhlIHB1YmxpYyBrZXkgVVJMIHdh
cyBlbXB0eS4iX3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApA
QCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpo
YW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVz
dWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQu
ZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biJfcyA6IHJlc3VsdC5lcnJvcigpOwogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3Qg
dGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblVubGlu
a2FibGVUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdICJf
cywgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAzYWFhM2M0ODBlNWY2YTk1MzBk
ZjhkOGNjZWJhMmU1NzllMDAyODEwLi5lMDlkMmU5ZjM2Y2FiMjVjMTc1NDFjODc0OTZmZjI5Yjkx
YTA1M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6On5Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIoKQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpkYXRhYmFzZVBhdGgoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikg
Y29uc3QKIHsKLSAgICByZXR1cm4gZGF0YWJhc2VQYXRoKHNlY3VyaXR5T3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpICsgIi5sb2NhbHN0b3JhZ2UiKTsKKyAgICByZXR1cm4gZGF0YWJhc2VQYXRo
KG1ha2VTdHJpbmcoc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCksICIubG9jYWxz
dG9yYWdlIikpOwogfQogCiB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGlkT3Bl
bkRhdGFiYXNlV2l0aE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKQpAQCAtMTI5LDcgKzEyOSw3IEBAIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Ok9yaWdpbkRldGFpbHM+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6CiAgICAgfSk7
CiB9CiAKLVN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdAorU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6ZGF0YWJhc2VQYXRoKFN0cmluZ1ZpZXcgZmlsZW5hbWUpIGNvbnN0CiB7CiAgICAg
YXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKICAgICBpZiAoIVNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5RXhp
c3RzKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaAppbmRleCA1YmMxM2VjMzZmNWQyYTk2ZmM2MWU3MDIyYzFjOGExZTVjNzkx
YTRiLi42ZDZhMDVjODlhNzUxNjM5ZjUyYjg1MGIxOTZlMzE1ZmI2ODBiNjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFN0cmluZyYmIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUpIGNvbnN0OworICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoU3RyaW5nVmll
dyBmaWxlbmFtZSkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0OwogCiAgICAgZW51bSBEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxv
YlN0b3JhZ2UuY3BwCmluZGV4IGMyMzQ5YTA4MmI1NjhkZWJlM2ZhNTZkMzU4ZDU1ZGQ5YzY4OGY2
MjQuLmY0ZTYxZDYwNTJiMzZkNzQ4NDliYmU2NmFjMjIwZjZmNGE4ZTAzMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlQmxvYlN0b3JhZ2UuY3BwCkBAIC0xMjMsOCArMTIzLDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2Ig
QmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUobGlua1Bh
dGguZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSBtYXBGaWxlKHBhdGgpOwogCiAgICAgcmV0dXJu
IHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5k
ZXggYWVlMTAyYmVjNTFiYjM0NjkwMjNmYTc3OTVhODIyNzQ4MTMyZjI2Ni4uYTkxNjk4ZDVkYzQy
ZDg2YzI5NzcyNzBiNzRmZTNiMTg1YzVlNWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKICAg
ICByZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RGTW92ZShtYXBwZWRGaWxlKSwgaGFuZGxlKTsKIH0K
IAotRGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpCitEYXRhIG1hcEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKGZpbGUpKQpAQCAtNjQsMTEgKzY0LDYgQEAgRGF0YSBtYXBGaWxlKGNvbnN0
IGNoYXIqIHBhdGgpCiAgICAgcmV0dXJuIGFkb3B0QW5kTWFwRmlsZShmaWxlLCAwLCAqc2l6ZSk7
CiB9CiAKLURhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIG1h
cEZpbGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
Ci19Ci0KIERhdGEgYWRvcHRBbmRNYXBGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQogewogICAgIGlmICghc2l6ZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuaAppbmRleCAzMjgzMjk3Njc4YzE1NGVlNDkwN2QzMTQ5M2NiZjdmOGYwMDNjYmMw
Li4xMjQ5MjU5ZTRiMDUyNjk0NWJjNTQ1ZjJmNjRhMTQyN2I1ZTU2MDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApA
QCAtMTExLDcgKzExMSw2IEBAIHByaXZhdGU6CiBEYXRhIGNvbmNhdGVuYXRlKGNvbnN0IERhdGEm
LCBjb25zdCBEYXRhJik7CiBib29sIGJ5dGVzRXF1YWwoY29uc3QgRGF0YSYsIGNvbnN0IERhdGEm
KTsKIERhdGEgYWRvcHRBbmRNYXBGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90KTsKLURhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKTsK
IERhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCiB1c2luZyBTYWx0ID0gRmlsZVN5
c3RlbTo6U2FsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KaW5kZXgg
NDMyMmU0NGU4ZWEwNjNjM2RhYThlMmM2ZGU3YTVhMDg1ZjVhODFlOC4uNDJmODg4MjUwNDc2YmVk
NzMyNGI2NzIzYjM3NDkyZjhmNTVmZGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0KQEAgLTE0Miw4ICsxNDIsOCBAQCB2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQ
Q19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgeHBjTWVzc2FnZU5hbWVLZXkpOwotICAgICAgICBp
ZiAobWVzc2FnZU5hbWUgIT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
UmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSkKKyAgICAgICAg
YXV0byogbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4cGNN
ZXNzYWdlTmFtZUtleSk7CisgICAgICAgIGlmIChMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1l
ICE9IG1lc3NhZ2VOYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzdGFydE9ic2Vy
dmluZyhjb25uZWN0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAppbmRleCAxMGVjMjA3
Njg1MTQ1OGNlZjE2MTkwZWYxYjkxNjZkMmYwYTQ0ZTQxLi5kMjkxYTA5ZTllZjMxNWZiNGNjMDli
MzdkOTU4OWY5NzRmYjMxZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkKICAg
ICBpZiAoIW1fZGF0YWJhc2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBz
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIl9zKTsKKyAgICBTdHJp
bmcgc3RhdGVtZW50ID0gbV9kYXRhYmFzZS0+dGFibGVTUUwoIkl0ZW1UYWJsZSIpOwogICAgIGlm
IChzdGF0ZW1lbnQgPT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50IHx8IHN0YXRlbWVudCA9PSBj
cmVhdGVJdGVtVGFibGVTdGF0ZW1lbnRBbHRlcm5hdGl2ZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCmluZGV4IDBi
ZTM5NWMxYzM3YzJmZTdjYjNjYzNhNWI0OTU2MmFmYzczOWU2NGEuLmU1OTJhYTAxYzZjNDExNGVk
MGM3ODUzM2MwOWVkYTRmMTFiN2FmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0pTSVBDQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SlNJUENCaW5kaW5nLmNwcApAQCAtODksNyArODksNyBAQCBKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
YgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBv
YmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJib29sIikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJib29s
Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwog
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ2YWx1ZSJfcyksIEpTQzo6anNCb29sZWFuKHZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwpAQCAtOTksNjcgKzk5LDY3IEBAIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBiCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29k
ZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZh
bHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJkb3VibGUiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiZG91Ymxl
Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGZsb2F0IHZhbHVl
KQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGds
b2JhbE9iamVjdCwgdmFsdWUsICJmbG9hdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2Rl
ZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJmbG9hdCJfcyk7CiB9
CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ4X3QgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgImludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQ4X3QiX3MpOwogfQogCiB0
ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MTZfdCB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCAiaW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNB
cmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQxNl90Il9zKTsKIH0KIAogdGVt
cGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMyX3QgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgImludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJn
dW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50MzJfdCJfcyk7CiB9CiAKIHRlbXBs
YXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVlKQogewotICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFs
dWUsICJpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDY0X3QiX3MpOwogfQogCiB0ZW1wbGF0
ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDhfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAidWludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVu
dFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50OF90Il9zKTsKIH0KIAogdGVtcGxhdGU8
PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQxNl90IHZhbHVlKQogewotICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJ1aW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVu
dFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MTZfdCJfcyk7CiB9CiAKIHRlbXBsYXRl
PD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50MzJfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAidWludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1l
bnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDMyX3QiX3MpOwogfQogCiB0ZW1wbGF0
ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSwgInVpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ2NF90Il9zKTsKIH0KIAogdGVtcGxh
dGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAic2l6ZV90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInNpemVfdCJfcyk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFJlY3RUeXBlPgpAQCAtMTg1LDEzICsxODUsMTMgQEAgSlNDOjpKU1ZhbHVlIGpzVmFs
dWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY28KIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpJbnRSZWN0
JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGds
b2JhbE9iamVjdCwgdmFsdWUsICJJbnRSZWN0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNv
ZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJJbnRSZWN0Il9zKTsKIH0KIAog
dGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCYmIHZh
bHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50UmVjdChnbG9iYWxP
YmplY3QsIHZhbHVlLCAiRmxvYXRSZWN0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiX3MpOwogfQogCiBi
b29sIHB1dEpTVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRBdEluZGV4T3JBcnJheUJ1ZmZlcklmVW5k
ZWZpbmVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU0FycmF5KiBh
cnJheSwgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMu
Y3BwLmVyYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKaW5kZXggOWQyYmM3YTIyNjI5
Mjk2Yzc0MTZkY2I1MDAyMzhiZWY0ZmYyOWI1ZS4uODMwZWJhYjhlODYyMTgwZWIwMzBhNjUzOTY2
MjZmNDM4OTEwYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJlZmVyZW5jZXM6OmV4cGVyaW1lbnRh
bEZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNv
bmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJl
OjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCAiPCU9IEBwcmVmLm5hbWUg
JT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+LCBERUZBVUxUX1ZBTFVF
X0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCisgICAgICAgIEFQ
STo6RXhwZXJpbWVudGFsRmVhdHVyZTo6Y3JlYXRlKFN0cmluZyB7IDwlPSBAcHJlZi5odW1hblJl
YWRhYmxlTmFtZSAlPiB9LCAiPCU9IEBwcmVmLm5hbWUgJT4iX3MsIFN0cmluZyB7IDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4gfSwgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBw
cmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAogPCUtIGlmIEBwcmVmLmNvbmRpdGlv
biAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdGZWF0
dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKaW5kZXggODQ5Y2Y2
ZjdhODg1NzNkZjI3OWYzYWVkMjUxMTA1MDVmN2I2YzM0Ni4uZTU2N2Y0NWIxZTQ0NTE2YjUyYjAz
NjUwYmI5ZjJlOTY0Yjg0OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNw
cC5lcmIKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKQEAgLTQwLDcgKzQwLDcg
QEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6aW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpJbnRlcm5hbERl
YnVnRmVhdHVyZTo6Y3JlYXRlKDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiwgIjwlPSBA
cHJlZi5uYW1lICU+IiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiwgREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAor
ICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBw
cmVmLmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5n
IHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVF
X0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHBy
ZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCA1YzYz
MWVkZGM5NjdjY2U4YTExMGJjNDBkMjc2OWUyY2Y5MzVkNjQ2Li5hNmUyNWNjNDAzNDY3YTUwM2U4
ZWVjMTA3YThmN2U0N2Y4MWMzODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNDIsOSArNDIsOSBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGFzc05hbWVLZXkgPSAiJGNsYXNz
IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTdHJlYW1LZXkgPSAiJG9iamVjdFN0
cmVhbSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nS2V5ID0gIiRzdHJpbmciOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGNsYXNzTmFtZUtleSA9ICIkY2xhc3MiX3M7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gb2JqZWN0U3RyZWFtS2V5ID0gIiRvYmplY3RTdHJlYW0iX3M7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gc3RyaW5nS2V5ID0gIiRzdHJpbmciX3M7CiAKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHNlbGVjdG9yS2V5ID0gQCJzZWxlY3RvciI7CiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB0eXBlU3RyaW5nS2V5ID0gQCJ0eXBlU3RyaW5nIjsKQEAgLTQ0MCw3ICs0NDAsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICplbmNvZGVy
LCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZXItPl9vYmplY3RzQmVpbmdFbmNvZGVkLnJlbW92
ZShvYmplY3QpOwogICAgIH0pOwogCi0gICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5z
ZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGNsYXNzX2dldE5hbWUob2JqZWN0
Q2xhc3MpKSk7CisgICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5zZXQoY2xhc3NOYW1l
S2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGNsYXNzX2dldE5hbWUob2JqZWN0Q2xh
c3MpIH0pKTsKIAogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TSW52b2NhdGlvbiBj
bGFzc11dKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gc3BlY2lhbCBjYXNlIE5TSW52b2NhdGlv
biBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGVuY29kZSB0aGUgdGFyZ2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGI5ODk2NmVjYWQ0MWI0OGVlY2QyNTgyMmI0YzNjMWU2ZDk4YTA4N2UuLjdkODg1
NjIyODQ4ZWY3Zjc5YTRkZjFkMzNjZDYwN2E3ZjJlMTQ1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
QEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9u
ICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAo
c3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5Qmxv
Y2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZh
bHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUo
aW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJ
ZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBt
YWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5l
cmF0ZVJlcGx5SWRlbnRpZmllcigpLCBTdHJpbmcgeyByZXBseUJsb2NrU2lnbmF0dXJlIH0pOwog
CiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVjdCBzbyB3ZSB3b24ndCB0cnkgdG8g
ZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0cjsKQEAgLTIyNyw3ICsyMjcsNyBA
QCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBT
RUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJl
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1
cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3Ry
aW5nLlVURjhTdHJpbmc7CisgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25h
dHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQog
CiAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2Nh
dGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdGlvbgpAQCAtMjcwLDcgKzI3MCw3IEBAIC0gKHZvaWQp
X2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1v
dGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5f
dHlwZVN0cmluZy5VVEY4U3RyaW5nOworICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJl
ID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5i
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKICAgICAgICAgU3RyaW5n
IGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2Ug
cHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAogICAgICAgICBpZiAoZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5o
CmluZGV4IDFiZTJhODAwN2MyNzc2N2JmOWE1OGE5ZDJiOTg3ZTU2NzRkZmNhMzkuLjI4MzJhOTkx
NmRmYjM4NzNlNzY3ODMyM2NmOTc1Y2NiYTU1YjQ1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmgKQEAgLTI1LDE1ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgewogCi1jb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKLWNvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKLWNvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwot
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKLWNvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Citjb25zdGV4cHIg
YXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRl
LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIl9zOworY29uc3RleHByIGF1dG8geHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiX3M7
Citjb25zdGV4cHIgYXV0byB4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1l
c3NhZ2VOYW1lID0gInJlcXVlc3QtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLXVwZGF0ZS1tZXNz
YWdlIl9zOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBv
aW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIl9zOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2Fn
ZU5hbWUgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIl9z
OwogfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA1YmE5MmJiODIzOWYyODA5YjAxODRjNGRm
NzMwOTk5YzQzMGY0ZDQ1Li5mMWJmY2Y4N2IzNzQwNWJiOTY2ODE0ZjhjMTY0M2JiNjI3YTQ2NThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCkBAIC0xODUsMjcgKzE4NSwyNyBAQCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmIGhhbmRsZSkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNhbmRib3hFeHRlbnNpb24oaGFuZGxlKSk7CiB9CiAKLVN0cmluZyBzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBzdHJp
bmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0aCkKIHsKICAgICBjaGFy
IHJlc29sdmVkUGF0aFtQQVRIX01BWF0gPSB7IDAgfTsKICAgICByZWFscGF0aChwYXRoLnV0Zjgo
KS5kYXRhKCksIHJlc29sdmVkUGF0aCk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVz
b2x2ZWRQYXRoKTsKIH0KIAotU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyByZXNvbHZl
QW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3
IHBhdGgpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgTlNTdHJpbmcgKm5zUGF0
aCA9IHBhdGg7CisgICAgYXV0byBuc1BhdGggPSBwYXRoLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENv
cHlpbmcoKTsKIAotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSkgewotICAgICAgICBOU0xvZyhAImNvdWxkIG5v
dCBjcmVhdGUgZGlyZWN0b3J5IFwiJUBcIiBmb3IgZnV0dXJlIHNhbmRib3ggZXh0ZW5zaW9uLCBl
cnJvciAlQCIsIG5zUGF0aCwgZXJyb3IpOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoLmdldCgpIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSkgeworICAg
ICAgICBOU0xvZyhAImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJUBcIiBmb3IgZnV0dXJl
IHNhbmRib3ggZXh0ZW5zaW9uLCBlcnJvciAlQCIsIG5zUGF0aC5nZXQoKSwgZXJyb3IpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiByZXNvbHZlUGF0aEZvclNhbmRi
b3hFeHRlbnNpb24ocGF0aCk7CiB9CiAKLVN0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4
dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgU3RyaW5nIHJlc29sdmVkUGF0aCA9IHN0
cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgocGF0aCk7CiAgICAgaWYgKHJlc29sdmVkUGF0
aC5pc051bGwoKSkgewpAQCAtMjE2LDcgKzIxNiw3IEBAIFN0cmluZyByZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiByZXNvbHZlZFBh
dGg7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pOwpAQCAtMjI5LDcgKzIyOSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiAg
ICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoU3RyaW5nVmll
dyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIHJldHVy
biBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlUGF0aEZvclNhbmRib3hF
eHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQpAQCAtMjU5LDcgKzI1OSw3IEBAIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxv
Z0xhYmVsLCBjb25zCiAgICAgfSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PgogewogICAgIFN0cmluZyByZXNvbHZlZFBhdGggPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKTsKICAgICBpZiAocmVzb2x2ZWRQYXRo
LmlzTnVsbCgpKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkgLT4KICAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRoLCBU
eXBlOjpSZWFkV3JpdGUpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdHlwZSkgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PgorYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBl
IHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KIHsKICAg
ICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7
CkBAIC0yODQsMTEgKzI4NCwxMiBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdAogICAgIGlmIChw
YXRoLmxhc3QoKSAhPSAnLycpCiAgICAgICAgIHBhdGguYXBwZW5kKCcvJyk7CiAgICAgCi0gICAg
Ly8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuICAgIAotICAgIHBhdGguYXBwZW5kKHByZWZpeC51dGY4
KCkuZGF0YSgpLCBwcmVmaXgubGVuZ3RoKCkpOworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1l
LgorICAgIGF1dG8gcHJlZml4QXNVVEY4ID0gcHJlZml4LnV0ZjgoKTsKKyAgICBwYXRoLmFwcGVu
ZChwcmVmaXhBc1VURjguZGF0YSgpLCBwcmVmaXhBc1VURjgubGVuZ3RoKCkpOwogICAgIHBhdGgu
YXBwZW5kKCdcMCcpOwogICAgIAotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoLmRhdGEoKSkuZGF0YSgpLCB0eXBlKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oU3RyaW5nOjpmcm9tVVRGOChwYXRoLmRhdGEoKSkpLmRhdGEoKSwg
dHlwZSk7CiAKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRl
bXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRhdGEoKSk7CkBAIC0zMzksNyArMzQwLDcgQEAgYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8Y29uc3QgQVMKICAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2Vu
LCBmbGFncyk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tl
bikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90
IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIEhhbmRsZSBoYW5k
bGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQppbmRl
eCBhM2RiNGFmNGMxMjNiNmU2YTkxZWExZWNkYzEzZGI4MmExYmM4YjI0Li45YzNlYzQwOTVhOTQ3
MjcxZmQxMDIxNzdiOGIwNWIwZjc3OGI5ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5
UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC03MiwxMyArNzIsMTMg
QEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q29ubmVjdGlvbklkZW50
aWZpZXIoSVBDOjpDb25uZWN0aW9uOjpJZGUKIAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpCiB7
Ci0gICAgY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0
aWFsaXplck1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIpOworICAgIGNsaWVudElkZW50aWZp
ZXIgPSBTdHJpbmcgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNz
YWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKSB9OwogICAgIHJldHVybiAhY2xpZW50SWRlbnRpZmll
ci5pc0VtcHR5KCk7CiB9CiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dENsaWVudEJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRCdW5kbGVJZGVudGlmaWVyKQog
ewotICAgIGNsaWVudEJ1bmRsZUlkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1pZGVudGlmaWVyIik7CisgICAg
Y2xpZW50QnVuZGxlSWRlbnRpZmllciA9IFN0cmluZyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtYnVuZGxlLWlkZW50aWZpZXIiKSB9Owog
ICAgIHJldHVybiAhY2xpZW50QnVuZGxlSWRlbnRpZmllci5pc0VtcHR5KCk7CiB9CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRQcm9j
ZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZgogCiBib29sIFhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFBy
b2Nlc3NOYW1lKQogewotICAgIGNsaWVudFByb2Nlc3NOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgInVpLXByb2Nlc3MtbmFtZSIpOworICAgIGNs
aWVudFByb2Nlc3NOYW1lID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2lu
aXRpYWxpemVyTWVzc2FnZSwgInVpLXByb2Nlc3MtbmFtZSIpIH07CiAgICAgcmV0dXJuICFjbGll
bnRQcm9jZXNzTmFtZS5pc0VtcHR5KCk7CiB9CiAKQEAgLTExOSwzMCArMTE5LDMwIEBAIGJvb2wg
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
KEhhc2hNYXA8U3RyaW5nLCBTCiB7CiAgICAgeHBjX29iamVjdF90IGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShtX2luaXRpYWxpemVy
TWVzc2FnZSwgImV4dHJhLWluaXRpYWxpemF0aW9uLWRhdGEiKTsKIAotICAgIFN0cmluZyBpbnNw
ZWN0b3JQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpOworICAgIFN0cmluZyBpbnNw
ZWN0b3JQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpIH07CiAgICAgaWYgKCFpbnNw
ZWN0b3JQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
YWRkKCJpbnNwZWN0b3ItcHJvY2VzcyJfcywgaW5zcGVjdG9yUHJvY2Vzcyk7CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJQcm9jZXNzID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3Qs
ICJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIik7CisgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIikgfTsKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
YWRkKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIl9zLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzKSk7Ci0gICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWluID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJyZWdpc3RyYWJsZS1k
b21haW4iKTsKKyAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4geyB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInJlZ2lzdHJhYmxl
LWRvbWFpbiIpIH07CiAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCiAgICAg
ICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9tYWluIl9zLCBX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSk7CiAjZW5kaWYKIAotICAgIFN0cmluZyBpc1ByZXdh
cm1lZFByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCwgImlzLXByZXdhcm1lZCIpOworICAgIFN0cmluZyBpc1ByZXdhcm1l
ZFByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgImlzLXByZXdhcm1lZCIpIH07CiAgICAgaWYgKCFpc1ByZXdhcm1lZFBy
b2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoImlz
LXByZXdhcm1lZCJfcywgaXNQcmV3YXJtZWRQcm9jZXNzKTsKIAogICAgIGlmICghaXNDbGllbnRT
YW5kYm94ZWQoKSkgewotICAgICAgICBTdHJpbmcgdXNlckRpcmVjdG9yeVN1ZmZpeCA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAi
dXNlci1kaXJlY3Rvcnktc3VmZml4Iik7CisgICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3Vm
Zml4IHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKSB9OwogICAgICAgICBpZiAoIXVzZXJE
aXJlY3RvcnlTdWZmaXguaXNFbXB0eSgpKQogICAgICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlv
bkRhdGEuYWRkKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiX3MsIHVzZXJEaXJlY3RvcnlTdWZmaXgp
OwogICAgIH0KIAotICAgIFN0cmluZyBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgPSB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVj
dCwgImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiKTsKKyAgICBTdHJpbmcgYWx3
YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5IHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3Jv
dW5kLXByaW9yaXR5IikgfTsKICAgICBpZiAoIWFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eS5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiYWx3YXlz
LXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSJfcywgYWx3YXlzUnVuc0F0QmFja2dyb3VuZFBy
aW9yaXR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tCmluZGV4IGQ4NjBlN2M3YWIwNjAxNmZkZjEwN2M0Y2YxZGRhNWMzN2YzMzJmYjEuLjEw
OGNiMDhhYWI4ZTZlNTE4NWFhNTFhYmIwYjZkZjJiNTM0NDEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTIwMyw3ICsyMDMsNyBA
QCBpbnQgWFBDU2VydmljZU1haW4oaW50LCBjb25zdCBjaGFyKiopCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICNlbmRpZgotICAgICAgICBTdHJpbmcgd2ViS2l0QnVuZGxlVmVyc2lvbiA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVy
c2lvbiIpOworICAgICAgICBTdHJpbmcgd2ViS2l0QnVuZGxlVmVyc2lvbiB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpIH07
CiAgICAgICAgIFN0cmluZyBleHBlY3RlZEJ1bmRsZVZlcnNpb24gPSBbTlNCdW5kbGUgYnVuZGxl
V2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0Il0uaW5mb0RpY3Rpb25hcnlbKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NGQnVuZGxlVmVyc2lvbktleV07CiAgICAgICAgIGlmICghd2ViS2l0
QnVuZGxlVmVyc2lvbi5pc051bGwoKSAmJiAhZXhwZWN0ZWRCdW5kbGVWZXJzaW9uLmlzTnVsbCgp
ICYmIHdlYktpdEJ1bmRsZVZlcnNpb24gIT0gZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKSB7CiAgICAg
ICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIldlYktpdCBmcmFtZXdvcmsg
dmVyc2lvbiBtaXNtYXRjaDogIiwgd2ViS2l0QnVuZGxlVmVyc2lvbiwgIiAhPSAiLCBleHBlY3Rl
ZEJ1bmRsZVZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVz
dGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKaW5kZXggMGQ1NzRi
MGNjNTAzNDEzMzIxN2ZlMzlmMGIwNDBiNTc5ZDJmYzFjMC4uOGE5OTYxMTY4MzM5M2FlNzk3MGJm
OTU5ZTUyZWJjOTJiNjVlZmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBD
VGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIFdLTWVzc2FnZVRlc3REcml2
ZXJGdW5jIG1lc3NhZ2VUZXN0RHJpdmVyKFN0cmluZyYmIGRyaXZlck5hbWUpCiB7CiAgICAgaWYg
KGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQotICAgICAg
ICBkcml2ZXJOYW1lID0gZ2V0ZW52KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVS
Iik7CisgICAgICAgIGRyaXZlck5hbWUgPSBTdHJpbmcgeyBnZXRlbnYoIldFQktJVF9NRVNTQUdF
X1RFU1RfREVGQVVMVF9EUklWRVIiKSB9OwogICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8
fCBkcml2ZXJOYW1lID09ICJkZWZhdWx0IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRUZXN0RHJp
dmVyOwogICAgIGF1dG8gdGVzdERyaXZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tNZXNzYWdlVGVz
dERyaXZlckZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgZHJpdmVyTmFtZS51dGY4KCkuZGF0YSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5j
cHAKaW5kZXggODY2NDlhNzcxMWRiYTcxNGVhYTAxNWYzZjI2ZjlmN2Q2YzI3ZDk1ZS4uYTEwYjhj
NzE0MGQ4ODE5ZDIyNWM5YzE5ZmFlYzhmNzllNTViNDIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBX
VEY6OlN0cmluZyBleHRlbnNpb25FcnJvclRvU3RyaW5nKEV4dGVuc2lvbkVycm9yIGVycm9yKQog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiSW50ZXJuYWxF
cnJvciI7CisgICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCA1ZGRh
MzBjZDdmNjE3OWY4MzhjOTBkYzJhZjU3ODNiYTUyMWU2ZTkyLi5iMmJhNTIzMjJjZGE0OTk4NzU4
MjUxYzIwMjM5NTQxOTIyNWRjMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCkBAIC04NCwxNyArODQsMTcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgc3Rh
dGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFuZGxlJiYpOwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
VHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGUoU3Ry
aW5nVmlldyBwYXRoLCBUeXBlKTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlUmVh
ZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGF0aHMpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRl
SGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlKTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpOyAvLyBXaWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRo
ZSBkaXJlY3RvcnkuCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZp
eCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVX
aXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFN0
cmluZ1ZpZXcgcGF0aCk7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4K
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVh
dGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlKTsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNp
b24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNl
cnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0g
RmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVz
Rm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBz
ZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9
IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tl
bl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJl
YWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNp
b24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBP
cHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCkBAIC0xMTgsOSArMTE4
LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3lt
bGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyByZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBh
dGgpOworU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoU3RyaW5nVmlldyBw
YXRoKTsKK1N0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBw
YXRoKTsKK1N0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpOwogCiAjaWYgIUVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCiAKQEAgLTEyOSwxMSArMTI5LDExIEBAIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6On5IYW5kbGUoKSB7IH0KIGlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0IHsgfQogaW5saW5lIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29k
ZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJikgeyByZXR1
cm4gbnVsbHB0cjsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBI
YW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
U3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRs
ZSB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSAtPiBWZWN0
b3I8SGFuZGxlPiB7IHJldHVybiB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07
IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFu
ZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsgfTsgfQor
aW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgoU3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJu
IEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3LCBUeXBlKSAtPiBzdGQ6Om9w
dGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6cGFpcjxIYW5k
bGUsIFN0cmluZz4geyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCkgLT4gc3RkOjpvcHRpb25hbDxI
YW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjp+
U2FuZGJveEV4dGVuc2lvbigpIHsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6cmV2
b2tlKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQxLDkgKzE0MSw5IEBAIGlubGluZSBib29sIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKSB7IHJldHVybiB0cnVlOyB9CiBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgSGFu
ZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5kbGU+JikgeyByZXR1cm4gdHJ1ZTsgfQot
aW5saW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQotaW5saW5lIFN0cmluZyByZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9Ci1pbmxp
bmUgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQoraW5saW5lIFN0cmlu
ZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0aCkgeyByZXR1
cm4gcGF0aC50b1N0cmluZygpOyB9CitpbmxpbmUgU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQor
aW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQog
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbQppbmRleCBlMDVhY2NjZTdmZjE0ZTYwMjExMzFmZTMyZmE4NjY5MWQ0MWI2OGI3Li44
ZjI1OWRhNmQ1MTAyNmNjZDYxODliYmVjYTQ4ZDUzZGI5ODFkYjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtMjgyLDcgKzI4Miw3
IEBAIHN0YXRpYyBTdHJpbmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3Jh
cnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJy
bm8pLmRhdGEoKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9Ci0gICAgcmV0dXJu
IHJlc29sdmVkUGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChyZXNvbHZlZFBhdGgp
OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbmRib3hEaXJlY3RvcnkoV2ViQ29yZTo6QXV4aWxpYXJ5
UHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgcGFyZW50RGlyZWN0b3J5KQpA
QCAtNzA0LDkgKzcwNCw5IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0CiAKICAgICBzYW5kYm94
UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0RJUiIsIHB3ZC5wd19kaXIpOwogICAg
IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwd2QucHdfZGlyKTsKLSAgICBwYXRoLmFw
cGVuZCgiL0xpYnJhcnkiKTsKKyAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiX3MpOwogICAgIHNh
bmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRo
LmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7CisgICAgcGF0aC5hcHBlbmQoIi9QcmVmZXJlbmNlcyJf
cyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZ
X1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDkyMGRlMDBiYjY4NjIwMmI2YzFkNjRmYWFkNzEy
MzU5YzE2MDI3OGYuLjliZGU1MDUyN2QzNTU1ZWIzMjczODM2NWExZjdjMmZjNGYxMzhjMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDY5LDIw
ICs0NjksMjAgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktl
eWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wgaGEKIAogICAgIC8vIEFsd2F5cyB1c2Ug
MTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZm
ZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2Rl
ID09IFZLX1JFVFVSTikgewotICAgICAgICB0ZXh0ID0gIlxyIjsKLSAgICAgICAgdW5tb2RpZmll
ZFRleHQgPSAiXHIiOworICAgICAgICB0ZXh0ID0gIlxyIl9zOworICAgICAgICB1bm1vZGlmaWVk
VGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgLy8gQXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIg
Zm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3JyZWN0IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNv
ZGUgaXMgOC4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKLSAg
ICAgICAgdGV4dCA9ICJceDgiOwotICAgICAgICB1bm1vZGlmaWVkVGV4dCA9ICJceDgiOworICAg
ICAgICB0ZXh0ID0gIlx4OCJfczsKKyAgICAgICAgdW5tb2RpZmllZFRleHQgPSB0ZXh0OwogICAg
IH0KIAogICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNl
IEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICBpZiAod2lu
ZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikgewotICAgICAgICB0ZXh0ID0gIlx4OSI7Ci0g
ICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAgICAgIHRleHQgPSAiXHg5Il9zOwor
ICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIFdlYktl
eWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5tb2RpZmllZFRleHQsIGtleSwgY29kZSwga2V5SWRl
bnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgbWFj
Q2hhckNvZGUsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBjb21tYW5kcywgYXV0b1JlcGVhdCwgaXNL
ZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApp
bmRleCBjMGE2NGZlZmJkMmY0NWMxMmFkOWNiZTJjNzg4M2IyNTE5ZDg4YjQ0Li5hYWM2MGI2NWIw
Mjc2NzU3M2IwMDcxODUxZjAxNmY0ZGUyNjgzOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIzMiw3
ICsyMzIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29u
dGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYQogewogICAgIGlmICghRmlsZVN5c3Rl
bTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBt
YXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworICAgIFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhIGZpbGVEYXRhID0gbWFwRmlsZShwYXRoKTsKICAgICBpZiAo
ZmlsZURhdGEuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0
byBtZXRhRGF0YSA9IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKGZpbGVEYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKaW5kZXgg
ZWViY2M5MmQ3OTlhNTViYWQxNzExNWNiODZhN2M4YmM4NzA0NjMzNi4uYzJhYWQzNmZkZTdmZjll
MjE0NDdkY2E0M2JiZTBmMTMzOTgzZGI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdLRG93
bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJh
c2UqIGNsaWVudCkKIAogICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBkaWRG
YWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBw
cm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIiB9LCBudWxscHRyKTsKKyAgICAgICAgICAg
IGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3
b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93bmxvYWQiX3MgfSwgbnVsbHB0cik7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBlMjU0OTI2
ZGM1MWE0OWFlYmE0OThkNzk0OWFhZmM4MDdhNGI3MjI5Li40MTE1MGI3ZDE1ZmIyZjU0ZGI1N2U2
ODA3ZDU1ODQxNWU3ZDljYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKQEAgLTUxNSwxMyArNTE1LDEzIEBAIHZvaWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9uSGlzdG9yeVVSTFZhbHVl
VHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uSGlzdG9yeVVSTFZhbHVl
VHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25IaXN0b3J5VVJMIikubGVha1JlZigp
OworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUgPSBB
UEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlzdG9yeVVSTCJfcykubGVha1JlZigpOwogICAg
IHJldHVybiB0b0FQSSgmc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRlbVZhbHVlVHlwZSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlID0g
QVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iKS5sZWFrUmVm
KCk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVU
eXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iX3Mp
LmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9BUEkoJnNlc3Npb25CYWNrRm9yd2FyZExpc3RWYWx1
ZVR5cGUpOwogfQogCkBAIC0xNTgyLDIxICsxNTgyLDIxIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xp
ZW50CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxIHx8IG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MCkgewogICAgICAgICAgICAgICAgIEFQSTo6RGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvd0ZlYXR1cmVzLngpCi0gICAgICAgICAgICAgICAgICAgIG1h
cC5zZXQoIngiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy54KSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQoIngiX3MsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRv
d0ZlYXR1cmVzLngpKTsKICAgICAgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueSkKLSAg
ICAgICAgICAgICAgICAgICAgbWFwLnNldCgieSIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRv
d0ZlYXR1cmVzLnkpKTsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgieSJfcywgQVBJOjpE
b3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMueSkpOwogICAgICAgICAgICAgICAgIGlmICh3
aW5kb3dGZWF0dXJlcy53aWR0aCkKLSAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgid2lkdGgi
LCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy53aWR0aCkpOworICAgICAgICAg
ICAgICAgICAgICBtYXAuc2V0KCJ3aWR0aCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93
RmVhdHVyZXMud2lkdGgpKTsKICAgICAgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMuaGVp
Z2h0KQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJoZWlnaHQiLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJtZW51QmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1l
bnVCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJs
ZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUp
KTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJ0b29sQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAg
ICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2lu
ZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNl
dCgic2Nyb2xsYmFyc1Zpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJl
cy5zY3JvbGxiYXJzVmlzaWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInJlc2l6YWJs
ZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnJlc2l6YWJsZSkpOwotICAg
ICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxzY3JlZW4iLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3
aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgiZGlh
bG9nIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZGlhbG9nKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQoImhlaWdodCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgq
d2luZG93RmVhdHVyZXMuaGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgibWVudUJh
clZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJW
aXNpYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSJfcywg
QVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkpOwor
ICAgICAgICAgICAgICAgIG1hcC5zZXQoInRvb2xCYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46
OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50b29sQmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAg
IG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2lu
ZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNl
dCgic2Nyb2xsYmFyc1Zpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1
cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgicmVzaXph
YmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5yZXNpemFibGUpKTsK
KyAgICAgICAgICAgICAgICBtYXAuc2V0KCJmdWxsc2NyZWVuIl9zLCBBUEk6OkJvb2xlYW46OmNy
ZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7CisgICAgICAgICAgICAgICAgbWFwLnNl
dCgiZGlhbG9nIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cp
KTsKICAgICAgICAgICAgICAgICBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBmZWF0dXJlc01hcCA9IEFQ
STo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDhl
Njc1YjM5OTA3YmJjZDdhOTI0YzQ2Yzc4MGY3MTQyZjBlYzk1MWEuLjFhNzNhNzBjYWM5OTY4MjY5
YzQ2N2E4ODY3ZjgyMWM0YjBkYmEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgV0tUeXBlSUQgV0tQ
cmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZSgpCiB7Ci0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVX
aXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1
bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRv
QVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQogCiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJl
ZmVyZW5jZXNDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGVudGlmaWVyUmVmKQog
ewotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2Fj
eURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50aWZpZXJSZWYpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0
Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhM
ZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVyUmVmKSwgIldlYktpdDIuIl9zLCAi
V2ViS2l0Mi4iX3MpOwogICAgIHJldHVybiB0b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQppbmRleCAzZDY1NzlmNTJjZTM1
MDFhODYxYzNmNjU1ZWZiZWQyNGU4MWUxMmU0Li4yMTU2Y2UwOTNiMjc0YTEzOTZlMGU3YTc0Yjkx
ZjZhMjJkNTVjZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQpAQCAtNTgs
NyArNTgsNyBAQCBXVEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3Jl
UGF0aCgpCiAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURp
cmVjdG9yeUF0VVJMOmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRl
cm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50
UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5nZXQoKSk7CiAKLSAgICByZXR1cm4gW2NvbnRlbnRSdWxl
TGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRlVVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjsKKyAgICByZXR1cm4gV1RGOjpTdHJpbmc6OmZyb21VVEY4KFtjb250ZW50UnVsZUxpc3RT
dG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggOWZh
NzFiMDc1YTAzZmYxZGZkZDAwMTdlNDVjODEyOTk1OWQzNWQ4My4uYTJiN2M1YjdjYWFlNzg5MzA5
ZmQ2NmQ3Y2YyYzIxYjg1ZTQ5NDU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTc5LDcg
Kzc5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogKyAoaW5zdGFuY2V0eXBlKXN0
b3JlV2l0aFVSTDooTlNVUkwgKil1cmwKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0
aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJl
dHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgoU3Ry
aW5nOjpmcm9tVVRGOCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkp
OwogI2Vsc2UKICAgICByZXR1cm4gbmlsOwogI2VuZGlmCkBAIC0xOTQsNyArMTk0LDcgQEAgKyAo
aW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZQogKyAoaW5zdGFuY2V0
eXBlKXN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOihOU1VSTCAqKXVybAogewogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6c3RvcmVXaXRoUGF0aChTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pKSk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KaW5kZXggZWIyMzIxNjljZmI4YWEyYjIyZGU3MTM4Zjk4YWVmNDZjMzkwNDhjNS4uNTlmYjhk
YzBhNzgxYzdlYWFkZWZiNjEyYTVmMzExMjYxYjJmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTQ0LDcgKzQ0LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8V2ViS2l0OjpXZWJQcmVmZXJlbmNlcz4oc2VsZiwgU3RyaW5nKCksICJXZWJLaXQiLCAiV2Vi
S2l0RGVidWciKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6
V2ViUHJlZmVyZW5jZXM+KHNlbGYsIFN0cmluZygpLCAiV2ViS2l0Il9zLCAiV2ViS2l0RGVidWci
X3MpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDMwODBlYzQwMzYzNmE4NGFhMDUxYTNmOGY4
M2Q2OWUyYjEzMmEwOWYuLmJkMjM3MWMwMzIxMzAzZjdjODJhOTYwMDE4ZmVlMjA3ZmEzZDZlYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CkBAIC0yOTQ5LDcgKzI5NDksNyBAQCAtIChCT09MKV9hbGxvd3NWaWV3cG9ydFNocmlua1RvRml0
CiAtIChCT09MKV9pc0Rpc3BsYXlpbmdQREYKIHsKICAgICBmb3IgKGF1dG8mIHR5cGUgOiBXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkgewotICAgICAgICBDbGFzcyBw
cm92aWRlckNsYXNzID0gW1tfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnld
IHByb3ZpZGVyRm9yTUlNRVR5cGU6QCh0eXBlKV07CisgICAgICAgIENsYXNzIHByb3ZpZGVyQ2xh
c3MgPSBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJG
b3JNSU1FVHlwZTpAKHR5cGUuY2hhcmFjdGVycygpKV07CiAgICAgICAgIGlmIChbX2N1c3RvbUNv
bnRlbnRWaWV3IGlzS2luZE9mQ2xhc3M6cHJvdmlkZXJDbGFzc10pCiAgICAgICAgICAgICByZXR1
cm4gWUVTOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDFjNTRlMDE1ODRlNjAzMDU0MDg2NGJiMTZlMTQ1NjZhODI3
ODMwYmUuLjNmYjk2OTgwZWZkOWUyZjJhZThhMTdjZjRjNmQ0MjZkNDNhMjgzZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAt
NjUsMTAgKzY1LDEwIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1CiAgICAgbGF1bmNoT3B0aW9u
cy5wcm9jZXNzSWRlbnRpZmllciA9IG1fcHJvY2Vzc0lkZW50aWZpZXI7CiAKICAgICBpZiAoY29u
c3QgY2hhciogdXNlckRpcmVjdG9yeVN1ZmZpeCA9IGdldGVudigiRElSSEVMUEVSX1VTRVJfRElS
X1NVRkZJWCIpKQotICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJf
cywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7CisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJl
Y3Rvcnktc3VmZml4Il9zLCBTdHJpbmc6OmZyb21VVEY4KHVzZXJEaXJlY3RvcnlTdWZmaXgpKTsK
IAogICAgIGlmIChtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSkKLSAgICAgICAgbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJ
SUxpdGVyYWw+KCJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCAidHJ1ZSIp
OworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNo
VHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3Jp
dHkiX3MsICJ0cnVlIl9zKTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0K
aW5kZXggNjBjMGQ5ZGFlMGYwZDZhZGM1NmNmZDFjOGNmMTBlZjk0M2Q1MWQzNS4uMjA3MmI1YjZi
MWNiOTBmOGY2MjdmNjk2NWMzMTBmMDFlN2Y0YjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6
YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFt
ZSgpCiAgICAgICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgIGF1dG8mIHVybCA9IG1fcmVxdWVz
dHNUb0xvYWQuZmlyc3QoKS5maXJzdDsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihtX3JlcXVlc3Rz
VG9Mb2FkLmZpcnN0KCkuc2Vjb25kLCBbJl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7
Ci0gICAgICAgICAgICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAi
dGV4dC9odG1sIiwgIlVURi04IiwgdXJsKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UoZGF0YSksICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgdXJsKTsK
ICAgICAgICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpIHsKICAgICAgICAgICAgIGZy
YW1lLT5sb2FkVVJMKHVybCwgcmVmZXJyZXIpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tCmluZGV4IDBl
YzExNzQzYmIxZDhmMzlhMjUwYjUxYjNlNTc4NGJhZTFlNTBlMzAuLmZlNDViNzQ1NGQ3YjRiMzA4
NzVlMGU2ZTNjMTc3OTQ1NmFkN2FhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGluay5tbQpAQCAtNDEsNyArNDEsNyBAQCB2b2lk
KiBXZWJLaXRTd2lmdExpYnJhcnkoYm9vbCBpc09wdGlvbmFsKQogICAgICAgICAvLyBUaGVuIHNl
YXJjaCBpbiB0aGUgRnJhbWV3b3Jrcy8gZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50bHkgbG9hZGVk
IHZlcnNpb24gb2YgV2ViS2l0LmZyYW1ld29yazoKICAgICAgICAgRGxfaW5mbyBpbmZvIHsgfTsK
ICAgICAgICAgaWYgKGRsYWRkcigoY29uc3Qgdm9pZCopJldlYktpdFN3aWZ0TGlicmFyeSwgJmlu
Zm8pICYmIHN0cmxlbihpbmZvLmRsaV9mbmFtZSkpIHsKLSAgICAgICAgICAgIGF1dG8gd2Via2l0
RnJhbWV3b3JrRGlyZWN0b3J5ID0gV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGFyZW50UGF0aChpbmZv
LmRsaV9mbmFtZSk7CisgICAgICAgICAgICBhdXRvIHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSA9
IFdURjo6RmlsZVN5c3RlbUltcGw6OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChpbmZvLmRs
aV9mbmFtZSkpOwogICAgICAgICAgICAgYXV0byBkeWxpYlBhdGggPSBXVEY6OkZpbGVTeXN0ZW1J
bXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5LCAi
RnJhbWV3b3Jrcy9saWJXZWJLaXRTd2lmdC5keWxpYiIpOwogICAgICAgICAgICAgaWYgKChsaWJy
YXJ5ID0gZGxvcGVuKGR5bGliUGF0aC51dGY4KCkuZGF0YSgpLCBSVExEX05PVykpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDI4YTU4NTFmNWVlMGFjMGEzNGJhNzczZGQ2
MTM0MzdiZjU0ODcxNzMuLjgwODU3MzIzZjlkOGY5YzM4ZjYxYTkyMWI3ZGViODQ0YjgwMGYyNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQpAQCAtMjgyLDcgKzI4Miw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29v
a2llU3RvcmFnZURpcmVjdG9yeSgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVz
b2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogewotICAgIG1fcmVzb2x2ZWRQYXRocy51
aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGggPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNp
b24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSByZXNvdXJjZVBhdGhdKTsKKyAgICBtX3Jlc29sdmVk
UGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94
RXh0ZW5zaW9uKFN0cmluZyB7IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSB9
KTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDAwNzRkY2E3NzI3YTk2ODc0ZmIxZWQzODQ3
ZjUxOWUxNjA0YTUzZjcuLmE3YmYzZDJkYzRkNmUzMmVlNmNiZjZjMjAyMGU1ZWNkY2M3MGVhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC05
MjYsMTcgKzkyNiwxNyBAQCAtICh2b2lkKV93a0NoYW5nZVRleHRTdHlsZTooaWQpc2VuZGVyCiAK
ICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjBdICE9IF90ZXh0
SXNCb2xkKSB7CiAgICAgICAgIF90ZXh0SXNCb2xkID0gIV90ZXh0SXNCb2xkOwotICAgICAgICBf
d2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoQCJUb2dnbGVCb2xkIiwgQCIi
KTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dn
bGVCb2xkIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0
eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjFdICE9IF90ZXh0SXNJdGFsaWMpIHsKICAgICAgICAg
X3RleHRJc0l0YWxpYyA9ICFfdGV4dElzSXRhbGljOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBh
Z2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZUl0YWxpYyIsIEAiIik7CisgICAgICAgIF93
ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xlSXRhbGljIl9zLCBl
bXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0
ZWRGb3JTZWdtZW50OjJdICE9IF90ZXh0SXNVbmRlcmxpbmVkKSB7CiAgICAgICAgIF90ZXh0SXNV
bmRlcmxpbmVkID0gIV90ZXh0SXNVbmRlcmxpbmVkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBh
Z2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZVVuZGVybGluZSIsIEAiIik7CisgICAgICAg
IF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5l
Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiB9CiAKQEAgLTk1NSwxOSArOTU1LDE5IEBAIC0g
KHZvaWQpX3drQ2hhbmdlVGV4dEFsaWdubWVudDooaWQpc2VuZGVyCiAgICAgc3dpdGNoIChhbGln
bm1lbnQpIHsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudExlZnQ6CiAgICAgICAgIF9jdXJyZW50
VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudExlZnQ7Ci0gICAgICAgIF93ZWJWaWV3SW1w
bC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25MZWZ0IiwgQCIiKTsKKyAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkxlZnQiX3MsIGVt
cHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudFJp
Z2h0OgogICAgICAgICBfY3VycmVudFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRSaWdo
dDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGln
blJpZ2h0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRD
b21tYW5kKCJBbGlnblJpZ2h0Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdu
bWVudCA9IE5TVGV4dEFsaWdubWVudENlbnRlcjsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdl
KCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkNlbnRlciIsIEAiIik7CisgICAgICAgIF93ZWJW
aWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25DZW50ZXIiX3MsIGVtcHR5
U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudEp1c3Rp
ZmllZDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50SnVz
dGlmaWVkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQo
IkFsaWduSnVzdGlmaWVkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhl
Y3V0ZUVkaXRDb21tYW5kKCJBbGlnbkp1c3RpZmllZCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTkzLDcgKzk5Myw3
IEBAIC0gKHZvaWQpX3drQ2hhbmdlQ29sb3I6KGlkKXNlbmRlcgogICAgICAgICByZXR1cm47CiAK
ICAgICBfdGV4dENvbG9yID0gc2VsZi5jb2xvclBpY2tlckl0ZW0uY29sb3I7Ci0gICAgX3dlYlZp
ZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiLCBXZWJDb3JlOjpz
ZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKF90ZXh0Q29s
b3IuZ2V0KCkpKSk7CisgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5k
KCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlhbGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNv
bG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQoKSkpKTsKIH0KIAogLSAoTlNWaWV3Q29u
dHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xsZXIKQEAgLTUxMzIsNyArNTEzMiw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6Omluc2VydFRleHQoaWQgc3RyaW5nLCBOU1JhbmdlIHJlcGxhY2VtZW50
UmFuZ2UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4qIGtleXByZXNzQ29t
bWFuZHMgPSBtX2NvbGxlY3RlZEtleXByZXNzQ29tbWFuZHM7CiAgICAgaWYgKGtleXByZXNzQ29t
bWFuZHMgJiYgIW1faXNUZXh0SW5zZXJ0aW9uUmVwbGFjaW5nU29mdFNwYWNlKSB7CiAgICAgICAg
IEFTU0VSVChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpOwotICAgICAg
ICBXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQgY29tbWFuZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KTsK
KyAgICAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQoImluc2VydFRleHQ6Il9z
LCB0ZXh0KTsKICAgICAgICAga2V5cHJlc3NDb21tYW5kcy0+YXBwZW5kKGNvbW1hbmQpOwogICAg
ICAgICBMT0coVGV4dElucHV0LCAiLi4uc3RvcmVkIik7CiAgICAgICAgIG1fcGFnZS0+cmVnaXN0
ZXJLZXlwcmVzc0NvbW1hbmROYW1lKGNvbW1hbmQuY29tbWFuZE5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDRi
MjFlOTg5ZjI3OWFlNjczNGQ5ZDMyNjAxZGUzNjZkYjAwYWY3YjIuLmVjNjliZjZhZDNlN2M1OGUx
NzExOTcxNTJkMGIzNDRjMjIyNDFmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2U6On5EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IGNoYXIqIG5hbWUsIEtleWVkRGVj
b2RlciogZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4g
Z2V0U2VjdXJpdHlPcmlnaW5EYXRhKEFTQ0lJTGl0ZXJhbCBuYW1lLCBLZXllZERlY29kZXIqIGRl
Y29kZXIpCiB7CiAgICAgU3RyaW5nIG9yaWdpbjsKIApAQCAtMTU3LDIwICsxNTcsMjAgQEAgdm9p
ZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hNYXAKIAogc3RkOjp1bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRT
dG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERh
dGFGcm9tRGVjb2RlcihLZXllZERlY29kZXIqIGRlY29kZXIsIFN0cmluZyYmIGRldmljZUlkSGFz
aFNhbHQpIGNvbnN0CiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0
eU9yaWdpbkRhdGEoIm9yaWdpbiIsIGRlY29kZXIpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5E
YXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJvcmlnaW4iX3MsIGRlY29kZXIpOwogICAgIGlm
ICghc2VjdXJpdHlPcmlnaW5EYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQ
ZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBUaGUgc2VjdXJpdHkgb3JpZ2lu
IGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBh
dXRvIHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgicGFy
ZW50T3JpZ2luIiwgZGVjb2Rlcik7CisgICAgYXV0byBwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEg
PSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoInBhcmVudE9yaWdpbiJfcywgZGVjb2Rlcik7CiAgICAg
aWYgKCFwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBwYXJlbnQg
c2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBk
ZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBkb3VibGUgbGFzdFRpbWVVc2VkOwotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlRG91YmxlKCJsYXN0VGltZVVzZWQiLCBsYXN0VGltZVVzZWQpKSB7CisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJfcywgbGFzdFRpbWVVc2VkKSkgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTogVGhlIGxhc3QgdGltZSB1c2VkIHdhcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZv
cjogJyVzJyIsIGRldmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KQEAgLTE4NSw5ICsxODUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0
U3Rvcgogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gRGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2U6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YShjb25zdCBIYXNoU2FsdEZvck9yaWdpbiYgaGFzaFNh
bHRGb3JPcmlnaW4pIGNvbnN0CiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iLCBoYXNoU2FsdEZv
ck9yaWdpbi5kb2N1bWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgZW5jb2Rl
ci0+ZW5jb2RlU3RyaW5nKCJwYXJlbnRPcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5wYXJlbnRP
cmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgi
bGFzdFRpbWVVc2VkIiwgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iX3Ms
IGhhc2hTYWx0Rm9yT3JpZ2luLmRvY3VtZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoInBhcmVudE9yaWdpbiJfcywgaGFzaFNhbHRGb3JP
cmlnaW4ucGFyZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJfcywgaGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVV
c2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CiAgICAgcmV0dXJuIGVuY29kZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggMmU4NmMxYjY2YTRkNTJkNmYzMDRhNDkwNTJl
MGZlMDk4NWRjMzM3OC4uNTE3MTYwMjg3NDlkMGJmODM0MWUzNzA5MDdmZWFiOThmNTU0MzI4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTU0LDExICs1NCwxMSBAQCBib29sIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90
IGV2ZW50KSBjbwogICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENf
VFlQRV9FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01l
c3NhZ2VOYW1lS2V5KTsKLSAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8q
IG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9p
bnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lIHx8ICEqbWVzc2Fn
ZU5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtZXNzYWdlTmFtZSA9PSBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkgeworICAgIGlmIChMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNz
YWdlTmFtZSA9PSBtZXNzYWdlTmFtZSkgewogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5tX2Vu
ZHBvaW50TWVzc2FnZSA9IGV2ZW50OwogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CiAgICAgICAgICAgICBmb3IgKGF1
dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKaW5kZXggZWY4ZDJkZDg2MDE5NDAwZDBkZmMxM2ZhMWE0MjY2NjJm
YjdiZDQyNS4uN2FjNDRhOTdiMGJmZGMzYzU1Nzc0YzRhYThmMzkyYTQyYWJjYmIyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVx
dWVzdChVc2VyTWVkaWFQZXJtCiAgICAgdXBkYXRlU3RvcmVkUmVxdWVzdHMocmVxdWVzdCk7CiAK
ICAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS53aWxsQ3JlYXRl
TWVkaWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVkaW9EZXZpY2UoKSwgcmVxdWVzdC5oYXNW
aWRlb0RldmljZSgpKSkgewotICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok90aGVy
RmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2FuZGJveC4iKTsKKyAgICAgICAgZGVueVJlcXVl
c3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNj
ZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3gu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggN2JkNTg3N2RkOGU5MjU4ZGM1
ZDZhN2ZhNDI4NjdmYjkyOTc5ZDZmYS4uNGFhNzI5ZGI0YTJjNjgyZTM3OWI3MTVjMTZiYTRmYjA2
NDZmMDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgU3RyaW5nIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRzRGVzY3JpcHRpb24oRXZlbnRzIGUK
IH0KIAogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tl
cjo6bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25zdAordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhTdHJpbmdWaWV3IGxvZykgY29uc3QKIHsK
ICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMsICJTd2lwZSBTbmFwc2hvdCBSZW1vdmFsICgl
MC4yZiBtcykgLSAlcyIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lKS5taWxs
aXNlY29uZHMoKSwgbG9nLnV0ZjgoKS5kYXRhKCkpOwogfQpAQCAtMzI0LDEzICszMjQsMTMgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0
KEV2ZW50cyBkZXNpcmVkRXZlbnRzLAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KCkKIHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50
cykKLSAgICAgICAgbG9nKCJyZXNldDsgaGFkIG91dHN0YW5kaW5nIGV2ZW50czogIiArIGV2ZW50
c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsKKyAgICAgICAgbG9nKG1ha2VTdHJp
bmcoInJlc2V0OyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiLCBldmVudHNEZXNjcmlwdGlvbiht
X291dHN0YW5kaW5nRXZlbnRzKSkpOwogICAgIG1fb3V0c3RhbmRpbmdFdmVudHMgPSAwOwogICAg
IG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBudWxscHRy
OwogfQogCi1ib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tl
cjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1Jl
YXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2Vk
KQorYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0
b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBT
aG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQpCiB7CiAg
ICAgQVNTRVJUKGhhc09uZUJpdFNldChldmVudCkpOwogCkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBi
b29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BX
YWl0aW5nRm9yRXZlbnQoRXZlbnRzCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChz
aG91bGRJZ25vcmVFdmVudElmUGF1c2VkID09IFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQ6Olll
cyAmJiBpc1BhdXNlZCgpKSB7Ci0gICAgICAgIGxvZygiaXMgcGF1c2VkOyBpZ25vcmluZyBldmVu
dDogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50KSk7CisgICAgICAgIGxvZyhtYWtlU3RyaW5n
KCJpcyBwYXVzZWQ7IGlnbm9yaW5nIGV2ZW50OiAiLCBldmVudHNEZXNjcmlwdGlvbihldmVudCkp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGxvZyhsb2dSZWFzb24gKyBl
dmVudHNEZXNjcmlwdGlvbihldmVudCkpOworICAgIGxvZyhtYWtlU3RyaW5nKGxvZ1JlYXNvbiwg
ZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAKICAgICBtX291dHN0YW5kaW5nRXZlbnRzICY9
IH5ldmVudDsKIApAQCAtMzUyLDEyICszNTIsMTIgQEAgYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cwog
CiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZl
bnRPY2N1cnJlZChFdmVudHMgZXZlbnQsIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgc2hvdWxk
SWdub3JlRXZlbnRJZlBhdXNlZCkKIHsKLSAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChl
dmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiLCBzaG91bGRJZ25vcmVFdmVudElm
UGF1c2VkKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91dHN0YW5k
aW5nIGV2ZW50IG9jY3VycmVkOiAiX3MsIHNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQpOwogfQog
CiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6Y2Fu
Y2VsT3V0c3RhbmRpbmdFdmVudChFdmVudHMgZXZlbnQpCiB7Ci0gICAgcmV0dXJuIHN0b3BXYWl0
aW5nRm9yRXZlbnQoZXZlbnQsICJ3YWl0IGZvciBldmVudCBjYW5jZWxsZWQ6ICIpOworICAgIHJl
dHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAid2FpdCBmb3IgZXZlbnQgY2FuY2VsbGVk
OiAiX3MpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFs
VHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldmVudCkKQEAgLTM2OCw3ICszNjgs
NyBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldgogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCkK
IHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykgewotICAgICAgICBsb2coImRlZmVycmlu
ZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiICsgZXZlbnRzRGVzY3JpcHRpb24o
bV9vdXRzdGFuZGluZ0V2ZW50cykpOworICAgICAgICBsb2cobWFrZVN0cmluZygiZGVmZXJyaW5n
IHJlbW92YWw7IGhhZCBvdXRzdGFuZGluZyBldmVudHM6ICIsIGV2ZW50c0Rlc2NyaXB0aW9uKG1f
b3V0c3RhbmRpbmdFdmVudHMpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggMjBjMzBi
ODM0ODg4N2YzZTUyMDBiZjg2OTcwZDgyNDljMzUwNDdiZi4uMDJhMGI4OThmZDVjYjJlYTYyZjBm
N2NiMGQ4Njg4YWI1Njk0ZGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTI1MCwxMyArMjUwLDEzIEBAIHByaXZhdGU6CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU3RyaW5nIGV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50
cyk7Ci0gICAgICAgIHZvaWQgbG9nKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgICAgICB2b2lk
IGxvZyhTdHJpbmdWaWV3KSBjb25zdDsKIAogICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJh
Y2tJbW1lZGlhdGVseSgpOwogICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3Np
YmxlKCk7CiAgICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKLSAgICAgICAgYm9v
bCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24sIFNo
b3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgPSBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkOjpZZXMp
OworICAgICAgICBib29sIHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzLCBBU0NJSUxpdGVyYWwg
bG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID0gU2hvdWxkSWdub3JlRXZlbnRJ
ZlBhdXNlZDo6WWVzKTsKIAogICAgICAgICBFdmVudHMgbV9vdXRzdGFuZGluZ0V2ZW50cyB7IDAg
fTsKICAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcmVtb3ZhbENhbGxiYWNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5tbQppbmRleCBkODFkNzgwNjIxYzgwNTA5M2Q0ODNmMWVhYzM1ZTI5MDFkODE4M2I5Li5m
NjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4NmMxMDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpA
QCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxCiAgICAgICAgIFttX3By
b3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVz
dENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGlkPEFT
Q0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICAgICAgZW5zdXJlT25NYWluUnVuTG9vcChbd2Vha1RoaXMsIGhhbmRsZXIgPSBX
VEZNb3ZlKGhhbmRsZXIpLCBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRpYWwpLCBlcnJv
ciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNh
dG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0
aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhl
bnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJP
cGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdChjcmVk
ZW50aWFsLCBlcnJvciwgV1RGTW92ZShoYW5kbGVyKSk7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9p
ZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWlu
UHRyPEFTQ0NyZWRlbnRpYWxSZXEKICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
LCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBk
YWVtb25FbmRwb2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWlu
UHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFk
YWVtb25FbmRwb2ludCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNv
bm5lY3QgdG8gYXV0aG9yaXphdGlvbiBkYWVtb246ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNl
cHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAg
ICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhj
ZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIl9zIH0pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0
aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tCmluZGV4IDc2ZTMzYTcz
ODY3YmM0ZjdlY2Y3YmNkNjZjMDhlYWM1NmVmNjBmMWEuLjNmMDBhNTBhNzllZjZmMTM0NzEwNWI0
ZWY3ODY0YTYxY2MyMDQ2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1
YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBTdHJpbmcgYmFzZTY0
UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5KQogICAgIGF1dG8gcmV0
YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICBpZiAoZXJyb3JSZWYpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIE5TRGF0YSAqbnNQcml2YXRlS2V5UmVwID0g
KE5TRGF0YSAqKXByaXZhdGVLZXlSZXAuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVh
bC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggMTUwZmU0MmNkNDY3NjljNTM2NjA5MWQ2
ZjRmZjRjMzFlYTZmYzVmNS4uYTdkMGI1MDAxZTI0ZmUxNmVhZTI4ZmM4MzUzOGVkOTU5YjgzNWU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAK
QEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVl
c3QoKQogICAgICAgICAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSByZXNwb25zZTsKICAgICAgICAg
ICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoIm5vbmUiKTsKICAgICAgICAg
ICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgyKV0gPSBDQk9SVmFsdWUoYXV0aGVudGljYXRvckRhdGEp
OwotICAgICAgICAgICAgYXV0byBhdHRPYmogPSBidWlsZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUo
YXV0aGVudGljYXRvckRhdGEpLCAiIiwgeyB9LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlOjpOb25lKTsKKyAgICAgICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1h
cChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9LCB7
IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUpOwogICAgICAgICAgICAg
cmVzcG9uc2VbQ0JPUlZhbHVlKDMpXSA9IENCT1JWYWx1ZShhdHRPYmopOwogICAgICAgICAgICAg
YXV0byBwYXlsb2FkID0gQ0JPUldyaXRlcjo6d3JpdGUoQ0JPUlZhbHVlKHJlc3BvbnNlKSk7CiAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZv
aWQgVmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgICAgICByZXNw
b25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1dGhEYXRhKTsKICAgICAgICAgICAgIHJl
c3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoc2lnbmF0dXJlRm9yUHJpdmF0ZUtleShr
ZXksIGF1dGhEYXRhLCBjbGllbnREYXRhSGFzaCkpOwogICAgICAgICAgICAgaWYgKGNyZWRlbnRp
YWwudXNlckhhbmRsZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNCldID0g
Q0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51c2VySGFuZGxlLCAiIiwg
IiIpKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVl
KGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51c2VySGFuZGxlLCBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNSldID0g
Q0JPUlZhbHVlKChpbnQ2NF90KW1hdGNoaW5nQ3JlZGVudGlhbHMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkp
OwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA4MGRjYzlmNmJm
NWYwNWU0NzdlNmVkZjA0M2MwMTQ0NDhmMTUxNmM1Li5lOGQwZmY5NTc5ZmQyODllNWRiYzU2N2Iw
MzYxZDAxN2RlMTI3OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXQKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQp
MCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVl
biBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIiB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAo
QXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwog
ICAgIH07CiAgICAgCiAgICAgaWYgKCFkYXRhLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCmluZGV4IGYxYjkwZDNmYjZiNDUwOGQ2
YTNmZmNkZDY3OTFiODliYTdlMDRjZjIuLjhhMzkzY2VjZWI2NGE1MzgzNTg4ODVmYzRiMGViODJk
NGVhYzQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAt
OTEsNyArOTEsNyBAQCBzdGF0aWMgV2ViUGFnZUdyb3VwRGF0YSBwYWdlR3JvdXBEYXRhKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKIC8vIElmIGl0IHR1cm5zIG91dCB0aGF0IGl0J3Mgd3Jvbmcs
IHdlIGNhbiBjaGFuZ2UgaXQgdG8gdG8gIldlYktpdDIuIiBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2xv
YmFsRGVidWdLZXlQcmVmaXggZnJvbSBXZWJQcmVmZXJlbmNlcy4KIFdlYlBhZ2VHcm91cDo6V2Vi
UGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1fZGF0YShwYWdlR3Jv
dXBEYXRhKGlkZW50aWZpZXIpKQotICAgICwgbV9wcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKG1fZGF0YS5pZGVudGlmaWVyLCAiLldlYktpdDIiLCAi
V2ViS2l0Mi4iKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmllciwgIi5XZWJLaXQyIl9zLCAiV2ViS2l0
Mi4iX3MpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQogewogICAgIHdlYlBhZ2VHcm91cE1hcCgpLnNldChtX2Rh
dGEucGFnZUdyb3VwSUQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggOGZlMjExMDhkZDE5OTM3MDFlZDJiNGE3ODhhYTBiNjgzZTlkYzViNS4uOTRk
MjNjMmI5ODZhZDBmOWNjZDM3YzVmODQzODRlN2I5NGRkNmFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTExMSw3ICsxMTExMSw3IEBAIFdlYkNvcmU6
OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNv
dXJjZUZvclNwZWVjaFJlCiB7CiAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVyZURldmljZSgpOwogICAgIGlmICghY2FwdHVy
ZURldmljZSkKLSAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgIk5vIGRldmlj
ZSBpcyBhdmFpbGFibGUgZm9yIGNhcHR1cmUiIH07CisgICAgICAgIHJldHVybiBDYXB0dXJlU291
cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxhYmxlIGZvciBjYXB0dXJlIl9zIH07CiAK
ICAgICBpZiAocHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7IFNwZWVjaFJlY29nbml0aW9u
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlKG1fcHJvY2Vzcy0+ZW5zdXJlU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcigpLCAqY2FwdHVyZURl
dmljZSwgbV93ZWJQYWdlSUQpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggMmYxNjgxNzQ2NTRmNjU2ODAzOGE5M2I4YjZhZGI1YjE3NGUzZDI3Mi4u
MWIyYjg1MWU5NzI0YWM1MGZlMzk4ZjkwNGZiM2VjNTdhZTUwOWEwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogICAgIGlmICghc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJp
bmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpLnB0cigpKSk7CisgICAgc19pbnZh
bGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgZGVz
Y3JpcHRpb24obWVzc2FnZU5hbWUpIH0pLnB0cigpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE4ZWY1ZGJjNDdlNmVjYjJhNDYzZmU3
Yjg1ZDFjZWQ5ZWEwMzQ1ZWUuLmQ5OTQ3MjAxZjhiOTRiNWQzZTJkMzJiYjQ4MmRhMjY5ZDY3OWY2
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NTU5LDE5ICs1NTksMTkgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90
aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCiB7CiAgICAgZm9yIChh
dXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWlu
c0ZpbmlzaGVkIiwgbnVsbHB0cik7CisgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQiX3MsIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0
ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogewogICAgIGZvciAoYXV0
byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3Nh
Z2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNG
aW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVk
Il9zLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVE
YXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiB7CiAgICAgZm9yIChh
dXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQotICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVySWRlbnQKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYXV0byBjcmVhdGVSZWFs
dGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0gV2Vha1B0ciB7IHRhcmdldFBhZ2UgfV0oKSB7
Ci0gICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlh
U291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBh
Z2UgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNy
ZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlkIl9zIH07CiAgICAgfTsKICAgICBzcGVlY2hS
ZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KCpj
b25uZWN0aW9uKCksIGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZN
b3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFs
dGltZU1lZGlhU291cmNlKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCmluZGV4IDMwOWE3NTQ0YjY0MzliYjRhZjc4MTVlMjY3MDE5MThmNWZmODIzOGIuLmNlNWEw
OWQ5YjFmMDBhZDZjNzliNTlhYzA4NGQwNjhhMGQ2ZWNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3NCwyNiArMjc0LDI2IEBAIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAgICAgaWYgKFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxp
Y2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewogICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRo
ID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxp
YnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwogCi0gICAgICAgIHJldHVybiBX
ZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5
U3RhbmRhcmRpemluZ1BhdGgpOworICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29s
dmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZyB7IGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXpp
bmdQYXRoIH0pOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSJfcyk7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3Rv
cnkoKQogewotICAgIGF1dG8gZGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIkRlZmF1bHQiKTsKKyAgICBhdXRvIGRpcmVjdG9yeSA9IHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJEZWZhdWx0Il9zKTsKIAog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb2xkIHN0b3JhZ2UgZGlyZWN0
b3J5LCBhbmQgdGhlcmUgbWlnaHQgYmUgZmlsZXMgbGVmdCBoZXJlLgotICAgICAgICBhdXRvIG9s
ZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTdG9y
YWdlIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgICAgIGF1dG8gb2xkRGlyZWN0
b3J5ID0gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlN0b3JhZ2UiX3Ms
IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogICAgICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxl
TWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICAgICAgTlNBcnJh
eSAqZmlsZXMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpvbGREaXJl
Y3RvcnkgZXJyb3I6MF07CiAgICAgICAgIGlmIChmaWxlcykgewpAQCAtMzE0LDYzICszMTQsNjMg
QEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9y
eSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIk5ldHdvcmtDYWNoZSIpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkFsdGVybmF0aXZlU2Vy
dmljZXMiLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkFsdGVybmF0aXZlU2VydmljZXMiX3MsIFNo
b3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7CisgICAgcmV0dXJuIHRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiX3MpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkluZGV4ZWREQiIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZp
Y2VXb3JrZXJzIik7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJTZXJ2aWNlV29ya2VycyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOworICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9j
YWxTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlzIl9zKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiRGV2aWNlSWRIYXNoU2FsdHMiKTsKKyAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRldmljZUlkSGFzaFNh
bHRzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCJfcyk7CiB9CiAKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9z
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBTaG91bGRDcmVhdGVEaXJlY3Rv
cnk6Ok5vKTsKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiSmF2YVNjcmlwdENvcmVEZWJ1ZyJfcywgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9
CiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTW9kZWxFbGVtZW50IiwgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1vZGVsRWxlbWVudCJfcywgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5
OjpObyk7CiB9CiAjZW5kaWYKIApAQCAtNDAwLDcgKzQwMCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyCiAgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogICAgIAotICAgIHJldHVybiB1cmwuYWJzb2x1
dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgodXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGly
ZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKQEAgLTQyOCw3ICs0MjgsNyBAQCBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBkaQogICAgICAgICAmJiAhW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAKLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCkBAIC00
NTcsNyArNDU3LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmkKICAgICBpZiAoIVtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRl
cm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwog
Ci0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bjsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOwogfQogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCAxMWJiZjU0ZjBiNDBmZjEyM2EyNDFiYWNmMzY2YmI5MmJi
ZjAzOTE3Li5iMTUyNjA5YTZmZTU0OTkzZWM4ZjE4ODI4OWRlZmRjMGMyYjBiYzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0
Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAg
ICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dzV2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3Jp
Z2lucykKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAg
ICAgICAgIFN0cmluZyBob3N0U3RyaW5nID0gZW50cnkub3JpZ2luLmhvc3QuaXNFbXB0eSgpID8g
IiIgOiBtYWtlU3RyaW5nKCIgIiwgZW50cnkub3JpZ2luLmhvc3QpOworICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5Lm9yaWdpbi5ob3N0LmlzRW1wdHkoKSA/IGVt
cHR5U3RyaW5nKCkgOiBtYWtlU3RyaW5nKCIgIiwgZW50cnkub3JpZ2luLmhvc3QpOwogICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IG1ha2VTdHJpbmcoZW50cnkub3JpZ2luLnByb3Rv
Y29sLCBob3N0U3RyaW5nKTsKICAgICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4
IDZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFiMDMyMmQyZTUuLmYxNDE5Yjc0OTc4ZWU3
ZTQ5N2I4OTZkMjA3YjM3NDg0YjhkYjE3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTI5LDcgKzEy
OSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBl
KHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuICJWUDkiX3M7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAiSDI2NCI7CisgICAgICAgIHJldHVybiAiSDI2NCJfczsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZTE5YjFlMDMyNDBjNzVhODNjNTk5NDcyYWUyZWRlNDZk
YmZjNzFhYi4uM2I4ODM1NTJiYjI1OGIwNTkzNTE0YjVjNTUzNWRlYzYwNjY2MjRmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTYxNywxMSArNjE3LDExIEBAIHZvaWQgV0tCdW5k
bGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IHRleHQsIGludCBmCiAgICAgICAgIGF1dG8qIGhpZ2hsaWdodERhdGFBcnJheSA9IFdlYktpdDo6
dG9JbXBsKGhpZ2hsaWdodERhdGEpOwogICAgICAgICBoaWdobGlnaHRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFycmF5LT5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8g
ZGljdGlvbmFyeSA6IGhpZ2hsaWdodERhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEaWN0
aW9uYXJ5PigpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8
QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iKSktPnZhbHVlKCk7CisgICAgICAg
ICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9u
YXJ5LT5nZXQoImZyb20iX3MpKS0+dmFsdWUoKTsKICAgICAgICAgICAgIGhpZ2hsaWdodHMudW5j
aGVja2VkQXBwZW5kKHsKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rh
cnRPZmZzZXQpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9m
ZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGljdGlvbmFyeS0+Z2V0KCJsZW5ndGgi
KSktPnZhbHVlKCkpLAotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VD
b2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oZGljdGlvbmFyeS0+
Z2V0KCJjb2xvciIpKS0+c3RyaW5nKCkpCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5
LT5nZXQoImxlbmd0aCJfcykpLT52YWx1ZSgpKSwKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChzdGF0aWNfY2FzdDxBUEk6OlN0cmlu
Zyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiX3MpKS0+c3RyaW5nKCkpCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWJjNTNlYmZhOTEwOWM0OTE0Yjg5
ZDc0OWEwNGMwZjVkY2QxNjdmMy4uYjRkY2FjZmUwNTgxNjlhOTJmNmExZjgzNThkYTVkYjE1ZTVi
YjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFdlYlNvY2tldENoYW5u
ZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQoc2l6ZV90IGJ5dGVMZW5ndGgpCiAgICAgQ2hlY2tl
ZFNpemUgY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50ID0gbV9idWZmZXJlZEFtb3VudDsKICAgICBj
aGVja2VkTmV3QnVmZmVyZWRBbW91bnQgKz0gYnl0ZUxlbmd0aDsKICAgICBpZiAoVU5MSUtFTFko
Y2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50Lmhhc092ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgZmFp
bCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lOiBidWZmZXIgaGFzIG5vIG1vcmUgc3Bh
Y2UiKTsKKyAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lOiBidWZm
ZXIgaGFzIG5vIG1vcmUgc3BhY2UiX3MpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcAppbmRleCBjZWJkOTdhYWQ4Y2FiMjVmNmNlZGUwZTNlNzA3OTVmY2Y3MjcwMzRlLi43
OGQ1MGY1ZGYwZGFmMGJlZmNjNjQyOGQ0OTRkOThmMjgxNjIyMjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTY2
LDcgKzY2LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJlYW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgp
CiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIGZvciAoYXV0byYgY2FsbGJh
Y2sgOiBzdHJlYW0tPm1fc2VuZEhhbmRzaGFrZUNhbGxiYWNrcy52YWx1ZXMoKSkKICAgICAgICAg
ICAgIGNhbGxiYWNrKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgIHN0cmVhbS0+bV9jbGllbnQuZGlk
RmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRTdHJlYW1FcnJvcigwLCB7IH0sICJOZXR3
b3JrIHByb2Nlc3MgY3Jhc2hlZC4iKSk7CisgICAgICAgIHN0cmVhbS0+bV9jbGllbnQuZGlkRmFp
bFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRTdHJlYW1FcnJvcigwLCB7IH0sICJOZXR3b3Jr
IHByb2Nlc3MgY3Jhc2hlZC4iX3MpKTsKICAgICAgICAgc3RyZWFtID0gbnVsbHB0cjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDc5ZTM4NWJlMDI0ZWJiZjEzNmRjMjdkZGNlYWI0OTQ2MmUxNWMwNWYuLmE0ODkx
YjkyZGFmY2Q0NjY2NDhmMTZkYzEzMzYyNjBhYmYxMmM4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTIxLDcgKzEyMSw3
IEBAIEBlbmQKIC8vIFNldCBvdmVyZmxvdzogaGlkZGVuIG9uIHRoZSBhbm5vdGF0aW9uIGNvbnRh
aW5lciBzbyA8aW5wdXQ+IGVsZW1lbnRzIHNjcm9sbGVkIG91dCBvZiB2aWV3IGRvbid0IHNob3cK
IC8vIHNjcm9sbGJhcnMgb24gdGhlIGJvZHkuIFdlIGNhbid0IGFkZCBhbm5vdGF0aW9ucyBkaXJl
Y3RseSB0byB0aGUgYm9keSwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVuIG9uIHRoZSBib2R5CiAv
LyB3aWxsIGJyZWFrIHJ1YmJlci1iYW5kaW5nLgotc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRp
b25TdHlsZSA9CitzdGF0aWMgY29uc3RleHByIGF1dG8gYW5ub3RhdGlvblN0eWxlID0KICIjYW5u
b3RhdGlvbkNvbnRhaW5lciB7IgogIiAgICBvdmVyZmxvdzogaGlkZGVuOyAiCiAiICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsgIgpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBh
bm5vdGF0aW9uU3R5bGUgPQogIiAgICBwb3NpdGlvbjogc3RhdGljOyAiCiAiICAgIHdpZHRoOiAy
MDBweDsgIgogIiAgICBtYXJnaW4tdG9wOiAxMDBweDsgIgotIn0gIjsKKyJ9ICJfczsKIAogLy8g
SW4gbm9uLWNvbnRpbnVvdXMgbW9kZXMsIGEgc2luZ2xlIHNjcm9sbCBldmVudCB3aXRoIGEgbWFn
bml0dWRlIG9mID49IDIwcHgKIC8vIHdpbGwganVtcCB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBw
YWdlLCB0byBtYXRjaCBQREZLaXQgYmVoYXZpb3IuCkBAIC03NjksNyArNzY5LDcgQEAgdm9pZCBQ
REZQbHVnaW46OnJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCkKIAogICAgIGlmICgh
aXNNYWluUnVuTG9vcCgpKSB7CiAjaWYgIUxPR19ESVNBQkxFRAotICAgICAgICBwZGZMb2coIkRp
c2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCIpOwor
ICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZyBvbiBiYWNr
Z3JvdW5kIHRocmVhZCJfcyk7CiAjZW5kaWYKICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgICAgICByZWNlaXZl
ZE5vbkxpbmVhcml6ZWRQREZTZW50aW5lbCgpOwpAQCAtOTYxLDcgKzk2MSw3IEBAIHZvaWQgUERG
UGx1Z2luOjp0aHJlYWRFbnRyeShSZWY8UERGUGx1Z2luPiYmIHByb3RlY3RlZFBsdWdpbikKICAg
ICBmaXJzdFBhZ2VTZW1hcGhvcmUud2FpdCgpOwogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIHBk
ZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJzdCBwYWdlIik7CisgICAgcGRmTG9nKCJGaW5p
c2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiX3MpOwogI2VuZGlmCiB9CiAKQEAgLTEwNTUsNyAr
MTA1NSw3IEBAIHZvaWQgUERGUGx1Z2luOjphZG9wdEJhY2tncm91bmRUaHJlYWREb2N1bWVudCgp
CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAg
cGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBmcm9tIGJhY2tncm91bmQgdGhyZWFkIik7Cisg
ICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBmcm9tIGJhY2tncm91bmQgdGhyZWFkIl9z
KTsKICNlbmRpZgogCiAgICAgbV9wZGZEb2N1bWVudCA9IFdURk1vdmUobV9iYWNrZ3JvdW5kVGhy
ZWFkRG9jdW1lbnQpOwpAQCAtMTI4MiwxMyArMTI4MiwxMyBAQCBQbHVnaW5JbmZvIFBERlBsdWdp
bjo6cGx1Z2luSW5mbygpCiAgICAgaW5mby5idW5kbGVJZGVudGlmaWVyID0gImNvbS5hcHBsZS53
ZWJraXQuYnVpbHRpbnBkZnBsdWdpbiJfczsKIAogICAgIE1pbWVDbGFzc0luZm8gcGRmTWltZUNs
YXNzSW5mbzsKLSAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAiYXBwbGljYXRpb24vcGRmIjsK
KyAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAiYXBwbGljYXRpb24vcGRmIl9zOwogICAgIHBk
Zk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7CiAgICAg
cGRmTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIik7CiAgICAgaW5mby5taW1l
cy5hcHBlbmQocGRmTWltZUNsYXNzSW5mbyk7CiAKICAgICBNaW1lQ2xhc3NJbmZvIHRleHRQREZN
aW1lQ2xhc3NJbmZvOwotICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAidGV4dC9wZGYi
OworICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAidGV4dC9wZGYiX3M7CiAgICAgdGV4
dFBERk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7CiAg
ICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiIpOwogICAgIGlu
Zm8ubWltZXMuYXBwZW5kKHRleHRQREZNaW1lQ2xhc3NJbmZvKTsKQEAgLTE1NTIsNyArMTU1Miw3
IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIFJldGFpblB0cjxO
U1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5T
U3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyc10pOwogICAgIFJl
c291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7CiAKLSAg
ICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJp
bmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1dG8gcmVzb3VyY2Ug
PSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0
KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiJfcywgU3RyaW5nKCksIFN0cmluZygp
LCBzeW50aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3Vt
ZW50KCktPmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSk7CiB9CiAKQEAgLTE2ODgsMTAgKzE2ODgsMTAgQEAgdm9pZCBQREZQbHVnaW46OnNldFN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgbV9z
dWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lOwogCiAgICAgaWYgKG1fc3VnZ2Vz
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUobmlsLCAiYXBwbGljYXRpb24vcGRmIik7CisgICAg
ICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShu
aWwsICJhcHBsaWNhdGlvbi9wZGYiX3MpOwogCiAgICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1l
LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkKLSAgICAgICAgbV9zdWdnZXN0ZWRG
aWxlbmFtZS5hcHBlbmQoIi5wZGYiKTsKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBl
bmQoIi5wZGYiX3MpOwogfQogICAgIAogdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QsIHVpbnQzMl90
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTg5Myw3ICsxODkzLDcgQEAgYm9vbCBQREZQbHVnaW46Omlu
aXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX3NvdXJjZVVS
TCA9IHBhcmFtZXRlcnMudXJsOwogICAgIGlmICghcGFyYW1ldGVycy5zaG91bGRVc2VNYW51YWxM
b2FkZXIgJiYgIXBhcmFtZXRlcnMudXJsLmlzRW1wdHkoKSkKLSAgICAgICAgY29udHJvbGxlcigp
LT5sb2FkVVJMKHBkZkRvY3VtZW50UmVxdWVzdElELCAiR0VUIiwgcGFyYW1ldGVycy51cmwuc3Ry
aW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxz
ZSk7CisgICAgICAgIGNvbnRyb2xsZXIoKS0+bG9hZFVSTChwZGZEb2N1bWVudFJlcXVlc3RJRCwg
IkdFVCJfcywgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFw
KCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CiAKICAgICBjb250cm9sbGVyKCktPmRpZElu
aXRpYWxpemVQbHVnaW4oKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbQppbmRleCBkNzQ1ZjAyMDk0ODRmNGVjMmI3NGE1NTM3NGQxYmNlOTFjYTY3ODVkLi43
ZDQzZmEwMjFjNWEyMGQ2NTU0MDhlNzhiYTliZWZmNjU0NzA3ODM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tCkBAIC01NCwxNSArNTQsMTUgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBj
c3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudChOU1RleHRBbGlnbm1lbnQgYWxpZ25t
ZW4KIHsKICAgICBzd2l0Y2ggKGFsaWdubWVudCkgewogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50
TGVmdDoKLSAgICAgICAgcmV0dXJuICJsZWZ0IjsKKyAgICAgICAgcmV0dXJuICJsZWZ0Il9zOwog
ICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50UmlnaHQ6Ci0gICAgICAgIHJldHVybiAicmlnaHQiOwor
ICAgICAgICByZXR1cm4gInJpZ2h0Il9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50Q2VudGVy
OgotICAgICAgICByZXR1cm4gImNlbnRlciI7CisgICAgICAgIHJldHVybiAiY2VudGVyIl9zOwog
ICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOgotICAgICAgICByZXR1cm4gImp1c3Rp
ZnkiOworICAgICAgICByZXR1cm4gImp1c3RpZnkiX3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1l
bnROYXR1cmFsOgotICAgICAgICByZXR1cm4gIi13ZWJraXQtc3RhcnQiOworICAgICAgICByZXR1
cm4gIi13ZWJraXQtc3RhcnQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDM0NGY0YmUyM2E0Mzc2NzE5Nzc4OTk5N2Q3NjM3YTIw
MzFiN2VhZS4uNDVhMDExYmU1NTY2MjA3YzljYWM0NWY5ZWY2MDkyY2U4MDE1MDAxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEy
MzEsNyArMTIzMSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVSTCh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFodHRwQm9k
eS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGh0dHBCb2R5LmRhdGEoKSwgaHR0cEJvZHku
c2l6ZSgpKSk7CiAgICAgICAgIGlmIChmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
Lmh0dHBDb250ZW50VHlwZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy
bGVuY29kZWQiX3MpOwogICAgIH0KIAogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lKCktPmRvY3VtZW50KCktPnJlZmVycmVy
UG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIGZyYW1l
KCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IDBlMTE3YTBlYzYxOTAwZDE1MGFkYjFk
ZTljNjgyMjlhOGU3YWI1NzAuLmY1YmQ4OWYxYzM1NDY5NDk3YjI5YjU2OWU0YjhkMjRiM2JmMGMx
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptYWtl
Q3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyCiAKICAgICBpZiAoIWlz
V2ViQnJvd3NlcigpKSB7CiAgICAgICAgIFdFQkFVVEhOX1JFTEVBU0VfTE9HX0VSUk9SKCJtYWtl
Q3JlZGVudGlhbDogVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMgb25s
eSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVy
LndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsKLSAgICAgICAgaGFuZGxlcih7IH0sIHN0YXRp
Y19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFs
bG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZScgQVBJIGlzIG9u
bHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Bl
ci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9KTsKKyAgICAgICAgaGFuZGxlcih7IH0sIHN0
YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5v
dEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZScgQVBJIGlz
IG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVs
b3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJB
dXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok1ha2VDcmVkZW50aWFsKGhhc2gsIG9wdGlvbnMs
IGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihj
b25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3VyaXQKIAogICAgIGlmICghaXNXZWJCcm93c2Vy
KCkpIHsKICAgICAgICAgV0VCQVVUSE5fUkVMRUFTRV9MT0dfRVJST1IoImdldEFzc2VydGlvbjog
VGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4g
YXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBl
bnRpdGxlbWVudC4iKTsKLSAgICAgICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRo
ZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFw
cGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50
aXRsZW1lbnQuIiB9KTsKKyAgICAgICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRp
Y2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRo
ZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFw
cGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50
aXRsZW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdldEFzc2VydGlvbihoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVy
ZSksIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcAppbmRleCBiYTIxZTRkOGI0NzRkNWRhMGExZWJjNDc3YTEwM2Q4Mjlj
NWVhMTA3Li40Mjc1ZWJkYzZlMDllYTE2YTUzZDhhNzdlNmU4MThhYWM2NmEzNmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2VIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIG90aGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpTYW1lRW50
cnlDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsg
V2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVu
a25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIGlmIChpZGVudGlm
aWVyID09IG90aGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6aXNTYW1lRW50cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aQogdm9pZCBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVIYW5kbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGNyZWF0ZUlmTmVjZXNzYXJ5LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpF
eGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0p
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsg
V2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAg
bV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6R2V0RmlsZUhhbmRsZShpZGVudGlmaWVyLCBuYW1lLCBjcmVhdGVJZk5lY2Vzc2Fy
eSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmFtZSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGVIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW4KIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJl
Y3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5LCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3Is
ICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlv
biBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RGlyZWN0b3J5SGFuZGxlKGlkZW50
aWZpZXIsIG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsCiB2b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0
ZVJlY3Vyc2l2ZWx5LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRD
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25v
d25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92
ZUVudHJ5KGlkZW50aWZpZXIsIG5hbWUsIGRlbGV0ZVJlY3Vyc2l2ZWx5KSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUg
ewogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3Io
ZXJyb3IpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6cmVtb3ZlRW50cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aQogdm9p
ZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlc29sdmUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIgb3RoZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OlJlc29sdmVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0
IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlv
biB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OlJlc29sdmUoaWRlbnRpZmllciwgb3RoZXJJZGVudGlmaWVyKSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlc29sdmUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXRGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0
cmluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24g
eyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
R2V0RmlsZShpZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQp
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmdldEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKIHZvaWQgV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwg
IkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9u
IGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKGlk
ZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE1Niw3
ICsxNTYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogdm9pZCBXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtu
b3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAi
Q29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xvc2VTeW5jQWNjZXNz
SGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7
CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGEKIHZvaWQgV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OkdldEhhbmRsZU5hbWVzQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpHZXRIYW5kbGVOYW1lcyhpZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGUKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZUNhbGxiYWNr
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpV
bmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9y
LCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0SGFuZGxlKGlk
ZW50aWZpZXIsIG5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9p
ZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmkKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
Ojptb3ZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rp
b24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3Qi
X3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpNb3ZlKGlkZW50aWZpZXIsIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgbmV3TmFtZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudC5jcHAKaW5kZXggYzU3ZTc4MDliMmVlMTY2ZGQ2ZjY4OGJlMjJhODU5YzdkYWRkYThm
YS4uMGM1ZGY1NGRjNDczZDFhNmYzNmQyODgzOWE1YmYxMWVkNjgzMTI3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgdm9pZCBXZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGUKICAgICB9OwogCiAgICAgYXV0byB2b2ljZSA9IHV0dGVyYW5jZS0+dm9p
Y2UoKTsKLSAgICBhdXRvIHZvaWNlVVJJID0gdm9pY2UgPyB2b2ljZS0+dm9pY2VVUkkoKSA6ICIi
OwotICAgIGF1dG8gbmFtZSA9IHZvaWNlID8gdm9pY2UtPm5hbWUoKSA6ICIiOwotICAgIGF1dG8g
bGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6ICIiOworICAgIGF1dG8gdm9pY2VVUkkgPSB2
b2ljZSA/IHZvaWNlLT52b2ljZVVSSSgpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIG5hbWUg
PSB2b2ljZSA/IHZvaWNlLT5uYW1lKCkgOiBlbXB0eVN0cmluZygpOworICAgIGF1dG8gbGFuZyA9
IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6IGVtcHR5U3RyaW5nKCk7CiAgICAgYXV0byBsb2NhbFNl
cnZpY2UgPSB2b2ljZSA/IHZvaWNlLT5sb2NhbFNlcnZpY2UoKSA6IGZhbHNlOwogICAgIGF1dG8g
aXNEZWZhdWx0ID0gdm9pY2UgPyB2b2ljZS0+aXNEZWZhdWx0KCkgOiBmYWxzZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggYWFjNmIzZmExMDcwYTdhM2MwNWRi
YTc3MjdmNDBhMzgxZmE0ODE2My4uYWZiMWIyZDkxZGFmMjc0OTgwZjM3MWNiZTdkZjUxOWQyZmMy
NTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTY5LDcgKzY5LDcg
QEAgc3RhdGljIHZvaWQgY2hhbmdlV29yZENhc2UoV2ViUGFnZSogcGFnZSwgTlNTdHJpbmcgKigq
Y2hhbmdlQ2FzZSkoTlNTdHJpbmcgKikpCiAgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRp
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgic2Vs
ZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0
V29yZCJfcykuZXhlY3V0ZSgpOwogCiAgICAgTlNTdHJpbmcgKnNlbGVjdGVkU3RyaW5nID0gZnJh
bWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpKTsKICAgICBwYWdlLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoZnJhbWUucHRy
KCksIGNoYW5nZUNhc2Uoc2VsZWN0ZWRTdHJpbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZWUxNjQ1ZWY0ZTBjODQ0
NzU3NDAzZDJjZGU1MWFkNGIxMTMwMmNjYi4uZGU4MDEyN2ViMGJlMjNhODNhZmQ0NTkzZGViZWU0
N2FjMzYzNDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIxNDEsNyArMjE0MSw3IEBAIEpTQzo6SlNPYmplY3QqIEpT
TWVzc2FnZUxpc3RlbmVyOjpqc0Rlc2NyaXB0aW9uRnJvbURlY29kZXIoSlNDOjpKU0dsb2JhbE9i
amVjdCoKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJuYW1lIiksIEpTQzo6SlNWYWx1ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVj
b2Rlci5tZXNzYWdlTmFtZSgpKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwogCi0gICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iKSwgSlNDOjpqc1N0cmluZyh2bSwgSVBDOjpkZXNj
cmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSk7CisgICAganNSZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iKSwgSlND
Ojpqc1N0cmluZyh2bSwgU3RyaW5nIHsgSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpIH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAog
ICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImRlc3RpbmF0aW9uSUQiKSwgSlNDOjpKU1ZhbHVlKGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSk7CkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSQogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSBK
U0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1Zh
bHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJTZW1hcGhv
cmUiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNlbWFwaG9y
ZSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsK
ICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgV2ViS2l0OjpJUENUZXN0aW5n
QVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlKFdURk1vdmUodmFsdWUpKS0+Y3JlYXRlSlNXcmFw
cGVyKHRvUmVmKGdsb2JhbE9iamVjdCkpKTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpLCBqc1ZhbHVlKTsKQEAgLTIy
MjEsNyArMjIyMSw3IEBAIHRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3Ry
dWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNoYXJlZE1lbW9yeSIpKTsK
KyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCAiU2hhcmVkTWVtb3J5Il9z
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAg
ICAgYXV0byBwcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlOwpAQCAtMjI0MCw3ICsy
MjQwLDcgQEAgdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBvYmplY3QtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGF0YVNpemUiX3MpLCBKU0M6OkpT
VmFsdWUodmFsdWUuZGF0YVNpemUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U0M6OkpTVmFsdWUoKSk7CiAKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvdGVjdGlvbiJfcyksIEpTQzo6anNOb250cml2aWFsU3Ry
aW5nKHZtLCBwcm90ZWN0aW9uID09IFByb3RlY3Rpb246OlJlYWRXcml0ZSA/ICJSZWFkV3JpdGUi
IDogIlJlYWRPbmx5IikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0aW9uIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlID8gIlJlYWRXcml0ZSJf
cyA6ICJSZWFkT25seSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6
SlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNDBiOTk3MzIwMDc4MjVlNjY4M2U2MzY4
MDQzZjYyYjZiNTkwMzM3Yi4uYjNiZWUyODJlY2NjOWQxZDY3MmNiMWVmN2Q4NmQ3ZTBkMzg1NzM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApA
QCAtNDk2LDcgKzQ5Niw3IEBAIFJlZjxBUEk6OkFycmF5PiBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMo
KQogU3RyaW5nIFdlYkZyYW1lOjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogewogICAgIGlmICgh
bV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5jb21w
b3NpdG9yKCkubGF5ZXJUcmVlQXNUZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KaW5kZXggODVmNWE0OGFhZWZjZjNiNjMwOGFmNmM0ZjdiNDUxZjBiMmZh
MTVjZS4uYjJjODcyYzcwMjQzYWU5ZGIxYzdhMWQ4MmU1ZTYzYjFhZjQzNDU4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtODEwLDExICs4MTAsMTIgQEAg
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICBmcmFtZVZpZXctPnJlbmRlclZpZXcoKS0+bGF5
ZXIoKS0+YmFja2luZygpLT50aWxlZEJhY2tpbmcoKS0+cHJlcG9wdWxhdGVSZWN0KHRpbGVDb3Zl
cmFnZVJlY3QpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHRyYW5z
aWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aChTdHJpbmcga2V5UGF0aCkKK3N0YXRpYyBS
ZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JL
ZXlQYXRoKEFTQ0lJTGl0ZXJhbCBrZXlQYXRoKQogewogICAgIGNvbnN0IGZsb2F0IHRyYW5zaWVu
dFpvb21TbmFwQmFja0R1cmF0aW9uID0gMC4yNTsKIAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5p
bWF0aW9uPiBhbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0
aDprZXlQYXRoXTsKKyAgICBhdXRvIG5zS2V5UGF0aCA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhCeXRlczprZXlQYXRoLmNoYXJhY3RlcnMoKSBsZW5ndGg6a2V5UGF0aC5sZW5n
dGgoKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5nXSk7CisgICAgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlv
bldpdGhLZXlQYXRoOm5zS2V5UGF0aC5nZXQoKV07CiAgICAgW2FuaW1hdGlvbiBzZXREdXJhdGlv
bjp0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlvbl07CiAgICAgW2FuaW1hdGlvbiBzZXRGaWxs
TW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNv
bXBsZXRpb246ZmFsc2VdOwpAQCAtODUzLDcgKzg1NCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBv
aW50CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0
cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKIAotICAgIFJl
dGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2ll
bnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSIpOworICAgIFJldGFpblB0
cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29t
U25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSJfcyk7CiAgICAgYXV0byByZW5kZXJW
aWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmll
d0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3QW5pbWF0aW9uLT5zZXRUb1ZhbHVl
KHRyYW5zZm9ybSk7CiAKQEAgLTg2Niw3ICs4NjcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2lu
dAogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldENv
bXBsZXRpb25CbG9jazpbem9vbUxheWVyLCBzaGFkb3dDQUxheWVyLCBwYWdlLCBzY2FsZSwgb3Jp
Z2luXSAoKSB7Ci0gICAgICAgIHpvb21MYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFu
c2llbnRab29tQ29tbWl0Iik7CisgICAgICAgIHpvb21MYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9y
S2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zKTsKICAgICAgICAgaWYgKHNoYWRvd0NBTGF5ZXIp
CiAgICAgICAgICAgICBbc2hhZG93Q0FMYXllciByZW1vdmVBbGxBbmltYXRpb25zXTsKIApAQCAt
ODc0LDE3ICs4NzUsMTcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29t
bWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICAgICAgICAgIGRy
YXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdpbik7CiAgICAg
fV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNv
bW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOworICAgIHpvb21MYXllci0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zLCByZW5kZXJWaWV3QW5pbWF0aW9u
LmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVyKSB7CiAgICAgICAgIEZsb2F0UmVjdCBz
aGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0ZvckZyYW1lKGZyYW1lVmlldywgc2NhbGUp
OwogICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFkb3dQYXRoID0gYWRvcHRDRihDR1Bh
dGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5VTEwpKTsKIAotICAgICAgICBSZXRhaW5Q
dHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9v
bVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiKTsKKyAgICAgICAgUmV0YWluUHRyPENB
QmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFw
QW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIl9zKTsKICAgICAgICAgW3NoYWRvd0JvdW5kc0Fu
aW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6c2hhZG93Qm91bmRzXV07
Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQb3NpdGlvbkFuaW1h
dGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgicG9zaXRpb24iKTsK
KyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd1Bvc2l0aW9uQW5pbWF0
aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJwb3NpdGlvbiJfcyk7
CiAgICAgICAgIFtzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZh
bHVlV2l0aFBvaW50OnNoYWRvd0xheWVyUG9zaXRpb25Gb3JGcmFtZShmcmFtZVZpZXcsIGNvbnN0
cmFpbmVkT3JpZ2luKV1dOwotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hh
ZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgi
c2hhZG93UGF0aCIpOworICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93
UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgic2hh
ZG93UGF0aCJfcyk7CiAgICAgICAgIFtzaGFkb3dQYXRoQW5pbWF0aW9uIHNldFRvVmFsdWU6KF9f
YnJpZGdlIGlkKXNoYWRvd1BhdGguZ2V0KCldOwogCiAgICAgICAgIFtzaGFkb3dDQUxheWVyIGFk
ZEFuaW1hdGlvbjpzaGFkb3dCb3VuZHNBbmltYXRpb24uZ2V0KCkgZm9yS2V5OkAidHJhbnNpZW50
Wm9vbUNvbW1pdFNoYWRvd0JvdW5kcyJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCmlu
ZGV4IDQ4NTQ2ZmMxNGExODlmN2YzMTNiOTM5ZWEwZjUyNGFkOWVlNmNlZDMuLmJmY2ZhYTJhYWY1
NDk3ODBmNWRiYjljZjM2NTkyM2I3YmEzODRkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIubW0KQEAgLTQ0LDEwICs0NCw4IEBAIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkKIAogdm9pZCBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG1lc3NhZ2Up
CiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyht
ZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkpOwotICAgIGlmIChtZXNzYWdl
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobWVzc2FnZU5hbWUgPT0g
TGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjVXBkYXRlTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgYXV0byogbWVzc2FnZU5hbWUgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtl
eSk7CisgICAgaWYgKExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0
ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9PSBtZXNzYWdlTmFtZSkgewogI2lm
IEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCiAgICAgICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQppbmRleCAwYzUzZDM1NjA0ZTM0YTY5NGJhYmNmZjNl
NjQ3NjU0OGE4ZTEzNDFlLi4wNWFkNjc4YmEzMGFhM2M3Mjg4ZWE0OTI5ZmRjNDU5MDQzZGZmM2E1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0K
KysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1ZXN0Lm1tCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OmRpZERlbGV0ZUV4aXN0
aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5kbGUmIGIKICAgICBpZiAoZXJyb3IpCiAgICAg
ICAgIG1fY29ubmVjdGlvbi0+YnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcoIkZhaWxl
ZCB0byBkZWxldGUgYXBwIGJ1bmRsZTogIiwgU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pKSk7
CiAKLSAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVhbnVwKGVycm9yID8gU3RyaW5nKFtl
cnJvciBkZXNjcmlwdGlvbl0pIDogIiIpOworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENs
ZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0aW9uXSkgOiBlbXB0eVN0cmluZygp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCA0NjU1NTMxNTIwNWE0Yjc0NDVkM2U3OTdm
YjczZTA2ZTljZWNmOTZhLi42MzVkMGFkODgyZTU0ZWRkZDkyYTM5OTY2OTZjOWZiNWEwMGU4MTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCkBA
IC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwog
Ci0gICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCBzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYnJvYWRjYXN0RGVi
dWdNZXNzYWdlKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgc2VuZERlYnVnTWVzc2FnZShTdHJpbmdW
aWV3KTsKIAogcHJpdmF0ZToKICAgICBDbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5k
ZXggZDA4YzA0NWIxNGU2MjVlMzcyZTBkMGZiYmJjZDA2OTRmZjUxMmQzMi4uOGIyMWMxNWJiNjBk
ZWI2NWViYWYxOTk1NTQxZWQxMDk0MmM2MzE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDbGll
bnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGJy
b2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJUdXJuZWQgRGVidWcgTW9kZSAiLCBtX2Rl
YnVnTW9kZUVuYWJsZWQgPyAib24iIDogIm9mZiIpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0
aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBD
bGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoU3RyaW5nVmlldyBtZXNzYWdl
KQogewogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRpZmllcjsKICAgICBhdXRvIHNpZ25pbmdJZGVu
dGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCk7CkBAIC0xNDMsNyArMTQzLDcg
QEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgIERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNz
YWdlKG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZpZXIsIG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBD
bGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZShTdHJpbmdWaWV3IG1lc3Nh
Z2UpCiB7CiAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBzZW5kIHRoZSBkZWJ1ZyBtZXNzYWdl
IHR3aWNlLgogICAgIC8vIEFmdGVyIGdldHRpbmcgYWxsIGRlYnVnIG1lc3NhZ2UgY2xpZW50cyBv
bnRvIHRoZSBlbmNvZGVyL2RlY29kZXIgbWVjaGFuaXNtLCByZW1vdmUgdGhlIG9sZCBzdHlsZSBt
ZXNzYWdlLgpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERl
YnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3N0cmluZyhkaWN0aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbERlYnVn
TWVzc2FnZUtleSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB4cGNfY29ubmVjdGlvbl9z
ZW5kX21lc3NhZ2UobV94cGNDb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAot
ICAgIHNlbmREYWVtb25NZXNzYWdlPERhZW1vbk1lc3NhZ2VUeXBlOjpEZWJ1Z01lc3NhZ2U+KG1l
c3NhZ2UpOworICAgIHNlbmREYWVtb25NZXNzYWdlPERhZW1vbk1lc3NhZ2VUeXBlOjpEZWJ1Z01l
c3NhZ2U+KG1lc3NhZ2UudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKIH0KIAogdm9pZCBDbGll
bnRDb25uZWN0aW9uOjplbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8QXBw
QnVuZGxlUmVxdWVzdD4mJiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaAppbmRleCA5NzgyMzhmNTE3YjBkM2ZiOTZkOTQwNjMxMTMzZmM4ZTQwYWE0NDk2Li4wNjYy
ZjEzZTk4Mzk0OTAwYzU0MWZhYmRlOTU2ZTg1Yzk2NjJkYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGllbnRDb25uZWN0aW9uKiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlv
bnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKIAotICAgIHZv
aWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYnJvYWRj
YXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVj
dGlvbklkZW50aXRpZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1OWVjZjVmMjUwN2M4MGRhYTAwM2JmZTJjOTczNGU0
Li5kMWJmNjFlODNhZjBjMzg1Mjg3ZDdiMjVlOWMyMWJjZThlZDRmZWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBEYWVt
b246OnJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCiAgICAgZnVuY3Rpb24oKTsKIH0KIAotdm9pZCBEYWVtb246OmJyb2FkY2FzdERlYnVnTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIERhZW1vbjo6YnJvYWRjYXN0RGVidWdN
ZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkKIHsKICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDog
bV9jb25uZWN0aW9uTWFwKSB7CiAgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZS0+ZGVidWdNb2Rl
SXNFbmFibGVkKCkpCkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBEYWVtb246OmdldE9yaWdpbnNX
aXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENsaWVudENvbm5lY3Rpb24qIGNvbm4K
IHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVu
dENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQogewogICAg
IGlmICghY2FuUmVnaXN0ZXJGb3JOb3RpZmljYXRpb25zKCpjb25uZWN0aW9uKSkgewotICAgICAg
ICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0ZSBwdXNoIGFuZCBub3RpZmljYXRpb24gcmVn
aXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5rbm93biBob3N0IGFwcGxpY2F0aW9uIGNvZGUg
c2lnbmluZyBpZGVudGlmaWVyIik7CisgICAgICAgIHJlcGx5U2VuZGVyKCJDb3VsZCBub3QgZGVs
ZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIGZvciBjb25uZWN0aW9uOiBV
bmtub3duIGhvc3QgYXBwbGljYXRpb24gY29kZSBzaWduaW5nIGlkZW50aWZpZXIiX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFl
bW9uTWFpbi5tbQppbmRleCBkN2E2YjYzZmU0ZGIyZGViNTBhNWU5ZTE3MTc0MWYxMDg1ZGNhZWQ3
Li44MTUxYzYwMWM2MTI4NDhmOTczZmY4OWExZTg3YzYzZWE4ODQ4Y2ZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBp
bnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IE5TU2VhcmNoUGF0aEZvckRpcmVj
dG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNVc2VyRG9tYWluTWFzaywgWUVT
KVswXTsKICAgICAgICAgICAgIFN0cmluZyBwdXNoRGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhsaWJyYXJ5UGF0aCwgeyAiV2ViS2l0IiwgIldlYlB1
c2giLCAiUHVzaERhdGFiYXNlLmRiIiB9KTsKLSAgICAgICAgICAgIDo6V2ViUHVzaEQ6OkRhZW1v
bjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2VydmljZShpbmNvbWluZ1B1c2hTZXJ2aWNlTmFtZSwg
cHVzaERhdGFiYXNlUGF0aCk7CisgICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmds
ZXRvbigpLnN0YXJ0UHVzaFNlcnZpY2UoU3RyaW5nIHsgaW5jb21pbmdQdXNoU2VydmljZU5hbWUg
fSwgcHVzaERhdGFiYXNlUGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgQ0ZSdW5Mb29wUnVu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApp
bmRleCBiMjAyYjQ0ODA3OGMzZmVhNWJjOTU1MDgwYWE3ZWVkZTZlY2E3OGE4Li45MTAxYzllYzZj
NGZlZDMzYTNiNmFlNzk5ZjgxZjIzYjRhOTdmYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFsaXplKCkKIFN0b3JhZ2VUcmFja2VyJiBTdG9yYWdl
VHJhY2tlcjo6dHJhY2tlcigpCiB7CiAgICAgaWYgKCFzdG9yYWdlVHJhY2tlcikKLSAgICAgICAg
c3RvcmFnZVRyYWNrZXIgPSBuZXcgU3RvcmFnZVRyYWNrZXIoIiIpOworICAgICAgICBzdG9yYWdl
VHJhY2tlciA9IG5ldyBTdG9yYWdlVHJhY2tlcihlbXB0eVN0cmluZygpKTsKICAgICBpZiAoc3Rv
cmFnZVRyYWNrZXItPm1fbmVlZHNJbml0aWFsaXphdGlvbikKICAgICAgICAgc3RvcmFnZVRyYWNr
ZXItPmludGVybmFsSW5pdGlhbGl6ZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgwZmRjMzdkZmQ5NGY5NWE3YTlkZDFhLi4wMjZkNDg3
MDNlMzRjZDc4ZTZkMDM0YWMwMGU2YjdhOTUyY2Q4ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcApAQCAtNTIsOCArNTIsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0
YWNoZWQiOwotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNh
YmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNB
dHRhY2hlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBpbnNwZWN0b3JBdHRhY2hEaXNhYmxl
ZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQiX3M7CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5
KQogewpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9y
QXR0YWNoRGlzYWJsZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9y
QXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVj
dG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBkaXNhYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwor
ICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcsIGRpc2FibGVk
ID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKQpAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wg
V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChib29sIGF0dGFjaGVk
KQogewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0
dGFjaGVkID8gInRydWUiIDogImZhbHNlIik7CisgICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvclN0
YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkZWxldGVJbnNwZWN0b3JBdHRhY2hEaXNhYmxl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQ
cm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQ
cm9wZXJ0eUxpc3QubW0KaW5kZXggNDc5MTZlNzgxYTI0MzA0MWUxZDU4MjQ4YWJmYWVhYWMwYzU3
YmI1OS4uNzk5YTdiNTk1MmIyYjg1Y2I3MGEwYjAwYzU2MmI5MDE3ODZjMzM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlz
dC5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIEhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6Ondy
aXRlT2JqZWN0cyhCaW5hcnlQcm9wZXJ0eUxpc3RPYmplY3RTdHJlYW0mIHN0cgogewogICAgIHNp
emVfdCBvdXRlckRpY3Rpb25hcnlTdGFydCA9IHN0cmVhbS53cml0ZURpY3Rpb25hcnlTdGFydCgp
OwogCi0gICAgc3RyZWFtLndyaXRlU3RyaW5nKCJXZWJIaXN0b3J5RmlsZVZlcnNpb24iKTsKLSAg
ICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyIpOworICAgIHN0cmVhbS53cml0
ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9uIl9zKTsKKyAgICBzdHJlYW0ud3JpdGVTdHJp
bmcoIldlYkhpc3RvcnlEYXRlcyJfcyk7CiAKICAgICBzdHJlYW0ud3JpdGVJbnRlZ2VyKGN1cnJl
bnRGaWxlVmVyc2lvbik7CiAgICAgc2l6ZV90IG91dGVyRGF0ZUFycmF5U3RhcnQgPSBzdHJlYW0u
d3JpdGVBcnJheVN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQppbmRleCBjYWMwZThi
YzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZkMDllMzE2Li42MjkxMTQ2OWFjZGRhNDE5ODdmNDk1
NGM1YTY1ZDYzYzhmYjcyZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KQEAgLTEzNSw3
ICsxMzUsNyBAQCBAZW5kCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiB3ZWJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0
b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0
aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICBy
ZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggYjUyNWJiMGQ4YjQ4
NTFjZDFhYTUzMzI3OTc5ZDEwNjRmNmVlZTczOS4uZjhlYzJmYjQwYzNkOGQ1Y2ViNTQ2ZWQ4N2Fi
Yzk0YjA0NGY2ODkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTQ0LDcgKzQ0LDcgQEAg
KyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyOihOU1N0cmluZyAq
KWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
IAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoU3RyaW5nIHsgZGF0YWJhc2VJZGVudGlm
aWVyIH0pOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4NzdmZjI4
N2E3NmMzMTVmMTE5NzM5MWQyNmMwNGMzZWIyNWU2MDVhLi5iZmQ1ZDA5ZTk4YWRmNzM5YWI4ZjM3
N2JjYjdlNGQ1NGUyZTgwNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI2MDgsMTMgKzI2MDgsMTMgQEAgc3RhdGljIGNvbnN0IFNl
bGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0b3JFeGNlcHRpb25NYXAoKQogewogICAgIFNlbGVj
dG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hNYXA8U0VMLCBTdHJpbmc+OwogCi0gICAgbWFwLT5h
ZGQoQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRO
ZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydFBhcmFncmFwaFNlcGFyYXRv
cjopLCAiSW5zZXJ0TmV3bGluZSIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRUYWJJ
Z25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0
b3IocGFnZURvd246KSwgIk1vdmVQYWdlRG93biIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3Rvcihw
YWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAiTW92ZVBhZ2VVcCIpOwot
ICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0
TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1h
cC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6KSwgIkluc2VydE5ld2xp
bmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRp
dG9yOiksICJJbnNlcnRUYWIiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bjop
LCAiTW92ZVBhZ2VEb3duIl9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7Cisg
ICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAiTW92ZVBhZ2VVcCJfcyk7CisgICAgbWFw
LT5hZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VVcEFu
ZE1vZGlmeVNlbGVjdGlvbiJfcyk7CiAKICAgICByZXR1cm4gbWFwOwogfQpAQCAtMjY1MCw3ICsy
NjUwLDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kKWNvcmVDb21tYW5kQnlOYW1lOihj
b25zdCBjaGFyKiluYW1lCiAgICAgYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkVkaXRvcjo6
Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQobmFtZSk7
CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBuYW1lIH0p
OwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3Rv
cgpAQCAtMjg4OCw3ICsyODg4LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiAgICAgICAgIE5T
TWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21l
bnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgewotICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9u
TGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlv
biA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAi
bHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTooZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9u
LCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZSldOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBbc2VsZiBfY2FuRWRpdF07CkBAIC0yOTA2LDcgKzI5MDYsNyBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBj
bGFzc11dKSB7CiAgICAgICAgICAgICAvLyBUYWtlIGNvbnRyb2wgb2YgdGhlIHRpdGxlIG9mIHRo
ZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nL3VuY2hlY2tpbmcgaXQgYmVjYXVz
ZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3b3VsZCBiZSBhbWJpZ3VvdXMuCi0gICAgICAgICAg
ICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShX
ZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCIpICE9IFRyaVN0YXRlOjpGYWxzZSkK
KyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlv
bkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIl9zKSAhPSBUcmlT
dGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJTkdfSU5URVJOQUwoIkxlZnQg
dG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRlbSIpCiAgICAgICAgICAg
ICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVm
dCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQpAQCAtNDY4Myw3ICs0NjgzLDcgQEAg
LSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJpbnRpbmcgbWluaW11bVBhZ2VMb2dpY2FsV2lk
dGg6KGZsb2F0KW1pblBhZ2VMb2dpY2EKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxm
IF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJhbWUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvcmVW
aWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFU
eXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJwcmludCIgOiAic2NyZWVuIik7CisgICAgICAgICAg
ICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJwcmludCJfcyA6
ICJzY3JlZW4iX3MpOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEluIHNldHRpbmcgcHJpbnRpbmcsIHdlIHNob3Vs
ZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFscmVhZHkgY2FjaGVkIGZvciB0aGUgZG9jdW1lbnQu
CiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNzA0CkBAIC02NjcyLDcgKzY2NzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgfSkoKTsKIAogICAgICAgICBpZiAoIWlzRnVuY3Rpb25LZXlD
b21tYW5kV2l0aE1hdGNoaW5nTWVudUl0ZW0pCi0gICAgICAgICAgICBldmVudC0+a2V5cHJlc3ND
b21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQoImluc2VydFRleHQ6Iiwg
dGV4dCkpOworICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29tbWFuZHMoKS5hcHBlbmQoV2Vi
Q29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRUZXh0OiJfcywgdGV4dCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggOTY4MjI5MjUwYjhjM2IwYzFhY2Y2ZWMxOGVhOTg2MmE2YmI3ZWJmNS4uNzIxYjhi
YWU3M2UwY2ZiYzMwZGUyZWI0ZmEwNDYxZWUxMzNiMTM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzMwNCw3ICszMzA0LDcgQEAgKyAoQk9PTClf
Y2FuSGFuZGxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogKyAoTlNTdHJpbmcgKilf
ZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YQogewogICAgIFdlYkNvcmU6OkhUTUxOYW1lczo6aW5p
dCgpOyAvLyB0aGlzIG1ldGhvZCBpcyB1c2VkIGZvciBpbXBvcnRpbmcgYm9va21hcmtzIGF0IHN0
YXJ0dXAsIHNvIEhUTUxOYW1lcyBhcmUgbGlrZWx5IHRvIGJlIHVuaW5pdGlhbGl6ZWQgeWV0Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1s
IiktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10p
LCBbZGF0YSBsZW5ndGhdKTsgLy8gYm9va21hcmsgZmlsZXMgYXJlIEhUTUwKKyAgICByZXR1cm4g
V2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwiX3MpLT5kZWNv
ZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSk7IC8vIGJvb2ttYXJrIGZpbGVzIGFyZSBIVE1MCiB9CiAKIC0gKHZvaWQpX3B1c2hQ
ZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTc5ZTkzN2MzZDBhMTkwZGU2YjAwYjM5YjU4ZjY0Mjgw
OWMxMDJiLi4wYjU4YmQ1OWY2OTcyMDQxZWY0YTVkZWM4NGUxZDNhMTNiMjI3ZjZmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhj
b25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQmxvYldpdGhVU0RaRXh0ZW5zaW9uRG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAg
ICAoY3JlYXRlRGlyZWN0b3JpZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAoVEVTVCk6
CisKIDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBEb24ndCBjcmVhdGUgZGlyZWN0b3JpZXMgb24gaU9TIGlmIHdlIGFyZSBv
bmx5IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggYWNiN2U0MWJiNjRiZjNmNjk3ZGM4
YmE5MTM5YjE5ZjgyYzQwYzlhOC4uNzQ3MDIyZDUxYzEwMjFiYTg0NGZiZjNmNjhiNmMwZDQ1Yjdh
M2E2NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tCkBAIC02NTAsNyArNjUwLDcgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKICAg
ICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3VmZml4OkAiLnVzZHoiXSk7CiAKICAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25Q
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUp
OworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShT
dHJpbmcgeyBmaWxlbmFtZSB9LCBmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFu
ZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXgg
MzljYWVhYzgwNDUyNGQ1ZGRkYjA4YmYxY2E4MzY2N2RiZjk3NzU1MC4uNjNiZjY4ZDQwMDU4NGY0
NWVmMTA2MDc3YWM5MTQ5ZjZhNzYwYmIwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC04Myw5
ICs4Myw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoKQogICAgIE5TU3RyaW5nICpleGlzdGluZ0Rh
dGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRh
YmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJh
c2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwotICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJh
c2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFt
ZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhh
c2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNy
ZWF0ZWREYXRhYmFzZU5hbWUpOwotICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWRE
YXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBleGlz
dGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9
IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5n
IHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VI
YXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShT
dHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VOYW1lIH0pOwogICAgIE5TVVJMICppZGJSb290VVJMID0g
W3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpIF9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVS
TCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJz
aW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAidjEiXTsKQEAgLTEyNyw4ICsxMjcsOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3Rvcmll
cyhTdHJpbmcgdGVzdE5hbWUpCiAgICAgaWYgKHRlc3ROYW1lID09ICJub25lIikKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFi
YXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpT
UUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5h
bWUpOworICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRl
RmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFi
YXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6
OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRl
ZERhdGFiYXNlTmFtZSB9KTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtp
ZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwg
Km5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJM
ID0gW25ld1ZlcnNpb25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBA
ImZpbGVfXzAiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXgg
NjZmOTI1YWM2NGQ2ODBmOTllZjNlMzYyZWNiZTUzMjM2ZWNkYWM4NC4uYmUyM2QyZWIwNzRmOTEw
ZGRmNGZlZTEwYmRlNWY0NjliZjU5OTY5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMubW0KQEAgLTg3OSw3ICs4NzksNyBAQCBURVNUKFdlYktpdCwgTWlncmF0ZUluZGV4
ZWREQkRhdGFUb0dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KQogewogICAgIE5TVVJMICppbmRleGVk
REJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQv
Y29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWRE
QiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBO
U1VSTCAqaW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5ID0gW2luZGV4ZWREQkRpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MS9odHRwc193ZWJraXQub3JnXzAiXTsKLSAgICBO
U1N0cmluZyAqaW5kZXhlZERCRGF0YWJhc2VOYW1lID0gQCJUZXN0RGF0YWJhc2UiOworICAgIHN0
YXRpYyBjb25zdCBjaGFyIGluZGV4ZWREQkRhdGFiYXNlTmFtZVtdID0gIlRlc3REYXRhYmFzZSI7
CiAgICAgTlNTdHJpbmcgKmhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZSA9IFdlYkNvcmU6OlNR
TGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaW5kZXhlZERCRGF0YWJhc2VO
YW1lKTsKICAgICBOU1VSTCAqaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBbaW5kZXhlZERC
T3JpZ2luRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpoYXNoZWRJbmRleGVk
REJEYXRhYmFzZU5hbWVdOwogICAgIE5TVVJMICppbmRleGVkREJGaWxlID0gW2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5z
cWxpdGUzIl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456179</attachid>
            <date>2022-03-30 15:06:55 -0700</date>
            <delta_ts>2022-03-31 08:52:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220330150654.patch</filename>
            <type>text/plain</type>
            <size>220741</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjNWExNTExMTkwYzc3MjkyY2E0ODdi
NDk3NzZkNDY0NDZjYWEyMTkuLmMxMWIwMDYwYTAzOWY1YmNjYWFlODFkODRlMmNhNzFkYWZjOGZk
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5U
ZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAg
ICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxp
dGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGJlYmEzMjU2ZjhiNzJmZmYyZGI5YTU2Njg5MjFiNGYxYzE0ODhhZGIuLmQ5YmNkYjgxOWM0
MDhmMGFmZTViNzE0YzVlZThjZmI4ZDBhNWVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBA
QAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNv
bnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6Y3JlYXRl
T3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRJbmRleFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRJbmRleFJlY29yZHNSZWNvcmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZm9UYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0
cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW9uRnJvbUZpbGUpOgor
ICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpk
dW1wSGVhcCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6c2Vy
aWFsaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6
YWRkUGF0dGVybik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwZW5kQm9vbGVhbik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4
ZWREQik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6OmluZGV4U1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpp
bk1lbW9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmluTWVtb3J5UGF0aCk6
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorCiAyMDIy
LTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhh
c2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1h
cHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOWQ1Y2M5MTQ4NTdlOTViYTU2MTNlNzE4NzQyMjQy
NTg1MjJkZWRjLi44Yjg5ZTdhMTYzYzMzZDQ3YzMwNTU5MWMzZTg0ZmU5NzQ4NWQwY2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9y
IG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjphcHBlbmRCb29sZWFuKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3Rp
Y1N0YXRlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdp
c3RyYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0Ojpsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFs
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OkRhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVu
bGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0
aCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
QmxvYlN0b3JhZ2U6OmdldCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFwRmlsZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpo
YW5kbGVFdmVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9y
YWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNw
cDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKToKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsRmVhdHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAg
ICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAgICAgICAoZW5j
b2RlT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9j
YXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAocmVwbHlCbG9ja1NpZ25hdHVyZSk6CisgICAg
ICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbnZva2VNZXRob2Q6XSk6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbik6CisgICAgICAgICogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENs
aWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2Vy
dmljZU1haW4pOgorICAgICAgICAqIFNoYXJlZC9JUENUZXN0ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptZXNzYWdlVGVzdERyaXZlcik6CisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVu
c2lvblR5cGVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmlu
Zyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpnZXRVc2VyRGlyZWN0b3J5U3VmZml4KToKKyAgICAg
ICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6b3Bl
bkFuZE1hcENvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWRSZWYuY3BwOgorICAgICAgICAoV0tEb3dubG9hZFNldENsaWVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTZXNzaW9uSGlz
dG9yeVVSTFZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRM
aXN0SXRlbVZhbHVlVHlwZSk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJl
ZmVyZW5jZXNDcmVhdGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlm
aWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0
U3RvcmVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW06CisgICAgICAgICgrW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRo
VVJMOl0pOgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTEFu
ZExlZ2FjeUZpbGVuYW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBpbml0XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6bG9h
ZFJlcXVlc3RUb0ZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRT
b2Z0TGluay5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0U3dpZnRMaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVu
c2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tDaGFuZ2VUZXh0U3R5bGU6XSk6
CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgX3drQ2hhbmdlVGV4dEFs
aWdubWVudDpdKToKKyAgICAgICAgKC1bV0tUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBfd2tD
aGFuZ2VDb2xvcjpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omluc2VydFRleHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmdldFNlY3VyaXR5T3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRl
dmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRh
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5j
aGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1
ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFj
a2VyOjpsb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpldmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpjYW5jZWxPdXRzdGFuZGluZ0V2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJl
bW92YWxUcmFja2VyOjpmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OnN0b3BXYWl0aW5nRm9yRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW06CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRp
Y2F0b3JVdGlscy5tbToKKyAgICAgICAgKFdlYktpdDo6YmFzZTY0UHJpdmF0ZUtleSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VS
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6V2Vi
UGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3Bl
ZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdl
YnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0
cmFibGVEb21haW5zRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJh
bFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2ViS2l0Ojpm
b3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
U2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6aW5jcmVhc2VC
dWZmZXJlZEFtb3VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZT
ZW50aW5lbCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dGhyZWFkRW50cnkpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojpjc3NBbGlnbm1lbnRWYWx1ZUZv
ck5TVGV4dEFsaWdubWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFr
ZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlI
YW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OnJlbW92ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpnZXRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRs
ZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpnZXRIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246Om1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzQ2xpZW50OjpzcGVhayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2Fz
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU01lc3NhZ2VMaXN0ZW5lcjo6anNEZXNjcmlw
dGlvbkZyb21EZWNvZGVyKToKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0IGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgp
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0
VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiB3ZWJwdXNoZC9BcHBCdW5kbGVS
ZXF1ZXN0Lm1tOgorICAgICAgICAoV2ViUHVzaEQ6OkFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdDo6
ZGlkRGVsZXRlRXhpc3RpbmdCdW5kbGVXaXRoRXJyb3IpOgorICAgICAgICAqIHdlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0
RGVidWdNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpzZW5k
RGVidWdNZXNzYWdlKToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmg6CisgICAg
ICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVt
b246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaERhZW1vbk1h
aW4pOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJSUxpdGVyYWwgZm9yIGZhc3RlciBsb29r
dXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAxNTMxZWM4
YTllNGFkZmYwYjk0MGM4NzgxZjY2YTFjMGFlZDI2MGY0Li4xZGM3OGE5ZjQzNjdjNGYwM2U0Y2E1
YzdiM2NkMjM3MTFkNjJkZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTAzLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJlcGFyZSBXZWJLaXQvICYgV2ViS2l0TGVnYWN5LyBmb3IgbWFraW5nIHRoZSBTdHJpbmcoY29u
c3QgY2hhciopIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcik6CisKIDIwMjItMDMtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEdXN0
IG9mZiBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggMDA2NzM2
NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uM2Q0NWIyNTZhNjQyNmZkMjM5OGE1
ODczYWFkZDM0NjZhNDVlMjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3Rv
ckF0dGFjaERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5n
IGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ5Njc3OWU0MTgwODgwYjc1NWQ2Yzg4Y2NjMGE0NmQ2MWZm
NGU1ZGUuLmQ3MWU4YWY5MTgyYjMzYWViYjI4N2UzYzIxMWMxOTk3ZmQ5Y2M1ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdl
YktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAgICAgIChIaXN0b3J5UHJv
cGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVT
ZWxlY3RvckV4Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcmVDb21tYW5k
QnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJ
dGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRp
bmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0
aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdFZpZXdTaXplOnBh
Z2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4
dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcg
X2RlY29kZURhdGE6XSk6CisKIDIwMjItMDMtMjggIElhbiBBbmRlcnNvbiAgPGlhbmFAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNvbWUgQXBwbGUgaW50ZXJuYWwgY2xpZW50cyBmYWlsIHRvIGJ1aWxk
IGR1ZSB0byByZWRlY2xhcmVkIEFwcEtpdCB0eXBlcyBpbiBXZWJLaXRMZWdhY3kKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCA2ZjY2NWQwODNmNzU4MjcxZTE4ZjM4OGU3YjRmMzVmMGNkODg0OTA4Li4yMTE4
M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW4KIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBi
ZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYsIFN0cmluZ1ZpZXcgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1v
ZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9v
bCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9m
ZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3Ro
ZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAppbmRleCAzMjY5YzU2MWQxNTU2ZGNkYWI4Y2U0MGU0
MmEyMzljM2Y1YWY0N2YzLi4wMTY3N2I2MzllNzdmNjNmMDgxMjJiZTU0OTYxMDI2ZDA2YjJkYjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3JUcmFpdHMuaApAQCAtNzQsNiArNzQsMTIgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+IDog
U2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3Rv
clRyYWl0czxBdG9tU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIAorICAg
IHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxBU0NJSUxpdGVyYWw+IDogVmVjdG9yVHJh
aXRzQmFzZTxmYWxzZSwgdm9pZD4geworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2Fu
SW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KICAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPj4KICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggZWU0ZjQwMGQ3M2U4ZjkxNGIxMzQ0NDM0MWQ4NmJkNTEyMzJi
MDViZS4uYzVkYjBmOWU5ZTQxYmFjZTNhOTE4MTA5ZWUwZjBjZWQyOWEwOWIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtODksNyArODksNyBAQCBTdHJpbmcg
Y3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IHRlbXBvcmFyeUZpbGU7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0
IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSwgU3RyaW5nVmlldyBz
dWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCBjZDE5NDc3
YWM1MWE1NGIwNDkwMWVlYWYzN2ZkZjBjZWJhMzhhZTc0Li42ZTBlNDc2NzIyNjY0NGE5NjIzYjJi
YzYzMWFhNTA5MTAxZTU4ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlv
blRpbWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1TdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIFN0cmlu
Z1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRlZCwg
YnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1vbmx5
LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDQyNzZmNzdlMjE4ZDFmNGFiMWVm
ZTVlMjgxMzBiOTA1NTBjYzZiNDUuLjdmOWU4ZmMzZDBmYzNlM2M2ODc0Y2U2NzI4ZTM2ZWQyNGM4
MGYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjE1
LDcgKzIxNSw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3RyaW5n
VmlldyBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBTdHJpbmdWaWV3IHN1ZmZp
eCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBPSyBmb3Ig
bm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQtb25seS4KICAgICBBU1NF
UlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxp
dGVyYWwuaAppbmRleCA1YzIzN2YzMDllMWI4MGNlYWEyYTNjMmFjMmE4YzRkYWE3MmU2MzFkLi44
MDI2NDYyNjI5OGQ2MmVkMjE3ZjFkNTljYThjMmYxOWVkZmJlMGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QVNDSUlMaXRlcmFsLmgKQEAgLTYzLDYgKzYzLDE2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogbV9jaGFyYWN0ZXJzOwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShBU0NJSUxpdGVy
YWwgYSwgY29uc3QgY2hhciogYikKK3sKKyAgICByZXR1cm4gYiAmJiAhc3RyY21wKGEuY2hhcmFj
dGVycygpLCBiKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShBU0NJSUxpdGVyYWwgYSwg
QVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuICFzdHJjbXAoYS5jaGFyYWN0ZXJzKCksIGIu
Y2hhcmFjdGVycygpKTsKK30KKwogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFscyB7CiAK
IGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3BlcmF0b3IiIiBfcyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzLCBzaXplX3QgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiMmM5
NmUwYzdiN2VhMTBiOGVhMmQ4MDM0ZjBlMDcyZTU1ZDE4MGM0Li4yOGQxY2U1ZjZlZTE4YmQwNjlk
N2Y2NzZkYjUxMjU0ZjRhMzVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgo
Y29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1cm4g
cHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlLCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBz
dXBwb3J0ZWQsIGJ1dCBPSyBmb3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09T
LXBvcnQtb25seS4KICAgICBBU1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRlMjBhNGI5YmViM2RmZWRm
NTljNTAzOGJiYzQyYTgxOWQ1MjhjMGMuLjJiOWIzODRjNTZhZGVmZWYyMzlhZGUyNGQ0ODFlMWY0
ZjYwNjU2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNTAsNyAr
MjUwLDcgQEAgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkK
IAogc3RhdGljIElEQkVycm9yIGNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5
KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQg
PSBkYXRhYmFzZS50YWJsZVNRTCgiUmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVt
ZW50ID0gZGF0YWJhc2UudGFibGVTUUwoIlJlY29yZHMiKTsKICAgICBpZiAodGFibGVTdGF0ZW1l
bnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNS
ZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIFJlY29yZHMgdGFibGUgKCIsIGRh
dGFiYXNlLmxhc3RFcnJvcigpLCAiKSAtICIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKSB9OwpA
QCAtMjk0LDcgKzI5NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRCbG9iVGFibGVzKCkKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1f
c3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFN0cmluZyByZWNvcmRzVGFibGVTdGF0ZW1lbnQg
PSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiX3MpOworICAgIFN0cmluZyByZWNv
cmRzVGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYlJlY29yZHMiKTsK
ICAgICBpZiAocmVjb3Jkc1RhYmxlU3RhdGVtZW50LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAo
IW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVy
cm9yIGNyZWF0aW5nIEJsb2JSZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3Io
KSwgIikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMwNCw3ICszMDQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkQmxvYlRhYmxl
cygpCiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYlJl
Y29yZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwogCi0gICAgU3RyaW5nIGZpbGVzVGFibGVTdGF0ZW1l
bnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiQmxvYkZpbGVzIl9zKTsKKyAgICBTdHJpbmcgZmls
ZXNUYWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJCbG9iRmlsZXMiKTsKICAg
ICBpZiAoZmlsZXNUYWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3Nx
bGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNjaGVtYSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiRXJyb3IgY3Jl
YXRpbmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAi
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKQEAgLTMzOCw3ICszMzgsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUo
KQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVu
KCkpOwogCi0gICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwo
IkluZGV4UmVjb3JkcyJfcyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVE
Qi0+dGFibGVTUUwoIkluZGV4UmVjb3JkcyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2M0luZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBJbmRleFJlY29yZHMgdGFibGUg
KCIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3FsaXRlREItPmxhc3RFcnJv
ck1zZygpKSB9OwpAQCAtMzc4LDcgKzM3OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKG1fc3FsaXRl
REIpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTdHJpbmcgaW5k
ZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRzSW5kZXgiX3Mp
OworICAgIFN0cmluZyBpbmRleFN0YXRlbWVudCA9IG1fc3FsaXRlREItPmluZGV4U1FMKCJJbmRl
eFJlY29yZHNJbmRleCIpOwogICAgIGlmIChpbmRleFN0YXRlbWVudCA9PSBJbmRleFJlY29yZHNJ
bmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAgLTM5Niw3
ICszOTYsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzUmVjb3JkSW5kZXgoKQogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NF
UlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5nIGluZGV4U3RhdGVtZW50ID0g
bV9zcWxpdGVEQi0+aW5kZXhTUUwoIkluZGV4UmVjb3Jkc1JlY29yZEluZGV4Il9zKTsKKyAgICBT
dHJpbmcgaW5kZXhTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT5pbmRleFNRTCgiSW5kZXhSZWNvcmRz
UmVjb3JkSW5kZXgiKTsKICAgICBpZiAoaW5kZXhTdGF0ZW1lbnQgPT0gdjFJbmRleFJlY29yZHNS
ZWNvcmRJbmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKICAgICAKQEAg
LTQ4Niw3ICs0ODYsNyBAQCBzdGQ6Om9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZgogICAgIEFTU0VSVChtX3Nx
bGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU3RyaW5n
IHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9iamVjdFN0b3JlSW5mbyJf
cyk7CisgICAgU3RyaW5nIHRhYmxlU3RhdGVtZW50ID0gbV9zcWxpdGVEQi0+dGFibGVTUUwoIk9i
amVjdFN0b3JlSW5mbyIpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCkBAIC03NzUsNyArNzc1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0
RXhpc3RpbmdEYXRhYmFzZUkKIHsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAKLSAgICBpZiAo
IW1fc3FsaXRlREItPnRhYmxlRXhpc3RzKCJJREJEYXRhYmFzZUluZm8iX3MpKQorICAgIGlmICgh
bV9zcWxpdGVEQi0+dGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyIpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBkYXRhYmFzZU5hbWU7CkBAIC05NTAsNyArOTUwLDcg
QEAgc3RkOjpvcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmRhdGFiYXNlTmFtZUFuZFYKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
b3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBu
YW1lIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KLSAgICBpZiAoIWRhdGFiYXNlLnRhYmxlRXhpc3RzKCJJREJEYXRhYmFz
ZUluZm8iX3MpKSB7CisgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJ
bmZvIikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJEYXRhYmFzZUlu
Zm8gdGFibGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVy
cm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CmluZGV4IGNhYjRiOGRlMjAyZTc3ZDcwMjgyYjU5NGExYmVmYmQ3NWIwNmNiMmQuLjA5ZWM4ZjYw
M2U5ZDAyMmIzNzhkZGEwZTQyN2ZlYzUyMWZkZDUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIC8vIGluaXRpYWxpemVyIGJ1dCBjdXJyZW50bHkgdGhhdCBkb2VzIG5vdCB3b3Jr
LgogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUi
X3MsIGZpbGVIYW5kbGUsICIudXNkeiJfcyk7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsK
ICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKICAg
ICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKaW5kZXggY2QwYzQxNGZiMzEwMDI0MTNlYTJiZmRkMDk4MzA1ZDUxYjlm
MWZkMi4uYjEzMjBmMDA4YmJmOTMzNTliMmI4NTMxZGViMTZmMTRkOWY5OGU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTM2Niwx
MSArMzY2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZl
cmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBXVEZNb3ZlKG1lc3NhZ2UpIH07CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFN0cmluZyB0YWJsZU5hbWUodW5xdWFsaWZpZWRJ
bmZvVGFibGVOYW1lKTsKLSAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4
aXN0cyh0YWJsZU5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFi
bGVFeGlzdHModW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1f
bmV3ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVj
dXRlQ29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1
ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhtYWtlU3RyaW5nKCJDUkVB
VEUgVEFCTEUgIiwgdW5xdWFsaWZpZWRJbmZvVGFibGVOYW1lLCAiIChrZXkgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0
cmluZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFz
ZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RF
cnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxp
dGVEYXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGE0ZjBjNzQ0NTIzNzFhNGRiZDhk
ZjA4NjA2OWVjZDEwYWJhMzIyOWYuLjllYjM5MWM2ZDBiZDZkNDg2MDUxMGVkYWI3Mjg5MzM5OTUw
NmJjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgRGF0YWJhc2VUcmFja2VyOjpE
YXRhYmFzZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAKIFN0cmluZyBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBT
UUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKG1fZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCAiRGF0YWJhc2VzLmRiIl9zKTsKKyAgICByZXR1
cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgIkRhdGFiYXNlcy5kYiIpOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25B
Y3Rpb24gY3JlYXRlQWN0aW9uKQpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFj
dGlvbikKICAgICB9CiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAK
LSAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiX3MpKSB7CisgICAgaWYg
KCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYgKCFtX2Rh
dGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQg
VU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT3JpZ2lucyB0YWJsZSIpOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFz
ZXMiX3MpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkg
ewogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBE
YXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4g
VEVYVCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIs
IHBhdGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0YWJhc2VzIHRhYmxlIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCA1ZjkzNDkx
NzU2ZjI3ZWMwNGQ0ZGVhOWQzODFiN2E2NGM2Yzc5MjA3Li42YTkwMTk3YjQ0NmM2NGVjM2E3M2Iz
MzIzYTk0NTQwY2Q1OGQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6ZGVsZXRl
QWxsTGlua2VkQ29kZShEZWxldGVBbGxDb2RlRWZmb3J0IGVmZm9ydCkKIHZvaWQgR0NDb250cm9s
bGVyOjpkdW1wSGVhcCgpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGVIYW5kbGU7Ci0gICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJHQ0hlYXAiX3MsIGZpbGVIYW5kbGUpOworICAgIFN0cmluZyB0ZW1wRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiR0NIZWFwIiwgZmlsZUhhbmRsZSk7
CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRHVtcGluZyBHQyBoZWFwIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFy
eSBmaWxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMDUyYjU5N2JjZmI5MmE3NDM3OTNm
OTE1ZWQ2OTZlN2EwZTllNDhmMS4uMDRjNmRhNWE4NDhkMDg5MWYzM2Y0ZjgzOWRhOTUyYjhjNzY3
OWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFs
aXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFs
aXplZE5GQS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZh
KQogewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7Ci0gICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJT
ZXJpYWxpemVkTkZBIl9zLCBmaWxlKTsKKyAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIlNlcmlhbGl6ZWRORkEiLCBmaWxlKTsKICAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRl
clBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuY3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5Nzc2OTE4OWU3NGEu
LmE5ZWM4ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAt
MzQ5LDcgKzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFyc2VyKENvbWJpbmVk
VVJMRmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQYXJzZXI6On5VUkxG
aWx0ZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMg
VVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBw
YXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitVUkxGaWx0ZXJQYXJz
ZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihTdHJpbmdWaWV3IHBh
dHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQog
ewogICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBOb25BU0NJ
STsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRl
clBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmgKaW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJjODAyOGI0MS4uYTQ5
M2I5MTY1YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVzU3RyaW5nKFBhcnNl
U3RhdHVzKTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxGaWx0ZXJz
Jik7CiAgICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVzIGFkZFBhdHRlcm4o
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2
NF90IHBhdHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihTdHJpbmdWaWV3IHBh
dHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsK
IAogcHJpdmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmluZWRVUkxGaWx0ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CmluZGV4IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2NGQuLjBkNDdkN2Mw
NmIzMTM5OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIs
IHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9p
ZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5h
cHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggMmQzODZkYjFmZjNj
NjJjYWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uYTY4MmNjYmE3NTQyOWQ3Mjg1MjZkOGFjZjhm
YjBlZTc1MjJkMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcApAQCAtODYsNyArODYsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBh
cmF0b3JDaGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBh
cmF0b3JDaGFyYWN0ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihTdHJpbmdWaWV3IGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhl
cmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJ
ZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBz
dGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKGNvbgogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBz
ZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdC4KICAgICBhdXRv
IHBvcnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0g
MTsKLSAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
MTZfdD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJpZ2h0KHBvcnRMZW5ndGgp
KTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
MTZfdD4oZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KHBvcnRMZW5ndGgpKTsKIAogICAgIC8vIE5v
dGhpbmcgYWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhl
IGNvbG9uIGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKQEAgLTExNyw3ICsx
MTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogCiAgICAgYXV0byBwcm90b2NvbCA9IGRh
dGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0
ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9y
MiAtIHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wsIGhvc3QsIHBvcnQgfTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJv
dG9jb2wudG9TdHJpbmcoKSwgaG9zdC50b1N0cmluZygpLCBwb3J0IH07CiB9CiAKIFNlY3VyaXR5
T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IDM3MzUwYWE0MGE2YmUw
YmQyNmRjNjU1MWJjNzA0NjM0ZGE5YzIzOWEuLmZhNDQ2ZGI2MTc4NDY0NzhlNDQ0MjVhODZmNTky
MDU2OTg3OTQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApA
QCAtNzEsNyArNzEsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICAvLyBTZXJp
YWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0IGNvdWxkIGJlIHVzZWQg
YXMgcGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0IHNob3VsZCBiZSB1c2Vk
IGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlP
cmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwogICAgIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9y
aWdpbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDVhY2IyOWNmYjQ1OTk3YTE4ODZmYmNhNzVjMDE1MDdh
M2JiZTY0ZmIuLjI5Y2ZjMzA0MzIyYmJkMmRhOGQwMzU1YmJlZTM1ZDcxNTI1NDNjNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xNTIsMTYg
KzE1MiwxNiBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVNDSUlMaXRlcmFsIHN1
cHBvcnRlZEltYWdlTUlNRVR5cGVBcnJheVtdID0gewogI2VuZGlmCiB9OwogCi10ZW1wbGF0ZTxB
U0NJSVN1YnNldCBzdWJzZXQsIHVuc2lnbmVkIHNpemU+IHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25z
dCBjaGFyKj4gbWFrZUZpeGVkVmVjdG9yKGNvbnN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVy
YWw8c3Vic2V0PiAoJmFycmF5KVtzaXplXSkKK3RlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNldCwg
dW5zaWduZWQgc2l6ZT4gc3RhdGljIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gbWFrZUZpeGVk
VmVjdG9yKGNvbnN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiAoJmFycmF5
KVtzaXplXSkKIHsKLSAgICBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gcmVzdWx0KHN0ZDo6c2l6
ZShhcnJheSkpOworICAgIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gcmVzdWx0KHN0ZDo6c2l6
ZShhcnJheSkpOwogICAgIHN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4oYXJyYXkpLCBzdGQ6OmVu
ZChhcnJheSksIHJlc3VsdC5iZWdpbigpLCBbXSAoYXV0byBsaXRlcmFsKSB7CiAgICAgICAgIHJl
dHVybiBsaXRlcmFsLmxpdGVyYWw7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Rml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gTUlNRVR5cGVSZWdpc3RyeTo6
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogewogICAgIHJldHVybiBtYWtlRml4ZWRWZWN0b3Io
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUFycmF5KTsKIH0KQEAgLTI0NCw3ICsyNDQsNyBAQCBjb25z
dGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHBkZk1JTUVUeXBlQXJyYXlbXSA9IHsKICAg
ICAidGV4dC9wZGYiLAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1JTUVUeXBlUmVn
aXN0cnk6OnBkZk1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IE1JTUVUeXBl
UmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpCiB7CiAgICAgcmV0dXJuIG1ha2VGaXhlZFZlY3Rvcihw
ZGZNSU1FVHlwZUFycmF5KTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBjb25zdGV4cHIgQ29tcGFy
YWJsZUxldHRlcnNMaXRlcmFsIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlQXJyYXlbXSA9IHsKICAg
ICAidGV4dC94LXZjZiIsCiB9OwogCi1GaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlNRVR5cGVS
ZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0
ZXJhbD4gTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKIHsKICAg
ICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlQXJyYXkpOwog
fQpAQCAtNjkwLDcgKzY5MCw3IEBAIGNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwg
dXNkTUlNRVR5cGVBcnJheVtdID0gewogICAgICJtb2RlbC92bmQudXNkeit6aXAiLCAvLyBUaGUg
b2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlw
ZXMvbW9kZWwvdm5kLnVzZHoremlwCiB9OwogCi1GaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gTUlN
RVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4g
TUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkKIHsKICAgICByZXR1cm4gbWFrZUZpeGVk
VmVjdG9yKHVzZE1JTUVUeXBlQXJyYXkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oCmluZGV4IDhjMmQ2ZmEwMjU2OTY4NjcyZTFjYjQ3YTM3MjA3OWE2MmE5
MWZmYzcuLjZiNTE2MmQ5YWRjZjJjZWUyMjk4MzRkNTg1YzUwNjU5NDc3ZGVjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTEzMiwxMyArMTMyLDEz
IEBAIHB1YmxpYzoKICAgICAvLyBtYWtlcyB0aGlzIHRlc3QgaXMgYWZ0ZXIgbWFueSBvdGhlciB0
ZXN0cyBhcmUgZG9uZSBvbiB0aGUgTUlNRSB0eXBlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gcGRmTUlNRVR5cGVzKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRW
ZWN0b3I8Y29uc3QgY2hhcio+IHVzZE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHBkZk1JTUVUeXBlcygpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHVuc3VwcG9ydGVkVGV4
dE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHVzZE1JTUVUeXBlcygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKaW5kZXggYWYxZTRk
OGJiZmEyYTc1NTdkOGNmYTFhOTU1ZTE5NjRhMTkzODIxNC4uMjA3YmY0NjYyZWZkZGU0NjU5YTY2
MGRiNjFkOGNlODhhNTcyY2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
c3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25VVEksIGMKICAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoJy4n
LCBkZXN0aW5hdGlvbkV4dGVuc2lvbik7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZGVzdGluYXRpb25GaWxlSGFuZGxlOwotICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEltYWdlIl9zLCBkZXN0aW5hdGlv
bkZpbGVIYW5kbGUsIHN1ZmZpeCk7CisgICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wSW1hZ2UiLCBkZXN0aW5hdGlvbkZpbGVIYW5k
bGUsIHN1ZmZpeCk7CiAgICAgaWYgKGRlc3RpbmF0aW9uRmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KEltYWdlcywgInRyYW5zY29kZUltYWdlOiBEZXN0aW5hdGlvbiBpbWFnZSBjb3VsZCBub3QgYmUg
Y3JlYXRlZDogJXMgJXNcbiIsIHBhdGgudXRmOCgpLmRhdGEoKSwgZGVzdGluYXRpb25VVEkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KaW5k
ZXggMDc3M2Y1ODg2ZTQwYTAyZWE5ZTNjYTA4MDIwNWM0NzJhOWIyODM0OS4uZGM3YTNjZTdmZjNi
N2VkMTlkZWYwZmY0OGEyMDQ5ODBkNDk2N2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQpAQCAtNTExLDIxICs1
MTEsMjEgQEAgcHVibGljOgogCiAgICAgICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1Jl
dHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVy
IGZvciBFbnRlci4KICAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09ICdccicp
IHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAgICAgICAgICBtX3VubW9kaWZpZWRU
ZXh0ID0gIlxyIjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJcciJfczsKKyAgICAgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgYWRq
dXN0bWVudHMgYmVsb3cgYXJlIG9ubHkgbmVlZGVkIGluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
bW9kZSwgYnV0IHdlIGNhbm5vdCB0ZWxsIHdoYXQgbW9kZSB3ZSBhcmUgaW4gZnJvbSBoZXJlLgog
CiAgICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDgsIGJlY2F1c2UgYmFja3NwYWNlIG5lZWRzIHRv
IGFsd2F5cyBiZSA4LgogICAgICAgICBpZiAobV90ZXh0ID09ICJceDdGIikKLSAgICAgICAgICAg
IG1fdGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCJfczsKICAgICAgICAg
aWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQotICAgICAgICAgICAgbV91bm1vZGlmaWVk
VGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiX3M7CiAg
ICAgICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgdGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFw
cEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICAgICAgaWYgKG1f
d2luZG93c1ZpcnR1YWxLZXlDb2RlID09IDkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJceDki
OwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICAgICAgbV90
ZXh0ID0gIlx4OSJfczsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CiAg
ICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMzUxNTFiYTY2ZjNiMmM0ZWZhMWY2OWY2
NmM0MjU0YzI4NGQ0ZDUwYy4uYmI1OTVmZGJmYzIwNzg2NmY4OThlZGY5MWFkY2I5OTNiNzBkN2M2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdCBWZWN0b3I8U3RyaW4K
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOwogICAgICAgICBmb3IgKGF1dG8mIGJs
b2IgOiBibG9ic0ZvcldyaXRpbmcpIHsKICAgICAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlOwotICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJCbG9iIl9zLCBmaWxlKTsKKyAgICAgICAgICAgIFN0
cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQmxvYiIs
IGZpbGUpOwogICAgICAgICAgICAgaWYgKCF3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNUb0Zp
bGUoYmxvYi5maWxlUGF0aHNPckRhdGFCdWZmZXJzLCBmaWxlLCB0ZW1wRmlsZVBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgZmlsZVBhdGhzLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBmMmUzZWRhZDUwZWRhMmZkZTBlNWQ1NjdhYWUzMzczZGM1NWRiMDUwLi4xZWI2ZGViYWZjMjNj
NDJkZDEyZWQ3NmExZjZmMTA1ZmUyOWNlZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTg5LDExICs4OSw2IEBAIFNRTGl0ZURhdGFi
YXNlOjp+U1FMaXRlRGF0YWJhc2UoKQogICAgIGNsb3NlKCk7CiB9CiAKLWNvbnN0IGNoYXIqIFNR
TGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgoKQotewotICAgIHJldHVybiAiOm1lbW9yeToiOwot
fQotCiBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9w
ZW5Nb2RlIG9wZW5Nb2RlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vzc2FyeSgpOwpA
QCAtNDI2LDEyICs0MjEsMTIgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6ZXhlY3V0ZUNvbW1hbmQo
QVNDSUlMaXRlcmFsIHF1ZXJ5KQogICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5l
eGVjdXRlQ29tbWFuZCgpOwogfQogCi1ib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3Rz
KFN0cmluZ1ZpZXcgdGFibGVOYW1lKQogewogICAgIHJldHVybiAhdGFibGVTUUwodGFibGVOYW1l
KS5pc0VtcHR5KCk7CiB9CiAKLVN0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCitTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKFN0cmlu
Z1ZpZXcgdGFibGVOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7
IH07CkBAIC00NDMsNyArNDM4LDcgQEAgU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICByZXR1cm4gc3RhdGVtZW50LT5jb2x1bW5UZXh0
KDApOwogfQogCi1TdHJpbmcgU1FMaXRlRGF0YWJhc2U6OmluZGV4U1FMKGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lKQorU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjppbmRleFNRTChTdHJpbmdWaWV3IGlu
ZGV4TmFtZSkKIHsKICAgICBpZiAoIWlzT3BlbigpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCBkNDE0Yjlh
NmNhMzYzNjFmN2IxMTcxMTc2YTFlOTRkNDFjYjllODNiLi45MTYwMTM0ODE3NTkyMTNhYTUyZDE5
OGE0N2UyZTVjNGQ2YTk4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgU1FMaXRlRGF0YWJhc2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2Uo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBjaGFyKiBpbk1lbW9yeVBhdGgo
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBpbk1lbW9yeVBhdGgoKSB7IHJl
dHVybiAiOm1lbW9yeToiX3M7IH0KIAogICAgIGVudW0gY2xhc3MgT3Blbk1vZGUgeyBSZWFkT25s
eSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVDcmVhdGUgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgPSBPcGVuTW9kZTo6UmVhZFdy
aXRlQ3JlYXRlKTsKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZXhlY3V0ZUNvbW1hbmRTbG93KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKTsKICAgICAKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyB0YWJsZVNRTChjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgaW5kZXhTUUwoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0
YWJsZUV4aXN0cyhTdHJpbmdWaWV3KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGFibGVT
UUwoU3RyaW5nVmlldyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGluZGV4U1FMKFN0cmlu
Z1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxUYWJsZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgcnVuVmFjdXVtQ29tbWFuZCgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA3MmQ0YTg3NDlhMDhkMGE3
MzgzNDg2NGY2ZjZmMzhkZjU0OTQ0ODIzLi5lYzBkMWNlZTViYTFhMDg4MDUwMDBmZjcwZDc0NjQ2
NTAzNmQ3NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNRTGl0ZUZpbGVTeXN0ZW06OlNRTGl0ZUZp
bGVTeXN0ZW0oKQogewogfQogCi1TdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJh
c2VGaWxlTmFtZVRvUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUpCitTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0
aChTdHJpbmdWaWV3IHBhdGgsIFN0cmluZ1ZpZXcgZmlsZU5hbWUpCiB7CiAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7CiB9CkBA
IC0xMjgsNyArMTI4LDcgQEAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gU1FMaXRlRmlsZVN5c3Rl
bTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gRmls
ZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUpOwogfQogICAgIAotU3RyaW5n
IFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKK1N0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KFN0cmluZ1ZpZXcgZmlsZU5hbWUpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNy
eXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OwogICAgIGF1dG8gdXRmOEZpbGVOYW1lID0gZmlsZU5hbWUudXRmOCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKaW5kZXggNjRmMWEyYzEyYTkx
MWFlYjBhZGM1OWVmYmJjZTUzOTA5Yjk1OTU2Yy4uNTM0MjcxMGY3YmJkMjE5YWQ3YmRlZjA3NGQw
ZDNjNjQ5MjMzNjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIHBh
dGggLSBUaGUgZGlyZWN0b3J5LgogICAgIC8vIGZpbGVOYW1lIC0gVGhlIGZpbGUgbmFtZS4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1Bh
dGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgoU3Ry
aW5nVmlldyBwYXRoLCBTdHJpbmdWaWV3IGZpbGVOYW1lKTsKIAogICAgIC8vIE1ha2VzIHN1cmUg
dGhlIGdpdmVuIGRpcmVjdG9yeSBleGlzdHMsIGJ5IGNyZWF0aW5nIGFsbCBtaXNzaW5nIGRpcmVj
dG9yaWVzCiAgICAgLy8gb24gdGhlIGdpdmVuIHBhdGguCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIE1vdmVzIGEgZGF0YWJhc2UgZmlsZSB0byBhIG5ldyBwbGFjZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBtb3ZlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYg
b2xkRmlsZVBhdGgsIGNvbnN0IFN0cmluZyYgbmV3RmlsZVBhdGgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoU3RyaW5nVmlldyBmaWxlUGF0aCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNlIGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZh
cmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2UgZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IGQ2NGNjYzBiNjAxOGM3ZmU3NDZlN2FjZmU2MTBmY2U0ZjliMDY1YzUuLjZkYjY0
NDBjZjk2ZDkyYWMyZDdmNWJlMWQ1MjIzYWUwNWEwMTcxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyCiAgICAg
ICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhH
cmFwaGljc0NvbnRleHRHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQo
dHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1h
cGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldh
c0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFs
c2UsIElQQzo6U2VtYXBob3JlIHsgfSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKaW5kZXggY2M2MTUyNDc5M2MwZjExY2ZlYjhkNGE4NGVjZmE5YWY0ZTZlMmFhNy4uZjZi
MzIzMDg3N2U3ZWI1NjE1NGFkMGVhMWQxNDNkYmYxYjRjZGJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNTAzLDcg
KzI1MDMsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0Nv
cnJlY3RTdWJTdGF0aXN0aWNzQ291bnQoY29uc3QgUmVnaQogICAgIHJldHVybiAoc3ViRnJhbWVV
bmRlclRvcEZyYW1lQ291bnQtPmNvbHVtbkludCgwKSA9PSAxICYmIHN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLT5jb2x1bW5JbnQoMCkgPT0gMSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJvb2xl
YW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBmbGFn
KQorc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBBU0NJ
SUxpdGVyYWwgbGFiZWwsIGJvb2wgZmxhZykKIHsKICAgICBidWlsZGVyLmFwcGVuZCgiICAgICIs
IGxhYmVsLCAiOiAiLCBmbGFnID8gIlllcyIgOiAiTm8iKTsKIH0KQEAgLTI1MzEsMzEgKzI1MzEs
MzEgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21h
aW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1B
U0NJSUxpdGVyYWwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0
YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkgY29uc3QKK0FTQ0lJTGl0
ZXJhbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGlj
U3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKHRhYmxl
TmFtZSA9PSAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAodGFi
bGVOYW1lID09ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MpCiAgICAgICAg
IHJldHVybiAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBTdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUg
PT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9t
YWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklE
ID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zy
b20iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJf
cykKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNGcm9tIFdIRVJFIHRhcmdldERvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFi
bGVOYW1lID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQorICAgIGlmICh0YWJsZU5h
bWUgPT0gIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcykKICAgICAgICAgcmV0dXJuICJT
RUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJF
IHRvRG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTG9hZGVk
VGhpcmRQYXJ0eVNjcmlwdHMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTG9hZGVk
VGhpcmRQYXJ0eVNjcmlwdHMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHN1YnJlc291cmNl
RG9tYWluSUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIFdIRVJFIHRvcEZy
YW1lRG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQg
ZnJvbSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQg
PSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQg
PSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8i
X3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwotICAgIGlm
ICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIpCisgICAgaWYg
KHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zKQogICAgICAg
ICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7CiAgICAgCiAgICAgcmV0
dXJuICIiX3M7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBBU0NJSUxpdGVyYWwgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcm
IGRvbWFpbikgY29uc3QKIHsKICAgICBhdXRvIHF1ZXJ5ID0gZ2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50KHRhYmxlTmFtZSk7CiAgICAgCkBAIC0yNjAzLDcgKzI2MDMsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIGRv
bWFpbiwgJ1xuJyk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAgIGFwcGVuZEJv
b2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsK
KyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iX3MsIG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVy
YWN0aW9uSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICBidWlsZGVyLmFw
cGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAgIGlmIChoYXNIYWRS
ZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC0+Y29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5k
ZXgpKSkpCkBAIC0yNjExLDM0ICsyNjExLDM0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAg
ICAgZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiLTEiKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhl
cmVkSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIl9z
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEdyYW5k
ZmF0aGVyZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3Rv
cmFnZSBhY2Nlc3MKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRp
c3RpY0xpc3QoYnVpbGRlciwgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywg
ZG9tYWluKTsKIAogICAgIC8vIFRvcCBmcmFtZSBzdGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3Rp
Y0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAg
IGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiLCBkb21haW4pOwotICAgIGFwcGVuZFN1
YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIGRv
bWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMaW5r
RGVjb3JhdGlvbnNGcm9tIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1
aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgZG9tYWluKTsKKyAgICBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
Il9zLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiX3MsIGRv
bWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNGcm9tIl9zLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgZG9tYWluKTsKKyAgICBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlT
Y3JpcHRzIl9zLCBkb21haW4pOwogCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21h
aW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN1YmZyYW1l
IHN0YXRzCi0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChi
dWlsZGVyLCAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKIAogICAg
IC8vIFN1YnJlc291cmNlIHN0YXRzCi0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVy
LCAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsIGRvbWFpbik7Ci0gICAgYXBwZW5k
U3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIs
IGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNM
aXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBkb21haW4p
OworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWls
ZGVyLCAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBkb21haW4pOwogCiAgICAg
Ly8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2
YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5j
b2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwg
ImlzUHJldmFsZW50UmVzb3VyY2UiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3Rh
dGVtZW50LT5jb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291
cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChJ
c1ZlcnlQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVy
eVByZXZhbGVudFJlc291cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIs
IG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoRGF0YVJl
Y29yZHNSZW1vdmVkSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggODEx
YmJmOTcwZWFjNmZhNzBkYWEwOTcyYjU2OWQ1ZTlmODJmMTkwOS4uZjIyYmYxZjRiMDU5MWM3Mzhh
MmUyOWJjZjg0OGFhMGFiNTIxYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEzOCw4ICsxMzgsOCBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAg
ICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBTdHJpbmcgZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdCBmaW5hbDsKLSAgICBBU0NJ
SUxpdGVyYWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0Owot
ICAgIHZvaWQgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdDsKKyAgICBBU0NJSUxp
dGVyYWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCkgY29uc3Q7CisgICAg
dm9pZCBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBBU0NJSUxpdGVyYWwg
dGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVN0
YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBtZXJnZShX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7
CiAgICAgdm9pZCBjbGVhckRhdGFiYXNlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNmI5MzJkYmFkNDQwYjU1MTU1ODQyN2Q0MGQ2ZDIyYWRkMGQzM2MwNy4uZTRl
YTAzYzExYjZiYjNmZmUzZjgwZDJmM2I3OGZiOWEzOThjNTZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTc4OSw3ICs3ODksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwog
I2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsK
ICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAg
ICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlz
LCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJ
RCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0
eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlm
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vj
b25kKTsKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbgogI2lmIEVO
QUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAg
ICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQs
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nv
b2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENvb2tpZXNGcm9tRE9NIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwg
Km5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVt
cHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCmluZGV4IDZkYmI1MmRhMjU3ZTc0MDM3MmM2MmRiZDNjMDQ3NzZjNjI3Yjk1
OTQuLjY3NGI5ODU1MzU3YzEwYzNhM2NjODdkMDYzNzdiMTcxNzY0MDYyYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApA
QCAtNjEsMTEgKzYxLDExIEBAIHN0YXRpYyBjb25zdCBpbnQgaHR0cFBhcnRpYWxDb250ZW50ID0g
MjA2Owogc3RhdGljIGNvbnN0IGludCBodHRwTm90QWxsb3dlZCA9IDQwMzsKIHN0YXRpYyBjb25z
dCBpbnQgaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGUgPSA0MTY7CiBzdGF0aWMgY29u
c3QgaW50IGh0dHBJbnRlcm5hbEVycm9yID0gNTAwOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBP
S1RleHQgPSAiT0siOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBQYXJ0aWFsQ29udGVudFRleHQg
PSAiUGFydGlhbCBDb250ZW50IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwTm90QWxsb3dlZFRl
eHQgPSAiTm90IEFsbG93ZWQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBSZXF1ZXN0ZWRSYW5n
ZU5vdFNhdGlzZmlhYmxlVGV4dCA9ICJSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwSW50ZXJuYWxFcnJvclRleHQgPSAiSW50ZXJuYWwgU2Vy
dmVyIEVycm9yIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwT0tUZXh0ID0gIk9LIl9zOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBQYXJ0aWFsQ29udGVudFRleHQgPSAiUGFydGlhbCBD
b250ZW50Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBOb3RBbGxvd2VkVGV4dCA9ICJO
b3QgQWxsb3dlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwUmVxdWVzdGVkUmFuZ2VO
b3RTYXRpc2ZpYWJsZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwSW50ZXJuYWxFcnJvclRleHQgPSAiSW50ZXJuYWwg
U2VydmVyIEVycm9yIl9zOwogCiBzdGF0aWMgY29uc3RleHByIGF1dG8gd2ViS2l0QmxvYlJlc291
cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSJfczsKIApAQCAtMjU4LDcgKzI1OCw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRXJy
b3IgZXJyb3JDb2RlKQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoJXUpIiwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVycm9yQ29kZSkpOwogCiAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0Jsb2I+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9m
aXJzdFJlcXVlc3QudXJsKCksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/ICJ0ZXh0L3Bs
YWluIiA6IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5
cGUoKSksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5n
U2l6ZSwgU3RyaW5nKCkpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9maXJzdFJl
cXVlc3QudXJsKCksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/ICJ0ZXh0L3BsYWluIl9z
IDogZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgp
KSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxSZW1haW5pbmdTaXpl
LCBTdHJpbmcoKSk7CiAgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKICAgICBjYXNlIEVycm9yOjpO
b0Vycm9yOiB7CiAgICAgICAgIGJvb2wgaXNSYW5nZVJlcXVlc3QgPSBtX3JhbmdlT2Zmc2V0ICE9
IGtQb3NpdGlvbk5vdFNwZWNpZmllZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOGZiN2E0ODQ5OTNmZWNkYWM0NGRjMDExMzI1OGVh
MjJhZGYyOGRjOS4uOTFkOTBiMDg4YWRhNTE4ZmMxMzdjZjFlOTA2M2UxOGUyOTEzYmE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTIzNDUsNyArMjM0NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3Rp
ZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKLSAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBzZXNz
aW9uIik7CisgICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiJfcyk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmIGNhbGxi
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDMyYTA2ZDQ5NDYzZDM4OGNlNjJlMzZhODZiYjhhODQwYTZh
YWI5MTIuLjU3YzFiMWI2OTNkNzE1YmUxMmVhZDZjNmZkNTk2NTEyOTdjMzIxNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTE1OTQsMTAgKzE1OTQsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKCkpOwogICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNlc3Npb24pOwogCi0gICAgbG9n
Q29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb3Jl
SWRlbnRpZmllcigpKTsKKyAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIiX3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRo
aXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9y
aWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwg
ZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2Jq
ZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NF
UlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25u
ZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTYwOCw3
ICsxNjA4LDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW8KICAgICBhdXRvIGVzY2FwZWRJZGVu
dGlmaWVyID0gZXNjYXBlSURGb3JKU09OKGlkZW50aWZpZXIpOwogICAgIGF1dG8gZXNjYXBlZFJl
ZmVycmVyID0gZXNjYXBlRm9ySlNPTihyZWZlcnJlcik7CiAKLSNkZWZpbmUgTE9DQUxfTE9HX0lG
X0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5z
ZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6
OiIgZm10LCBsb2dnZWRPYmplY3QsIGxhYmVsLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihu
ZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC5jaGFyYWN0
ZXJzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQ0FMX0xPRyhzdHIsIC4uLikgXAogICAg
IExPQ0FMX0xPR19JRl9BTExPV0VEKCJsb2dDb29raWVJbmZvcm1hdGlvbjogQkxPQ0tFRCBjb29r
aWUgYWNjZXNzIGZvciB3ZWJQYWdlSUQ9JXMsIGZyYW1lSUQ9JXMsIHJlc291cmNlSUQ9JXMsIGZp
cnN0UGFydHk9JXM6ICIgc3RyLCBlc2NhcGVkUGFnZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRG
cmFtZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIGVz
Y2FwZWRGaXJzdFBhcnR5LnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCiAKQEAgLTE2MjQs
NyArMTYyNCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvCiAjdW5kZWYgTE9DQUxfTE9HX0lG
X0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorc3Rh
dGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2NDAsNyArMTY0MCw3IEBA
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVz
Y2FwZUlERm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MgPSAo
ZnJhbWVJRCAmJiBwYWdlSUQpID8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmhhc1N0b3JhZ2VBY2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyBmaXJzdFBhcnR5IH0sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCkp
IDogZmFsc2U7CiAKLSNkZWZpbmUgTE9DQUxfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6OiIgZm10LCBsb2dnZWRPYmplY3QsIGxh
YmVsLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIExPQ0FMX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vz
c2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoi
IGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC5jaGFyYWN0ZXJzKCksICMjX19WQV9BUkdTX18pCiAj
ZGVmaW5lIExPQ0FMX0xPRyhzdHIsIC4uLikgXAogICAgIExPQ0FMX0xPR19JRl9BTExPV0VEKCJs
b2dDb29raWVJbmZvcm1hdGlvbjogd2ViUGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlE
PSVzOiAiIHN0ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51
dGY4KCkuZGF0YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJH
U19fKQogCkBAIC0xNjg1LDcgKzE2ODUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1h
dGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3Vu
ZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVy
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDY1Y2VjOWNkM2MyNGQ0YmM3ZTM0MGQ3OWRhNWRjZDgyZmQ2
NjE4NDQuLjJmYjlmYWQ0NTVhMzliMjAxMTc2N2JlZTM3NzE3MGMzNTc2NGNiZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9U
UkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1h
dGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4p
OworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmpl
Y3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKICNlbmRpZgogCiAgICAgdm9pZCBk
aXNhYmxlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApp
bmRleCBkNmJjMDkwMTIwMzMxZjgzMDYwYmNkYTYxNGQ5MzJhYTU5YTIxY2EwLi5lZjE4YjI3ZmI1
M2ViYjVmNjgwOTYyNTM0Y2FhOGJiMWUyY2MzYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAK
QEAgLTQ4OSwxNCArNDg5LDE1IEBAIHZvaWQgRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIGNsZWFyIGFsbCBlbnRy
aWVzIGlmIG5vIGRvbWFpbiBpcyBzcGVjaWZpZWQuCi0gICAgU3RyaW5nIGJpbmRQYXJhbWV0ZXIg
PSAiJSI7CisgICAgU3RyaW5nIGJpbmRQYXJhbWV0ZXI7CiAgICAgaWYgKGRvbWFpbikgewogICAg
ICAgICBhdXRvIGRvbWFpbklEVG9NYXRjaCA9IGRvbWFpbklEKCpkb21haW4pOwogICAgICAgICBp
ZiAoIWRvbWFpbklEVG9NYXRjaCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBiaW5k
UGFyYW1ldGVyID0gU3RyaW5nOjpudW1iZXIoKmRvbWFpbklEVG9NYXRjaCk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBiaW5kUGFyYW1ldGVyID0gIiUiX3M7CiAKICAgICBhdXRvIHRyYW5z
YWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKIApAQCAtNzEyLDE3
ICs3MTMsMTcgQEAgdm9pZCBEYXRhYmFzZTo6ZGVzdHJveVN0YXRlbWVudHMoKQogCiB2b2lkIERh
dGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBT
dHJpbmcgYXR0cmlidXRlZFRhYmxlTmFtZSgiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Il9zKTsKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGF0dHJpYnV0ZWRUYWJsZU5hbWUg
PSAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zOwogICAgIFN0cmluZyBkZXN0
aW5hdGlvbktleUlEQ29sdW1uTmFtZSgiZGVzdGluYXRpb25LZXlJRCJfcyk7CiAgICAgYXV0byBj
b2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwogICAgIGlmICgh
Y29sdW1ucy5zaXplKCkgfHwgY29sdW1ucy5sYXN0KCkgIT0gZGVzdGluYXRpb25LZXlJRENvbHVt
bk5hbWUpIHsKICAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxl
TmFtZSwgImRlc3RpbmF0aW9uVG9rZW4gVEVYVCJfcyk7CiAgICAgICAgIGFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvblNpZ25hdHVyZSBURVhU
Il9zKTsKLSAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFt
ZSwgImRlc3RpbmF0aW9uS2V5SUQgVEVYVCIpOworICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25LZXlJRCBURVhUIl9zKTsKICAg
ICB9CiB9CiAKLVZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCitWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRh
YmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlBSQUdNQSB0YWJsZV9pbmZv
KCIsIHRhYmxlTmFtZSwgIikiKSk7CiAKQEAgLTc0MSw3ICs3NDIsNyBAQCBWZWN0b3I8U3RyaW5n
PiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAg
IHJldHVybiBjb2x1bW5zOwogfQogCi12b2lkIERhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb2x1bW5OYW1lKQor
dm9pZCBEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoQVNDSUlMaXRlcmFsIHRhYmxl
TmFtZSwgQVNDSUlMaXRlcmFsIGNvbHVtbk5hbWUpCiB7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBt
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIs
IHRhYmxlTmFtZSwgIiBBREQgQ09MVU1OICIsIGNvbHVtbk5hbWUpKTsKICAgICBpZiAoIXN0YXRl
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAppbmRleCAyZmI3ZDI1NjllZDM4YTU4MjM4YTI4MDBl
ZTI0OGI1N2Y0ZTZkN2ZlLi5lNzFkNDBiZDQ5ODU5ZWJjM2VhYTMzOGNkNWViOGIwNTJjYmNjZDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaApAQCAtODIsOCArODIsOCBAQCBwcml2YXRlOgogICAgIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxl
QW5kSW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpIGZpbmFsOwogICAg
IFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzb3J0ZWRUYWJsZXMoKSBmaW5hbDsKIAotICAgIFZl
Y3RvcjxTdHJpbmc+IGNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSk7Ci0g
ICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb2x1bW5OYW1lKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zRm9y
VGFibGUoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSk7CisgICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1u
VG9UYWJsZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lLCBBU0NJSUxpdGVyYWwgY29sdW1uTmFtZSk7
CiAKICAgICB1c2luZyBTdGF0ZW1lbnQgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PjsKICAgICBtdXRhYmxlIFN0YXRlbWVudCBtX3NldFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3Bw
CmluZGV4IDJhODJhMTE1YTFiOWJhZDU4YmE4NjhlNTVlNTc3Y2Y5ZjU3M2QxNDUuLmUyYjYzN2Jk
OTY4MTcyOGNlMWJhYTdlNzAzM2UxYmY0NjM4N2VjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuRm9yRGVzdGluYXRpb24oU291cgogCiAgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRh
dGVEZXN0aW5hdGlvblNlY3JldFRva2VuKCpzaWduYXR1cmVCYXNlNjRVUkwsICphdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKTsKICAgICAgICAgICAgIGlm
ICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQu
ZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biIgOiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJV
bmtub3duIl9zIDogcmVzdWx0LmVycm9yKCk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGlu
IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJy
b3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJgog
CiAgICAgICAgICAgICBpZiAocHVibGljS2V5QmFzZTY0VVJMLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJUaGUg
cHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVGhlIHB1YmxpYyBrZXkgVVJMIHdh
cyBlbXB0eS4iX3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApA
QCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpo
YW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVz
dWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQu
ZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biJfcyA6IHJlc3VsdC5lcnJvcigpOwogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3Qg
dGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblVubGlu
a2FibGVUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdICJf
cywgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAzYWFhM2M0ODBlNWY2YTk1MzBk
ZjhkOGNjZWJhMmU1NzllMDAyODEwLi5lMDlkMmU5ZjM2Y2FiMjVjMTc1NDFjODc0OTZmZjI5Yjkx
YTA1M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6On5Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIoKQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpkYXRhYmFzZVBhdGgoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikg
Y29uc3QKIHsKLSAgICByZXR1cm4gZGF0YWJhc2VQYXRoKHNlY3VyaXR5T3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpICsgIi5sb2NhbHN0b3JhZ2UiKTsKKyAgICByZXR1cm4gZGF0YWJhc2VQYXRo
KG1ha2VTdHJpbmcoc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCksICIubG9jYWxz
dG9yYWdlIikpOwogfQogCiB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGlkT3Bl
bkRhdGFiYXNlV2l0aE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKQpAQCAtMTI5LDcgKzEyOSw3IEBAIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Ok9yaWdpbkRldGFpbHM+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6CiAgICAgfSk7
CiB9CiAKLVN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdAorU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6ZGF0YWJhc2VQYXRoKFN0cmluZ1ZpZXcgZmlsZW5hbWUpIGNvbnN0CiB7CiAgICAg
YXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKICAgICBpZiAoIVNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5RXhp
c3RzKGxvY2FsU3RvcmFnZURpcmVjdG9yeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaAppbmRleCA1YmMxM2VjMzZmNWQyYTk2ZmM2MWU3MDIyYzFjOGExZTVjNzkx
YTRiLi42ZDZhMDVjODlhNzUxNjM5ZjUyYjg1MGIxOTZlMzE1ZmI2ODBiNjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFN0cmluZyYmIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUpIGNvbnN0OworICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoU3RyaW5nVmll
dyBmaWxlbmFtZSkgY29uc3Q7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0OwogCiAgICAgZW51bSBEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxv
YlN0b3JhZ2UuY3BwCmluZGV4IGMyMzQ5YTA4MmI1NjhkZWJlM2ZhNTZkMzU4ZDU1ZGQ5YzY4OGY2
MjQuLmY0ZTYxZDYwNTJiMzZkNzQ4NDliYmU2NmFjMjIwZjZmNGE4ZTAzMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlQmxvYlN0b3JhZ2UuY3BwCkBAIC0xMjMsOCArMTIzLDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2Ig
QmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUobGlua1Bh
dGguZGF0YSgpKTsKKyAgICBhdXRvIGRhdGEgPSBtYXBGaWxlKHBhdGgpOwogCiAgICAgcmV0dXJu
IHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5k
ZXggYWVlMTAyYmVjNTFiYjM0NjkwMjNmYTc3OTVhODIyNzQ4MTMyZjI2Ni4uYTkxNjk4ZDVkYzQy
ZDg2YzI5NzcyNzBiNzRmZTNiMTg1YzVlNWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKICAg
ICByZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RGTW92ZShtYXBwZWRGaWxlKSwgaGFuZGxlKTsKIH0K
IAotRGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpCitEYXRhIG1hcEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKGZpbGUpKQpAQCAtNjQsMTEgKzY0LDYgQEAgRGF0YSBtYXBGaWxlKGNvbnN0
IGNoYXIqIHBhdGgpCiAgICAgcmV0dXJuIGFkb3B0QW5kTWFwRmlsZShmaWxlLCAwLCAqc2l6ZSk7
CiB9CiAKLURhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIG1h
cEZpbGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
Ci19Ci0KIERhdGEgYWRvcHRBbmRNYXBGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQogewogICAgIGlmICghc2l6ZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuaAppbmRleCAzMjgzMjk3Njc4YzE1NGVlNDkwN2QzMTQ5M2NiZjdmOGYwMDNjYmMw
Li4xMjQ5MjU5ZTRiMDUyNjk0NWJjNTQ1ZjJmNjRhMTQyN2I1ZTU2MDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApA
QCAtMTExLDcgKzExMSw2IEBAIHByaXZhdGU6CiBEYXRhIGNvbmNhdGVuYXRlKGNvbnN0IERhdGEm
LCBjb25zdCBEYXRhJik7CiBib29sIGJ5dGVzRXF1YWwoY29uc3QgRGF0YSYsIGNvbnN0IERhdGEm
KTsKIERhdGEgYWRvcHRBbmRNYXBGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90KTsKLURhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKTsK
IERhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCiB1c2luZyBTYWx0ID0gRmlsZVN5
c3RlbTo6U2FsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KaW5kZXgg
NDMyMmU0NGU4ZWEwNjNjM2RhYThlMmM2ZGU3YTVhMDg1ZjVhODFlOC4uNDJmODg4MjUwNDc2YmVk
NzMyNGI2NzIzYjM3NDkyZjhmNTVmZGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIubW0KQEAgLTE0Miw4ICsxNDIsOCBAQCB2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQ
Q19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgeHBjTWVzc2FnZU5hbWVLZXkpOwotICAgICAgICBp
ZiAobWVzc2FnZU5hbWUgIT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBj
UmVxdWVzdExhdW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSkKKyAgICAgICAg
YXV0byogbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4cGNN
ZXNzYWdlTmFtZUtleSk7CisgICAgICAgIGlmIChMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1l
ICE9IG1lc3NhZ2VOYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzdGFydE9ic2Vy
dmluZyhjb25uZWN0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAppbmRleCAxMGVjMjA3
Njg1MTQ1OGNlZjE2MTkwZWYxYjkxNjZkMmYwYTQ0ZTQxLi5kMjkxYTA5ZTllZjMxNWZiNGNjMDli
MzdkOTU4OWY5NzRmYjMxZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkKICAg
ICBpZiAoIW1fZGF0YWJhc2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBz
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIl9zKTsKKyAgICBTdHJp
bmcgc3RhdGVtZW50ID0gbV9kYXRhYmFzZS0+dGFibGVTUUwoIkl0ZW1UYWJsZSIpOwogICAgIGlm
IChzdGF0ZW1lbnQgPT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50IHx8IHN0YXRlbWVudCA9PSBj
cmVhdGVJdGVtVGFibGVTdGF0ZW1lbnRBbHRlcm5hdGl2ZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCmluZGV4IDBi
ZTM5NWMxYzM3YzJmZTdjYjNjYzNhNWI0OTU2MmFmYzczOWU2NGEuLmU1OTJhYTAxYzZjNDExNGVk
MGM3ODUzM2MwOWVkYTRmMTFiN2FmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0pTSVBDQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SlNJUENCaW5kaW5nLmNwcApAQCAtODksNyArODksNyBAQCBKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
YgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBv
YmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJib29sIikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJib29s
Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwog
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ2YWx1ZSJfcyksIEpTQzo6anNCb29sZWFuKHZhbHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwpAQCAtOTksNjcgKzk5LDY3IEBAIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBiCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29k
ZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZh
bHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJkb3VibGUiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiZG91Ymxl
Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGZsb2F0IHZhbHVl
KQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGds
b2JhbE9iamVjdCwgdmFsdWUsICJmbG9hdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2Rl
ZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJmbG9hdCJfcyk7CiB9
CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ4X3QgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgImludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQ4X3QiX3MpOwogfQogCiB0
ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MTZfdCB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCAiaW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNB
cmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQxNl90Il9zKTsKIH0KIAogdGVt
cGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMyX3QgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgImludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJn
dW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50MzJfdCJfcyk7CiB9CiAKIHRlbXBs
YXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVlKQogewotICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFs
dWUsICJpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDY0X3QiX3MpOwogfQogCiB0ZW1wbGF0
ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDhfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAidWludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVu
dFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50OF90Il9zKTsKIH0KIAogdGVtcGxhdGU8
PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQxNl90IHZhbHVlKQogewotICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJ1aW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVu
dFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MTZfdCJfcyk7CiB9CiAKIHRlbXBsYXRl
PD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50MzJfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAidWludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1l
bnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDMyX3QiX3MpOwogfQogCiB0ZW1wbGF0
ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSwgInVpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ2NF90Il9zKTsKIH0KIAogdGVtcGxh
dGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAic2l6ZV90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInNpemVfdCJfcyk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFJlY3RUeXBlPgpAQCAtMTg1LDEzICsxODUsMTMgQEAgSlNDOjpKU1ZhbHVlIGpzVmFs
dWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY28KIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpJbnRSZWN0
JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGds
b2JhbE9iamVjdCwgdmFsdWUsICJJbnRSZWN0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNv
ZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJJbnRSZWN0Il9zKTsKIH0KIAog
dGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCYmIHZh
bHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50UmVjdChnbG9iYWxP
YmplY3QsIHZhbHVlLCAiRmxvYXRSZWN0Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiX3MpOwogfQogCiBi
b29sIHB1dEpTVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRBdEluZGV4T3JBcnJheUJ1ZmZlcklmVW5k
ZWZpbmVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU0FycmF5KiBh
cnJheSwgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMu
Y3BwLmVyYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKaW5kZXggOWQyYmM3YTIyNjI5
Mjk2Yzc0MTZkY2I1MDAyMzhiZWY0ZmYyOWI1ZS4uODMwZWJhYjhlODYyMTgwZWIwMzBhNjUzOTY2
MjZmNDM4OTEwYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJlZmVyZW5jZXM6OmV4cGVyaW1lbnRh
bEZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNv
bmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJl
OjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCAiPCU9IEBwcmVmLm5hbWUg
JT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+LCBERUZBVUxUX1ZBTFVF
X0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCisgICAgICAgIEFQ
STo6RXhwZXJpbWVudGFsRmVhdHVyZTo6Y3JlYXRlKFN0cmluZyB7IDwlPSBAcHJlZi5odW1hblJl
YWRhYmxlTmFtZSAlPiB9LCAiPCU9IEBwcmVmLm5hbWUgJT4iX3MsIFN0cmluZyB7IDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4gfSwgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBw
cmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAogPCUtIGlmIEBwcmVmLmNvbmRpdGlv
biAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdGZWF0
dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKaW5kZXggODQ5Y2Y2
ZjdhODg1NzNkZjI3OWYzYWVkMjUxMTA1MDVmN2I2YzM0Ni4uZTU2N2Y0NWIxZTQ0NTE2YjUyYjAz
NjUwYmI5ZjJlOTY0Yjg0OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNw
cC5lcmIKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKQEAgLTQwLDcgKzQwLDcg
QEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6aW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpJbnRlcm5hbERl
YnVnRmVhdHVyZTo6Y3JlYXRlKDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiwgIjwlPSBA
cHJlZi5uYW1lICU+IiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiwgREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAor
ICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBw
cmVmLmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5n
IHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVF
X0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHBy
ZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCA1YzYz
MWVkZGM5NjdjY2U4YTExMGJjNDBkMjc2OWUyY2Y5MzVkNjQ2Li5hNmUyNWNjNDAzNDY3YTUwM2U4
ZWVjMTA3YThmN2U0N2Y4MWMzODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNDIsOSArNDIsOSBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGFzc05hbWVLZXkgPSAiJGNsYXNz
IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTdHJlYW1LZXkgPSAiJG9iamVjdFN0
cmVhbSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nS2V5ID0gIiRzdHJpbmciOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGNsYXNzTmFtZUtleSA9ICIkY2xhc3MiX3M7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gb2JqZWN0U3RyZWFtS2V5ID0gIiRvYmplY3RTdHJlYW0iX3M7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gc3RyaW5nS2V5ID0gIiRzdHJpbmciX3M7CiAKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHNlbGVjdG9yS2V5ID0gQCJzZWxlY3RvciI7CiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB0eXBlU3RyaW5nS2V5ID0gQCJ0eXBlU3RyaW5nIjsKQEAgLTQ0MCw3ICs0NDAsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICplbmNvZGVy
LCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZXItPl9vYmplY3RzQmVpbmdFbmNvZGVkLnJlbW92
ZShvYmplY3QpOwogICAgIH0pOwogCi0gICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5z
ZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGNsYXNzX2dldE5hbWUob2JqZWN0
Q2xhc3MpKSk7CisgICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5zZXQoY2xhc3NOYW1l
S2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGNsYXNzX2dldE5hbWUob2JqZWN0Q2xh
c3MpIH0pKTsKIAogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TSW52b2NhdGlvbiBj
bGFzc11dKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gc3BlY2lhbCBjYXNlIE5TSW52b2NhdGlv
biBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGVuY29kZSB0aGUgdGFyZ2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGI5ODk2NmVjYWQ0MWI0OGVlY2QyNTgyMmI0YzNjMWU2ZDk4YTA4N2UuLjdkODg1
NjIyODQ4ZWY3Zjc5YTRkZjFkMzNjZDYwN2E3ZjJlMTQ1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
QEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9u
ICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAo
c3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5Qmxv
Y2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZh
bHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUo
aW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJ
ZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBt
YWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5l
cmF0ZVJlcGx5SWRlbnRpZmllcigpLCBTdHJpbmcgeyByZXBseUJsb2NrU2lnbmF0dXJlIH0pOwog
CiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVjdCBzbyB3ZSB3b24ndCB0cnkgdG8g
ZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0cjsKQEAgLTIyNyw3ICsyMjcsNyBA
QCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBT
RUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJl
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1
cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3Ry
aW5nLlVURjhTdHJpbmc7CisgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25h
dHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQog
CiAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2Nh
dGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdGlvbgpAQCAtMjcwLDcgKzI3MCw3IEBAIC0gKHZvaWQp
X2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1v
dGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5f
dHlwZVN0cmluZy5VVEY4U3RyaW5nOworICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJl
ID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5i
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKICAgICAgICAgU3RyaW5n
IGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2Ug
cHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAogICAgICAgICBpZiAoZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5o
CmluZGV4IDFiZTJhODAwN2MyNzc2N2JmOWE1OGE5ZDJiOTg3ZTU2NzRkZmNhMzkuLjI4MzJhOTkx
NmRmYjM4NzNlNzY3ODMyM2NmOTc1Y2NiYTU1YjQ1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzLmgKQEAgLTI1LDE1ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgewogCi1jb25zdGV4cHIgYXV0
byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRlLWxh
dW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKLWNvbnN0ZXhwciBhdXRvIHhwY0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKLWNvbnN0
ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5h
bWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiOwot
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtl
eSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIjsKLWNvbnN0ZXhwciBh
dXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1lc3NhZ2VOYW1lID0gInhw
Yy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2FnZSI7Citjb25zdGV4cHIg
YXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPSAidXBkYXRl
LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIl9zOworY29uc3RleHByIGF1dG8geHBj
TGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVuY2gtc2VydmljZXMtZGF0YWJhc2UiX3M7
Citjb25zdGV4cHIgYXV0byB4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0ZU1l
c3NhZ2VOYW1lID0gInJlcXVlc3QtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLXVwZGF0ZS1tZXNz
YWdlIl9zOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBv
aW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlIl9zOwor
Y29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2Fn
ZU5hbWUgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIl9z
OwogfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50cwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA1YmE5MmJiODIzOWYyODA5YjAxODRjNGRm
NzMwOTk5YzQzMGY0ZDQ1Li5mMWJmY2Y4N2IzNzQwNWJiOTY2ODE0ZjhjMTY0M2JiNjI3YTQ2NThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCkBAIC0xODUsMjcgKzE4NSwyNyBAQCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmIGhhbmRsZSkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNhbmRib3hFeHRlbnNpb24oaGFuZGxlKSk7CiB9CiAKLVN0cmluZyBzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBzdHJp
bmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0aCkKIHsKICAgICBjaGFy
IHJlc29sdmVkUGF0aFtQQVRIX01BWF0gPSB7IDAgfTsKICAgICByZWFscGF0aChwYXRoLnV0Zjgo
KS5kYXRhKCksIHJlc29sdmVkUGF0aCk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVz
b2x2ZWRQYXRoKTsKIH0KIAotU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyByZXNvbHZl
QW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3
IHBhdGgpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgTlNTdHJpbmcgKm5zUGF0
aCA9IHBhdGg7CisgICAgYXV0byBuc1BhdGggPSBwYXRoLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENv
cHlpbmcoKTsKIAotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSkgewotICAgICAgICBOU0xvZyhAImNvdWxkIG5v
dCBjcmVhdGUgZGlyZWN0b3J5IFwiJUBcIiBmb3IgZnV0dXJlIHNhbmRib3ggZXh0ZW5zaW9uLCBl
cnJvciAlQCIsIG5zUGF0aCwgZXJyb3IpOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoLmdldCgpIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSkgeworICAg
ICAgICBOU0xvZyhAImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJUBcIiBmb3IgZnV0dXJl
IHNhbmRib3ggZXh0ZW5zaW9uLCBlcnJvciAlQCIsIG5zUGF0aC5nZXQoKSwgZXJyb3IpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiByZXNvbHZlUGF0aEZvclNhbmRi
b3hFeHRlbnNpb24ocGF0aCk7CiB9CiAKLVN0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4
dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgU3RyaW5nIHJlc29sdmVkUGF0aCA9IHN0
cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgocGF0aCk7CiAgICAgaWYgKHJlc29sdmVkUGF0
aC5pc051bGwoKSkgewpAQCAtMjE2LDcgKzIxNiw3IEBAIFN0cmluZyByZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiByZXNvbHZlZFBh
dGg7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pOwpAQCAtMjI5LDcgKzIyOSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiAg
ICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoU3RyaW5nVmll
dyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIHJldHVy
biBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlUGF0aEZvclNhbmRib3hF
eHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQpAQCAtMjU5LDcgKzI1OSw3IEBAIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxv
Z0xhYmVsLCBjb25zCiAgICAgfSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PgogewogICAgIFN0cmluZyByZXNvbHZlZFBhdGggPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKTsKICAgICBpZiAocmVzb2x2ZWRQYXRo
LmlzTnVsbCgpKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkgLT4KICAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRoLCBU
eXBlOjpSZWFkV3JpdGUpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdHlwZSkgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PgorYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBl
IHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KIHsKICAg
ICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7
CkBAIC0yODQsMTEgKzI4NCwxMiBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdAogICAgIGlmIChw
YXRoLmxhc3QoKSAhPSAnLycpCiAgICAgICAgIHBhdGguYXBwZW5kKCcvJyk7CiAgICAgCi0gICAg
Ly8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuICAgIAotICAgIHBhdGguYXBwZW5kKHByZWZpeC51dGY4
KCkuZGF0YSgpLCBwcmVmaXgubGVuZ3RoKCkpOworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1l
LgorICAgIGF1dG8gcHJlZml4QXNVVEY4ID0gcHJlZml4LnV0ZjgoKTsKKyAgICBwYXRoLmFwcGVu
ZChwcmVmaXhBc1VURjguZGF0YSgpLCBwcmVmaXhBc1VURjgubGVuZ3RoKCkpOwogICAgIHBhdGgu
YXBwZW5kKCdcMCcpOwogICAgIAotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoLmRhdGEoKSkuZGF0YSgpLCB0eXBlKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oU3RyaW5nOjpmcm9tVVRGOChwYXRoLmRhdGEoKSkpLmRhdGEoKSwg
dHlwZSk7CiAKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRl
bXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRhdGEoKSk7CkBAIC0zMzksNyArMzQwLDcgQEAgYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8Y29uc3QgQVMKICAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2Vu
LCBmbGFncyk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tl
bikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90
IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIEhhbmRsZSBoYW5k
bGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQppbmRl
eCBhM2RiNGFmNGMxMjNiNmU2YTkxZWExZWNkYzEzZGI4MmExYmM4YjI0Li45YzNlYzQwOTVhOTQ3
MjcxZmQxMDIxNzdiOGIwNWIwZjc3OGI5ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5
UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC03MiwxMyArNzIsMTMg
QEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q29ubmVjdGlvbklkZW50
aWZpZXIoSVBDOjpDb25uZWN0aW9uOjpJZGUKIAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpCiB7
Ci0gICAgY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0
aWFsaXplck1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIpOworICAgIGNsaWVudElkZW50aWZp
ZXIgPSBTdHJpbmcgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNz
YWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKSB9OwogICAgIHJldHVybiAhY2xpZW50SWRlbnRpZmll
ci5pc0VtcHR5KCk7CiB9CiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dENsaWVudEJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRCdW5kbGVJZGVudGlmaWVyKQog
ewotICAgIGNsaWVudEJ1bmRsZUlkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1pZGVudGlmaWVyIik7CisgICAg
Y2xpZW50QnVuZGxlSWRlbnRpZmllciA9IFN0cmluZyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtYnVuZGxlLWlkZW50aWZpZXIiKSB9Owog
ICAgIHJldHVybiAhY2xpZW50QnVuZGxlSWRlbnRpZmllci5pc0VtcHR5KCk7CiB9CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRQcm9j
ZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZgogCiBib29sIFhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFBy
b2Nlc3NOYW1lKQogewotICAgIGNsaWVudFByb2Nlc3NOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgInVpLXByb2Nlc3MtbmFtZSIpOworICAgIGNs
aWVudFByb2Nlc3NOYW1lID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2lu
aXRpYWxpemVyTWVzc2FnZSwgInVpLXByb2Nlc3MtbmFtZSIpIH07CiAgICAgcmV0dXJuICFjbGll
bnRQcm9jZXNzTmFtZS5pc0VtcHR5KCk7CiB9CiAKQEAgLTExOSwzMCArMTE5LDMwIEBAIGJvb2wg
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
KEhhc2hNYXA8U3RyaW5nLCBTCiB7CiAgICAgeHBjX29iamVjdF90IGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShtX2luaXRpYWxpemVy
TWVzc2FnZSwgImV4dHJhLWluaXRpYWxpemF0aW9uLWRhdGEiKTsKIAotICAgIFN0cmluZyBpbnNw
ZWN0b3JQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpOworICAgIFN0cmluZyBpbnNw
ZWN0b3JQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpIH07CiAgICAgaWYgKCFpbnNw
ZWN0b3JQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
YWRkKCJpbnNwZWN0b3ItcHJvY2VzcyJfcywgaW5zcGVjdG9yUHJvY2Vzcyk7CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJQcm9jZXNzID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3Qs
ICJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIik7CisgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIikgfTsKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
YWRkKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIl9zLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzKSk7Ci0gICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWluID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJyZWdpc3RyYWJsZS1k
b21haW4iKTsKKyAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4geyB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInJlZ2lzdHJhYmxl
LWRvbWFpbiIpIH07CiAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCiAgICAg
ICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9tYWluIl9zLCBX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSk7CiAjZW5kaWYKIAotICAgIFN0cmluZyBpc1ByZXdh
cm1lZFByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCwgImlzLXByZXdhcm1lZCIpOworICAgIFN0cmluZyBpc1ByZXdhcm1l
ZFByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgImlzLXByZXdhcm1lZCIpIH07CiAgICAgaWYgKCFpc1ByZXdhcm1lZFBy
b2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoImlz
LXByZXdhcm1lZCJfcywgaXNQcmV3YXJtZWRQcm9jZXNzKTsKIAogICAgIGlmICghaXNDbGllbnRT
YW5kYm94ZWQoKSkgewotICAgICAgICBTdHJpbmcgdXNlckRpcmVjdG9yeVN1ZmZpeCA9IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAi
dXNlci1kaXJlY3Rvcnktc3VmZml4Iik7CisgICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3Vm
Zml4IHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKSB9OwogICAgICAgICBpZiAoIXVzZXJE
aXJlY3RvcnlTdWZmaXguaXNFbXB0eSgpKQogICAgICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlv
bkRhdGEuYWRkKCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiX3MsIHVzZXJEaXJlY3RvcnlTdWZmaXgp
OwogICAgIH0KIAotICAgIFN0cmluZyBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgPSB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVj
dCwgImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiKTsKKyAgICBTdHJpbmcgYWx3
YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5IHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3Jv
dW5kLXByaW9yaXR5IikgfTsKICAgICBpZiAoIWFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eS5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiYWx3YXlz
LXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSJfcywgYWx3YXlzUnVuc0F0QmFja2dyb3VuZFBy
aW9yaXR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tCmluZGV4IGQ4NjBlN2M3YWIwNjAxNmZkZjEwN2M0Y2YxZGRhNWMzN2YzMzJmYjEuLjEw
OGNiMDhhYWI4ZTZlNTE4NWFhNTFhYmIwYjZkZjJiNTM0NDEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTIwMyw3ICsyMDMsNyBA
QCBpbnQgWFBDU2VydmljZU1haW4oaW50LCBjb25zdCBjaGFyKiopCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICNlbmRpZgotICAgICAgICBTdHJpbmcgd2ViS2l0QnVuZGxlVmVyc2lvbiA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVy
c2lvbiIpOworICAgICAgICBTdHJpbmcgd2ViS2l0QnVuZGxlVmVyc2lvbiB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpIH07
CiAgICAgICAgIFN0cmluZyBleHBlY3RlZEJ1bmRsZVZlcnNpb24gPSBbTlNCdW5kbGUgYnVuZGxl
V2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0Il0uaW5mb0RpY3Rpb25hcnlbKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NGQnVuZGxlVmVyc2lvbktleV07CiAgICAgICAgIGlmICghd2ViS2l0
QnVuZGxlVmVyc2lvbi5pc051bGwoKSAmJiAhZXhwZWN0ZWRCdW5kbGVWZXJzaW9uLmlzTnVsbCgp
ICYmIHdlYktpdEJ1bmRsZVZlcnNpb24gIT0gZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKSB7CiAgICAg
ICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIldlYktpdCBmcmFtZXdvcmsg
dmVyc2lvbiBtaXNtYXRjaDogIiwgd2ViS2l0QnVuZGxlVmVyc2lvbiwgIiAhPSAiLCBleHBlY3Rl
ZEJ1bmRsZVZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVz
dGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKaW5kZXggMGQ1NzRi
MGNjNTAzNDEzMzIxN2ZlMzlmMGIwNDBiNTc5ZDJmYzFjMC4uOGE5OTYxMTY4MzM5M2FlNzk3MGJm
OTU5ZTUyZWJjOTJiNjVlZmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBD
VGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIFdLTWVzc2FnZVRlc3REcml2
ZXJGdW5jIG1lc3NhZ2VUZXN0RHJpdmVyKFN0cmluZyYmIGRyaXZlck5hbWUpCiB7CiAgICAgaWYg
KGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQotICAgICAg
ICBkcml2ZXJOYW1lID0gZ2V0ZW52KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVS
Iik7CisgICAgICAgIGRyaXZlck5hbWUgPSBTdHJpbmcgeyBnZXRlbnYoIldFQktJVF9NRVNTQUdF
X1RFU1RfREVGQVVMVF9EUklWRVIiKSB9OwogICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8
fCBkcml2ZXJOYW1lID09ICJkZWZhdWx0IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRUZXN0RHJp
dmVyOwogICAgIGF1dG8gdGVzdERyaXZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tNZXNzYWdlVGVz
dERyaXZlckZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgZHJpdmVyTmFtZS51dGY4KCkuZGF0YSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5j
cHAKaW5kZXggODY2NDlhNzcxMWRiYTcxNGVhYTAxNWYzZjI2ZjlmN2Q2YzI3ZDk1ZS4uYTEwYjhj
NzE0MGQ4ODE5ZDIyNWM5YzE5ZmFlYzhmNzllNTViNDIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBX
VEY6OlN0cmluZyBleHRlbnNpb25FcnJvclRvU3RyaW5nKEV4dGVuc2lvbkVycm9yIGVycm9yKQog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiSW50ZXJuYWxF
cnJvciI7CisgICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCA1ZGRh
MzBjZDdmNjE3OWY4MzhjOTBkYzJhZjU3ODNiYTUyMWU2ZTkyLi5iMmJhNTIzMjJjZGE0OTk4NzU4
MjUxYzIwMjM5NTQxOTIyNWRjMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCkBAIC04NCwxNyArODQsMTcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgc3Rh
dGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFuZGxlJiYpOwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
VHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGUoU3Ry
aW5nVmlldyBwYXRoLCBUeXBlKTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlUmVh
ZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGF0aHMpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRl
SGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlKTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpOyAvLyBXaWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRo
ZSBkaXJlY3RvcnkuCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZp
eCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVX
aXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFN0
cmluZ1ZpZXcgcGF0aCk7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4K
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVh
dGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlKTsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNp
b24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNl
cnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0g
RmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVz
Rm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBz
ZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9
IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tl
bl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJl
YWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNp
b24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBP
cHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCkBAIC0xMTgsOSArMTE4
LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3lt
bGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyByZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBh
dGgpOworU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoU3RyaW5nVmlldyBw
YXRoKTsKK1N0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oU3RyaW5nVmlldyBw
YXRoKTsKK1N0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpOwogCiAjaWYgIUVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCiAKQEAgLTEyOSwxMSArMTI5LDExIEBAIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6On5IYW5kbGUoKSB7IH0KIGlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0IHsgfQogaW5saW5lIHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29k
ZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUmJikgeyByZXR1
cm4gbnVsbHB0cjsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBI
YW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
U3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRs
ZSB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSAtPiBWZWN0
b3I8SGFuZGxlPiB7IHJldHVybiB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07
IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFu
ZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsgfTsgfQor
aW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgoU3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJu
IEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3LCBUeXBlKSAtPiBzdGQ6Om9w
dGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6cGFpcjxIYW5k
bGUsIFN0cmluZz4geyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCkgLT4gc3RkOjpvcHRpb25hbDxI
YW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjp+
U2FuZGJveEV4dGVuc2lvbigpIHsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6cmV2
b2tlKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQxLDkgKzE0MSw5IEBAIGlubGluZSBib29sIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKSB7IHJldHVybiB0cnVlOyB9CiBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgSGFu
ZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5kbGU+JikgeyByZXR1cm4gdHJ1ZTsgfQot
aW5saW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQotaW5saW5lIFN0cmluZyByZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9Ci1pbmxp
bmUgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQoraW5saW5lIFN0cmlu
ZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0aCkgeyByZXR1
cm4gcGF0aC50b1N0cmluZygpOyB9CitpbmxpbmUgU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQor
aW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9TdHJpbmcoKTsgfQog
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbQppbmRleCBlMDVhY2NjZTdmZjE0ZTYwMjExMzFmZTMyZmE4NjY5MWQ0MWI2OGI3Li44
ZjI1OWRhNmQ1MTAyNmNjZDYxODliYmVjYTQ4ZDUzZGI5ODFkYjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtMjgyLDcgKzI4Miw3
IEBAIHN0YXRpYyBTdHJpbmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3Jh
cnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJy
bm8pLmRhdGEoKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9Ci0gICAgcmV0dXJu
IHJlc29sdmVkUGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChyZXNvbHZlZFBhdGgp
OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbmRib3hEaXJlY3RvcnkoV2ViQ29yZTo6QXV4aWxpYXJ5
UHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgcGFyZW50RGlyZWN0b3J5KQpA
QCAtNzA0LDkgKzcwNCw5IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0CiAKICAgICBzYW5kYm94
UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0RJUiIsIHB3ZC5wd19kaXIpOwogICAg
IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwd2QucHdfZGlyKTsKLSAgICBwYXRoLmFw
cGVuZCgiL0xpYnJhcnkiKTsKKyAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiX3MpOwogICAgIHNh
bmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRo
LmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7CisgICAgcGF0aC5hcHBlbmQoIi9QcmVmZXJlbmNlcyJf
cyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZ
X1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDkyMGRlMDBiYjY4NjIwMmI2YzFkNjRmYWFkNzEy
MzU5YzE2MDI3OGYuLjliZGU1MDUyN2QzNTU1ZWIzMjczODM2NWExZjdjMmZjNGYxMzhjMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDY5LDIw
ICs0NjksMjAgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktl
eWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wgaGEKIAogICAgIC8vIEFsd2F5cyB1c2Ug
MTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZm
ZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2Rl
ID09IFZLX1JFVFVSTikgewotICAgICAgICB0ZXh0ID0gIlxyIjsKLSAgICAgICAgdW5tb2RpZmll
ZFRleHQgPSAiXHIiOworICAgICAgICB0ZXh0ID0gIlxyIl9zOworICAgICAgICB1bm1vZGlmaWVk
VGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgLy8gQXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIg
Zm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3JyZWN0IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNv
ZGUgaXMgOC4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKLSAg
ICAgICAgdGV4dCA9ICJceDgiOwotICAgICAgICB1bm1vZGlmaWVkVGV4dCA9ICJceDgiOworICAg
ICAgICB0ZXh0ID0gIlx4OCJfczsKKyAgICAgICAgdW5tb2RpZmllZFRleHQgPSB0ZXh0OwogICAg
IH0KIAogICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNl
IEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICBpZiAod2lu
ZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikgewotICAgICAgICB0ZXh0ID0gIlx4OSI7Ci0g
ICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAgICAgIHRleHQgPSAiXHg5Il9zOwor
ICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIFdlYktl
eWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5tb2RpZmllZFRleHQsIGtleSwgY29kZSwga2V5SWRl
bnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgbWFj
Q2hhckNvZGUsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBjb21tYW5kcywgYXV0b1JlcGVhdCwgaXNL
ZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApp
bmRleCBjMGE2NGZlZmJkMmY0NWMxMmFkOWNiZTJjNzg4M2IyNTE5ZDg4YjQ0Li5hYWM2MGI2NWIw
Mjc2NzU3M2IwMDcxODUxZjAxNmY0ZGUyNjgzOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIzMiw3
ICsyMzIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29u
dGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYQogewogICAgIGlmICghRmlsZVN5c3Rl
bTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBt
YXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworICAgIFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhIGZpbGVEYXRhID0gbWFwRmlsZShwYXRoKTsKICAgICBpZiAo
ZmlsZURhdGEuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0
byBtZXRhRGF0YSA9IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKGZpbGVEYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKaW5kZXgg
ZWViY2M5MmQ3OTlhNTViYWQxNzExNWNiODZhN2M4YmM4NzA0NjMzNi4uYzJhYWQzNmZkZTdmZjll
MjE0NDdkY2E0M2JiZTBmMTMzOTgzZGI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdLRG93
bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJh
c2UqIGNsaWVudCkKIAogICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBkaWRG
YWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBw
cm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIiB9LCBudWxscHRyKTsKKyAgICAgICAgICAg
IGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3
b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93bmxvYWQiX3MgfSwgbnVsbHB0cik7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBlMjU0OTI2
ZGM1MWE0OWFlYmE0OThkNzk0OWFhZmM4MDdhNGI3MjI5Li40MTE1MGI3ZDE1ZmIyZjU0ZGI1N2U2
ODA3ZDU1ODQxNWU3ZDljYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKQEAgLTUxNSwxMyArNTE1LDEzIEBAIHZvaWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJl
ZiBwYWdlUmVmKQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9uSGlzdG9yeVVSTFZhbHVl
VHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uSGlzdG9yeVVSTFZhbHVl
VHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25IaXN0b3J5VVJMIikubGVha1JlZigp
OworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUgPSBB
UEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlzdG9yeVVSTCJfcykubGVha1JlZigpOwogICAg
IHJldHVybiB0b0FQSSgmc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRlbVZhbHVlVHlwZSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlID0g
QVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iKS5sZWFrUmVm
KCk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVU
eXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iX3Mp
LmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9BUEkoJnNlc3Npb25CYWNrRm9yd2FyZExpc3RWYWx1
ZVR5cGUpOwogfQogCkBAIC0xNTgyLDIxICsxNTgyLDIxIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xp
ZW50CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxIHx8IG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MCkgewogICAgICAgICAgICAgICAgIEFQSTo6RGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvd0ZlYXR1cmVzLngpCi0gICAgICAgICAgICAgICAgICAgIG1h
cC5zZXQoIngiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy54KSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQoIngiX3MsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRv
d0ZlYXR1cmVzLngpKTsKICAgICAgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueSkKLSAg
ICAgICAgICAgICAgICAgICAgbWFwLnNldCgieSIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRv
d0ZlYXR1cmVzLnkpKTsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgieSJfcywgQVBJOjpE
b3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMueSkpOwogICAgICAgICAgICAgICAgIGlmICh3
aW5kb3dGZWF0dXJlcy53aWR0aCkKLSAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgid2lkdGgi
LCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy53aWR0aCkpOworICAgICAgICAg
ICAgICAgICAgICBtYXAuc2V0KCJ3aWR0aCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93
RmVhdHVyZXMud2lkdGgpKTsKICAgICAgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMuaGVp
Z2h0KQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJoZWlnaHQiLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJtZW51QmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1l
bnVCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJs
ZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUp
KTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJ0b29sQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAg
ICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2lu
ZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNl
dCgic2Nyb2xsYmFyc1Zpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJl
cy5zY3JvbGxiYXJzVmlzaWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInJlc2l6YWJs
ZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnJlc2l6YWJsZSkpOwotICAg
ICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxzY3JlZW4iLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3
aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgiZGlh
bG9nIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZGlhbG9nKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQoImhlaWdodCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgq
d2luZG93RmVhdHVyZXMuaGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgibWVudUJh
clZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJW
aXNpYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSJfcywg
QVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkpOwor
ICAgICAgICAgICAgICAgIG1hcC5zZXQoInRvb2xCYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46
OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50b29sQmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAg
IG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2lu
ZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNl
dCgic2Nyb2xsYmFyc1Zpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1
cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgicmVzaXph
YmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5yZXNpemFibGUpKTsK
KyAgICAgICAgICAgICAgICBtYXAuc2V0KCJmdWxsc2NyZWVuIl9zLCBBUEk6OkJvb2xlYW46OmNy
ZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7CisgICAgICAgICAgICAgICAgbWFwLnNl
dCgiZGlhbG9nIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cp
KTsKICAgICAgICAgICAgICAgICBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBmZWF0dXJlc01hcCA9IEFQ
STo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDhl
Njc1YjM5OTA3YmJjZDdhOTI0YzQ2Yzc4MGY3MTQyZjBlYzk1MWEuLjFhNzNhNzBjYWM5OTY4MjY5
YzQ2N2E4ODY3ZjgyMWM0YjBkYmEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgV0tUeXBlSUQgV0tQ
cmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZSgpCiB7Ci0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVX
aXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1
bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRv
QVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQogCiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJl
ZmVyZW5jZXNDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGVudGlmaWVyUmVmKQog
ewotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2Fj
eURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50aWZpZXJSZWYpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0
Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhM
ZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVyUmVmKSwgIldlYktpdDIuIl9zLCAi
V2ViS2l0Mi4iX3MpOwogICAgIHJldHVybiB0b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQppbmRleCAzZDY1NzlmNTJjZTM1
MDFhODYxYzNmNjU1ZWZiZWQyNGU4MWUxMmU0Li4yMTU2Y2UwOTNiMjc0YTEzOTZlMGU3YTc0Yjkx
ZjZhMjJkNTVjZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQpAQCAtNTgs
NyArNTgsNyBAQCBXVEY6OlN0cmluZyBDb250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3Jl
UGF0aCgpCiAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURp
cmVjdG9yeUF0VVJMOmNvbnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpIHdpdGhJbnRl
cm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCBjb250ZW50
UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5nZXQoKSk7CiAKLSAgICByZXR1cm4gW2NvbnRlbnRSdWxl
TGlzdFN0b3JlVVJMLmdldCgpIGFic29sdXRlVVJMXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjsKKyAgICByZXR1cm4gV1RGOjpTdHJpbmc6OmZyb21VVEY4KFtjb250ZW50UnVsZUxpc3RT
dG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggOWZh
NzFiMDc1YTAzZmYxZGZkZDAwMTdlNDVjODEyOTk1OWQzNWQ4My4uYTJiN2M1YjdjYWFlNzg5MzA5
ZmQ2NmQ3Y2YyYzIxYjg1ZTQ5NDU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTc5LDcg
Kzc5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogKyAoaW5zdGFuY2V0eXBlKXN0
b3JlV2l0aFVSTDooTlNVUkwgKil1cmwKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0
aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJl
dHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgoU3Ry
aW5nOjpmcm9tVVRGOCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSkp
OwogI2Vsc2UKICAgICByZXR1cm4gbmlsOwogI2VuZGlmCkBAIC0xOTQsNyArMTk0LDcgQEAgKyAo
aW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZQogKyAoaW5zdGFuY2V0
eXBlKXN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOihOU1VSTCAqKXVybAogewogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6c3RvcmVXaXRoUGF0aChTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pKSk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KaW5kZXggZWIyMzIxNjljZmI4YWEyYjIyZGU3MTM4Zjk4YWVmNDZjMzkwNDhjNS4uNTlmYjhk
YzBhNzgxYzdlYWFkZWZiNjEyYTVmMzExMjYxYjJmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTQ0LDcgKzQ0LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8V2ViS2l0OjpXZWJQcmVmZXJlbmNlcz4oc2VsZiwgU3RyaW5nKCksICJXZWJLaXQiLCAiV2Vi
S2l0RGVidWciKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6
V2ViUHJlZmVyZW5jZXM+KHNlbGYsIFN0cmluZygpLCAiV2ViS2l0Il9zLCAiV2ViS2l0RGVidWci
X3MpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDMwODBlYzQwMzYzNmE4NGFhMDUxYTNmOGY4
M2Q2OWUyYjEzMmEwOWYuLmJkMjM3MWMwMzIxMzAzZjdjODJhOTYwMDE4ZmVlMjA3ZmEzZDZlYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CkBAIC0yOTQ5LDcgKzI5NDksNyBAQCAtIChCT09MKV9hbGxvd3NWaWV3cG9ydFNocmlua1RvRml0
CiAtIChCT09MKV9pc0Rpc3BsYXlpbmdQREYKIHsKICAgICBmb3IgKGF1dG8mIHR5cGUgOiBXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkgewotICAgICAgICBDbGFzcyBw
cm92aWRlckNsYXNzID0gW1tfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnld
IHByb3ZpZGVyRm9yTUlNRVR5cGU6QCh0eXBlKV07CisgICAgICAgIENsYXNzIHByb3ZpZGVyQ2xh
c3MgPSBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJG
b3JNSU1FVHlwZTpAKHR5cGUuY2hhcmFjdGVycygpKV07CiAgICAgICAgIGlmIChbX2N1c3RvbUNv
bnRlbnRWaWV3IGlzS2luZE9mQ2xhc3M6cHJvdmlkZXJDbGFzc10pCiAgICAgICAgICAgICByZXR1
cm4gWUVTOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDFjNTRlMDE1ODRlNjAzMDU0MDg2NGJiMTZlMTQ1NjZhODI3
ODMwYmUuLjNmYjk2OTgwZWZkOWUyZjJhZThhMTdjZjRjNmQ0MjZkNDNhMjgzZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcApAQCAt
NjUsMTAgKzY1LDEwIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1CiAgICAgbGF1bmNoT3B0aW9u
cy5wcm9jZXNzSWRlbnRpZmllciA9IG1fcHJvY2Vzc0lkZW50aWZpZXI7CiAKICAgICBpZiAoY29u
c3QgY2hhciogdXNlckRpcmVjdG9yeVN1ZmZpeCA9IGdldGVudigiRElSSEVMUEVSX1VTRVJfRElS
X1NVRkZJWCIpKQotICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJf
cywgdXNlckRpcmVjdG9yeVN1ZmZpeCk7CisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJl
Y3Rvcnktc3VmZml4Il9zLCBTdHJpbmc6OmZyb21VVEY4KHVzZXJEaXJlY3RvcnlTdWZmaXgpKTsK
IAogICAgIGlmIChtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSkKLSAgICAgICAgbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJ
SUxpdGVyYWw+KCJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCAidHJ1ZSIp
OworICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNo
VHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4oImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3Jp
dHkiX3MsICJ0cnVlIl9zKTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0K
aW5kZXggNjBjMGQ5ZGFlMGYwZDZhZGM1NmNmZDFjOGNmMTBlZjk0M2Q1MWQzNS4uMjA3MmI1YjZi
MWNiOTBmOGY2MjdmNjk2NWMzMTBmMDFlN2Y0YjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6
YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFt
ZSgpCiAgICAgICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgIGF1dG8mIHVybCA9IG1fcmVxdWVz
dHNUb0xvYWQuZmlyc3QoKS5maXJzdDsKICAgICAgICAgV1RGOjpzd2l0Y2hPbihtX3JlcXVlc3Rz
VG9Mb2FkLmZpcnN0KCkuc2Vjb25kLCBbJl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7
Ci0gICAgICAgICAgICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAi
dGV4dC9odG1sIiwgIlVURi04IiwgdXJsKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UoZGF0YSksICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgdXJsKTsK
ICAgICAgICAgfSwgWyZdKGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpIHsKICAgICAgICAgICAgIGZy
YW1lLT5sb2FkVVJMKHVybCwgcmVmZXJyZXIpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyUmVnaXN0cnkubW0KaW5kZXggNDQ2ZjVmZGIzN2ExNWYxYzJmYzliMzkzMWIxZDAwMDIx
Y2QyODg0Ny4uZWE0NDlmOGRjN2QwYzU1Mjk3ZWU1YmU4YzFjNmM4Zjk4YmM2ODY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0KQEAgLTUyLDEzICs1MiwxMyBAQCAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICop
Y29uZmlndXJhdGlvbgogCiAjaWYgRU5BQkxFKFdLUERGVklFVykKICAgICBmb3IgKGF1dG8mIHR5
cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKLSAgICAgICAg
W3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTpAKHR5
cGUpXTsKKyAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tQREZWaWV3IGNsYXNzXSBm
b3JNSU1FVHlwZTpAKHR5cGUuY2hhcmFjdGVycygpKV07CiAjZW5kaWYKIAogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5fc3lzdGVtUHJldmlld0VuYWJsZWQgJiYgIWNvbmZpZ3VyYXRpb24ucHJlZmVy
ZW5jZXMuX21vZGVsRG9jdW1lbnRFbmFibGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnVzZE1JTUVUeXBlcygpKQotICAgICAgICAgICAg
W3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tVU0RQcmV2aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5
cGU6QCh0eXBlKV07CisgICAgICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1VTRFBy
ZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTpAKHR5cGUuY2hhcmFjdGVycygpKV07CiAgICAg
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YktpdFN3aWZ0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJL
aXRTd2lmdFNvZnRMaW5rLm1tCmluZGV4IDBlYzExNzQzYmIxZDhmMzlhMjUwYjUxYjNlNTc4NGJh
ZTFlNTBlMzAuLmZlNDViNzQ1NGQ3YjRiMzA4NzVlMGU2ZTNjMTc3OTQ1NmFkN2FhN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGlu
ay5tbQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkKiBXZWJLaXRTd2lmdExpYnJhcnkoYm9vbCBpc09w
dGlvbmFsKQogICAgICAgICAvLyBUaGVuIHNlYXJjaCBpbiB0aGUgRnJhbWV3b3Jrcy8gZGlyZWN0
b3J5IG9mIHRoZSBjdXJyZW50bHkgbG9hZGVkIHZlcnNpb24gb2YgV2ViS2l0LmZyYW1ld29yazoK
ICAgICAgICAgRGxfaW5mbyBpbmZvIHsgfTsKICAgICAgICAgaWYgKGRsYWRkcigoY29uc3Qgdm9p
ZCopJldlYktpdFN3aWZ0TGlicmFyeSwgJmluZm8pICYmIHN0cmxlbihpbmZvLmRsaV9mbmFtZSkp
IHsKLSAgICAgICAgICAgIGF1dG8gd2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5ID0gV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cGFyZW50UGF0aChpbmZvLmRsaV9mbmFtZSk7CisgICAgICAgICAgICBhdXRv
IHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSA9IFdURjo6RmlsZVN5c3RlbUltcGw6OnBhcmVudFBh
dGgoU3RyaW5nOjpmcm9tVVRGOChpbmZvLmRsaV9mbmFtZSkpOwogICAgICAgICAgICAgYXV0byBk
eWxpYlBhdGggPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
d2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5LCAiRnJhbWV3b3Jrcy9saWJXZWJLaXRTd2lmdC5keWxp
YiIpOwogICAgICAgICAgICAgaWYgKChsaWJyYXJ5ID0gZGxvcGVuKGR5bGliUGF0aC51dGY4KCku
ZGF0YSgpLCBSVExEX05PVykpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4
IDI4YTU4NTFmNWVlMGFjMGEzNGJhNzczZGQ2MTM0MzdiZjU0ODcxNzMuLjgwODU3MzIzZjlkOGY5
YzM4ZjYxYTkyMWI3ZGViODQ0YjgwMGYyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjgyLDcgKzI4Miw3IEBA
IFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSgpCiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMo
KQogewotICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGggPSBy
ZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSByZXNv
dXJjZVBhdGhdKTsKKyAgICBtX3Jlc29sdmVkUGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQ
YXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZyB7IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSB9KTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4
IDAwNzRkY2E3NzI3YTk2ODc0ZmIxZWQzODQ3ZjUxOWUxNjA0YTUzZjcuLmE3YmYzZDJkYzRkNmUz
MmVlNmNiZjZjMjAyMGU1ZWNkY2M3MGVhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC05MjYsMTcgKzkyNiwxNyBAQCAtICh2b2lkKV93a0No
YW5nZVRleHRTdHlsZTooaWQpc2VuZGVyCiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2Vs
ZWN0ZWRGb3JTZWdtZW50OjBdICE9IF90ZXh0SXNCb2xkKSB7CiAgICAgICAgIF90ZXh0SXNCb2xk
ID0gIV90ZXh0SXNCb2xkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRp
dENvbW1hbmQoQCJUb2dnbGVCb2xkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdl
KCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVCb2xkIl9zLCBlbXB0eVN0cmluZygpKTsKICAg
ICB9CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjFdICE9
IF90ZXh0SXNJdGFsaWMpIHsKICAgICAgICAgX3RleHRJc0l0YWxpYyA9ICFfdGV4dElzSXRhbGlj
OwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2ds
ZUl0YWxpYyIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0
Q29tbWFuZCgiVG9nZ2xlSXRhbGljIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBp
ZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjJdICE9IF90ZXh0SXNVbmRl
cmxpbmVkKSB7CiAgICAgICAgIF90ZXh0SXNVbmRlcmxpbmVkID0gIV90ZXh0SXNVbmRlcmxpbmVk
OwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2ds
ZVVuZGVybGluZSIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVF
ZGl0Q29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5lIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiB9
CiAKQEAgLTk1NSwxOSArOTU1LDE5IEBAIC0gKHZvaWQpX3drQ2hhbmdlVGV4dEFsaWdubWVudDoo
aWQpc2VuZGVyCiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAgICBjYXNlIE5TVGV4dEFsaWdu
bWVudExlZnQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVu
dExlZnQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgi
QWxpZ25MZWZ0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVk
aXRDb21tYW5kKCJBbGlnbkxlZnQiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE5TVGV4dEFsaWdubWVudFJpZ2h0OgogICAgICAgICBfY3VycmVudFRleHRBbGln
bm1lbnQgPSBOU1RleHRBbGlnbm1lbnRSaWdodDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdl
KCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZp
ZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0Il9zLCBlbXB0eVN0
cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6
CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudENlbnRlcjsK
LSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkNl
bnRlciIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29t
bWFuZCgiQWxpZ25DZW50ZXIiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE5TVGV4dEFsaWdubWVudEp1c3RpZmllZDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxp
Z25tZW50ID0gTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOwotICAgICAgICBfd2ViVmlld0ltcGwt
PnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduSnVzdGlmaWVkIiwgQCIiKTsKKyAgICAg
ICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkp1c3RpZmll
ZCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwpAQCAtOTkzLDcgKzk5Myw3IEBAIC0gKHZvaWQpX3drQ2hhbmdlQ29sb3I6KGlk
KXNlbmRlcgogICAgICAgICByZXR1cm47CiAKICAgICBfdGV4dENvbG9yID0gc2VsZi5jb2xvclBp
Y2tlckl0ZW0uY29sb3I7Ci0gICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21t
YW5kKCJGb3JlQ29sb3IiLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3JlOjpj
b2xvckZyb21Db2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7CisgICAgX3dlYlZpZXdJbXBs
LT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlh
bGl6YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5n
ZXQoKSkpKTsKIH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xs
ZXIKQEAgLTUxMzIsNyArNTEzMiw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Omluc2VydFRleHQoaWQg
c3RyaW5nLCBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAgVmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbWFuZD4qIGtleXByZXNzQ29tbWFuZHMgPSBtX2NvbGxlY3RlZEtleXByZXNzQ29t
bWFuZHM7CiAgICAgaWYgKGtleXByZXNzQ29tbWFuZHMgJiYgIW1faXNUZXh0SW5zZXJ0aW9uUmVw
bGFjaW5nU29mdFNwYWNlKSB7CiAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudFJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpOwotICAgICAgICBXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQgY29t
bWFuZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KTsKKyAgICAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kIGNvbW1hbmQoImluc2VydFRleHQ6Il9zLCB0ZXh0KTsKICAgICAgICAga2V5cHJlc3NDb21t
YW5kcy0+YXBwZW5kKGNvbW1hbmQpOwogICAgICAgICBMT0coVGV4dElucHV0LCAiLi4uc3RvcmVk
Iik7CiAgICAgICAgIG1fcGFnZS0+cmVnaXN0ZXJLZXlwcmVzc0NvbW1hbmROYW1lKGNvbW1hbmQu
Y29tbWFuZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IDRiMjFlOTg5ZjI3OWFlNjczNGQ5ZDMyNjAxZGUzNjZk
YjAwYWY3YjIuLmVjNjliZjZhZDNlN2M1OGUxNzExOTcxNTJkMGIzNDRjMjIyNDFmYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6On5EZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRh
KGNvbnN0IGNoYXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKEFTQ0lJTGl0
ZXJhbCBuYW1lLCBLZXllZERlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIG9yaWdpbjsK
IApAQCAtMTU3LDIwICsxNTcsMjAgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9h
ZFN0b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hNYXAKIAogc3RkOjp1
bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4gRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXIqIGRl
Y29kZXIsIFN0cmluZyYmIGRldmljZUlkSGFzaFNhbHQpIGNvbnN0CiB7Ci0gICAgYXV0byBzZWN1
cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoIm9yaWdpbiIsIGRlY29kZXIp
OworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJv
cmlnaW4iX3MsIGRlY29kZXIpOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW5EYXRhKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRT
dG9yYWdlOiBUaGUgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJl
Y3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YSA9
IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgicGFyZW50T3JpZ2luIiwgZGVjb2Rlcik7CisgICAgYXV0
byBwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoInBhcmVu
dE9yaWdpbiJfcywgZGVjb2Rlcik7CiAgICAgaWYgKCFwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6IFRoZSBwYXJlbnQgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZp
bGUgaXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBkb3VibGUgbGFzdFRpbWVV
c2VkOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiLCBsYXN0
VGltZVVzZWQpKSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUoImxhc3RUaW1lVXNl
ZCJfcywgbGFzdFRpbWVVc2VkKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVy
c2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIGxhc3QgdGltZSB1c2VkIHdh
cyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZvcjogJyVzJyIsIGRldmljZUlkSGFzaFNhbHQudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE4NSw5ICsx
ODUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0
Rm9yT3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0U3Rvcgogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5j
b2Rlcj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YShjb25z
dCBIYXNoU2FsdEZvck9yaWdpbiYgaGFzaFNhbHRGb3JPcmlnaW4pIGNvbnN0CiB7CiAgICAgYXV0
byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
U3RyaW5nKCJvcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1bWVudE9yaWdpbi5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJwYXJlbnRPcmlnaW4i
LCBoYXNoU2FsdEZvck9yaWdpbi5wYXJlbnRPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwot
ICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgibGFzdFRpbWVVc2VkIiwgaGFzaFNhbHRGb3JPcmln
aW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlU3RyaW5nKCJvcmlnaW4iX3MsIGhhc2hTYWx0Rm9yT3JpZ2luLmRvY3VtZW50T3Jp
Z2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoInBh
cmVudE9yaWdpbiJfcywgaGFzaFNhbHRGb3JPcmlnaW4ucGFyZW50T3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJfcywg
aGFzaFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUo
KSk7CiAgICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
MmU4NmMxYjY2YTRkNTJkNmYzMDRhNDkwNTJlMGZlMDk4NWRjMzM3OC4uNTE3MTYwMjg3NDlkMGJm
ODM0MWUzNzA5MDdmZWFiOThmNTU0MzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTU0
LDExICs1NCwxMSBAQCBib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OlhQQ0V2ZW50SGFuZGxlcjo6
aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBjbwogICAgIGlmICghZXZlbnQgfHwg
eHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmlu
ZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICBpZiAobWVzc2Fn
ZU5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8qIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlf
Z2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICBp
ZiAoIW1lc3NhZ2VOYW1lIHx8ICEqbWVzc2FnZU5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3Rh
bnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSkgewor
ICAgIGlmIChMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSA9PSBtZXNzYWdlTmFtZSkgewogICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5tX2VuZHBvaW50TWVzc2FnZSA9IGV2ZW50OwogICAgICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29s
cygpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+cHJv
Y2Vzc2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggZWY4ZDJk
ZDg2MDE5NDAwZDBkZmMxM2ZhMWE0MjY2NjJmYjdiZDQyNS4uN2FjNDRhOTdiMGJmZGMzYzU1Nzc0
YzRhYThmMzkyYTQyYWJjYmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgdXBkYXRl
U3RvcmVkUmVxdWVzdHMocmVxdWVzdCk7CiAKICAgICBpZiAoIVVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJlYW0oKnRoaXMsIHJlcXVlc3QuaGFz
QXVkaW9EZXZpY2UoKSwgcmVxdWVzdC5oYXNWaWRlb0RldmljZSgpKSkgewotICAgICAgICBkZW55
UmVxdWVzdChyZXF1ZXN0LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVk
aWFBY2Nlc3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSwgIlVuYWJsZSB0byBleHRlbmQgc2Fu
ZGJveC4iKTsKKyAgICAgICAgZGVueVJlcXVlc3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUs
ICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAKaW5kZXggN2JkNTg3N2RkOGU5MjU4ZGM1ZDZhN2ZhNDI4NjdmYjkyOTc5ZDZmYS4uNGFhNzI5
ZGI0YTJjNjgyZTM3OWI3MTVjMTZiYTRmYjA2NDZmMDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yOTQsNyArMjk0LDcg
QEAgU3RyaW5nIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
ZXZlbnRzRGVzY3JpcHRpb24oRXZlbnRzIGUKIH0KIAogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nKGNvbnN0IFN0cmluZyYgbG9nKSBjb25z
dAordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Omxv
ZyhTdHJpbmdWaWV3IGxvZykgY29uc3QKIHsKICAgICBSRUxFQVNFX0xPRyhWaWV3R2VzdHVyZXMs
ICJTd2lwZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykgLSAlcyIsIChNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fc3RhcnRUaW1lKS5taWxsaXNlY29uZHMoKSwgbG9nLnV0ZjgoKS5kYXRhKCkp
OwogfQpAQCAtMzI0LDEzICszMjQsMTMgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNu
YXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLAogdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnJlc2V0KCkKIHsK
ICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykKLSAgICAgICAgbG9nKCJyZXNldDsgaGFkIG91
dHN0YW5kaW5nIGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVu
dHMpKTsKKyAgICAgICAgbG9nKG1ha2VTdHJpbmcoInJlc2V0OyBoYWQgb3V0c3RhbmRpbmcgZXZl
bnRzOiAiLCBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSkpOwogICAgIG1f
b3V0c3RhbmRpbmdFdmVudHMgPSAwOwogICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmFsQ2FsbGJhY2sgPSBudWxscHRyOwogfQogCi1ib29sIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRz
IGV2ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNl
ZCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQorYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50
LCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3Vs
ZElnbm9yZUV2ZW50SWZQYXVzZWQpCiB7CiAgICAgQVNTRVJUKGhhc09uZUJpdFNldChldmVudCkp
OwogCkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID09IFNo
b3VsZElnbm9yZUV2ZW50SWZQYXVzZWQ6OlllcyAmJiBpc1BhdXNlZCgpKSB7Ci0gICAgICAgIGxv
ZygiaXMgcGF1c2VkOyBpZ25vcmluZyBldmVudDogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50
KSk7CisgICAgICAgIGxvZyhtYWtlU3RyaW5nKCJpcyBwYXVzZWQ7IGlnbm9yaW5nIGV2ZW50OiAi
LCBldmVudHNEZXNjcmlwdGlvbihldmVudCkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGxvZyhsb2dSZWFzb24gKyBldmVudHNEZXNjcmlwdGlvbihldmVudCkpOworICAg
IGxvZyhtYWtlU3RyaW5nKGxvZ1JlYXNvbiwgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAK
ICAgICBtX291dHN0YW5kaW5nRXZlbnRzICY9IH5ldmVudDsKIApAQCAtMzUyLDEyICszNTIsMTIg
QEAgYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBz
dG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cwogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZChFdmVudHMgZXZlbnQsIFNob3Vs
ZElnbm9yZUV2ZW50SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCkKIHsKLSAgICBy
ZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3Vy
cmVkOiAiLCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsKKyAgICByZXR1cm4gc3RvcFdhaXRp
bmdGb3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiX3MsIHNob3Vs
ZElnbm9yZUV2ZW50SWZQYXVzZWQpOwogfQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6Y2FuY2VsT3V0c3RhbmRpbmdFdmVudChFdmVudHMgZXZl
bnQpCiB7Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJ3YWl0IGZvciBl
dmVudCBjYW5jZWxsZWQ6ICIpOworICAgIHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50
LCAid2FpdCBmb3IgZXZlbnQgY2FuY2VsbGVkOiAiX3MpOwogfQogCiBib29sIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChF
dmVudCBldmVudCkKQEAgLTM2OCw3ICszNjgsNyBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldgog
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVS
ZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50
cykgewotICAgICAgICBsb2coImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRpbmcgZXZl
bnRzOiAiICsgZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50cykpOworICAgICAg
ICBsb2cobWFrZVN0cmluZygiZGVmZXJyaW5nIHJlbW92YWw7IGhhZCBvdXRzdGFuZGluZyBldmVu
dHM6ICIsIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKaW5kZXggMjBjMzBiODM0ODg4N2YzZTUyMDBiZjg2OTcwZDgyNDljMzUw
NDdiZi4uMDJhMGI4OThmZDVjYjJlYTYyZjBmN2NiMGQ4Njg4YWI1Njk0ZGIxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTI1MCwx
MyArMjUwLDEzIEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU3Ry
aW5nIGV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyk7Ci0gICAgICAgIHZvaWQgbG9nKGNvbnN0IFN0
cmluZyYpIGNvbnN0OworICAgICAgICB2b2lkIGxvZyhTdHJpbmdWaWV3KSBjb25zdDsKIAogICAg
ICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlhdGVseSgpOwogICAgICAgICB2b2lk
IGZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCk7CiAgICAgICAgIHZvaWQgd2F0Y2hkb2dU
aW1lckZpcmVkKCk7CiAKLSAgICAgICAgYm9vbCBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywg
Y29uc3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgPSBTaG91
bGRJZ25vcmVFdmVudElmUGF1c2VkOjpZZXMpOworICAgICAgICBib29sIHN0b3BXYWl0aW5nRm9y
RXZlbnQoRXZlbnRzLCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElm
UGF1c2VkID0gU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6WWVzKTsKIAogICAgICAgICBFdmVu
dHMgbV9vdXRzdGFuZGluZ0V2ZW50cyB7IDAgfTsKICAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+IG1fcmVtb3ZhbENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQppbmRleCBkODFkNzgwNjIxYzgwNTA5
M2Q0ODNmMWVhYzM1ZTI5MDFkODE4M2I5Li5mNjdjZTQwNDMxNWVkNjI4ZWYxZjgyZTQxMzUyYjFh
NWE4NmMxMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0ND
cmVkZW50aWFsUmVxCiAgICAgICAgIFttX3Byb3h5IHBlcmZvcm1BdXRvRmlsbEF1dGhvcml6YXRp
b25SZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQuZ2V0KCkgd2l0aENvbXBsZXRpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFuZGxl
ciA9IFdURk1vdmUoaGFuZGxlcildKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gY3JlZGVudGlh
bCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgZW5zdXJlT25NYWluUnVu
TG9vcChbd2Vha1RoaXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBjcmVkZW50aWFsID0g
cmV0YWluUHRyKGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlv
bkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJPcGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBjb250aW51ZUFmdGVyUmVxdWVzdChjcmVkZW50aWFsLCBlcnJvciwgV1RGTW92ZShoYW5kbGVy
KSk7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXEKICAgICAgICAg
Y2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwg
d2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBkYWVtb25FbmRwb2ludCA9IHJldGFpblB0cihkYWVt
b25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25FbmRwb2ludCkgewogICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3QgdG8gYXV0aG9yaXphdGlvbiBkYWVtb246
ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRo
ZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAi
T3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0
aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwg
Ik9wZXJhdGlvbiBmYWlsZWQuIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGlj
YXRvclV0aWxzLm1tCmluZGV4IDc2ZTMzYTczODY3YmM0ZjdlY2Y3YmNkNjZjMDhlYWM1NmVmNjBm
MWEuLjNmMDBhNTBhNzllZjZmMTM0NzEwNWI0ZWY3ODY0YTYxY2MyMDQ2ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVh
bEF1dGhlbnRpY2F0b3JVdGlscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KQEAgLTEw
NCw3ICsxMDQsNyBAQCBTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVm
PiBwcml2YXRlS2V5KQogICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsK
ICAgICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAg
IE5TRGF0YSAqbnNQcml2YXRlS2V5UmVwID0gKE5TRGF0YSAqKXByaXZhdGVLZXlSZXAuZ2V0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKaW5k
ZXggMTUwZmU0MmNkNDY3NjljNTM2NjA5MWQ2ZjRmZjRjMzFlYTZmYzVmNS4uYTdkMGI1MDAxZTI0
ZmUxNmVhZTI4ZmM4MzUzOGVkOTU5YjgzNWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVh
bC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFZpcnR1
YWxIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgQ0JPUlZhbHVlOjpN
YXBWYWx1ZSByZXNwb25zZTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBD
Qk9SVmFsdWUoIm5vbmUiKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgyKV0gPSBD
Qk9SVmFsdWUoYXV0aGVudGljYXRvckRhdGEpOwotICAgICAgICAgICAgYXV0byBhdHRPYmogPSBi
dWlsZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCAiIiwgeyB9LCBB
dHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKKyAgICAgICAgICAgIGF1dG8g
YXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwg
U3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9LCB7IH0sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2U6Ok5vbmUpOwogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDMpXSA9IENCT1JW
YWx1ZShhdHRPYmopOwogICAgICAgICAgICAgYXV0byBwYXlsb2FkID0gQ0JPUldyaXRlcjo6d3Jp
dGUoQ0JPUlZhbHVlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNl
UmVxdWVzdCgpCiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVl
KGF1dGhEYXRhKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFs
dWUoc2lnbmF0dXJlRm9yUHJpdmF0ZUtleShrZXksIGF1dGhEYXRhLCBjbGllbnREYXRhSGFzaCkp
OwogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwudXNlckhhbmRsZSkKLSAgICAgICAgICAgICAg
ICByZXNwb25zZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgq
Y3JlZGVudGlhbC51c2VySGFuZGxlLCAiIiwgIiIpKTsKKyAgICAgICAgICAgICAgICByZXNwb25z
ZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlh
bC51c2VySGFuZGxlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgICAg
ICByZXNwb25zZVtDQk9SVmFsdWUoNSldID0gQ0JPUlZhbHVlKChpbnQ2NF90KW1hdGNoaW5nQ3Jl
ZGVudGlhbHMuc2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6
OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmNwcAppbmRleCA4MGRjYzlmNmJmNWYwNWU0NzdlNmVkZjA0M2MwMTQ0NDhmMTUxNmM1
Li5lOGQwZmY5NTc5ZmQyODllNWRiYzU2N2IwMzYxZDAxN2RlMTI3OTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDQs
NyArMTA0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxl
UmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQKICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoeyB9
LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRF
cnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIiB9KTsK
KyAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhj
ZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5j
ZWxsZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwogICAgIH07CiAgICAgCiAgICAgaWYgKCFkYXRhLnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAu
Y3BwCmluZGV4IGYxYjkwZDNmYjZiNDUwOGQ2YTNmZmNkZDY3OTFiODliYTdlMDRjZjIuLjhhMzkz
Y2VjZWI2NGE1MzgzNTg4ODVmYzRiMGViODJkNGVhYzQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgV2ViUGFnZUdy
b3VwRGF0YSBwYWdlR3JvdXBEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIC8vIElmIGl0
IHR1cm5zIG91dCB0aGF0IGl0J3Mgd3JvbmcsIHdlIGNhbiBjaGFuZ2UgaXQgdG8gdG8gIldlYktp
dDIuIiBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsRGVidWdLZXlQcmVmaXggZnJvbSBXZWJQcmVm
ZXJlbmNlcy4KIFdlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKICAgICA6IG1fZGF0YShwYWdlR3JvdXBEYXRhKGlkZW50aWZpZXIpKQotICAgICwgbV9w
cmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKG1fZGF0
YS5pZGVudGlmaWVyLCAiLldlYktpdDIiLCAiV2ViS2l0Mi4iKSkKKyAgICAsIG1fcHJlZmVyZW5j
ZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhtX2RhdGEuaWRlbnRp
ZmllciwgIi5XZWJLaXQyIl9zLCAiV2ViS2l0Mi4iX3MpKQogICAgICwgbV91c2VyQ29udGVudENv
bnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQogewogICAg
IHdlYlBhZ2VHcm91cE1hcCgpLnNldChtX2RhdGEucGFnZUdyb3VwSUQsIHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGZlMjExMDhkZDE5OTM3MDFl
ZDJiNGE3ODhhYTBiNjgzZTlkYzViNS4uOTRkMjNjMmI5ODZhZDBmOWNjZDM3YzVmODQzODRlN2I5
NGRkNmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0x
MTExMSw3ICsxMTExMSw3IEBAIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlCiB7CiAgICAgYXV0byBj
YXB0dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlOjpmaW5kQ2FwdHVy
ZURldmljZSgpOwogICAgIGlmICghY2FwdHVyZURldmljZSkKLSAgICAgICAgcmV0dXJuIENhcHR1
cmVTb3VyY2VPckVycm9yIHsgIk5vIGRldmljZSBpcyBhdmFpbGFibGUgZm9yIGNhcHR1cmUiIH07
CisgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZh
aWxhYmxlIGZvciBjYXB0dXJlIl9zIH07CiAKICAgICBpZiAocHJlZmVyZW5jZXMoKS5jYXB0dXJl
QXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNl
T3JFcnJvciB7IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y3Jl
YXRlKG1fcHJvY2Vzcy0+ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcigpLCAqY2FwdHVyZURldmljZSwgbV93ZWJQYWdlSUQpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMmYxNjgxNzQ2NTRmNjU2
ODAzOGE5M2I4YjZhZGI1YjE3NGUzZDI3Mi4uMWIyYjg1MWU5NzI0YWM1MGZlMzk4ZjkwNGZiM2Vj
NTdhZTUwOWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmICghc19pbnZh
bGlkTWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBzX2ludmFsaWRNZXNz
YWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdl
TmFtZSkpLnB0cigpKSk7CisgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6
U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpIH0pLnB0cigp
KSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGE4ZWY1ZGJjNDdlNmVjYjJhNDYzZmU3Yjg1ZDFjZWQ5ZWEwMzQ1ZWUuLmQ5OTQ3MjAxZjhi
OTRiNWQzZTJkMzJiYjQ4MmRhMjY5ZDY3OWY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTU5LDE5ICs1NTksMTkgQEAgV2ViUGFnZVByb3h5
KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQp
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQot
ICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVE
YXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7CisgICAgICAg
IHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2Fu
Rm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51bGxwdHIpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5z
RmluaXNoZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAg
ICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0
YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAgICAgICBw
YWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZv
clJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bnNGaW5pc2hlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQot
ICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVE
YXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOworICAg
ICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRh
RGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTc4OSw3
ICsxNzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9u
U2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0g
V2Vha1B0ciB7IHRhcmdldFBhZ2UgfV0oKSB7Ci0gICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdl
YWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6
IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0
dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVl
Y2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlk
Il9zIH07CiAgICAgfTsKICAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KCpjb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIFdURk1v
dmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlKSk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDMwOWE3NTQ0YjY0MzliYjRhZjc4
MTVlMjY3MDE5MThmNWZmODIzOGIuLmNlNWEwOWQ5YjFmMDBhZDZjNzliNTlhYzA4NGQwNjhhMGQ2
ZWNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI3NCwyNiAr
Mjc0LDI2IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpCiAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNh
ZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewog
ICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBD
YWNoZSJdOwogCi0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlu
a3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZyB7IGNh
Y2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoIH0pOwogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7
Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNo
ZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkNhY2hlU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIGF1dG8gZGlyZWN0b3J5ID0g
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRlZmF1bHQiKTsK
KyAgICBhdXRvIGRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJEZWZhdWx0Il9zKTsKIAogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgb2xkIHN0b3JhZ2UgZGlyZWN0b3J5LCBhbmQgdGhlcmUgbWlnaHQgYmUgZmlsZXMg
bGVmdCBoZXJlLgotICAgICAgICBhdXRvIG9sZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTdG9yYWdlIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpO
byk7CisgICAgICAgIGF1dG8gb2xkRGlyZWN0b3J5ID0gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIlN0b3JhZ2UiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwog
ICAgICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXTsKICAgICAgICAgTlNBcnJheSAqZmlsZXMgPSBbZmlsZU1hbmFnZXIgY29udGVu
dHNPZkRpcmVjdG9yeUF0UGF0aDpvbGREaXJlY3RvcnkgZXJyb3I6MF07CiAgICAgICAgIGlmIChm
aWxlcykgewpAQCAtMzE0LDYzICszMTQsNjMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOworICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIl9z
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNlcnZp
Y2VzRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIkFsdGVybmF0aXZlU2VydmljZXMiLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6
Ok5vKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
IkFsdGVybmF0aXZlU2VydmljZXMiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQog
CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQog
ewotICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRp
YUNhY2hlIik7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIk1lZGlhQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERC
Il9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7CisgICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyJfcyk7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1l
ZGlhS2V5cyIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiTWVkaWFLZXlzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiRGV2aWNlSWRI
YXNoU2FsdHMiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIkRldmljZUlkSGFzaFNhbHRzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
IldlYlNRTCJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3Jl
RGVidWciLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICByZXR1cm4gdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyJfcywgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVcpCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTW9kZWxFbGVtZW50IiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAg
cmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1vZGVsRWxlbWVu
dCJfcywgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAjZW5kaWYKIApAQCAtNDAwLDcg
KzQwMCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyCiAgICAgICAgICYmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwog
ICAgIAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodXJsLmFic29sdXRlVVJMLnBhdGgu
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkK
QEAgLTQyOCw3ICs0MjgsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaQogICAgICAgICAmJiAh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxs
cHRyXSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIs
IHVybCk7CiAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHVybC5hYnNvbHV0ZVVSTC5w
YXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCkBAIC00NTcsNyArNDU3LDcgQEAgU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmkKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmli
dXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwogCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5w
YXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OCh1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogfQogCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAxMWJiZjU0
ZjBiNDBmZjEyM2EyNDFiYWNmMzY2YmI5MmJiZjAzOTE3Li5iMTUyNjA5YTZmZTU0OTkzZWM4ZjE4
ODI4OWRlZmRjMGMyYjBiYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb3dz
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucykKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBob3N0U3RyaW5nID0gZW50
cnkub3JpZ2luLmhvc3QuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3RyaW5nKCIgIiwgZW50cnkub3Jp
Z2luLmhvc3QpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5
Lm9yaWdpbi5ob3N0LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBtYWtlU3RyaW5nKCIgIiwg
ZW50cnkub3JpZ2luLmhvc3QpOwogICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IG1h
a2VTdHJpbmcoZW50cnkub3JpZ2luLnByb3RvY29sLCBob3N0U3RyaW5nKTsKICAgICAgICAgICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcx
ZDFiMDMyMmQyZTUuLmYxNDE5Yjc0OTc4ZWU3ZTQ5N2I4OTZkMjA3YjM3NDg0YjhkYjE3ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZv
cm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkK
ICAgICAgICAgcmV0dXJuICJWUDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiSDI2NCI7CisgICAgICAgIHJldHVybiAiSDI2
NCJfczsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZTE5YjFl
MDMyNDBjNzVhODNjNTk5NDcyYWUyZWRlNDZkYmZjNzFhYi4uM2I4ODM1NTJiYjI1OGIwNTkzNTE0
YjVjNTUzNWRlYzYwNjY2MjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTYx
NywxMSArNjE3LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmCiAgICAgICAgIGF1dG8qIGhp
Z2hsaWdodERhdGFBcnJheSA9IFdlYktpdDo6dG9JbXBsKGhpZ2hsaWdodERhdGEpOwogICAgICAg
ICBoaWdobGlnaHRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFycmF5LT5z
aXplKCkpOwogICAgICAgICBmb3IgKGF1dG8gZGljdGlvbmFyeSA6IGhpZ2hsaWdodERhdGFBcnJh
eS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEaWN0aW9uYXJ5PigpKSB7Ci0gICAgICAgICAgICBhdXRv
IHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQo
ImZyb20iKSktPnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iX3MpKS0+dmFsdWUoKTsK
ICAgICAgICAgICAgIGhpZ2hsaWdodHMudW5jaGVja2VkQXBwZW5kKHsKICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLAotICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0
Kj4oZGljdGlvbmFyeS0+Z2V0KCJsZW5ndGgiKSktPnZhbHVlKCkpLAotICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0
PEFQSTo6U3RyaW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciIpKS0+c3RyaW5nKCkpCisgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nh
c3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCJfcykpLT52YWx1ZSgpKSwK
KyAgICAgICAgICAgICAgICBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29u
dGV4dChzdGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiX3Mp
KS0+c3RyaW5nKCkpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggZWJjNTNlYmZhOTEwOWM0OTE0Yjg5ZDc0OWEwNGMwZjVkY2QxNjdmMy4uYjRkY2FjZmUw
NTgxNjlhOTJmNmExZjgzNThkYTVkYjE1ZTViYjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQoc2l6
ZV90IGJ5dGVMZW5ndGgpCiAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50
ID0gbV9idWZmZXJlZEFtb3VudDsKICAgICBjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQgKz0gYnl0
ZUxlbmd0aDsKICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE5ld0J1ZmZlcmVkQW1vdW50Lmhhc092
ZXJmbG93ZWQoKSkpIHsKLSAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZy
YW1lOiBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UiKTsKKyAgICAgICAgZmFpbCgiRmFpbGVkIHRv
IHNlbmQgV2ViU29ja2V0IGZyYW1lOiBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UiX3MpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCBjZWJkOTdhYWQ4Y2FiMjVm
NmNlZGUwZTNlNzA3OTVmY2Y3MjcwMzRlLi43OGQ1MGY1ZGYwZGFmMGJlZmNjNjQyOGQ0OTRkOThm
MjgxNjIyMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJl
YW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7
CiAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBzdHJlYW0tPm1fc2VuZEhhbmRzaGFrZUNh
bGxiYWNrcy52YWx1ZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBmYWxzZSk7Ci0g
ICAgICAgIHN0cmVhbS0+bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2Nr
ZXRTdHJlYW1FcnJvcigwLCB7IH0sICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZC4iKSk7CisgICAg
ICAgIHN0cmVhbS0+bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqc3RyZWFtLCBTb2NrZXRT
dHJlYW1FcnJvcigwLCB7IH0sICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZC4iX3MpKTsKICAgICAg
ICAgc3RyZWFtID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDc5ZTM4NWJlMDI0ZWJiZjEzNmRj
MjdkZGNlYWI0OTQ2MmUxNWMwNWYuLmE0ODkxYjkyZGFmY2Q0NjY2NDhmMTZkYzEzMzYyNjBhYmYx
MmM4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQpAQCAtMTIxLDcgKzEyMSw3IEBAIEBlbmQKIC8vIFNldCBvdmVyZmxvdzogaGlk
ZGVuIG9uIHRoZSBhbm5vdGF0aW9uIGNvbnRhaW5lciBzbyA8aW5wdXQ+IGVsZW1lbnRzIHNjcm9s
bGVkIG91dCBvZiB2aWV3IGRvbid0IHNob3cKIC8vIHNjcm9sbGJhcnMgb24gdGhlIGJvZHkuIFdl
IGNhbid0IGFkZCBhbm5vdGF0aW9ucyBkaXJlY3RseSB0byB0aGUgYm9keSwgYmVjYXVzZSBvdmVy
ZmxvdzogaGlkZGVuIG9uIHRoZSBib2R5CiAvLyB3aWxsIGJyZWFrIHJ1YmJlci1iYW5kaW5nLgot
c3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CitzdGF0aWMgY29uc3RleHByIGF1
dG8gYW5ub3RhdGlvblN0eWxlID0KICIjYW5ub3RhdGlvbkNvbnRhaW5lciB7IgogIiAgICBvdmVy
ZmxvdzogaGlkZGVuOyAiCiAiICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIgpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQogIiAgICBwb3NpdGlv
bjogc3RhdGljOyAiCiAiICAgIHdpZHRoOiAyMDBweDsgIgogIiAgICBtYXJnaW4tdG9wOiAxMDBw
eDsgIgotIn0gIjsKKyJ9ICJfczsKIAogLy8gSW4gbm9uLWNvbnRpbnVvdXMgbW9kZXMsIGEgc2lu
Z2xlIHNjcm9sbCBldmVudCB3aXRoIGEgbWFnbml0dWRlIG9mID49IDIwcHgKIC8vIHdpbGwganVt
cCB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBwYWdlLCB0byBtYXRjaCBQREZLaXQgYmVoYXZpb3Iu
CkBAIC03NjksNyArNzY5LDcgQEAgdm9pZCBQREZQbHVnaW46OnJlY2VpdmVkTm9uTGluZWFyaXpl
ZFBERlNlbnRpbmVsKCkKIAogICAgIGlmICghaXNNYWluUnVuTG9vcCgpKSB7CiAjaWYgIUxPR19E
SVNBQkxFRAotICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGlu
ZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCIpOworICAgICAgICBwZGZMb2coIkRpc2FibGluZyBpbmNy
ZW1lbnRhbCBQREYgbG9hZGluZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCJfcyk7CiAjZW5kaWYKICAg
ICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XSB7CiAgICAgICAgICAgICByZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZTZW50aW5lbCgpOwpA
QCAtOTYxLDcgKzk2MSw3IEBAIHZvaWQgUERGUGx1Z2luOjp0aHJlYWRFbnRyeShSZWY8UERGUGx1
Z2luPiYmIHByb3RlY3RlZFBsdWdpbikKICAgICBmaXJzdFBhZ2VTZW1hcGhvcmUud2FpdCgpOwog
CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIHBkZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJz
dCBwYWdlIik7CisgICAgcGRmTG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiX3Mp
OwogI2VuZGlmCiB9CiAKQEAgLTEwNTUsNyArMTA1NSw3IEBAIHZvaWQgUERGUGx1Z2luOjphZG9w
dEJhY2tncm91bmRUaHJlYWREb2N1bWVudCgpCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVudCBm
cm9tIGJhY2tncm91bmQgdGhyZWFkIik7CisgICAgcGRmTG9nKCJBZG9wdGluZyBQREZEb2N1bWVu
dCBmcm9tIGJhY2tncm91bmQgdGhyZWFkIl9zKTsKICNlbmRpZgogCiAgICAgbV9wZGZEb2N1bWVu
dCA9IFdURk1vdmUobV9iYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQpOwpAQCAtMTI4MiwxMyArMTI4
MiwxMyBAQCBQbHVnaW5JbmZvIFBERlBsdWdpbjo6cGx1Z2luSW5mbygpCiAgICAgaW5mby5idW5k
bGVJZGVudGlmaWVyID0gImNvbS5hcHBsZS53ZWJraXQuYnVpbHRpbnBkZnBsdWdpbiJfczsKIAog
ICAgIE1pbWVDbGFzc0luZm8gcGRmTWltZUNsYXNzSW5mbzsKLSAgICBwZGZNaW1lQ2xhc3NJbmZv
LnR5cGUgPSAiYXBwbGljYXRpb24vcGRmIjsKKyAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAi
YXBwbGljYXRpb24vcGRmIl9zOwogICAgIHBkZk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3Vt
ZW50VHlwZURlc2NyaXB0aW9uKCk7CiAgICAgcGRmTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFw
cGVuZCgicGRmIik7CiAgICAgaW5mby5taW1lcy5hcHBlbmQocGRmTWltZUNsYXNzSW5mbyk7CiAK
ICAgICBNaW1lQ2xhc3NJbmZvIHRleHRQREZNaW1lQ2xhc3NJbmZvOwotICAgIHRleHRQREZNaW1l
Q2xhc3NJbmZvLnR5cGUgPSAidGV4dC9wZGYiOworICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLnR5
cGUgPSAidGV4dC9wZGYiX3M7CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRv
Y3VtZW50VHlwZURlc2NyaXB0aW9uKCk7CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZXh0ZW5z
aW9ucy5hcHBlbmQoInBkZiIpOwogICAgIGluZm8ubWltZXMuYXBwZW5kKHRleHRQREZNaW1lQ2xh
c3NJbmZvKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZl
UmVzb3VyY2UoKQogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0
TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3Rh
dHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFk
ZXJGaWVsZHM6aGVhZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNw
b25zZShyZXNwb25zZS5nZXQoKSk7CiAKLSAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VV
UkwsICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVz
cG9uc2UpOworICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9u
L3BkZiJfcywgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKICAgICBw
bHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5hZGRBcmNoaXZlUmVz
b3VyY2UocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTE2ODgsMTAgKzE2ODgs
MTAgQEAgdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZp
bGVuYW1lOwogCiAgICAgaWYgKG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUobmls
LCAiYXBwbGljYXRpb24vcGRmIik7CisgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdn
ZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShuaWwsICJhcHBsaWNhdGlvbi9wZGYiX3MpOwogCiAg
ICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5w
ZGYiKSkKLSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiKTsKKyAgICAg
ICAgbV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiX3MpOwogfQogICAgIAogdm9pZCBQ
REZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgVVJMJiwgdWludDMyX3QsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTg5Myw3ICsx
ODkzLDcgQEAgYm9vbCBQREZQbHVnaW46OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKIHsKICAgICBtX3NvdXJjZVVSTCA9IHBhcmFtZXRlcnMudXJsOwogICAgIGlmICgh
cGFyYW1ldGVycy5zaG91bGRVc2VNYW51YWxMb2FkZXIgJiYgIXBhcmFtZXRlcnMudXJsLmlzRW1w
dHkoKSkKLSAgICAgICAgY29udHJvbGxlcigpLT5sb2FkVVJMKHBkZkRvY3VtZW50UmVxdWVzdElE
LCAiR0VUIiwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFw
KCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CisgICAgICAgIGNvbnRyb2xsZXIoKS0+bG9h
ZFVSTChwZGZEb2N1bWVudFJlcXVlc3RJRCwgIkdFVCJfcywgcGFyYW1ldGVycy51cmwuc3RyaW5n
KCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7
CiAKICAgICBjb250cm9sbGVyKCktPmRpZEluaXRpYWxpemVQbHVnaW4oKTsKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBkNzQ1ZjAyMDk0ODRmNGVj
MmI3NGE1NTM3NGQxYmNlOTFjYTY3ODVkLi43ZDQzZmEwMjFjNWEyMGQ2NTU0MDhlNzhiYTliZWZm
NjU0NzA3ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC01NCwxNSArNTQs
MTUgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdu
bWVudChOU1RleHRBbGlnbm1lbnQgYWxpZ25tZW4KIHsKICAgICBzd2l0Y2ggKGFsaWdubWVudCkg
ewogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50TGVmdDoKLSAgICAgICAgcmV0dXJuICJsZWZ0IjsK
KyAgICAgICAgcmV0dXJuICJsZWZ0Il9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50UmlnaHQ6
Ci0gICAgICAgIHJldHVybiAicmlnaHQiOworICAgICAgICByZXR1cm4gInJpZ2h0Il9zOwogICAg
IGNhc2UgTlNUZXh0QWxpZ25tZW50Q2VudGVyOgotICAgICAgICByZXR1cm4gImNlbnRlciI7Cisg
ICAgICAgIHJldHVybiAiY2VudGVyIl9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50SnVzdGlm
aWVkOgotICAgICAgICByZXR1cm4gImp1c3RpZnkiOworICAgICAgICByZXR1cm4gImp1c3RpZnki
X3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnROYXR1cmFsOgotICAgICAgICByZXR1cm4gIi13
ZWJraXQtc3RhcnQiOworICAgICAgICByZXR1cm4gIi13ZWJraXQtc3RhcnQiX3M7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDM0NGY0
YmUyM2E0Mzc2NzE5Nzc4OTk5N2Q3NjM3YTIwMzFiN2VhZS4uNDVhMDExYmU1NTY2MjA3YzljYWM0
NWY5ZWY2MDkyY2U4MDE1MDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6bG9hZFVSTCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25z
dCBTdHJpbmcmCiAgICAgaWYgKCFodHRwQm9keS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWVM
b2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRl
KGh0dHBCb2R5LmRhdGEoKSwgaHR0cEJvZHkuc2l6ZSgpKSk7CiAgICAgICAgIGlmIChmcmFtZUxv
YWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENv
bnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAg
ICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRUeXBl
KCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiX3MpOwogICAgIH0KIAogICAgIFN0
cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZy
YW1lKCktPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDBlMTE3YTBlYzYxOTAwZDE1MGFkYjFkZTljNjgyMjlhOGU3YWI1NzAuLmY1YmQ4OWYxYzM1
NDY5NDk3YjI5YjU2OWU0YjhkMjRiM2JmMGMxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbChjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFNlY3VyCiAKICAgICBpZiAoIWlzV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIFdFQkFV
VEhOX1JFTEVBU0VfTE9HX0VSUk9SKCJtYWtlQ3JlZGVudGlhbDogVGhlICduYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdp
dGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsK
LSAgICAgICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3
aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9
KTsKKyAgICAgICAgaGFuZGxlcih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50PigwKSwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9u
cyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQu
Il9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZVdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok1h
a2VDcmVkZW50aWFsKGhhc2gsIG9wdGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RG
TW92ZShoYW5kbGVyKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I6OmdldEFzc2VydGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFNlY3Vy
aXQKIAogICAgIGlmICghaXNXZWJCcm93c2VyKCkpIHsKICAgICAgICAgV0VCQVVUSE5fUkVMRUFT
RV9MT0dfRVJST1IoImdldEFzc2VydGlvbjogVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
JyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBw
bGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iKTsKLSAgICAgICAgaGFuZGxl
cih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9u
RGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcg
QVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxl
LmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIiB9KTsKKyAgICAgICAgaGFuZGxl
cih7IH0sIHN0YXRpY19jYXN0PEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PigwKSwgRXhjZXB0aW9u
RGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoZSAnbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCcg
QVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxl
LmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIl9zIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVdlYkF1dGhuUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEFzc2VydGlvbihoYXNoLCBvcHRp
b25zLCBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBiYTIxZTRk
OGI0NzRkNWRhMGExZWJjNDc3YTEwM2Q4MjljNWVhMTA3Li40Mjc1ZWJkYzZlMDllYTE2YTUzZDhh
NzdlNmU4MThhYWM2NmEzNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Y2xvc2VIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyIG90aGVySWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpTYW1lRW50cnlDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCJfcyB9KTsKIAogICAgIGlmIChpZGVudGlmaWVyID09IG90aGVySWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmdldEZpbGVIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5LCBXZWJDb3Jl
OjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJy
b3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RmlsZUhhbmRsZShpZGVudGlm
aWVyLCBuYW1lLCBjcmVhdGVJZk5lY2Vzc2FyeSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZp
bGVIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW4KIHZvaWQgV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNy
ZWF0ZUlmTmVjZXNzYXJ5LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Okdl
dEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29y
ZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6R2V0RGlyZWN0b3J5SGFuZGxlKGlkZW50aWZpZXIsIG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuYW1lLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXREaXJlY3RvcnlIYW5kbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3Zl
RW50cnkoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlv
biBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJf
cyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUVudHJ5KGlkZW50aWZpZXIsIG5hbWUsIGRlbGV0
ZVJlY3Vyc2l2ZWx5KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2
b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkoV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OnJlc29sdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgb3RoZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlJlc29sdmVDYWxsYmFjayYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93
bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNv
bm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlc29sdmUoaWRlbnRpZmll
ciwgb3RoZXJJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQp
CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OnJlc29sdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKIHZvaWQgV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25u
ZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBs
b3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0RmlsZShpZGVudGlmaWVyKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVh
dGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNz
SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlv
biB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3Jl
OjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSAogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vz
c0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3Qi
IH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9u
IHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Q2xvc2VTeW5jQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
bnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3Jl
OjpGaWxlU3lzdGVtSGEKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRI
YW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZU5hbWVzQ2FsbGJhY2smJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25v
d25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJD
b25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRIYW5kbGVOYW1lcyhp
ZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNzks
NyArMTc5LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRs
ZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGUKIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OkdldEhhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJD
b3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxv
c3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0
aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwog
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6R2V0SGFuZGxlKGlkZW50aWZpZXIsIG5hbWUpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1
bHQpCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmkKIHZvaWQgV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBWb2lkQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3du
RXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpNb3ZlKGlk
ZW50aWZpZXIsIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbmV3TmFtZSksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKaW5kZXggYzU3ZTc4MDliMmVl
MTY2ZGQ2ZjY4OGJlMjJhODU5YzdkYWRkYThmYS4uMGM1ZGY1NGRjNDczZDFhNmYzNmQyODgzOWE1
YmYxMWVkNjgzMTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAK
QEAgLTc3LDkgKzc3LDkgQEAgdm9pZCBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ6OnNwZWFrKFJl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGUKICAgICB9OwogCiAgICAg
YXV0byB2b2ljZSA9IHV0dGVyYW5jZS0+dm9pY2UoKTsKLSAgICBhdXRvIHZvaWNlVVJJID0gdm9p
Y2UgPyB2b2ljZS0+dm9pY2VVUkkoKSA6ICIiOwotICAgIGF1dG8gbmFtZSA9IHZvaWNlID8gdm9p
Y2UtPm5hbWUoKSA6ICIiOwotICAgIGF1dG8gbGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6
ICIiOworICAgIGF1dG8gdm9pY2VVUkkgPSB2b2ljZSA/IHZvaWNlLT52b2ljZVVSSSgpIDogZW1w
dHlTdHJpbmcoKTsKKyAgICBhdXRvIG5hbWUgPSB2b2ljZSA/IHZvaWNlLT5uYW1lKCkgOiBlbXB0
eVN0cmluZygpOworICAgIGF1dG8gbGFuZyA9IHZvaWNlID8gdm9pY2UtPmxhbmcoKSA6IGVtcHR5
U3RyaW5nKCk7CiAgICAgYXV0byBsb2NhbFNlcnZpY2UgPSB2b2ljZSA/IHZvaWNlLT5sb2NhbFNl
cnZpY2UoKSA6IGZhbHNlOwogICAgIGF1dG8gaXNEZWZhdWx0ID0gdm9pY2UgPyB2b2ljZS0+aXNE
ZWZhdWx0KCkgOiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0K
aW5kZXggYWFjNmIzZmExMDcwYTdhM2MwNWRiYTc3MjdmNDBhMzgxZmE0ODE2My4uYWZiMWIyZDkx
ZGFmMjc0OTgwZjM3MWNiZTdkZjUxOWQyZmMyNTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JD
bGllbnRNYWMubW0KQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlV29yZENhc2Uo
V2ViUGFnZSogcGFnZSwgTlNTdHJpbmcgKigqY2hhbmdlQ2FzZSkoTlNTdHJpbmcgKikpCiAgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCJfcykuZXhlY3V0ZSgpOwogCiAgICAgTlNT
dHJpbmcgKnNlbGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICBwYWdlLT5yZXBsYWNl
U2VsZWN0aW9uV2l0aFRleHQoZnJhbWUucHRyKCksIGNoYW5nZUNhc2Uoc2VsZWN0ZWRTdHJpbmcp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHAKaW5kZXggZWUxNjQ1ZWY0ZTBjODQ0NzU3NDAzZDJjZGU1MWFkNGIxMTMwMmNjYi4uZGU4
MDEyN2ViMGJlMjNhODNhZmQ0NTkzZGViZWU0N2FjMzYzNDAzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIxNDEsNyAr
MjE0MSw3IEBAIEpTQzo6SlNPYmplY3QqIEpTTWVzc2FnZUxpc3RlbmVyOjpqc0Rlc2NyaXB0aW9u
RnJvbURlY29kZXIoSlNDOjpKU0dsb2JhbE9iamVjdCoKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIiksIEpTQzo6SlNWYWx1
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAganNSZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iKSwg
SlNDOjpqc1N0cmluZyh2bSwgSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkp
KSk7CisgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiZGVzY3JpcHRpb24iKSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgSVBDOjpk
ZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpIH0pKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc3RpbmF0aW9uSUQiKSwgSlNDOjpKU1Zh
bHVlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBKU0M6
OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJTZW1hcGhvcmUiKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlNlbWFwaG9yZSJfcykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKICAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2Jh
bE9iamVjdCwgV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlKFdU
Rk1vdmUodmFsdWUpKS0+Y3JlYXRlSlNXcmFwcGVyKHRvUmVmKGdsb2JhbE9iamVjdCkpKTsKICAg
ICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dmFsdWUiX3MpLCBqc1ZhbHVlKTsKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHRlbXBsYXRlPD4gSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlNoYXJlZE1lbW9yeSIpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFs
U3RyaW5nKHZtLCAiU2hhcmVkTWVtb3J5Il9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm90ZWN0aW9uID0gUHJvdGVjdGlv
bjo6UmVhZFdyaXRlOwpAQCAtMjI0MCw3ICsyMjQwLDcgQEAgdGVtcGxhdGU8PiBKU0M6OkpTVmFs
dWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2IKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZGF0YVNpemUiX3MpLCBKU0M6OkpTVmFsdWUodmFsdWUuZGF0YVNpemUpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKLSAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvdGVjdGlv
biJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm90ZWN0aW9uID09IFByb3RlY3Rp
b246OlJlYWRXcml0ZSA/ICJSZWFkV3JpdGUiIDogIlJlYWRPbmx5IikpOworICAgIG9iamVjdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0aW9u
Il9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlv
bjo6UmVhZFdyaXRlID8gIlJlYWRXcml0ZSJfcyA6ICJSZWFkT25seSJfcykpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBvYmpl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggNDBiOTk3MzIwMDc4MjVlNjY4M2U2MzY4MDQzZjYyYjZiNTkwMzM3Yi4uYjNiZWUyODJlY2Nj
OWQxZDY3MmNiMWVmN2Q4NmQ3ZTBkMzg1NzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIFJlZjxBUEk6OkFy
cmF5PiBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMoKQogU3RyaW5nIFdlYkZyYW1lOjpsYXllclRyZWVB
c1RleHQoKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gbV9jb3JlRnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5jb21wb3NpdG9yKCkubGF5ZXJUcmVlQXNUZXh0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggODVmNWE0OGFh
ZWZjZjNiNjMwOGFmNmM0ZjdiNDUxZjBiMmZhMTVjZS4uYjJjODcyYzcwMjQzYWU5ZGIxYzdhMWQ4
MmU1ZTYzYjFhZjQzNDU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtODEwLDExICs4MTAsMTIgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICBm
cmFtZVZpZXctPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+YmFja2luZygpLT50aWxlZEJhY2tpbmco
KS0+cHJlcG9wdWxhdGVSZWN0KHRpbGVDb3ZlcmFnZVJlY3QpOwogfQogCi1zdGF0aWMgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0
aChTdHJpbmcga2V5UGF0aCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gdHJh
bnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKEFTQ0lJTGl0ZXJhbCBrZXlQYXRoKQog
ewogICAgIGNvbnN0IGZsb2F0IHRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uID0gMC4yNTsK
IAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBhbmltYXRpb24gPSBbQ0FCYXNpY0Fu
aW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDprZXlQYXRoXTsKKyAgICBhdXRvIG5zS2V5UGF0
aCA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczprZXlQYXRoLmNoYXJh
Y3RlcnMoKSBsZW5ndGg6a2V5UGF0aC5sZW5ndGgoKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmlu
Z0VuY29kaW5nXSk7CisgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9
IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOm5zS2V5UGF0aC5nZXQoKV07
CiAgICAgW2FuaW1hdGlvbiBzZXREdXJhdGlvbjp0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlv
bl07CiAgICAgW2FuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAg
ICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFsc2VdOwpAQCAtODUzLDcgKzg1
NCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShj
b25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAgdHJhbnNm
b3JtLnNjYWxlKHNjYWxlKTsKIAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5k
ZXJWaWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgo
InRyYW5zZm9ybSIpOworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3
QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5z
Zm9ybSJfcyk7CiAgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5k
ZXJWaWV3QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKQEAgLTg2Niw3ICs4Njcs
NyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5d
OwogICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbem9vbUxheWVyLCBzaGFk
b3dDQUxheWVyLCBwYWdlLCBzY2FsZSwgb3JpZ2luXSAoKSB7Ci0gICAgICAgIHpvb21MYXllci0+
cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Iik7CisgICAgICAgIHpv
b21MYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zKTsK
ICAgICAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpCiAgICAgICAgICAgICBbc2hhZG93Q0FMYXllciBy
ZW1vdmVBbGxBbmltYXRpb25zXTsKIApAQCAtODc0LDE3ICs4NzUsMTcgQEAgdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IEZsb2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21U
b1BhZ2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1h
dGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0
KCkpOworICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29t
bWl0Il9zLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxh
eWVyKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5k
c0ZvckZyYW1lKGZyYW1lVmlldywgc2NhbGUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVm
PiBzaGFkb3dQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMs
IE5VTEwpKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91
bmRzQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3Vu
ZHMiKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0Fu
aW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIl9z
KTsKICAgICAgICAgW3NoYWRvd0JvdW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZh
bHVlV2l0aFJlY3Q6c2hhZG93Qm91bmRzXV07Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5p
bWF0aW9uPiBzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0
aW9uRm9yS2V5UGF0aCgicG9zaXRpb24iKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmlt
YXRpb24+IHNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRp
b25Gb3JLZXlQYXRoKCJwb3NpdGlvbiJfcyk7CiAgICAgICAgIFtzaGFkb3dQb3NpdGlvbkFuaW1h
dGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OnNoYWRvd0xheWVyUG9zaXRp
b25Gb3JGcmFtZShmcmFtZVZpZXcsIGNvbnN0cmFpbmVkT3JpZ2luKV1dOwotICAgICAgICBSZXRh
aW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpv
b21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCIpOworICAgICAgICBSZXRhaW5Q
dHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21T
bmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCJfcyk7CiAgICAgICAgIFtzaGFkb3dQ
YXRoQW5pbWF0aW9uIHNldFRvVmFsdWU6KF9fYnJpZGdlIGlkKXNoYWRvd1BhdGguZ2V0KCldOwog
CiAgICAgICAgIFtzaGFkb3dDQUxheWVyIGFkZEFuaW1hdGlvbjpzaGFkb3dCb3VuZHNBbmltYXRp
b24uZ2V0KCkgZm9yS2V5OkAidHJhbnNpZW50Wm9vbUNvbW1pdFNoYWRvd0JvdW5kcyJdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDQ4NTQ2ZmMxNGExODlmN2YzMTNiOTM5ZWEw
ZjUyNGFkOWVlNmNlZDMuLmJmY2ZhYTJhYWY1NDk3ODBmNWRiYjljZjM2NTkyM2I3YmEzODRkNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTQ0LDEwICs0NCw4IEBAIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6
c2luZ2xldG9uKCkKIAogdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxl
RXZlbnQoeHBjX29iamVjdF90IG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2Fn
ZU5hbWVLZXkpOwotICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50czo6eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAg
YXV0byogbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQ
Q0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdl
TmFtZSA9PSBtZXNzYWdlTmFtZSkgewogI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCiAgICAg
ICAgIGF1dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFz
ZUtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVx
dWVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQppbmRl
eCAwYzUzZDM1NjA0ZTM0YTY5NGJhYmNmZjNlNjQ3NjU0OGE4ZTEzNDFlLi4wNWFkNjc4YmEzMGFh
M2M3Mjg4ZWE0OTI5ZmRjNDU5MDQzZGZmM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9B
cHBCdW5kbGVSZXF1ZXN0Lm1tCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBBcHBCdW5kbGVEZWxl
dGlvblJlcXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5k
bGUmIGIKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YnJvYWRjYXN0RGVi
dWdNZXNzYWdlKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBkZWxldGUgYXBwIGJ1bmRsZTogIiwgU3Ry
aW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pKSk7CiAKLSAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXJB
bmRDbGVhbnVwKGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogIiIpOworICAg
IGNhbGxDb21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRl
c2NyaXB0aW9uXSkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVz
aEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRl
eCA0NjU1NTMxNTIwNWE0Yjc0NDVkM2U3OTdmYjczZTA2ZTljZWNmOTZhLi42MzVkMGFkODgyZTU0
ZWRkZDkyYTM5OTY2OTZjOWZiNWEwMGU4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3Nh
Z2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOworICAgIHZv
aWQgc2VuZERlYnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKIAogcHJpdmF0ZToKICAgICBDbGllbnRD
b25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZDA4YzA0NWIxNGU2MjVlMzcyZTBkMGZiYmJj
ZDA2OTRmZjUxMmQzMi4uOGIyMWMxNWJiNjBkZWI2NWViYWYxOTk1NTQxZWQxMDk0MmM2MzE1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBA
IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5n
KCJUdXJuZWQgRGVidWcgTW9kZSAiLCBtX2RlYnVnTW9kZUVuYWJsZWQgPyAib24iIDogIm9mZiIp
KTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1
Z01lc3NhZ2UoU3RyaW5nVmlldyBtZXNzYWdlKQogewogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRp
ZmllcjsKICAgICBhdXRvIHNpZ25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIERhZW1vbjo6c2lu
Z2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZp
ZXIsIG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERl
YnVnTWVzc2FnZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdlIGN1cnJl
bnRseSBzZW5kIHRoZSBkZWJ1ZyBtZXNzYWdlIHR3aWNlLgogICAgIC8vIEFmdGVyIGdldHRpbmcg
YWxsIGRlYnVnIG1lc3NhZ2UgY2xpZW50cyBvbnRvIHRoZSBlbmNvZGVyL2RlY29kZXIgbWVjaGFu
aXNtLCByZW1vdmUgdGhlIG9sZCBzdHlsZSBtZXNzYWdlLgpAQCAtMTUyLDcgKzE1Miw3IEBAIHZv
aWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhkaWN0aW9uYXJ5LmdldCgpLCBXZWJL
aXQ6OldlYlB1c2hEOjpwcm90b2NvbERlYnVnTWVzc2FnZUtleSwgbWVzc2FnZS51dGY4KCkuZGF0
YSgpKTsKICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV94cGNDb25uZWN0aW9uLmdl
dCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAotICAgIHNlbmREYWVtb25NZXNzYWdlPERhZW1vbk1l
c3NhZ2VUeXBlOjpEZWJ1Z01lc3NhZ2U+KG1lc3NhZ2UpOworICAgIHNlbmREYWVtb25NZXNzYWdl
PERhZW1vbk1lc3NhZ2VUeXBlOjpEZWJ1Z01lc3NhZ2U+KG1lc3NhZ2UudG9TdHJpbmdXaXRob3V0
Q29weWluZygpKTsKIH0KIAogdm9pZCBDbGllbnRDb25uZWN0aW9uOjplbnF1ZXVlQXBwQnVuZGxl
UmVxdWVzdChzdGQ6OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4mJiByZXF1ZXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAppbmRleCA5NzgyMzhmNTE3YjBkM2ZiOTZk
OTQwNjMxMTMzZmM4ZTQwYWE0NDk2Li4wNjYyZjEzZTk4Mzk0OTAwYzU0MWZhYmRlOTU2ZTg1Yzk2
NjJkYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODgsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGll
bnRDb25uZWN0aW9uKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogICAg
IHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlvbios
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodW5zaWduZWQpPiYmKTsKIAotICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOwog
ICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1OWVj
ZjVmMjUwN2M4MGRhYTAwM2JmZTJjOTczNGU0Li5kMWJmNjFlODNhZjBjMzg1Mjg3ZDdiMjVlOWMy
MWJjZThlZDRmZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBA
IC0zMjAsNyArMzIwLDcgQEAgdm9pZCBEYWVtb246OnJ1bkFmdGVyU3RhcnRpbmdQdXNoU2Vydmlj
ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZnVuY3Rpb24oKTsKIH0KIAotdm9p
ZCBEYWVtb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2
b2lkIERhZW1vbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkKIHsK
ICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV9jb25uZWN0aW9uTWFwKSB7CiAgICAgICAgIGlm
IChpdGVyYXRvci52YWx1ZS0+ZGVidWdNb2RlSXNFbmFibGVkKCkpCkBAIC00OTUsNyArNDk1LDcg
QEAgdm9pZCBEYWVtb246OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKENsaWVudENvbm5lY3Rpb24qIGNvbm4KIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIHJlcGx5U2VuZGVyKQogewogICAgIGlmICghY2FuUmVnaXN0ZXJGb3JOb3RpZmljYXRp
b25zKCpjb25uZWN0aW9uKSkgewotICAgICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0
ZSBwdXNoIGFuZCBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5r
bm93biBob3N0IGFwcGxpY2F0aW9uIGNvZGUgc2lnbmluZyBpZGVudGlmaWVyIik7CisgICAgICAg
IHJlcGx5U2VuZGVyKCJDb3VsZCBub3QgZGVsZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiByZWdp
c3RyYXRpb25zIGZvciBjb25uZWN0aW9uOiBVbmtub3duIGhvc3QgYXBwbGljYXRpb24gY29kZSBz
aWduaW5nIGlkZW50aWZpZXIiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQppbmRleCBkN2E2YjYzZmU0ZGIy
ZGViNTBhNWU5ZTE3MTc0MWYxMDg1ZGNhZWQ3Li44MTUxYzYwMWM2MTI4NDhmOTczZmY4OWExZTg3
YzYzZWE4ODQ4Y2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb25NYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1h
aW4ubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBpbnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5
UGF0aCA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVj
dG9yeSwgTlNVc2VyRG9tYWluTWFzaywgWUVTKVswXTsKICAgICAgICAgICAgIFN0cmluZyBwdXNo
RGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhsaWJy
YXJ5UGF0aCwgeyAiV2ViS2l0IiwgIldlYlB1c2giLCAiUHVzaERhdGFiYXNlLmRiIiB9KTsKLSAg
ICAgICAgICAgIDo6V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2Vydmlj
ZShpbmNvbWluZ1B1c2hTZXJ2aWNlTmFtZSwgcHVzaERhdGFiYXNlUGF0aCk7CisgICAgICAgICAg
ICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbigpLnN0YXJ0UHVzaFNlcnZpY2UoU3RyaW5n
IHsgaW5jb21pbmdQdXNoU2VydmljZU5hbWUgfSwgcHVzaERhdGFiYXNlUGF0aCk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgQ0ZSdW5Mb29wUnVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBiMjAyYjQ0ODA3OGMzZmVhNWJjOTU1MDgw
YWE3ZWVkZTZlY2E3OGE4Li45MTAxYzllYzZjNGZlZDMzYTNiNmFlNzk5ZjgxZjIzYjRhOTdmYjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFsaXpl
KCkKIFN0b3JhZ2VUcmFja2VyJiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpCiB7CiAgICAgaWYg
KCFzdG9yYWdlVHJhY2tlcikKLSAgICAgICAgc3RvcmFnZVRyYWNrZXIgPSBuZXcgU3RvcmFnZVRy
YWNrZXIoIiIpOworICAgICAgICBzdG9yYWdlVHJhY2tlciA9IG5ldyBTdG9yYWdlVHJhY2tlcihl
bXB0eVN0cmluZygpKTsKICAgICBpZiAoc3RvcmFnZVRyYWNrZXItPm1fbmVlZHNJbml0aWFsaXph
dGlvbikKICAgICAgICAgc3RvcmFnZVRyYWNrZXItPmludGVybmFsSW5pdGlhbGl6ZSgpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgwZmRj
MzdkZmQ5NGY5NWE3YTlkZDFhLi4wMjZkNDg3MDNlMzRjZDc4ZTZkMDM0YWMwMGU2YjdhOTUyY2Q4
ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTIsOCArNTIsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
IAotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNl
dHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwotc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNo
RGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
U2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlz
YWJsZWQiX3M7CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZvclBy
ZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
IHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBkaXNh
YmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRh
Y2hEaXNhYmxlZFNldHRpbmcsIGRpc2FibGVkID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JT
dGFydHNBdHRhY2hlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JT
dGFydHNBdHRhY2hlZChib29sIGF0dGFjaGVkKQogewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0
b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiIDogImZhbHNlIik7Cisg
ICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQg
PyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpk
ZWxldGVJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggNDc5MTZlNzgx
YTI0MzA0MWUxZDU4MjQ4YWJmYWVhYWMwYzU3YmI1OS4uNzk5YTdiNTk1MmIyYjg1Y2I3MGEwYjAw
YzU2MmI5MDE3ODZjMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIEhp
c3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6OndyaXRlT2JqZWN0cyhCaW5hcnlQcm9wZXJ0eUxpc3RP
YmplY3RTdHJlYW0mIHN0cgogewogICAgIHNpemVfdCBvdXRlckRpY3Rpb25hcnlTdGFydCA9IHN0
cmVhbS53cml0ZURpY3Rpb25hcnlTdGFydCgpOwogCi0gICAgc3RyZWFtLndyaXRlU3RyaW5nKCJX
ZWJIaXN0b3J5RmlsZVZlcnNpb24iKTsKLSAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3Rv
cnlEYXRlcyIpOworICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9u
Il9zKTsKKyAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyJfcyk7CiAKICAg
ICBzdHJlYW0ud3JpdGVJbnRlZ2VyKGN1cnJlbnRGaWxlVmVyc2lvbik7CiAgICAgc2l6ZV90IG91
dGVyRGF0ZUFycmF5U3RhcnQgPSBzdHJlYW0ud3JpdGVBcnJheVN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGlj
YXRpb25DYWNoZS5tbQppbmRleCBjYWMwZThiYzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZkMDll
MzE2Li42MjkxMTQ2OWFjZGRhNDE5ODdmNDk1NGM1YTY1ZDYzYzhmYjcyZWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFw
cGxpY2F0aW9uQ2FjaGUubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBAZW5kCiAKIFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0g
ICAgc3RhdGljIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0
aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNh
Y2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW0KaW5kZXggYjUyNWJiMGQ4YjQ4NTFjZDFhYTUzMzI3OTc5ZDEwNjRmNmVlZTczOS4u
ZjhlYzJmYjQwYzNkOGQ1Y2ViNTQ2ZWQ4N2FiYzk0YjA0NGY2ODkzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0
YWJhc2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7Cisg
ICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoU3RyaW5nIHsgZGF0YWJhc2VJZGVudGlmaWVyIH0pOwogICAgIGlmICghb3JpZ2luKQogICAg
ICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCA4NzdmZjI4N2E3NmMzMTVmMTE5NzM5MWQyNmMwNGMzZWIyNWU2
MDVhLi5iZmQ1ZDA5ZTk4YWRmNzM5YWI4ZjM3N2JjYjdlNGQ1NGUyZTgwNzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI2MDgsMTMg
KzI2MDgsMTMgQEAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0b3JF
eGNlcHRpb25NYXAoKQogewogICAgIFNlbGVjdG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hNYXA8
U0VMLCBTdHJpbmc+OwogCi0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJZ25v
cmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVj
dG9yKGluc2VydFBhcmFncmFwaFNlcGFyYXRvcjopLCAiSW5zZXJ0TmV3bGluZSIpOwotICAgIG1h
cC0+YWRkKEBzZWxlY3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRU
YWIiKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246KSwgIk1vdmVQYWdlRG93biIp
OwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjopLCAi
TW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9y
KHBhZ2VVcDopLCAiTW92ZVBhZ2VVcCIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXBB
bmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAg
ICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6KSwg
Ikluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3I6KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3Rv
cihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiX3MpOworICAgIG1h
cC0+YWRkKEBzZWxlY3RvcihwYWdlRG93bjopLCAiTW92ZVBhZ2VEb3duIl9zKTsKKyAgICBtYXAt
PmFkZChAc2VsZWN0b3IocGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93
bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDop
LCAiTW92ZVBhZ2VVcCJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlm
eVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CiAKICAgICBy
ZXR1cm4gbWFwOwogfQpAQCAtMjY1MCw3ICsyNjUwLDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9yOjpD
b21tYW5kKWNvcmVDb21tYW5kQnlOYW1lOihjb25zdCBjaGFyKiluYW1lCiAgICAgYXV0byogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQobmFtZSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZChTdHJpbmcgeyBuYW1lIH0pOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29t
bWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjg4OCw3ICsyODg4LDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0
ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0
ZW0gY2xhc3NdXSkgewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJl
Y3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwor
ICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0
aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgICAg
IFttZW51SXRlbSBzZXRTdGF0ZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdl
YkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxz
ZSldOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CkBAIC0yOTA2
LDcgKzI5MDYsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChbbWVudUl0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAgICAgICAgICAgICAvLyBUYWtl
IGNvbnRyb2wgb2YgdGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGNo
ZWNraW5nL3VuY2hlY2tpbmcgaXQgYmVjYXVzZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3b3Vs
ZCBiZSBhbWJpZ3VvdXMuCi0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwg
InJ0bCIpICE9IFRyaVN0YXRlOjpGYWxzZSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRs
ZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5
RGlyZWN0aW9uLCAicnRsIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAg
PyBVSV9TVFJJTkdfSU5URVJOQUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250
ZXh0IG1lbnUgaXRlbSIpCiAgICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJp
Z2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAg
ICAgfQpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgLSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJp
bnRpbmcgbWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6KGZsb2F0KW1pblBhZ2VMb2dpY2EKICAgICBh
dXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJhbWUp
IHsKICAgICAgICAgaWYgKGF1dG8qIGNvcmVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0gICAg
ICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJwcmlu
dCIgOiAic2NyZWVuIik7CisgICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2
YXRlLT5wcmludGluZyA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MpOwogICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIElu
IHNldHRpbmcgcHJpbnRpbmcsIHdlIHNob3VsZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFscmVh
ZHkgY2FjaGVkIGZvciB0aGUgZG9jdW1lbnQuCiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzA0CkBAIC02NjcyLDcgKzY2NzIsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfSkoKTsKIAog
ICAgICAgICBpZiAoIWlzRnVuY3Rpb25LZXlDb21tYW5kV2l0aE1hdGNoaW5nTWVudUl0ZW0pCi0g
ICAgICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQoImluc2VydFRleHQ6IiwgdGV4dCkpOworICAgICAgICAgICAgZXZlbnQtPmtl
eXByZXNzQ29tbWFuZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRU
ZXh0OiJfcywgdGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTY4MjI5MjUwYjhjM2IwYzFhY2Y2
ZWMxOGVhOTg2MmE2YmI3ZWJmNS4uNzIxYjhiYWU3M2UwY2ZiYzMwZGUyZWI0ZmEwNDYxZWUxMzNi
MTM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MzMwNCw3ICszMzA0LDcgQEAgKyAoQk9PTClfY2FuSGFuZGxlUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdAogKyAoTlNTdHJpbmcgKilfZGVjb2RlRGF0YTooTlNEYXRhICopZGF0YQogewog
ICAgIFdlYkNvcmU6OkhUTUxOYW1lczo6aW5pdCgpOyAvLyB0aGlzIG1ldGhvZCBpcyB1c2VkIGZv
ciBpbXBvcnRpbmcgYm9va21hcmtzIGF0IHN0YXJ0dXAsIHNvIEhUTUxOYW1lcyBhcmUgbGlrZWx5
IHRvIGJlIHVuaW5pdGlhbGl6ZWQgeWV0Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsgLy8gYm9va21hcmsg
ZmlsZXMgYXJlIEhUTUwKKyAgICByZXR1cm4gV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJ0ZXh0L2h0bWwiX3MpLT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7IC8vIGJvb2ttYXJrIGZpbGVzIGFy
ZSBIVE1MCiB9CiAKIC0gKHZvaWQpX3B1c2hQZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTc5ZTkz
N2MzZDBhMTkwZGU2YjAwYjM5YjU4ZjY0MjgwOWMxMDJiLi4wYjU4YmQ1OWY2OTcyMDQxZWY0YTVk
ZWM4NGUxZDNhMTNiMjI3ZjZmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdh
Y3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGlj
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQmxv
YldpdGhVU0RaRXh0ZW5zaW9uRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToK
KyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoY3JlYXRlRGlyZWN0b3JpZXMpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCBjcmVhdGUgZGly
ZWN0b3JpZXMgb24gaU9TIGlmIHdlIGFyZSBvbmx5IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdlcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0K
aW5kZXggYWNiN2U0MWJiNjRiZjNmNjk3ZGM4YmE5MTM5YjE5ZjgyYzQwYzlhOC4uNzQ3MDIyZDUx
YzEwMjFiYTg0NGZiZjNmNjhiNmMwZDQ1YjdhM2E2NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC02NTAsNyArNjUwLDcgQEAg
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKICAgICBFWFBFQ1RfVFJVRShbZmlsZW5hbWUgaGFzU3Vm
Zml4OkAiLnVzZHoiXSk7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmcgeyBmaWxlbmFtZSB9LCBmaWxlSGFuZGxl
KTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggMzljYWVhYzgwNDUyNGQ1ZGRkYjA4YmYxY2E4MzY2
N2RiZjk3NzU1MC4uNjNiZjY4ZDQwMDU4NGY0NWVmMTA2MDc3YWM5MTQ5ZjZhNzYwYmIwZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJG
aWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3Qo
KQogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVGVzdCI7
CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQk90aGVyIjsK
ICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJVbnVzZWQiOwot
ICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0gICAg
TlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOwotICAgIE5TU3Ry
aW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21w
dXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICpl
eGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0
cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNv
bXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKKyAg
ICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3Rl
bTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VOYW1lIH0p
OwogICAgIE5TVVJMICppZGJSb290VVJMID0gW3dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CiAgICAgTlNVUkwgKm9sZFZlcnNp
b25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKQEAgLTEyNyw4ICsxMjcsOCBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcmllcyhTdHJpbmcgdGVzdE5hbWUpCiAgICAgaWYgKHRl
c3ROYW1lID09ICJub25lIikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE5TU3RyaW5nICpl
eGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKmNyZWF0
ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5TU3RyaW5nICpleGlzdGluZ0Rh
dGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqY3Jl
YXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNo
Rm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFtZSB9KTsKICAgICBOU1VSTCAq
b2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRi
Um9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwogICAgIE5TVVJMICpu
ZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNpb25EaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggNjZmOTI1YWM2NGQ2ODBmOTllZjNlMzYyZWNiZTUz
MjM2ZWNkYWM4NC4uYmUyM2QyZWIwNzRmOTEwZGRmNGZlZTEwYmRlNWY0NjliZjU5OTY5YiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KQEAgLTg3OSw3ICs4NzksNyBA
QCBURVNUKFdlYktpdCwgTWlncmF0ZUluZGV4ZWREQkRhdGFUb0dlbmVyYWxTdG9yYWdlRGlyZWN0
b3J5KQogewogICAgIE5TVVJMICppbmRleGVkREJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
L0N1c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0
aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqaW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5
ID0gW2luZGV4ZWREQkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MS9o
dHRwc193ZWJraXQub3JnXzAiXTsKLSAgICBOU1N0cmluZyAqaW5kZXhlZERCRGF0YWJhc2VOYW1l
ID0gQCJUZXN0RGF0YWJhc2UiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGluZGV4ZWREQkRhdGFi
YXNlTmFtZVtdID0gIlRlc3REYXRhYmFzZSI7CiAgICAgTlNTdHJpbmcgKmhhc2hlZEluZGV4ZWRE
QkRhdGFiYXNlTmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoaW5kZXhlZERCRGF0YWJhc2VOYW1lKTsKICAgICBOU1VSTCAqaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkgPSBbaW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpoYXNoZWRJbmRleGVkREJEYXRhYmFzZU5hbWVdOwogICAgIE5TVVJMICpp
bmRleGVkREJGaWxlID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456241</attachid>
            <date>2022-03-31 08:52:20 -0700</date>
            <delta_ts>2022-03-31 09:10:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220331085219.patch</filename>
            <type>text/plain</type>
            <size>315098</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwOTI5OWFiNTZlZDhmNDhjMjdlZDQ0
NjkxODQyZTRhNDAzMDExYWEuLjMxMzg4MTYzNzM4ZjM5Zjk5OTE4YjdkZjIxYjA0NTk0OGIyMmFk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0
ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1w
b3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAg
ICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAg
KiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1w
bDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVYUEVSSU1FTlRBTF9G
RUFUVVJFUyBmbGFnIHVzZSBvbiBDb2NvYSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOGJiNTVj
MGRjMTg5ZDAyMjYzODhkZjRjNDY4ODYwZTgxMDI0MzA2Li42Zjc5MzUxMzcyYTNkYWNmZjRmM2M5
N2RkZjliOWE2MzQzOTA3ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDMt
MjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdl
YktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29y
ZHNUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEJsb2JUYWJsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNv
cmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
UmVjb3JkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJbmZvVGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0Rh
dGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKToKKyAgICAgICAgKiBNb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpw
ZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyRGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6ZHVtcEhlYXApOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4pOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEJvb2xlYW4pOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZh
Y3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWls
ZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbmRl
eFNRTCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMy0zMSAgQWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBjb250YWluXSBDb250YWlu
bWVudCBkaXNhYmxlcyB0aGUgc3BlY2lhbCBoYW5kbGluZyBvZiB0aGUgSFRNTCBib2R5IGVsZW1l
bnQgZm9yIG92ZXJmbG93IHZpZXdwb3J0IHByb3BhZ2F0aW9uIFtwYXJ0Ml0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NDliMDdiOTI1OTU0MDU0MDNjODdjNDZjM2E4ZDAyYTFlNTI2MWRkZi4uNjI3NmE1OWRlYjkwYjE4
OTFiMGQ4MmE4YWVkMDFjYjdjYTAyZjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDcgQEAKKzIw
MjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVw
YXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBj
aGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
YXBwZW5kQm9vbGVhbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3Rh
dGlzdGljTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6bG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkRGVzdGluYXRp
b25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmNvbHVtbnNGb3JUYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmFk
ZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxl
QXR0cmlidXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkJsb2JTdG9yYWdlOjpnZXQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6Om1hcEZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9M
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW06CisgICAgICAgIChXZWJLaXQ6OkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVi
dWdGZWF0dXJlcy5jcHAuZXJiOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbToKKyAgICAgICAgKGVuY29kZU9iamVjdCk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAg
KHJlcGx5QmxvY2tTaWduYXR1cmUpOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSBfaW52b2tlTWV0aG9kOl0pOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJ
blBhdGgpOgorICAgICAgICAoV2ViS2l0OjpyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0
VG9rZW4pOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudEJ1bmRsZUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6
Z2V0Q2xpZW50UHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlh
bGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAqIFNo
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4u
bW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBTaGFyZWQv
SVBDVGVzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWVzc2FnZVRlc3REcml2ZXIpOgorICAg
ICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94
RXh0ZW5zaW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgpOgorICAgICAgICAoV2ViS2l0
OjpyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpyZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbik6CisgICAg
ICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpzYW5kYm94RGF0YVZhdWx0UGFyZW50RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6Z2V0
VXNlckRpcmVjdG9yeVN1ZmZpeCk6CisgICAgICAgIChXZWJLaXQ6OnBvcHVsYXRlU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJFdmVudEZh
Y3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6Om9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcDoKKyAgICAgICAgKFdLRG93
bmxvYWRTZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgor
ICAgICAgICAoV0tQYWdlR2V0U2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOgorICAgICAgICAo
V0tQYWdlR2V0U2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW1WYWx1ZVR5cGUpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlKToKKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpD
b250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAoK1tXS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTDpdKToKKyAgICAgICAgKCtbV0tDb250ZW50
UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJl
ZmVyZW5jZXMgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmdldExhdW5j
aE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTdWJGcmFt
ZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW06CisgICAgICAgIChXZWJLaXQ6
OldlYktpdFN3aWZ0TGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRy
b2xsZXIgX3drQ2hhbmdlVGV4dFN0eWxlOl0pOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0
ZW1Db250cm9sbGVyIF93a0NoYW5nZVRleHRBbGlnbm1lbnQ6XSk6CisgICAgICAgICgtW1dLVGV4
dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgX3drQ2hhbmdlQ29sb3I6XSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRTZWN1cml0eU9yaWdp
bkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0
YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZXNl
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1v
dmFsVHJhY2tlcjo6c3RvcFdhaXRpbmdGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZCk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFs
VHJhY2tlcjo6Y2FuY2VsT3V0c3RhbmRpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZmlyZVJlbW92YWxDYWxs
YmFja0lmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0OjpzdG9wV2FpdGluZ0ZvckV2ZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW06CisgICAgICAgIChXZWJL
aXQ6OmJhc2U2NFByaXZhdGVLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRs
ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OldlYlBhZ2VHcm91cCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3Jl
YXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3Rp
ZnlQYWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURv
bWFpbnNGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bm90aWZ5
V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNl
cnZpY2VzRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUFuZEFwcGx5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldENoYW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6cmVjZWl2ZWROb25MaW5lYXJpemVkUERGU2VudGluZWwpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnRocmVhZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjphZG9w
dEJhY2tncm91bmRUaHJlYWREb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
cGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbToKKyAgICAgICAg
KFdlYktpdDo6Y3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6bG9hZFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpp
c1NhbWVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Z2V0RmlsZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVzb2x2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vz
c0hhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWspOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6Y2hhbmdlV29yZENhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9JUENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6
SlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rlcik6CisgICAgICAgIChJ
UEM6OmpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmxheWVy
VHJlZUFzVGV4dCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNpZW50
Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAg
IChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbToKKyAgICAgICAgKFdlYlB1c2hE
OjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVy
cm9yKToKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAg
ICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OkNsaWVudENvbm5lY3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQ
dXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZSk6CisgICAgICAgICogd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5oOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24u
bW06CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lz
dHJhdGlvbik6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlB1c2hEYWVtb25NYWluKToKKwogMjAyMi0wMy0zMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFWFBF
UklNRU5UQUxfRkVBVFVSRVMgZmxhZyBvbiBDb2NvYSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKaW5kZXggMTUzMWVjOGE5ZTRhZGZmMGI5NDBjODc4MWY2NmExYzBhZWQyNjBmNC4uY2FhZTU2
Mzc0NWU4MjhjODlmZWQ5MjE0NTAyZGRiMzJmMWUwNjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2lu
ZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIpOgorCiAy
MDIyLTAzLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRHVzdCBvZmYgTWFjIENNYWtlIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9n
CmluZGV4IDAwNjczNjcwOWEyYzEyYTI2MDk4ODdjOWQ3Nzg0MmMzNDA0NWNlMjYuLjEzZGQ2MzNk
ZDI4NDVkMWQ5MDNkOTY3YmZiOGQ0NWY0NDdiYzEwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBt
YWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
ZXRJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKToKKwogMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlw
ZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0OTY3NzllNDE4MDg4MGI3NTVkNmM4OGNj
YzBhNDZkNjFmZjRlNWRlLi5iOTlhODk5ZjgxZDRkMDc3ZjA2MzJmOTM2NjM4NTIyNzQyODAxMzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjItMDMt
MjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdl
YktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tOgorICAgICAgICAoSGlz
dG9yeVByb3BlcnR5TGlzdFdyaXRlcjo6d3JpdGVPYmplY3RzKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAod2ViQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
Y3JlYXRlU2VsZWN0b3JFeGNlcHRpb25NYXApOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjb3Jl
Q29tbWFuZEJ5TmFtZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdmFsaWRhdGVVc2VySW50
ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nl
dFByaW50aW5nOm1pbmltdW1QYWdlTG9naWNhbFdpZHRoOmxvZ2ljYWxIZWlnaHQ6b3JpZ2luYWxQ
YWdlV2lkdGg6b3JpZ2luYWxQYWdlSGVpZ2h0Om1heGltdW1TaHJpbmtSYXRpbzphZGp1c3RWaWV3
U2l6ZTpwYWdpbmF0ZVNjcmVlbkNvbnRlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlu
c2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tX
ZWJWaWV3IF9kZWNvZGVEYXRhOl0pOgorCiAyMDIyLTAzLTI4ICBJYW4gQW5kZXJzb24gIDxpYW5h
QGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIEFwcGxlIGludGVybmFsIGNsaWVudHMgZmFpbCB0
byBidWlsZCBkdWUgdG8gcmVkZWNsYXJlZCBBcHBLaXQgdHlwZXMgaW4gV2ViS2l0TGVnYWN5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzNjZjkzYTBiNjZi
ZTY3MDZkNDEyMDE3MWUyNjY0OTIxNTlkMzQ3Li43NGU3NGNhMTQzODhhOWI2NGJkZDA5OTBhZGRl
NDg5YTU4ODAwMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU5LDYgKzU5LDcgQEAKIAkJMzM3QjJENkEyNjU0NkVCMzAwRERGRDNEIC8qIExpa2VseURl
bnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzN0IyRDY4MjY1NDZFQUEwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVu
c2lnbmVkSW50ZWdlclNldC5jcHAgKi87IH07CiAJCTMzOUI3QjExMjdDNDVFRjUwMDcyQkY5QSAv
KiBGaXhlZFdpZHRoRG91YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMzQ3OUMxQzI3MjM2RjIwMDBCMkUxQjcgLyogRml4ZWRXaWR0aERvdWJsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0MjdD
NUFBMjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBB
U0NJSUNUeXBlLmNwcCAqLzsgfTsKKwkJNDY1NTc0MzYyN0Y1RkM0QTAwMkQ1NTIyIC8qIEFTQ0lJ
TGl0ZXJhbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1NTc0MzUyN0Y1RkM0QTAwMkQ1NTIyIC8qIEFTQ0lJTGl0ZXJhbENvY29hLm1tICov
OyB9OwogCQk0NkJFQjZFQjIyRkZFMjQ5MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZFOTIyRkZEREQ1
MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi87IH07CiAJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVC
QTZFNSAvKiBTYWZlU3RyZXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJlcnJvci5j
cHAgKi87IH07CiAJCTUwREUzNUY1MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0lt
cGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBE
RTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi87IH07CkBA
IC0xMDc0LDYgKzEwNzUsNyBAQAogCQk0NDY4NTY3MjI1MDk0RkU4MDA4Q0NBMDUgLyogVGhyZWFk
U2FuaXRpemVyU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJl
YWRTYW5pdGl6ZXJTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Q0RF
NEQyMjZFRTZDREEwMDlGNkFDQiAvKiBUeXBlQ2FzdHNDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUeXBlQ2FzdHNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbmNlbGxhYmxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjU1NzQzNTI3RjVGQzRBMDAyRDU1MjIgLyogQVNDSUlMaXRlcmFsQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBU0NJSUxpdGVyYWxDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJD
IC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVC
NkU5MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU0MzY0NjI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVTdHJl
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg0Myw2ICsxODQ1LDcgQEAK
IAkJQTVCQTE1RjExODI0MzM5RjAwQTgyRTY5IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjU1NzQzNTI3RjVGQzRBMDAyRDU1MjIgLyog
QVNDSUlMaXRlcmFsQ29jb2EubW0gKi8sCiAJCQkJQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8q
IFN0cmluZ0NvY29hLm1tICovLAogCQkJCUE1QkExNUY0MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJp
bmdJbXBsQ29jb2EubW0gKi8sCiAJCQkJOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmlu
Z1ZpZXdDb2NvYS5tbSAqLywKQEAgLTM1MzYsNiArMzUzOSw3IEBACiAJCQkJRTM3RTk2NTQyNzAy
QUQwQjAwRTFDMzZBIC8qIEFwcHJveGltYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
NDI3QzVBQTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDODA1RUYzOUU1RjE0NDgxQTk2RDM5RkMgLyogQVNDSUlMaXRlcmFsLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ2NTU3NDM2MjdGNUZDNEEwMDJENTUyMiAvKiBBU0NJSUxpdGVyYWxDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3Mzg2MTUxQTgyNUIwMDQxMjNGRiAvKiBBc3Nl
cnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM1MTUxQTgyNUIwMDQxMjNGRiAv
KiBBdG9tU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0
OTczOSAvKiBBdG9tU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM1NTIsNyArMzU1
Niw2IEBACiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlv
bnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBQzE1MUE4MjVCMDA0MTIzRkYgLyogY2Fj
aGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMUYwNTkzMjE2NDM1NkIwMDM5MzAy
QyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTM1RDA5MjI3REM1RUND
MDA5REZBNUIgLyogU3RhY2tDaGVjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QTFE
Qzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzY1Nyw2ICszNjYwLDcgQEAKIAkJCQlBOEE0NzQyNTE1MUE4MjVCMDA0MTIz
RkYgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5MzIwQ0M3M0Ez
MDBBMDNEQ0QgLyogU21hbGxTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMzVE
MDkyMjdEQzVFQ0MwMDlERkE1QiAvKiBTdGFja0NoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFRUE0REY5MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzMzN0RCOUNFNzQzNDEwRkFGMDc2RTE3IC8qIFN0YWNrVHJhY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggNmY2NjVkMDgzZjc1ODI3MWUxOGYz
ODhlN2I0ZjM1ZjBjZDg4NDkwOC4uMjExODNhYTdlYjJmNjdlOTQ3YzQ4YzVkOTE3MzIwNWE4NjFj
ZmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTQ5LDcgKzE0OSw3IEBAIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZv
cm1GaWxlSGFuCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHJlYWRFbnRpcmVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKIC8vIFByZWZpeCBpcyB3
aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBh
dGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9
IHsgfSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmlu
Z1ZpZXcgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBTdHJpbmdWaWV3IHN1ZmZpeCA9IHsg
fSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNjZXNzUGVybWlzc2lvbiA9IEZpbGVB
Y2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IGZhbHNlKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIC8v
IFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBm
aWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggNjY4ODRmZmY3OWY5MmM4ZjIxMWM3N2ZhNWVjZGFkMDNjNzYxYjg4OS4uYWY5NDcxYTBj
Mzg0YjYxMDcyYTEyYWY5OGYxYWE3NGI2NjRlYmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTk1LDYgKzk1LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICB0ZXh0L2Nm
L1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ1ZpZXdDRi5jcHAKIAorICAgIHRl
eHQvY29jb2EvQVNDSUlMaXRlcmFsQ29jb2EubW0KICAgICB0ZXh0L2NvY29hL1N0cmluZ0NvY29h
Lm1tCiAgICAgdGV4dC9jb2NvYS9TdHJpbmdJbXBsQ29jb2EubW0KICAgICB0ZXh0L2NvY29hL1N0
cmluZ1ZpZXdDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggMDJiMDdlNWEyZWMwOTJkNzZmMWM2OGY5Mzk4NmY5
ZTNlMDE1MGYyYy4uZmExOWE2ODIyMTQ5MDljMTlkYTM3ZGU4ZTkzYzg5ZGQ2NmZmNDNiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCkBAIC0zNDAsMjUgKzM0MCw2IEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSW5GVFBGYW1pbHko
KSBjb25zdAogICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbkZUUEZhbWlseShzdHJpbmcoKSk7
CiB9CiAKLWJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAot
ewotICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKLQotICAgIC8vIEphdmFTY3Jp
cHQgVVJMcyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRl
Y2lkZXMgdGhleSBhcmUgaW52YWxpZC4KLSAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2Nv
bElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhwcm90b2NvbCksICJqYXZhc2Ny
aXB0IikpOwotCi0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmpl
Y3QuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKLSAg
ICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX3N0
cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29u
c3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50LgotfQotCiBib29sIFVSTDo6cHJv
dG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAogewogICAgIGFzc2VydFByb3RvY29s
SXNHb29kKHByb3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291
cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYjg3MGYyMzE1YWY3NDFjMzI5ZThlZjI3ZTkyN2JlOTM4
NDMxYzQ5Yy4uNjYxMWNmZmRjMWFkNWQ3YjMxMGZhMTI4ZGRlNjE4MTliZTA3ZDFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAg
LTEzNyw3ICsxMzcsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8gdGVy
bWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4K
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNv
bnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElz
KCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiZGF0YSIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFp
dHMuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCmluZGV4IDMyNjljNTYxZDE1NTZk
Y2RhYjhjZTQwZTQyYTIzOWMzZjVhZjQ3ZjMuLjAxNjc3YjYzOWU3N2Y2M2YwODEyMmJlNTQ5NjEw
MjZkMDZiMmRiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCkBAIC03NCw2ICs3NCwxMiBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PFJlZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMg
eyB9OwogCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEFTQ0lJTGl0ZXJhbD4g
OiBWZWN0b3JUcmFpdHNCYXNlPGZhbHNlLCB2b2lkPiB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBjYW5Nb3ZlV2l0aE1lbWNweSA9IHRydWU7CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworICAgIH07CisKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgogICAgIHN0cnVjdCBW
ZWN0b3JUcmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+PgogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBlZTRmNDAwZDczZThmOTE0YjEzNDQ0MzQx
ZDg2YmQ1MTIzMmIwNWJlLi5jNWRiMGY5ZTllNDFiYWNlM2E5MTgxMDllZTBmMGNlZDI5YTA5YjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC04OSw3ICs4OSw3
IEBAIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICByZXR1cm4gdGVtcG9yYXJ5RmlsZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhh
bmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3Ry
aW5nVmlldyBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBT
dHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmlu
ZGV4IGNkMTk0NzdhYzUxYTU0YjA0OTAxZWVhZjM3ZmRmMGNlYmEzOGFlNzQuLjZlMGU0NzY3MjI2
NjQ0YTk2MjNiMmJjNjMxYWE1MDkxMDFlNThmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4g
ZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8gRklYTUU6IFN1ZmZpeCBpcyBub3Qg
c3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1c2luZyBpdCBpcyBtYWNP
Uy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1ZmZpeC5pc0VtcHR5KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggNDI3NmY3N2Uy
MThkMWY0YWIxZWZlNWUyODEzMGI5MDU1MGNjNmI0NS4uN2Y5ZThmYzNkMGZjM2UzYzY4NzRjZTY3
MjhlMzZlZDI0YzgwZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIFN0cmlu
Z1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRlZCwg
YnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1vbmx5
LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYjgwY2VhYTJhM2MyYWMyYThjNGRh
YTcyZTYzMWQuLmQ1YjRmYTQ0MzJmNGQ0NDZlMzFmZDZhMDA0ZDliMTY5ZmY2ODExNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApAQCAtNTcsMTIgKzU3LDI3IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0ZXhwciBjaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2NoYXJhY3RlcnNbaW5kZXhdOyB9CiAKKyNpZmRlZiBfX09CSkNfXworICAgIC8vIFRo
aXMgZnVuY3Rpb24gY29udmVydCBudWxsIHN0cmluZ3MgdG8gZW1wdHkgc3RyaW5ncy4KKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPE5TU3RyaW5nPiBjcmVhdGVOU1N0cmluZygpIGNv
bnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0
ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKSA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKSB7
IH0KIAogICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKIH07CiAKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IGNoYXIqIGIpCit7CisgICAgcmV0dXJuIGIg
JiYgIXN0cmNtcChhLmNoYXJhY3RlcnMoKSwgYik7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oQVNDSUlMaXRlcmFsIGEsIEFTQ0lJTGl0ZXJhbCBiKQoreworICAgIHJldHVybiAhc3RyY21w
KGEuY2hhcmFjdGVycygpLCBiLmNoYXJhY3RlcnMoKSk7Cit9CisKIGlubGluZSBuYW1lc3BhY2Ug
U3RyaW5nTGl0ZXJhbHMgewogCiBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIG9wZXJhdG9yIiIgX3Mo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IG4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0Jhc2U2NC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAppbmRleCAz
NmQwYTQ2MGYyOTU1NDgyY2U0ZjQ2OWMzNTM2M2UwZDk5NDU2NTE1Li4xYjUwNjJmYjkzY2VhMzA3
ZTAwNDkwYTM1MGI2ODdiMTdhYTE2ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0Jhc2U2NC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKQEAgLTEwNSw2ICsx
MDUsNyBAQCBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgQ1N0cmluZyYpOwog
U3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAK
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3RyaW5nVmll
dyk7CitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShBU0NJSUxpdGVyYWwgbGl0ZXJhbCkgeyByZXR1cm4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1Zp
ZXcgeyBsaXRlcmFsIH0pOyB9CiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYpOwogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4pOwogc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYTc1MzMxMzU1MzJiNTJjNGYyYWRjNTBlM2VhYjcx
NmFlNzNiN2NmNy4uOGNjNzEwZDRkZTk0ZTc0YWUxMDViYmNmMmYwYjVlNDI0NzMzZmY2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFN0
cmluZ1ZpZXcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFN0cmluZ1ZpZXco
Y29uc3QgY2hhciopOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgZXhwbGljaXQgU3RyaW5nVmlldyhBU0NJSUxpdGVyYWwpOworICAgIFN0cmluZ1Zp
ZXcoQVNDSUlMaXRlcmFsKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3IGVtcHR5KCk7CiAKQEAg
LTIyMCw2ICsyMjAsNyBAQCBib29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExDaGFyKiBiKTsK
IAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwog
Ym9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIqKTsKK2Jv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBBU0NJSUxpdGVyYWwpOwogCiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcs
IFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJp
bmdWaWV3KTsKQEAgLTIzMSwxMCArMjMyLDEyIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oU3Ry
aW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KFN0cmluZ1ZpZXcgYSwgY29uc3QgTENoYXIgKmIpOwogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIgKmIpIHsgcmV0dXJuIGVxdWFs
KGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgY2hhciogYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiBlcXVhbChiLCBh
KTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIEFTQ0lJTGl0ZXJhbCBi
KSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFy
YWN0ZXJzKCkpKTsgfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcgYSwgU3Ry
aW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
IT0oU3RyaW5nVmlldyBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9
CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcgYSwgY29uc3QgY2hhciogYikgeyBy
ZXR1cm4gIWVxdWFsKGEsIGIpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcg
YSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmNoYXJhY3RlcnMoKSk7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTENoYXIqYSwgU3RyaW5nVmlldyBiKSB7IHJl
dHVybiAhZXF1YWwoYiwgYSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciph
LCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChiLCBhKTsgfQogCkBAIC03MDEsNiArNzA0
LDExIEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBhLCBj
b25zdCBjaGFyKiBiKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGEs
IGIpOwogfQogCitpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
YSwgQVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VD
b21tb24oYSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiBjbGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJl
c3VsdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL0FTQ0lJTGl0ZXJhbENvY29hLm1tIGIvU291cmNl
L1dURi93dGYvdGV4dC9jb2NvYS9BU0NJSUxpdGVyYWxDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmU0
YmQ2MDc0OWNmOGJmMzM1NzQ0NWE0NzgwYWMwZjk1YWM3ODdkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9BU0NJSUxpdGVyYWxDb2NvYS5tbQpAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvdGV4
dC9BU0NJSUxpdGVyYWwuaD4KKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworUmV0YWluUHRyPE5TU3RyaW5nPiBBU0NJSUxpdGVyYWw6OmNyZWF0ZU5TU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8TENoYXIqPihjaGFyYWN0ZXJzOCgpKSBsZW5ndGg6
bGVuZ3RoKCkgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZyBmcmVlV2hlbkRvbmU6
Tk9dKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggYjJjOTZlMGM3YjdlYTEwYjhlYTJkODAzNGYwZTA3MmU1NWQxODBjNC4uMjhk
MWNlNWY2ZWUxOGJkMDY5ZDdmNjc2ZGI1MTI1NGY0YTM1ZWZhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJh
dGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rp
b24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJp
bmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3LCBQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8gRklYTUU6
IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1
c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1
ZmZpeC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCAzMjBjNmIxYmIwMTY1YmRjZWQ3NGMwYzk3
NjU4YzRlYjUwOGQxNjc0Li4xZmUzZDEwZjg3MDZlNzk3ZTg3YmE5MjVjNzUwZjAxZDAxM2Y4ZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyLmNwcApAQCAtNTY2LDggKzU2Niw4IEBAIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5E
YXRhPiBJREJTZXJ2ZXI6OmdldE9yaWdpbnMoKSBjb25zdAogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2lu
czsKLSAgICBjb2xsZWN0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKSwgc2VjdXJpdHlPcmln
aW5zKTsKLSAgICBjb2xsZWN0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKSwgc2VjdXJpdHlP
cmlnaW5zKTsKKyAgICBjb2xsZWN0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiX3MpLCBzZWN1
cml0eU9yaWdpbnMpOworICAgIGNvbGxlY3RPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2MSJfcyks
IHNlY3VyaXR5T3JpZ2lucyk7CiAKICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5zOwogfQpAQCAt
NjM2LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUFsbERhdGFiYXNlc0ZvckZ1bGxPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgV2FsbFRpCiAKICAgICBmb3IgKGF1dG8m
IGRhdGFiYXNlTmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKICAgICAgICAgYXV0byBkYXRhYmFzZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgZGF0
YWJhc2VOYW1lKTsKLSAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZSA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZVBhdGgsICJJbmRleGVkREIuc3FsaXRlMyIp
OworICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIl9zKTsKICAgICAg
ICAgaWYgKG1vZGlmaWVkU2luY2UgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkgJiYgRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGUpKSB7CiAgICAgICAgICAgICBhdXRvIG1vZGlmaWNh
dGlvblRpbWUgPSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShkYXRhYmFzZUZpbGUp
OwogICAgICAgICAgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQpAQCAtNzMyLDcgKzczMiw3IEBA
IHZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0CiAgICAgICAgIHJldHVybiBkYXRhYmFzZU9yaWdpbi50
b3BPcmlnaW4gPT0gdGFyZ2V0T3JpZ2luOwogICAgIH0pOwogCi0gICAgYXV0byB2ZXJzaW9uUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgInYxIik7CisgICAgYXV0byB2ZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIl9zKTsKICAg
ICBhdXRvIG9sZE9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodmVyc2lvblBhdGgsIG9sZE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgYXV0
byBuZXdPcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHZl
cnNpb25QYXRoLCBuZXdPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlmIChGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpblBhdGgpKQpAQCAtNzY4LDcgKzc2OCw3IEBAIHZv
aWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKG1fZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBuZXdW
ZXJzaW9uRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKKyAgICBTdHJpbmcgbmV3VmVyc2lvbkRpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgInYxIl9zKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV3
VmVyc2lvbkRpcmVjdG9yeSkpCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggNGUyMGE0YjliZWIzZGZlZGY1OWM1MDM4YmJjNDJhODE5ZDUyOGMwYy4uY2JkNDYy
NzkwNzg3NzgwMmYzOGM2YTRkZmI2NmMxYTIyMzFkYjNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTkzNSw3ICs5MzUsNyBAQCBTdHJpbmcgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkTmFtZSkKIAog
U3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9y
eShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwg
IkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnksICJJbmRleGVkREIuc3FsaXRlMyJf
cyk7CiB9CiAKIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGgo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAppbmRleCBjZDBjNDE0ZmIzMTAwMjQxM2VhMmJmZGQwOTgzMDVkNTFiOWYxZmQyLi5iMTMy
MGYwMDhiYmY5MzM1OWIyYjg1MzFkZWIxNmYxNGQ5Zjk4ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzY2LDExICszNjYsMTAg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wg
c2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIFdURk1vdmUobWVzc2FnZSkgfTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgU3RyaW5nIHRhYmxlTmFtZSh1bnF1YWxpZmllZEluZm9UYWJsZU5h
bWUpOwotICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRhYmxlRXhpc3RzKHRhYmxl
TmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0cyh1
bnF1YWxpZmllZEluZm9UYWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbV9uZXcgPSB0cnVl
OwogCi0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
U2xvdygiQ1JFQVRFIFRBQkxFICIgKyB0YWJsZU5hbWUgKyAiIChrZXkgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc3Fs
aXRlRGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmRTbG93KG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAi
LCB1bnF1YWxpZmllZEluZm9UYWJsZU5hbWUsICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCBmYWlsZWQg
dG8gY3JlYXRlICdpbmZvJyB0YWJsZSIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1f
c3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgICAgICB0cmFu
c2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNl
LmNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmNwcAppbmRleCBkNDY1MWRiZTkzMGFhNGI3NmNlNTlkYTUyYzI5NmU2YWU2OWYwMjc5
Li43NTYwY2QwOTVkYjU5OTYzMDhhZmRlNjA4MzI4YjQ1NGMyMjdlZWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIGxvY2tGaWxlTmFt
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgIi5sb2NrIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAi
LmxvY2siX3MpOwogfQogCiBPcmlnaW5Mb2NrOjpPcmlnaW5Mb2NrKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VS
TEZpbHRlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxG
aWx0ZXJQYXJzZXIuY3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5Nzc2OTE4
OWU3NGEuLmE5ZWM4ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNw
cApAQCAtMzQ5LDcgKzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFyc2VyKENv
bWJpbmVkVVJMRmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQYXJzZXI6
On5VUkxGaWx0ZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6UGFyc2VT
dGF0dXMgVVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwg
Ym9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitVUkxGaWx0
ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihTdHJpbmdW
aWV3IHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVy
bklkKQogewogICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBO
b25BU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VS
TEZpbHRlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmls
dGVyUGFyc2VyLmgKaW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJjODAyOGI0
MS4uYTQ5M2I5MTY1YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVzU3RyaW5n
KFBhcnNlU3RhdHVzKTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxG
aWx0ZXJzJik7CiAgICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVzIGFkZFBh
dHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUs
IHVpbnQ2NF90IHBhdHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihTdHJpbmdW
aWV3IHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVy
bklkKTsKIAogcHJpdmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmluZWRVUkxG
aWx0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwCmluZGV4IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2NGQuLjBk
NDdkN2MwNmIzMTM5OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3ICszNDks
NyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRl
Y29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAgICAgYnVp
bGRlci5hcHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmZTY0MGFiNDhmMWJjMjJlOWIxOWFlYTFhMjAxMTEw
NjljMDJiY2ZhLi41MjMwMGM2YzViODFkNjUxMjIwNWQ4YzNmMzA2ZjcwYjcwOGZiNjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICBp
ZiAobV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
YWNoZUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZURp
cmVjdG9yeSwgIkFwcGxpY2F0aW9uQ2FjaGUuZGIiKTsKKyAgICBtX2NhY2hlRmlsZSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCAiQXBwbGlj
YXRpb25DYWNoZS5kYiJfcyk7CiAgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlzdCAmJiAhRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDJkMzg2ZGIxZmYz
YzYyY2FmYTc5OWU1ODJmN2U1YzAyNWJmMGRjM2MuLmE2ODJjY2JhNzU0MjlkNzI4NTI2ZDhhY2Y4
ZmIwZWU3NTIyZDIyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJh
c2VJZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2Vw
YXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2Vw
YXJhdG9yQ2hhcmFjdGVyLCBwb3J0LnZhbHVlX29yKDApKTsKIH0KIAotc3RkOjpvcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoU3RyaW5nVmlldyBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRo
ZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNl
SWRlbnRpZmllci5maW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CkBAIC0xMDUsNyArMTA1LDcgQEAg
c3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bURhdGFiYXNlSWRlbnRpZmllcihjb24KICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQg
c2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QuCiAgICAgYXV0
byBwb3J0TGVuZ3RoID0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAt
IDE7Ci0gICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWlu
dDE2X3Q+KFN0cmluZ1ZpZXcgeyBkYXRhYmFzZUlkZW50aWZpZXIgfS5yaWdodChwb3J0TGVuZ3Ro
KSk7CisgICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWlu
dDE2X3Q+KGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChwb3J0TGVuZ3RoKSk7CiAKICAgICAvLyBO
b3RoaW5nIGFmdGVyIHRoZSBjb2xvbiBpcyBmaW5lLiBGYWlsdXJlIHRvIHBhcnNlIGFmdGVyIHRo
ZSBjb2xvbiBpcyBub3QuCiAgICAgaWYgKCFwb3J0ICYmIHBvcnRMZW5ndGgpCkBAIC0xMTcsNyAr
MTE3LDcgQEAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb24KIAogICAgIGF1dG8gcHJvdG9jb2wgPSBk
YXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIGF1dG8gaG9z
dCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRv
cjIgLSBzZXBhcmF0b3IxIC0gMSk7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7IHBy
b3RvY29sLCBob3N0LCBwb3J0IH07CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7IHBy
b3RvY29sLnRvU3RyaW5nKCksIGhvc3QudG9TdHJpbmcoKSwgcG9ydCB9OwogfQogCiBTZWN1cml0
eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCAzNzM1MGFhNDBhNmJl
MGJkMjZkYzY1NTFiYzcwNDYzNGRhOWMyMzlhLi5mYTQ0NmRiNjE3ODQ2NDc4ZTQ0NDI1YTg2ZjU5
MjA1Njk4Nzk0ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgK
QEAgLTcxLDcgKzcxLDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgLy8gU2Vy
aWFsaXplIHRoZSBzZWN1cml0eSBvcmlnaW4gdG8gYSBzdHJpbmcgdGhhdCBjb3VsZCBiZSB1c2Vk
IGFzIHBhcnQgb2YKICAgICAvLyBmaWxlIG5hbWVzLiBUaGlzIGZvcm1hdCBzaG91bGQgYmUgdXNl
ZCBpbiBzdG9yYWdlIEFQSXMgb25seS4KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGF0YWJh
c2VJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gZnJvbURhdGFiYXNlSWRlbnRpZmllcihTdHJpbmdWaWV3KTsKICAgICAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlP
cmlnaW5EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA1YWNiMjljZmI0NTk5N2ExODg2ZmJjYTc1YzAxNTA3
YTNiYmU2NGZiLi4yOWNmYzMwNDMyMmJiZDJkYThkMDM1NWJiZWUzNWQ3MTUyNTQzYzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTUyLDE2
ICsxNTIsMTYgQEAgY29uc3RleHByIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXlbXSA9IHsKICNlbmRpZgogfTsKIAotdGVtcGxhdGU8
QVNDSUlTdWJzZXQgc3Vic2V0LCB1bnNpZ25lZCBzaXplPiBzdGF0aWMgRml4ZWRWZWN0b3I8Y29u
c3QgY2hhcio+IG1ha2VGaXhlZFZlY3Rvcihjb25zdCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRl
cmFsPHN1YnNldD4gKCZhcnJheSlbc2l6ZV0pCit0ZW1wbGF0ZTxBU0NJSVN1YnNldCBzdWJzZXQs
IHVuc2lnbmVkIHNpemU+IHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IG1ha2VGaXhl
ZFZlY3Rvcihjb25zdCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gKCZhcnJh
eSlbc2l6ZV0pCiB7Ci0gICAgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHJlc3VsdChzdGQ6OnNp
emUoYXJyYXkpKTsKKyAgICBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHJlc3VsdChzdGQ6OnNp
emUoYXJyYXkpKTsKICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjpl
bmQoYXJyYXkpLCByZXN1bHQuYmVnaW4oKSwgW10gKGF1dG8gbGl0ZXJhbCkgewogICAgICAgICBy
ZXR1cm4gbGl0ZXJhbC5saXRlcmFsOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IE1JTUVUeXBlUmVnaXN0cnk6
OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIHsKICAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9y
KHN1cHBvcnRlZEltYWdlTUlNRVR5cGVBcnJheSk7CiB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgY29u
c3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBwZGZNSU1FVHlwZUFycmF5W10gPSB7CiAg
ICAgInRleHQvcGRmIiwKIH07CiAKLUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJl
Z2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQorRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiBNSU1FVHlw
ZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQogewogICAgIHJldHVybiBtYWtlRml4ZWRWZWN0b3Io
cGRmTUlNRVR5cGVBcnJheSk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgY29uc3RleHByIENvbXBh
cmFibGVMZXR0ZXJzTGl0ZXJhbCB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZUFycmF5W10gPSB7CiAg
ICAgInRleHQveC12Y2YiLAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1JTUVUeXBl
UmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxp
dGVyYWw+IE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCiB7CiAg
ICAgcmV0dXJuIG1ha2VGaXhlZFZlY3Rvcih1bnN1cHBvcnRlZFRleHRNSU1FVHlwZUFycmF5KTsK
IH0KQEAgLTY5MCw3ICs2OTAsNyBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFs
IHVzZE1JTUVUeXBlQXJyYXlbXSA9IHsKICAgICAibW9kZWwvdm5kLnVzZHoremlwIiwgLy8gVGhl
IG9mZmljaWFsIHR5cGU6IGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL21lZGlhLXR5
cGVzL21vZGVsL3ZuZC51c2R6K3ppcAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1J
TUVUeXBlUmVnaXN0cnk6OnVzZE1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+
IE1JTUVUeXBlUmVnaXN0cnk6OnVzZE1JTUVUeXBlcygpCiB7CiAgICAgcmV0dXJuIG1ha2VGaXhl
ZFZlY3Rvcih1c2RNSU1FVHlwZUFycmF5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaAppbmRleCA4YzJkNmZhMDI1Njk2ODY3MmUxY2I0N2EzNzIwNzlhNjJh
OTFmZmM3Li42YjUxNjJkOWFkY2YyY2VlMjI5ODM0ZDU4NWM1MDY1OTQ3N2RlY2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xMzIsMTMgKzEzMiwx
MyBAQCBwdWJsaWM6CiAgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkgb3RoZXIg
dGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8QVND
SUlMaXRlcmFsPiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgYWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHBkZk1JTUVUeXBlcygp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gdW5z
dXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVk
VmVjdG9yPGNvbnN0IGNoYXIqPiB1c2RNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiBwZGZNSU1FVHlwZXMoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiB1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8QVND
SUlMaXRlcmFsPiB1c2RNSU1FVHlwZXMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
dHJpbmcgYXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmlu
ZGV4IDEzMDY4Zjg5YWVkYWQzNTllMzI2MmJiYzZkZGRhNGMyZGE0NDRhMGEuLjExZmI3OTFjMTJm
YjE2Zjc3ODdhYWQ1ZmNkZjJlMTk4YThlZjUwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3IKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsK
KyAgICBhdXRvIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Il9zKTsKIAogICAgIGF1dG8g
ZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHN0b3JhZ2VE
aXJlY3RvcnkpOwogICAgIGlmICghZmlsZVR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDI4NmE1YTQ4
ODdlOGQ5NTYwMGU3YzhiYWMzYWZiZTY2NzYxNjA1NTQuLmEwYzZhM2U1MjZjYWNhNGFkMWM3ODhl
M2MyMjJlOGE0ZTUxYzI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTEzLDcgKzExMyw3IEBAIFN0cmlu
ZyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpzdG9yYWdlUGF0aCgpIGNvbnN0CiAgICAg
aWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
c3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVT
dG9wLnBsaXN0Il9zKTsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IDA5OTdkNzhiNjZiNTRlMTU5NjVmNmI4ZjY1ZmFkY2MzY2Zh
MzkzZjIuLjllZDAyMzYzMzYwOTg3ZGUyMTYzZGIwZGYzMzE5MGU3YzgxMjQ1MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEwOTYsNyArMTA5Niw3IEBAIEFWU3RyZWFtU2Vzc2lv
biogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9uKCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3Jh
Z2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBzdG9yYWdl
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCJfcyk7CiAgICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoU3RvcmFn
ZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7CiAg
ICAgfQogICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KaW5kZXgg
MDc3M2Y1ODg2ZTQwYTAyZWE5ZTNjYTA4MDIwNWM0NzJhOWIyODM0OS4uZGM3YTNjZTdmZjNiN2Vk
MTlkZWYwZmY0OGEyMDQ5ODBkNDk2N2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQpAQCAtNTExLDIxICs1MTEs
MjEgQEAgcHVibGljOgogCiAgICAgICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVy
biAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZv
ciBFbnRlci4KICAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09ICdccicpIHsK
LSAgICAgICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0
ID0gIlxyIjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJcciJfczsKKyAgICAgICAgICAgIG1fdW5t
b2RpZmllZFRleHQgPSBtX3RleHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgYWRqdXN0
bWVudHMgYmVsb3cgYXJlIG9ubHkgbmVlZGVkIGluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgbW9k
ZSwgYnV0IHdlIGNhbm5vdCB0ZWxsIHdoYXQgbW9kZSB3ZSBhcmUgaW4gZnJvbSBoZXJlLgogCiAg
ICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDgsIGJlY2F1c2UgYmFja3NwYWNlIG5lZWRzIHRvIGFs
d2F5cyBiZSA4LgogICAgICAgICBpZiAobV90ZXh0ID09ICJceDdGIikKLSAgICAgICAgICAgIG1f
dGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCJfczsKICAgICAgICAgaWYg
KG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4
dCA9ICJceDgiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiX3M7CiAgICAg
ICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgdGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtp
dCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICAgICAgaWYgKG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlID09IDkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJceDkiOwot
ICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICAgICAgbV90ZXh0
ID0gIlx4OSJfczsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CiAgICAg
ICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYWE2OTU1MGExZjA3NzlkMmM0NTI2NTMyY2Iz
MTdjMjBlNWU3YzM3Yi4uNjEzNjUzMWI1YjFjNGM3ZmFiYjQ0OTEwMzAzNTZlNWY0NmY3MWM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBDb29raWVKYXJEQjo6b3BlbkRhdGFi
YXNlKCkKIAogICAgIHZlcmlmeVNjaGVtYVZlcnNpb24oKTsKIAotICAgIGlmICghZXhpc3RzRGF0
YWJhc2VGaWxlIHx8ICFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJDb29raWUiKSkgeworICAgIGlm
ICghZXhpc3RzRGF0YWJhc2VGaWxlIHx8ICFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJDb29raWUi
X3MpKSB7CiAgICAgICAgIGJvb2wgb2sgPSBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudChDUkVBVEVfQ09PS0lFX1RBQkxFX1NRTCkpCiAgICAgICAgICAgICAm
JiBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChDUkVBVEVf
RE9NQUlOX0lOREVYX1NRTCkpCiAgICAgICAgICAgICAmJiBleGVjdXRlU1FMU3RhdGVtZW50KG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChDUkVBVEVfUEFUSF9JTkRFWF9TUUwpKTsKQEAgLTI3
MCw3ICsyNzAsNyBAQCBib29sIENvb2tpZUphckRCOjpjaGVja0RhdGFiYXNlVmFsaWRpdHkoKQog
ewogICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKIAotICAgIGlmICghbV9kYXRhYmFz
ZS50YWJsZUV4aXN0cygiQ29va2llIikpCisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3Rz
KCJDb29raWUiX3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGludGVncml0
eSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIHF1aWNrX2NoZWNrOyJfcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggMDM0NjBmNTI1OWIwODVmMTc0ZTYyMzdkYzc3YWQ1YjY0
YzgxMzI4YS4uM2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6
bG9hZEluZGV4KCkKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RyaW5nIGluZGV4RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpciwgImluZGV4LmRhdCIpOworICAgIFN0cmluZyBpbmRleEZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXIsICJpbmRleC5k
YXQiX3MpOwogICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoaW5k
ZXhGaWxlUGF0aCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJD
YWNoZSBFcnJvcjogQ291bGQgbm90IHJlYWQgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCmluZGV4IGYzYTU1YjM4MTFkNTI5OTI5NTgwMmM1MDhiYzcwOGM4Zjky
NGQ3MWEuLjJiYWY5NDJkYmM5NjNkM2ZmYjNkY2IxNWZjMWIzYmVkZDBlZWVlYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cApAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKG1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBtX2Rvd25sb2FkRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiZG93bmxvYWQiLCBtX2Rvd25sb2FkRmlsZUhhbmRsZSk7CisgICAgICAgICAgICBtX2Rv
d25sb2FkRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZG93bmxvYWQi
X3MsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZp
bGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IGYyZTNl
ZGFkNTBlZGEyZmRlMGU1ZDU2N2FhZTMzNzNkYzU1ZGIwNTAuLjFlYjZkZWJhZmMyM2M0MmRkMTJl
ZDc2YTFmNmYxMDVmZTI5Y2VmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtODksMTEgKzg5LDYgQEAgU1FMaXRlRGF0YWJhc2U6On5T
UUxpdGVEYXRhYmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotY29uc3QgY2hhciogU1FMaXRlRGF0
YWJhc2U6OmluTWVtb3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuICI6bWVtb3J5OiI7Ci19Ci0KIGJv
b2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUg
b3Blbk1vZGUpCiB7CiAgICAgaW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5KCk7CkBAIC00MjYs
MTIgKzQyMSwxMiBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZChBU0NJSUxp
dGVyYWwgcXVlcnkpCiAgICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4ZWN1dGVD
b21tYW5kKCk7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMoU3RyaW5n
VmlldyB0YWJsZU5hbWUpCiB7CiAgICAgcmV0dXJuICF0YWJsZVNRTCh0YWJsZU5hbWUpLmlzRW1w
dHkoKTsKIH0KIAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChjb25zdCBTdHJpbmcm
IHRhYmxlTmFtZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoU3RyaW5nVmlldyB0
YWJsZU5hbWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTQ0Myw3ICs0MzgsNyBAQCBTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CiB9
CiAKLVN0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoY29uc3QgU3RyaW5nJiBpbmRleE5h
bWUpCitTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OmluZGV4U1FMKFN0cmluZ1ZpZXcgaW5kZXhOYW1l
KQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGQ0MTRiOWE2Y2EzNjM2
MWY3YjExNzExNzZhMWU5NGQ0MWNiOWU4M2IuLjkxNjAxMzQ4MTc1OTIxM2FhNTJkMTk4YTQ3ZTJl
NWM0ZDZhOTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTUUxp
dGVEYXRhYmFzZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZSgpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGNoYXIqIGluTWVtb3J5UGF0aCgpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGluTWVtb3J5UGF0aCgpIHsgcmV0dXJuICI6
bWVtb3J5OiJfczsgfQogCiAgICAgZW51bSBjbGFzcyBPcGVuTW9kZSB7IFJlYWRPbmx5LCBSZWFk
V3JpdGUsIFJlYWRXcml0ZUNyZWF0ZSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3Blbihj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSA9IE9wZW5Nb2RlOjpSZWFkV3JpdGVDcmVh
dGUpOwpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBl
eGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgdGFibGVFeGlzdHMoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHRhYmxlU1FMKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBp
bmRleFNRTChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRhYmxlRXhp
c3RzKFN0cmluZ1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0YWJsZVNRTChTdHJp
bmdWaWV3KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaW5kZXhTUUwoU3RyaW5nVmlldyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRhYmxlcygpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1
bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDcyZDRhODc0OWEwOGQwYTczODM0ODY0
ZjZmNmYzOGRmNTQ5NDQ4MjMuLmVjMGQxY2VlNWJhMWEwODgwNTAwMGZmNzBkNzQ2NDY1MDM2ZDc1
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3Rl
bS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1FMaXRlRmlsZVN5c3RlbTo6U1FMaXRlRmlsZVN5c3Rl
bSgpCiB7CiB9CiAKLVN0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVO
YW1lVG9QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKK1N0
cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKFN0cmlu
Z1ZpZXcgcGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSkKIHsKICAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKIH0KQEAgLTEyOCw3
ICsxMjgsNyBAQCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxpdGVGaWxlU3lzdGVtOjpkYXRh
YmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBGaWxlU3lzdGVt
OjpmaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSk7CiB9CiAgICAgCi1TdHJpbmcgU1FMaXRl
RmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQorU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5n
VmlldyBmaWxlTmFtZSkKIHsKICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAg
YXV0byB1dGY4RmlsZU5hbWUgPSBmaWxlTmFtZS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCA2NGYxYTJjMTJhOTExYWViMGFk
YzU5ZWZiYmNlNTM5MDliOTU5NTZjLi41MzQyNzEwZjdiYmQyMTlhZDdiZGVmMDc0ZDBkM2M2NDky
MzM2OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gcGF0aCAtIFRo
ZSBkaXJlY3RvcnkuCiAgICAgLy8gZmlsZU5hbWUgLSBUaGUgZmlsZSBuYW1lLgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChTdHJpbmdWaWV3
IHBhdGgsIFN0cmluZ1ZpZXcgZmlsZU5hbWUpOwogCiAgICAgLy8gTWFrZXMgc3VyZSB0aGUgZ2l2
ZW4gZGlyZWN0b3J5IGV4aXN0cywgYnkgY3JlYXRpbmcgYWxsIG1pc3NpbmcgZGlyZWN0b3JpZXMK
ICAgICAvLyBvbiB0aGUgZ2l2ZW4gcGF0aC4KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gTW92ZXMgYSBkYXRhYmFzZSBmaWxlIHRvIGEgbmV3IHBsYWNlLgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIG1vdmVEYXRhYmFzZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRGaWxl
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdGaWxlUGF0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUhhc2hGb3JGaWxlTmFt
ZShTdHJpbmdWaWV3IGZpbGVQYXRoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ly8gVHJ1bmNhdGVzIGEgZGF0YWJhc2UgZmlsZS4gVXNlZCB3aGVuIE1vYmlsZVNhZmFyaVNldHRp
bmdzIGRlbGV0ZXMgYSBkYXRhYmFzZSBmaWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggNGNiNDhmNDgwMzdmMGMxNjEyOTgx
ZTFiMzczMTg5MDM4ODFmZDEwOC4uZTYxNjZkOWM3YTkxZTZhYmUxMDRhYmY5MWQ3NDE2ODY3ZmQy
YzFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51REIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNlYXJjaFBvcHVwTWVudURCJiBTZWFyY2hQb3B1
cE1lbnVEQjo6c2luZ2xldG9uKCkKIH0KIAogU2VhcmNoUG9wdXBNZW51REI6OlNlYXJjaFBvcHVw
TWVudURCKCkKLSAgICA6IG1fZGF0YWJhc2VGaWxlbmFtZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJhdXRvc2F2ZS1zZWFyY2guZGIiKSkKKyAgICA6IG1fZGF0YWJhc2VGaWxlbmFtZShG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJhdXRvc2F2ZS1zZWFyY2guZGIiX3MpKQogewog
fQogCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tEYXRh
YmFzZVZhbGlkaXR5KCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CiAKLSAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIlNlYXJjaCIpKQorICAgIGlmICghbV9kYXRh
YmFzZS50YWJsZUV4aXN0cygiU2VhcmNoIl9zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgYXV0byBpbnRlZ3JpdHkgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBx
dWlja19jaGVjazsiX3MpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIGJvb2wgU2VhcmNoUG9wdXBNZW51
REI6Om9wZW5EYXRhYmFzZSgpCiAgICAgdmVyaWZ5U2NoZW1hVmVyc2lvbigpOwogCiAgICAgYm9v
bCBkYXRhYmFzZVZhbGlkaXR5ID0gdHJ1ZTsKLSAgICBpZiAoIWV4aXN0c0RhdGFiYXNlRmlsZSB8
fCAhbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiU2VhcmNoIikpCisgICAgaWYgKCFleGlzdHNEYXRh
YmFzZUZpbGUgfHwgIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIlNlYXJjaCJfcykpCiAgICAgICAg
IGRhdGFiYXNlVmFsaWRpdHkgPSBkYXRhYmFzZVZhbGlkaXR5ICYmIChleGVjdXRlU1FMU3RhdGVt
ZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChjcmVhdGVTZWFyY2hUYWJsZVNRTCkpID09
IFNRTElURV9ET05FKTsKIAogICAgIGlmICghZGF0YWJhc2VWYWxpZGl0eSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBmZjBlOTFj
Y2Y0YzA4N2UzZGU2YjM1MTE3NDgzZTQ0YjdhMzAxMTE2Li5mYmQ4YmRmOGExNjM4Zjg1YTRiNjBl
NDc0NjQyOGM1N2FmNWY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMzOCw3ICszMzM4LDcgQEAgc3RhdGljIFJlZlB0cjxQ
YXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uLCBGbG8KICAgICAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlwdGlv
biksIDAsIDApOwogICAgICAgICBmb250LnVwZGF0ZShudWxscHRyKTsKIAotICAgICAgICBUZXh0
UnVuIHRleHRSdW4gPSBUZXh0UnVuKGRlc2NyaXB0aW9uLm5hbWUpOworICAgICAgICBUZXh0UnVu
IHRleHRSdW4gPSBUZXh0UnVuKFN0cmluZ1ZpZXcgeyBkZXNjcmlwdGlvbi5uYW1lIH0pOwogICAg
ICAgICBpbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKGRlc2NyaXB0aW9uLmZpbGxDb2xvcik7CiAK
ICAgICAgICAgY29uc3RleHByIGZsb2F0IHRleHRHYXAgPSA0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAppbmRleCA5NzZkODBiODUwODViNDZmZTdlYWUwN2Q5MDBkMTYyN2NkMjkzMjk4Li5m
MTQ4YTNkYWViMWM3NTAxNjI1MjMxNjk0ZmY1ODQ1NTg0ZWE1OWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJh
c2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKIAogU3Ry
aW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2Rh
dGFiYXNlRGlyZWN0b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7ICJT
Y3JpcHRzIl9zLCAiVjEiX3MgfSk7CiB9CiAKIFNXU2NyaXB0U3RvcmFnZSYgUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDc1ZDk4YTky
Njc2ODUwY2VjYjI0Yjk4OTJkMGQzNmEzMGE2MmIyMzUuLmExNTFjZDJhYTY2MjRjZGFlZWY4ZDk2
YTNjNzQzMzJjZWFkOGU1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
U3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6c2hhMkhhc2goY29uc3QgVVJMJiBpbnB1dCkgY29uc3QK
IAogU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6c2FsdFBhdGgoKSBjb25zdAogewotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kaXJlY3RvcnksICJzYWx0
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Rp
cmVjdG9yeSwgInNhbHQiX3MpOwogfQogCiBTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpyZWdpc3Ry
YXRpb25EaXJlY3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZDY0Y2NjMGI2
MDE4YzdmZTc0NmU3YWNmZTYxMGZjZTRmOWIwNjVjNS4uNmRiNjQ0MGNmOTZkOTJhYzJkN2Y1YmUx
ZDUyMjNhZTA1YTAxNzFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0xMjMsNyAr
MTIzLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHIKICAgICAgICAgU3RyaW5nIHJlcXVlc3Rh
YmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpS
RVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNpb25z
LCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBD
OjpTZW1hcGhvcmUgeyB9LCAiIiwgIiIpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpTZW1hcGhvcmUg
eyB9LCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBjYzYxNTI0
NzkzYzBmMTFjZmViOGQ0YTg0ZWNmYTlhZjRlNmUyYWE3Li44N2JhZDg1OWNlY2UzMDNkODVjNWQw
MWVmNGRlOGQyOWQ0NDM5YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBzdGF0aWMgSGFz
aFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBhbGxTdG9yZXMoKQog
CiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwg
U3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBz
aG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRo
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoc3RvcmUsIHdvcmtRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKLSAgICAsIERh
dGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9y
YWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiIpKQorICAgICwgRGF0YWJhc2VVdGls
aXRpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnlQYXRoLCAib2JzZXJ2YXRpb25zLmRiIl9zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25J
RCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQyNCw4ICs0MjQsOCBA
QCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpuZWVkc1VwZGF0ZWRT
Y2hlbWEoKQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdy
YXRlRGF0YVRvUENNRGF0YWJhc2VJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCF0YWJsZUV4aXN0
cygiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiKQotICAgICAgICAmJiAhdGFi
bGVFeGlzdHMoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpKQorICAgIGlmICgh
dGFibGVFeGlzdHMoIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKQorICAg
ICAgICAmJiAhdGFibGVFeGlzdHMoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJf
cykpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4gdW5hdHRyaWJ1dGVkOwpAQCAtMjUwMyw3ICsyNTAzLDcgQEAgYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0Nv
dW50KGNvbnN0IFJlZ2kKICAgICByZXR1cm4gKHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNvdW50LT5j
b2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3VudC0+Y29sdW1u
SW50KDApID09IDEgJiYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby0+Y29sdW1uSW50KDAp
ID09IDEpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVu
ZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29s
IGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/
ICJZZXMiIDogIk5vIik7CiB9CkBAIC0yNTMxLDMxICsyNTMxLDMxIEBAIFN0cmluZyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklE
KHVuc2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQVNDSUlMaXRlcmFsIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29u
c3QgU3RyaW5nJiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChBU0NJSUxpdGVy
YWwgdGFibGVOYW1lKSBjb25zdAogewotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWlucyIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIl9zKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BM
ZXZlbERvbWFpbklEIGZyb20gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJF
IGRvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvIikKKyAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvIl9zKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRh
YmxlTmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikKKyAgICBpZiAodGFibGVO
YW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MpCiAgICAgICAgIHJldHVybiAi
U0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVS
RSB0YXJnZXREb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIikKKyAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb20iX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBm
cm9tIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyJfczsK
LSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIikK
KyAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIl9z
KQogICAgICAgICByZXR1cm4gIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyJfczsK
LSAgICBpZiAodGFibGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAg
ICBpZiAodGFibGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zKQogICAg
ICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFi
bGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAodGFi
bGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zKQogICAgICAgICBy
ZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFi
bGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIikKKyAgICBpZiAodGFibGVO
YW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zKQogICAgICAgICByZXR1cm4g
IlNFTEVDVCB0b0RvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVS
RSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJv
bURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1YnJl
c291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIAogICAgIHJldHVybiAiIl9zOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNM
aXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25z
dCBTdHJpbmcmIGRvbWFpbikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
QVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiB7CiAg
ICAgYXV0byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUpOwogICAg
IApAQCAtMjYwMyw3ICsyNjAzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAgICBidWls
ZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCBkb21haW4sICdcbicpOwogICAgIAog
ICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRV
c2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+
Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihi
dWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWlu
TmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9u
KFNlY29uZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkRv
dWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQpAQCAtMjYxMSwzNCAr
MjYxMSwzNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNv
dXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGVsc2UKICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5k
Qm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21h
aW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7CisgICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgbV9nZXRSZXNvdXJjZURhdGFC
eURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0gICAgYXBw
ZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVE
b21haW5zIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJT
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAvLyBU
b3AgZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNM
aXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50IiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxk
ZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOwotICAgIGFwcGVuZFN1
YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIsIGRv
bWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2Fk
ZWRUaGlyZFBhcnR5U2NyaXB0cyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlz
dChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgZG9tYWluKTsKKyAgICBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
U2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBkb21haW4pOworICAgIGFwcGVuZFN1
YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywg
ZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb20iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlz
dChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgZG9tYWluKTsK
IAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29s
dW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCkpOworICAg
IGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5J
bnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwotICAgIGFwcGVuZFN1
YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiLCBk
b21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0
cwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMiLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVp
bGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAgIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBkb21h
aW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbSJfcywgZG9tYWluKTsKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJj
ZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2UiLCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzUHJldmFsZW50
SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJlc291cmNl
Il9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElz
UHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBhcHBlbmRC
b29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgp
KTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSJf
cywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1Zl
cnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDgxMWJiZjk3MGVhYzZmYTcwZGFhMDk3
MmI1NjlkNWU5ZjgyZjE5MDkuLmYyMmJmMWY0YjA1OTFjNzM4YTJlMjliY2Y4NDhhYTBhYjUyMWMy
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oCkBAIC0xMzgsOCArMTM4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVk
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFuZFVwZGF0
ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRCh1bnNpZ25lZCkgY29uc3QgZmluYWw7Ci0gICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0YXRp
c3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIGFwcGVuZFN1YlN0
YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25z
dCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CisgICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0YXRpc3Rp
Y1N0YXRlbWVudChBU0NJSUxpdGVyYWwpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChTdHJpbmdCdWlsZGVyJiwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJEYXRh
YmFzZUNvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCmluZGV4IDJkNWIwMjc3YjI5ZTEwNmY5Y2ZkNmRhZDJhY2UzOTVhYjg3MTE5M2Qu
LjllODJhMzlhNzFkYjI1MDk2YjkxYTAyZDM2YmUxNDAzZTUyNDBhYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAgICAgcG9zdFRhc2soW3RoaXMsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBzZXNzaW9uSUQgPSBu
ZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKV0gewogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhp
cywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNlc3Npb25JRCk7CiAKLSAgICAgICAgICAgIGF1dG8gbGVn
YWN5UGxpc3RGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jl
c291cmNlTG9nLnBsaXN0Iik7CisgICAgICAgICAgICBhdXRvIGxlZ2FjeVBsaXN0RmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCJf
cyk7CiAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhsZWdhY3lQbGlzdEZp
bGVQYXRoKSkKICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGxlZ2FjeVBs
aXN0RmlsZVBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZiOTMyZGJh
ZDQ0MGI1NTE1NTg0MjdkNDBkNmQyMmFkZDBkMzNjMDcuLmU0ZWEwM2MxMWI2YmIzZmZlM2Y4MGQy
ZjNiNzhmYjlhMzk4YzU2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03ODks
NyArNzg5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFMKICNpZiBFTkFCTEUoSU5URUxMSUdF
TlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9u
LT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0
aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iX3MsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwg
cGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CkBAIC04MDQsNyArODA0
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb24KICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJB
Q0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91
bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOworICAg
ICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhp
cywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSJfcywg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlE
LCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCA2
ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0Li42NzRiOTg1NTM1N2MxMGMz
YTNjYzg3ZDA2Mzc3YjE3MTc2NDA2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTYxLDExICs2MSwxMSBAQCBz
dGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBjb25zdCBp
bnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1ZXN0ZWRS
YW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50ZXJuYWxF
cnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCI7
Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxvd2VkIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVRleHQg
PSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3QgY2hhciog
aHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVUZXh0ID0g
IlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJfczsKIAog
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRC
bG9iUmVzb3VyY2UiX3M7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29kZSkKICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKCV1KSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlcnJvckNv
ZGUpKTsKIAogICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tCbG9iPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBl
cnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiIgOiBleHRyYWN0TUlNRVR5
cGVGcm9tTWVkaWFUeXBlKG1fYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCkpLCBlcnJvckNvZGUgIT0g
RXJyb3I6Ok5vRXJyb3IgPyAwIDogbV90b3RhbFJlbWFpbmluZ1NpemUsIFN0cmluZygpKTsKKyAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBlcnJvckNv
ZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiJfcyA6IGV4dHJhY3RNSU1FVHlwZUZy
b21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSksIGVycm9yQ29kZSAhPSBFcnJv
cjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwogICAgIHN3
aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBFcnJvcjo6Tm9FcnJvcjogewogICAgICAgICBi
b29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAhPSBrUG9zaXRpb25Ob3RTcGVjaWZp
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDc4OGVkY2U2OTBiYzhkZDAxZjUzZTdmM2ZjZDBkOWQ0MzRlZTAxOTYuLmI1ZmU5NjJi
MTRmZWUwYzQ4OTFjMzFiMDQ2MjAzNzc1YmJiNmFmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzUyLDcgKzIzNTIsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3NpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0g
ICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiIpOworICAgIGNhbGxiYWNr
KCJDYW5ub3QgZmluZCBuZXR3b3JrIHNlc3Npb24iX3MpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAzMmEwNmQ0OTQ2M2QzODhjZTYyZTM2YTg2YmI4YTg0MGE2YWFiOTEyLi41N2MxYjFiNjkzZDcx
NWJlMTJlYWQ2YzZmZDU5NjUxMjk3YzMyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTk0LDEwICsx
NTk0LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlv
bigpIGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25uZWN0aW9u
LT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAgICBBU1NF
UlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1f
Y29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3Qo
KS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJl
cXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRw
UmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7CisgICAg
bG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVy
Il9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNp
dGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCks
IGNvcmVJZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3N0
YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHN0YXRpYyB2
b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2FwZUlERm9y
SlNPTihpZGVudGlmaWVyKTsKICAgICBhdXRvIGVzY2FwZWRSZWZlcnJlciA9IGVzY2FwZUZvckpT
T04ocmVmZXJyZXIpOwogCi0jZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0
LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAl
czo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJHU19f
KQogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxMT1dF
RCgibG9nQ29va2llSW5mb3JtYXRpb246IEJMT0NLRUQgY29va2llIGFjY2VzcyBmb3Igd2ViUGFn
ZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlEPSVzLCBmaXJzdFBhcnR5PSVzOiAiIHN0ciwg
ZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCkuZGF0YSgp
LCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRmlyc3RQYXJ0eS51dGY4
KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBzdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRp
YyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxv
Z2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5z
ZXNzaW9uSUQoKSkpOwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29r
aWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aQogICAgIGF1dG8gZXNjYXBlZElkZW50aWZpZXIgPSBlc2NhcGVJREZvckpTT04oaWRlbnRp
Zmllcik7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gKGZyYW1lSUQgJiYgcGFnZUlEKSA/
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0
eSB9LCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6IGZhbHNlOwogCi0jZGVmaW5l
IExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3Rv
cmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAj
I19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVjdCwg
bGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9MT0coc3Ry
LCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3JtYXRpb246
IHdlYlBhZ2VJRD0lcywgZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0lczogIiBzdHIsIGVzY2FwZWRQ
YWdlSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBl
ZElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTY4NSw3ICsx
Njg1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxM
T1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRp
b24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRP
YmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5l
Y3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA2NWNlYzljZDNjMjRkNGJjN2UzNDBkNzlkYTVkY2Q4MmZkNjYxODQ0Li4yZmI5ZmFkNDU1YTM5
YjIwMTE3NjdiZWUzNzcxNzBjMzU3NjRjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0MCw3ICsxNDAsNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikg
JiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25J
RCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRP
YmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKKyAgICBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEFTQ0lJ
TGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyPik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggZDZiYzA5MDEyMDMzMWY4
MzA2MGJjZGE2MTRkOTMyYWE1OWEyMWNhMC4uYWQ2ZmNmMTJmMTI3ZDg1MGM3MzRlMThmZjA1NTQ2
ZWEyZjI3NjBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0
YXRpYyBIYXNoU2V0PERhdGFiYXNlKj4mIGFsbERhdGFiYXNlcygpCiB9CiAKIERhdGFiYXNlOjpE
YXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgOiBEYXRhYmFzZVV0
aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVj
dG9yeSwgInBjbS5kYiIpKQorICAgIDogRGF0YWJhc2VVdGlsaXRpZXMoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJwY20uZGIiX3MpKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG9wZW5EYXRhYmFzZUFuZENyZWF0
ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CkBAIC00ODksMTQgKzQ4OSwxNSBAQCB2b2lkIERhdGFiYXNl
OjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVn
aXN0cmFibGVEbwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgLy8gRGVm
YXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVkLgotICAg
IFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOworICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyOwog
ICAgIGlmIChkb21haW4pIHsKICAgICAgICAgYXV0byBkb21haW5JRFRvTWF0Y2ggPSBkb21haW5J
RCgqZG9tYWluKTsKICAgICAgICAgaWYgKCFkb21haW5JRFRvTWF0Y2gpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0cmluZzo6bnVtYmVyKCpkb21haW5J
RFRvTWF0Y2gpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgYmluZFBhcmFtZXRlciA9ICIl
Il9zOwogCiAgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVj
ZXNzYXJ5KCk7CiAKQEAgLTcxMiwxNyArNzEzLDE3IEBAIHZvaWQgRGF0YWJhc2U6OmRlc3Ryb3lT
dGF0ZW1lbnRzKCkKIAogdm9pZCBEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJ
Zk5lY2Vzc2FyeSgpCiB7Ci0gICAgU3RyaW5nIGF0dHJpYnV0ZWRUYWJsZU5hbWUoIkF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAgY29uc3RleHByIGF1dG8gYXR0cmli
dXRlZFRhYmxlTmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3M7CiAg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKCJkZXN0aW5hdGlvbktleUlEIl9z
KTsKICAgICBhdXRvIGNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRhYmxlTmFt
ZSk7CiAgICAgaWYgKCFjb2x1bW5zLnNpemUoKSB8fCBjb2x1bW5zLmxhc3QoKSAhPSBkZXN0aW5h
dGlvbktleUlEQ29sdW1uTmFtZSkgewogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShh
dHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25Ub2tlbiBURVhUIl9zKTsKICAgICAgICAg
YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRlc3RpbmF0aW9u
U2lnbmF0dXJlIFRFWFQiX3MpOwotICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRy
aWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25LZXlJRCBURVhUIik7CisgICAgICAgIGFkZE1p
c3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvbktleUlE
IFRFWFQiX3MpOwogICAgIH0KIH0KIAotVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNG
b3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IERhdGFiYXNl
Ojpjb2x1bW5zRm9yVGFibGUoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSkKIHsKICAgICBhdXRvIHN0
YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiUFJB
R01BIHRhYmxlX2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKIApAQCAtNzQxLDcgKzc0Miw3IEBA
IFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUpCiAgICAgcmV0dXJuIGNvbHVtbnM7CiB9CiAKLXZvaWQgRGF0YWJhc2U6OmFkZE1p
c3NpbmdDb2x1bW5Ub1RhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcm
IGNvbHVtbk5hbWUpCit2b2lkIERhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShBU0NJ
SUxpdGVyYWwgdGFibGVOYW1lLCBBU0NJSUxpdGVyYWwgY29sdW1uTmFtZSkKIHsKICAgICBhdXRv
IHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygi
QUxURVIgVEFCTEUgIiwgdGFibGVOYW1lLCAiIEFERCBDT0xVTU4gIiwgY29sdW1uTmFtZSkpOwog
ICAgIGlmICghc3RhdGVtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCmluZGV4IDJmYjdkMjU2OWVk
MzhhNTgyMzhhMjgwMGVlMjQ4YjU3ZjRlNmQ3ZmUuLmU3MWQ0MGJkNDk4NTllYmMzZWFhMzM4Y2Q1
ZWI4YjA1MmNiY2NkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCkBAIC04Miw4ICs4Miw4IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVz
KCkgZmluYWw7CiAgICAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNvcnRlZFRhYmxlcygpIGZp
bmFsOwogCi0gICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbHVtbk5hbWUpOworICAgIFZlY3RvcjxTdHJp
bmc+IGNvbHVtbnNGb3JUYWJsZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKTsKKyAgICB2b2lkIGFk
ZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJTGl0ZXJh
bCBjb2x1bW5OYW1lKTsKIAogICAgIHVzaW5nIFN0YXRlbWVudCA9IHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1fc2V0VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5jcHAKaW5kZXggMmE4MmExMTVhMWI5YmFkNThiYTg2OGU1NWU1NzdjZjlmNTcz
ZDE0NS4uZTJiNjM3YmQ5NjgxNzI4Y2UxYmFhN2U3MDMzZTFiZjQ2Mzg3ZWNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbihTb3Vy
CiAKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNh
bGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oKnNpZ25hdHVyZUJhc2U2NFVS
TCwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4pOwog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVz
c2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5lcnJv
cigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCku
aXNFbXB0eSgpID8gIlVua25vd24iX3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xs
b3dpbmcgZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oKTogJyV7
cHVibGljfXMiLCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1h
a2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSYmCiAKICAgICAgICAgICAgIGlmIChwdWJsaWNLZXlCYXNlNjRVUkwuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIlRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7Ci0gICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3Is
ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVGhlIHB1YmxpYyBrZXkgVVJMIHdhcyBlbXB0
eS4iKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUaGUgcHVi
bGljIGtleSBVUkwgd2FzIGVtcHR5LiJfcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJgog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkgPyAi
VW5rbm93biIgOiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVz
c2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIl9zIDogcmVzdWx0LmVy
cm9yKCk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZURl
c3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA1ZTFmYWIwOTRlMzczMTVkZWEz
NDYwMWIxNzk0MWE1OWVlZmEzN2NiLi4xNDkyYzMxMDUxYWUzZDU2OWU0ODQ2ZjA1ZWU0MDE1ZmI2
MTYzNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3Nh
cnkoKQogYm9vbCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVk
KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIW1fZGF0YWJh
c2UudGFibGVFeGlzdHMoIkl0ZW1UYWJsZSIpKQorICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4
aXN0cygiSXRlbVRhYmxlIl9zKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRvIHF1
ZXJ5ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUgRlJPTSBJdGVt
VGFibGUgTElNSVQgMSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDNhYWEzYzQ4MGU1ZjZhOTUzMGRmOGQ4Y2NlYmEyZTU3OWUwMDI4MTAuLmUw
OWQyZTlmMzZjYWIyNWMxNzU0MWM4NzQ5NmZmMjliOTFhMDUzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcjo6fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpCiAKIFN0
cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdAogewotICAgIHJldHVybiBkYXRh
YmFzZVBhdGgoc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLmxvY2Fsc3Rv
cmFnZSIpOworICAgIHJldHVybiBkYXRhYmFzZVBhdGgobWFrZVN0cmluZyhzZWN1cml0eU9yaWdp
bi5kYXRhYmFzZUlkZW50aWZpZXIoKSwgIi5sb2NhbHN0b3JhZ2UiKSk7CiB9CiAKIHZvaWQgTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkaWRPcGVuRGF0YWJhc2VXaXRoT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCkBAIC0xMjksNyArMTI5LDcgQEAg
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKICAgICB9KTsKIH0KIAotU3RyaW5nIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNv
bnN0CitTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoU3Ry
aW5nVmlldyBmaWxlbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IHRoaXMtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghU1FMaXRlRmlsZVN5
c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMobG9jYWxTdG9yYWdlRGlyZWN0b3J5
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IDViYzEz
ZWMzNmY1ZDJhOTZmYzYxZTcwMjJjMWM4YTFlNWM3OTFhNGIuLjZkNmEwNWM4OWE3NTE2MzlmNTJi
ODUwYjE5NmUzMTVmYjY4MGI2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIAot
ICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgY29uc3Q7Cisg
ICAgU3RyaW5nIGRhdGFiYXNlUGF0aChTdHJpbmdWaWV3IGZpbGVuYW1lKSBjb25zdDsKICAgICBT
dHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICBlbnVtIERhdGFiYXNl
T3BlbmluZ1N0cmF0ZWd5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA0MWNjNGQ5MjEwYWMxNDg4
ODVmYTIzNGJkMDkxMjkyMWYzZGMwMDVmLi4yZDgzNTkwMDEyMDMwNTJmMTY2MzM5OThlNDQwYzNi
NWY2YTZkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgU3RyaW5n
IEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmkKICAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJzYWx0Iik7Cisg
ICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJvb3REaXJlY3RvcnksICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpy
ZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6
ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJvb3RQYXRoID0gbV9yb290
UGF0aC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3Rvcmllcyhyb290UGF0aCk7Ci0gICAgICAgIFN0cmluZyBzYWx0UGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwgInNhbHQiKTsKKyAg
ICAgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2FsdCA9IEZpbGVTeXN0ZW06
OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwCmluZGV4IGZkYTg1NGRlMzhhYmFhNGZlNDMxNzkxNjA1Y2M3NDg2ZDk2ZGI3M2EuLjc3
YWQwMGJiYWVhNTJkZWI3MzE0ZjA3ODkxNDljNDhlZTQ4NzFhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAKQEAgLTQzLDE3ICs0MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlOwogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgs
ICJjYWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3JpZ2lu
RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2lu
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNo
ZXNSb290UGF0aCwgIm9yaWdpbiJfcyk7CiB9CiAKIFN0cmluZyBDYWNoZXM6OmNhY2hlc1NpemVG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RzUGF0aCkKIHsKLSAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RzUGF0aCwgImVzdGlt
YXRlZHNpemUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNhY2hlc1Jvb3RzUGF0aCwgImVzdGltYXRlZHNpemUiX3MpOwogfQogCiBSZWY8Q2FjaGVz
PiBDYWNoZXM6OmNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
b3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBmODZkMTQzYjRlZTc4NjhmYTcx
ZGU3MDk4NjE0MDE5NDkzODY5OWI2Li5mNWRkMzFmZmI1OTllY2YxMzNlYTA3M2FlYThhZDY3MTYy
MThkZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5LCBS
ZWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgICAgICAv
LyBUcmlnZ2VycyB3aXRoICJ0b3VjaCAkY2FjaGVQYXRoL2R1bXAiLgotICAgICAgICBDU3RyaW5n
IGR1bXBGaWxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aElzb2xhdGVkQ29weSgpLCAiZHVtcCIpKTsKKyAg
ICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGhJc29sYXRlZENvcHkoKSwg
ImR1bXAiX3MpKTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZHVtcEZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aChkdW1wRmlsZVBhdGguZGF0YSgpKSk7CiAgICAgICAgIEdGaWxl
TW9uaXRvciogbW9uaXRvciA9IGdfZmlsZV9tb25pdG9yX2ZpbGUoZHVtcEZpbGUuZ2V0KCksIEdf
RklMRV9NT05JVE9SX05PTkUsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQobW9uaXRvciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGR1bXBGaWxlQ2hh
bmdlZCksIHRoaXMpOwpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1
bmN0aW9uPHZvaWQoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0cmF2ZXJzZUhhbmRsZXIpCiAK
IFN0cmluZyBDYWNoZTo6ZHVtcEZpbGVQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+dmVyc2lvblBhdGgoKSwgImR1bXAuanNvbiIp
OworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9u
UGF0aCgpLCAiZHVtcC5qc29uIl9zKTsKIH0KIAogdm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9G
aWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggYzIzNDlhMDgyYjU2OGRlYmUz
ZmE1NmQzNThkNTVkZDljNjg4ZjYyNC4uZjRlNjFkNjA1MmIzNmQ3NDg0OWJiZTY2YWMyMjBmNmY0
YThlMDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTEyMyw4ICsxMjMsNyBA
QCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGgg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAgYXV0byBk
YXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUo
cGF0aCk7CiAKICAgICByZXR1cm4geyBkYXRhLCBjb21wdXRlU0hBMShkYXRhLCBtX3NhbHQpIH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmNwcAppbmRleCBhZWUxMDJiZWM1MWJiMzQ2OTAyM2ZhNzc5NWE4MjI3NDgx
MzJmMjY2Li5hOTE2OThkNWRjNDJkODZjMjk3NzI3MGI3NGZlM2IxODVjNWU1YzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RGF0YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKSBjb25zdAogICAgIHJldHVybiBEYXRhOjphZG9wdE1hcChXVEZNb3ZlKG1hcHBl
ZEZpbGUpLCBoYW5kbGUpOwogfQogCi1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCkKK0Rh
dGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYXV0byBmaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCkBAIC02NCwxMSArNjQsNiBA
QCBEYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCkKICAgICByZXR1cm4gYWRvcHRBbmRNYXBG
aWxlKGZpbGUsIDAsICpzaXplKTsKIH0KIAotRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gbWFwRmlsZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKLX0KLQogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUp
CiB7CiAgICAgaWYgKCFzaXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCmluZGV4IDMyODMyOTc2NzhjMTU0ZWU0OTA3
ZDMxNDkzY2JmN2Y4ZjAwM2NiYzAuLjEyNDkyNTllNGIwNTI2OTQ1YmM1NDVmMmY2NGExNDI3YjVl
NTYwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5oCkBAIC0xMTEsNyArMTExLDYgQEAgcHJpdmF0ZToKIERhdGEgY29u
Y2F0ZW5hdGUoY29uc3QgRGF0YSYsIGNvbnN0IERhdGEmKTsKIGJvb2wgYnl0ZXNFcXVhbChjb25z
dCBEYXRhJiwgY29uc3QgRGF0YSYpOwogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwotRGF0YSBtYXBGaWxl
KGNvbnN0IGNoYXIqIHBhdGgpOwogRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAK
IHVzaW5nIFNhbHQgPSBGaWxlU3lzdGVtOjpTYWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
MDkxY2EzYTA3MDUwNzVmYTc3ZDM4ODY1YjlmZTRhN2U0NDRmYjA5Yi4uYjFlNmZmM2MwNzhiZTg3
MWQ5NTEwZmEzNzZjNDcwMGUzM2MxOWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgc3RhdGljIFN0cmluZyBtYWtlQ2FjaGVQYXRoKGNvbnN0IFN0cmluZyYgYmFz
ZUNhY2hlUGF0aCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gUHV0IGRldmVsb3BtZW50IGNh
Y2hlIHRvIGEgZGlmZmVyZW50IGRpcmVjdG9yeSB0byBhdm9pZCBhZmZlY3RpbmcgdGhlIHN5c3Rl
bSBjYWNoZS4KICAgICBpZiAoIUF1eGlsaWFyeVByb2Nlc3M6OmlzU3lzdGVtV2ViS2l0KCkpCi0g
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNh
Y2hlUGF0aCwgIkRldmVsb3BtZW50Iik7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlUGF0aCwgIkRldmVsb3BtZW50Il9zKTsKICNl
bmRpZgogICAgIHJldHVybiBiYXNlQ2FjaGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlci5tbQppbmRleCA0MzIyZTQ0ZThlYTA2M2MzZGFhOGUyYzZkZTdhNWEwODVm
NWE4MWU4Li40MmY4ODgyNTA0NzZiZWQ3MzI0YjY3MjNiMzc0OTJmOGY1NWZkYmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQpAQCAtMTQyLDggKzE0Miw4IEBAIHZv
aWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb24sIHhwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHhw
Y19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAgICBTdHJp
bmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4cGNNZXNz
YWdlTmFtZUtleSk7Ci0gICAgICAgIGlmIChtZXNzYWdlTmFtZSAhPSBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFzZVVwZGF0
ZU1lc3NhZ2VOYW1lKQorICAgICAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYgKExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUgIT0gbWVzc2FnZU5hbWUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1h
bmFnZXIuY3BwCmluZGV4IDBhN2U0ZDNjNDcxOWQyODZjN2I5YmM1YjNlMzMxM2VhZmFlYmFiYzgu
LmU4ODE5MzA3ZTJkNGFhNTQ1MDJjNTZiMGJlYmI4NjRhODkzOTcyZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5h
Z2VyLmNwcApAQCAtMTIyLDggKzEyMiw4IEBAIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiBJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QKICAgICBp
ZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBvcmlnaW5zOwogCi0g
ICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJvb3REaXJlY3RvcnksICJ2MCIpLCBvcmlnaW5zKTsKLSAgICBnZXRPcmlnaW5zRm9yVmVy
c2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwg
InYxIiksIG9yaWdpbnMpOworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAidjAiX3MpLCBvcmlnaW5zKTsK
KyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocm9vdERpcmVjdG9yeSwgInYxIl9zKSwgb3JpZ2lucyk7CiAKICAgICByZXR1cm4gb3Jp
Z2luczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjZDJjNTFmNTE5YzRjMGNkMTcx
OGJiNWZlOTE3YmY3Njc4MzFjYzliLi4yNmJjOTA3OWJiMmY5NmRlNzlhZDA1MTlkNzcyYTBjMGIx
NjVhYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFN0cmlu
ZyBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSkKICAgICBpZiAoZGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgU3RyaW5nVmlldyB7IHNfZmlsZU5hbWUgfSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHNfZmls
ZU5hbWUpOwogfQogCiBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VNYW5hZ2VyKGNv
bnN0IFN0cmluZyYgcGF0aCwgU3RvcmFnZUFyZWFSZWdpc3RyeSYgcmVnaXN0cnkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYxZWVjYjRhYzA0ZmIxODhhNzY1MzAwYTU2M2FkODgw
ZDljMDg3MjAuLmY5YmIyODVjMmU0MWE0ZDE4OGUwNTA0N2Y4ZTczMDIwYzBlOGYyN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBJUEM6OkNvbm4KICAgICAgICAgbV9jdXN0b21JREJTdG9yYWdlUGF0aCA9IGN1c3RvbUlEQlN0
b3JhZ2VQYXRoOwogICAgICAgICBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBjdXN0b21DYWNo
ZVN0b3JhZ2VQYXRoOwogICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9wYXRoLCAic2FsdCIpOworICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Il9zKTsKICAgICAgICAgICAg
IG1fc2FsdCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQ
YXRoKSk7CiAgICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlMWU2YjE2M2MwMjAwMTE2ZmZmNTc2YjE1OWUxYjc4
Y2JjYWNiZDdmLi5jNDJhMTM5NDIzNWI4ZWQxYjBlOTJlZjg3MGU0OWZjZWFlNDY4MzZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yMDgs
NiArMjA4LDMyIEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8U3RyaW5n
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmdW
aWV3Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAg
IC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCisgICAgaWYgKHN0cmluZy5pc051bGwo
KSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQzMl90IGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKKyAgICBib29sIGlzOEJpdCA9IHN0cmluZy5pczhCaXQoKTsKKworICAg
IGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKKworICAgIGlmIChpczhCaXQpCisgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGggKiBzaXplb2YoTENoYXIpLCBhbGlnbm9mKExDaGFyKSk7CisgICAgZWxzZQorICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGln
bm9mKFVDaGFyKSk7Cit9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZ1ZpZXc+
OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIFN0cmluZ1ZpZXcpOwordGVtcGxhdGUKK3ZvaWQg
QXJndW1lbnRDb2RlcjxTdHJpbmdWaWV3Pjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
PihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIFN0cmluZ1ZpZXcpOwordGVtcGxhdGUKK3ZvaWQg
QXJndW1lbnRDb2RlcjxTdHJpbmdWaWV3Pjo6ZW5jb2RlPFdlYktpdDo6RGFlbW9uOjpFbmNvZGVy
PihXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciYsIFN0cmluZ1ZpZXcpOworCiB2b2lkIEFyZ3VtZW50
Q29kZXI8U0hBMTo6RGlnZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNIQTE6
OkRpZ2VzdCYgZGlnZXN0KQogewogICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGRp
Z2VzdC5kYXRhKCksIHNpemVvZihkaWdlc3QpLCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGIzZDYyNTFkMDUyNjliNjk0Y2MwYzUwOWQyMDY2
M2U4ZDA2YzU4NTkuLjZkODE0ZDQxNTI4NmE5NWFiY2Q5ODVkYmEwNGRiMGNiZDI2NGE4ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtODI5LDYg
KzgyOSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0cmluZz4gewogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nVmlldz4geworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBTdHJp
bmdWaWV3KTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U0hBMTo6RGln
ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTSEExOjpEaWdl
c3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBTSEExOjpEaWdlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0pTSVBDQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRp
bmcuY3BwCmluZGV4IDBiZTM5NWMxYzM3YzJmZTdjYjNjYzNhNWI0OTU2MmFmYzczOWU2NGEuLmU1
OTJhYTAxYzZjNDExNGVkMGM3ODUzM2MwOWVkYTRmMTFiN2FmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcApAQCAtODksNyArODksNyBAQCBKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgYgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJib29sIikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJib29sIl9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlND
OjpKU1ZhbHVlKCkpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ2YWx1ZSJfcyksIEpTQzo6anNCb29sZWFuKHZhbHVlKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwpAQCAtOTksNjcgKzk5
LDY3IEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBiCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgZG91YmxlIHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51
bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJkb3VibGUiKTsKKyAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZhbHVlLCAiZG91YmxlIl9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFs
dWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGZsb2F0IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNB
cmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJmbG9hdCIpOworICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJmbG9hdCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVj
b2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ4
X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVl
Rm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQ4
X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MTZfdCB2
YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1
ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9y
RGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQxNl90
Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMyX3QgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUo
Z2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRl
Y29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50MzJfdCJf
cyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3Vt
ZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVl
KQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGds
b2JhbE9iamVjdCwgdmFsdWUsICJpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNv
ZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDY0X3QiX3Mp
OwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDhfdCB2YWx1ZSkK
IHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIHZhbHVlLCAidWludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2Rl
ZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50OF90Il9zKTsK
IH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRW
YWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQxNl90IHZhbHVlKQog
ewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2Jh
bE9iamVjdCwgdmFsdWUsICJ1aW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2Rl
ZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MTZfdCJfcyk7
CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50MzJfdCB2YWx1ZSkK
IHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIHZhbHVlLCAidWludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29k
ZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDMyX3QiX3Mp
OwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNv
ZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ2NF90Il9z
KTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1l
bnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB2YWx1ZSkK
IHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIHZhbHVlLCAic2l6ZV90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
TnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInNpemVfdCJfcyk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlY3RUeXBlPgpAQCAtMTg1LDEzICsxODUsMTMgQEAgSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY28KIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBX
ZWJDb3JlOjpJbnRSZWN0JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJJbnRSZWN0Iik7CisgICAgcmV0dXJu
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJJbnRS
ZWN0Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6
OkZsb2F0UmVjdCYmIHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3Vt
ZW50UmVjdChnbG9iYWxPYmplY3QsIHZhbHVlLCAiRmxvYXRSZWN0Iik7CisgICAgcmV0dXJuIGpz
VmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJl
Y3QiX3MpOwogfQogCiBib29sIHB1dEpTVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRBdEluZGV4T3JB
cnJheUJ1ZmZlcklmVW5kZWZpbmVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsRmVhdHVyZXMuY3BwLmVyYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKaW5k
ZXggOWQyYmM3YTIyNjI5Mjk2Yzc0MTZkY2I1MDAyMzhiZWY0ZmYyOWI1ZS4uODMwZWJhYjhlODYy
MTgwZWIwMzBhNjUzOTY2MjZmNDM4OTEwYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVh
dHVyZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCkBAIC00MSw3
ICs0MSw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJlZmVyZW5j
ZXM6OmV4cGVyaW1lbnRhbEZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAj
aWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpFeHBl
cmltZW50YWxGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCAi
PCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+
LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAl
PiksCisgICAgICAgIEFQSTo6RXhwZXJpbWVudGFsRmVhdHVyZTo6Y3JlYXRlKFN0cmluZyB7IDwl
PSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiB9LCAiPCU9IEBwcmVmLm5hbWUgJT4iX3MsIFN0
cmluZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4gfSwgREVGQVVMVF9W
QUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0lu
dGVybmFsRGVidWdGZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5l
cmIKaW5kZXggODQ5Y2Y2ZjdhODg1NzNkZjI3OWYzYWVkMjUxMTA1MDVmN2I2YzM0Ni4uZTU2N2Y0
NWIxZTQ0NTE2YjUyYjAzNjUwYmI5ZjJlOTY0Yjg0OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIK
QEAgLTQwLDcgKzQwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQ
cmVmZXJlbmNlczo6aW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRp
b24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAg
QVBJOjpJbnRlcm5hbERlYnVnRmVhdHVyZTo6Y3JlYXRlKDwlPSBAcHJlZi5odW1hblJlYWRhYmxl
TmFtZSAlPiwgIjwlPSBAcHJlZi5uYW1lICU+IiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNj
cmlwdGlvbiAlPiwgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJl
Zi5oaWRkZW4gJT4pLAorICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUo
U3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYubmFt
ZSAlPiJfcywgU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiB9
LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAl
PiksCiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbQppbmRleCA1YzYzMWVkZGM5NjdjY2U4YTExMGJjNDBkMjc2OWUyY2Y5MzVkNjQ2Li5hNmUy
NWNjNDAzNDY3YTUwM2U4ZWVjMTA3YThmN2U0N2Y4MWMzODMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNDIs
OSArNDIsOSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGFzc05h
bWVLZXkgPSAiJGNsYXNzIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RTdHJlYW1L
ZXkgPSAiJG9iamVjdFN0cmVhbSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nS2V5
ID0gIiRzdHJpbmciOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNsYXNzTmFtZUtleSA9ICIkY2xh
c3MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gb2JqZWN0U3RyZWFtS2V5ID0gIiRvYmplY3RT
dHJlYW0iX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc3RyaW5nS2V5ID0gIiRzdHJpbmciX3M7
CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHNlbGVjdG9yS2V5ID0gQCJzZWxlY3RvciI7CiBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCB0eXBlU3RyaW5nS2V5ID0gQCJ0eXBlU3RyaW5nIjsKQEAg
LTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3RF
bmNvZGVyICplbmNvZGVyLCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZXItPl9vYmplY3RzQmVp
bmdFbmNvZGVkLnJlbW92ZShvYmplY3QpOwogICAgIH0pOwogCi0gICAgZW5jb2Rlci0+X2N1cnJl
bnREaWN0aW9uYXJ5LT5zZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKGNsYXNz
X2dldE5hbWUob2JqZWN0Q2xhc3MpKSk7CisgICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5
LT5zZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGNsYXNzX2dl
dE5hbWUob2JqZWN0Q2xhc3MpIH0pKTsKIAogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TSW52b2NhdGlvbiBjbGFzc11dKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gc3BlY2lhbCBj
YXNlIE5TSW52b2NhdGlvbiBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGVuY29kZSB0aGUgdGFyZ2V0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGI5ODk2NmVjYWQ0MWI0OGVlY2QyNTgyMmI0YzNjMWU2
ZDk4YTA4N2UuLjdkODg1NjIyODQ4ZWY3Zjc5YTRkZjFkMzNjZDYwN2E3ZjJlMTQ1NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlv
bjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdElu
dAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAg
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMp
Iiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5m
byA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+
KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAg
ICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6
UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCBTdHJpbmcgeyByZXBseUJsb2Nr
U2lnbmF0dXJlIH0pOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVjdCBzbyB3
ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0cjsKQEAg
LTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9j
b2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogICAgIGlmICghdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIFt0YXJn
ZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2Nr
SW5kZXhdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RT
aWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90
eXBlU3RyaW5nOwogfQogCiAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVt
b3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdGlvbgpAQCAtMjcwLDcgKzI3
MCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2ln
bmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51
dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOworICAgICAgICBTdHJpbmcgd2ly
ZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlw
ZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsK
ICAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0
dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAogICAg
ICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0
YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0NvbnN0YW50cy5oCmluZGV4IDFiZTJhODAwN2MyNzc2N2JmOWE1OGE5ZDJiOTg3ZTU2NzRk
ZmNhMzkuLjI4MzJhOTkxNmRmYjM4NzNlNzY3ODMyM2NmOTc1Y2NiYTU1YjQ1N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUEND
b25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgKQEAgLTI1LDE1ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oPgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMgewog
Ci1jb25zdGV4cHIgYXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5h
bWUgPSAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKLWNvbnN0ZXhw
ciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZpY2VzLWRh
dGFiYXNlIjsKLWNvbnN0ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
VXBkYXRlTWVzc2FnZU5hbWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtdXBk
YXRlLW1lc3NhZ2UiOwotY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0VuZHBvaW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNl
IjsKLWNvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRwb2ludE1l
c3NhZ2VOYW1lID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2UtbWVzc2Fn
ZSI7Citjb25zdGV4cHIgYXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2Fn
ZU5hbWUgPSAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIl9zOworY29u
c3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVuY2gtc2Vydmlj
ZXMtZGF0YWJhc2UiX3M7Citjb25zdGV4cHIgYXV0byB4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNE
YXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lID0gInJlcXVlc3QtbGF1bmNoLXNlcnZpY2VzLWRhdGFi
YXNlLXVwZGF0ZS1tZXNzYWdlIl9zOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2Vz
LWRhdGFiYXNlIl9zOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0VuZHBvaW50TWVzc2FnZU5hbWUgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1kYXRh
YmFzZS1tZXNzYWdlIl9zOwogfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0NvbnN0YW50cwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA1YmE5MmJiODIz
OWYyODA5YjAxODRjNGRmNzMwOTk5YzQzMGY0ZDQ1Li5mNjFiN2Y0NDljN2JkMDY1MDFhNGVmMDg2
YjVhOTExMjhmYTlhYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0xODUsMjcgKzE4NSwyNyBAQCBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmIGhhbmRsZSkK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNhbmRib3hFeHRlbnNpb24oaGFuZGxlKSk7CiB9CiAK
LVN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCkKK1N0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0
aCkKIHsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRIX01BWF0gPSB7IDAgfTsKICAgICByZWFs
cGF0aChwYXRoLnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkUGF0aCk7CiAgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocmVzb2x2ZWRQYXRoKTsKIH0KIAotU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
K1N0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVu
c2lvbihTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAg
TlNTdHJpbmcgKm5zUGF0aCA9IHBhdGg7CisgICAgYXV0byBuc1BhdGggPSBwYXRoLmNyZWF0ZU5T
U3RyaW5nV2l0aG91dENvcHlpbmcoKTsKIAotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoIHdpdGhJbnRlcm1lZGlhdGVE
aXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSkgewotICAgICAgICBO
U0xvZyhAImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJUBcIiBmb3IgZnV0dXJlIHNhbmRi
b3ggZXh0ZW5zaW9uLCBlcnJvciAlQCIsIG5zUGF0aCwgZXJyb3IpOworICAgIGlmICghW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoLmdl
dCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
JmVycm9yXSkgeworICAgICAgICBOU0xvZyhAImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwi
JUBcIiBmb3IgZnV0dXJlIHNhbmRib3ggZXh0ZW5zaW9uLCBlcnJvciAlQCIsIG5zUGF0aC5nZXQo
KSwgZXJyb3IpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiB9CiAKLVN0cmluZyByZXNvbHZlUGF0
aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIHJlc29sdmVQ
YXRoRm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgU3RyaW5nIHJl
c29sdmVkUGF0aCA9IHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgocGF0aCk7CiAgICAg
aWYgKHJlc29sdmVkUGF0aC5pc051bGwoKSkgewpAQCAtMjE2LDcgKzIxNiw3IEBAIFN0cmluZyBy
ZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJl
dHVybiByZXNvbHZlZFBhdGg7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUgdHlwZSkgLT4gc3Rk
OjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwpAQCAtMjI5LDcgKzIyOSw3IEBAIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5n
JiBwYXRoLCBUeXBlCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUp
IC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoU3RyaW5nVmlldyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PgogewogICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZl
UGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQpAQCAtMjU5LDcgKzI1OSw3
IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMo
QVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zCiAgICAgfSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpIC0+IHN0ZDo6
b3B0aW9uYWw8SGFuZGxlPgogewogICAgIFN0cmluZyByZXNvbHZlZFBhdGggPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKTsKICAgICBp
ZiAocmVzb2x2ZWRQYXRoLmlzTnVsbCgpKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkgLT4KICAgICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
cmVzb2x2ZWRQYXRoLCBUeXBlOjpSZWFkV3JpdGUpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5
cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PgorYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1Zp
ZXcgcHJlZml4LCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwg
U3RyaW5nPj4KIHsKICAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbik7CkBAIC0yODQsMTEgKzI4NCwxNiBAQCBhdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5
cGUgdAogICAgIGlmIChwYXRoLmxhc3QoKSAhPSAnLycpCiAgICAgICAgIHBhdGguYXBwZW5kKCcv
Jyk7CiAgICAgCi0gICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuICAgIAotICAgIHBhdGguYXBw
ZW5kKHByZWZpeC51dGY4KCkuZGF0YSgpLCBwcmVmaXgubGVuZ3RoKCkpOworICAgIC8vIEFwcGVu
ZCB0aGUgZmlsZSBuYW1lLgorICAgIGF1dG8gcHJlZml4QXNVVEY4ID0gcHJlZml4LnV0ZjgoKTsK
KyAgICBwYXRoLmFwcGVuZChwcmVmaXhBc1VURjguZGF0YSgpLCBwcmVmaXhBc1VURjgubGVuZ3Ro
KCkpOwogICAgIHBhdGguYXBwZW5kKCdcMCcpOworCisgICAgYXV0byBwYXRoU3RyaW5nID0gU3Ry
aW5nOjpmcm9tVVRGOChwYXRoLmRhdGEoKSk7CisgICAgaWYgKHBhdGhTdHJpbmcuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgaGFuZGxlLm1fc2FuZGJv
eEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOworICAgIGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoU3RyaW5nKS5kYXRhKCksIHR5
cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0ZW1w
b3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzM5LDcgKzM0NCw3IEBAIGF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFs
aXplcl9saXN0PGNvbnN0IEFTCiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRUb2tlbiwg
ZmxhZ3MpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRC
eUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW4p
IC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5fdCBh
dWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBIYW5kbGUgaGFuZGxl
OwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXgg
ZjllZjU4ZDQwMGVhY2U0YTE4Njc1M2JjNjlkOTM1NTlkMWZlNWJjOC4uNDI2MDQyNjA5Y2ZmOGQx
OTA4NDhkZmEzOGQxMDc5YmQ3ZjgyNWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBv
aW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtNzIsMTMgKzcyLDEzIEBA
IGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENvbm5lY3Rpb25JZGVudGlm
aWVyKElQQzo6Q29ubmVjdGlvbjo6SWRlCiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVs
ZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyKQogewot
ICAgIGNsaWVudElkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlh
bGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKTsKKyAgICBjbGllbnRJZGVudGlmaWVy
ID0gU3RyaW5nOjpmcm9tVVRGOCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6
ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKSk7CiAgICAgcmV0dXJuICFjbGllbnRJZGVu
dGlmaWVyLmlzRW1wdHkoKTsKIH0KIAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0
ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcihTdHJpbmcmIGNsaWVudEJ1bmRsZUlkZW50aWZp
ZXIpCiB7Ci0gICAgY2xpZW50QnVuZGxlSWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtYnVuZGxlLWlkZW50aWZpZXIiKTsK
KyAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRlbnRpZmllciIp
IH07CiAgICAgcmV0dXJuICFjbGllbnRCdW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKTsKIH0KIApA
QCAtMTExLDcgKzExMSw3IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dFByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmCiAKIGJvb2wgWFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xp
ZW50UHJvY2Vzc05hbWUpCiB7Ci0gICAgY2xpZW50UHJvY2Vzc05hbWUgPSB4cGNfZGljdGlvbmFy
eV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1lIik7Cisg
ICAgY2xpZW50UHJvY2Vzc05hbWUgPSBTdHJpbmcgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1lIikgfTsKICAgICByZXR1cm4g
IWNsaWVudFByb2Nlc3NOYW1lLmlzRW1wdHkoKTsKIH0KIApAQCAtMTE5LDMwICsxMTksMzAgQEAg
Ym9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlv
bkRhdGEoSGFzaE1hcDxTdHJpbmcsIFMKIHsKICAgICB4cGNfb2JqZWN0X3QgZXh0cmFEYXRhSW5p
dGlhbGl6YXRpb25EYXRhT2JqZWN0ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1faW5pdGlh
bGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5pdGlhbGl6YXRpb24tZGF0YSIpOwogCi0gICAgU3RyaW5n
IGluc3BlY3RvclByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUlu
aXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIik7CisgICAgU3RyaW5n
IGluc3BlY3RvclByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUlu
aXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIikgfTsKICAgICBpZiAo
IWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoImluc3BlY3Rvci1wcm9jZXNzIl9zLCBpbnNwZWN0b3JQcm9jZXNzKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBTdHJpbmcgc2VydmljZVdvcmtlclByb2Nlc3Mg
PSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9i
amVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKTsKKyAgICBTdHJpbmcgc2VydmljZVdvcmtl
clByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSB9OwogICAgIGlmICghc2Vy
dmljZVdvcmtlclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsIFdURk1vdmUoc2VydmljZVdvcmtl
clByb2Nlc3MpKTsKLSAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4gPSB4cGNfZGljdGlvbmFy
eV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInJlZ2lzdHJh
YmxlLWRvbWFpbiIpOworICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAicmVnaXN0
cmFibGUtZG9tYWluIikgfTsKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkK
ICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4i
X3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKTsKICNlbmRpZgogCi0gICAgU3RyaW5nIGlz
UHJld2FybWVkUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5p
dGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJld2FybWVkIik7CisgICAgU3RyaW5nIGlzUHJl
d2FybWVkUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlh
bGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJld2FybWVkIikgfTsKICAgICBpZiAoIWlzUHJld2Fy
bWVkUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFk
ZCgiaXMtcHJld2FybWVkIl9zLCBpc1ByZXdhcm1lZFByb2Nlc3MpOwogCiAgICAgaWYgKCFpc0Ns
aWVudFNhbmRib3hlZCgpKSB7Ci0gICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3VmZml4ID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmpl
Y3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKKyAgICAgICAgU3RyaW5nIHVzZXJEaXJlY3Rv
cnlTdWZmaXggeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0
aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpIH07CiAgICAgICAgIGlmICgh
dXNlckRpcmVjdG9yeVN1ZmZpeC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBleHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVjdG9yeVN1
ZmZpeCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRh
T2JqZWN0LCAiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpOworICAgIFN0cmlu
ZyBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3Ry
aW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImFsd2F5cy1ydW5zLWF0LWJh
Y2tncm91bmQtcHJpb3JpdHkiKSB9OwogICAgIGlmICghYWx3YXlzUnVuc0F0QmFja2dyb3VuZFBy
aW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJh
bHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCBhbHdheXNSdW5zQXRCYWNrZ3Jv
dW5kUHJpb3JpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0KaW5kZXggZDg2MGU3YzdhYjA2MDE2ZmRmMTA3YzRjZjFkZGE1YzM3ZjMzMmZi
MS4uMTA4Y2IwOGFhYjhlNmU1MTg1YWE1MWFiYjBiNmRmMmI1MzQ0MTM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMjAzLDcgKzIw
Myw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9u
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5k
bGVWZXJzaW9uIik7CisgICAgICAgIFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9uIHsgeHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9u
IikgfTsKICAgICAgICAgU3RyaW5nIGV4cGVjdGVkQnVuZGxlVmVyc2lvbiA9IFtOU0J1bmRsZSBi
dW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXS5pbmZvRGljdGlvbmFyeVso
X19icmlkZ2UgTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsKICAgICAgICAgaWYgKCF3
ZWJLaXRCdW5kbGVWZXJzaW9uLmlzTnVsbCgpICYmICFleHBlY3RlZEJ1bmRsZVZlcnNpb24uaXNO
dWxsKCkgJiYgd2ViS2l0QnVuZGxlVmVyc2lvbiAhPSBleHBlY3RlZEJ1bmRsZVZlcnNpb24pIHsK
ICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiV2ViS2l0IGZyYW1l
d29yayB2ZXJzaW9uIG1pc21hdGNoOiAiLCB3ZWJLaXRCdW5kbGVWZXJzaW9uLCAiICE9ICIsIGV4
cGVjdGVkQnVuZGxlVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCAw
ZDU3NGIwY2M1MDM0MTMzMjE3ZmUzOWYwYjA0MGI1NzlkMmZjMWMwLi4xYjhjNDczOWI2MDY2MGFk
YzdhYTc3NzgwMmIyZTM0NmEzMWVjN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgV0tNZXNzYWdlVGVz
dERyaXZlckZ1bmMgbWVzc2FnZVRlc3REcml2ZXIoU3RyaW5nJiYgZHJpdmVyTmFtZSkKIHsKICAg
ICBpZiAoZHJpdmVyTmFtZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVsdCIpCi0g
ICAgICAgIGRyaXZlck5hbWUgPSBnZXRlbnYoIldFQktJVF9NRVNTQUdFX1RFU1RfREVGQVVMVF9E
UklWRVIiKTsKKyAgICAgICAgZHJpdmVyTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoZ2V0ZW52KCJX
RUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIikpOwogICAgIGlmIChkcml2ZXJOYW1l
LmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09ICJkZWZhdWx0IikKICAgICAgICAgcmV0dXJuIGRl
ZmF1bHRUZXN0RHJpdmVyOwogICAgIGF1dG8gdGVzdERyaXZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
V0tNZXNzYWdlVGVzdERyaXZlckZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgZHJpdmVyTmFtZS51
dGY4KCkuZGF0YSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHAKaW5kZXggODY2NDlhNzcxMWRiYTcxNGVhYTAxNWYzZjI2ZjlmN2Q2YzI3
ZDk1ZS4uYTEwYjhjNzE0MGQ4ODE5ZDIyNWM5YzE5ZmFlYzhmNzllNTViNDIzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApAQCAtNDgs
NyArNDgsNyBAQCBXVEY6OlN0cmluZyBleHRlbnNpb25FcnJvclRvU3RyaW5nKEV4dGVuc2lvbkVy
cm9yIGVycm9yKQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biAiSW50ZXJuYWxFcnJvciI7CisgICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIl9zOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24u
aAppbmRleCA1ZGRhMzBjZDdmNjE3OWY4MzhjOTBkYzJhZjU3ODNiYTUyMWU2ZTkyLi5iMmJhNTIz
MjJjZGE0OTk4NzU4MjUxYzIwMjM5NTQxOTIyNWRjMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2FuZGJveEV4dGVuc2lvbi5oCkBAIC04NCwxNyArODQsMTcgQEAgcHVibGljOgogICAgIH07CiAg
ICAgCiAgICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFuZGxlJiYp
OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGUoU3RyaW5nVmlldyBwYXRoLCBUeXBlKTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRs
ZT4gY3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhh
bmRsZT4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRo
LCBUeXBlKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpOyAvLyBXaWxsIGF0dGVtcHQg
dG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkuCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPEhhbmRsZSwgU3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KFN0cmluZ1ZpZXcgcGF0aCk7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhl
IGRpcmVjdG9yeS4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBT
dHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBU
eXBlKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdl
bmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFV
RElUX1RPS0VOKQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMg
VmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJ
SUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25T
ZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxI
YW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRo
LCBhdWRpdF90b2tlbl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90
KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0
Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3Rh
dGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhT
cGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCkBA
IC0xMTgsOSArMTE4LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotU3RyaW5nIHN0cmluZ0J5
UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyBy
ZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIHBhdGgpOworU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
U3RyaW5nVmlldyBwYXRoKTsKK1N0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24o
U3RyaW5nVmlldyBwYXRoKTsKK1N0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpOwogCiAjaWYgIUVOQUJMRShT
QU5EQk9YX0VYVEVOU0lPTlMpCiAKQEAgLTEyOSwxMSArMTI5LDExIEBAIGlubGluZSBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKSB7IH0KIGlubGluZSB2b2lkIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0IHsgfQogaW5saW5lIHN0
ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxp
bmUgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5k
bGUmJikgeyByZXR1cm4gbnVsbHB0cjsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoU3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsg
cmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKSAtPiBWZWN0b3I8SGFuZGxlPiB7IHJldHVybiB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmlu
ZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9
Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJu
IEhhbmRsZSB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJp
bmc+IHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0
aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3KSAtPiBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3LCBUeXBl
KSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0
ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4geyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCkgLT4gc3Rk
OjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94
RXh0ZW5zaW9uOjp+U2FuZGJveEV4dGVuc2lvbigpIHsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4
dGVuc2lvbjo6cmV2b2tlKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQxLDkgKzE0MSw5IEBAIGlu
bGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVlOyB9CiBp
bmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKSB7IHJldHVy
biB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50
bHkoY29uc3QgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5kbGU+JikgeyByZXR1
cm4gdHJ1ZTsgfQotaW5saW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQotaW5saW5lIFN0cmluZyByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBw
YXRoOyB9Ci1pbmxpbmUgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQor
aW5saW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcg
cGF0aCkgeyByZXR1cm4gcGF0aC50b1N0cmluZygpOyB9CitpbmxpbmUgU3RyaW5nIHJlc29sdmVQ
YXRoRm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9T
dHJpbmcoKTsgfQoraW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBhdGgudG9T
dHJpbmcoKTsgfQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCBlMDVhY2NjZTdmZjE0ZTYwMjExMzFmZTMyZmE4NjY5
MWQ0MWI2OGI3Li44ZjI1OWRhNmQ1MTAyNmNjZDYxODliYmVjYTQ4ZDUzZGI5ODFkYjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAt
MjgyLDcgKzI4Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERpcmVj
dG9yeSgpCiAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUg
dXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZl
U3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9
Ci0gICAgcmV0dXJuIHJlc29sdmVkUGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChy
ZXNvbHZlZFBhdGgpOwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbmRib3hEaXJlY3RvcnkoV2ViQ29y
ZTo6QXV4aWxpYXJ5UHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgcGFyZW50
RGlyZWN0b3J5KQpAQCAtNzA0LDkgKzcwNCw5IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2FuZGJv
eEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0CiAK
ICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0RJUiIsIHB3ZC5w
d19kaXIpOwogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwd2QucHdfZGlyKTsK
LSAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKKyAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnki
X3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFS
WV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgp
KTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7CisgICAgcGF0aC5hcHBlbmQoIi9Q
cmVmZXJlbmNlcyJfcyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigi
SE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4Nl82NCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDkyMGRlMDBiYjY4NjIwMmI2
YzFkNjRmYWFkNzEyMzU5YzE2MDI3OGYuLjliZGU1MDUyN2QzNTU1ZWIzMjczODM2NWExZjdjMmZj
NGYxMzhjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZh
Y3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5t
bQpAQCAtNDY5LDIwICs0NjksMjAgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wgaGEKIAogICAgIC8v
IEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBB
cHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KICAgICBpZiAod2luZG93c1Zp
cnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewotICAgICAgICB0ZXh0ID0gIlxyIjsKLSAgICAg
ICAgdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICB0ZXh0ID0gIlxyIl9zOworICAgICAg
ICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgLy8gQXBwS2l0IHNldHMgdGV4
dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3JyZWN0IEtleWJvYXJkRXZlbnQg
Y2hhcmFjdGVyIGNvZGUgaXMgOC4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZL
X0JBQ0spIHsKLSAgICAgICAgdGV4dCA9ICJceDgiOwotICAgICAgICB1bm1vZGlmaWVkVGV4dCA9
ICJceDgiOworICAgICAgICB0ZXh0ID0gIlx4OCJfczsKKyAgICAgICAgdW5tb2RpZmllZFRleHQg
PSB0ZXh0OwogICAgIH0KIAogICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdlIGRvbid0
IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4K
ICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikgewotICAgICAgICB0ZXh0
ID0gIlx4OSI7Ci0gICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAgICAgIHRleHQg
PSAiXHg5Il9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAg
cmV0dXJuIFdlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5tb2RpZmllZFRleHQsIGtleSwg
Y29kZSwga2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFs
S2V5Q29kZSwgbWFjQ2hhckNvZGUsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBjb21tYW5kcywgYXV0
b1JlcGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcAppbmRleCBjMGE2NGZlZmJkMmY0NWMxMmFkOWNiZTJjNzg4M2IyNTE5ZDg4YjQ0
Li43ZjY4ZmQzMjM2N2U5NWI5N2M1MzUzZmYyOGJjY2MxZDlmMTU4OGQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXBwZWREYXRhPiBv
cGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYQogewogICAgIGlm
ICghRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEg
ZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkp
OworICAgIGF1dG8gZmlsZURhdGEgPSBtYXBGaWxlKHBhdGgpOwogICAgIGlmIChmaWxlRGF0YS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIG1ldGFEYXRh
ID0gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoZmlsZURhdGEpOwpAQCAtMzY2LDcgKzM2
Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxNYXBwZWREYXRhLCBzdGQ6OmVycm9yX2NvZGU+IGNvbXBp
bGVkVG9GaWxlKFdURjo6U3RyaW5nJiYganNvbiwKICAgICB9OwogCiAgICAgYXV0byB0ZW1wb3Jh
cnlGaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICBXVEY6OlN0cmlu
ZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3Qi
LCB0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICBXVEY6OlN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0
aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiX3MsIHRlbXBvcmFyeUZpbGVI
YW5kbGUpOwogICAgIGlmICh0ZW1wb3JhcnlGaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50IFJ1bGUgTGlzdCBjb21w
aWxpbmcgZmFpbGVkOiBPcGVuaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZC4iKTsKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGls
ZUZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRS
ZWYuY3BwCmluZGV4IGVlYmNjOTJkNzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJjODcwNDYzMzYuLmMy
YWFkMzZmZGU3ZmY5ZTIxNDQ3ZGNhNDNiYmUwZjEzMzk4M2RiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCkBAIC0xMjksNyArMTI5LDcg
QEAgdm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRG93
bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCiAKICAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKICAgICAgICAgewotICAg
ICAgICAgICAgZGlkRmFpbChkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNv
cmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGRvd25sb2FkLnJlcXVlc3QoKS51cmwo
KSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkIGR1cmluZyBkb3dubG9hZCIgfSwgbnVsbHB0cik7
CisgICAgICAgICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsg
V2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgp
LnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIl9zIH0sIG51
bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
aW5kZXggZTI1NDkyNmRjNTFhNDlhZWJhNDk4ZDc5NDlhYWZjODA3YTRiNzIyOS4uNWViYzViOGE3
NDliZmVjYjRjYjUyN2M1ZDQyYzhjOTU4ZjY3M2Y4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC01MTUsMTMgKzUxNSwxMyBAQCB2b2lkIFdLUGFnZVRlcm1p
bmF0ZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0U2Vzc2lvbkhp
c3RvcnlVUkxWYWx1ZVR5cGUoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vzc2lvbkhp
c3RvcnlVUkxWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlzdG9yeVVS
TCIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgYXV0byYgc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5
cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlzdG9yeVVSTCJfcykubGVha1JlZigp
OwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOwogfQogCiBX
S1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRlbVZhbHVlVHlwZSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVU
eXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIGF1dG8mIHNlc3Npb25CYWNrRm9yd2FyZExpc3RWYWx1ZVR5
cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRlbSJfcyku
bGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkJhY2tGb3J3YXJkTGlzdFZhbHVl
VHlwZSk7CiB9CiAKQEAgLTE1ODIsMjEgKzE1ODIsMjEgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGll
bnQKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEgfHwgbV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KSB7CiAgICAgICAgICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKICAgICAg
ICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueCkKLSAgICAgICAgICAgICAgICAgICAgbWFw
LnNldCgieCIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLngpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWFwLnNldCgieCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93
RmVhdHVyZXMueCkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy55KQotICAg
ICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ5IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93
RmVhdHVyZXMueSkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ5Il9zLCBBUEk6OkRv
dWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy55KSk7CiAgICAgICAgICAgICAgICAgaWYgKHdp
bmRvd0ZlYXR1cmVzLndpZHRoKQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ3aWR0aCIs
IEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLndpZHRoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1hcC5zZXQoIndpZHRoIl9zLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dG
ZWF0dXJlcy53aWR0aCkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy5oZWln
aHQpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoImhlaWdodCIsIEFQSTo6RG91YmxlOjpj
cmVhdGUoKndpbmRvd0ZlYXR1cmVzLmhlaWdodCkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQo
Im1lbnVCYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubWVu
dUJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJWaXNpYmxl
IiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkp
OwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInRvb2xCYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFu
OjpjcmVhdGUod2luZG93RmVhdHVyZXMudG9vbEJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAg
ICBtYXAuc2V0KCJsb2NhdGlvbkJhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5k
b3dGZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJzY3JvbGxiYXJzVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVz
LnNjcm9sbGJhcnNWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgicmVzaXphYmxl
IiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMucmVzaXphYmxlKSk7Ci0gICAg
ICAgICAgICAgICAgbWFwLnNldCgiZnVsbHNjcmVlbiIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzLmZ1bGxzY3JlZW4pKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJkaWFs
b2ciLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWFwLnNldCgiaGVpZ2h0Il9zLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3
aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJtZW51QmFy
VmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubWVudUJhclZp
c2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJWaXNpYmxlIl9zLCBB
UEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlKSk7Cisg
ICAgICAgICAgICAgICAgbWFwLnNldCgidG9vbEJhclZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6
Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlKSk7CisgICAgICAgICAgICAgICAg
bWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5k
b3dGZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0
KCJzY3JvbGxiYXJzVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVy
ZXMuc2Nyb2xsYmFyc1Zpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJyZXNpemFi
bGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnJlc2l6YWJsZSkpOwor
ICAgICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxzY3JlZW4iX3MsIEFQSTo6Qm9vbGVhbjo6Y3Jl
YXRlKHdpbmRvd0ZlYXR1cmVzLmZ1bGxzY3JlZW4pKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0
KCJkaWFsb2ciX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRpYWxvZykp
OwogICAgICAgICAgICAgICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IGZlYXR1cmVzTWFwID0gQVBJ
OjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtYXApKTsKIAogICAgICAgICAgICAgICAgIGlm
IChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggOGU2
NzViMzk5MDdiYmNkN2E5MjRjNDZjNzgwZjcxNDJmMGVjOTUxYS4uMWE3M2E3MGNhYzk5NjgyNjlj
NDY3YTg4NjdmODIxYzRiMGRiYTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXS1R5cGVJRCBXS1By
ZWZlcmVuY2VzR2V0VHlwZUlEKCkKIAogV0tQcmVmZXJlbmNlc1JlZiBXS1ByZWZlcmVuY2VzQ3Jl
YXRlKCkKIHsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
YXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVs
dHMoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICByZXR1cm4gdG9B
UEkoJnByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVm
ZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXJSZWYpCiB7
Ci0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5
RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmllclJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQy
LiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExl
Z2FjeURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50aWZpZXJSZWYpLCAiV2ViS2l0Mi4iX3MsICJX
ZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRvQVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCmluZGV4IDNkNjU3OWY1MmNlMzUw
MWE4NjFjM2Y2NTVlZmJlZDI0ZTgxZTEyZTQuLjM4Y2Q5NmNhNDA4YjBjN2Q4ZWM5MDE4MGJiZjUx
YjNjMzZjODkxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCkBAIC01OCw3
ICs1OCw3IEBAIFdURjo6U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmVQ
YXRoKCkKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGly
ZWN0b3J5QXRVUkw6Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIGNvbnRlbnRS
dWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpKTsKIAotICAgIHJldHVybiBbY29udGVudFJ1bGVM
aXN0U3RvcmVVUkwuZ2V0KCkgYWJzb2x1dGVVUkxdLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uOworICAgIHJldHVybiBbY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgYWJzb2x1dGVV
UkxdLnBhdGg7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQpp
bmRleCA5ZmE3MWIwNzVhMDNmZjFkZmRkMDAxN2U0NWM4MTI5OTU5ZDM1ZDgzLi4zMzMyMzk0Mzk0
NmJmYTc2YmE4YWYwMmJlOWRjMGMwNWMzM2VmZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQpA
QCAtNzksNyArNzksNyBAQCArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlCiArIChpbnN0YW5j
ZXR5cGUpc3RvcmVXaXRoVVJMOihOU1VSTCAqKXVybAogewogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCi0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6
c3RvcmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7
CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRo
UGF0aCh1cmwuYWJzb2x1dGVTdHJpbmcpKTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNlbmRp
ZgpAQCAtMTk0LDcgKzE5NCw3IEBAICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmVXaXRoTGVn
YWN5RmlsZW5hbWUKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFt
ZTooTlNVUkwgKil1cmwKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHJl
dHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJs
LmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJldHVybiB3cmFw
cGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRl
U3RyaW5nKSk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXggZWIyMzIx
NjljZmI4YWEyYjIyZGU3MTM4Zjk4YWVmNDZjMzkwNDhjNS4uNTlmYjhkYzBhNzgxYzdlYWFkZWZi
NjEyYTVmMzExMjYxYjJmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXQKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJQ
cmVmZXJlbmNlcz4oc2VsZiwgU3RyaW5nKCksICJXZWJLaXQiLCAiV2ViS2l0RGVidWciKTsKKyAg
ICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2ViUHJlZmVyZW5jZXM+
KHNlbGYsIFN0cmluZygpLCAiV2ViS2l0Il9zLCAiV2ViS2l0RGVidWciX3MpOwogICAgIHJldHVy
biBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAppbmRleCAxOTk2MzAzMjhhNTg3YmUxMTNlYmU1MjM3YTBlZjhhZmZmNzNl
M2U1Li43ZThmMGJlZDJjMTM4Mjg0NWRkNTlhZmJjZDA0ZWIzZWMwMmU4NDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTEx
NCw3ICsxMTQsNyBAQCBib29sIEljb25EYXRhYmFzZTo6Y3JlYXRlVGFibGVzSWZOZWVkZWQoKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAotICAgIGlmIChtX2RiLnRhYmxlRXhp
c3RzKCJJY29uSW5mbyIpICYmIG1fZGIudGFibGVFeGlzdHMoIkljb25EYXRhIikgJiYgbV9kYi50
YWJsZUV4aXN0cygiUGFnZVVSTCIpICYmIG1fZGIudGFibGVFeGlzdHMoIkljb25EYXRhYmFzZUlu
Zm8iKSkKKyAgICBpZiAobV9kYi50YWJsZUV4aXN0cygiSWNvbkluZm8iX3MpICYmIG1fZGIudGFi
bGVFeGlzdHMoIkljb25EYXRhIl9zKSAmJiBtX2RiLnRhYmxlRXhpc3RzKCJQYWdlVVJMIl9zKSAm
JiBtX2RiLnRhYmxlRXhpc3RzKCJJY29uRGF0YWJhc2VJbmZvIl9zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKG1fYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VX
cml0ZTo6Tm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZp
ZXdJT1MubW0KaW5kZXggMzA4MGVjNDAzNjM2YTg0YWEwNTFhM2Y4ZjgzZDY5ZTJiMTMyYTA5Zi4u
YmQyMzcxYzAzMjEzMDNmN2M4MmE5NjAwMThmZWUyMDdmYTNkNmVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTI5NDksNyArMjk0
OSw3IEBAIC0gKEJPT0wpX2FsbG93c1ZpZXdwb3J0U2hyaW5rVG9GaXQKIC0gKEJPT0wpX2lzRGlz
cGxheWluZ1BERgogewogICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OnBkZk1JTUVUeXBlcygpKSB7Ci0gICAgICAgIENsYXNzIHByb3ZpZGVyQ2xhc3MgPSBb
W19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJGb3JNSU1F
VHlwZTpAKHR5cGUpXTsKKyAgICAgICAgQ2xhc3MgcHJvdmlkZXJDbGFzcyA9IFtbX2NvbmZpZ3Vy
YXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5XSBwcm92aWRlckZvck1JTUVUeXBlOkAodHlw
ZS5jaGFyYWN0ZXJzKCkpXTsKICAgICAgICAgaWYgKFtfY3VzdG9tQ29udGVudFZpZXcgaXNLaW5k
T2ZDbGFzczpwcm92aWRlckNsYXNzXSkKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAK
aW5kZXggMWM1NGUwMTU4NGU2MDMwNTQwODY0YmIxNmUxNDU2NmE4Mjc4MzBiZS4uMzcxYTUwYmY4
YWRmNmVjZDFhZTM3YWE1MmJhYzkxMTM3OWVhOTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC02NCwxMSArNjQsMTMgQEAg
dm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5j
aGVyOjpMYXVuY2hPcHRpb25zJiBsYXUKIHsKICAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NJZGVu
dGlmaWVyID0gbV9wcm9jZXNzSWRlbnRpZmllcjsKIAotICAgIGlmIChjb25zdCBjaGFyKiB1c2Vy
RGlyZWN0b3J5U3VmZml4ID0gZ2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikpCi0g
ICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFu
c2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0
b3J5U3VmZml4KTsKKyAgICBpZiAoY29uc3QgY2hhciogdXNlckRpcmVjdG9yeVN1ZmZpeCA9IGdl
dGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIpKSB7CisgICAgICAgIGlmIChhdXRvIHVz
ZXJEaXJlY3RvcnlTdWZmaXhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHVzZXJEaXJlY3RvcnlT
dWZmaXgpOyAhdXNlckRpcmVjdG9yeVN1ZmZpeFN0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAg
IGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFuc2xhdG9y
QVNDSUlMaXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0b3J5U3Vm
Zml4U3RyaW5nKTsKKyAgICB9CiAKICAgICBpZiAobV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJp
b3JpdHkpCi0gICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRk
PEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1w
cmlvcml0eSJfcywgInRydWUiKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJhbHdheXMtcnVucy1h
dC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCAidHJ1ZSJfcyk7CiAKICNpZiBFTkFCTEUoREVWRUxP
UEVSX01PREUpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkpCiAgICAgY29uc3Qg
Y2hhciogdmFybmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tCmluZGV4IDYwYzBkOWRhZTBmMGQ2YWRjNTZjZmQxYzhjZjEwZWY5
NDNkNTFkMzUuLjIwNzJiNWI2YjFjYjkwZjhmNjI3ZjY5NjVjMzEwZjAxZTdmNGIxNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5t
bQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpsb2FkUmVxdWVzdFRvRnJhbWUoKQogICAgICAgICBwYWdlLT5zZXRTaG91bGRTdXBwcmVzc1NP
QXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpOwogICAgICAgICBh
dXRvJiB1cmwgPSBtX3JlcXVlc3RzVG9Mb2FkLmZpcnN0KCkuZmlyc3Q7CiAgICAgICAgIFdURjo6
c3dpdGNoT24obV9yZXF1ZXN0c1RvTG9hZC5maXJzdCgpLnNlY29uZCwgWyZdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgewotICAgICAgICAgICAgZnJhbWUtPmxvYWREYXRhKElQQzo6RGF0
YVJlZmVyZW5jZShkYXRhKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIHVybCk7CisgICAgICAgICAg
ICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAidGV4dC9odG1sIl9z
LCAiVVRGLTgiX3MsIHVybCk7CiAgICAgICAgIH0sIFsmXShjb25zdCBTdHJpbmcmIHJlZmVycmVy
KSB7CiAgICAgICAgICAgICBmcmFtZS0+bG9hZFVSTCh1cmwsIHJlZmVycmVyKTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDQ0NmY1ZmRiMzdhMTVm
MWMyZmM5YjM5MzFiMWQwMDAyMWNkMjg4NDcuLmVhNDQ5ZjhkYzdkMGM1NTI5N2VlNWJlOGMxYzZj
OGY5OGJjNjg2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCkBAIC01Miwx
MyArNTIsMTMgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogI2lmIEVOQUJMRShXS1BERlZJRVcp
CiAgICAgZm9yIChhdXRvJiB0eXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlN
RVR5cGVzKCkpCi0gICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLUERGVmlldyBjbGFz
c10gZm9yTUlNRVR5cGU6QCh0eXBlKV07CisgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6
W1dLUERGVmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlLmNoYXJhY3RlcnMoKSldOwogI2Vu
ZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkICYmICFj
b25maWd1cmF0aW9uLnByZWZlcmVuY2VzLl9tb2RlbERvY3VtZW50RW5hYmxlZCkgewogICAgICAg
ICBmb3IgKGF1dG8mIHR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojp1c2RNSU1FVHlw
ZXMoKSkKLSAgICAgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLVVNEUHJldmlld1Zp
ZXcgY2xhc3NdIGZvck1JTUVUeXBlOkAodHlwZSldOworICAgICAgICAgICAgW3NlbGYgcmVnaXN0
ZXJQcm92aWRlcjpbV0tVU0RQcmV2aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlLmNo
YXJhY3RlcnMoKSldOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGluay5tbQppbmRleCAwZWMxMTc0M2JiMWQ4
ZjM5YTI1MGI1MWIzZTU3ODRiYWUxZTUwZTMwLi5lZmNhODgwMTNmMGYxM2MxNmMxOGY5YjFmYjVj
MGNhMDRiMmYzMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJLaXRTd2lmdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYktpdFN3aWZ0U29mdExpbmsubW0KQEAgLTQxLDggKzQxLDExIEBAIHZvaWQqIFdlYktpdFN3
aWZ0TGlicmFyeShib29sIGlzT3B0aW9uYWwpCiAgICAgICAgIC8vIFRoZW4gc2VhcmNoIGluIHRo
ZSBGcmFtZXdvcmtzLyBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnRseSBsb2FkZWQgdmVyc2lvbiBv
ZiBXZWJLaXQuZnJhbWV3b3JrOgogICAgICAgICBEbF9pbmZvIGluZm8geyB9OwogICAgICAgICBp
ZiAoZGxhZGRyKChjb25zdCB2b2lkKikmV2ViS2l0U3dpZnRMaWJyYXJ5LCAmaW5mbykgJiYgc3Ry
bGVuKGluZm8uZGxpX2ZuYW1lKSkgewotICAgICAgICAgICAgYXV0byB3ZWJraXRGcmFtZXdvcmtE
aXJlY3RvcnkgPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXJlbnRQYXRoKGluZm8uZGxpX2ZuYW1l
KTsKLSAgICAgICAgICAgIGF1dG8gZHlsaWJQYXRoID0gV1RGOjpGaWxlU3lzdGVtSW1wbDo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSwgIkZyYW1ld29y
a3MvbGliV2ViS2l0U3dpZnQuZHlsaWIiKTsKKyAgICAgICAgICAgIGF1dG8gZGxpUGF0aCA9IFN0
cmluZzo6ZnJvbVVURjgoaW5mby5kbGlfZm5hbWUpOworICAgICAgICAgICAgaWYgKGRsaVBhdGgu
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byB3ZWJr
aXRGcmFtZXdvcmtEaXJlY3RvcnkgPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXJlbnRQYXRoKGRs
aVBhdGgpOworICAgICAgICAgICAgYXV0byBkeWxpYlBhdGggPSBXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5LCAiRnJh
bWV3b3Jrcy9saWJXZWJLaXRTd2lmdC5keWxpYiJfcyk7CiAgICAgICAgICAgICBpZiAoKGxpYnJh
cnkgPSBkbG9wZW4oZHlsaWJQYXRoLnV0ZjgoKS5kYXRhKCksIFJUTERfTk9XKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAyOGE1ODUxZjVlZTBhYzBh
MzRiYTc3M2RkNjEzNDM3YmY1NDg3MTczLi44MDg1NzMyM2Y5ZDhmOWMzOGY2MWE5MjFiN2RlYjg0
NGI4MDBmMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTI4Miw3ICsyODIsNyBAQCBTdHJpbmcgV2ViUHJvY2Vz
c1Bvb2w6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKIHsKLSAgICBtX3Jlc29s
dmVkUGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gcmVzb2x2ZVBhdGhGb3JTYW5k
Ym94RXh0ZW5zaW9uKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSk7CisgICAg
bV9yZXNvbHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmcgeyBbW05TQnVuZGxlIG1haW5CdW5kbGVdIHJlc291
cmNlUGF0aF0gfSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwMDc0ZGNhNzcyN2E5Njg3
NGZiMWVkMzg0N2Y1MTllMTYwNGE1M2Y3Li5hN2JmM2QyZGM0ZDZlMzJlZTZjYmY2YzIwMjBlNWVj
ZGNjNzBlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtOTI2LDE3ICs5MjYsMTcgQEAgLSAodm9pZClfd2tDaGFuZ2VUZXh0U3R5bGU6KGlk
KXNlbmRlcgogCiAgICAgaWYgKFtzZWxmLnRleHRTdHlsZSBpc1NlbGVjdGVkRm9yU2VnbWVudDow
XSAhPSBfdGV4dElzQm9sZCkgewogICAgICAgICBfdGV4dElzQm9sZCA9ICFfdGV4dElzQm9sZDsK
LSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKEAiVG9nZ2xl
Qm9sZCIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29t
bWFuZCgiVG9nZ2xlQm9sZCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgaWYgKFtz
ZWxmLnRleHRTdHlsZSBpc1NlbGVjdGVkRm9yU2VnbWVudDoxXSAhPSBfdGV4dElzSXRhbGljKSB7
CiAgICAgICAgIF90ZXh0SXNJdGFsaWMgPSAhX3RleHRJc0l0YWxpYzsKLSAgICAgICAgX3dlYlZp
ZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVJdGFsaWMiLCBAIiIpOwor
ICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZUl0
YWxpYyJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgaWYgKFtzZWxmLnRleHRTdHls
ZSBpc1NlbGVjdGVkRm9yU2VnbWVudDoyXSAhPSBfdGV4dElzVW5kZXJsaW5lZCkgewogICAgICAg
ICBfdGV4dElzVW5kZXJsaW5lZCA9ICFfdGV4dElzVW5kZXJsaW5lZDsKLSAgICAgICAgX3dlYlZp
ZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVVbmRlcmxpbmUiLCBAIiIp
OworICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2ds
ZVVuZGVybGluZSJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogfQogCkBAIC05NTUsMTkgKzk1
NSwxOSBAQCAtICh2b2lkKV93a0NoYW5nZVRleHRBbGlnbm1lbnQ6KGlkKXNlbmRlcgogICAgIHN3
aXRjaCAoYWxpZ25tZW50KSB7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRMZWZ0OgogICAgICAg
ICBfY3VycmVudFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRMZWZ0OwotICAgICAgICBf
d2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduTGVmdCIsIEAiIik7
CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25M
ZWZ0Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1RleHRB
bGlnbm1lbnRSaWdodDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxp
Z25tZW50UmlnaHQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29t
bWFuZCgiQWxpZ25SaWdodCIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4
ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25SaWdodCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50Q2VudGVyOgogICAgICAgICBfY3VycmVu
dFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRDZW50ZXI7Ci0gICAgICAgIF93ZWJWaWV3
SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25DZW50ZXIiLCBAIiIpOworICAg
ICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduQ2VudGVy
Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1RleHRBbGln
bm1lbnRKdXN0aWZpZWQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFs
aWdubWVudEp1c3RpZmllZDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVk
aXRDb21tYW5kKCJBbGlnbkp1c3RpZmllZCIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+
cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25KdXN0aWZpZWQiX3MsIGVtcHR5U3RyaW5n
KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk5
Myw3ICs5OTMsNyBAQCAtICh2b2lkKV93a0NoYW5nZUNvbG9yOihpZClzZW5kZXIKICAgICAgICAg
cmV0dXJuOwogCiAgICAgX3RleHRDb2xvciA9IHNlbGYuY29sb3JQaWNrZXJJdGVtLmNvbG9yOwot
ICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiRm9yZUNvbG9yIiwg
V2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6Y29sb3JGcm9tQ29jb2FDb2xv
cihfdGV4dENvbG9yLmdldCgpKSkpOworICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVF
ZGl0Q29tbWFuZCgiRm9yZUNvbG9yIl9zLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChX
ZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7CiB9CiAKIC0g
KE5TVmlld0NvbnRyb2xsZXIgKil0ZXh0TGlzdFZpZXdDb250cm9sbGVyCkBAIC01MTMyLDcgKzUx
MzIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnNlcnRUZXh0KGlkIHN0cmluZywgTlNSYW5nZSBy
ZXBsYWNlbWVudFJhbmdlKQogICAgIFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+KiBr
ZXlwcmVzc0NvbW1hbmRzID0gbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzOwogICAgIGlmIChr
ZXlwcmVzc0NvbW1hbmRzICYmICFtX2lzVGV4dEluc2VydGlvblJlcGxhY2luZ1NvZnRTcGFjZSkg
ewogICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5k
KTsKLSAgICAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQoImluc2VydFRleHQ6
IiwgdGV4dCk7CisgICAgICAgIFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCBjb21tYW5kKCJpbnNl
cnRUZXh0OiJfcywgdGV4dCk7CiAgICAgICAgIGtleXByZXNzQ29tbWFuZHMtPmFwcGVuZChjb21t
YW5kKTsKICAgICAgICAgTE9HKFRleHRJbnB1dCwgIi4uLnN0b3JlZCIpOwogICAgICAgICBtX3Bh
Z2UtPnJlZ2lzdGVyS2V5cHJlc3NDb21tYW5kTmFtZShjb21tYW5kLmNvbW1hbmROYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNw
cAppbmRleCA0YjIxZTk4OWYyNzlhZTY3MzRkOWQzMjYwMWRlMzY2ZGIwMGFmN2IyLi5lYzY5YmY2
YWQzZTdjNThlMTcxMTk3MTUyZDBiMzQ0YzIyMjQxZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjp+RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKQog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IGdldFNlY3VyaXR5T3JpZ2luRGF0YShjb25zdCBjaGFyKiBuYW1l
LCBLZXllZERlY29kZXIqIGRlY29kZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9y
aWdpbkRhdGE+IGdldFNlY3VyaXR5T3JpZ2luRGF0YShBU0NJSUxpdGVyYWwgbmFtZSwgS2V5ZWRE
ZWNvZGVyKiBkZWNvZGVyKQogewogICAgIFN0cmluZyBvcmlnaW47CiAKQEAgLTE1NywyMCArMTU3
LDIwIEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJvbURpc2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoTWFwCiAKIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9y
YWdlOjpnZXREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyKiBkZWNvZGVyLCBTdHJpbmcmJiBk
ZXZpY2VJZEhhc2hTYWx0KSBjb25zdAogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0g
Z2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJvcmlnaW4iLCBkZWNvZGVyKTsKKyAgICBhdXRvIHNlY3Vy
aXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgib3JpZ2luIl9zLCBkZWNvZGVy
KTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luRGF0YSkgewogICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIHNlY3Vy
aXR5IG9yaWdpbiBkYXRhIGluIHRoZSBmaWxlIGlzIG5vdCBjb3JyZWN0OiAnJXMnIiwgZGV2aWNl
SWRIYXNoU2FsdC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdp
bkRhdGEoInBhcmVudE9yaWdpbiIsIGRlY29kZXIpOworICAgIGF1dG8gcGFyZW50U2VjdXJpdHlP
cmlnaW5EYXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJwYXJlbnRPcmlnaW4iX3MsIGRlY29k
ZXIpOwogICAgIGlmICghcGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOiBU
aGUgcGFyZW50IHNlY3VyaXR5IG9yaWdpbiBkYXRhIGluIHRoZSBmaWxlIGlzIG5vdCBjb3JyZWN0
OiAnJXMnIiwgZGV2aWNlSWRIYXNoU2FsdC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgZG91YmxlIGxhc3RUaW1lVXNlZDsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZURvdWJsZSgibGFzdFRpbWVVc2VkIiwgbGFzdFRpbWVVc2VkKSkgeworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiX3MsIGxhc3RUaW1lVXNl
ZCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBsYXN0IHRpbWUgdXNlZCB3YXMgbm90IGNvcnJlY3RseSBy
ZXN0b3JlZCBmb3I6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xODUsOSArMTg1LDkgQEAgc3RkOjp1bmlx
dWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4gRGV2aWNl
SWRIYXNoU2FsdFN0b3IKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IERldmljZUlkSGFz
aFNhbHRTdG9yYWdlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEoY29uc3QgSGFzaFNhbHRGb3JPcmln
aW4mIGhhc2hTYWx0Rm9yT3JpZ2luKSBjb25zdAogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwotICAgIGVuY29kZXItPmVuY29kZVN0cmluZygib3JpZ2luIiwg
aGFzaFNhbHRGb3JPcmlnaW4uZG9jdW1lbnRPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwot
ICAgIGVuY29kZXItPmVuY29kZVN0cmluZygicGFyZW50T3JpZ2luIiwgaGFzaFNhbHRGb3JPcmln
aW4ucGFyZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBlbmNvZGVyLT5lbmNv
ZGVEb3VibGUoImxhc3RUaW1lVXNlZCIsIGhhc2hTYWx0Rm9yT3JpZ2luLmxhc3RUaW1lVXNlZC5z
ZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworICAgIGVuY29kZXItPmVuY29kZVN0cmluZygi
b3JpZ2luIl9zLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1bWVudE9yaWdpbi5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJwYXJlbnRPcmlnaW4iX3MsIGhh
c2hTYWx0Rm9yT3JpZ2luLnBhcmVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAg
ZW5jb2Rlci0+ZW5jb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiX3MsIGhhc2hTYWx0Rm9yT3JpZ2lu
Lmxhc3RUaW1lVXNlZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOwogICAgIHJldHVybiBl
bmNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcAppbmRleCA2ZjU5Y2Fi
YTNhMDc3OTc0ZDM3ODVhNjdjMDQ2YTZkNmRhNDExODE2Li4yODIyZWU4N2VmNDUwMjVjYzk1YzAx
OTY0ZTM5NWI0NmYzYjZiNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAg
LTE0NSwxNiArMTQ1LDE2IEBAIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gaW5zcGVjdG9y
V2Vic2l0ZURhdGFTdG9yZSgpCiAgICAgU3RyaW5nIGJhc2VEYXRhRGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnVzZXJEYXRhRGlyZWN0
b3J5KCksIHZlcnNpb25lZERpcmVjdG9yeSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKElzUGVyc2lzdGVudDo6WWVzLCBX
aWxsQ29weVBhdGhzRnJvbUV4aXN0aW5nQ29uZmlndXJhdGlvbjo6WWVzKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgIldlYktpdENhY2hlIikpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgImFwcGxpY2F0aW9ucyIp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgIldlYktpdENh
Y2hlIl9zKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlRGlyZWN0b3J5
LCAiYXBwbGljYXRpb25zIl9zKSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nKGJhc2VDYWNoZURpcmVjdG9yeSkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoYmFzZUNhY2hlRGlyZWN0b3J5LCAiQ2FjaGVTdG9yYWdlIikpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJsb2NhbHN0b3JhZ2UiKSk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAiaW5kZXhlZGRiIikpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVjdG9yeSwgImRhdGFiYXNlcyIp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVjdG9yeSwg
Iml0cCIpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURp
cmVjdG9yeSwgInNlcnZpY2V3b3JrZXJzIikpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJkZXZpY2VpZGhhc2hzYWx0cyIpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgIkNhY2hlU3RvcmFnZSJfcykp
OworICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJsb2NhbHN0b3Jh
Z2UiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3Rvcnks
ICJpbmRleGVkZGIiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJl
Y3RvcnksICJkYXRhYmFzZXMiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChiYXNlRGF0YURpcmVjdG9yeSwgIml0cCJfcykpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAic2VydmljZXdvcmtlcnMiX3MpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAiZGV2
aWNlaWRoYXNoc2FsdHMiX3MpKTsKICAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRl
KFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3Rl
bnRTZXNzaW9uSUQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vSW5zcGVjdG9yUmVzb3VyY2VVUkxT
Y2hlbWVIYW5kbGVyLmNwcAppbmRleCA2OTUyN2VkYTcyNjNkOGYzN2UzYTgwOTYyNTI4ZWUxNjNk
NmQ3NWY4Li40NzRhNThjZGViMDU2YjY4ZWFmZTExYzA0ZWE5MDAyNDI5MDI3YjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3RvclJlc291
cmNlVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTCiAgICAgaWYgKHJlcXVlc3RQYXRoLnN0
YXJ0c1dpdGgoIlxcIikpCiAgICAgICAgIHJlcXVlc3RQYXRoLnJlbW92ZSgwKTsKICAgICBhdXRv
IHBhdGggPSBVUkwoYWRvcHRDRihDRkJ1bmRsZUNvcHlCdW5kbGVVUkwoV2ViQ29yZTo6d2ViS2l0
QnVuZGxlKCkpKS5nZXQoKSkuZmlsZVN5c3RlbVBhdGgoKTsKLSAgICBwYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsICJXZWJJbnNwZWN0b3JVSSIpOworICAg
IHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgIldlYklu
c3BlY3RvclVJIl9zKTsKICAgICBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHBhdGgsIHJlcXVlc3RQYXRoKTsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZShwYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MjhmMGQ0YzA3YjE2MmE0
ZDdmNDcxMzgyYjNkZDA1NGIwNzY4MDExLi4xM2I1M2M2ZTMzNGU1NDJkOWNiYjI5YmVjNDhlNWYx
NWE0NTYyNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2MzgsNyArMTYzOCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKGNvbnN0IFN0cmlu
ZyYgaW5kZXhlZERhdGFiCiAgICAgaWYgKGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBvbGRWZXJzaW9uRGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSwgInYwIik7CisgICAgU3RyaW5nIG9sZFZlcnNpb25EaXJlY3RvcnkgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCAidjAi
X3MpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZFZlcnNpb25EaXJl
Y3RvcnkpOwogICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRWZXJzaW9uRGlyZWN0
b3J5KSkKICAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSwgb2xkVmVyc2lvbkRpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CmluZGV4IDJlODZjMWI2NmE0ZDUyZDZmMzA0YTQ5MDUyZTBmZTA5ODVkYzMzNzguLjUxNzE2MDI4
NzQ5ZDBiZjgzNDFlMzcwOTA3ZmVhYjk4ZjU1NDMyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENFdmVudEhh
bmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBldmVudCkgY28KICAgICBpZiAoIWV2
ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7Ci0gICAgaWYg
KG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7
CisgICAgaWYgKCFtZXNzYWdlTmFtZSB8fCAhKm1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5h
bWUpIHsKKyAgICBpZiAoTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1
bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUgPT0gbWVzc2FnZU5hbWUp
IHsKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+bV9lbmRwb2ludE1lc3NhZ2UgPSBldmVudDsK
ICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9j
ZXNzUG9vbHMoKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc1Bv
b2wtPnByb2Nlc3NlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGVmOGQyZGQ4NjAxOTQwMGQwZGZjMTNmYTFhNDI2NjYyZmI3YmQ0MjUuLjdhYzQ0YTk3YjBiZmRj
M2M1NTc3NGM0YWE4ZjM5MmE0MmFiY2JiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QoVXNlck1lZGlhUGVybQogICAg
IHVwZGF0ZVN0b3JlZFJlcXVlc3RzKHJlcXVlc3QpOwogCiAgICAgaWYgKCFVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkud2lsbENyZWF0ZU1lZGlhU3RyZWFtKCp0aGlzLCByZXF1
ZXN0Lmhhc0F1ZGlvRGV2aWNlKCksIHJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKSkpIHsKLSAgICAg
ICAgZGVueVJlcXVlc3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6
VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUgdG8gZXh0
ZW5kIHNhbmRib3guIik7CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QsIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6T3RoZXJG
YWlsdXJlLCAiVW5hYmxlIHRvIGV4dGVuZCBzYW5kYm94LiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCmluZGV4IDdiZDU4NzdkZDhlOTI1OGRjNWQ2YTdmYTQyODY3ZmI5Mjk3OWQ2ZmEu
LjRhYTcyOWRiNGEyYzY4MmUzNzliNzE1YzE2YmE0ZmIwNjQ2ZjA0NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAtMjk0LDcg
KzI5NCw3IEBAIFN0cmluZyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRy
YWNrZXI6OmV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyBlCiB9CiAKIAotdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhjb25zdCBTdHJpbmcmIGxv
ZykgY29uc3QKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFj
a2VyOjpsb2coU3RyaW5nVmlldyBsb2cpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9MT0coVmlld0dl
c3R1cmVzLCAiU3dpcGUgU25hcHNob3QgUmVtb3ZhbCAoJTAuMmYgbXMpIC0gJXMiLCAoTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSkubWlsbGlzZWNvbmRzKCksIGxvZy51dGY4KCku
ZGF0YSgpKTsKIH0KQEAgLTMyNCwxMyArMzI0LDEzIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdGFydChFdmVudHMgZGVzaXJlZEV2ZW50cywK
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZXNl
dCgpCiB7CiAgICAgaWYgKG1fb3V0c3RhbmRpbmdFdmVudHMpCi0gICAgICAgIGxvZygicmVzZXQ7
IGhhZCBvdXRzdGFuZGluZyBldmVudHM6ICIgKyBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5k
aW5nRXZlbnRzKSk7CisgICAgICAgIGxvZyhtYWtlU3RyaW5nKCJyZXNldDsgaGFkIG91dHN0YW5k
aW5nIGV2ZW50czogIiwgZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50cykpKTsK
ICAgICBtX291dHN0YW5kaW5nRXZlbnRzID0gMDsKICAgICBtX3dhdGNoZG9nVGltZXIuc3RvcCgp
OwogICAgIG1fcmVtb3ZhbENhbGxiYWNrID0gbnVsbHB0cjsKIH0KIAotYm9vbCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50
KEV2ZW50cyBldmVudCwgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9yZUV2ZW50
SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCkKK2Jvb2wgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50
cyBldmVudCwgQVNDSUlMaXRlcmFsIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNl
ZCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQogewogICAgIEFTU0VSVChoYXNPbmVCaXRTZXQo
ZXZlbnQpKTsKIApAQCAtMzM4LDExICszMzgsMTEgQEAgYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNl
ZCA9PSBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkOjpZZXMgJiYgaXNQYXVzZWQoKSkgewotICAg
ICAgICBsb2coImlzIHBhdXNlZDsgaWdub3JpbmcgZXZlbnQ6ICIgKyBldmVudHNEZXNjcmlwdGlv
bihldmVudCkpOworICAgICAgICBsb2cobWFrZVN0cmluZygiaXMgcGF1c2VkOyBpZ25vcmluZyBl
dmVudDogIiwgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBsb2cobG9nUmVhc29uICsgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQp
KTsKKyAgICBsb2cobWFrZVN0cmluZyhsb2dSZWFzb24sIGV2ZW50c0Rlc2NyaXB0aW9uKGV2ZW50
KSkpOwogCiAgICAgbV9vdXRzdGFuZGluZ0V2ZW50cyAmPSB+ZXZlbnQ7CiAKQEAgLTM1MiwxMiAr
MzUyLDEyIEBAIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFj
a2VyOjogc3RvcFdhaXRpbmdGb3JFdmVudChFdmVudHMKIAogYm9vbCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmV2ZW50T2NjdXJyZWQoRXZlbnRzIGV2ZW50
LCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQpCiB7
Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJvdXRzdGFuZGluZyBldmVu
dCBvY2N1cnJlZDogIiwgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCk7CisgICAgcmV0dXJuIHN0
b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJvdXRzdGFuZGluZyBldmVudCBvY2N1cnJlZDogIl9z
LCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsKIH0KIAogYm9vbCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmNhbmNlbE91dHN0YW5kaW5nRXZlbnQoRXZl
bnRzIGV2ZW50KQogewotICAgIHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAid2Fp
dCBmb3IgZXZlbnQgY2FuY2VsbGVkOiAiKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVu
dChldmVudCwgIndhaXQgZm9yIGV2ZW50IGNhbmNlbGxlZDogIl9zKTsKIH0KIAogYm9vbCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Omhhc091dHN0YW5kaW5n
RXZlbnQoRXZlbnQgZXZlbnQpCkBAIC0zNjgsNyArMzY4LDcgQEAgYm9vbCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Omhhc091dHN0YW5kaW5nRXZlbnQoRXZl
bnQgZXYKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2Vy
OjpmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fb3V0c3RhbmRp
bmdFdmVudHMpIHsKLSAgICAgICAgbG9nKCJkZWZlcnJpbmcgcmVtb3ZhbDsgaGFkIG91dHN0YW5k
aW5nIGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsK
KyAgICAgICAgbG9nKG1ha2VTdHJpbmcoImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0c3RhbmRp
bmcgZXZlbnRzOiAiLCBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRzKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDIwYzMwYjgzNDg4ODdmM2U1MjAwYmY4Njk3MGQ4
MjQ5YzM1MDQ3YmYuLjAyYTBiODk4ZmQ1Y2IyZWE2MmYwZjdjYjBkODY4OGFiNTY5NGRiMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBA
IC0yNTAsMTMgKzI1MCwxMyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3Rh
dGljIFN0cmluZyBldmVudHNEZXNjcmlwdGlvbihFdmVudHMpOwotICAgICAgICB2b2lkIGxvZyhj
b25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgdm9pZCBsb2coU3RyaW5nVmlldykgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBmaXJlUmVtb3ZhbENhbGxiYWNrSW1tZWRpYXRlbHkoKTsKICAgICAg
ICAgdm9pZCBmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSgpOwogICAgICAgICB2b2lkIHdh
dGNoZG9nVGltZXJGaXJlZCgpOwogCi0gICAgICAgIGJvb2wgc3RvcFdhaXRpbmdGb3JFdmVudChF
dmVudHMsIGNvbnN0IFN0cmluZyYgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2Vk
ID0gU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6WWVzKTsKKyAgICAgICAgYm9vbCBzdG9wV2Fp
dGluZ0ZvckV2ZW50KEV2ZW50cywgQVNDSUlMaXRlcmFsIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3Jl
RXZlbnRJZlBhdXNlZCA9IFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQ6Olllcyk7CiAKICAgICAg
ICAgRXZlbnRzIG1fb3V0c3RhbmRpbmdFdmVudHMgeyAwIH07CiAgICAgICAgIFdURjo6RnVuY3Rp
b248dm9pZCgpPiBtX3JlbW92YWxDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KaW5kZXggZDgxZDc4MDYy
MWM4MDUwOTNkNDgzZjFlYWMzNWUyOTAxZDgxODNiOS4uZjY3Y2U0MDQzMTVlZDYyOGVmMWY4MmU0
MTM1MmIxYTVhODZjMTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lk
IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpwZXJmb3JtUmVxdWVzdChSZXRhaW5Q
dHI8QVNDQ3JlZGVudGlhbFJlcQogICAgICAgICBbbV9wcm94eSBwZXJmb3JtQXV0b0ZpbGxBdXRo
b3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdpdGhDb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNy
ZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGVuc3VyZU9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgY3JlZGVu
dGlhbCA9IHJldGFpblB0cihjcmVkZW50aWFsKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIiB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBF
eGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iX3MgfSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgY29udGludWVBZnRlclJlcXVlc3QoY3JlZGVudGlhbCwgZXJyb3IsIFdURk1vdmUo
aGFuZGxlcikpOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxCiAg
ICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFu
ZGxlciksIHdpbmRvdyA9IFdURk1vdmUod2luZG93KSwgZGFlbW9uRW5kcG9pbnQgPSByZXRhaW5Q
dHIoZGFlbW9uRW5kcG9pbnQpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZGFlbW9uRW5kcG9pbnQpIHsKICAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjb25uZWN0IHRvIGF1dGhvcml6YXRpb24g
ZGFlbW9uOiAlQFxuIiwgZXJyb3IuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9
LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRF
cnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIiB9KTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHsg
fSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2Vk
RXJyb3IsICJPcGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5tbQppbmRleCA3NmUzM2E3Mzg2N2JjNGY3ZWNmN2JjZDY2YzA4ZWFj
NTZlZjYwZjFhLi4zZjAwYTUwYTc5ZWY2ZjEzNDcxMDViNGVmNzg2NGE2MWNjMjA0NmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1t
CkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIGJhc2U2NFByaXZhdGVLZXkoUmV0YWluUHRyPFNl
Y0tleVJlZj4gcHJpdmF0ZUtleSkKICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJv
clJlZik7CiAgICAgaWYgKGVycm9yUmVmKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAg
IH0KICAgICBOU0RhdGEgKm5zUHJpdmF0ZUtleVJlcCA9IChOU0RhdGEgKilwcml2YXRlS2V5UmVw
LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24u
Y3BwCmluZGV4IDE1MGZlNDJjZDQ2NzY5YzUzNjYwOTFkNmY0ZmY0YzMxZWE2ZmM1ZjUuLmE3ZDBi
NTAwMWUyNGZlMTZlYWUyOGZjODM1MzhlZDk1OWI4MzVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAgICAgICAgIENCT1JW
YWx1ZTo6TWFwVmFsdWUgcmVzcG9uc2U7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUo
MSldID0gQ0JPUlZhbHVlKCJub25lIik7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUo
MildID0gQ0JPUlZhbHVlKGF1dGhlbnRpY2F0b3JEYXRhKTsKLSAgICAgICAgICAgIGF1dG8gYXR0
T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRhKSwgIiIs
IHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7CisgICAgICAgICAg
ICBhdXRvIGF0dE9iaiA9IGJ1aWxkQXR0ZXN0YXRpb25NYXAoV1RGTW92ZShhdXRoZW50aWNhdG9y
RGF0YSksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSwgeyB9LCBBdHRlc3RhdGlvbkNvbnZleWFu
Y2VQcmVmZXJlbmNlOjpOb25lKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0g
PSBDQk9SVmFsdWUoYXR0T2JqKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0
ZXI6OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25uZWN0aW9u
OjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDIpXSA9IENC
T1JWYWx1ZShhdXRoRGF0YSk7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMyldID0g
Q0JPUlZhbHVlKHNpZ25hdHVyZUZvclByaXZhdGVLZXkoa2V5LCBhdXRoRGF0YSwgY2xpZW50RGF0
YUhhc2gpKTsKICAgICAgICAgICAgIGlmIChjcmVkZW50aWFsLnVzZXJIYW5kbGUpCi0gICAgICAg
ICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDQpXSA9IENCT1JWYWx1ZShidWlsZFVzZXJFbnRp
dHlNYXAoKmNyZWRlbnRpYWwudXNlckhhbmRsZSwgIiIsICIiKSk7CisgICAgICAgICAgICAgICAg
cmVzcG9uc2VbQ0JPUlZhbHVlKDQpXSA9IENCT1JWYWx1ZShidWlsZFVzZXJFbnRpdHlNYXAoKmNy
ZWRlbnRpYWwudXNlckhhbmRsZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOwogICAg
ICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDUpXSA9IENCT1JWYWx1ZSgoaW50NjRfdCltYXRj
aGluZ0NyZWRlbnRpYWxzLnNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHBheWxvYWQgPSBDQk9S
V3JpdGVyOjp3cml0ZShDQk9SVmFsdWUocmVzcG9uc2UpKTsKICAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eS5jcHAKaW5kZXggODBkY2M5ZjZiZjVmMDVlNDc3ZTZlZGYwNDNjMDE0NDQ4
ZjE1MTZjNS4uZThkMGZmOTU3OWZkMjg5ZTVkYmM1NjdiMDM2MWQwMTdkZTEyNzk3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6
OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0CiAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBoYW5k
bGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RB
bGxvd2VkRXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IHRoZSB1c2Vy
LiIgfSk7CisgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJl
ZW4gY2FuY2VsbGVkIGJ5IHRoZSB1c2VyLiJfcyB9KTsKICAgICB9OwogICAgIAogICAgIGlmICgh
ZGF0YS5wcm9jZXNzaW5nVXNlckdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZUdyb3VwLmNwcAppbmRleCBmMWI5MGQzZmI2YjQ1MDhkNmEzZmZjZGQ2NzkxYjg5YmE3ZTA0Y2Yy
Li44YTM5M2NlY2ViNjRhNTM4MzU4ODg1ZmM0YjBlYjgyZDRlYWM0MDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFdl
YlBhZ2VHcm91cERhdGEgcGFnZUdyb3VwRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAv
LyBJZiBpdCB0dXJucyBvdXQgdGhhdCBpdCdzIHdyb25nLCB3ZSBjYW4gY2hhbmdlIGl0IHRvIHRv
ICJXZWJLaXQyLiIgYW5kIGdldCByaWQgb2YgdGhlIGdsb2JhbERlYnVnS2V5UHJlZml4IGZyb20g
V2ViUHJlZmVyZW5jZXMuCiBXZWJQYWdlR3JvdXA6OldlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpCiAgICAgOiBtX2RhdGEocGFnZUdyb3VwRGF0YShpZGVudGlmaWVyKSkKLSAg
ICAsIG1fcHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0
cyhtX2RhdGEuaWRlbnRpZmllciwgIi5XZWJLaXQyIiwgIldlYktpdDIuIikpCisgICAgLCBtX3By
ZWZlcmVuY2VzKFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMobV9kYXRh
LmlkZW50aWZpZXIsICIuV2ViS2l0MiJfcywgIldlYktpdDIuIl9zKSkKICAgICAsIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKSkK
IHsKICAgICB3ZWJQYWdlR3JvdXBNYXAoKS5zZXQobV9kYXRhLnBhZ2VHcm91cElELCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQwNjE2Y2E3MWY1
YjVmNzdmZjA2M2RkNTU1Y2NiMDcwMDIzY2Y3ODcuLjE0YWRiZDhhY2E4NjVmZGFjNTc4MzQxMWZj
OTlmMDQ4MDRhN2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMTExMTIsNyArMTExMTIsNyBAQCBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBX
ZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZQogewogICAg
IGF1dG8gY2FwdHVyZURldmljZSA9IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZTo6Zmlu
ZENhcHR1cmVEZXZpY2UoKTsKICAgICBpZiAoIWNhcHR1cmVEZXZpY2UpCi0gICAgICAgIHJldHVy
biBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxhYmxlIGZvciBjYXB0
dXJlIiB9OworICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiTm8gZGV2aWNl
IGlzIGF2YWlsYWJsZSBmb3IgY2FwdHVyZSJfcyB9OwogCiAgICAgaWYgKHByZWZlcmVuY2VzKCku
Y2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmNyZWF0ZShtX3Byb2Nlc3MtPmVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIoKSwgKmNhcHR1cmVEZXZpY2UsIG1fd2ViUGFnZUlEKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDJmMTY4MTc0
NjU0ZjY1NjgwMzhhOTNiOGI2YWRiNWIxNzRlM2QyNzIuLjFiMmI4NTFlOTcyNGFjNTBmZTM5OGY5
MDRmYjNlYzU3YWU1MDlhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBpZiAo
IXNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc19pbnZh
bGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGVzY3JpcHRpb24o
bWVzc2FnZU5hbWUpKS5wdHIoKSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQ
SShBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSB9
KS5wdHIoKSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5k
Ym94RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBhOGVmNWRiYzQ3ZTZlY2IyYTQ2M2ZlN2I4NWQxY2VkOWVhMDM0NWVlLi5kOTk0
NzIwMWY4Yjk0YjVkM2UyZDMyYmI0ODJkYTI2OWQ2NzlmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU1OSwxOSArNTU5LDE5IEBAIFdlYlBh
Z2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlEKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHNQcm9jZXNzZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VN
YXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJX
ZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOwor
ICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVE
YXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxl
RG9tYWluc0ZpbmlzaGVkKCkKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFw
KCkpCi0gICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vi
c2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBudWxscHRyKTsKKyAg
ICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJzaXRlRGF0
YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW5zRmluaXNoZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VN
YXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJX
ZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBudWxscHRy
KTsKKyAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJz
aXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51bGxwdHIp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTE3ODksNyArMTc4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIGF1dG8gY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9IFt3ZWFr
UGFnZSA9IFdlYWtQdHIgeyB0YXJnZXRQYWdlIH1dKCkgewotICAgICAgICByZXR1cm4gd2Vha1Bh
Z2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlY29nbml0
aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQYWdlIGlzIGludmFsaWQiIH07CisgICAg
ICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNl
Rm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMg
aW52YWxpZCJfcyB9OwogICAgIH07CiAgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtl
VW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPigqY29ubmVjdGlvbigpLCBpZGVudGlmaWVy
LCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lmTW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCksIFdURk1vdmUoY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSkpOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA4MzFhYjQ3ZDAwNTRi
MDRhZmQ3ZGNjY2Q1YzllOGU0Zjc4MDQ3OGQ5Li4xMDZhYjlkZGMzYzVhZWMyN2IwMzNhODRjNmYz
NGNhMjg4ODE1NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0y
NzIsMjYgKzI3MiwyNiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNN
b2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NE
KCkpIHsKICAgICAgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUu
V2ViQXBwQ2FjaGUiXTsKIAotICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmlu
Z1N5bWxpbmtzSW5QYXRoKGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKKyAg
ICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChTdHJp
bmcgeyBjYWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCB9KTsKICAgICB9CiAjZW5k
aWYKIAotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiQ2FjaGVTdG9yYWdlIik7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICBhdXRvIGRpcmVj
dG9yeSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJEZWZh
dWx0Iik7CisgICAgYXV0byBkaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiRGVmYXVsdCJfcyk7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIG9sZCBzdG9yYWdlIGRpcmVjdG9yeSwgYW5kIHRoZXJlIG1pZ2h0IGJl
IGZpbGVzIGxlZnQgaGVyZS4KLSAgICAgICAgYXV0byBvbGREaXJlY3RvcnkgPSBjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU3RvcmFnZSIsIFNob3VsZENyZWF0ZURpcmVj
dG9yeTo6Tm8pOworICAgICAgICBhdXRvIG9sZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTdG9yYWdlIl9zLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6
Ok5vKTsKICAgICAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl07CiAgICAgICAgIE5TQXJyYXkgKmZpbGVzID0gW2ZpbGVNYW5hZ2Vy
IGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6b2xkRGlyZWN0b3J5IGVycm9yOjBdOwogICAgICAg
ICBpZiAoZmlsZXMpIHsKQEAgLTMxMiw2MyArMzEyLDYzIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKKyAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtD
YWNoZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QWx0ZXJuYXRp
dmVTZXJ2aWNlc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJBbHRlcm5hdGl2ZVNlcnZpY2VzIiwgU2hvdWxkQ3JlYXRlRGly
ZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJBbHRlcm5hdGl2ZVNlcnZpY2VzIl9zLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5v
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTWVkaWFDYWNoZSIpOworICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJNZWRpYUNhY2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVkREIiKTsKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIklu
ZGV4ZWREQiJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOworICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMi
X3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSJfcyk7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJNZWRpYUtleXMiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRl
dmljZUlkSGFzaFNhbHRzIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJEZXZpY2VJZEhhc2hTYWx0cyJfcyk7CiB9CiAKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2Vi
U1FMIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJXZWJTUUwiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2Ny
aXB0Q29yZURlYnVnIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIHRl
bXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWci
X3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogCiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXKQogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1l
bnRDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIk1vZGVsRWxlbWVudCIsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8p
OworICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNb2Rl
bEVsZW1lbnQiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogI2VuZGlmCiAKQEAg
LTM5OCw3ICszOTgsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcgogICAgICAgICAmJiAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdp
dGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0
cl0pKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwg
dXJsKTsKICAgICAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aDsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNo
b3VsZENyZWF0ZURpcmVjdG9yeSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaQogICAgICAgICAmJiAhW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJM
LnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworICAgIHJldHVybiB1cmwuYWJzb2x1dGVV
UkwucGF0aDsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
QEAgLTQ1NSw3ICs0NTUsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaQogICAgIGlmICghW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRy
XSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7CiAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uOworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aDsKIH0KIAogI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTFiYmY1NGYwYjQwZmYx
MjNhMjQxYmFjZjM2NmJiOTJiYmYwMzkxNy4uYWI0NTY2NGI2OWNmODgzMDc5Y2RhYmEzNTcxNzZl
NDg5MWRmMjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFsbG93c1dlYnNpdGVE
YXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5Lm9yaWdp
bi5ob3N0LmlzRW1wdHkoKSA/ICIiIDogbWFrZVN0cmluZygiICIsIGVudHJ5Lm9yaWdpbi5ob3N0
KTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGhvc3RTdHJpbmcgPSBlbnRyeS5vcmlnaW4u
aG9zdC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogbWFrZVN0cmluZygiICIsIGVudHJ5Lm9y
aWdpbi5ob3N0KTsKICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBtYWtlU3RyaW5n
KGVudHJ5Lm9yaWdpbi5wcm90b2NvbCwgaG9zdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgfQog
CkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdl
YnNpdGVEYXRhU3RvcmU6OmVuc3VyZVByb2Nlc3NQb29scygpIGNvbnN0CiAKIHN0YXRpYyBTdHJp
bmcgY29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQog
ewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFL
ZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3Au
cGxpc3QiX3MpOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRp
ZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAK
aW5kZXggN2ZmYTM1NmRiY2U2MmFmZjc4MDc1M2MwNmFjNDgwMGVjNmE0YTYxOS4uZTNlMTdhNGYw
NGVhMjU3YTI5N2Q2OWE4ODk4OTg3NWY5NzY2NzA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3Jl
V2luLmNwcApAQCAtNDgsNTIgKzQ4LDUyIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZv
cm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhXYWxsVGltZSkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
KQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3Jh
Z2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9y
YWdlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRHZW5lcmFsU3Rv
cmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIlN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAi
U3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIk5ldHdvcmtDYWNoZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMi
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtl
cnMiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJMb2NhbFN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiX3MpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IDgxMjQw
MjgxN2MyNTdhZTRlNzRiMjUyYjZkMDM3NDQ3Yjg1YjU5MTIuLjA3YzIxN2M3ZDZhOTgyMzBmOWE0
NDlkMmEyZTc0YTI2MTg1NDEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQogLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRp
Y3VsYXIgYXBwbGljYXRpb24/CiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJn
bmFtZSgpKSwgIldlYktpdENhY2hlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmdu
YW1lKCkpLCAiV2ViS2l0Q2FjaGUiX3MpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiX3MpKTsKIH0KIAogV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuY3BwCmluZGV4IDZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFiMDMyMmQyZTUu
LmYxNDE5Yjc0OTc4ZWU3ZTQ5N2I4OTZkMjA3YjM3NDg0YjhkYjE3ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9t
V2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKICAgICAgICAgcmV0
dXJuICJWUDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAiSDI2NCI7CisgICAgICAgIHJldHVybiAiSDI2NCJfczsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZTE5YjFlMDMyNDBjNzVhODNj
NTk5NDcyYWUyZWRlNDZkYmZjNzFhYi4uM2I4ODM1NTJiYjI1OGIwNTkzNTE0YjVjNTUzNWRlYzYw
NjY2MjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTYxNywxMSArNjE3LDEx
IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmCiAgICAgICAgIGF1dG8qIGhpZ2hsaWdodERhdGFB
cnJheSA9IFdlYktpdDo6dG9JbXBsKGhpZ2hsaWdodERhdGEpOwogICAgICAgICBoaWdobGlnaHRz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFycmF5LT5zaXplKCkpOwogICAg
ICAgICBmb3IgKGF1dG8gZGljdGlvbmFyeSA6IGhpZ2hsaWdodERhdGFBcnJheS0+ZWxlbWVudHNP
ZlR5cGU8QVBJOjpEaWN0aW9uYXJ5PigpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0
ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iKSktPnZh
bHVlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpV
SW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iX3MpKS0+dmFsdWUoKTsKICAgICAgICAgICAg
IGhpZ2hsaWdodHMudW5jaGVja2VkQXBwZW5kKHsKICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGljdGlvbmFy
eS0+Z2V0KCJsZW5ndGgiKSktPnZhbHVlKCkpLAotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0PEFQSTo6U3RyaW5n
Kj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciIpKS0+c3RyaW5nKCkpCisgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8QVBJOjpVSW50
NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCJfcykpLT52YWx1ZSgpKSwKKyAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChzdGF0aWNf
Y2FzdDxBUEk6OlN0cmluZyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiX3MpKS0+c3RyaW5nKCkp
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlci5jcHAKaW5kZXggYmRlMjhkZTAzN2RhZmFlZjViY2QwNDRhNzVmNzA1NjJkZTAwYjc4
OS4uNTIyYWU1OTk2YTY3OTRjNGJlY2VlNzdhOWU4MjFkNjEzMGIwYWY1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHZvaWQgcmVt
b3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBh
dGgsIFdhbGwKIAogICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlOYW1lIDogbWVkaWFLZXlO
YW1lcykgewogICAgICAgICBhdXRvIG1lZGlhS2V5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCBtZWRpYUtleU5hbWUpOwotICAgICAgICBTdHJp
bmcgbWVkaWFLZXlGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1l
ZGlhS2V5UGF0aCwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhS2V5
RmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleVBhdGgs
ICJTZWN1cmVTdG9wLnBsaXN0Il9zKTsKIAogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCBlYmM1M2ViZmE5MTA5YzQ5MTRiODlkNzQ5YTA0YzBmNWRjZDE2N2YzLi5iNGRjYWNmZTA1ODE2
OWE5MmY2YTFmODM1OGRhNWRiMTVlNWJiMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTMwLDcgKzEzMCw3
IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6aW5jcmVhc2VCdWZmZXJlZEFtb3VudChzaXplX3Qg
Ynl0ZUxlbmd0aCkKICAgICBDaGVja2VkU2l6ZSBjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQgPSBt
X2J1ZmZlcmVkQW1vdW50OwogICAgIGNoZWNrZWROZXdCdWZmZXJlZEFtb3VudCArPSBieXRlTGVu
Z3RoOwogICAgIGlmIChVTkxJS0VMWShjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQuaGFzT3ZlcmZs
b3dlZCgpKSkgewotICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWU6
IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZSIpOworICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2Vu
ZCBXZWJTb2NrZXQgZnJhbWU6IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZSJfcyk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGNlYmQ5N2FhZDhjYWIyNWY2Y2Vk
ZTBlM2U3MDc5NWZjZjcyNzAzNGUuLjc4ZDUwZjVkZjBkYWYwYmVmY2M2NDI4ZDQ5NGQ5OGYyODE2
MjIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0U3RyZWFtLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAg
ICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHN0cmVhbS0+bV9zZW5kSGFuZHNoYWtlQ2FsbGJh
Y2tzLnZhbHVlcygpKQogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIGZhbHNlKTsKLSAgICAg
ICAgc3RyZWFtLT5tX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCpzdHJlYW0sIFNvY2tldFN0
cmVhbUVycm9yKDAsIHsgfSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkLiIpKTsKKyAgICAgICAg
c3RyZWFtLT5tX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCpzdHJlYW0sIFNvY2tldFN0cmVh
bUVycm9yKDAsIHsgfSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkLiJfcykpOwogICAgICAgICBz
dHJlYW0gPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzllMzg1YmUwMjRlYmJmMTM2ZGMyN2Rk
Y2VhYjQ5NDYyZTE1YzA1Zi4uYTQ4OTFiOTJkYWZjZDQ2NjY0OGYxNmRjMTMzNjI2MGFiZjEyYzg3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCkBAIC0xMjEsNyArMTIxLDcgQEAgQGVuZAogLy8gU2V0IG92ZXJmbG93OiBoaWRkZW4g
b24gdGhlIGFubm90YXRpb24gY29udGFpbmVyIHNvIDxpbnB1dD4gZWxlbWVudHMgc2Nyb2xsZWQg
b3V0IG9mIHZpZXcgZG9uJ3Qgc2hvdwogLy8gc2Nyb2xsYmFycyBvbiB0aGUgYm9keS4gV2UgY2Fu
J3QgYWRkIGFubm90YXRpb25zIGRpcmVjdGx5IHRvIHRoZSBib2R5LCBiZWNhdXNlIG92ZXJmbG93
OiBoaWRkZW4gb24gdGhlIGJvZHkKIC8vIHdpbGwgYnJlYWsgcnViYmVyLWJhbmRpbmcuCi1zdGF0
aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxlID0KK3N0YXRpYyBjb25zdGV4cHIgYXV0byBh
bm5vdGF0aW9uU3R5bGUgPQogIiNhbm5vdGF0aW9uQ29udGFpbmVyIHsiCiAiICAgIG92ZXJmbG93
OiBoaWRkZW47ICIKICIgICAgcG9zaXRpb246IGFic29sdXRlOyAiCkBAIC0xNDUsNyArMTQ1LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CiAiICAgIHBvc2l0aW9uOiBz
dGF0aWM7ICIKICIgICAgd2lkdGg6IDIwMHB4OyAiCiAiICAgIG1hcmdpbi10b3A6IDEwMHB4OyAi
Ci0ifSAiOworIn0gIl9zOwogCiAvLyBJbiBub24tY29udGludW91cyBtb2RlcywgYSBzaW5nbGUg
c2Nyb2xsIGV2ZW50IHdpdGggYSBtYWduaXR1ZGUgb2YgPj0gMjBweAogLy8gd2lsbCBqdW1wIHRv
IHRoZSBuZXh0IG9yIHByZXZpb3VzIHBhZ2UsIHRvIG1hdGNoIFBERktpdCBiZWhhdmlvci4KQEAg
LTc2OSw3ICs3NjksNyBAQCB2b2lkIFBERlBsdWdpbjo6cmVjZWl2ZWROb25MaW5lYXJpemVkUERG
U2VudGluZWwoKQogCiAgICAgaWYgKCFpc01haW5SdW5Mb29wKCkpIHsKICNpZiAhTE9HX0RJU0FC
TEVECi0gICAgICAgIHBkZkxvZygiRGlzYWJsaW5nIGluY3JlbWVudGFsIFBERiBsb2FkaW5nIG9u
IGJhY2tncm91bmQgdGhyZWFkIik7CisgICAgICAgIHBkZkxvZygiRGlzYWJsaW5nIGluY3JlbWVu
dGFsIFBERiBsb2FkaW5nIG9uIGJhY2tncm91bmQgdGhyZWFkIl9zKTsKICNlbmRpZgogICAgICAg
ICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
IHsKICAgICAgICAgICAgIHJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CkBAIC05
NjEsNyArOTYxLDcgQEAgdm9pZCBQREZQbHVnaW46OnRocmVhZEVudHJ5KFJlZjxQREZQbHVnaW4+
JiYgcHJvdGVjdGVkUGx1Z2luKQogICAgIGZpcnN0UGFnZVNlbWFwaG9yZS53YWl0KCk7CiAKICNp
ZiAhTE9HX0RJU0FCTEVECi0gICAgcGRmTG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBh
Z2UiKTsKKyAgICBwZGZMb2coIkZpbmlzaGVkIHByZWxvYWRpbmcgZmlyc3QgcGFnZSJfcyk7CiAj
ZW5kaWYKIH0KIApAQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCBQREZQbHVnaW46OmFkb3B0QmFj
a2dyb3VuZFRocmVhZERvY3VtZW50KCkKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAog
I2lmICFMT0dfRElTQUJMRUQKLSAgICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50IGZyb20g
YmFja2dyb3VuZCB0aHJlYWQiKTsKKyAgICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50IGZy
b20gYmFja2dyb3VuZCB0aHJlYWQiX3MpOwogI2VuZGlmCiAKICAgICBtX3BkZkRvY3VtZW50ID0g
V1RGTW92ZShtX2JhY2tncm91bmRUaHJlYWREb2N1bWVudCk7CkBAIC0xMjgyLDEzICsxMjgyLDEz
IEBAIFBsdWdpbkluZm8gUERGUGx1Z2luOjpwbHVnaW5JbmZvKCkKICAgICBpbmZvLmJ1bmRsZUlk
ZW50aWZpZXIgPSAiY29tLmFwcGxlLndlYmtpdC5idWlsdGlucGRmcGx1Z2luIl9zOwogCiAgICAg
TWltZUNsYXNzSW5mbyBwZGZNaW1lQ2xhc3NJbmZvOwotICAgIHBkZk1pbWVDbGFzc0luZm8udHlw
ZSA9ICJhcHBsaWNhdGlvbi9wZGYiOworICAgIHBkZk1pbWVDbGFzc0luZm8udHlwZSA9ICJhcHBs
aWNhdGlvbi9wZGYiX3M7CiAgICAgcGRmTWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9jdW1lbnRU
eXBlRGVzY3JpcHRpb24oKTsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5k
KCJwZGYiKTsKICAgICBpbmZvLm1pbWVzLmFwcGVuZChwZGZNaW1lQ2xhc3NJbmZvKTsKIAogICAg
IE1pbWVDbGFzc0luZm8gdGV4dFBERk1pbWVDbGFzc0luZm87Ci0gICAgdGV4dFBERk1pbWVDbGFz
c0luZm8udHlwZSA9ICJ0ZXh0L3BkZiI7CisgICAgdGV4dFBERk1pbWVDbGFzc0luZm8udHlwZSA9
ICJ0ZXh0L3BkZiJfczsKICAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9jdW1l
bnRUeXBlRGVzY3JpcHRpb24oKTsKICAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5leHRlbnNpb25z
LmFwcGVuZCgicGRmIik7CiAgICAgaW5mby5taW1lcy5hcHBlbmQodGV4dFBERk1pbWVDbGFzc0lu
Zm8pOwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNv
dXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhb
W05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXND
b2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZp
ZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNl
KHJlc3BvbnNlLmdldCgpKTsKIAotICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwg
ImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25z
ZSk7CisgICAgYXV0byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRm
Il9zLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAgIHBsdWdp
blZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJj
ZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTY4OCwxMCArMTY4OCwxMCBA
QCB2b2lkIFBERlBsdWdpbjo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSkKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5h
bWU7CiAKICAgICBpZiAobV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG1f
c3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShuaWwsICJh
cHBsaWNhdGlvbi9wZGYiKTsKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKG5pbCwgImFwcGxpY2F0aW9uL3BkZiJfcyk7CiAKICAgICBp
ZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIp
KQotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lLmFwcGVuZCgiLnBkZiIpOworICAgICAgICBt
X3N1Z2dlc3RlZEZpbGVuYW1lLmFwcGVuZCgiLnBkZiJfcyk7CiB9CiAgICAgCiB2b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBV
UkwmLCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCkBAIC0xODkzLDcgKzE4OTMs
NyBAQCBib29sIFBERlBsdWdpbjo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewogICAgIG1fc291cmNlVVJMID0gcGFyYW1ldGVycy51cmw7CiAgICAgaWYgKCFwYXJh
bWV0ZXJzLnNob3VsZFVzZU1hbnVhbExvYWRlciAmJiAhcGFyYW1ldGVycy51cmwuaXNFbXB0eSgp
KQotICAgICAgICBjb250cm9sbGVyKCktPmxvYWRVUkwocGRmRG9jdW1lbnRSZXF1ZXN0SUQsICJH
RVQiLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgU3RyaW5nKCksIEhUVFBIZWFkZXJNYXAoKSwg
VmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlKTsKKyAgICAgICAgY29udHJvbGxlcigpLT5sb2FkVVJM
KHBkZkRvY3VtZW50UmVxdWVzdElELCAiR0VUIl9zLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwg
U3RyaW5nKCksIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlKTsKIAog
ICAgIGNvbnRyb2xsZXIoKS0+ZGlkSW5pdGlhbGl6ZVBsdWdpbigpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCmluZGV4IGQ3NDVmMDIwOTQ4NGY0ZWMyYjc0
YTU1Mzc0ZDFiY2U5MWNhNjc4NWQuLjdkNDNmYTAyMWM1YTIwZDY1NTQwOGU3OGJhOWJlZmY2NTQ3
MDc4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTU0LDE1ICs1NCwxNSBA
QCBzdGF0aWMgY29uc3QgU3RyaW5nIGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50
KE5TVGV4dEFsaWdubWVudCBhbGlnbm1lbgogewogICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7CiAg
ICAgY2FzZSBOU1RleHRBbGlnbm1lbnRMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAg
ICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRSaWdodDoKLSAg
ICAgICAgcmV0dXJuICJyaWdodCI7CisgICAgICAgIHJldHVybiAicmlnaHQiX3M7CiAgICAgY2Fz
ZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6Ci0gICAgICAgIHJldHVybiAiY2VudGVyIjsKKyAgICAg
ICAgcmV0dXJuICJjZW50ZXIiX3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRKdXN0aWZpZWQ6
Ci0gICAgICAgIHJldHVybiAianVzdGlmeSI7CisgICAgICAgIHJldHVybiAianVzdGlmeSJfczsK
ICAgICBjYXNlIE5TVGV4dEFsaWdubWVudE5hdHVyYWw6Ci0gICAgICAgIHJldHVybiAiLXdlYmtp
dC1zdGFydCI7CisgICAgICAgIHJldHVybiAiLXdlYmtpdC1zdGFydCJfczsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwMzQ0ZjRiZTIz
YTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlLi40NWEwMTFiZTU1NjYyMDdjOWNhYzQ1Zjll
ZjYwOTJjZTgwMTUwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojps
b2FkVVJMKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0
cmluZyYKICAgICBpZiAoIWh0dHBCb2R5LmlzRW1wdHkoKSkgewogICAgICAgICBmcmFtZUxvYWRS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoaHR0
cEJvZHkuZGF0YSgpLCBodHRwQm9keS5zaXplKCkpKTsKICAgICAgICAgaWYgKGZyYW1lTG9hZFJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCkuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQ29udGVu
dFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOworICAgICAgICAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQ29udGVudFR5cGUoImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJfcyk7CiAgICAgfQogCiAgICAgU3RyaW5n
IHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUo
KS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKSwgZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXgg
MGUxMTdhMGVjNjE5MDBkMTUwYWRiMWRlOWM2ODIyOWE4ZTdhYjU3MC4uZjViZDg5ZjFjMzU0Njk0
OTdiMjliNTY5ZTRiOGQyNGIzYmYwYzFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29u
c3QgU2VjdXIKIAogICAgIGlmICghaXNXZWJCcm93c2VyKCkpIHsKICAgICAgICAgV0VCQVVUSE5f
UkVMRUFTRV9MT0dfRVJST1IoIm1ha2VDcmVkZW50aWFsOiBUaGUgJ25hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0
aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIpOwotICAg
ICAgICBoYW5kbGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDAp
LCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGgg
dGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iIH0pOwor
ICAgICAgICBoYW5kbGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+
KDApLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdp
dGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iX3Mg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TWFrZUNy
ZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2VjdXJpdAog
CiAgICAgaWYgKCFpc1dlYkJyb3dzZXIoKSkgewogICAgICAgICBXRUJBVVRITl9SRUxFQVNFX0xP
R19FUlJPUigiZ2V0QXNzZXJ0aW9uOiBUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5nZXQnIEFQ
SSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5k
ZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIpOwotICAgICAgICBoYW5kbGVyKHsg
fSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBBUEkg
aXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2
ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iIH0pOworICAgICAgICBoYW5kbGVyKHsg
fSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0JyBBUEkg
aXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2
ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9wdGlvbnMs
IGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGJhMjFlNGQ4YjQ3
NGQ1ZGEwYTFlYmM0NzdhMTAzZDgyOWM1ZWExMDcuLjQyNzVlYmRjNmUwOWVhMTZhNTNkOGE3N2U2
ZTgxOGFhYzY2YTM2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpjbG9zZUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpCiB2
b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkoV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIgb3RoZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OlNhbWVFbnRyeUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9u
IGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6
RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9z
IH0pOwogCiAgICAgaWYgKGlkZW50aWZpZXIgPT0gb3RoZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjppc1NhbWVFbnRyeShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0
RmlsZUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnksIFdlYkNvcmU6OkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwg
IkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9u
IGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRGaWxlSGFuZGxlKGlkZW50aWZpZXIs
IG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZUhh
bmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbgogdm9pZCBXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmdldERpcmVjdG9yeUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRl
SWZOZWNlc3NhcnksIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFu
ZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlv
bikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7
IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpV
bmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpH
ZXREaXJlY3RvcnlIYW5kbGUoaWRlbnRpZmllciwgbmFtZSwgY3JlYXRlSWZOZWNlc3NhcnkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5hbWUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldERpcmVjdG9yeUhhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGwKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRy
eShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgZGVsZXRlUmVjdXJzaXZlbHksIFdlYkNvcmU6OkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlz
IGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhj
ZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0p
OwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlRW50cnkoaWRlbnRpZmllciwgbmFtZSwgZGVsZXRlUmVj
dXJzaXZlbHkpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQg
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
cmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBvdGhlcklkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6UmVzb2x2ZUNhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJy
b3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVzb2x2ZShpZGVudGlmaWVyLCBv
dGhlcklkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVz
b2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcgogdm9pZCBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rp
b24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3Qi
X3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRGaWxlKGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllcgogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5
bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nlc3NIYW5k
bGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsg
V2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVu
a25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlv
bi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNy
ZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghcmVzdWx0KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
CiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4
Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBX
ZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpDbG9zZVN5bmNBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRl
bnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVy
dFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRs
ZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlTmFtZXNDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVy
cm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5l
Y3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEhhbmRsZU5hbWVzKGlkZW50
aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE3OSw3ICsx
NzksNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlTmFt
ZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OmdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIg
fSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24g
eyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpHZXRIYW5kbGUoaWRlbnRpZmllciwgbmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkK
QEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Z2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaQogdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Om1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFZvaWRDYWxsYmFj
ayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJv
ciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok1vdmUoaWRlbnRp
ZmllciwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBuZXdOYW1lKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcAppbmRleCBjNTdlNzgwOWIyZWUxNjZk
ZDZmNjg4YmUyMmE4NTljN2RhZGRhOGZhLi4wYzVkZjU0ZGM0NzNkMWE2ZjM2ZDI4ODM5YTViZjEx
ZWQ2ODMxMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcApAQCAt
NzcsOSArNzcsOSBAQCB2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWsoUmVmUHRy
PFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZQogICAgIH07CiAKICAgICBhdXRv
IHZvaWNlID0gdXR0ZXJhbmNlLT52b2ljZSgpOwotICAgIGF1dG8gdm9pY2VVUkkgPSB2b2ljZSA/
IHZvaWNlLT52b2ljZVVSSSgpIDogIiI7Ci0gICAgYXV0byBuYW1lID0gdm9pY2UgPyB2b2ljZS0+
bmFtZSgpIDogIiI7Ci0gICAgYXV0byBsYW5nID0gdm9pY2UgPyB2b2ljZS0+bGFuZygpIDogIiI7
CisgICAgYXV0byB2b2ljZVVSSSA9IHZvaWNlID8gdm9pY2UtPnZvaWNlVVJJKCkgOiBlbXB0eVN0
cmluZygpOworICAgIGF1dG8gbmFtZSA9IHZvaWNlID8gdm9pY2UtPm5hbWUoKSA6IGVtcHR5U3Ry
aW5nKCk7CisgICAgYXV0byBsYW5nID0gdm9pY2UgPyB2b2ljZS0+bGFuZygpIDogZW1wdHlTdHJp
bmcoKTsKICAgICBhdXRvIGxvY2FsU2VydmljZSA9IHZvaWNlID8gdm9pY2UtPmxvY2FsU2Vydmlj
ZSgpIDogZmFsc2U7CiAgICAgYXV0byBpc0RlZmF1bHQgPSB2b2ljZSA/IHZvaWNlLT5pc0RlZmF1
bHQoKSA6IGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRl
eCBhYWM2YjNmYTEwNzBhN2EzYzA1ZGJhNzcyN2Y0MGEzODFmYTQ4MTYzLi5hZmIxYjJkOTFkYWYy
NzQ5ODBmMzcxY2JlN2RmNTE5ZDJmYzI1MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVu
dE1hYy5tbQpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VXb3JkQ2FzZShXZWJQ
YWdlKiBwYWdlLCBOU1N0cmluZyAqKCpjaGFuZ2VDYXNlKShOU1N0cmluZyAqKSkKICAgICBpZiAo
IWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RXb3JkIl9zKS5leGVjdXRlKCk7CiAKICAgICBOU1N0cmlu
ZyAqc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
ZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgIHBhZ2UtPnJlcGxhY2VTZWxl
Y3Rpb25XaXRoVGV4dChmcmFtZS5wdHIoKSwgY2hhbmdlQ2FzZShzZWxlY3RlZFN0cmluZykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNw
cAppbmRleCBlZTE2NDVlZjRlMGM4NDQ3NTc0MDNkMmNkZTUxYWQ0YjExMzAyY2NiLi5kZTgwMTI3
ZWIwYmUyM2E4M2FmZDQ1OTNkZWJlZTQ3YWMzNjM0MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMjE0MSw3ICsyMTQx
LDcgQEAgSlNDOjpKU09iamVjdCogSlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9t
RGVjb2RlcihKU0M6OkpTR2xvYmFsT2JqZWN0KgogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiKSwgSlNDOjpKU1ZhbHVlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXNjcmlwdGlvbiIpLCBKU0M6
OmpzU3RyaW5nKHZtLCBJUEM6OmRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKTsK
KyAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJkZXNjcmlwdGlvbiIpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmcgeyBJUEM6OmRlc2Ny
aXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzdGluYXRpb25JRCIpLCBKU0M6OkpTVmFsdWUo
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKTsKQEAgLTIyMDQsNyArMjIwNCw3IEBAIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlNlbWFwaG9yZSIpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwg
SlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2
aWFsU3RyaW5nKHZtLCAiU2VtYXBob3JlIl9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogICAgIGF1dG8ganNWYWx1ZSA9IHRvSlMoZ2xvYmFsT2Jq
ZWN0LCBXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjpjcmVhdGUoV1RGTW92
ZSh2YWx1ZSkpLT5jcmVhdGVKU1dyYXBwZXIodG9SZWYoZ2xvYmFsT2JqZWN0KSkpOwogICAgIG9i
amVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1
ZSJfcyksIGpzVmFsdWUpOwpAQCAtMjIyMSw3ICsyMjIxLDcgQEAgdGVtcGxhdGU8PiBKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2IKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0
byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5n
KHZtLCAiU2hhcmVkTWVtb3J5IikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJTaGFyZWRNZW1vcnkiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU0M6OkpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3RlY3Rpb24gPSBQcm90ZWN0aW9uOjpS
ZWFkV3JpdGU7CkBAIC0yMjQwLDcgKzIyNDAsNyBAQCB0ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgog
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkYXRhU2l6ZSJfcyksIEpTQzo6SlNWYWx1ZSh2YWx1ZS5kYXRhU2l6ZSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKIAotICAgIG9iamVjdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm90ZWN0aW9uIl9z
KSwgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHByb3RlY3Rpb24gPT0gUHJvdGVjdGlvbjo6
UmVhZFdyaXRlID8gIlJlYWRXcml0ZSIgOiAiUmVhZE9ubHkiKSk7CisgICAgb2JqZWN0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInByb3RlY3Rpb24iX3Mp
LCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvdGVjdGlvbiA9PSBQcm90ZWN0aW9uOjpS
ZWFkV3JpdGUgPyAiUmVhZFdyaXRlIl9zIDogIlJlYWRPbmx5Il9zKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA0
MGI5OTczMjAwNzgyNWU2NjgzZTYzNjgwNDNmNjJiNmI1OTAzMzdiLi5iM2JlZTI4MmVjY2M5ZDFk
NjcyY2IxZWY3ZDg2ZDdlMGQzODU3MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgUmVmPEFQSTo6QXJyYXk+
IFdlYkZyYW1lOjpjaGlsZEZyYW1lcygpCiBTdHJpbmcgV2ViRnJhbWU6OmxheWVyVHJlZUFzVGV4
dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiBtX2NvcmVGcmFtZS0+
Y29udGVudFJlbmRlcmVyKCktPmNvbXBvc2l0b3IoKS5sYXllclRyZWVBc1RleHQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA4NWY1YTQ4YWFlZmNm
M2I2MzA4YWY2YzRmN2I0NTFmMGIyZmExNWNlLi5iMTQ5M2Y3MTQzODMzZGViMTg4YTk1Nzk0OTEy
ODQyNjMzNzZhN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
CkBAIC04MTAsMTEgKzgxMCwxMSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIGZyYW1l
Vmlldy0+cmVuZGVyVmlldygpLT5sYXllcigpLT5iYWNraW5nKCktPnRpbGVkQmFja2luZygpLT5w
cmVwb3B1bGF0ZVJlY3QodGlsZUNvdmVyYWdlUmVjdCk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKFN0
cmluZyBrZXlQYXRoKQorc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiB0cmFuc2ll
bnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoQVNDSUlMaXRlcmFsIGtleVBhdGgpCiB7CiAg
ICAgY29uc3QgZmxvYXQgdHJhbnNpZW50Wm9vbVNuYXBCYWNrRHVyYXRpb24gPSAwLjI1OwogCi0g
ICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOmtleVBhdGhdOworICAgIFJldGFpblB0cjxDQUJhc2lj
QW5pbWF0aW9uPiBhbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5
UGF0aDprZXlQYXRoLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCldOwogICAgIFthbmltYXRpb24gc2V0
RHVyYXRpb246dHJhbnNpZW50Wm9vbVNuYXBCYWNrRHVyYXRpb25dOwogICAgIFthbmltYXRpb24g
c2V0RmlsbE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107CiAgICAgW2FuaW1hdGlvbiBzZXRSZW1v
dmVkT25Db21wbGV0aW9uOmZhbHNlXTsKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
RmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29uc3RyYWluZWRPcmlnaW4ueCgp
LCBjb25zdHJhaW5lZE9yaWdpbi55KCkpOwogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CiAK
LSAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0g
dHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKKyAgICBS
ZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0gdHJhbnNp
ZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iX3MpOwogICAgIGF1dG8g
cmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJl
bmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAgICAgcmVuZGVyVmlld0FuaW1hdGlvbi0+c2V0
VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlv
biBzZXRDb21wbGV0aW9uQmxvY2s6W3pvb21MYXllciwgc2hhZG93Q0FMYXllciwgcGFnZSwgc2Nh
bGUsIG9yaWdpbl0gKCkgewotICAgICAgICB6b29tTGF5ZXItPnJlbW92ZUFuaW1hdGlvbkZvcktl
eSgidHJhbnNpZW50Wm9vbUNvbW1pdCIpOworICAgICAgICB6b29tTGF5ZXItPnJlbW92ZUFuaW1h
dGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCJfcyk7CiAgICAgICAgIGlmIChzaGFkb3dD
QUxheWVyKQogICAgICAgICAgICAgW3NoYWRvd0NBTGF5ZXIgcmVtb3ZlQWxsQW5pbWF0aW9uc107
CiAKQEAgLTg3NCwxNyArODc0LDE3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgICAg
ICAgICBkcmF3aW5nQXJlYS0+YXBwbHlUcmFuc2llbnRab29tVG9QYWdlKHNjYWxlLCBvcmlnaW4p
OwogICAgIH1dOwogCi0gICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVu
dFpvb21Db21taXQiLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKKyAgICB6b29tTGF5ZXIt
PmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCJfcywgcmVuZGVyVmlld0Fu
aW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAgICAgICBGbG9h
dFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShmcmFtZVZpZXcs
IHNjYWxlKTsKICAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93UGF0aCA9IGFkb3B0
Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3Qoc2hhZG93Qm91bmRzLCBOVUxMKSk7CiAKLSAgICAgICAg
UmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1hdGlvbiA9IHRyYW5z
aWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIik7CisgICAgICAgIFJldGFp
blB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dCb3VuZHNBbmltYXRpb24gPSB0cmFuc2llbnRa
b29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoImJvdW5kcyJfcyk7CiAgICAgICAgIFtzaGFkb3dC
b3VuZHNBbmltYXRpb24gc2V0VG9WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnNoYWRvd0Jv
dW5kc11dOwotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UG9zaXRp
b25BbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInBvc2l0
aW9uIik7CisgICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQb3NpdGlv
bkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgicG9zaXRp
b24iX3MpOwogICAgICAgICBbc2hhZG93UG9zaXRpb25BbmltYXRpb24gc2V0VG9WYWx1ZTpbTlNW
YWx1ZSB2YWx1ZVdpdGhQb2ludDpzaGFkb3dMYXllclBvc2l0aW9uRm9yRnJhbWUoZnJhbWVWaWV3
LCBjb25zdHJhaW5lZE9yaWdpbildXTsKLSAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRp
b24+IHNoYWRvd1BhdGhBbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktl
eVBhdGgoInNoYWRvd1BhdGgiKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+
IHNoYWRvd1BhdGhBbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBh
dGgoInNoYWRvd1BhdGgiX3MpOwogICAgICAgICBbc2hhZG93UGF0aEFuaW1hdGlvbiBzZXRUb1Zh
bHVlOihfX2JyaWRnZSBpZClzaGFkb3dQYXRoLmdldCgpXTsKIAogICAgICAgICBbc2hhZG93Q0FM
YXllciBhZGRBbmltYXRpb246c2hhZG93Qm91bmRzQW5pbWF0aW9uLmdldCgpIGZvcktleTpAInRy
YW5zaWVudFpvb21Db21taXRTaGFkb3dCb3VuZHMiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdl
ci5tbQppbmRleCA0ODU0NmZjMTRhMTg5ZjdmMzEzYjkzOWVhMGY1MjRhZDllZTZjZWQzLi5iZmNm
YWEyYWFmNTQ5NzgwZjVkYmI5Y2YzNjU5MjNiN2JhMzg0ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VNYW5hZ2VyLm1tCkBAIC00NCwxMCArNDQsOCBAQCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFu
YWdlciYgTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpCiAKIHZvaWQg
TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXI6OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBt
ZXNzYWdlKQogewotICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcobWVzc2FnZSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICBpZiAo
bWVzc2FnZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1lc3NhZ2VO
YW1lID09IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSkgeworICAgIGF1dG8qIG1lc3NhZ2VOYW1lID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2Fn
ZU5hbWVLZXkpOworICAgIGlmIChMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4
cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUgPT0gbWVzc2FnZU5hbWUp
IHsKICNpZiBIQVZFKExTREFUQUJBU0VDT05URVhUKQogICAgICAgICBhdXRvIGRhdGFiYXNlID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1lc3NhZ2UsIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0gYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL0FwcEJ1bmRsZVJlcXVlc3QubW0KaW5kZXggMGM1M2QzNTYwNGUzNGE2OTRi
YWJjZmYzZTY0NzY1NDhhOGUxMzQxZS4uMDVhZDY3OGJhMzBhYTNjNzI4OGVhNDkyOWZkYzQ1OTA0
M2RmZjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5kbGVSZXF1
ZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQpA
QCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgQXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0OjpkaWREZWxl
dGVFeGlzdGluZ0J1bmRsZVdpdGhFcnJvcihQdXNoQXBwQnVuZGxlJiBiCiAgICAgaWYgKGVycm9y
KQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5n
KCJGYWlsZWQgdG8gZGVsZXRlIGFwcCBidW5kbGU6ICIsIFN0cmluZyhbZXJyb3IgZGVzY3JpcHRp
b25dKSkpOwogCi0gICAgY2FsbENvbXBsZXRpb25IYW5kbGVyQW5kQ2xlYW51cChlcnJvciA/IFN0
cmluZyhbZXJyb3IgZGVzY3JpcHRpb25dKSA6ICIiKTsKKyAgICBjYWxsQ29tcGxldGlvbkhhbmRs
ZXJBbmRDbGVhbnVwKGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogZW1wdHlT
dHJpbmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNDY1NTUzMTUyMDVhNGI3NDQ1
ZDNlNzk3ZmI3M2UwNmU5Y2VjZjk2YS4uNjM1ZDBhZDg4MmU1NGVkZGQ5MmEzOTk2Njk2YzlmYjVh
MDBlODEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24uaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWQoKTsKIAotICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgc2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGJyb2Fk
Y2FzdERlYnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKKyAgICB2b2lkIHNlbmREZWJ1Z01lc3NhZ2Uo
U3RyaW5nVmlldyk7CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50Q29ubmVjdGlvbih4cGNfY29ubmVj
dGlvbl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCmluZGV4IGQwOGMwNDViMTRlNjI1ZTM3MmUwZDBmYmJiY2QwNjk0ZmY1MTJkMzIuLmUwMTA0
NTc0N2Y3NGM4MzMxOWQ0YTM5MTA2YzQzYTZjZTUwMjVhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZv
aWQgQ2xpZW50Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBicm9hZGNhc3REZWJ1Z01lc3NhZ2UobWFrZVN0cmluZygiVHVybmVkIERlYnVnIE1vZGUg
IiwgbV9kZWJ1Z01vZGVFbmFibGVkID8gIm9uIiA6ICJvZmYiKSk7CiB9CiAKLXZvaWQgQ2xpZW50
Q29ubmVjdGlvbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcg
bWVzc2FnZSkKIHsKICAgICBTdHJpbmcgbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgYXV0byBzaWdu
aW5nSWRlbnRpZmVyID0gaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpOwpAQCAtMTQzLDcg
KzE0Myw3IEBAIHZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6YnJvYWRjYXN0RGVidWdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBEYWVtb246OnNpbmdsZXRvbigpLmJyb2FkY2FzdERl
YnVnTWVzc2FnZShtYWtlU3RyaW5nKG1lc3NhZ2VJZGVudGlmaWVyLCBtZXNzYWdlKSk7CiB9CiAK
LXZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIENsaWVudENvbm5lY3Rpb246OnNlbmREZWJ1Z01lc3NhZ2UoU3RyaW5nVmll
dyBtZXNzYWdlKQogewogICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgc2VuZCB0aGUgZGVidWcg
bWVzc2FnZSB0d2ljZS4KICAgICAvLyBBZnRlciBnZXR0aW5nIGFsbCBkZWJ1ZyBtZXNzYWdlIGNs
aWVudHMgb250byB0aGUgZW5jb2Rlci9kZWNvZGVyIG1lY2hhbmlzbSwgcmVtb3ZlIHRoZSBvbGQg
c3R5bGUgbWVzc2FnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXgg
OTc4MjM4ZjUxN2IwZDNmYjk2ZDk0MDYzMTEzM2ZjOGU0MGFhNDQ5Ni4uMDY2MmYxM2U5ODM5NDkw
MGM1NDFmYWJkZTk1NmU4NWM5NjYyZGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsUHVz
aFN1YnNjcmlwdGlvbnMoQ2xpZW50Q29ubmVjdGlvbiosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dW5zaWduZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2lu
KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAKLSAgICB2b2lkIGJyb2FkY2Fz
dERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGJyb2FkY2FzdERlYnVnTWVz
c2FnZShTdHJpbmdWaWV3KTsKICAgICB2b2lkIGJyb2FkY2FzdEFsbENvbm5lY3Rpb25JZGVudGl0
aWVzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dl
YlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0K
aW5kZXggY2JkMTI3MDNiNTllY2Y1ZjI1MDdjODBkYWEwMDNiZmUyYzk3MzRlNC4uZDFiZjYxZTgz
YWYwYzM4NTI4N2Q3YjI1ZTljMjFiY2U4ZWQ0ZmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5tbQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgRGFlbW9uOjpydW5BZnRl
clN0YXJ0aW5nUHVzaFNlcnZpY2UoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGZ1
bmN0aW9uKCk7CiB9CiAKLXZvaWQgRGFlbW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQordm9pZCBEYWVtb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShTdHJp
bmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fY29ubmVjdGlv
bk1hcCkgewogICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUtPmRlYnVnTW9kZUlzRW5hYmxlZCgp
KQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgRGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmRO
b3RpZmljYXRpb25QZXJtaXNzaW9ucyhDbGllbnRDb25uZWN0aW9uKiBjb25uCiB2b2lkIERhZW1v
bjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihDbGllbnRDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcikKIHsKICAgICBpZiAoIWNhblJl
Z2lzdGVyRm9yTm90aWZpY2F0aW9ucygqY29ubmVjdGlvbikpIHsKLSAgICAgICAgcmVwbHlTZW5k
ZXIoIkNvdWxkIG5vdCBkZWxldGUgcHVzaCBhbmQgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbnMg
Zm9yIGNvbm5lY3Rpb246IFVua25vd24gaG9zdCBhcHBsaWNhdGlvbiBjb2RlIHNpZ25pbmcgaWRl
bnRpZmllciIpOworICAgICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0ZSBwdXNoIGFu
ZCBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5rbm93biBob3N0
IGFwcGxpY2F0aW9uIGNvZGUgc2lnbmluZyBpZGVudGlmaWVyIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFl
bW9uTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0K
aW5kZXggZDdhNmI2M2ZlNGRiMmRlYjUwYTVlOWUxNzE3NDFmMTA4NWRjYWVkNy4uYWZlNTA5ZTIx
NTAzMDMwZjA5YWFiZTMzNDg1NWM3YjAxYTEzZDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCkBAIC0xMjksOCArMTI5LDggQEAgaW50IFdlYlB1c2hE
YWVtb25NYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgIDo6V2ViUHVzaEQ6
OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRNb2NrUHVzaFNlcnZpY2UoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBOU1NlYXJjaFBhdGhGb3JEaXJl
Y3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlF
UylbMF07Ci0gICAgICAgICAgICBTdHJpbmcgcHVzaERhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobGlicmFyeVBhdGgsIHsgIldlYktpdCIsICJXZWJQ
dXNoIiwgIlB1c2hEYXRhYmFzZS5kYiIgfSk7Ci0gICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVt
b246OnNpbmdsZXRvbigpLnN0YXJ0UHVzaFNlcnZpY2UoaW5jb21pbmdQdXNoU2VydmljZU5hbWUs
IHB1c2hEYXRhYmFzZVBhdGgpOworICAgICAgICAgICAgU3RyaW5nIHB1c2hEYXRhYmFzZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKGxpYnJhcnlQYXRoLCB7ICJX
ZWJLaXQiX3MsICJXZWJQdXNoIl9zLCAiUHVzaERhdGFiYXNlLmRiIl9zIH0pOworICAgICAgICAg
ICAgOjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKS5zdGFydFB1c2hTZXJ2aWNlKFN0cmlu
ZyB7IGluY29taW5nUHVzaFNlcnZpY2VOYW1lIH0sIHB1c2hEYXRhYmFzZVBhdGgpOwogICAgICAg
ICB9CiAgICAgfQogICAgIENGUnVuTG9vcFJ1bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBmNmE2ZTk3NTdiNGFmY2FiODk4NGFi
YTFmNTI4MGI3OThiOWFhNDc5Li45ZTdiNTM2YmIyYWI1Yjk0YWE0NDZlNWNlYmJhN2ZhZjk1YzFj
NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJh
c2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJhdGVneSkKIAogdm9pZCBTdG9yYWdl
QXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKCFtX2RhdGFi
YXNlLnRhYmxlRXhpc3RzKCJJdGVtVGFibGUiKSkKKyAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVF
eGlzdHMoIkl0ZW1UYWJsZSJfcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGIyMDJiNDQ4
MDc4YzNmZWE1YmM5NTUwODBhYTdlZWRlNmVjYTc4YTguLjVkNGVlYzVmZWQ4YjM1NGMwZjFhNjc1
ZDBjYjRkNDMyN2QxZDI3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcApAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6
OmludGVybmFsSW5pdGlhbGl6ZSgpCiAgICAgc3RvcmFnZVRyYWNrZXItPmltcG9ydE9yaWdpbklk
ZW50aWZpZXJzKCk7CiAKICAgICBtX3RocmVhZC0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIikpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiU3RvcmFnZVRyYWNrZXIuZGIiX3MpKTsKICAg
ICB9KTsKIH0KIAogU3RvcmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkKIHsK
ICAgICBpZiAoIXN0b3JhZ2VUcmFja2VyKQotICAgICAgICBzdG9yYWdlVHJhY2tlciA9IG5ldyBT
dG9yYWdlVHJhY2tlcigiIik7CisgICAgICAgIHN0b3JhZ2VUcmFja2VyID0gbmV3IFN0b3JhZ2VU
cmFja2VyKGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChzdG9yYWdlVHJhY2tlci0+bV9uZWVkc0lu
aXRpYWxpemF0aW9uKQogICAgICAgICBzdG9yYWdlVHJhY2tlci0+aW50ZXJuYWxJbml0aWFsaXpl
KCk7CiAgICAgCkBAIC0xMDcsNyArMTA3LDcgQEAgU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFj
a2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCiBTdHJpbmcgU3RvcmFnZVRyYWNrZXI6OnRy
YWNrZXJEYXRhYmFzZVBhdGgoKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZU11dGV4LnRyeUxv
Y2soKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiTGVnYWN5U3RvcmFnZVRyYWNrZXIuZGIiKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVj
dG9yeVBhdGgsICJMZWdhY3lTdG9yYWdlVHJhY2tlci5kYiJfcyk7CiB9CiAKIHN0YXRpYyBib29s
IGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNy
ZWF0ZUlmRG9lc05vdEV4aXN0KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICAK
ICAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKICAgICAKLSAgICBpZiAo
IW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiKSkgeworICAgIGlmICghbV9kYXRhYmFz
ZS50YWJsZUV4aXN0cygiT3JpZ2lucyJfcykpIHsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UsIHBhdGggVEVYVCk7Il9zKSkKICAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlLiIpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAKaW5kZXggM2U1NTJkZWI5YTllMzRkMDM4MGZkYzM3ZGZkOTRmOTVhN2E5
ZGQxYS4uMDI2ZDQ4NzAzZTM0Y2Q3OGU2ZDAzNGFjMDBlNmI3YTk1MmNkOGQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTUyLDggKzUyLDggQEAKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKLXN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkIjsKLXN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogaW5zcGVj
dG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaERpc2FibGVkIjsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gaW5zcGVjdG9y
QXR0YWNoRGlzYWJsZWRTZXR0aW5nID0gImluc3BlY3RvckF0dGFjaERpc2FibGVkIl9zOwogCiBz
dGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25z
dCBTdHJpbmcmIGtleSkKIHsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JDbGll
bnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnNldEluc3BlY3RvckF0dGFjaERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgc3RvcmVT
ZXR0aW5nKGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZywgZGlzYWJsZWQgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKKyAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0
aW5nLCBkaXNhYmxlZCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmRlbGV0ZUluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkKQEAgLTEwOSw3ICsx
MDksNyBAQCBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
KQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
Ym9vbCBhdHRhY2hlZCkKIHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWRTZXR0aW5nLCBhdHRhY2hlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGlu
ZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiX3MgOiAi
ZmFsc2UiX3MpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9y
QXR0YWNoRGlzYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCmluZGV4IDQ3OTE2ZTc4MWEyNDMwNDFlMWQ1ODI0
OGFiZmFlYWFjMGM1N2JiNTkuLjc5OWE3YjU5NTJiMmI4NWNiNzBhMGIwMGM1NjJiOTAxNzg2YzMz
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVBy
b3BlcnR5TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3Rv
cnlQcm9wZXJ0eUxpc3QubW0KQEAgLTY5LDggKzY5LDggQEAgdm9pZCBIaXN0b3J5UHJvcGVydHlM
aXN0V3JpdGVyOjp3cml0ZU9iamVjdHMoQmluYXJ5UHJvcGVydHlMaXN0T2JqZWN0U3RyZWFtJiBz
dHIKIHsKICAgICBzaXplX3Qgb3V0ZXJEaWN0aW9uYXJ5U3RhcnQgPSBzdHJlYW0ud3JpdGVEaWN0
aW9uYXJ5U3RhcnQoKTsKIAotICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVW
ZXJzaW9uIik7Ci0gICAgc3RyZWFtLndyaXRlU3RyaW5nKCJXZWJIaXN0b3J5RGF0ZXMiKTsKKyAg
ICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlGaWxlVmVyc2lvbiJfcyk7CisgICAgc3Ry
ZWFtLndyaXRlU3RyaW5nKCJXZWJIaXN0b3J5RGF0ZXMiX3MpOwogCiAgICAgc3RyZWFtLndyaXRl
SW50ZWdlcihjdXJyZW50RmlsZVZlcnNpb24pOwogICAgIHNpemVfdCBvdXRlckRhdGVBcnJheVN0
YXJ0ID0gc3RyZWFtLndyaXRlQXJyYXlTdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4IGM4NzMzMDdk
MGYyZGJkYzU0YzVmN2NjNzZjMTE1ZjQ1YzE1OTRhMTguLjdhMTg0NTc3ZDhlNjk0Nzc3ZTc3MjM0
ZjliNDFmNTFhMWRmNzU4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KQEAgLTMzLDkgKzMzLDkgQEAgU3RyaW5n
IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKQogICAg
IE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c107CiAgICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtkZWZhdWx0cyBv
YmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CiAgICAgaWYgKCFk
YXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9f
X19JbmRleGVkREIiLCBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSkpOworICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWRE
QiJfcywgU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pKTsK
ICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcoZGF0YWJhc2VzRGlyZWN0b3J5KSwgIl9fX0luZGV4
ZWREQiIpOworICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoU3RyaW5nKGRhdGFiYXNlc0RpcmVjdG9yeSksICJfX19JbmRleGVk
REIiX3MpOwogICAgIAogICAgIHJldHVybiBbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KaW5kZXggY2FjMGU4
YmM2ZjgwNDRhY2U1YWFmOTRkYzk5MWFhYmU2ZDA5ZTMxNi4uNjI5MTE0NjlhY2RkYTQxOTg3ZjQ5
NTRjNWE2NWQ2M2M4ZmI3MmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCkBAIC0xMzUs
NyArMTM1LDcgQEAgQGVuZAogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgd2Vi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBz
dG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNh
dGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSJfcykubGVha1JlZigpOwogCiAgICAg
cmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGI1MjViYjBkOGI0
ODUxY2QxYWE1MzMyNzk3OWQxMDY0ZjZlZWU3MzkuLmY4ZWMyZmI0MGMzZDhkNWNlYjU0NmVkODdh
YmM5NGIwNDRmNjg5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC00NCw3ICs0NCw3IEBA
ICsgKGlkKXdlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNlSWRlbnRpZmllcjooTlNTdHJpbmcg
KilkYXRhYmFzZUlkZW50aWZpZXIKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CiAKLSAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRl
bnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZyB7IGRhdGFiYXNlSWRlbnRp
ZmllciB9KTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODc3ZmYy
ODdhNzZjMzE1ZjExOTczOTFkMjZjMDRjM2ViMjVlNjA1YS4uYmZkNWQwOWU5OGFkZjczOWFiOGYz
NzdiY2I3ZTRkNTRlMmU4MDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yNjA4LDEzICsyNjA4LDEzIEBAIHN0YXRpYyBjb25zdCBT
ZWxlY3Rvck5hbWVNYXAqIGNyZWF0ZVNlbGVjdG9yRXhjZXB0aW9uTWFwKCkKIHsKICAgICBTZWxl
Y3Rvck5hbWVNYXAqIG1hcCA9IG5ldyBIYXNoTWFwPFNFTCwgU3RyaW5nPjsKIAotICAgIG1hcC0+
YWRkKEBzZWxlY3RvcihpbnNlcnROZXdsaW5lSWdub3JpbmdGaWVsZEVkaXRvcjopLCAiSW5zZXJ0
TmV3bGluZSIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3I6KSwgIkluc2VydE5ld2xpbmUiKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0VGFi
SWdub3JpbmdGaWVsZEVkaXRvcjopLCAiSW5zZXJ0VGFiIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVj
dG9yKHBhZ2VEb3duOiksICJNb3ZlUGFnZURvd24iKTsKLSAgICBtYXAtPmFkZChAc2VsZWN0b3Io
cGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXA6KSwgIk1vdmVQYWdlVXAiKTsK
LSAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOiksICJNb3Zl
UGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIik7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2Vy
dE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnROZXdsaW5lIl9zKTsKKyAgICBt
YXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOiksICJJbnNlcnROZXds
aW5lIl9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0b3IoaW5zZXJ0VGFiSWdub3JpbmdGaWVsZEVk
aXRvcjopLCAiSW5zZXJ0VGFiIl9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246
KSwgIk1vdmVQYWdlRG93biJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VEb3duQW5k
TW9kaWZ5U2VsZWN0aW9uOiksICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MpOwor
ICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXA6KSwgIk1vdmVQYWdlVXAiX3MpOworICAgIG1h
cC0+YWRkKEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlVXBB
bmRNb2RpZnlTZWxlY3Rpb24iX3MpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KQEAgLTI2NTAsNyAr
MjY1MCw3IEBAIC0gKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZCljb3JlQ29tbWFuZEJ5TmFtZToo
Y29uc3QgY2hhciopbmFtZQogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFZGl0b3I6
OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUp
OworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgbmFtZSB9
KTsKIH0KIAogLSAodm9pZClleGVjdXRlQ29yZUNvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2VsZWN0
b3IKQEAgLTI4ODgsNyArMjg4OCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogICAgICAgICBO
U01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAgaWYgKFtt
ZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKLSAgICAgICAgICAg
IFN0cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rp
b24gPSB3cml0aW5nRGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8g
Imx0ciJfcyA6ICJydGwiX3M7CiAgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6KGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlv
biwgZGlyZWN0aW9uKSAhPSBUcmlTdGF0ZTo6RmFsc2UpXTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gW3NlbGYgX2NhbkVkaXRdOwpAQCAtMjkwNiw3ICsyOTA2LDcgQEAgSUdOT1JFX1dBUk5J
TkdTX0VORAogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0g
Y2xhc3NdXSkgewogICAgICAgICAgICAgLy8gVGFrZSBjb250cm9sIG9mIHRoZSB0aXRsZSBvZiB0
aGUgbWVudSBpdGVtIGluc3RlYWQgb2YganVzdCBjaGVja2luZy91bmNoZWNraW5nIGl0IGJlY2F1
c2UKICAgICAgICAgICAgIC8vIGEgY2hlY2sgd291bGQgYmUgYW1iaWd1b3VzLgotICAgICAgICAg
ICAgW21lbnVJdGVtIHNldFRpdGxlOihmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
V2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKSAhPSBUcmlTdGF0ZTo6RmFsc2Up
CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCJfcykgIT0gVHJp
U3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0
IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAg
ICAgICAgIDogVUlfU1RSSU5HX0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExl
ZnQgY29udGV4dCBtZW51IGl0ZW0iKV07CiAgICAgICAgIH0KQEAgLTQ2ODMsNyArNDY4Myw3IEBA
IC0gKHZvaWQpX3NldFByaW50aW5nOihCT09MKXByaW50aW5nIG1pbmltdW1QYWdlTG9naWNhbFdp
ZHRoOihmbG9hdCltaW5QYWdlTG9naWNhCiAgICAgYXV0byogY29yZUZyYW1lID0gY29yZShbc2Vs
ZiBfZnJhbWVdKTsKICAgICBpZiAoY29yZUZyYW1lKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb3Jl
VmlldyA9IGNvcmVGcmFtZS0+dmlldygpKQotICAgICAgICAgICAgY29yZVZpZXctPnNldE1lZGlh
VHlwZShfcHJpdmF0ZS0+cHJpbnRpbmcgPyAicHJpbnQiIDogInNjcmVlbiIpOworICAgICAgICAg
ICAgY29yZVZpZXctPnNldE1lZGlhVHlwZShfcHJpdmF0ZS0+cHJpbnRpbmcgPyAicHJpbnQiX3Mg
OiAic2NyZWVuIl9zKTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gY29yZUZyYW1lLT5k
b2N1bWVudCgpKSB7CiAgICAgICAgICAgICAvLyBJbiBzZXR0aW5nIHByaW50aW5nLCB3ZSBzaG91
bGQgbm90IHZhbGlkYXRlIHJlc291cmNlcyBhbHJlYWR5IGNhY2hlZCBmb3IgdGhlIGRvY3VtZW50
LgogICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzcwNApAQCAtNjY3Miw3ICs2NjcyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIH0pKCk7CiAKICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uS2V5
Q29tbWFuZFdpdGhNYXRjaGluZ01lbnVJdGVtKQotICAgICAgICAgICAgZXZlbnQtPmtleXByZXNz
Q29tbWFuZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRUZXh0OiIs
IHRleHQpKTsKKyAgICAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCkuYXBwZW5kKFdl
YkNvcmU6OktleXByZXNzQ29tbWFuZCgiaW5zZXJ0VGV4dDoiX3MsIHRleHQpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDk2ODIyOTI1MGI4YzNiMGMxYWNmNmVjMThlYTk4NjJhNmJiN2ViZjUuLmI3YWQw
ZDY4NDc1YmExNzQ0YzQxZDk2MjgzMDcxOGQ5MTE5MGExZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE1MzQsNyArMTUzNCw3IEBAIC0gKHZvaWQp
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUg
Z3JvdXBOYW1lOihOU1N0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nKE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkp
LCAiTWVkaWFDYWNoZS8iKSk7CisgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFN0cmluZyhOU1RlbXBvcmFyeURpcmVjdG9yeSgpKSwgIk1lZGlhQ2FjaGUvIl9zKSk7CiAjZW5k
aWYKICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CkBAIC0z
MzA0LDcgKzMzMDQsNyBAQCArIChCT09MKV9jYW5IYW5kbGVSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0CiArIChOU1N0cmluZyAqKV9kZWNvZGVEYXRhOihOU0RhdGEgKilkYXRhCiB7CiAg
ICAgV2ViQ29yZTo6SFRNTE5hbWVzOjppbml0KCk7IC8vIHRoaXMgbWV0aG9kIGlzIHVzZWQgZm9y
IGltcG9ydGluZyBib29rbWFya3MgYXQgc3RhcnR1cCwgc28gSFRNTE5hbWVzIGFyZSBsaWtlbHkg
dG8gYmUgdW5pbml0aWFsaXplZCB5ZXQKLSAgICByZXR1cm4gV2ViQ29yZTo6VGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwiKS0+ZGVjb2RlQW5kRmx1c2goc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOyAvLyBib29rbWFyayBm
aWxlcyBhcmUgSFRNTAorICAgIHJldHVybiBXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQvaHRtbCJfcyktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsgLy8gYm9va21hcmsgZmlsZXMgYXJl
IEhUTUwKIH0KIAogLSAodm9pZClfcHVzaFBlcmZvcm1pbmdQcm9ncmFtbWF0aWNGb2N1cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNTg4
Y2U1ZGZmZDIzZTIyZTAwY2FkYmE5NTM3ZGU3ZmVkNjM4MmYxYy4uNjc2NzcyMDMxNWMzOTMzY2Rj
MjJlNDI1MmUzZWEzMzhmZjg5MjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgc3RhdGljIFdURjo6U3Ry
aW5nIGRhdGFiYXNlc0RpcmVjdG9yeSgpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0
cmluZ1JlZj4oZGlyZWN0b3J5UHJlZi5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIl9zKTsKIH0KIAogdm9pZCBXZWJLaXRJ
bml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDAxZWVmODhkZWQ0MjgxOGQ1MWNmMWFlYjFhN2Y0
MjhhM2Q1MTU2Y2IuLjljZjhjYzAyYTIxY2RkZWJiMGVkODQ5OWZmZTk0MGY2ZTRmMTg0MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgdXNpbmcgc3RkOjpudW1lcmljX2xpbWl0czsKIAogc3RhdGljIGNvbnN0IFN0cmluZyYg
b2xkUHJlZmVyZW5jZXNQYXRoKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6cm9hbWluZ1VzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYktpdFByZWZlcmVuY2VzLnBsaXN0Iik7CisgICAg
c3RhdGljIFN0cmluZyBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJL
aXRQcmVmZXJlbmNlcy5wbGlzdCJfcyk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMmZlMmJhZDM3ZTRm
MGM3ODgyODhjY2IwMTA0YTA5ZmU5YmYwNzliLi5hYjQ4YTFlZjU1YjJlZTgwZTg2ZGU5YjI0ZDdm
NzNkZTRjODAwZDBkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQmxvYldpdGhVU0Ra
RXh0ZW5zaW9uRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbToKKyAgICAgICAg
KHJ1blRlc3QpOgorICAgICAgICAoY3JlYXRlRGlyZWN0b3JpZXMpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
OgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDMtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIGJhZCBhZG9wdE5TKCkgaW4gTmV0d29ya1Byb2Nlc3Mu
TGF1bmNoT25seVdoZW5OZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCmluZGV4IGM4OTNiMjMyNjA4M2U3YzEwZTVhODYxYTlkODEzMTNiMjgyY2Ew
ZGIuLmNmN2I3ODliMzVlYTFlZjcyYmQ2YzhlNjRlMzk2OTA4ZGM4YzE3NmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtOTc1LDkgKzk3NSw5IEBA
IHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAg
ICAgU3RyaW5nIGxpYnJhcnlQYXRoID0gbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJlZSgpOwog
CiAgICAgLy8gU2V0IHVwIHRoZXNlIHZhbHVlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIFdlYlZpZXcg
c28gdGhhdCB0aGUgdmFyaW91cyBpbml0aWFsaXphdGlvbnMgd2lsbCBzZWUgdGhlc2UgcHJlZmVy
cmVkIHZhbHVlcy4KLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJl
Y3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxp
YnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0
KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVm
YXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0
aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsK
LSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2Nh
bENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFzZXMi
X3MpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVu
Y2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiX3Mp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIl9zKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTEyMyw3ICsx
MTIzLDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhP
clVybCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRv
VGVzdCA9IHBhdGhUb0NoZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0
aCgpICsgMSk7Ci0gICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9u
ICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBTdHJp
bmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5n
dGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiJfcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3Nz
aWJsZVBhdGhzOwogICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CkBAIC0x
MTM2LDcgKzExMzYsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hh
ciogcGF0aE9yVXJsKQogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9y
IHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7
ICsrcG9zKSB7Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsKKyAgICAgICAgcGF0aFRv
Rm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3Ms
ICJyZXNvdXJjZXNcXCJfcyk7CiAKICAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRo
VG9Gb250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0
dXJuIHBhdGhUb0ZvbnRGYWxsYmFjazsKQEAgLTExNTAsNyArMTE1MCw3IEBAIHN0YXRpYyB2b2lk
IGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgp
CiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNz
cyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJh
Y2suY3NzIl9zKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLndp
ZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2Myw3ICsxMTYz
LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmlu
ZyYgZm9udEZhbGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRp
YmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNv
bXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiX3MpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhp
c3RzVyhmb250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4
IGM0Njc0YWZhNjA4NzYzNjdiM2NmNjc2YzJlNTdmZGRiMzBiODg0OTEuLmQ4MmEzYWM1MTcyZGM1
NWQwM2I0ZjY4MTNhY2JhNzBkZDg4ZmJmZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC01MywzNyArNTMsMzcgQEAgcHVibGljOgogCiAgICAg
ICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUuCiAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIG1fdGVtcEZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSJfcywg
aGFuZGxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lz
dGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIiwg
aGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIl9zLCBoYW5kbGUpOwogICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwogICAgICAgICBGaWxlU3lzdGVtOjpjcmVh
dGVTeW1ib2xpY0xpbmsobV90ZW1wRmlsZVBhdGgsIG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CiAK
ICAgICAgICAgLy8gQ3JlYXRlIHRlbXAgZGlyZWN0b3J5LgogICAgICAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKLSAgICAgICAgbV90ZW1wRW1wdHlGb2xk
ZXJQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eUZvbGRlciIs
IHRlbXBvcmFyeUZpbGUpOworICAgICAgICBtX3RlbXBFbXB0eUZvbGRlclBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5Rm9sZGVyIl9zLCB0ZW1wb3JhcnlGaWxl
KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOwogICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5Rm9sZGVyUGF0aCk7CiAgICAgICAg
IEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX3RlbXBFbXB0eUZvbGRlclBhdGgpOwog
Ci0gICAgICAgIG1fdGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5Rm9sZGVyLXN5bWxpbmsiLCB0ZW1wb3JhcnlGaWxlKTsK
KyAgICAgICAgbV90ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlGb2xkZXItc3ltbGluayJfcywgdGVtcG9yYXJ5RmlsZSk7
CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlKTsKICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKTsKICAg
ICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEVtcHR5Rm9sZGVyUGF0
aCwgbV90ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCk7CiAKLSAgICAgICAgbV90ZW1wRW1wdHlG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0Rmls
ZSIsIGhhbmRsZSk7CisgICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fc3BhY2VDb250YWlu
aW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBU
ZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIl9zLCBo
YW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAg
ICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFU
ZXN0IUZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5k
bGUpOwogCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAg
ICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKIAogVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBmaWxlVHlwZSkKIHsKLSAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9l
cy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3Qt
ZXhpc3QiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlVHlwZShkb2VzTm90
RXhpc3RQYXRoKSk7CiAKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUodGVtcEZp
bGVQYXRoKCkpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7CkBAIC0xNjMsMTMgKzE2
MywxMyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlKQogICAgIEVYUEVDVF9FUShG
aWxlU3lzdGVtOjpmaWxlVHlwZSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpLCBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5KTsKIAogICAgIC8vIFN5bWxpbmsgdG8gZmlsZSBzeW1saW5rIGNh
c2UuCi0gICAgYXV0byBzeW1saW5rVG9GaWxlU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1RvU3lt
bGluayIpOworICAgIGF1dG8gc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5bWxpbmtU
b1N5bWxpbmsiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGlj
TGluayh0ZW1wRmlsZVN5bWxpbmtQYXRoKCksIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCkpOwog
ICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpmaWxlVHlwZShzeW1saW5rVG9GaWxlU3ltbGlua1Bh
dGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5rKTsKIAogICAgIC8vIFN5bWxp
bmsgdG8gZGlyZWN0b3J5IHN5bWxpbmsgY2FzZS4KICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlOwotICAgIGF1dG8gc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiLCBo
YW5kbGUpOworICAgIGF1dG8gc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiX3MsIGhhbmRsZSk7
CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShzeW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCk7CiAgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRo
KCksIHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKSk7CkBAIC0xODYsNyArMTg2LDcgQEAg
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBmaWxlVHlwZSkKIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKQogewotICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJkb2VzLW5vdC1leGlzdCJfcyk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVU
eXBlRm9sbG93aW5nU3ltbGlua3MoZG9lc05vdEV4aXN0UGF0aCkpOwogCiAgICAgRVhQRUNUX0VR
KEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVQYXRoKCkpLCBG
aWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7CkBAIC0xOTUsMTMgKzE5NSwxMyBAQCBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MpCiAgICAgRVhQRUNU
X0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3ModGVtcEVtcHR5Rm9sZGVy
UGF0aCgpKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAKICAgICAvLyBTeW1s
aW5rIHRvIGZpbGUgc3ltbGluayBjYXNlLgotICAgIGF1dG8gc3ltbGlua1RvRmlsZVN5bWxpbmtQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRl
clBhdGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiKTsKKyAgICBhdXRvIHN5bWxpbmtUb0ZpbGVTeW1s
aW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlG
b2xkZXJQYXRoKCksICJzeW1saW5rVG9TeW1saW5rIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZpbGVTeW1saW5rUGF0aCgpLCBzeW1saW5r
VG9GaWxlU3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGVG
b2xsb3dpbmdTeW1saW5rcyhzeW1saW5rVG9GaWxlU3ltbGlua1BhdGgpLCBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6UmVndWxhcik7CiAKICAgICAvLyBTeW1saW5rIHRvIGRpcmVjdG9yeSBzeW1saW5r
IGNhc2UuCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICBh
dXRvIHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIiwgaGFuZGxlKTsKKyAgICBhdXRvIHN5bWxp
bmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXBUZXN0RmlsZS1zeW1saW5rIl9zLCBoYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3ltbGlua1RvRGlyZWN0
b3J5U3ltbGlua1BhdGgpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJv
bGljTGluayh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9EaXJlY3RvcnlT
eW1saW5rUGF0aCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcykKICNpZiBPUyhVTklYKQogVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBpc0hpZGRlbkZpbGUpCiB7Ci0gICAgYXV0byBoaWRkZW5GaWxlUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICIu
aGlkZGVuRmlsZSIpOworICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLmhpZGRlbkZpbGUi
X3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZShoaWRkZW5GaWxl
UGF0aCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmlsZSh0ZW1w
RmlsZVBhdGgoKSkpOwpAQCAtMjQzLDE1ICsyNDMsMTUgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBvcGVuRXhpc3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKIFRFU1RfRihGaWxlU3lzdGVt
VGVzdCwgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7Ci0gICAgYXV0byB0ZW1wb3JhcnlUZXN0Rm9sZGVy
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIGF1dG8gdGVtcG9yYXJ5VGVzdEZvbGRlciA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJkZWxldGVOb25FbXB0eURpcmVjdG9yeVRlc3Qi
X3MsIHRlbXBvcmFyeUZpbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlG
aWxlKTsKIAogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcG9yYXJ5
VGVzdEZvbGRlcikpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRlc3RG
b2xkZXIsIHsgInN1YmZvbGRlciIgfSkpKTsKLSAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUxLnR4
dCIpKTsKLSAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCIpKTsKLSAgICBjcmVhdGVUZXN0
RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRlc3RG
b2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlMy50eHQiIH0pKTsKLSAgICBjcmVhdGVUZXN0Rmls
ZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRlc3RGb2xk
ZXIsIHsgInN1YmZvbGRlciIsICJmaWxlNC50eHQiIH0pKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiX3MgfSkpKTsKKyAgICBj
cmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9y
YXJ5VGVzdEZvbGRlciwgImZpbGUxLnR4dCJfcykpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmls
ZTIudHh0Il9zKSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiX3MsICJmaWxl
My50eHQiX3MgfSkpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIl9zLCAiZmls
ZTQudHh0Il9zIH0pKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5VGVzdEZvbGRlcikpOwogICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsK
QEAgLTI2NCwxMyArMjY0LDEzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZUV4aXN0cykK
ICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlU3ltbGlua1Bh
dGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEVtcHR5
RmlsZVBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVt
cEVtcHR5Rm9sZGVyUGF0aCgpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRl
clBhdGgoKSwgImRvZXMtbm90LWV4aXN0IikpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3MpKSk7CiB9CiAKIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgZmlsZUV4aXN0c0Jyb2tlblN5bWxpbmspCiB7Ci0gICAgYXV0byBkb2VzTm90
RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7Ci0gICAgYXV0byBzeW1saW5rUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRo
KCksICJkb2VzLW5vdC1leGlzdC1zeW1saW5rIik7CisgICAgYXV0byBkb2VzTm90RXhpc3RQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsKKyAgICBhdXRvIHN5bWxpbmtQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRv
ZXMtbm90LWV4aXN0LXN5bWxpbmsiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNy
ZWF0ZVN5bWJvbGljTGluayhkb2VzTm90RXhpc3RQYXRoLCBzeW1saW5rUGF0aCkpOwogICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRvZXNOb3RFeGlzdFBhdGgpKTsKICAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOyAvLyBm
aWxlRXhpc3RzKCkgZm9sbG93cyBzeW1saW5rcy4KQEAgLTI4MSw3ICsyODEsNyBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIGZpbGVFeGlzdHNCcm9rZW5TeW1saW5rKQogVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBmaWxlRXhpc3RzU3ltbGlua1RvU3ltbGluaykKIHsKICAgICAvLyBDcmVhdGUgYSB2
YWxpZCBzeW1saW5rIHRvIGEgc3ltbGluayB0byBhIHJlZ3VsYXIgZmlsZS4KLSAgICBhdXRvIHN5
bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgInN5bWxpbmsiKTsKKyAgICBhdXRvIHN5bWxpbmtQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5
bWxpbmsiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGlu
ayh0ZW1wRmlsZVN5bWxpbmtQYXRoKCksIHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9FUShGaWxl
U3lzdGVtOjpmaWxlVHlwZShzeW1saW5rUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1i
b2xpY0xpbmspOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGVs
ZXRlRW1wdHlEaXJlY3RvcnlDb250YWluaW5nRFNTdG9yZUZpbGUpCiAgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKIAogICAgIC8v
IENyZWF0ZSAuRFNTdG9yZSBmaWxlLgotICAgIGF1dG8gZHNTdG9yZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLkRTX1N0
b3JlIik7CisgICAgYXV0byBkc1N0b3JlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICIuRFNfU3RvcmUiX3MpOwogICAgIGF1
dG8gZHNTdG9yZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGRzU3RvcmVQYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShkc1N0b3JlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVz
dERhdGEpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZHNTdG9yZUhhbmRsZSk7CkBAIC0z
NjAsMTQgKzM2MCwxNCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5T25Ob25FbXB0eURpcmVjdG9yeSkKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwogCiAgICAgLy8gQ3JlYXRlIC5EU1N0b3Jl
IGZpbGUuCi0gICAgYXV0byBkc1N0b3JlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICIuRFNfU3RvcmUiKTsKKyAgICBhdXRv
IGRzU3RvcmVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgIi5EU19TdG9yZSJfcyk7CiAgICAgYXV0byBkc1N0b3JlSGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZHNTdG9yZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZTo6V3JpdGUpOwogICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGRzU3RvcmVIYW5kbGUs
IEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShkc1N0b3JlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGRzU3RvcmVQYXRoKSk7CiAKICAgICAvLyBDcmVhdGUgYSBkdW1t
eSBmaWxlLgotICAgIGF1dG8gZHVtbXlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkdW1teUZpbGUiKTsKKyAgICBh
dXRvIGR1bW15RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZHVtbXlGaWxlIl9zKTsKICAgICBhdXRvIGR1bW15Rmls
ZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGR1bW15RmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGR1bW15
RmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRh
KSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGR1bW15RmlsZUhhbmRsZSk7CkBAIC0zOTEs
MTQgKzM5MSwxNCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
T25BUmVndWxhckZpbGUpCiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGVsZXRlRW1wdHlEaXJl
Y3RvcnlEb2VzTm90RXhpc3QpCiB7Ci0gICAgYXV0byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRv
ZXMtbm90LWV4aXN0Iik7CisgICAgYXV0byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90
LWV4aXN0Il9zKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkb2Vz
Tm90RXhpc3RQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KGRvZXNOb3RFeGlzdFBhdGgpKTsKIH0KIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBtb3ZlRmlsZSkKIHsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInRlbXBGaWxlLW1vdmVk
Iik7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJ0ZW1wRmlsZS1tb3ZlZCJfcyk7CiAgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogICAg
IEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uKSk7CiAgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bW92ZUZpbGUodGVtcEZpbGVQYXRoKCksIGRlc3RpbmF0
aW9uKSk7CkBAIC00MzIsMjQgKzQzMiwyNCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG1vdmVG
aWxlT3ZlcndyaXRlc0Rlc3RpbmF0aW9uKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtb3ZlRGly
ZWN0b3J5KQogewogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlG
aWxlOwotICAgIGF1dG8gdGVtcG9yYXJ5VGVzdEZvbGRlciA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJtb3ZlRGlyZWN0b3J5VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIGF1dG8g
dGVtcG9yYXJ5VGVzdEZvbGRlciA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJtb3Zl
RGlyZWN0b3J5VGVzdCJfcywgdGVtcG9yYXJ5RmlsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKHRlbXBvcmFyeUZpbGUpOwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKLSAgICBhdXRvIHRlc3RG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlU
ZXN0Rm9sZGVyLCAidGVzdEZpbGUiKTsKKyAgICBhdXRvIHRlc3RGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAidGVzdEZp
bGUiX3MpOwogICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHRlc3RG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmls
ZVN5c3RlbVRlc3REYXRhKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZXN0RmlsZVBhdGgp
KTsKIAotICAgIGF1dG8gZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgIm1vdmVEaXJlY3RvcnlUZXN0Iik7
CisgICAgYXV0byBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAibW92ZURpcmVjdG9yeVRlc3QiX3MpOwog
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1vdmVGaWxlKHRlbXBvcmFyeVRlc3RGb2xkZXIs
IGRlc3RpbmF0aW9uUGF0aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyh0ZXN0RmlsZVBhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRlc3RpbmF0
aW9uUGF0aCwgInRlc3RGaWxlIikpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkZXN0aW5hdGlvblBh
dGgsICJ0ZXN0RmlsZSJfcykpKTsKIAogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShkZXN0aW5hdGlvblBhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpOwpAQCAtNDY4LDcgKzQ2OCw3IEBA
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVNpemUpCiAgICAgQVNTRVJUX1RSVUUoZmlsZVNp
emUpOwogICAgIEVYUEVDVF9FUSgqZmlsZVNpemUsIDBVKTsKIAotICAgIFN0cmluZyBmaWxlVGhh
dERvZXNOb3RFeGlzdCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
RW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIFN0cmluZyBmaWxlVGhh
dERvZXNOb3RFeGlzdCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
RW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcyk7CiAgICAgZmlsZVNpemUgPSBG
aWxlU3lzdGVtOjpmaWxlU2l6ZShmaWxlVGhhdERvZXNOb3RFeGlzdCk7CiAgICAgRVhQRUNUX1RS
VUUoIWZpbGVTaXplKTsKIH0KQEAgLTQ3OCw3ICs0NzgsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIG1ha2VBbGxEaXJlY3RvcmllcykKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwogICAgIEVYUEVDVF9FUShGaWxlU3lzdGVt
OjpmaWxlVHlwZSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6
RGlyZWN0b3J5KTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7Ci0gICAgU3RyaW5nIHN1YkZvbGRlclBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgo
KSwgeyAic3ViRm9sZGVyMSIsICJzdWJGb2xkZXIyIiwgInN1YkZvbGRlcjMiIH0pOworICAgIFN0
cmluZyBzdWJGb2xkZXJQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgInN1YkZvbGRlcjEiX3MsICJzdWJGb2xkZXIyIl9z
LCAic3ViRm9sZGVyMyJfcyB9KTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhzdWJGb2xkZXJQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKHN1YkZvbGRlclBhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHN1YkZvbGRlclBhdGgpKTsKQEAgLTUzMywxMCArNTMzLDEwIEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlU3ltYm9saWNMaW5rRm9sZGVyKQogCiBURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIGNyZWF0ZVN5bWJvbGljTGlua0ZpbGVEb2VzTm90RXhpc3QpCiB7Ci0gICAg
U3RyaW5nIGZpbGVUaGF0RG9lc05vdEV4aXN0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAg
U3RyaW5nIGZpbGVUaGF0RG9lc05vdEV4aXN0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsKICAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlVGhhdERvZXNOb3RFeGlz
dCkpOwogCi0gICAgYXV0byBzeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdC1zeW1saW5r
Iik7CisgICAgYXV0byBzeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdC1zeW1saW5rIl9z
KTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkp
OwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhmaWxlVGhh
dERvZXNOb3RFeGlzdCwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIFRFU1RfRihG
aWxlU3lzdGVtVGVzdCwgY3JlYXRlU3ltYm9saWNMaW5rRmlsZURvZXNOb3RFeGlzdCkKIAogVEVT
VF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGluaykKIHsKLSAgICBhdXRvIGhhcmRsaW5r
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJ0ZW1wRmlsZS1oYXJkbGluayIpOworICAgIGF1dG8gaGFyZGxpbmtQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgo
KSwgInRlbXBGaWxlLWhhcmRsaW5rIl9zKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhoYXJkbGlua1BhdGgpKTsKIAogICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lz
dGVtOjpmaWxlU2l6ZSh0ZW1wRmlsZVBhdGgoKSk7CkBAIC01NzIsNyArNTcyLDcgQEAgVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVIYXJkTGluaykKIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBjcmVhdGVIYXJkTGlua09yQ29weUZpbGUpCiB7Ci0gICAgYXV0byBoYXJkbGlua1BhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCAidGVtcEZpbGUtaGFyZGxpbmsiKTsKKyAgICBhdXRvIGhhcmRsaW5rUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJ0ZW1w
RmlsZS1oYXJkbGluayJfcyk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoaGFyZGxpbmtQYXRoKSk7CiAKICAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6Zmls
ZVNpemUodGVtcEZpbGVQYXRoKCkpOwpAQCAtNjA0LDEzICs2MDQsMTMgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBoYXJkTGlua0NvdW50KQogICAgIEFTU0VSVF9UUlVFKCEhbGlua0NvdW50KTsK
ICAgICBFWFBFQ1RfRVEoKmxpbmtDb3VudCwgMVUpOwogCi0gICAgYXV0byBoYXJkbGluazFQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgInRlbXBGaWxlLWhhcmRsaW5rMSIpOworICAgIGF1dG8gaGFyZGxpbmsxUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJ0ZW1wRmlsZS1oYXJkbGluazEiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Omhh
cmRMaW5rKHRlbXBGaWxlUGF0aCgpLCBoYXJkbGluazFQYXRoKSk7CiAgICAgbGlua0NvdW50ID0g
RmlsZVN5c3RlbTo6aGFyZExpbmtDb3VudCh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX1RS
VUUoISFsaW5rQ291bnQpOwogICAgIEVYUEVDVF9FUSgqbGlua0NvdW50LCAyVSk7CiAKLSAgICBh
dXRvIGhhcmRsaW5rMlBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZpbGUtaGFyZGxpbmsyIik7CisgICAgYXV0byBo
YXJkbGluazJQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgInRlbXBGaWxlLWhhcmRsaW5rMiJfcyk7CiAgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6aGFyZExpbmsodGVtcEZpbGVQYXRoKCksIGhhcmRsaW5rMlBhdGgpKTsK
ICAgICBsaW5rQ291bnQgPSBGaWxlU3lzdGVtOjpoYXJkTGlua0NvdW50KHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfVFJVRSghIWxpbmtDb3VudCk7CkBAIC02ODYsMTMgKzY4NiwxMyBAQCBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKQogICAgIEFT
U0VSVF9UUlVFKCEhbmV3TW9kaWZpY2F0aW9uVGltZSk7CiAgICAgRVhQRUNUX0dUKG5ld01vZGlm
aWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgbW9kaWZpY2F0aW9uVGlt
ZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKIAotICAgIGF1dG8gZG9lc05vdEV4aXN0
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRo
KCksICJkb2VzLW5vdC1leGlzdCJfcyk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnVw
ZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKGRvZXNOb3RFeGlzdFBhdGgpKTsKIH0KIAogVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBwYXRoRmlsZU5hbWUpCiB7Ci0gICAgYXV0byB0ZXN0UGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCB7ICJzdWJmb2xkZXIiLCAiZmlsZW5hbWUudHh0IiB9KTsKKyAgICBhdXRvIHRlc3RQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRo
KCksIHsgInN1YmZvbGRlciJfcywgImZpbGVuYW1lLnR4dCJfcyB9KTsKICAgICBFWFBFQ1RfU1RS
RVEoImZpbGVuYW1lLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhGaWxlTmFtZSh0ZXN0UGF0aCkudXRm
OCgpLmRhdGEoKSk7CiAKICNpZiBPUyhVTklYKQpAQCAtNzE0LDggKzcxNCw4IEBAIFRFU1RfRihG
aWxlU3lzdGVtVGVzdCwgcGF0aEZpbGVOYW1lKQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBh
cmVudFBhdGgpCiB7Ci0gICAgYXV0byB0ZXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJmb2xkZXIiLCAiZmls
ZW5hbWUudHh0IiB9KTsKLSAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN1YmZvbGRlciIpLnV0ZjgoKS5k
YXRhKCksIEZpbGVTeXN0ZW06OnBhcmVudFBhdGgodGVzdFBhdGgpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGF1dG8gdGVzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3ViZm9sZGVyIl9zLCAiZmlsZW5hbWUudHh0Il9z
IH0pOworICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ViZm9sZGVyIl9zKS51dGY4KCkuZGF0YSgpLCBG
aWxlU3lzdGVtOjpwYXJlbnRQYXRoKHRlc3RQYXRoKS51dGY4KCkuZGF0YSgpKTsKICNpZiBPUyhV
TklYKQogICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAiLCBGaWxlU3lzdGVtOjpwYXJlbnRQYXRo
KCIvdmFyL3RtcC9leGFtcGxlLnR4dCIpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEVYUEVDVF9TVFJF
USgiL3Zhci90bXAiLCBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKCIvdmFyL3RtcC8iKS51dGY4KCku
ZGF0YSgpKTsKQEAgLTczMSw0OCArNzMxLDQ4IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcGFy
ZW50UGF0aCkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KQogewogI2lmIE9TKFVOSVgpCi0gICAgRVhQRUNUX1NUUkVRKCIvdmFyIiwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvIiwgInZhciIpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IEVYUEVDVF9TVFJFUSgiL3Zhci90bXAiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoIi92YXIvIiwgInRtcCIpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
L3Zhci90bXAiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIiLCAi
dG1wIikudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4
dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3Zhci90bXAiLCAiZmls
ZS50eHQiKS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIi92YXIvIiwgRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyIiwgIiIpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIEVYUEVDVF9TVFJFUSgiL3Zhci8iLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoIi92YXIvIiwgIiIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgi
L3ZhciIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiLyJfcywgInZhciJf
cykudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3Zhci8iX3MsICJ0bXAiX3MpLnV0ZjgoKS5k
YXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAiLCBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoIi92YXIiX3MsICJ0bXAiX3MpLnV0ZjgoKS5kYXRhKCkpOworICAg
IEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoIi92YXIvdG1wIl9zLCAiZmlsZS50eHQiX3MpLnV0ZjgoKS5kYXRhKCkp
OworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci8iLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoIi92YXIiX3MsICIiX3MpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJF
USgiL3Zhci8iLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIvIl9z
LCAiIl9zKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogI2lmIE9TKFdJTkRPV1MpCi0gICAgRVhQ
RUNUX1NUUkVRKCJDOlxcRm9vIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCJDOlxcIiwgIkZvbyIpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZv
b1xcQmFyIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJDOlxcRm9vIiwg
IkJhciIpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxG
aWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXEZvb1xc
QmFyIiwgIkZpbGUudHh0IikudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxc
Rm9vIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJDOlxcIl9zLCAiRm9v
Il9zKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhciIsIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXEZvbyJfcywgIkJhciJfcyku
dXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJDOlxcRm9vXFxCYXIiX3Ms
ICJGaWxlLnR4dCJfcykudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIH0KIAogVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKQogewogICAgIEVYUEVDVF9TVFJF
USh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkudXRmOCgpLmRhdGEoKSwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgfSkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJmaWxlLnR4dCIpLnV0ZjgoKS5kYXRhKCksIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCB7ICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJm
aWxlLnR4dCJfcykudXRmOCgpLmRhdGEoKSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgImZpbGUudHh0Il9zIH0pLnV0ZjgoKS5k
YXRhKCkpOwogI2lmIE9TKFVOSVgpCi0gICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4
dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIi8iLCB7ICJ2YXIiLCAi
dG1wIiwgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIi92
YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygi
L3ZhciIsIHsgInRtcCIsICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoIi92YXIvIiwgeyAidG1wIiwgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsK
LSAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci90bXAiLCB7ICJmaWxlLnR4dCIgfSkudXRmOCgpLmRh
dGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIi8iX3MsIHsgInZhciJfcywgInRtcCJfcywgImZp
bGUudHh0Il9zIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAv
ZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFyIl9z
LCB7ICJ0bXAiX3MsICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NU
UkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoIi92YXIvIl9zLCB7ICJ0bXAiX3MsICJmaWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0YSgp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci90bXAiX3MsIHsgImZpbGUudHh0Il9zIH0pLnV0
ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAjaWYgT1MoV0lORE9XUykKLSAgICBFWFBFQ1RfU1RSRVEo
IkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKCJDOlxcIiwgeyAiRm9vIiwgIkJhciIsICJGaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvbyIsIHsgIkJhciIsICJGaWxlLnR4
dCIgfSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZp
bGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xc
IiwgeyAiQmFyIiwgIkZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnRzKCJDOlxcRm9vXFxCYXIiLCB7ICJGaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xcQmFyXFwiLCB7ICJGaWxlLnR4dCIg
fSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUu
dHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXCJfcywgeyAi
Rm9vIl9zLCAiQmFyIl9zLCAiRmlsZS50eHQiX3MgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvbyJfcywgeyAiQmFyIl9zLCAiRmlsZS50eHQiX3MgfSku
dXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xcIl9zLCB7
ICJCYXIiX3MsICJGaWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnRzKCJDOlxcRm9vXFxCYXIiX3MsIHsgIkZpbGUudHh0Il9zIH0pLnV0ZjgoKS5kYXRh
KCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXEJhclxcIl9zLCB7ICJGaWxl
LnR4dCJfcyB9KS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogfQogCiBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIGxpc3REaXJlY3RvcnkpCiB7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImEudHh0Iikp
OwotICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJiLnR4dCIpKTsKLSAgICBjcmVhdGVUZXN0RmlsZShG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCAiYmFyLnBuZyIpKTsKLSAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZm9vLnBuZyIpKTsKLSAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN1YmZvbGRlciIpKTsKLSAgICBjcmVh
dGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgeyAic3ViZm9sZGVyIiwgImMudHh0IiB9KSk7Ci0gICAgY3JlYXRlVGVz
dEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksIHsgInN1YmZvbGRlciIsICJkLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RGaWxl
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRo
KCksICJhLnR4dCJfcykpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJiLnR4dCJfcykpOworICAg
IGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
RW1wdHlGb2xkZXJQYXRoKCksICJiYXIucG5nIl9zKSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwg
ImZvby5wbmciX3MpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN1
YmZvbGRlciJfcykpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJmb2xkZXIiX3MsICJj
LnR4dCJfcyB9KSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgInN1YmZvbGRlciJfcywgImQu
dHh0Il9zIH0pKTsKIAogICAgIGF1dG8gbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKTsKICAgICBBU1NFUlRfRVEobWF0Y2hlcy5zaXplKCks
IDVVKTsKQEAgLTc4MywxNiArNzgzLDE2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgbGlzdERp
cmVjdG9yeSkKICAgICBFWFBFQ1RfU1RSRVEobWF0Y2hlc1szXS51dGY4KCkuZGF0YSgpLCAiZm9v
LnBuZyIpOwogICAgIEVYUEVDVF9TVFJFUShtYXRjaGVzWzRdLnV0ZjgoKS5kYXRhKCksICJzdWJm
b2xkZXIiKTsKIAotICAgIG1hdGNoZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJz
dWJmb2xkZXIiKSk7CisgICAgbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwg
InN1YmZvbGRlciJfcykpOwogICAgIEFTU0VSVF9FUShtYXRjaGVzLnNpemUoKSwgMlUpOwogICAg
IHN0ZDo6c29ydChtYXRjaGVzLmJlZ2luKCksIG1hdGNoZXMuZW5kKCksIFdURjo6Y29kZVBvaW50
Q29tcGFyZUxlc3NUaGFuKTsKICAgICBFWFBFQ1RfU1RSRVEobWF0Y2hlc1swXS51dGY4KCkuZGF0
YSgpLCAiYy50eHQiKTsKICAgICBFWFBFQ1RfU1RSRVEobWF0Y2hlc1sxXS51dGY4KCkuZGF0YSgp
LCAiZC50eHQiKTsKIAotICAgIG1hdGNoZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJkb2VzLW5vdC1leGlzdCIpKTsKKyAgICBtYXRjaGVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVy
UGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3MpKTsKICAgICBBU1NFUlRfRVEobWF0Y2hlcy5zaXpl
KCksIDBVKTsKIAotICAgIG1hdGNoZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJh
LnR4dCIpKTsKKyAgICBtYXRjaGVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiYS50
eHQiX3MpKTsKICAgICBBU1NFUlRfRVEobWF0Y2hlcy5zaXplKCksIDBVKTsKIAogICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBFbXB0eUZvbGRl
clBhdGgoKSkpOwpAQCAtODAwLDcgKzgwMCw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgbGlz
dERpcmVjdG9yeSkKIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFsUGF0aCkKIHsKLSAgICBh
dXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIGRv
ZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVt
cEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3MpOwogICAgIEVYUEVDVF9TVFJF
UShGaWxlU3lzdGVtOjpyZWFsUGF0aChkb2VzTm90RXhpc3RQYXRoKS51dGY4KCkuZGF0YSgpLCBk
b2VzTm90RXhpc3RQYXRoLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byByZXNvbHZlZFRlbXBG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHRlbXBGaWxlUGF0aCgpKTsKQEAgLTgxMiwy
MyArODEyLDIzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcmVhbFBhdGgpCiAgICAgRVhQRUNU
X1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCkp
LnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkVGVtcEVtcHR5Rm9sZGVyUGF0aC51dGY4KCkuZGF0YSgp
KTsgLy8gU2hvdWxkIHJlc29sdmUgZGlyZWN0b3J5IHN5bWxpbmsuCiAKICAgICAvLyBTeW1saW5r
IHRvIHN5bWxpbmsgY2FzZS4KLSAgICBhdXRvIHN5bWxpbmtUb1N5bWxpbmtQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5
bWxpbmtUb1N5bWxpbmsiKTsKKyAgICBhdXRvIHN5bWxpbmtUb1N5bWxpbmtQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5
bWxpbmtUb1N5bWxpbmsiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5
bWJvbGljTGluayh0ZW1wRmlsZVN5bWxpbmtQYXRoKCksIHN5bWxpbmtUb1N5bWxpbmtQYXRoKSk7
CiAgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKHN5bWxpbmtUb1N5bWxpbmtQ
YXRoKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFRlbXBGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsg
Ly8gU2hvdWxkIHJlc29sdmUgYWxsIHN5bWxpbmtzLgogCi0gICAgYXV0byBzdWJGb2xkZXJQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgInN1YmZvbGRlciIpOworICAgIGF1dG8gc3ViRm9sZGVyUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzdWJmb2xk
ZXIiX3MpOwogICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdWJGb2xkZXJQYXRo
KTsKICAgICBhdXRvIHJlc29sdmVkU3ViRm9sZGVyUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRo
KHN1YkZvbGRlclBhdGgpOwotICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpyZWFsUGF0aChG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3ViRm9sZGVyUGF0aCwgIi4uIikp
LnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkVGVtcEVtcHR5Rm9sZGVyUGF0aC51dGY4KCkuZGF0YSgp
KTsgLy8gU2hvdWxkIHJlc29sdmUgIi4uIi4KLSAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6
cmVhbFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQ
YXRoLCB7ICIuLiIsICJzdWJmb2xkZXIiIH0pKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFN1YkZv
bGRlclBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIuLiIuCi0gICAgRVhQ
RUNUX1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHMoc3ViRm9sZGVyUGF0aCwgeyAiLi4iLCAiLiIsICIuIiwgInN1YmZvbGRlciIg
fSkpLnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkU3ViRm9sZGVyUGF0aC51dGY4KCkuZGF0YSgpKTsg
Ly8gU2hvdWxkIHJlc29sdmUgIi4uIiBhbmQgIi4iCisgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0
ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdWJGb2xk
ZXJQYXRoLCAiLi4iX3MpKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFRlbXBFbXB0eUZvbGRlclBh
dGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIuLiIuCisgICAgRVhQRUNUX1NU
UkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoc3ViRm9sZGVyUGF0aCwgeyAiLi4iX3MsICJzdWJmb2xkZXIiX3MgfSkpLnV0ZjgoKS5k
YXRhKCksIHJlc29sdmVkU3ViRm9sZGVyUGF0aC51dGY4KCkuZGF0YSgpKTsgLy8gU2hvdWxkIHJl
c29sdmUgIi4uIi4KKyAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRoLCB7ICIuLiJfcywg
Ii4iX3MsICIuIl9zLCAic3ViZm9sZGVyIl9zIH0pKS51dGY4KCkuZGF0YSgpLCByZXNvbHZlZFN1
YkZvbGRlclBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIuLiIgYW5kICIu
IgogfQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJlYWRFbnRpcmVGaWxlKQogewogICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRF
bnRpcmVGaWxlKGVtcHR5U3RyaW5nKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0IikpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKSkpOwogICAg
IEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSh0ZW1wRW1wdHlGaWxlUGF0
aCgpKSk7CiAKICAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RmlsZU1vbml0b3IuY3BwCmluZGV4IDIzZjY2MWNmMTZhYzBjM2Q3ZmZlOWExYzBlZWJmZWNjNzkx
OTBjNjkuLjllMjBhMzQxZDViMWM4ZWQ0N2VhNGJjNmUyZjQyMjg1MjdlYTE4MDcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBm
aWxlCiAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBU
ZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSJfcywgaGFuZGxlKTsKICAgICAgICAgQVNT
RVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAg
ICAgICAgIAogICAgICAgICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5s
ZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
UHVzaERhdGFiYXNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNo
RGF0YWJhc2UuY3BwCmluZGV4IGVmMTYwMTk2NGJmY2Y4NWNmMzA5NGQ5ZDVmMGZlNWY1YjY0Zjlm
ZTkuLjczMjhjM2YxNWFjYTQ2YTAzOWIxNWYyZTExNTg2ZmY5M2M4MGY0YTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyBTdHJpbmcgbWFr
ZVRlbXBvcmFyeURhdGFiYXNlUGF0aCgpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZTsKLSAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiUHVzaERhdGFiYXNlIiwgaGFuZGxlLCAiLmRiIik7CisgICAgYXV0byBwYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlB1c2hEYXRhYmFzZSJfcywgaGFuZGxlLCAiLmRi
Il9zKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICByZXR1cm4gcGF0
aDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uY3BwCmluZGV4IDRjMWRkYTM3Y2E2ZTczNDY1Yjg3YjZlM2I1YjcyNTkxZWRhY2Rm
ODYuLjE4MDI4MjgzMDA3MjY5MDU4ZmY0ZDg3MTk2YTdlYjVlNDA0Mjg5Y2UgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApA
QCAtNDIsMTYgKzQyLDE2IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxl
CiAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAg
IG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0
RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSJfcywgaGFuZGxlKTsKICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBtX3NwYWNlQ29udGFp
bmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkg
VGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSJfcywg
aGFuZGxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAg
IAotICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBtX2Jh
bmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cCFFbXB0eSFUZXN0IUZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUi
LCBoYW5kbGUpOworICAgICAgICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSJfcywgaGFuZGxlKTsK
ICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKaW5kZXggZDAzNDFhODFkZWRhNzE5ZjM1ZmNjZTM5NDY1NWVjMjU1YWI4ZmJiNi4uMmUxMWVm
MzdiYzg1NDQ0ZTQzZThiMzE3ODJiZDg2M2QwZDJmYWVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcApAQCAtMzcs
MTEgKzM3LDExIEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIAog
ICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOwotICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIl9zLCBoYW5kbGUpOwogICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgdGVzdERhdGEoKSwgc3RybGVuKHRlc3RE
YXRhKCkpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgIG1fdGVt
cEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5
VGVzdEZpbGUiLCBoYW5kbGUpOworICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiX3MsIGhhbmRsZSk7CiAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRl
c3QubW0KaW5kZXggMDkwNWM3ZTAwMThlZDQ4YmU3MDQ4ZTQxMjAxMGU2NDcwOTJlY2Q5Mi4uNGVk
NmRjZGU4OWZkZmFmOWZhMjMwNzRhYjBkMDkyYjRlYmMwOGRlNyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJh
Y2tlclRlc3QubW0KQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
VEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpCiB7CiAgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICBTdHJpbmcgZGF0YWJh
c2VGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlEYXRh
YmFzZSIsIGhhbmRsZSk7CisgICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJhc2UiX3MsIGhhbmRsZSk7CiAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBhdXRvIGZpbGVTaXplID0gRmls
ZVN5c3RlbTo6ZmlsZVNpemUoZGF0YWJhc2VGaWxlUGF0aCkudmFsdWVfb3IoMCk7CkBAIC0xMDcs
NyArMTA3LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbikKICAgICBkYXRh
YmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1
bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3Ry
aW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChk
YXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBTdHJpbmcgZGF0YWJh
c2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5h
bWUgPSAiZGF0YWJhc2VfbmFtZSI7CkBAIC0xNTEsNyArMTUxLDcgQEAgVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBkYXRhYmFz
ZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNp
Z25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5n
IGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUg
PSAiZGF0YWJhc2VfbmFtZSI7CkBAIC0xODYsNyArMTg2LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNr
ZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFzZUZhaWxzKQogICAgIGRhdGFiYXNl
VHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2ln
bmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcg
ZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIFN0cmluZyBkYXRhYmFzZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiRGF0YWJhc2VzLmRiIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9
ICJkYXRhYmFzZV9uYW1lIjsKQEAgLTI0Miw3ICsyNDIsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tl
ciwgRGVsZXRlT3JpZ2luV2l0aE1pc3NpbmdFbnRyeUluRGF0YWJhc2VzVGFibGUpCiAgICAgZGF0
YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgo
dW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0
cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFz
ZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwpAQCAtMjUxLDcgKzI1
MSw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5
SW5EYXRhYmFzZXNUYWJsZSkKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMob3JpZ2luUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMob3JpZ2luUGF0aCkpOwogCi0gICAgU3RyaW5nIHdlYkRhdGFiYXNlUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIi
KTsKKyAgICBTdHJpbmcgd2ViRGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG9yaWdpblBhdGgsICJkYXRhYmFzZS5kYiJfcyk7CiAgICAgY3JlYXRlRmls
ZUF0UGF0aCh3ZWJEYXRhYmFzZVBhdGgpOwogCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFj
a2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CkBAIC0yODAsNyArMjgwLDcgQEAgVEVTVChEYXRh
YmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVv
dGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJh
c2VzLmRiIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFi
YXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1l
IjsKQEAgLTMyMiw3ICszMjIsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJh
c2VXaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90
YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAiRGF0YWJhc2VzLmRiIik7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFz
ZXMuZGIiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJh
c2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUi
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29v
a2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVz
LmNwcAppbmRleCA3YTNlY2E1NTU4MmVlZjgxNTI2NmE0NGFkNmM1ZWUyNTM2NmI3NWVlLi4wZDBi
MDA3ZjY0ZWRlNWM0M2QzYWRkYjBiMzg3MjdlMmE4MzdjM2YwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAg
ICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRi
LnNxbCJfcykpOwogICAgICAgICBtX2Nvb2tpZUphci0+b3BlbigpOwogICAgICAgICBtX2Nvb2tp
ZUphci0+c2V0QWNjZXB0UG9saWN5KENvb2tpZUFjY2VwdFBvbGljeTo6QWx3YXlzKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVTdG9y
YWdlRmlsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVTdG9y
YWdlRmlsZS5jcHAKaW5kZXggYzM2YzY1NDdmOTRlOTFjNmQ3MjRhMjBiZjhiZTc4YWI0MjQ3YjNk
NS4uNGIwNmU4ZDU4MGFiZGYzOWNjNjFlMGJhNTVjYWU5MzBkYTMyODI5NSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2llU3RvcmFnZUZpbGUuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZVN0b3JhZ2VGaWxlLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFn
ZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRAogVEVTVF9GKENvb2tp
ZVN0b3JhZ2VGaWxlLCBDdXN0b21QYXRoKQogewogICAgIGJvb2wgZGlkRmluaXNoTG9hZDsKLSAg
ICBhdXRvIGNvb2tpZVN0b3JhZ2VGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fY29va2llU3RvcmFnZURpcmVjdG9yeSwgImNvb2tpZS5qYXIuZGIiKTsKKyAgICBh
dXRvIGNvb2tpZVN0b3JhZ2VGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fY29va2llU3RvcmFnZURpcmVjdG9yeSwgImNvb2tpZS5qYXIuZGIiX3MpOwogCiAgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihu
dWxscHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkLm1tCmluZGV4IGFjYjdlNDFiYjY0YmYzZjY5N2RjOGJhOTEzOWIxOWY4MmM0MGM5
YTguLjI4ZmRhMWNjZjQ4NzVlM2E3MjM1MmU4YTM2NjcwM2U5M2M2ZmE5NTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMTA5
LDcgKzEwOSw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2Fk
LCBkb3dubG9hZCk7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhh
bmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiX3MsIGZpbGVIYW5k
bGUpOwogICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OwogCkBAIC00MTUsNyArNDE1LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVDVF9F
UShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0aW5h
dGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSJf
cywgZmlsZUhhbmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCAtIChOU1N0cmluZyAqKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aQogSUdOT1JFX1dBUk5JTkdTX0VORAogewogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0aW5h
dGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSJf
cywgZmlsZUhhbmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwpAQCAtNjUwLDcgKzY1MCw3
IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiAgICAgRVhQRUNUX1RSVUUoW2ZpbGVuYW1lIGhh
c1N1ZmZpeDpAIi51c2R6Il0pOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKGZpbGVuYW1lLCBmaWxlSGFuZGxlKTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoU3RyaW5nIHsgZmlsZW5hbWUgfSwgZmlsZUhh
bmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CiAKQEAgLTEwNzQsNyArMTA3NCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBEb3dubG9hZENhbmNl
bGluZ0RlbGVnYXRlCiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFt
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9wYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBfcGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIl9zLCBmaWxlSGFu
ZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIF9wYXRoLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVz
cy5tbQppbmRleCAxYzkyNTY2NGMwZTU3MTU2Y2YzOThlMzZhYjJkYmJkZTM4ZDVlZDZiLi5kZWNj
ZjMzN2RmOWE1NjFhZWI0MjE3NGIwZDIxZWI4Mjk1MWJjZmZjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1t
CkBAIC0zNzksNyArMzc5LDcgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKICAgICBFWFBFQ1Rf
RVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0g
KE5TU3RyaW5nICopRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJpbmcg
KilGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSJfcywgZmlsZUhh
bmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCRmlsZU5hbWUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCmluZGV4IGRiNjMzOTY0ZjYyYWFmMDg2NTM3M2NjZWIz
YjU4ZTJhMDA3MWEyMDIuLjMyZDkxMGE0Njg5YWNlM2NkNGI2YTFkYjRjYjg4NWY4NWExZDEwMzMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCRmlsZU5hbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJGaWxlTmFtZS5tbQpAQCAtODMsOSArODMsOSBAQCBzdGF0aWMgdm9pZCBydW5U
ZXN0KCkKICAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQlRl
c3QiOwogICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJPdGhl
ciI7CiAgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCVW51c2Vk
IjsKLSAgICBOU1N0cmluZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFzZU5hbWUpOwot
ICAgIE5TU3RyaW5nICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKLSAgICBO
U1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKKyAgICBOU1N0cmlu
ZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1
dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgZXhpc3RpbmdEYXRhYmFzZU5hbWUgfSk7CisgICAg
TlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGNyZWF0ZWREYXRhYmFzZU5hbWUgfSk7
CisgICAgTlNTdHJpbmcgKnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVT
eXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFt
ZSB9KTsKICAgICBOU1VSTCAqaWRiUm9vdFVSTCA9IFt3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKSBfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnldOwogICAgIE5TVVJMICpvbGRW
ZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl07CkBAIC0xMjcsOCArMTI3LDgg
QEAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3JpZXMoU3RyaW5nIHRlc3ROYW1lKQogICAgIGlm
ICh0ZXN0TmFtZSA9PSAibm9uZSIpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBOU1N0cmlu
ZyAqZXhpc3RpbmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1
dGVIYXNoRm9yRmlsZU5hbWUoZXhpc3RpbmdEYXRhYmFzZU5hbWUpOwotICAgIE5TU3RyaW5nICpj
cmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhh
c2hGb3JGaWxlTmFtZShjcmVhdGVkRGF0YWJhc2VOYW1lKTsKKyAgICBOU1N0cmluZyAqZXhpc3Rp
bmdEYXRiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoU3RyaW5nIHsgZXhpc3RpbmdEYXRhYmFzZU5hbWUgfSk7CisgICAgTlNTdHJpbmcg
KmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRl
SGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGNyZWF0ZWREYXRhYmFzZU5hbWUgfSk7CiAgICAgTlNV
UkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5VVJMID0g
W2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKICAgICBOU1VS
TCAqbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeVVSTCA9IFtuZXdWZXJzaW9uRGlyZWN0b3J5VVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDogQCJmaWxlX18wIl07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDIxY2I3NDQ3OGY5NjkzZDQ0YWY5YTdhOTZm
M2Y0NWUyNmMxNTdkYTkuLjkxMmQ0YWY1MDkxYWIzNWY4MDQ2NWFkNWEwM2NkYTM2ZDg1OTEyYjgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC04NzQsNyArODc0
LDcgQEAgVEVTVChXZWJLaXQsIE1pZ3JhdGVJbmRleGVkREJEYXRhVG9HZW5lcmFsU3RvcmFnZURp
cmVjdG9yeSkKIHsKICAgICBOU1VSTCAqaW5kZXhlZERCRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktp
dEFQSS9DdXN0b21XZWJzaXRlRGF0YS9JbmRleGVkREIiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJ
blBhdGhdIGlzRGlyZWN0b3J5OllFU107CiAgICAgTlNVUkwgKmluZGV4ZWREQk9yaWdpbkRpcmVj
dG9yeSA9IFtpbmRleGVkREJEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
djEvaHR0cHNfd2Via2l0Lm9yZ18wIl07Ci0gICAgTlNTdHJpbmcgKmluZGV4ZWREQkRhdGFiYXNl
TmFtZSA9IEAiVGVzdERhdGFiYXNlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBpbmRleGVkREJE
YXRhYmFzZU5hbWVbXSA9ICJUZXN0RGF0YWJhc2UiOwogICAgIE5TU3RyaW5nICpoYXNoZWRJbmRl
eGVkREJEYXRhYmFzZU5hbWUgPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFz
aEZvckZpbGVOYW1lKGluZGV4ZWREQkRhdGFiYXNlTmFtZSk7CiAgICAgTlNVUkwgKmluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gW2luZGV4ZWREQk9yaWdpbkRpcmVjdG9yeSBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6aGFzaGVkSW5kZXhlZERCRGF0YWJhc2VOYW1lXTsKICAgICBOU1VS
TCAqaW5kZXhlZERCRmlsZSA9IFtpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4IGRlOWQ4MzY1NzNm
MGVhMjExZDFkZjIyYjgwMzE1YjY4ZTQ1OGFkZTcuLjFkMWQ5ZmI4YTdlODdhMDAyYmEzZWM1ZGI4
NmUxMjcwN2JjM2M3YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRm
b3JtVXRpbGl0aWVzV2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9y
bVV0aWxpdGllc1dpbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIFN0cmluZyBtb2R1bGVE
aXJlY3RvcnkoKQogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKQogewot
ICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1
bGVEaXJlY3RvcnkoKSwgIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKTsKKyAgICBh
dXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGly
ZWN0b3J5KCksICJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIl9zKTsKICAgICByZXR1
cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKIH0K
IAo=
</data>
<flag name="commit-queue"
          id="484480"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456244</attachid>
            <date>2022-03-31 09:08:34 -0700</date>
            <delta_ts>2022-03-31 18:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220331090833.patch</filename>
            <type>text/plain</type>
            <size>315454</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwOTI5OWFiNTZlZDhmNDhjMjdlZDQ0
NjkxODQyZTRhNDAzMDExYWEuLjMxMzg4MTYzNzM4ZjM5Zjk5OTE4YjdkZjIxYjA0NTk0OGIyMmFk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0
ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1w
b3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAg
ICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAg
KiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1w
bDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVYUEVSSU1FTlRBTF9G
RUFUVVJFUyBmbGFnIHVzZSBvbiBDb2NvYSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOGJiNTVj
MGRjMTg5ZDAyMjYzODhkZjRjNDY4ODYwZTgxMDI0MzA2Li42Zjc5MzUxMzcyYTNkYWNmZjRmM2M5
N2RkZjliOWE2MzQzOTA3ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDMt
MjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdl
YktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29y
ZHNUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEJsb2JUYWJsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNv
cmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
UmVjb3JkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJbmZvVGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0Rh
dGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKToKKyAgICAgICAgKiBNb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpw
ZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyRGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6ZHVtcEhlYXApOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4pOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEJvb2xlYW4pOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZh
Y3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWls
ZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbmRl
eFNRTCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMy0zMSAgQWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBjb250YWluXSBDb250YWlu
bWVudCBkaXNhYmxlcyB0aGUgc3BlY2lhbCBoYW5kbGluZyBvZiB0aGUgSFRNTCBib2R5IGVsZW1l
bnQgZm9yIG92ZXJmbG93IHZpZXdwb3J0IHByb3BhZ2F0aW9uIFtwYXJ0Ml0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NDliMDdiOTI1OTU0MDU0MDNjODdjNDZjM2E4ZDAyYTFlNTI2MWRkZi4uNjI3NmE1OWRlYjkwYjE4
OTFiMGQ4MmE4YWVkMDFjYjdjYTAyZjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDcgQEAKKzIw
MjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVw
YXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBj
aGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
YXBwZW5kQm9vbGVhbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3Rh
dGlzdGljTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6bG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01l
YXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkRGVzdGluYXRp
b25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJh
c2U6OmNvbHVtbnNGb3JUYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmFk
ZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxl
QXR0cmlidXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkJsb2JTdG9yYWdlOjpnZXQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6Om1hcEZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9M
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW06CisgICAgICAgIChXZWJLaXQ6OkxhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVi
dWdGZWF0dXJlcy5jcHAuZXJiOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbToKKyAgICAgICAgKGVuY29kZU9iamVjdCk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAg
KHJlcGx5QmxvY2tTaWduYXR1cmUpOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSBfaW52b2tlTWV0aG9kOl0pOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJ
blBhdGgpOgorICAgICAgICAoV2ViS2l0OjpyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0
VG9rZW4pOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudEJ1bmRsZUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6
Z2V0Q2xpZW50UHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlh
bGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAqIFNo
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4u
bW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBTaGFyZWQv
SVBDVGVzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWVzc2FnZVRlc3REcml2ZXIpOgorICAg
ICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94
RXh0ZW5zaW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgpOgorICAgICAgICAoV2ViS2l0
OjpyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpyZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbik6CisgICAg
ICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpzYW5kYm94RGF0YVZhdWx0UGFyZW50RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6Z2V0
VXNlckRpcmVjdG9yeVN1ZmZpeCk6CisgICAgICAgIChXZWJLaXQ6OnBvcHVsYXRlU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJFdmVudEZh
Y3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6Om9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcDoKKyAgICAgICAgKFdLRG93
bmxvYWRTZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgor
ICAgICAgICAoV0tQYWdlR2V0U2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOgorICAgICAgICAo
V0tQYWdlR2V0U2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW1WYWx1ZVR5cGUpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlKToKKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpD
b250ZW50UnVsZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAoK1tXS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTDpdKToKKyAgICAgICAgKCtbV0tDb250ZW50
UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJl
ZmVyZW5jZXMgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmdldExhdW5j
aE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTdWJGcmFt
ZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW06CisgICAgICAgIChXZWJLaXQ6
OldlYktpdFN3aWZ0TGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRy
b2xsZXIgX3drQ2hhbmdlVGV4dFN0eWxlOl0pOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0
ZW1Db250cm9sbGVyIF93a0NoYW5nZVRleHRBbGlnbm1lbnQ6XSk6CisgICAgICAgICgtW1dLVGV4
dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgX3drQ2hhbmdlQ29sb3I6XSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRTZWN1cml0eU9yaWdp
bkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0
YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZXNl
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1v
dmFsVHJhY2tlcjo6c3RvcFdhaXRpbmdGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZCk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFs
VHJhY2tlcjo6Y2FuY2VsT3V0c3RhbmRpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZmlyZVJlbW92YWxDYWxs
YmFja0lmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0OjpzdG9wV2FpdGluZ0ZvckV2ZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW06CisgICAgICAgIChXZWJL
aXQ6OmJhc2U2NFByaXZhdGVLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VmlydHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRs
ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OldlYlBhZ2VHcm91cCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3Jl
YXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3Rp
ZnlQYWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURv
bWFpbnNGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bm90aWZ5
V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNl
cnZpY2VzRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUFuZEFwcGx5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldENoYW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6cmVjZWl2ZWROb25MaW5lYXJpemVkUERGU2VudGluZWwpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnRocmVhZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjphZG9w
dEJhY2tncm91bmRUaHJlYWREb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
cGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbToKKyAgICAgICAg
KFdlYktpdDo6Y3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6bG9hZFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpp
c1NhbWVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Z2V0RmlsZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVzb2x2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vz
c0hhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWspOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6Y2hhbmdlV29yZENhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9JUENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6
SlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rlcik6CisgICAgICAgIChJ
UEM6OmpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmxheWVy
VHJlZUFzVGV4dCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNpZW50
Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAg
IChXZWJLaXQ6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbToKKyAgICAgICAgKFdlYlB1c2hE
OjpBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVy
cm9yKToKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAg
ICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OkNsaWVudENvbm5lY3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQ
dXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZSk6CisgICAgICAgICogd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5oOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24u
bW06CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lz
dHJhdGlvbik6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlB1c2hEYWVtb25NYWluKToKKwogMjAyMi0wMy0zMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFWFBF
UklNRU5UQUxfRkVBVFVSRVMgZmxhZyBvbiBDb2NvYSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKaW5kZXggMTUzMWVjOGE5ZTRhZGZmMGI5NDBjODc4MWY2NmExYzBhZWQyNjBmNC4uY2FhZTU2
Mzc0NWU4MjhjODlmZWQ5MjE0NTAyZGRiMzJmMWUwNjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2lu
ZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIpOgorCiAy
MDIyLTAzLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRHVzdCBvZmYgTWFjIENNYWtlIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9n
CmluZGV4IDAwNjczNjcwOWEyYzEyYTI2MDk4ODdjOWQ3Nzg0MmMzNDA0NWNlMjYuLjEzZGQ2MzNk
ZDI4NDVkMWQ5MDNkOTY3YmZiOGQ0NWY0NDdiYzEwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBt
YWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
ZXRJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKToKKwogMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlw
ZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0OTY3NzllNDE4MDg4MGI3NTVkNmM4OGNj
YzBhNDZkNjFmZjRlNWRlLi5iOTlhODk5ZjgxZDRkMDc3ZjA2MzJmOTM2NjM4NTIyNzQyODAxMzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjItMDMt
MjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdl
YktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tOgorICAgICAgICAoSGlz
dG9yeVByb3BlcnR5TGlzdFdyaXRlcjo6d3JpdGVPYmplY3RzKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAod2ViQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAo
Y3JlYXRlU2VsZWN0b3JFeGNlcHRpb25NYXApOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjb3Jl
Q29tbWFuZEJ5TmFtZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdmFsaWRhdGVVc2VySW50
ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nl
dFByaW50aW5nOm1pbmltdW1QYWdlTG9naWNhbFdpZHRoOmxvZ2ljYWxIZWlnaHQ6b3JpZ2luYWxQ
YWdlV2lkdGg6b3JpZ2luYWxQYWdlSGVpZ2h0Om1heGltdW1TaHJpbmtSYXRpbzphZGp1c3RWaWV3
U2l6ZTpwYWdpbmF0ZVNjcmVlbkNvbnRlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGlu
c2VydFRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tX
ZWJWaWV3IF9kZWNvZGVEYXRhOl0pOgorCiAyMDIyLTAzLTI4ICBJYW4gQW5kZXJzb24gIDxpYW5h
QGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIEFwcGxlIGludGVybmFsIGNsaWVudHMgZmFpbCB0
byBidWlsZCBkdWUgdG8gcmVkZWNsYXJlZCBBcHBLaXQgdHlwZXMgaW4gV2ViS2l0TGVnYWN5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzNjZjkzYTBiNjZi
ZTY3MDZkNDEyMDE3MWUyNjY0OTIxNTlkMzQ3Li43NGU3NGNhMTQzODhhOWI2NGJkZDA5OTBhZGRl
NDg5YTU4ODAwMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU5LDYgKzU5LDcgQEAKIAkJMzM3QjJENkEyNjU0NkVCMzAwRERGRDNEIC8qIExpa2VseURl
bnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzN0IyRDY4MjY1NDZFQUEwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVu
c2lnbmVkSW50ZWdlclNldC5jcHAgKi87IH07CiAJCTMzOUI3QjExMjdDNDVFRjUwMDcyQkY5QSAv
KiBGaXhlZFdpZHRoRG91YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMzQ3OUMxQzI3MjM2RjIwMDBCMkUxQjcgLyogRml4ZWRXaWR0aERvdWJsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0MjdD
NUFBMjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAvKiBB
U0NJSUNUeXBlLmNwcCAqLzsgfTsKKwkJNDY1NTc0MzYyN0Y1RkM0QTAwMkQ1NTIyIC8qIEFTQ0lJ
TGl0ZXJhbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1NTc0MzUyN0Y1RkM0QTAwMkQ1NTIyIC8qIEFTQ0lJTGl0ZXJhbENvY29hLm1tICov
OyB9OwogCQk0NkJFQjZFQjIyRkZFMjQ5MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZFOTIyRkZEREQ1
MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi87IH07CiAJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVC
QTZFNSAvKiBTYWZlU3RyZXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJlcnJvci5j
cHAgKi87IH07CiAJCTUwREUzNUY1MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0lt
cGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBE
RTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi87IH07CkBA
IC0xMDc0LDYgKzEwNzUsNyBAQAogCQk0NDY4NTY3MjI1MDk0RkU4MDA4Q0NBMDUgLyogVGhyZWFk
U2FuaXRpemVyU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJl
YWRTYW5pdGl6ZXJTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Q0RF
NEQyMjZFRTZDREEwMDlGNkFDQiAvKiBUeXBlQ2FzdHNDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUeXBlQ2FzdHNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbmNlbGxhYmxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjU1NzQzNTI3RjVGQzRBMDAyRDU1MjIgLyogQVNDSUlMaXRlcmFsQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBU0NJSUxpdGVyYWxDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJD
IC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVC
NkU5MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkU0MzY0NjI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVTdHJl
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg0Myw2ICsxODQ1LDcgQEAK
IAkJQTVCQTE1RjExODI0MzM5RjAwQTgyRTY5IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NjU1NzQzNTI3RjVGQzRBMDAyRDU1MjIgLyog
QVNDSUlMaXRlcmFsQ29jb2EubW0gKi8sCiAJCQkJQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8q
IFN0cmluZ0NvY29hLm1tICovLAogCQkJCUE1QkExNUY0MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJp
bmdJbXBsQ29jb2EubW0gKi8sCiAJCQkJOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmlu
Z1ZpZXdDb2NvYS5tbSAqLywKQEAgLTM1MzYsNiArMzUzOSw3IEBACiAJCQkJRTM3RTk2NTQyNzAy
QUQwQjAwRTFDMzZBIC8qIEFwcHJveGltYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
NDI3QzVBQTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDODA1RUYzOUU1RjE0NDgxQTk2RDM5RkMgLyogQVNDSUlMaXRlcmFsLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ2NTU3NDM2MjdGNUZDNEEwMDJENTUyMiAvKiBBU0NJSUxpdGVyYWxDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3Mzg2MTUxQTgyNUIwMDQxMjNGRiAvKiBBc3Nl
cnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM1MTUxQTgyNUIwMDQxMjNGRiAv
KiBBdG9tU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0
OTczOSAvKiBBdG9tU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM1NTIsNyArMzU1
Niw2IEBACiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlv
bnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBQzE1MUE4MjVCMDA0MTIzRkYgLyogY2Fj
aGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDMUYwNTkzMjE2NDM1NkIwMDM5MzAy
QyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTM1RDA5MjI3REM1RUND
MDA5REZBNUIgLyogU3RhY2tDaGVjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QTFE
Qzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzY1Nyw2ICszNjYwLDcgQEAKIAkJCQlBOEE0NzQyNTE1MUE4MjVCMDA0MTIz
RkYgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5MzIwQ0M3M0Ez
MDBBMDNEQ0QgLyogU21hbGxTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMzVE
MDkyMjdEQzVFQ0MwMDlERkE1QiAvKiBTdGFja0NoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFRUE0REY5MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzMzN0RCOUNFNzQzNDEwRkFGMDc2RTE3IC8qIFN0YWNrVHJhY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggNmY2NjVkMDgzZjc1ODI3MWUxOGYz
ODhlN2I0ZjM1ZjBjZDg4NDkwOC4uMjExODNhYTdlYjJmNjdlOTQ3YzQ4YzVkOTE3MzIwNWE4NjFj
ZmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTQ5LDcgKzE0OSw3IEBAIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZv
cm1GaWxlSGFuCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHJlYWRFbnRpcmVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKIC8vIFByZWZpeCBpcyB3
aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBh
dGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9
IHsgfSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmlu
Z1ZpZXcgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBTdHJpbmdWaWV3IHN1ZmZpeCA9IHsg
fSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNjZXNzUGVybWlzc2lvbiA9IEZpbGVB
Y2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IGZhbHNlKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIC8v
IFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBm
aWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggNjY4ODRmZmY3OWY5MmM4ZjIxMWM3N2ZhNWVjZGFkMDNjNzYxYjg4OS4uYWY5NDcxYTBj
Mzg0YjYxMDcyYTEyYWY5OGYxYWE3NGI2NjRlYmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTk1LDYgKzk1LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICB0ZXh0L2Nm
L1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ1ZpZXdDRi5jcHAKIAorICAgIHRl
eHQvY29jb2EvQVNDSUlMaXRlcmFsQ29jb2EubW0KICAgICB0ZXh0L2NvY29hL1N0cmluZ0NvY29h
Lm1tCiAgICAgdGV4dC9jb2NvYS9TdHJpbmdJbXBsQ29jb2EubW0KICAgICB0ZXh0L2NvY29hL1N0
cmluZ1ZpZXdDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggMDJiMDdlNWEyZWMwOTJkNzZmMWM2OGY5Mzk4NmY5
ZTNlMDE1MGYyYy4uZmExOWE2ODIyMTQ5MDljMTlkYTM3ZGU4ZTkzYzg5ZGQ2NmZmNDNiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCkBAIC0zNDAsMjUgKzM0MCw2IEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSW5GVFBGYW1pbHko
KSBjb25zdAogICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbkZUUEZhbWlseShzdHJpbmcoKSk7
CiB9CiAKLWJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAot
ewotICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKLQotICAgIC8vIEphdmFTY3Jp
cHQgVVJMcyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRl
Y2lkZXMgdGhleSBhcmUgaW52YWxpZC4KLSAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2Nv
bElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhwcm90b2NvbCksICJqYXZhc2Ny
aXB0IikpOwotCi0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmpl
Y3QuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKLSAg
ICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX3N0
cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29u
c3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50LgotfQotCiBib29sIFVSTDo6cHJv
dG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAogewogICAgIGFzc2VydFByb3RvY29s
SXNHb29kKHByb3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291
cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYjg3MGYyMzE1YWY3NDFjMzI5ZThlZjI3ZTkyN2JlOTM4
NDMxYzQ5Yy4uNjYxMWNmZmRjMWFkNWQ3YjMxMGZhMTI4ZGRlNjE4MTliZTA3ZDFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAg
LTEzNyw3ICsxMzcsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8gdGVy
bWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4K
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNv
bnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElz
KCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiZGF0YSIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFp
dHMuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCmluZGV4IDMyNjljNTYxZDE1NTZk
Y2RhYjhjZTQwZTQyYTIzOWMzZjVhZjQ3ZjMuLjAxNjc3YjYzOWU3N2Y2M2YwODEyMmJlNTQ5NjEw
MjZkMDZiMmRiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oCkBAIC03NCw2ICs3NCwxMiBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PFJlZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMg
eyB9OwogCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEFTQ0lJTGl0ZXJhbD4g
OiBWZWN0b3JUcmFpdHNCYXNlPGZhbHNlLCB2b2lkPiB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBjYW5Nb3ZlV2l0aE1lbWNweSA9IHRydWU7CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOworICAgIH07CisKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgogICAgIHN0cnVjdCBW
ZWN0b3JUcmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+PgogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBlZTRmNDAwZDczZThmOTE0YjEzNDQ0MzQx
ZDg2YmQ1MTIzMmIwNWJlLi5jNWRiMGY5ZTllNDFiYWNlM2E5MTgxMDllZTBmMGNlZDI5YTA5YjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC04OSw3ICs4OSw3
IEBAIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICByZXR1cm4gdGVtcG9yYXJ5RmlsZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhh
bmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3Ry
aW5nVmlldyBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBT
dHJpbmdWaWV3IHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmlu
ZGV4IGNkMTk0NzdhYzUxYTU0YjA0OTAxZWVhZjM3ZmRmMGNlYmEzOGFlNzQuLjZlMGU0NzY3MjI2
NjQ0YTk2MjNiMmJjNjMxYWE1MDkxMDFlNThmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4g
ZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8gRklYTUU6IFN1ZmZpeCBpcyBub3Qg
c3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1c2luZyBpdCBpcyBtYWNP
Uy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1ZmZpeC5pc0VtcHR5KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggNDI3NmY3N2Uy
MThkMWY0YWIxZWZlNWUyODEzMGI5MDU1MGNjNmI0NS4uN2Y5ZThmYzNkMGZjM2UzYzY4NzRjZTY3
MjhlMzZlZDI0YzgwZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1TdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIFN0cmlu
Z1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRlZCwg
YnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1vbmx5
LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYjgwY2VhYTJhM2MyYWMyYThjNGRh
YTcyZTYzMWQuLmQ1YjRmYTQ0MzJmNGQ0NDZlMzFmZDZhMDA0ZDliMTY5ZmY2ODExNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApAQCAtNTcsMTIgKzU3LDI3IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0ZXhwciBjaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2NoYXJhY3RlcnNbaW5kZXhdOyB9CiAKKyNpZmRlZiBfX09CSkNfXworICAgIC8vIFRo
aXMgZnVuY3Rpb24gY29udmVydCBudWxsIHN0cmluZ3MgdG8gZW1wdHkgc3RyaW5ncy4KKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPE5TU3RyaW5nPiBjcmVhdGVOU1N0cmluZygpIGNv
bnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgY29uc3RleHByIGV4cGxpY2l0IEFTQ0lJTGl0
ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKSA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKSB7
IH0KIAogICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKIH07CiAKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IGNoYXIqIGIpCit7CisgICAgcmV0dXJuIGIg
JiYgIXN0cmNtcChhLmNoYXJhY3RlcnMoKSwgYik7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oQVNDSUlMaXRlcmFsIGEsIEFTQ0lJTGl0ZXJhbCBiKQoreworICAgIHJldHVybiAhc3RyY21w
KGEuY2hhcmFjdGVycygpLCBiLmNoYXJhY3RlcnMoKSk7Cit9CisKIGlubGluZSBuYW1lc3BhY2Ug
U3RyaW5nTGl0ZXJhbHMgewogCiBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIG9wZXJhdG9yIiIgX3Mo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IG4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0Jhc2U2NC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAppbmRleCAz
NmQwYTQ2MGYyOTU1NDgyY2U0ZjQ2OWMzNTM2M2UwZDk5NDU2NTE1Li4xYjUwNjJmYjkzY2VhMzA3
ZTAwNDkwYTM1MGI2ODdiMTdhYTE2ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0Jhc2U2NC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKQEAgLTEwNSw2ICsx
MDUsNyBAQCBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgQ1N0cmluZyYpOwog
U3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAK
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3RyaW5nVmll
dyk7CitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShBU0NJSUxpdGVyYWwgbGl0ZXJhbCkgeyByZXR1cm4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1Zp
ZXcgeyBsaXRlcmFsIH0pOyB9CiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYpOwogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4pOwogc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYTc1MzMxMzU1MzJiNTJjNGYyYWRjNTBlM2VhYjcx
NmFlNzNiN2NmNy4uZGZmNGNlNThiNDQ3ZDZjMTdjZGFjYTEzOWY5ZWNiNjg1NWRiNzZhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFN0
cmluZ1ZpZXcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFN0cmluZ1ZpZXco
Y29uc3QgY2hhciopOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgZXhwbGljaXQgU3RyaW5nVmlldyhBU0NJSUxpdGVyYWwpOworICAgIFN0cmluZ1Zp
ZXcoQVNDSUlMaXRlcmFsKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3IGVtcHR5KCk7CiAKQEAg
LTIyMCw2ICsyMjAsNyBAQCBib29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExDaGFyKiBiKTsK
IAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwog
Ym9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIqKTsKK2Jv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBBU0NJSUxpdGVyYWwpOwogCiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcs
IFN0cmluZ1ZpZXcpOwogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJp
bmdWaWV3KTsKQEAgLTIzMSwxMiArMjMyLDE2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oU3Ry
aW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KFN0cmluZ1ZpZXcgYSwgY29uc3QgTENoYXIgKmIpOwogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIgKmIpIHsgcmV0dXJuIGVxdWFs
KGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgY2hhciogYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiBlcXVhbChiLCBh
KTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIEFTQ0lJTGl0ZXJhbCBi
KSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFy
YWN0ZXJzKCkpKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShBU0NJSUxpdGVyYWwgYSwgU3Ry
aW5nVmlldyBiKSB7IHJldHVybiBlcXVhbChiLCBhKTsgfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5nVmlldyBhLCBjb25zdCBMQ2hhciogYikgeyBy
ZXR1cm4gIWVxdWFsKGEsIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcg
YSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IExDaGFyKmEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gIWVxdWFsKGIs
IGEpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqYSwgU3RyaW5nVmlldyBi
KSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5n
VmlldyBhLCBBU0NJSUxpdGVyYWwgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIuY2hhcmFjdGVycygp
KTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwgU3RyaW5nVmlldyBi
KSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Y2hhciogYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KK2lubGluZSBi
b29sIG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gIWVx
dWFsKGIsIGEpOyB9CiAKIHN0cnVjdCBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmc7CiAK
QEAgLTcwMSw2ICs3MDYsMTEgQEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2VDb21tb24oYSwgYik7CiB9CiAKK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoU3RyaW5nVmlldyBhLCBBU0NJSUxpdGVyYWwgYikKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZUNvbW1vbihhLCBiLmNoYXJhY3RlcnMoKSk7Cit9CisKIGNsYXNzIFN0cmlu
Z1ZpZXc6OlNwbGl0UmVzdWx0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvQVNDSUlMaXRlcmFsQ29j
b2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL0FTQ0lJTGl0ZXJhbENvY29hLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE2ZTRiZDYwNzQ5Y2Y4YmYzMzU3NDQ1YTQ3ODBhYzBmOTVhYzc4N2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL0FTQ0lJTGl0ZXJhbENvY29h
Lm1tCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgPHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oPgorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitSZXRhaW5QdHI8TlNTdHJpbmc+IEFTQ0lJTGl0ZXJh
bDo6Y3JlYXRlTlNTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDxMQ2hhcio+KGNoYXJhY3Rl
cnM4KCkpIGxlbmd0aDpsZW5ndGgoKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0cmluZ0VuY29kaW5n
IGZyZWVXaGVuRG9uZTpOT10pOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiMmM5NmUwYzdiN2VhMTBiOGVhMmQ4MDM0ZjBlMDcy
ZTU1ZDE4MGM0Li4yOGQxY2U1ZjZlZTE4YmQwNjlkN2Y2NzZkYjUxMjU0ZjRhMzVlZmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGlj
IFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmlu
Z1ZpZXcsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBTdHJpbmdWaWV3IHN1ZmZpeCkKIHsK
ICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBPSyBmb3Igbm93IHNp
bmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQtb25seS4KICAgICBBU1NFUlRfVU5V
U0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDMyMGM2YjFiYjAx
NjViZGNlZDc0YzBjOTc2NThjNGViNTA4ZDE2NzQuLjFmZTNkMTBmODcwNmU3OTdlODdiYTkyNWM3
NTBmMDFkMDEzZjhkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC01NjYsOCArNTY2LDggQEAgSGFzaFNldDxT
ZWN1cml0eU9yaWdpbkRhdGE+IElEQlNlcnZlcjo6Z2V0T3JpZ2lucygpIGNvbnN0CiAgICAgICAg
IHJldHVybiB7IH07CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
c2VjdXJpdHlPcmlnaW5zOwotICAgIGNvbGxlY3RPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2MCIp
LCBzZWN1cml0eU9yaWdpbnMpOwotICAgIGNvbGxlY3RPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2
MSIpLCBzZWN1cml0eU9yaWdpbnMpOworICAgIGNvbGxlY3RPcmlnaW5zRm9yVmVyc2lvbihGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgs
ICJ2MCJfcyksIHNlY3VyaXR5T3JpZ2lucyk7CisgICAgY29sbGVjdE9yaWdpbnNGb3JWZXJzaW9u
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgInYxIl9zKSwgc2VjdXJpdHlPcmlnaW5zKTsKIAogICAgIHJldHVybiBzZWN1cml0eU9y
aWdpbnM7CiB9CkBAIC02MzYsNyArNjM2LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsRGF0YWJh
c2VzRm9yRnVsbE9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBXYWxsVGkKIAog
ICAgIGZvciAoYXV0byYgZGF0YWJhc2VOYW1lIDogZGF0YWJhc2VOYW1lcykgewogICAgICAgICBh
dXRvIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChv
cmlnaW5QYXRoLCBkYXRhYmFzZU5hbWUpOwotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4
ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBkYXRhYmFzZUZpbGUgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0
ZTMiX3MpOwogICAgICAgICBpZiAobW9kaWZpZWRTaW5jZSA+IC1XYWxsVGltZTo6aW5maW5pdHko
KSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRmlsZSkpIHsKICAgICAgICAgICAg
IGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1l
KGRhdGFiYXNlRmlsZSk7CiAgICAgICAgICAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCkBAIC03
MzIsNyArNzMyLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY29uc3QKICAgICAgICAgcmV0dXJuIGRh
dGFiYXNlT3JpZ2luLnRvcE9yaWdpbiA9PSB0YXJnZXRPcmlnaW47CiAgICAgfSk7CiAKLSAgICBh
dXRvIHZlcnNpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKKyAgICBhdXRvIHZlcnNpb25QYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAidjEiX3MpOwogICAgIGF1dG8gb2xkT3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh2ZXJzaW9uUGF0aCwgb2xkT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBhdXRvIG5ld09yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQodmVyc2lvblBhdGgsIG5ld09yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob2xkT3JpZ2luUGF0aCkpCkBAIC03Njgs
NyArNzY4LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAg
ICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpIHx8ICFGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RyaW5nIG5ld1ZlcnNpb25EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2MSIpOworICAgIFN0cmluZyBu
ZXdWZXJzaW9uRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiX3MpOwogICAgIGlmICghRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhuZXdWZXJzaW9uRGlyZWN0b3J5KSkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAppbmRleCA0ZTIwYTRiOWJlYjNkZmVkZjU5YzUwMzhiYmM0MmE4MTlk
NTI4YzBjLi5jYmQ0NjI3OTA3ODc3ODAyZjM4YzZhNGRmYjY2YzFhMjIzMWRiM2NmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTM1LDcgKzkzNSw3IEBAIFN0cmluZyBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGVu
Y29kZWROYW1lKQogCiBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VQ
YXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZnVsbERhdGFiYXNlRGlyZWN0b3J5KQogewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZnVsbERhdGFi
YXNlRGlyZWN0b3J5LCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4
ZWREQi5zcWxpdGUzIl9zKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVs
bERhdGFiYXNlUGF0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGNkMGM0MTRmYjMxMDAyNDEzZWEyYmZkZDA5ODMwNWQ1
MWI5ZjFmZDIuLmIxMzIwZjAwOGJiZjkzMzU5YjJiODUzMWRlYjE2ZjE0ZDlmOThlOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0z
NjYsMTEgKzM2NiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYgogICAgICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgV1RGTW92ZShtZXNzYWdlKSB9
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBTdHJpbmcgdGFibGVOYW1lKHVucXVhbGlm
aWVkSW5mb1RhYmxlTmFtZSk7Ci0gICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFi
bGVFeGlzdHModGFibGVOYW1lKSkgeworICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNl
LnRhYmxlRXhpc3RzKHVucXVhbGlmaWVkSW5mb1RhYmxlTmFtZSkpIHsKICAgICAgICAgICAgICAg
ICBtX25ldyA9IHRydWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2Uu
ZXhlY3V0ZUNvbW1hbmRTbG93KCJDUkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
dmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAg
ICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3cobWFrZVN0cmluZygi
Q1JFQVRFIFRBQkxFICIsIHVucXVhbGlmaWVkSW5mb1RhYmxlTmFtZSwgIiAoa2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSkgewogICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0
YWJhc2UsIGZhaWxlZCB0byBjcmVhdGUgJ2luZm8nIHRhYmxlIiwgbV9zcWxpdGVEYXRhYmFzZS5s
YXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgIG1f
c3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCmluZGV4IGQ0NjUxZGJlOTMwYWE0Yjc2Y2U1OWRhNTJj
Mjk2ZTZhZTY5ZjAyNzkuLjc1NjBjZDA5NWRiNTk5NjMwOGFmZGU2MDgzMjhiNDU0YzIyN2VlZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTdHJp
bmcgbG9ja0ZpbGVOYW1lRm9yUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgpCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAi
LmxvY2siKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG9yaWdpblBhdGgsICIubG9jayJfcyk7CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soY29u
c3QgU3RyaW5nJiBvcmlnaW5QYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggNGZmMTIyNWZhYTgyMjg1YjMxY2Vk
NTc1OWRiODk3NzY5MTg5ZTc0YS4uYTllYzhkMzI3ODllZDhkZGUzYzJkZGMyNTRhOWYyOTQxZWZm
ZGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmls
dGVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxG
aWx0ZXJQYXJzZXIuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgVVJMRmlsdGVyUGFyc2VyOjpVUkxG
aWx0ZXJQYXJzZXIoQ29tYmluZWRVUkxGaWx0ZXJzJiBjb21iaW5lZFVSTEZpbHRlcnMpCiAKIFVS
TEZpbHRlclBhcnNlcjo6flVSTEZpbHRlclBhcnNlcigpID0gZGVmYXVsdDsKIAotVVJMRmlsdGVy
UGFyc2VyOjpQYXJzZVN0YXR1cyBVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4oY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90IHBhdHRl
cm5JZCkKK1VSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgVVJMRmlsdGVyUGFyc2VyOjphZGRQ
YXR0ZXJuKFN0cmluZ1ZpZXcgcGF0dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1
aW50NjRfdCBwYXR0ZXJuSWQpCiB7CiAgICAgaWYgKCFwYXR0ZXJuLmlzQWxsQVNDSUkoKSkKICAg
ICAgICAgcmV0dXJuIE5vbkFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaAppbmRleCA4ODk4M2I1NWMzY2JlZDU5ZjRhNGEwMWFl
ZDI1YTQzMmM4MDI4YjQxLi5hNDkzYjkxNjVhMjVjOWYyZjg3NzVkMTJhYzJmZjE1OTAyMWIyMzc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBzdGF0dXNTdHJpbmcoUGFyc2VTdGF0dXMpOwogICAgIGV4cGxpY2l0IFVSTEZpbHRlclBhcnNl
cihDb21iaW5lZFVSTEZpbHRlcnMmKTsKICAgICB+VVJMRmlsdGVyUGFyc2VyKCk7Ci0gICAgUGFy
c2VTdGF0dXMgYWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklz
Q2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsKKyAgICBQYXJzZVN0YXR1cyBhZGRQ
YXR0ZXJuKFN0cmluZ1ZpZXcgcGF0dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1
aW50NjRfdCBwYXR0ZXJuSWQpOwogCiBwcml2YXRlOgogICAgIENvbWJpbmVkVVJMRmlsdGVycyYg
bV9jb21iaW5lZFVSTEZpbHRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggNDZiNWM5ZTIzZDUyNWJlZDFjZjcyNjgwOTM5NTZl
NDU3YWEwMDY0ZC4uMGQ0N2Q3YzA2YjMxMzk5MmFjYTJkNjhkOTgxMjY2NDgxY2E1Yzk4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApA
QCAtMzQ5LDcgKzM0OSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtl
eWVkRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBmbGFnKQorc3RhdGljIHZvaWQgYXBwZW5kQm9v
bGVhbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBBU0NJSUxpdGVyYWwgbGFiZWwsIGJvb2wgZmxh
ZykKIHsKICAgICBidWlsZGVyLmFwcGVuZCgiICAgICIsIGxhYmVsLCAiOiAiLCBmbGFnID8gIlll
cyIgOiAiTm8iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGZlNjQwYWI0OGYxYmMyMmU5
YjE5YWVhMWEyMDExMTA2OWMwMmJjZmEuLjUyMzAwYzZjNWI4MWQ2NTEyMjA1ZDhjM2YzMDZmNzBi
NzA4ZmI2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05v
dEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOworICAgIG1fY2Fj
aGVGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJl
Y3RvcnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIl9zKTsKICAgICBpZiAoIWNyZWF0ZUlmRG9lc05v
dEV4aXN0ICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVGaWxlKSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5k
ZXggMmQzODZkYjFmZjNjNjJjYWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uYTY4MmNjYmE3NTQy
OWQ3Mjg1MjZkOGFjZjhmYjBlZTc1MjJkMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtODYsNyArODYsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmln
aW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5n
KHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVO
YW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3Rk
OjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURh
dGFiYXNlSWRlbnRpZmllcihTdHJpbmdWaWV3IGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAv
LyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0
b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKQEAgLTEw
NSw3ICsxMDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogICAgIAogICAgIC8vIE1ha2Ug
c3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBl
eGlzdC4KICAgICBhdXRvIHBvcnRMZW5ndGggPSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkg
LSBzZXBhcmF0b3IyIC0gMTsKLSAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50MTZfdD4oU3RyaW5nVmlldyB7IGRhdGFiYXNlSWRlbnRpZmllciB9LnJp
Z2h0KHBvcnRMZW5ndGgpKTsKKyAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50MTZfdD4oZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KHBvcnRMZW5ndGgp
KTsKIAogICAgIC8vIE5vdGhpbmcgYWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8g
cGFyc2UgYWZ0ZXIgdGhlIGNvbG9uIGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0
aCkKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbgogCiAgICAgYXV0
byBwcm90b2NvbCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7
CiAgICAgYXV0byBob3N0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3Ix
ICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhIHsgcHJvdG9jb2wsIGhvc3QsIHBvcnQgfTsKKyAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhIHsgcHJvdG9jb2wudG9TdHJpbmcoKSwgaG9zdC50b1N0cmluZygpLCBwb3J0IH07
CiB9CiAKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0ICYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4
IDM3MzUwYWE0MGE2YmUwYmQyNmRjNjU1MWJjNzA0NjM0ZGE5YzIzOWEuLmZhNDQ2ZGI2MTc4NDY0
NzhlNDQ0MjVhODZmNTkyMDU2OTg3OTQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuaApAQCAtNzEsNyArNzEsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
IHsKICAgICAvLyBTZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiB0byBhIHN0cmluZyB0aGF0
IGNvdWxkIGJlIHVzZWQgYXMgcGFydCBvZgogICAgIC8vIGZpbGUgbmFtZXMuIFRoaXMgZm9ybWF0
IHNob3VsZCBiZSB1c2VkIGluIHN0b3JhZ2UgQVBJcyBvbmx5LgogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cmluZ1Zp
ZXcpOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDVhY2IyOWNmYjQ1OTk3YTE4
ODZmYmNhNzVjMDE1MDdhM2JiZTY0ZmIuLjI5Y2ZjMzA0MzIyYmJkMmRhOGQwMzU1YmJlZTM1ZDcx
NTI1NDNjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCkBAIC0xNTIsMTYgKzE1MiwxNiBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUNhc2VGb2xkaW5n
QVNDSUlMaXRlcmFsIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVBcnJheVtdID0gewogI2VuZGlmCiB9
OwogCi10ZW1wbGF0ZTxBU0NJSVN1YnNldCBzdWJzZXQsIHVuc2lnbmVkIHNpemU+IHN0YXRpYyBG
aXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gbWFrZUZpeGVkVmVjdG9yKGNvbnN0IENvbXBhcmFibGVB
U0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiAoJmFycmF5KVtzaXplXSkKK3RlbXBsYXRlPEFTQ0lJ
U3Vic2V0IHN1YnNldCwgdW5zaWduZWQgc2l6ZT4gc3RhdGljIEZpeGVkVmVjdG9yPEFTQ0lJTGl0
ZXJhbD4gbWFrZUZpeGVkVmVjdG9yKGNvbnN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8
c3Vic2V0PiAoJmFycmF5KVtzaXplXSkKIHsKLSAgICBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4g
cmVzdWx0KHN0ZDo6c2l6ZShhcnJheSkpOworICAgIEZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4g
cmVzdWx0KHN0ZDo6c2l6ZShhcnJheSkpOwogICAgIHN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4o
YXJyYXkpLCBzdGQ6OmVuZChhcnJheSksIHJlc3VsdC5iZWdpbigpLCBbXSAoYXV0byBsaXRlcmFs
KSB7CiAgICAgICAgIHJldHVybiBsaXRlcmFsLmxpdGVyYWw7CiAgICAgfSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1JTUVUeXBlUmVnaXN0cnk6
OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gTUlN
RVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogewogICAgIHJldHVybiBt
YWtlRml4ZWRWZWN0b3Ioc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUFycmF5KTsKIH0KQEAgLTI0NCw3
ICsyNDQsNyBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHBkZk1JTUVUeXBl
QXJyYXlbXSA9IHsKICAgICAidGV4dC9wZGYiLAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hh
cio+IE1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxp
dGVyYWw+IE1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpCiB7CiAgICAgcmV0dXJuIG1h
a2VGaXhlZFZlY3RvcihwZGZNSU1FVHlwZUFycmF5KTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBj
b25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
QXJyYXlbXSA9IHsKICAgICAidGV4dC94LXZjZiIsCiB9OwogCi1GaXhlZFZlY3Rvcjxjb25zdCBj
aGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKK0ZpeGVk
VmVjdG9yPEFTQ0lJTGl0ZXJhbD4gTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCkKIHsKICAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlQXJyYXkpOwogfQpAQCAtNjkwLDcgKzY5MCw3IEBAIGNvbnN0ZXhwciBDb21wYXJhYmxl
TGV0dGVyc0xpdGVyYWwgdXNkTUlNRVR5cGVBcnJheVtdID0gewogICAgICJtb2RlbC92bmQudXNk
eit6aXAiLCAvLyBUaGUgb2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdu
bWVudHMvbWVkaWEtdHlwZXMvbW9kZWwvdm5kLnVzZHoremlwCiB9OwogCi1GaXhlZFZlY3Rvcjxj
b25zdCBjaGFyKj4gTUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkKK0ZpeGVkVmVjdG9y
PEFTQ0lJTGl0ZXJhbD4gTUlNRVR5cGVSZWdpc3RyeTo6dXNkTUlNRVR5cGVzKCkKIHsKICAgICBy
ZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHVzZE1JTUVUeXBlQXJyYXkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDhjMmQ2ZmEwMjU2OTY4NjcyZTFj
YjQ3YTM3MjA3OWE2MmE5MWZmYzcuLjZiNTE2MmQ5YWRjZjJjZWUyMjk4MzRkNTg1YzUwNjU5NDc3
ZGVjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAg
LTEzMiwxMyArMTMyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBtYWtlcyB0aGlzIHRlc3QgaXMgYWZ0
ZXIgbWFueSBvdGhlciB0ZXN0cyBhcmUgZG9uZSBvbiB0aGUgTUlNRSB0eXBlLgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIq
PiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBG
aXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CiAgICAg
c3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBl
cygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4g
cGRmTUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNv
bnN0IGNoYXIqPiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHVzZE1JTUVUeXBlcygpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHBkZk1JTUVUeXBl
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+
IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBG
aXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHVzZE1JTUVUeXBlcygpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KaW5kZXggMTMwNjhmODlhZWRhZDM1OWUzMjYyYmJjNmRkZGE0YzJkYTQ0NGEw
YS4uMTFmYjc5MWMxMmZiMTZmNzc4N2FhZDVmY2RmMmUxOThhOGVmNTAyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3Rv
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzdG9yYWdlUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJl
U3RvcC5wbGlzdCIpOworICAgIGF1dG8gc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiX3Mp
OwogCiAgICAgYXV0byBmaWxlVHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3lt
bGlua3Moc3RvcmFnZURpcmVjdG9yeSk7CiAgICAgaWYgKCFmaWxlVHlwZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0K
aW5kZXggMjg2YTVhNDg4N2U4ZDk1NjAwZTdjOGJhYzNhZmJlNjY3NjE2MDU1NC4uYTBjNmEzZTUy
NmNhY2E0YWQxYzc4OGUzYzIyMmU4YTRlNTFjMjRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMTMsNyAr
MTEzLDcgQEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRo
KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVj
dG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiX3MpOwogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMDk5N2Q3OGI2NmI1NGUxNTk2NWY2
YjhmNjVmYWRjYzNjZmEzOTNmMi4uOWVkMDIzNjMzNjA5ODdkZTIxNjNkYjBkZjMzMTkwZTdjODEy
NDUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTA5Niw3ICsxMDk2LDcgQEAg
QVZTdHJlYW1TZXNzaW9uKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0
cmVhbVNlc3Npb24oKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIAot
ICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICAgICAg
U3RyaW5nIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Il9zKTsKICAgICAgICAgbV9zdHJl
YW1TZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU3RyZWFtU2Vzc2lvbkluc3RhbmNlKCkg
aW5pdFdpdGhTdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9y
YWdlUGF0aF1dKTsKICAgICB9CiAgICAgcmV0dXJuIG1fc3RyZWFtU2Vzc2lvbi5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eUlPUy5tbQppbmRleCAwNzczZjU4ODZlNDBhMDJlYTllM2NhMDgwMjA1YzQ3MmE5YjI4MzQ5Li5k
YzdhM2NlN2ZmM2I3ZWQxOWRlZjBmZjQ4YTIwNDk4MGQ0OTY3ZTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCkBA
IC01MTEsMjEgKzUxMSwyMSBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gQWx3YXlzIHVzZSAxMyBm
b3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVu
dCBjaGFyYWN0ZXIgZm9yIEVudGVyLgogICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNv
ZGUgPT0gJ1xyJykgewotICAgICAgICAgICAgbV90ZXh0ID0gIlxyIjsKLSAgICAgICAgICAgIG1f
dW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICAgICAgbV90ZXh0ID0gIlxyIl9zOworICAg
ICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IG1fdGV4dDsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFRoZSBhZGp1c3RtZW50cyBiZWxvdyBhcmUgb25seSBuZWVkZWQgaW4gYmFja3dhcmQgY29t
cGF0aWJpbGl0eSBtb2RlLCBidXQgd2UgY2Fubm90IHRlbGwgd2hhdCBtb2RlIHdlIGFyZSBpbiBm
cm9tIGhlcmUuCiAKICAgICAgICAgLy8gVHVybiAweDdGIGludG8gOCwgYmVjYXVzZSBiYWNrc3Bh
Y2UgbmVlZHMgdG8gYWx3YXlzIGJlIDguCiAgICAgICAgIGlmIChtX3RleHQgPT0gIlx4N0YiKQot
ICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBtX3RleHQgPSAiXHg4Il9z
OwogICAgICAgICBpZiAobV91bm1vZGlmaWVkVGV4dCA9PSAiXHg3RiIpCi0gICAgICAgICAgICBt
X3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0g
Ilx4OCJfczsKICAgICAgICAgLy8gQWx3YXlzIHVzZSA5IGZvciB0YWIgLS0gd2UgZG9uJ3Qgd2Fu
dCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgogICAg
ICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gOSkgewotICAgICAgICAgICAgbV90
ZXh0ID0gIlx4OSI7Ci0gICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAg
ICAgICAgICBtX3RleHQgPSAiXHg5Il9zOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9
IG1fdGV4dDsKICAgICAgICAgfQogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBhYTY5NTUwYTFmMDc3
OWQyYzQ1MjY1MzJjYjMxN2MyMGU1ZTdjMzdiLi42MTM2NTMxYjViMWM0YzdmYWJiNDQ5MTAzMDM1
NmU1ZjQ2ZjcxYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIENvb2tpZUph
ckRCOjpvcGVuRGF0YWJhc2UoKQogCiAgICAgdmVyaWZ5U2NoZW1hVmVyc2lvbigpOwogCi0gICAg
aWYgKCFleGlzdHNEYXRhYmFzZUZpbGUgfHwgIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkNvb2tp
ZSIpKSB7CisgICAgaWYgKCFleGlzdHNEYXRhYmFzZUZpbGUgfHwgIW1fZGF0YWJhc2UudGFibGVF
eGlzdHMoIkNvb2tpZSJfcykpIHsKICAgICAgICAgYm9vbCBvayA9IGV4ZWN1dGVTUUxTdGF0ZW1l
bnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KENSRUFURV9DT09LSUVfVEFCTEVfU1FMKSkK
ICAgICAgICAgICAgICYmIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KENSRUFURV9ET01BSU5fSU5ERVhfU1FMKSkKICAgICAgICAgICAgICYmIGV4ZWN1dGVT
UUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KENSRUFURV9QQVRIX0lOREVY
X1NRTCkpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIGJvb2wgQ29va2llSmFyREI6OmNoZWNrRGF0YWJh
c2VWYWxpZGl0eSgpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwogCi0gICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJDb29raWUiKSkKKyAgICBpZiAoIW1fZGF0YWJh
c2UudGFibGVFeGlzdHMoIkNvb2tpZSJfcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGF1dG8gaW50ZWdyaXR5ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgcXVp
Y2tfY2hlY2s7Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAwMzQ2MGY1MjU5YjA4NWYxNzRl
NjIzN2RjNzdhZDViNjRjODEzMjhhLi4zYmQyY2M3NDI4NmVjNDY3ODY0MDI0OGM1ZTFjZmVjYzVh
MDI2N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyLCAiaW5kZXguZGF0Iik7CisgICAgU3RyaW5nIGlu
ZGV4RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpciwgImluZGV4LmRhdCJfcyk7CiAgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFk
RW50aXJlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBM
T0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCAlc1xuIiwgaW5kZXhGaWxl
UGF0aC5sYXRpbjEoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZjNhNTViMzgxMWQ1Mjk5Mjk1ODAy
YzUwOGJjNzA4YzhmOTI0ZDcxYS4uMmJhZjk0MmRiYzk2M2QzZmZiM2RjYjE1ZmMxYjNiZWRkMGVl
ZWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9kb3dubG9hZEZpbGVQYXRo
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJkb3dubG9hZCIsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKKyAg
ICAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJkb3dubG9hZCJfcywgbV9kb3dubG9hZEZpbGVIYW5kbGUpOwogICAgIH0KIAogICAgIGlm
IChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAKaW5kZXggZjJlM2VkYWQ1MGVkYTJmZGUwZTVkNTY3YWFlMzM3M2RjNTVkYjA1MC4uMWViNmRl
YmFmYzIzYzQyZGQxMmVkNzZhMWY2ZjEwNWZlMjljZWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC04OSwxMSArODksNiBAQCBTUUxp
dGVEYXRhYmFzZTo6flNRTGl0ZURhdGFiYXNlKCkKICAgICBjbG9zZSgpOwogfQogCi1jb25zdCBj
aGFyKiBTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKCkKLXsKLSAgICByZXR1cm4gIjptZW1v
cnk6IjsKLX0KLQogYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKIHsKICAgICBpbml0aWFsaXplU1FMaXRlSWZOZWNlc3Nh
cnkoKTsKQEAgLTQyNiwxMiArNDIxLDEyIEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVD
b21tYW5kKEFTQ0lJTGl0ZXJhbCBxdWVyeSkKICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRl
bWVudC0+ZXhlY3V0ZUNvbW1hbmQoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVF
eGlzdHMoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJs
ZUV4aXN0cyhTdHJpbmdWaWV3IHRhYmxlTmFtZSkKIHsKICAgICByZXR1cm4gIXRhYmxlU1FMKHRh
YmxlTmFtZSkuaXNFbXB0eSgpOwogfQogCi1TdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FM
KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQorU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNR
TChTdHJpbmdWaWV3IHRhYmxlTmFtZSkKIHsKICAgICBpZiAoIWlzT3BlbigpKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtNDQzLDcgKzQzOCw3IEBAIFN0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFi
bGVTUUwoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgcmV0dXJuIHN0YXRlbWVudC0+Y29s
dW1uVGV4dCgwKTsKIH0KIAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjppbmRleFNRTChjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoU3RyaW5n
VmlldyBpbmRleE5hbWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXgg
ZDQxNGI5YTZjYTM2MzYxZjdiMTE3MTE3NmExZTk0ZDQxY2I5ZTgzYi4uOTE2MDEzNDgxNzU5MjEz
YWE1MmQxOThhNDdlMmU1YzRkNmE5ODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFNRTGl0ZURhdGFiYXNlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURh
dGFiYXNlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgY2hhciogaW5NZW1v
cnlQYXRoKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgaW5NZW1vcnlQYXRo
KCkgeyByZXR1cm4gIjptZW1vcnk6Il9zOyB9CiAKICAgICBlbnVtIGNsYXNzIE9wZW5Nb2RlIHsg
UmVhZE9ubHksIFJlYWRXcml0ZSwgUmVhZFdyaXRlQ3JlYXRlIH07CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6
OlJlYWRXcml0ZUNyZWF0ZSk7CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAgICAgCi0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgdGFibGVTUUwoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGluZGV4U1FMKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgdGFibGVFeGlzdHMoU3RyaW5nVmlldyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHRhYmxlU1FMKFN0cmluZ1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBpbmRleFNR
TChTdHJpbmdWaWV3KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGFibGVzKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJ1blZhY3V1bUNvbW1hbmQoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgcnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggNzJkNGE4NzQ5
YTA4ZDBhNzM4MzQ4NjRmNmY2ZjM4ZGY1NDk0NDgyMy4uZWMwZDFjZWU1YmExYTA4ODA1MDAwZmY3
MGQ3NDY0NjUwMzZkNzUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtNDksNyArNDksNyBAQCBTUUxpdGVGaWxlU3lzdGVtOjpT
UUxpdGVGaWxlU3lzdGVtKCkKIHsKIH0KIAotU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVu
ZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKQorU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5h
bWVUb1BhdGgoU3RyaW5nVmlldyBwYXRoLCBTdHJpbmdWaWV3IGZpbGVOYW1lKQogewogICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUp
OwogfQpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZp
bGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmCiAgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KICAgICAK
LVN0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCitTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JG
aWxlTmFtZShTdHJpbmdWaWV3IGZpbGVOYW1lKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0g
UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2KTsKICAgICBhdXRvIHV0ZjhGaWxlTmFtZSA9IGZpbGVOYW1lLnV0ZjgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCmluZGV4IDY0ZjFh
MmMxMmE5MTFhZWIwYWRjNTllZmJiY2U1MzkwOWI5NTk1NmMuLjUzNDI3MTBmN2JiZDIxOWFkN2Jk
ZWYwNzRkMGQzYzY0OTIzMzY5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZUZpbGVTeXN0ZW0uaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8KICAg
ICAvLyBwYXRoIC0gVGhlIGRpcmVjdG9yeS4KICAgICAvLyBmaWxlTmFtZSAtIFRoZSBmaWxlIG5h
bWUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVO
YW1lVG9QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9Q
YXRoKFN0cmluZ1ZpZXcgcGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSk7CiAKICAgICAvLyBNYWtl
cyBzdXJlIHRoZSBnaXZlbiBkaXJlY3RvcnkgZXhpc3RzLCBieSBjcmVhdGluZyBhbGwgbWlzc2lu
ZyBkaXJlY3RvcmllcwogICAgIC8vIG9uIHRoZSBnaXZlbiBwYXRoLgpAQCAtODIsNyArODIsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBNb3ZlcyBhIGRhdGFiYXNlIGZpbGUgdG8gYSBuZXcgcGxhY2Uu
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgbW92ZURhdGFiYXNlRmlsZShjb25zdCBT
dHJpbmcmIG9sZEZpbGVQYXRoLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVQYXRoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjb21wdXRl
SGFzaEZvckZpbGVOYW1lKFN0cmluZ1ZpZXcgZmlsZVBhdGgpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBUcnVuY2F0ZXMgYSBkYXRhYmFzZSBmaWxlLiBVc2VkIHdoZW4gTW9i
aWxlU2FmYXJpU2V0dGluZ3MgZGVsZXRlcyBhIGRhdGFiYXNlIGZpbGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCA0Y2I0OGY0
ODAzN2YwYzE2MTI5ODFlMWIzNzMxODkwMzg4MWZkMTA4Li5lNjE2NmQ5YzdhOTFlNmFiZTEwNGFi
ZjkxZDc0MTY4NjdmZDJjMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgU2VhcmNoUG9wdXBNZW51
REImIFNlYXJjaFBvcHVwTWVudURCOjpzaW5nbGV0b24oKQogfQogCiBTZWFyY2hQb3B1cE1lbnVE
Qjo6U2VhcmNoUG9wdXBNZW51REIoKQotICAgIDogbV9kYXRhYmFzZUZpbGVuYW1lKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgImF1dG9zYXZlLXNlYXJjaC5kYiIpKQorICAgIDogbV9kYXRh
YmFzZUZpbGVuYW1lKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgImF1dG9zYXZlLXNlYXJj
aC5kYiJfcykpCiB7CiB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFNlYXJjaFBvcHVwTWVu
dURCOjpjaGVja0RhdGFiYXNlVmFsaWRpdHkoKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlLmlz
T3BlbigpKTsKIAotICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiU2VhcmNoIikpCisg
ICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJTZWFyY2giX3MpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBhdXRvIGludGVncml0eSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudCgiUFJBR01BIHF1aWNrX2NoZWNrOyJfcyk7CkBAIC0yMDMsNyArMjAzLDcgQEAgYm9vbCBT
ZWFyY2hQb3B1cE1lbnVEQjo6b3BlbkRhdGFiYXNlKCkKICAgICB2ZXJpZnlTY2hlbWFWZXJzaW9u
KCk7CiAKICAgICBib29sIGRhdGFiYXNlVmFsaWRpdHkgPSB0cnVlOwotICAgIGlmICghZXhpc3Rz
RGF0YWJhc2VGaWxlIHx8ICFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJTZWFyY2giKSkKKyAgICBp
ZiAoIWV4aXN0c0RhdGFiYXNlRmlsZSB8fCAhbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiU2VhcmNo
Il9zKSkKICAgICAgICAgZGF0YWJhc2VWYWxpZGl0eSA9IGRhdGFiYXNlVmFsaWRpdHkgJiYgKGV4
ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KGNyZWF0ZVNlYXJj
aFRhYmxlU1FMKSkgPT0gU1FMSVRFX0RPTkUpOwogCiAgICAgaWYgKCFkYXRhYmFzZVZhbGlkaXR5
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IGZmMGU5MWNjZjRjMDg3ZTNkZTZiMzUxMTc0ODNlNDRiN2EzMDExMTYuLmZiZDhiZGY4
YTE2MzhmODVhNGI2MGU0NzQ2NDI4YzU3YWY1ZjZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzM4LDcgKzMzMzgsNyBAQCBz
dGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUo
Zm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwog
Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oZGVzY3JpcHRpb24ubmFtZSk7Cisg
ICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oU3RyaW5nVmlldyB7IGRlc2NyaXB0aW9u
Lm5hbWUgfSk7CiAgICAgICAgIGltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoZGVzY3JpcHRpb24u
ZmlsbENvbG9yKTsKIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgdGV4dEdhcCA9IDQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDk3NmQ4MGI4NTA4NWI0NmZlN2VhZTA3ZDkwMGQx
NjI3Y2QyOTMyOTguLmYxNDhhM2RhZWIxYzc1MDE2MjUyMzE2OTRmZjU4NDU1ODRlYTU5YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBSZWdp
c3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZnVsbEZp
bGVuYW1lKQogCiBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnRzKG1fZGF0YWJhc2VEaXJlY3RvcnksIHsgIlNjcmlwdHMiLCAiVjEiIH0pOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fZGF0YWJhc2VE
aXJlY3RvcnksIHsgIlNjcmlwdHMiX3MsICJWMSJfcyB9KTsKIH0KIAogU1dTY3JpcHRTdG9yYWdl
JiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
aW5kZXggNzVkOThhOTI2NzY4NTBjZWNiMjRiOTg5MmQwZDM2YTMwYTYyYjIzNS4uYTE1MWNkMmFh
NjYyNGNkYWVlZjhkOTZhM2M3NDMzMmNlYWQ4ZTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAt
NjYsNyArNjYsNyBAQCBTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzaGEySGFzaChjb25zdCBVUkwm
IGlucHV0KSBjb25zdAogCiBTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzYWx0UGF0aCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Rp
cmVjdG9yeSwgInNhbHQiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fZGlyZWN0b3J5LCAic2FsdCJfcyk7CiB9CiAKIFN0cmluZyBTV1NjcmlwdFN0
b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApp
bmRleCBkNjRjY2MwYjYwMThjN2ZlNzQ2ZTdhY2ZlNjEwZmNlNGY5YjA2NWM1Li42ZGI2NDQwY2Y5
NmQ5MmFjMmQ3ZjViZTFkNTIyM2FlMDVhMDE3MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cgogICAgICAgICBT
dHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUs
IHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3Jl
KCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykpOwogICAgIH0gZWxzZQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVh
dGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0sICIiLCAiIikpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJ
UEM6OlNlbWFwaG9yZSB7IH0sIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IGNjNjE1MjQ3OTNjMGYxMWNmZWI4ZDRhODRlY2ZhOWFmNGU2ZTJhYTcuLjg3YmFkODU5
Y2VjZTMwM2Q4NWM1ZDAxZWY0ZGU4ZDI5ZDQ0MzliOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzE0LDcgKzMxNCw3
IEBAIHN0YXRpYyBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKj4m
IGFsbFN0b3JlcygpCiAKIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUmIHN0b3JlLCBTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNs
dWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KQotICAgICwgRGF0YWJhc2VVdGlsaXRpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCAib2JzZXJ2YXRpb25zLmRiIikpCisgICAg
LCBEYXRhYmFzZVV0aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
c3RvcmFnZURpcmVjdG9yeVBhdGgsICJvYnNlcnZhdGlvbnMuZGIiX3MpKQogICAgICwgbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
NDI0LDggKzQyNCw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om5lZWRzVXBkYXRlZFNjaGVtYSgpCiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKIHsKLSAgICBp
ZiAoIXRhYmxlRXhpc3RzKCJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0g
ICAgICAgICYmICF0YWJsZUV4aXN0cygiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IikpCisgICAgaWYgKCF0YWJsZUV4aXN0cygiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiX3MpCisgICAgICAgICYmICF0YWJsZUV4aXN0cygiQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Il9zKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiB1bmF0dHJpYnV0ZWQ7CkBAIC0yNTAzLDcgKzI1MDMs
NyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0NvcnJlY3RT
dWJTdGF0aXN0aWNzQ291bnQoY29uc3QgUmVnaQogICAgIHJldHVybiAoc3ViRnJhbWVVbmRlclRv
cEZyYW1lQ291bnQtPmNvbHVtbkludCgwKSA9PSAxICYmIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZUNvdW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
LT5jb2x1bW5JbnQoMCkgPT0gMSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBmbGFnKQorc3Rh
dGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBBU0NJSUxpdGVy
YWwgbGFiZWwsIGJvb2wgZmxhZykKIHsKICAgICBidWlsZGVyLmFwcGVuZCgiICAgICIsIGxhYmVs
LCAiOiAiLCBmbGFnID8gIlllcyIgOiAiTm8iKTsKIH0KQEAgLTI1MzEsMzEgKzI1MzEsMzEgQEAg
U3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJp
bmdGcm9tRG9tYWluSUQodW5zaWduZWQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1BU0NJSUxp
dGVyYWwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3Rp
Y1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50KEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKHRhYmxlTmFtZSA9
PSAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBpZiAodGFibGVOYW1l
ID09ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MpCiAgICAgICAgIHJldHVy
biAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG8iX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQg
ZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEID0gPyJf
czsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQor
ICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSJfcykKICAg
ICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tIFdIRVJFIHRhcmdldERvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1l
ID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQorICAgIGlmICh0YWJsZU5hbWUgPT0g
IlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcykKICAgICAgICAgcmV0dXJuICJTRUxFQ1Qg
ZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9t
YWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTG9hZGVkVGhpcmRQ
YXJ0eVNjcmlwdHMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTG9hZGVkVGhpcmRQ
YXJ0eVNjcmlwdHMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHN1YnJlc291cmNlRG9tYWlu
SUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIFdIRVJFIHRvcEZyYW1lRG9t
YWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbnMiX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBT
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQgPSA/Il9z
OwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMi
KQorICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMi
X3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9z
OwotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iKQor
ICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iX3MpCiAg
ICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwotICAgIGlmICh0YWJs
ZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIpCisgICAgaWYgKHRhYmxl
TmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zKQogICAgICAgICByZXR1
cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7CiAgICAgCiAgICAgcmV0dXJuICIi
X3M7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBBU0NJSUxpdGVyYWwgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFp
bikgY29uc3QKIHsKICAgICBhdXRvIHF1ZXJ5ID0gZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KHRh
YmxlTmFtZSk7CiAgICAgCkBAIC0yNjAzLDcgKzI2MDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIGRvbWFpbiwg
J1xuJyk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAgIGFwcGVuZEJvb2xlYW4o
YnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKKyAgICBh
cHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iX3MsIG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9u
SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICBidWlsZGVyLmFwcGVuZCgi
ICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAgIGlmIChoYXNIYWRSZWNlbnRV
c2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpKSkp
CkBAIC0yNjExLDM0ICsyNjExLDM0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAgZWxz
ZQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiLTEiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5k
ZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIl9zLCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEdyYW5kZmF0aGVy
ZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3RvcmFnZSBh
Y2Nlc3MKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xp
c3QoYnVpbGRlciwgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWlu
KTsKIAogICAgIC8vIFRvcCBmcmFtZSBzdGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAgIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5j
ZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRp
c3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIGRvbWFpbik7
Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIs
ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgZG9tYWluKTsKKyAgICBhcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBk
b21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQiX3MsIGRvbWFpbik7
CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tIl9zLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRl
ciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRz
Il9zLCBkb21haW4pOwogCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1l
U3RhdGVtZW50LT5jb2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0
ZW1lbnQtPmNvbHVtbkludChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsSW5k
ZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN1YmZyYW1lIHN0YXRz
Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVy
LCAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKIAogICAgIC8vIFN1
YnJlc291cmNlIHN0YXRzCi0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsIGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3Rh
dGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsIGRvbWFp
bik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1
aWxkZXIsICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBkb21haW4pOworICAg
IGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAi
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBkb21haW4pOwogCiAgICAgLy8gUHJl
dmFsZW50IFJlc291cmNlCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRS
ZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5J
bnQoSXNQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJl
dmFsZW50UmVzb3VyY2UiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
LT5jb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwg
bV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChJc1ZlcnlQ
cmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZh
bGVudFJlc291cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+
Y29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIsIG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoRGF0YVJlY29yZHNS
ZW1vdmVkSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggODExYmJmOTcw
ZWFjNmZhNzBkYWEwOTcyYjU2OWQ1ZTlmODJmMTkwOS4uZjIyYmYxZjRiMDU5MWM3MzhhMmUyOWJj
Zjg0OGFhMGFiNTIxYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEzOCw4ICsxMzgsOCBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9p
ZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBTdHJpbmcgZ2V0RG9tYWlu
U3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdCBmaW5hbDsKLSAgICBBU0NJSUxpdGVy
YWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZv
aWQgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdDsKKyAgICBBU0NJSUxpdGVyYWwg
Z2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCkgY29uc3Q7CisgICAgdm9pZCBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBBU0NJSUxpdGVyYWwgdGFibGVO
YW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3Rp
Yyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBtZXJnZShXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQqLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAg
dm9pZCBjbGVhckRhdGFiYXNlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMmQ1YjAyNzdiMjllMTA2ZjljZmQ2ZGFkMmFj
ZTM5NWFiODcxMTkzZC4uOWU4MmEzOWE3MWRiMjUwOTZiOTFhMDJkMzZiZTE0MDNlNTI0MGFhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTE2Myw3ICsxNjMsNyBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbgogICAgICAgICBwb3N0VGFz
ayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3Qs
IHNlc3Npb25JRCA9IG5ldHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpXSB7CiAgICAgICAgICAgICBt
X3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgc2Vzc2lvbklEKTsKIAotICAgICAg
ICAgICAgYXV0byBsZWdhY3lQbGlzdEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksICJmdWxsX2Jyb3dz
aW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsKKyAgICAgICAgICAgIGF1dG8gbGVnYWN5
UGxpc3RGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291
cmNlTG9nLnBsaXN0Il9zKTsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGxlZ2FjeVBsaXN0RmlsZVBhdGgpKQogICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobGVnYWN5UGxpc3RGaWxlUGF0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggNmI5MzJkYmFkNDQwYjU1MTU1ODQyN2Q0MGQ2ZDIyYWRkMGQzM2MwNy4uZTRlYTAzYzEx
YjZiYjNmZmUzZjgwZDJmM2I3OGZiOWEzOThjNTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTc4OSw3ICs3ODksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwogI2lmIEVO
QUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAg
ICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0ZvckRPTSJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmlu
ZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsK
QEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbgogI2lmIEVOQUJMRShJ
TlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYg
KHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tp
ZXNGcm9tRE9NIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3Ry
aW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwCmluZGV4IDZkYmI1MmRhMjU3ZTc0MDM3MmM2MmRiZDNjMDQ3NzZjNjI3Yjk1OTQuLjY3
NGI5ODU1MzU3YzEwYzNhM2NjODdkMDYzNzdiMTcxNzY0MDYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNjEs
MTEgKzYxLDExIEBAIHN0YXRpYyBjb25zdCBpbnQgaHR0cFBhcnRpYWxDb250ZW50ID0gMjA2Owog
c3RhdGljIGNvbnN0IGludCBodHRwTm90QWxsb3dlZCA9IDQwMzsKIHN0YXRpYyBjb25zdCBpbnQg
aHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGUgPSA0MTY7CiBzdGF0aWMgY29uc3QgaW50
IGh0dHBJbnRlcm5hbEVycm9yID0gNTAwOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBPS1RleHQg
PSAiT0siOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBQYXJ0aWFsQ29udGVudFRleHQgPSAiUGFy
dGlhbCBDb250ZW50IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwTm90QWxsb3dlZFRleHQgPSAi
Tm90IEFsbG93ZWQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBSZXF1ZXN0ZWRSYW5nZU5vdFNh
dGlzZmlhYmxlVGV4dCA9ICJSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBodHRwSW50ZXJuYWxFcnJvclRleHQgPSAiSW50ZXJuYWwgU2VydmVyIEVy
cm9yIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwT0tUZXh0ID0gIk9LIl9zOworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGh0dHBQYXJ0aWFsQ29udGVudFRleHQgPSAiUGFydGlhbCBDb250ZW50
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGh0dHBOb3RBbGxvd2VkVGV4dCA9ICJOb3QgQWxs
b3dlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRp
c2ZpYWJsZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBodHRwSW50ZXJuYWxFcnJvclRleHQgPSAiSW50ZXJuYWwgU2VydmVy
IEVycm9yIl9zOwogCiBzdGF0aWMgY29uc3RleHByIGF1dG8gd2ViS2l0QmxvYlJlc291cmNlRG9t
YWluID0gIldlYktpdEJsb2JSZXNvdXJjZSJfczsKIApAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRXJyb3IgZXJy
b3JDb2RlKQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoJXUpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGVycm9yQ29kZSkpOwogCiAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0Jsb2I+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9maXJzdFJl
cXVlc3QudXJsKCksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/ICJ0ZXh0L3BsYWluIiA6
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSks
IGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5nU2l6ZSwg
U3RyaW5nKCkpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9maXJzdFJlcXVlc3Qu
dXJsKCksIGVycm9yQ29kZSAhPSBFcnJvcjo6Tm9FcnJvciA/ICJ0ZXh0L3BsYWluIl9zIDogZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgpKSwgZXJy
b3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxSZW1haW5pbmdTaXplLCBTdHJp
bmcoKSk7CiAgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKICAgICBjYXNlIEVycm9yOjpOb0Vycm9y
OiB7CiAgICAgICAgIGJvb2wgaXNSYW5nZVJlcXVlc3QgPSBtX3JhbmdlT2Zmc2V0ICE9IGtQb3Np
dGlvbk5vdFNwZWNpZmllZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggNzg4ZWRjZTY5MGJjOGRkMDFmNTNlN2YzZmNkMGQ5ZDQzNGVl
MDE5Ni4uYjVmZTk2MmIxNGZlZTBjNDg5MWMzMWIwNDYyMDM3NzViYmI2YWY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIzNTIs
NyArMjM1Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRp
b25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKLSAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBzZXNzaW9uIik7
CisgICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiJfcyk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmIGNhbGxiYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDMyYTA2ZDQ5NDYzZDM4OGNlNjJlMzZhODZiYjhhODQwYTZhYWI5MTIu
LjU3YzFiMWI2OTNkNzE1YmUxMmVhZDZjNmZkNTk2NTEyOTdjMzIxNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTE1OTQsMTAgKzE1OTQsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nv
b2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KCkpOwogICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNlc3Npb24pOwogCi0gICAgbG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9y
aWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3Jl
YXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFs
UmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb3JlSWRlbnRp
ZmllcigpKTsKKyAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIiX3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAq
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29v
a2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFs
UmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJ
RCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Js
b2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBp
ZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9u
LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTYwOCw3ICsxNjA4
LDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW8KICAgICBhdXRvIGVzY2FwZWRJZGVudGlmaWVy
ID0gZXNjYXBlSURGb3JKU09OKGlkZW50aWZpZXIpOwogICAgIGF1dG8gZXNjYXBlZFJlZmVycmVy
ID0gZXNjYXBlRm9ySlNPTihyZWZlcnJlcik7CiAKLSNkZWZpbmUgTE9DQUxfTE9HX0lGX0FMTE9X
RUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9u
SUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6OiIgZm10
LCBsb2dnZWRPYmplY3QsIGxhYmVsLnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC5jaGFyYWN0ZXJzKCks
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIExPQ0FMX0xPRyhzdHIsIC4uLikgXAogICAgIExPQ0FM
X0xPR19JRl9BTExPV0VEKCJsb2dDb29raWVJbmZvcm1hdGlvbjogQkxPQ0tFRCBjb29raWUgYWNj
ZXNzIGZvciB3ZWJQYWdlSUQ9JXMsIGZyYW1lSUQ9JXMsIHJlc291cmNlSUQ9JXMsIGZpcnN0UGFy
dHk9JXM6ICIgc3RyLCBlc2NhcGVkUGFnZUlELnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRGcmFtZUlE
LnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIGVzY2FwZWRG
aXJzdFBhcnR5LnV0ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCiAKQEAgLTE2MjQsNyArMTYy
NCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9X
RUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRP
YmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2NDAsNyArMTY0MCw3IEBAIHN0YXRp
YyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3RpCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2FwZUlE
Rm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MgPSAoZnJhbWVJ
RCAmJiBwYWdlSUQpID8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmhhc1N0b3JhZ2VBY2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyBmaXJzdFBhcnR5IH0sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCkpIDogZmFs
c2U7CiAKLSNkZWZpbmUgTE9DQUxfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgTmV0d29yaywgIiVwIC0gJXM6OiIgZm10LCBsb2dnZWRPYmplY3QsIGxhYmVsLnV0
ZjgoKS5kYXRhKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VE
KGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklE
KCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwg
bG9nZ2VkT2JqZWN0LCBsYWJlbC5jaGFyYWN0ZXJzKCksICMjX19WQV9BUkdTX18pCiAjZGVmaW5l
IExPQ0FMX0xPRyhzdHIsIC4uLikgXAogICAgIExPQ0FMX0xPR19JRl9BTExPV0VEKCJsb2dDb29r
aWVJbmZvcm1hdGlvbjogd2ViUGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlEPSVzOiAi
IHN0ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCku
ZGF0YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQog
CkBAIC0xNjg1LDcgKzE2ODUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbklu
dGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3VuZGVmIExP
Q0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBBU0NJSUxpdGVyYWwgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBz
dGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5m
b3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDY1Y2VjOWNkM2MyNGQ0YmM3ZTM0MGQ3OWRhNWRjZDgyZmQ2NjE4NDQu
LjJmYjlmYWQ0NTVhMzliMjAxMTc2N2JlZTM3NzE3MGMzNTc2NGNiZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAt
MTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lO
R19QUkVWRU5USU9OKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFBBTDo6U2Vzc2lvbklEKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4pOworICAg
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCBk
NmJjMDkwMTIwMzMxZjgzMDYwYmNkYTYxNGQ5MzJhYTU5YTIxY2EwLi5hZDZmY2YxMmYxMjdkODUw
YzczNGUxOGZmMDU1NDZlYTJmMjc2MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgc3RhdGljIEhhc2hTZXQ8RGF0YWJhc2UqPiYgYWxsRGF0YWJhc2VzKCkKIH0K
IAogRGF0YWJhc2U6OkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKLSAg
ICA6IERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChzdG9yYWdlRGlyZWN0b3J5LCAicGNtLmRiIikpCisgICAgOiBEYXRhYmFzZVV0aWxpdGllcyhG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgInBj
bS5kYiJfcykpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgb3BlbkRh
dGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKQEAgLTQ4OSwxNCArNDg5LDE1IEBA
IHZvaWQgRGF0YWJhc2U6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKICAgICAvLyBEZWZhdWx0IHRvIGNsZWFyIGFsbCBlbnRyaWVzIGlmIG5vIGRvbWFpbiBpcyBz
cGVjaWZpZWQuCi0gICAgU3RyaW5nIGJpbmRQYXJhbWV0ZXIgPSAiJSI7CisgICAgU3RyaW5nIGJp
bmRQYXJhbWV0ZXI7CiAgICAgaWYgKGRvbWFpbikgewogICAgICAgICBhdXRvIGRvbWFpbklEVG9N
YXRjaCA9IGRvbWFpbklEKCpkb21haW4pOwogICAgICAgICBpZiAoIWRvbWFpbklEVG9NYXRjaCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBiaW5kUGFyYW1ldGVyID0gU3RyaW5nOjpu
dW1iZXIoKmRvbWFpbklEVG9NYXRjaCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBiaW5k
UGFyYW1ldGVyID0gIiUiX3M7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBiZWdpblRy
YW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKIApAQCAtNzEyLDE3ICs3MTMsMTcgQEAgdm9pZCBEYXRh
YmFzZTo6ZGVzdHJveVN0YXRlbWVudHMoKQogCiB2b2lkIERhdGFiYXNlOjphZGREZXN0aW5hdGlv
blRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBTdHJpbmcgYXR0cmlidXRlZFRhYmxl
TmFtZSgiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAgICBjb25zdGV4
cHIgYXV0byBhdHRyaWJ1dGVkVGFibGVOYW1lID0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCJfczsKICAgICBTdHJpbmcgZGVzdGluYXRpb25LZXlJRENvbHVtbk5hbWUoImRlc3Rp
bmF0aW9uS2V5SUQiX3MpOwogICAgIGF1dG8gY29sdW1ucyA9IGNvbHVtbnNGb3JUYWJsZShhdHRy
aWJ1dGVkVGFibGVOYW1lKTsKICAgICBpZiAoIWNvbHVtbnMuc2l6ZSgpIHx8IGNvbHVtbnMubGFz
dCgpICE9IGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKSB7CiAgICAgICAgIGFkZE1pc3NpbmdD
b2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvblRva2VuIFRFWFQi
X3MpOwogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1l
LCAiZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCJfcyk7Ci0gICAgICAgIGFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlvbktleUlEIFRFWFQiKTsK
KyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRl
c3RpbmF0aW9uS2V5SUQgVEVYVCJfcyk7CiAgICAgfQogfQogCi1WZWN0b3I8U3RyaW5nPiBEYXRh
YmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQorVmVjdG9yPFN0
cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNGb3JUYWJsZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKQog
ewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyht
YWtlU3RyaW5nKCJQUkFHTUEgdGFibGVfaW5mbygiLCB0YWJsZU5hbWUsICIpIikpOwogCkBAIC03
NDEsNyArNzQyLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNvbHVtbnNGb3JUYWJsZShj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICByZXR1cm4gY29sdW1uczsKIH0KIAotdm9pZCBE
YXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUs
IGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSkKK3ZvaWQgRGF0YWJhc2U6OmFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJTGl0ZXJhbCBjb2x1bW5OYW1l
KQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xv
dyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUsICIgQUREIENPTFVNTiAiLCBj
b2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKaW5k
ZXggMmZiN2QyNTY5ZWQzOGE1ODIzOGEyODAwZWUyNDhiNTdmNGU2ZDdmZS4uZTcxZDQwYmQ0OTg1
OWViYzNlYWEzMzhjZDVlYjhiMDUyY2JjY2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKQEAgLTgy
LDggKzgyLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVB
bmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKICAgICBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc29y
dGVkVGFibGVzKCkgZmluYWw7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zRm9yVGFibGUo
Y29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpOwotICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFi
bGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUp
OworICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoQVNDSUlMaXRlcmFsIHRhYmxlTmFt
ZSwgQVNDSUlMaXRlcmFsIGNvbHVtbk5hbWUpOwogCiAgICAgdXNpbmcgU3RhdGVtZW50ID0gc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD47CiAgICAgbXV0YWJsZSBTdGF0
ZW1lbnQgbV9zZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFN0
YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCAyYTgyYTExNWExYjliYWQ1OGJhODY4
ZTU1ZTU3N2NmOWY1NzNkMTQ1Li5lMmI2MzdiZDk2ODE3MjhjZTFiYWE3ZTcwMzNlMWJmNDYzODdl
Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRl
c3RpbmF0aW9uKFNvdXIKIAogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25TZWNyZXRUb2tlbigqc2ln
bmF0dXJlQmFzZTY0VVJMLCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblVubGlu
a2FibGVUb2tlbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAg
IGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24i
IDogcmVzdWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBy
ZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkgPyAiVW5rbm93biJfcyA6IHJlc3VsdC5lcnJvcigpOwog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VTZWNy
ZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxl
dmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdICJfcywg
ZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzkwLDcgKzM5MCw3
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlv
bihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgICAgICAgICAgaWYgKHB1YmxpY0tleUJh
c2U2NFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiVGhlIHB1YmxpYyBrZXkgVVJMIHdhcyBlbXB0eS4iKTsK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUaGUgcHVibGljIGtl
eSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIl9zKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSYmCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcigp
LmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5lcnJvcigpOworICAgICAgICAgICAgICAg
IGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24i
X3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJyb3IgaW4gY2FsY3Vs
YXRlQW5kVXBkYXRlRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4oKTogJyV7cHVibGljfXMiLCBl
cnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJy
b2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2FnZSkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDVlMWZh
YjA5NGUzNzMxNWRlYTM0NjAxYjE3OTQxYTU5ZWVmYTM3Y2IuLjE0OTJjMzEwNTFhZTNkNTY5ZTQ4
NDZmMDVlZTQwMTVmYjYxNjM1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnN0YXJ0VHJhbnNh
Y3Rpb25JZk5lY2Vzc2FyeSgpCiBib29sIExvY2FsU3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiSXRlbVRhYmxlIikpCisgICAgaWYgKCFtX2Rh
dGFiYXNlLnRhYmxlRXhpc3RzKCJJdGVtVGFibGUiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIGF1dG8gcXVlcnkgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCB2
YWx1ZSBGUk9NIEl0ZW1UYWJsZSBMSU1JVCAxIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggM2FhYTNjNDgwZTVmNmE5NTMwZGY4ZDhjY2ViYTJl
NTc5ZTAwMjgxMC4uZTA5ZDJlOWYzNmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp+TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyKCkKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQ
YXRoKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGRhdGFiYXNlUGF0aChzZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSArICIubG9jYWxzdG9yYWdlIik7CisgICAgcmV0dXJuIGRhdGFiYXNlUGF0aChtYWtlU3RyaW5n
KHNlY3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLCAiLmxvY2Fsc3RvcmFnZSIpKTsK
IH0KIAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRpZE9wZW5EYXRhYmFzZVdp
dGhPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKQEAgLTEy
OSw3ICsxMjksNyBAQCBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5E
ZXRhaWxzPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OgogICAgIH0pOwogfQogCi1TdHJp
bmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSkgY29uc3QKK1N0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRh
dGFiYXNlUGF0aChTdHJpbmdWaWV3IGZpbGVuYW1lKSBjb25zdAogewogICAgIGF1dG8gbG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgaWYg
KCFTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmgKaW5kZXggNWJjMTNlYzM2ZjVkMmE5NmZjNjFlNzAyMmMxYzhhMWU1Yzc5MWE0Yi4uNmQ2YTA1
Yzg5YTc1MTYzOWY1MmI4NTBiMTk2ZTMxNWZiNjgwYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKSBjb25zdDsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKFN0cmluZ1ZpZXcgZmlsZW5hbWUp
IGNvbnN0OwogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAg
IGVudW0gRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDQx
Y2M0ZDkyMTBhYzE0ODg4NWZhMjM0YmQwOTEyOTIxZjNkYzAwNWYuLjJkODM1OTAwMTIwMzA1MmYx
NjYzMzk5OGU0NDBjM2I1ZjZhNmQ5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTIxMSw3ICsy
MTEsNyBAQCBTdHJpbmcgRW5naW5lOjpzdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHJvb3REaXJl
Y3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaQogICAgIGlmIChyb290RGlyZWN0b3J5Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBTdHJpbmcgc2Fs
dFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9y
eSwgInNhbHQiKTsKKyAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInNhbHQiX3MpOwogICAgIGF1dG8gc2FsdCA9
IEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKTsKICAgICBpZiAoIXNhbHQpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgRW5n
aW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogCiAgICAgbV9p
b1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcm9v
dFBhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJvb3RQYXRoKTsKLSAgICAgICAgU3RyaW5n
IHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRo
LCAic2FsdCIpOworICAgICAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgsICJzYWx0Il9zKTsKICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0
ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggZmRhODU0ZGUzOGFiYWE0ZmU0MzE3OTE2MDVjYzc0
ODZkOTZkYjczYS4uNzdhZDAwYmJhZWE1MmRlYjczMTRmMDc4OTE0OWM0OGVlNDg3MWEwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNDMsMTcgKzQzLDE3IEBAIHVzaW5nIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGU7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RG
aWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsICJjYWNoZXNs
aXN0Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
YWNoZXNSb290UGF0aCwgImNhY2hlc2xpc3QiX3MpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmlu
ZyBjYWNoZXNPcmlnaW5GaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9v
dFBhdGgsICJvcmlnaW4iKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAib3JpZ2luIl9zKTsKIH0KIAogU3RyaW5nIENhY2hl
czo6Y2FjaGVzU2l6ZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdHNQYXRoKQogewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9v
dHNQYXRoLCAiZXN0aW1hdGVkc2l6ZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdHNQYXRoLCAiZXN0aW1hdGVkc2l6ZSJfcyk7CiB9
CiAKIFJlZjxDYWNoZXM+IENhY2hlczo6Y3JlYXRlKEVuZ2luZSYgZW5naW5lLCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGY4NmQx
NDNiNGVlNzg2OGZhNzFkZTcwOTg2MTQwMTk0OTM4Njk5YjYuLmY1ZGQzMWZmYjU5OWVjZjEzM2Vh
MDczYWVhOGFkNjcxNjIxOGRmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBDYWNoZTo6
Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VEaXJlY3RvcnksIFJlZgogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
UEUpCiAgICAgICAgIC8vIFRyaWdnZXJzIHdpdGggInRvdWNoICRjYWNoZVBhdGgvZHVtcCIuCi0g
ICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoSXNvbGF0ZWRDb3B5KCks
ICJkdW1wIikpOworICAgICAgICBDU3RyaW5nIGR1bXBGaWxlUGF0aCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aElz
b2xhdGVkQ29weSgpLCAiZHVtcCJfcykpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1wRmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkpKTsK
ICAgICAgICAgR0ZpbGVNb25pdG9yKiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShkdW1w
RmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FMTEJB
Q0soZHVtcEZpbGVDaGFuZ2VkKSwgdGhpcyk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBDYWNo
ZTo6dHJhdmVyc2UoRnVuY3Rpb248dm9pZChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZl
cnNlSGFuZGxlcikKIAogU3RyaW5nIENhY2hlOjpkdW1wRmlsZVBhdGgoKSBjb25zdAogewotICAg
IHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgp
LCAiZHVtcC5qc29uIik7CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0
b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iX3MpOwogfQogCiB2b2lkIENhY2hlOjpk
dW1wQ29udGVudHNUb0ZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAppbmRleCBjMjM0
OWEwODJiNTY4ZGViZTNmYTU2ZDM1OGQ1NWRkOWM2ODhmNjI0Li5mNGU2MWQ2MDUyYjM2ZDc0ODQ5
YmJlNjZhYzIyMGY2ZjRhOGUwMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAt
MTIzLDggKzEyMyw3IEBAIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
YXV0byBsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKLSAgICBhdXRvIGRhdGEgPSBtYXBGaWxlKGxpbmtQYXRoLmRhdGEoKSk7CisgICAgYXV0byBk
YXRhID0gbWFwRmlsZShwYXRoKTsKIAogICAgIHJldHVybiB7IGRhdGEsIGNvbXB1dGVTSEExKGRh
dGEsIG1fc2FsdCkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IGFlZTEwMmJlYzUxYmIzNDY5MDIz
ZmE3Nzk1YTgyMjc0ODEzMmYyNjYuLmE5MTY5OGQ1ZGM0MmQ4NmMyOTc3MjcwYjc0ZmUzYjE4NWM1
ZTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEYXRhIERhdGE6Om1hcFRv
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGE6OmFkb3B0TWFw
KFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKLURhdGEgbWFwRmlsZShjb25zdCBj
aGFyKiBwYXRoKQorRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBhdXRv
IGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkKQEAg
LTY0LDExICs2NCw2IEBAIERhdGEgbWFwRmlsZShjb25zdCBjaGFyKiBwYXRoKQogICAgIHJldHVy
biBhZG9wdEFuZE1hcEZpbGUoZmlsZSwgMCwgKnNpemUpOwogfQogCi1EYXRhIG1hcEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBtYXBGaWxlKEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotfQotCiBEYXRhIGFkb3B0QW5kTWFw
RmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXggMzI4MzI5
NzY3OGMxNTRlZTQ5MDdkMzE0OTNjYmY3ZjhmMDAzY2JjMC4uMTI0OTI1OWU0YjA1MjY5NDViYzU0
NWYyZjY0YTE0MjdiNWU1NjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTExMSw3ICsxMTEsNiBAQCBwcml2
YXRlOgogRGF0YSBjb25jYXRlbmF0ZShjb25zdCBEYXRhJiwgY29uc3QgRGF0YSYpOwogYm9vbCBi
eXRlc0VxdWFsKGNvbnN0IERhdGEmLCBjb25zdCBEYXRhJik7CiBEYXRhIGFkb3B0QW5kTWFwRmls
ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCk7
Ci1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IEZpbGVTeXN0ZW06OlNhbHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCAwOTFjYTNhMDcwNTA3NWZhNzdkMzg4NjViOWZlNGE3ZTQ0NGZiMDliLi5i
MWU2ZmYzYzA3OGJlODcxZDk1MTBmYTM3NmM0NzAwZTMzYzE5ZmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgU3RyaW5nIG1ha2VDYWNoZVBhdGgoY29u
c3QgU3RyaW5nJiBiYXNlQ2FjaGVQYXRoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBQdXQg
ZGV2ZWxvcG1lbnQgY2FjaGUgdG8gYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHRvIGF2b2lkIGFmZmVj
dGluZyB0aGUgc3lzdGVtIGNhY2hlLgogICAgIGlmICghQXV4aWxpYXJ5UHJvY2Vzczo6aXNTeXN0
ZW1XZWJLaXQoKSkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChiYXNlQ2FjaGVQYXRoLCAiRGV2ZWxvcG1lbnQiKTsKKyAgICAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlQ2FjaGVQYXRoLCAiRGV2ZWxv
cG1lbnQiX3MpOwogI2VuZGlmCiAgICAgcmV0dXJuIGJhc2VDYWNoZVBhdGg7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0
YWJhc2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCmluZGV4IDQzMjJlNDRlOGVhMDYzYzNkYWE4
ZTJjNmRlN2E1YTA4NWY1YTgxZTguLjQyZjg4ODI1MDQ3NmJlZDczMjRiNjcyM2IzNzQ5MmY4ZjU1
ZmRiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCkBAIC0xNDIs
OCArMTQyLDggQEAgdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OmhhbmRsZUV2
ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7
Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKLSAgICAgICAgaWYgKG1lc3NhZ2VOYW1lICE9IExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUpCisgICAgICAgIGF1dG8qIG1lc3NhZ2VOYW1lID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgeHBjTWVzc2FnZU5hbWVLZXkpOworICAg
ICAgICBpZiAoTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjUmVxdWVzdExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSAhPSBtZXNzYWdlTmFtZSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3RhcnRPYnNlcnZpbmcoY29ubmVjdGlvbik7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lE
QlN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMGE3ZTRkM2M0NzE5ZDI4NmM3YjliYzViM2Uz
MzEzZWFmYWViYWJjOC4uZTg4MTkzMDdlMmQ0YWE1NDUwMmM1NmIwYmViYjg2NGE4OTM5NzJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xMjIsOCArMTIyLDggQEAgSGFzaFNldDxXZWJDb3Jl
OjpDbGllbnRPcmlnaW4+IElEQlN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZJREJTdG9yYWdlRGF0
YShjb25zdAogICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG9yaWdpbnM7CiAKLSAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYwIiksIG9yaWdpbnMpOwotICAgIGdl
dE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCAidjEiKSwgb3JpZ2lucyk7CisgICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24o
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2MCJf
cyksIG9yaWdpbnMpOworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAidjEiX3MpLCBvcmlnaW5zKTsKIAog
ICAgIHJldHVybiBvcmlnaW5zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGNkMmM1
MWY1MTljNGMwY2QxNzE4YmI1ZmU5MTdiZjc2NzgzMWNjOWIuLjI2YmM5MDc5YmIyZjk2ZGU3OWFk
MDUxOWQ3NzJhMGMwYjE2NWFiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgU3RyaW5nIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRo
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogICAgIGlmIChkaXJlY3RvcnkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBTdHJpbmdWaWV3IHsgc19maWxlTmFt
ZSB9KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRp
cmVjdG9yeSwgc19maWxlTmFtZSk7CiB9CiAKIExvY2FsU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3Rv
cmFnZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBTdG9yYWdlQXJlYVJlZ2lzdHJ5JiByZWdp
c3RyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZjFlZWNiNGFjMDRmYjE4OGE3
NjUzMDBhNTYzYWQ4ODBkOWMwODcyMC4uZjliYjI4NWMyZTQxYTRkMTg4ZTA1MDQ3ZjhlNzMwMjBj
MGU4ZjI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBA
QCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIElQQzo6Q29ubgogICAgICAgICBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRo
ID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CiAgICAgICAgIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0
aCA9IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGg7CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Iik7CisgICAgICAgICAgICBhdXRvIHNhbHRQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgInNhbHQiX3Mp
OwogICAgICAgICAgICAgbV9zYWx0ID0gdmFsdWVPckRlZmF1bHQoRmlsZVN5c3RlbTo6cmVhZE9y
TWFrZVNhbHQoc2FsdFBhdGgpKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGUxZTZiMTYzYzAyMDAxMTZm
ZmY1NzZiMTU5ZTFiNzhjYmNhY2JkN2YuLmM0MmExMzk0MjM1YjhlZDFiMGU5MmVmODcwZTQ5ZmNl
YWU0NjgzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAKQEAgLTIwOCw2ICsyMDgsMzIgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1l
bnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJgogICAgIHJl
dHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBBcmd1bWVu
dENvZGVyPFN0cmluZ1ZpZXc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgU3RyaW5nVmlldyBz
dHJpbmcpCit7CisgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSBudWxsIHN0cmluZy4KKyAgICBpZiAo
c3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDMy
X3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGJvb2wgaXM4Qml0ID0gc3RyaW5nLmlz
OEJpdCgpOworCisgICAgZW5jb2RlciA8PCBsZW5ndGggPDwgaXM4Qml0OworCisgICAgaWYgKGlz
OEJpdCkKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCAqIHNpemVvZihMQ2hhciksIGFsaWdub2YoTENoYXIpKTsKKyAgICBl
bHNlCisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVv
ZihVQ2hhciksIGFsaWdub2YoVUNoYXIpKTsKK30KK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29k
ZXI8U3RyaW5nVmlldz46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgU3RyaW5nVmlldyk7Cit0
ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZ1ZpZXc+OjplbmNvZGU8U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgU3RyaW5nVmlldyk7Cit0
ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZ1ZpZXc+OjplbmNvZGU8V2ViS2l0OjpE
YWVtb246OkVuY29kZXI+KFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyJiwgU3RyaW5nVmlldyk7CisK
IHZvaWQgQXJndW1lbnRDb2RlcjxTSEExOjpEaWdlc3Q+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU0hBMTo6RGlnZXN0JiBkaWdlc3QpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEoZGlnZXN0LmRhdGEoKSwgc2l6ZW9mKGRpZ2VzdCksIDEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYjNkNjI1MWQwNTI2OWI2
OTRjYzBjNTA5ZDIwNjYzZThkMDZjNTg1OS4uNmQ4MTRkNDE1Mjg2YTk1YWJjZDk4NWRiYTA0ZGIw
Y2JkMjY0YThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oCkBAIC04MjksNiArODI5LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
U3RyaW5nPiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmdWaWV3PiB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIFN0cmluZ1ZpZXcpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxTSEExOjpEaWdlc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFNIQTE6OkRpZ2VzdCYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFNIQTE6OkRpZ2VzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0pTSVBDQmluZGluZy5jcHAKaW5kZXggMGJlMzk1YzFjMzdjMmZlN2NiM2NjM2E1YjQ5NTYy
YWZjNzM5ZTY0YS4uZTU5MmFhMDFjNmM0MTE0ZWQwYzc4NTMzYzA5ZWRhNGYxMWI3YWY2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBiCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlP
YmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgb2JqZWN0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3Mp
LCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgImJvb2wiKSk7CisgICAgb2JqZWN0LT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6
OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgImJvb2wiX3MpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlIl9zKSwgSlNDOjpqc0Jvb2xlYW4o
dmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7
CkBAIC05OSw2NyArOTksNjcgQEAgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1l
bnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGIKIHRlbXBsYXRlPD4K
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFs
dWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImRv
dWJsZSIpOworICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVl
KGdsb2JhbE9iamVjdCwgdmFsdWUsICJkb3VibGUiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6
OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZmxvYXQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImZsb2F0Iik7
CisgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFs
T2JqZWN0LCB2YWx1ZSwgImZsb2F0Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVl
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGludDhfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRO
dW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50OF90Iik7CisgICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgImludDhfdCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBpbnQxNl90IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVy
aWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQxNl90Iik7CisgICAgcmV0
dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgImludDE2X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1
ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgaW50MzJfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmlj
QXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50MzJfdCIpOworICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFs
dWUsICJpbnQzMl90Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVG
b3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGludDY0X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDY0X3QiKTsKKyAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAiaW50NjRfdCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
aW50OF90IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1
bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50OF90Iik7CisgICAgcmV0dXJuIGpz
VmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
InVpbnQ4X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWlu
dDE2X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3Vt
ZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQxNl90Iik7CisgICAgcmV0dXJuIGpz
VmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
InVpbnQxNl90Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVp
bnQzMl90IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1
bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MzJfdCIpOworICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJ1aW50MzJfdCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9y
RGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
aW50NjRfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJn
dW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDY0X3QiKTsKKyAgICByZXR1cm4g
anNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVl
LCAidWludDY0X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
c2l6ZV90IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1
bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJzaXplX3QiKTsKKyAgICByZXR1cm4ganNW
YWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAi
c2l6ZV90Il9zKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVjdFR5cGU+CkBAIC0xODUsMTMg
KzE4NSwxMyBAQCBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjbwogdGVtcGxhdGU8PgogSlNDOjpKU1Zh
bHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFdlYkNvcmU6OkludFJlY3QmJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNW
YWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkludFJlY3Qi
KTsKKyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgIkludFJlY3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNW
YWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJGbG9hdFJlY3QiKTsK
KyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgIkZsb2F0UmVjdCJfcyk7CiB9CiAKIGJvb2wgcHV0SlNWYWx1ZUZvckRlY29kZWRBcmd1
bWVudEF0SW5kZXhPckFycmF5QnVmZmVySWZVbmRlZmluZWQoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpK
U1ZhbHVlIHZhbHVlLCBjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVy
ZXMuY3BwLmVyYgppbmRleCA5ZDJiYzdhMjI2MjkyOTZjNzQxNmRjYjUwMDIzOGJlZjRmZjI5YjVl
Li44MzBlYmFiOGU4NjIxODBlYjAzMGE2NTM5NjYyNmY0Mzg5MTBjMmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNF
eHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNw
cC5lcmIKQEAgLTQxLDcgKzQxLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
JiBXZWJQcmVmZXJlbmNlczo6ZXhwZXJpbWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNv
bmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAg
ICAgICBBUEk6OkV4cGVyaW1lbnRhbEZlYXR1cmU6OmNyZWF0ZSg8JT0gQHByZWYuaHVtYW5SZWFk
YWJsZU5hbWUgJT4sICI8JT0gQHByZWYubmFtZSAlPiIsIDwlPSBAcHJlZi5odW1hblJlYWRhYmxl
RGVzY3JpcHRpb24gJT4sIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0g
QHByZWYuaGlkZGVuICU+KSwKKyAgICAgICAgQVBJOjpFeHBlcmltZW50YWxGZWF0dXJlOjpjcmVh
dGUoU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHByZWYu
bmFtZSAlPiJfcywgU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAl
PiB9LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRl
biAlPiksCiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVn
RmVhdHVyZXMuY3BwLmVyYgppbmRleCA4NDljZjZmN2E4ODU3M2RmMjc5ZjNhZWQyNTExMDUwNWY3
YjZjMzQ2Li5lNTY3ZjQ1YjFlNDQ1MTZiNTJiMDM2NTBiYjlmMmU5NjRiODQ5YjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVy
ZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVh
dHVyZXMuY3BwLmVyYgpAQCAtNDAsNyArNDAsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6
T2JqZWN0Pj4mIFdlYlByZWZlcmVuY2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5k
IC0lPgotICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVm
Lmh1bWFuUmVhZGFibGVOYW1lICU+LCAiPCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCisgICAgICAgIEFQSTo6SW50ZXJuYWxEZWJ1Z0Zl
YXR1cmU6OmNyZWF0ZShTdHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4gfSwg
IjwlPSBAcHJlZi5uYW1lICU+Il9zLCBTdHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURl
c2NyaXB0aW9uICU+IH0sIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0g
QHByZWYuaGlkZGVuICU+KSwKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwl
LSBlbmQgLSU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tS
ZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1Jl
bW90ZU9iamVjdENvZGVyLm1tCmluZGV4IDVjNjMxZWRkYzk2N2NjZThhMTEwYmM0MGQyNzY5ZTJj
ZjkzNWQ2NDYuLmE2ZTI1Y2M0MDM0NjdhNTAzZThlZWMxMDdhOGY3ZTQ3ZjgxYzM4MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLm1tCkBAIC00Miw5ICs0Miw5IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29j
b2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGNsYXNzTmFtZUtleSA9ICIkY2xhc3MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IG9iamVjdFN0cmVhbUtleSA9ICIkb2JqZWN0U3RyZWFtIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdLZXkgPSAiJHN0cmluZyI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gY2xhc3NO
YW1lS2V5ID0gIiRjbGFzcyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBvYmplY3RTdHJlYW1L
ZXkgPSAiJG9iamVjdFN0cmVhbSJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzdHJpbmdLZXkg
PSAiJHN0cmluZyJfczsKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc2VsZWN0b3JLZXkgPSBA
InNlbGVjdG9yIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHR5cGVTdHJpbmdLZXkgPSBAInR5
cGVTdHJpbmciOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChX
S1JlbW90ZU9iamVjdEVuY29kZXIgKmVuY29kZXIsIGlkIG9iamVjdCkKICAgICAgICAgZW5jb2Rl
ci0+X29iamVjdHNCZWluZ0VuY29kZWQucmVtb3ZlKG9iamVjdCk7CiAgICAgfSk7CiAKLSAgICBl
bmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5n
OjpjcmVhdGUoY2xhc3NfZ2V0TmFtZShvYmplY3RDbGFzcykpKTsKKyAgICBlbmNvZGVyLT5fY3Vy
cmVudERpY3Rpb25hcnktPnNldChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3Ry
aW5nIHsgY2xhc3NfZ2V0TmFtZShvYmplY3RDbGFzcykgfSkpOwogCiAgICAgaWYgKFtvYmplY3Qg
aXNLaW5kT2ZDbGFzczpbTlNJbnZvY2F0aW9uIGNsYXNzXV0pIHsKICAgICAgICAgLy8gV2UgaGF2
ZSB0byBzcGVjaWFsIGNhc2UgTlNJbnZvY2F0aW9uIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gZW5j
b2RlIHRoZSB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYjk4OTY2ZWNhZDQxYjQ4ZWVj
ZDI1ODIyYjRjM2MxZTZkOThhMDg3ZS4uN2Q4ODU2MjI4NDhlZjdmNzlhNGRmMWQzM2NkNjA3YTdm
MmUxNDU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKHZvaWQp
X3NlbmRJbnZvY2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dL
UmVtb3RlT2JqZWN0SW50CiAgICAgICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNp
Z25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlw
ZSwgInYiKSkKICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCJSZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBi
ZSAndm9pZCcuICglcykiLCBzZWxfZ2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAg
ICAgICAgcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25h
dHVyZSk7CisgICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmpl
Y3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmlu
ZyB7IHJlcGx5QmxvY2tTaWduYXR1cmUgfSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxv
Y2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwg
PSBudWxscHRyOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1Np
Z25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAg
ICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3Vt
ZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKKyAgICByZXR1cm4g
W3RhcmdldE1ldGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6
YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7CiB9CiAKIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29u
c3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0aW9u
CkBAIC0yNzAsNyArMjcwLDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6
OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUg
PSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJs
b2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAg
ICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOwogICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJl
cGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0
b3IsIGkpOwogCiAgICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlWFBDQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgKaW5kZXggMWJlMmE4MDA3YzI3NzY3YmY5YTU4
YTlkMmI5ODdlNTY3NGRmY2EzOS4uMjgzMmE5OTE2ZGZiMzg3M2U3Njc4MzIzY2Y5NzVjY2JhNTVi
NDU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHMuaApAQCAtMjUsMTUgKzI1LDE3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlMaXRlcmFsLmg+CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0NvbnN0YW50cyB7CiAKLWNvbnN0ZXhwciBhdXRvIHhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNZXNzYWdlTmFtZSA9ICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1lc3Nh
Z2UiOwotY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVu
Y2gtc2VydmljZXMtZGF0YWJhc2UiOwotY29uc3RleHByIGF1dG8geHBjUmVxdWVzdExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VVcGRhdGVNZXNzYWdlTmFtZSA9ICJyZXF1ZXN0LWxhdW5jaC1zZXJ2aWNl
cy1kYXRhYmFzZS11cGRhdGUtbWVzc2FnZSI7Ci1jb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5ID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2Vy
dmljZXMtZGF0YWJhc2UiOwotY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFz
ZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNlcy1k
YXRhYmFzZS1tZXNzYWdlIjsKK2NvbnN0ZXhwciBhdXRvIHhwY1VwZGF0ZUxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNZXNzYWdlTmFtZSA9ICJ1cGRhdGUtbGF1bmNoLXNlcnZpY2VzLWRhdGFiYXNlLW1l
c3NhZ2UiX3M7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5ID0g
ImxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZSJfczsKK2NvbnN0ZXhwciBhdXRvIHhwY1JlcXVlc3RM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUgPSAicmVxdWVzdC1sYXVuY2gt
c2VydmljZXMtZGF0YWJhc2UtdXBkYXRlLW1lc3NhZ2UiX3M7Citjb25zdGV4cHIgYXV0byB4cGNM
YXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnROYW1lS2V5ID0gInhwYy1lbmRwb2ludC1s
YXVuY2gtc2VydmljZXMtZGF0YWJhc2UiX3M7Citjb25zdGV4cHIgYXV0byB4cGNMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNo
LXNlcnZpY2VzLWRhdGFiYXNlLW1lc3NhZ2UiX3M7CiB9IC8vIG5hbWVzcGFjZSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmlu
ZGV4IDViYTkyYmI4MjM5ZjI4MDliMDE4NGM0ZGY3MzA5OTljNDMwZjRkNDUuLmY2MWI3ZjQ0OWM3
YmQwNjUwMWE0ZWYwODZiNWE5MTEyOGZhOWFiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTE4NSwyNyArMTg1LDI3
IEBAIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFu
ZGxlJiYgaGFuZGxlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2FuZGJveEV4dGVuc2lvbiho
YW5kbGUpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
U3RyaW5nVmlldyBwYXRoKQogewogICAgIGNoYXIgcmVzb2x2ZWRQYXRoW1BBVEhfTUFYXSA9IHsg
MCB9OwogICAgIHJlYWxwYXRoKHBhdGgudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRQYXRoKTsKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChyZXNvbHZlZFBhdGgpOwogfQogCi1TdHJpbmcgcmVz
b2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBwYXRoKQorU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkKIHsKICAgICBOU0Vycm9yICplcnJv
ciA9IG5pbDsKLSAgICBOU1N0cmluZyAqbnNQYXRoID0gcGF0aDsKKyAgICBhdXRvIG5zUGF0aCA9
IHBhdGguY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpOwogCi0gICAgaWYgKCFbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpuc1BhdGggd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3Jd
KSB7Ci0gICAgICAgIE5TTG9nKEAiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlQFwiIGZv
ciBmdXR1cmUgc2FuZGJveCBleHRlbnNpb24sIGVycm9yICVAIiwgbnNQYXRoLCBlcnJvcik7Cisg
ICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
UGF0aDpuc1BhdGguZ2V0KCkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjomZXJyb3JdKSB7CisgICAgICAgIE5TTG9nKEAiY291bGQgbm90IGNyZWF0
ZSBkaXJlY3RvcnkgXCIlQFwiIGZvciBmdXR1cmUgc2FuZGJveCBleHRlbnNpb24sIGVycm9yICVA
IiwgbnNQYXRoLmdldCgpLCBlcnJvcik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAg
ICAgcmV0dXJuIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKTsKIH0KIAotU3Ry
aW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCitT
dHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkKIHsK
ICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0
aChwYXRoKTsKICAgICBpZiAocmVzb2x2ZWRQYXRoLmlzTnVsbCgpKSB7CkBAIC0yMTYsNyArMjE2
LDcgQEAgU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgs
IFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcgcGF0aCwgVHlw
ZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBIYW5kbGUgaGFuZGxlOwog
ICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CkBAIC0yMjksNyArMjI5LDcg
QEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwog
fQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBh
dGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShTdHJpbmdWaWV3IHBhdGgsIFR5cGUgdHlwZSkgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZp
bmdQYXRoKHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKSwgdHlwZSk7CiB9CkBA
IC0yNTksNyArMjU5LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhh
bmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwgbG9nTGFiZWwsIGNvbnMKICAgICB9KTsKIH0KIAot
YXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFN0cmluZ1ZpZXcg
cGF0aCkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgU3RyaW5nIHJlc29sdmVkUGF0
aCA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9u
KHBhdGgpOwogICAgIGlmIChyZXNvbHZlZFBhdGguaXNOdWxsKCkpCkBAIC0yNjcsNyArMjY3LDcg
QEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKSAtPgogICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFR5cGU6OlJlYWRXcml0ZSk7CiB9CiAKLWF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUs
IFN0cmluZz4+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFy
eUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8SGFuZGxlLCBTdHJpbmc+PgogewogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJU
KCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKQEAgLTI4NCwxMSArMjg0LDE2IEBAIGF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgVHlwZSB0CiAgICAgaWYgKHBhdGgubGFzdCgpICE9ICcvJykKICAgICAgICAg
cGF0aC5hcHBlbmQoJy8nKTsKICAgICAKLSAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFtZS4gICAg
Ci0gICAgcGF0aC5hcHBlbmQocHJlZml4LnV0ZjgoKS5kYXRhKCksIHByZWZpeC5sZW5ndGgoKSk7
CisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuCisgICAgYXV0byBwcmVmaXhBc1VURjggPSBw
cmVmaXgudXRmOCgpOworICAgIHBhdGguYXBwZW5kKHByZWZpeEFzVVRGOC5kYXRhKCksIHByZWZp
eEFzVVRGOC5sZW5ndGgoKSk7CiAgICAgcGF0aC5hcHBlbmQoJ1wwJyk7CisKKyAgICBhdXRvIHBh
dGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBhdGguZGF0YSgpKTsKKyAgICBpZiAocGF0aFN0
cmluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICBo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwg
dHlwZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25J
bXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGhTdHJp
bmcpLmRhdGEoKSwgdHlwZSk7CiAKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24p
IHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRl
bnNpb24gZm9yIHRlbXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRhdGEoKSk7CkBAIC0zMzksNyAr
MzQ0LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVMKICAgICByZXR1cm4gY3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9
LCBhdWRpdFRva2VuLCBmbGFncyk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2Vu
X3QgYXVkaXRUb2tlbikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBh
dWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAg
IEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQ
b2ludC5tbQppbmRleCBmOWVmNThkNDAwZWFjZTRhMTg2NzUzYmM2OWQ5MzU1OWQxZmU1YmM4Li40
MjYwNDI2MDljZmY4ZDE5MDg0OGRmYTM4ZDEwNzliZDdmODI1ZGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC03
MiwxMyArNzIsMTMgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q29u
bmVjdGlvbklkZW50aWZpZXIoSVBDOjpDb25uZWN0aW9uOjpJZGUKIAogYm9vbCBYUENTZXJ2aWNl
SW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElk
ZW50aWZpZXIpCiB7Ci0gICAgY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIpOworICAgIGNs
aWVudElkZW50aWZpZXIgPSBTdHJpbmc6OmZyb21VVEY4KHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIpKTsKICAgICByZXR1
cm4gIWNsaWVudElkZW50aWZpZXIuaXNFbXB0eSgpOwogfQogCiBib29sIFhQQ1NlcnZpY2VJbml0
aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50
QnVuZGxlSWRlbnRpZmllcikKIHsKLSAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUt
aWRlbnRpZmllciIpOworICAgIGNsaWVudEJ1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcgeyB4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRs
ZS1pZGVudGlmaWVyIikgfTsKICAgICByZXR1cm4gIWNsaWVudEJ1bmRsZUlkZW50aWZpZXIuaXNF
bXB0eSgpOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6
ZXJEZWxlZ2F0ZTo6Z2V0UHJvY2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWYK
IAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05h
bWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKIHsKLSAgICBjbGllbnRQcm9jZXNzTmFtZSA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9j
ZXNzLW5hbWUiKTsKKyAgICBjbGllbnRQcm9jZXNzTmFtZSA9IFN0cmluZyB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1wcm9jZXNzLW5hbWUiKSB9
OwogICAgIHJldHVybiAhY2xpZW50UHJvY2Vzc05hbWUuaXNFbXB0eSgpOwogfQogCkBAIC0xMTks
MzAgKzExOSwzMCBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRy
YUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgUwogewogICAgIHhwY19vYmplY3Rf
dCBleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRf
dmFsdWUobV9pbml0aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7
CiAKLSAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3Mi
KTsKKyAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3Mi
KSB9OwogICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiaW5zcGVjdG9yLXByb2Nlc3MiX3MsIGluc3BlY3RvclBy
b2Nlc3MpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFN0cmluZyBzZXJ2aWNl
V29ya2VyUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlh
bGl6YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpOworICAgIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFE
YXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAic2VydmljZS13b3JrZXItcHJvY2VzcyIpIH07
CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgV1RGTW92
ZShzZXJ2aWNlV29ya2VyUHJvY2VzcykpOwotICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2Jq
ZWN0LCAicmVnaXN0cmFibGUtZG9tYWluIik7CisgICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWlu
IHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFP
YmplY3QsICJyZWdpc3RyYWJsZS1kb21haW4iKSB9OwogICAgIGlmICghcmVnaXN0cmFibGVEb21h
aW4uaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lz
dHJhYmxlLWRvbWFpbiJfcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpOwogI2VuZGlmCiAK
LSAgICBTdHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmlu
ZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKTsKKyAg
ICBTdHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
eHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJtZWQiKSB9OwogICAg
IGlmICghaXNQcmV3YXJtZWRQcm9jZXNzLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFs
aXphdGlvbkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQiX3MsIGlzUHJld2FybWVkUHJvY2Vzcyk7CiAK
ICAgICBpZiAoIWlzQ2xpZW50U2FuZGJveGVkKCkpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJEaXJl
Y3RvcnlTdWZmaXggPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpOworICAgICAgICBTdHJp
bmcgdXNlckRpcmVjdG9yeVN1ZmZpeCB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFE
YXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAidXNlci1kaXJlY3Rvcnktc3VmZml4IikgfTsK
ICAgICAgICAgaWYgKCF1c2VyRGlyZWN0b3J5U3VmZml4LmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1
c2VyRGlyZWN0b3J5U3VmZml4KTsKICAgICB9CiAKLSAgICBTdHJpbmcgYWx3YXlzUnVuc0F0QmFj
a2dyb3VuZFByaW9yaXR5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0
aWFsaXphdGlvbkRhdGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5
Iik7CisgICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSB7IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiYWx3
YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpIH07CiAgICAgaWYgKCFhbHdheXNSdW5z
QXRCYWNrZ3JvdW5kUHJpb3JpdHkuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0
aW9uRGF0YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsIGFsd2F5
c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBD
U2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCBkODYwZTdjN2FiMDYwMTZmZGYxMDdjNGNm
MWRkYTVjMzdmMzMyZmIxLi4xMDhjYjA4YWFiOGU2ZTUxODVhYTUxYWJiMGI2ZGYyYjUzNDQxMzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1t
CkBAIC0yMDMsNyArMjAzLDcgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioq
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgU3RyaW5nIHdlYktp
dEJ1bmRsZVZlcnNpb24gPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQo
KSwgIldlYktpdEJ1bmRsZVZlcnNpb24iKTsKKyAgICAgICAgU3RyaW5nIHdlYktpdEJ1bmRsZVZl
cnNpb24geyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktp
dEJ1bmRsZVZlcnNpb24iKSB9OwogICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCdW5kbGVWZXJzaW9u
ID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdLmlu
Zm9EaWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldOwog
ICAgICAgICBpZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgIWV4cGVjdGVkQnVu
ZGxlVmVyc2lvbi5pc051bGwoKSAmJiB3ZWJLaXRCdW5kbGVWZXJzaW9uICE9IGV4cGVjdGVkQnVu
ZGxlVmVyc2lvbikgewogICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJXZWJLaXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0Y2g6ICIsIHdlYktpdEJ1bmRsZVZlcnNp
b24sICIgIT0gIiwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0
ZXIuY3BwCmluZGV4IDBkNTc0YjBjYzUwMzQxMzMyMTdmZTM5ZjBiMDQwYjU3OWQyZmMxYzAuLjFi
OGM0NzM5YjYwNjYwYWRjN2FhNzc3ODAyYjJlMzQ2YTMxZWM3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
SVBDVGVzdGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRp
YyBXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYyBtZXNzYWdlVGVzdERyaXZlcihTdHJpbmcmJiBkcml2
ZXJOYW1lKQogewogICAgIGlmIChkcml2ZXJOYW1lLmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09
ICJkZWZhdWx0IikKLSAgICAgICAgZHJpdmVyTmFtZSA9IGdldGVudigiV0VCS0lUX01FU1NBR0Vf
VEVTVF9ERUZBVUxUX0RSSVZFUiIpOworICAgICAgICBkcml2ZXJOYW1lID0gU3RyaW5nOjpmcm9t
VVRGOChnZXRlbnYoIldFQktJVF9NRVNTQUdFX1RFU1RfREVGQVVMVF9EUklWRVIiKSk7CiAgICAg
aWYgKGRyaXZlck5hbWUuaXNFbXB0eSgpIHx8IGRyaXZlck5hbWUgPT0gImRlZmF1bHQiKQogICAg
ICAgICByZXR1cm4gZGVmYXVsdFRlc3REcml2ZXI7CiAgICAgYXV0byB0ZXN0RHJpdmVyID0gcmVp
bnRlcnByZXRfY2FzdDxXS01lc3NhZ2VUZXN0RHJpdmVyRnVuYz4oZGxzeW0oUlRMRF9ERUZBVUxU
LCBkcml2ZXJOYW1lLnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAppbmRleCA4NjY0OWE3NzExZGJhNzE0ZWFhMDE1
ZjNmMjZmOWY3ZDZjMjdkOTVlLi5hMTBiOGM3MTQwZDg4MTlkMjI1YzljMTlmYWVjOGY3OWU1NWI0
MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFdURjo6U3RyaW5nIGV4dGVuc2lvbkVycm9yVG9TdHJp
bmcoRXh0ZW5zaW9uRXJyb3IgZXJyb3IpCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIjsKKyAgICByZXR1cm4gIkludGVybmFsRXJy
b3IiX3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Fu
ZGJveEV4dGVuc2lvbi5oCmluZGV4IDVkZGEzMGNkN2Y2MTc5ZjgzOGM5MGRjMmFmNTc4M2JhNTIx
ZTZlOTIuLmIyYmE1MjMyMmNkYTQ5OTg3NTgyNTFjMjAyMzk1NDE5MjI1ZGMwZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTg0LDE3ICs4NCwxNyBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICAKICAgICBzdGF0aWMgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGNy
ZWF0ZShIYW5kbGUmJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVI
YW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxIYW5kbGU+IGNyZWF0ZUhhbmRsZShTdHJpbmdWaWV3IHBhdGgsIFR5cGUpOwogICAgIHN0YXRp
YyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVy
YWwgbG9nTGFiZWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgsIFR5cGUpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCk7IC8v
IFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4KLSAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKFN0cmluZ1ZpZXcg
cGF0aCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5k
bGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoU3RyaW5nVmlldyBwYXRoKTsgLy8gV2lsbCBhdHRlbXB0
IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5n
VmlldyBwcmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3Jl
YXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3Mp
OwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQp
OwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChT
cGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZl
Y3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25z
dCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihTdHJpbmdWaWV3IHBhdGgs
IGF1ZGl0X3Rva2VuX3QpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRl
SGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9raXRDbGFzcywgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZh
dWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xh
c3NFeHRlbnNpb25zKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBpb2tpdENsYXNzZXMsIHN0ZDo6
b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVs
dCk7CiAjZW5kaWYKQEAgLTExOCw5ICsxMTgsOSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1T
dHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
OwotU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBh
dGgpOwotU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChTdHJpbmdWaWV3IHBhdGgpOworU3RyaW5nIHJlc29sdmVQYXRoRm9yU2Fu
ZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpOworU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCk7CiAK
ICNpZiAhRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKIApAQCAtMTI5LDExICsxMjksMTEgQEAg
aW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZv
aWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Qg
eyB9CiBpbmxpbmUgc3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIEhhbmRs
ZSB7IH07IH0KIGlubGluZSBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKEhhbmRsZSYmKSB7IHJldHVybiBudWxscHRyOyB9Ci1pbmxpbmUgYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShTdHJpbmdWaWV3LCBUeXBlKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIC0+IFZlY3RvcjxIYW5kbGU+IHsgcmV0dXJuIHsgfTsgfQotaW5s
aW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJu
IEhhbmRsZSB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSAtPiBzdGQ6Om9wdGlvbmFsPEhh
bmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6cGFp
cjxIYW5kbGUsIFN0cmluZz4geyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3LCBUeXBlKSAtPiBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFN0cmluZ1Zp
ZXcpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9Citpbmxp
bmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0
cmluZ1ZpZXcsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5n
Pj4geyByZXR1cm4gc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPiB7IH07IH0KIGlubGluZSBhdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlM
aXRlcmFsKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQog
aW5saW5lIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9uKCkgeyB9CiBpbmxpbmUg
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNDEs
OSArMTQxLDkgQEAgaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpIHsgcmV0
dXJuIHRydWU7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseSgpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUg
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVjdG9yPEhh
bmRsZT4mKSB7IHJldHVybiB0cnVlOyB9Ci1pbmxpbmUgU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5n
U3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9Ci1pbmxp
bmUgU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBh
dGgpIHsgcmV0dXJuIHBhdGg7IH0KLWlubGluZSBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJl
dHVybiBwYXRoOyB9CitpbmxpbmUgU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBh
dGgoU3RyaW5nVmlldyBwYXRoKSB7IHJldHVybiBwYXRoLnRvU3RyaW5nKCk7IH0KK2lubGluZSBT
dHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkgeyBy
ZXR1cm4gcGF0aC50b1N0cmluZygpOyB9CitpbmxpbmUgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgcGF0aCkgeyBy
ZXR1cm4gcGF0aC50b1N0cmluZygpOyB9CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4IGUwNWFjY2NlN2ZmMTRlNjAy
MTEzMWZlMzJmYTg2NjkxZDQxYjY4YjcuLjhmMjU5ZGE2ZDUxMDI2Y2NkNjE4OWJiZWNhNDhkNTNk
Yjk4MWRiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQ
cm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIFN0cmluZyBzYW5kYm94RGF0YVZh
dWx0UGFyZW50RGlyZWN0b3J5KCkKICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90
IGNhbm9uaWNhbGl6ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHBy
b2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAgICAgZXhpdChFWF9O
T1BFUk0pOwogICAgIH0KLSAgICByZXR1cm4gcmVzb2x2ZWRQYXRoOworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHJlc29sdmVkUGF0aCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuZGJveERp
cmVjdG9yeShXZWJDb3JlOjpBdXhpbGlhcnlQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXJlbnREaXJlY3RvcnkpCkBAIC03MDQsOSArNzA0LDkgQEAgc3RhdGljIHZvaWQg
cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzKFNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXQKIAogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhP
TUVfRElSIiwgcHdkLnB3X2Rpcik7CiAgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4
KHB3ZC5wd19kaXIpOwotICAgIHBhdGguYXBwZW5kKCIvTGlicmFyeSIpOworICAgIHBhdGguYXBw
ZW5kKCIvTGlicmFyeSJfcyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRl
cigiSE9NRV9MSUJSQVJZX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCkpOwotICAgIHBhdGguYXBwZW5kKCIvUHJlZmVyZW5jZXMiKTsKKyAgICBw
YXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIl9zKTsKICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQ
YXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElSIiwgRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAKICNpZiBDUFUoWDg2XzY0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KaW5kZXggOTIw
ZGUwMGJiNjg2MjAyYjZjMWQ2NGZhYWQ3MTIzNTljMTYwMjc4Zi4uOWJkZTUwNTI3ZDM1NTVlYjMy
NzM4MzY1YTFmN2MyZmM0ZjEzOGMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1dlYkV2ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
RXZlbnRGYWN0b3J5Lm1tCkBAIC00NjksMjAgKzQ2OSwyMCBAQCBXZWJLZXlib2FyZEV2ZW50IFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCwgYm9v
bCBoYQogCiAgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0
IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgogICAg
IGlmICh3aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfUkVUVVJOKSB7Ci0gICAgICAgIHRleHQg
PSAiXHIiOwotICAgICAgICB1bm1vZGlmaWVkVGV4dCA9ICJcciI7CisgICAgICAgIHRleHQgPSAi
XHIiX3M7CisgICAgICAgIHVubW9kaWZpZWRUZXh0ID0gdGV4dDsKICAgICB9CiAKICAgICAvLyBB
cHBLaXQgc2V0cyB0ZXh0IHRvICJceDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3Qg
S2V5Ym9hcmRFdmVudCBjaGFyYWN0ZXIgY29kZSBpcyA4LgogICAgIGlmICh3aW5kb3dzVmlydHVh
bEtleUNvZGUgPT0gVktfQkFDSykgewotICAgICAgICB0ZXh0ID0gIlx4OCI7Ci0gICAgICAgIHVu
bW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgICAgIHRleHQgPSAiXHg4Il9zOworICAgICAgICB1
bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIHVzZSA5IGZvciBU
YWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBm
b3Igc2hpZnQtdGFiLgogICAgIGlmICh3aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfVEFCKSB7
Ci0gICAgICAgIHRleHQgPSAiXHg5IjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQgPSAiXHg5IjsK
KyAgICAgICAgdGV4dCA9ICJceDkiX3M7CisgICAgICAgIHVubW9kaWZpZWRUZXh0ID0gdGV4dDsK
ICAgICB9CiAKICAgICByZXR1cm4gV2ViS2V5Ym9hcmRFdmVudCh0eXBlLCB0ZXh0LCB1bm1vZGlm
aWVkVGV4dCwga2V5LCBjb2RlLCBrZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUs
IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBtYWNDaGFyQ29kZSwgaGFuZGxlZEJ5SW5wdXRNZXRob2Qs
IGNvbW1hbmRzLCBhdXRvUmVwZWF0LCBpc0tleXBhZCwgaXNTeXN0ZW1LZXksIG1vZGlmaWVycywg
dGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IGMwYTY0ZmVmYmQyZjQ1YzEyYWQ5Y2JlMmM3
ODgzYjI1MTlkODhiNDQuLjdmNjhmZDMyMzY3ZTk1Yjk3YzUzNTNmZjI4YmNjYzFkOWYxNTg4ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1hcHBlZERhdGE+IG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcm
IHBhCiB7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0
aChwYXRoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RGF0YSBmaWxlRGF0YSA9IG1hcEZpbGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CisgICAgYXV0byBmaWxlRGF0YSA9IG1hcEZpbGUocGF0aCk7CiAgICAg
aWYgKGZpbGVEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGF1dG8gbWV0YURhdGEgPSBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShmaWxlRGF0YSk7
CkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIEV4cGVjdGVkPE1hcHBlZERhdGEsIHN0ZDo6ZXJy
b3JfY29kZT4gY29tcGlsZWRUb0ZpbGUoV1RGOjpTdHJpbmcmJiBqc29uLAogICAgIH07CiAKICAg
ICBhdXRvIHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwot
ICAgIFdURjo6U3RyaW5nIHRlbXBvcmFyeUZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIkNv
bnRlbnRSdWxlTGlzdCIsIHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIFdURjo6U3RyaW5nIHRl
bXBvcmFyeUZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIkNvbnRlbnRSdWxlTGlzdCJfcywg
dGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgaWYgKHRlbXBvcmFyeUZpbGVIYW5kbGUgPT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnQg
UnVsZSBMaXN0IGNvbXBpbGluZyBmYWlsZWQ6IE9wZW5pbmcgdGVtcG9yYXJ5IGZpbGUgZmFpbGVk
LiIpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudFJ1bGVMaXN0U3RvcmU6
OkVycm9yOjpDb21waWxlRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZFJlZi5jcHAKaW5kZXggZWViY2M5MmQ3OTlhNTViYWQxNzExNWNiODZhN2M4
YmM4NzA0NjMzNi4uYzJhYWQzNmZkZTdmZjllMjE0NDdkY2E0M2JiZTBmMTMzOTgzZGI4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFdLRG93bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKIAogICAgICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQog
ICAgICAgICB7Ci0gICAgICAgICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQu
cmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2Fk
IiB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3du
bG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93
bmxvYWQiX3MgfSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAppbmRleCBlMjU0OTI2ZGM1MWE0OWFlYmE0OThkNzk0OWFhZmM4MDdhNGI3
MjI5Li41ZWJjNWI4YTc0OWJmZWNiNGNiNTI3YzVkNDJjOGM5NThmNjczZjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTUxNSwxMyArNTE1LDEzIEBAIHZv
aWQgV0tQYWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiBXS1N0cmluZ1JlZiBXS1Bh
Z2VHZXRTZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3Ry
aW5nJiBzZXNzaW9uSGlzdG9yeVVSTFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNl
c3Npb25IaXN0b3J5VVJMIikubGVha1JlZigpOworICAgIHN0YXRpYyBhdXRvJiBzZXNzaW9uSGlz
dG9yeVVSTFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25IaXN0b3J5VVJM
Il9zKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRvQVBJKCZzZXNzaW9uSGlzdG9yeVVSTFZhbHVl
VHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdldFNlc3Npb25CYWNrRm9yd2FyZExpc3RJ
dGVtVmFsdWVUeXBlKCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIHNlc3Npb25CYWNrRm9y
d2FyZExpc3RWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uQmFja0Zvcndh
cmRMaXN0SXRlbSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgYXV0byYgc2Vzc2lvbkJhY2tGb3J3
YXJkTGlzdFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25CYWNrRm9yd2Fy
ZExpc3RJdGVtIl9zKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRvQVBJKCZzZXNzaW9uQmFja0Zv
cndhcmRMaXN0VmFsdWVUeXBlKTsKIH0KIApAQCAtMTU4MiwyMSArMTU4MiwyMSBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2Vf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB8fCBtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjApIHsKICAgICAgICAgICAgICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5
cGUgbWFwOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy54KQotICAgICAgICAg
ICAgICAgICAgICBtYXAuc2V0KCJ4IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVy
ZXMueCkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ4Il9zLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy54KSk7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd0Zl
YXR1cmVzLnkpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoInkiLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy55KSk7CisgICAgICAgICAgICAgICAgICAgIG1hcC5zZXQo
InkiX3MsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLnkpKTsKICAgICAgICAg
ICAgICAgICBpZiAod2luZG93RmVhdHVyZXMud2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIG1h
cC5zZXQoIndpZHRoIiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMud2lkdGgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgid2lkdGgiX3MsIEFQSTo6RG91YmxlOjpj
cmVhdGUoKndpbmRvd0ZlYXR1cmVzLndpZHRoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRv
d0ZlYXR1cmVzLmhlaWdodCkKLSAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgiaGVpZ2h0Iiwg
QVBJOjpEb3VibGU6OmNyZWF0ZSgqd2luZG93RmVhdHVyZXMuaGVpZ2h0KSk7Ci0gICAgICAgICAg
ICAgICAgbWFwLnNldCgibWVudUJhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5k
b3dGZWF0dXJlcy5tZW51QmFyVmlzaWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInN0
YXR1c0JhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zdGF0
dXNCYXJWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgidG9vbEJhclZpc2libGUi
LCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50b29sQmFyVmlzaWJsZSkpOwot
ICAgICAgICAgICAgICAgIG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSkpOwotICAgICAgICAg
ICAgICAgIG1hcC5zZXQoInNjcm9sbGJhcnNWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUo
d2luZG93RmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAu
c2V0KCJyZXNpemFibGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5yZXNp
emFibGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJmdWxsc2NyZWVuIiwgQVBJOjpCb29s
ZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZnVsbHNjcmVlbikpOwotICAgICAgICAgICAgICAg
IG1hcC5zZXQoImRpYWxvZyIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRp
YWxvZykpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJoZWlnaHQiX3MsIEFQSTo6RG91
YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLmhlaWdodCkpOworICAgICAgICAgICAgICAgIG1h
cC5zZXQoIm1lbnVCYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0
dXJlcy5tZW51QmFyVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoInN0YXR1c0Jh
clZpc2libGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnN0YXR1c0Jh
clZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJ0b29sQmFyVmlzaWJsZSJfcywg
QVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMudG9vbEJhclZpc2libGUpKTsKKyAg
ICAgICAgICAgICAgICBtYXAuc2V0KCJsb2NhdGlvbkJhclZpc2libGUiX3MsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSkpOworICAgICAgICAg
ICAgICAgIG1hcC5zZXQoInNjcm9sbGJhcnNWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSkpOworICAgICAgICAgICAgICAgIG1h
cC5zZXQoInJlc2l6YWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMu
cmVzaXphYmxlKSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgiZnVsbHNjcmVlbiJfcywgQVBJ
OjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZnVsbHNjcmVlbikpOworICAgICAgICAg
ICAgICAgIG1hcC5zZXQoImRpYWxvZyJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVh
dHVyZXMuZGlhbG9nKSk7CiAgICAgICAgICAgICAgICAgUmVmPEFQSTo6RGljdGlvbmFyeT4gZmVh
dHVyZXNNYXAgPSBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAppbmRleCA4ZTY3NWIzOTkwN2JiY2Q3YTkyNGM0NmM3ODBmNzE0MmYwZWM5NTFhLi4xYTcz
YTcwY2FjOTk2ODI2OWM0NjdhODg2N2Y4MjFjNGIwZGJhMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBA
IFdLVHlwZUlEIFdLUHJlZmVyZW5jZXNHZXRUeXBlSUQoKQogCiBXS1ByZWZlcmVuY2VzUmVmIFdL
UHJlZmVyZW5jZXNDcmVhdGUoKQogewotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2Vi
S2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwog
ICAgIHJldHVybiB0b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsKIH0KIAogV0tQcmVmZXJl
bmNlc1JlZiBXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRl
bnRpZmllclJlZikKIHsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVyUmVmKSwgIldlYktp
dDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2Vz
OjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmllclJlZiksICJX
ZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICByZXR1cm4gdG9BUEkoJnByZWZlcmVuY2Vz
LmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KaW5kZXgg
M2Q2NTc5ZjUyY2UzNTAxYTg2MWMzZjY1NWVmYmVkMjRlODFlMTJlNC4uMzhjZDk2Y2E0MDhiMGM3
ZDhlYzkwMTgwYmJmNTFiM2MzNmM4OTEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29j
b2EubW0KQEAgLTU4LDcgKzU4LDcgQEAgV1RGOjpTdHJpbmcgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OmRlZmF1bHRTdG9yZVBhdGgoKQogICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKS5n
ZXQoKSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkpOwogCi0gICAgcmV0dXJu
IFtjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5nZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIFtjb250ZW50UnVsZUxpc3RTdG9yZVVSTC5n
ZXQoKSBhYnNvbHV0ZVVSTF0ucGF0aDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RT
dG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxl
TGlzdFN0b3JlLm1tCmluZGV4IDlmYTcxYjA3NWEwM2ZmMWRmZGQwMDE3ZTQ1YzgxMjk5NTlkMzVk
ODMuLjMzMzIzOTQzOTQ2YmZhNzZiYThhZjAyYmU5ZGMwYzA1YzMzZWZlNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxl
TGlzdFN0b3JlLm1tCkBAIC03OSw3ICs3OSw3IEBAICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3Rv
cmUKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkw6KE5TVVJMICopdXJsCiB7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRS
dWxlTGlzdFN0b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNvbHV0ZVVSTC5maWxlU3lzdGVtUmVw
cmVzZW50YXRpb24pKTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0
b3JlOjpzdG9yZVdpdGhQYXRoKHVybC5hYnNvbHV0ZVN0cmluZykpOwogI2Vsc2UKICAgICByZXR1
cm4gbmlsOwogI2VuZGlmCkBAIC0xOTQsNyArMTk0LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWRlZmF1
bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZQogKyAoaW5zdGFuY2V0eXBlKXN0b3JlV2l0aFVSTEFu
ZExlZ2FjeUZpbGVuYW1lOihOU1VSTCAqKXVybAogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3Rv
cmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7Cisg
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0
aCh1cmwuYWJzb2x1dGVTdHJpbmcpKTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5t
bQppbmRleCBlYjIzMjE2OWNmYjhhYTJiMjJkZTcxMzhmOThhZWY0NmMzOTA0OGM1Li41OWZiOGRj
MGE3ODFjN2VhYWRlZmI2MTJhNWYzMTEyNjFiMmZkMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtNDQsNyArNDQsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPihzZWxmLCBTdHJpbmcoKSwgIldlYktpdCIsICJXZWJL
aXREZWJ1ZyIpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpX
ZWJQcmVmZXJlbmNlcz4oc2VsZiwgU3RyaW5nKCksICJXZWJLaXQiX3MsICJXZWJLaXREZWJ1ZyJf
cyk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDE5OTYzMDMyOGE1ODdiZTExM2ViZTUy
MzdhMGVmOGFmZmY3M2UzZTUuLjdlOGYwYmVkMmMxMzgyODQ1ZGQ1OWFmYmNkMDRlYjNlYzAyZTg0
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpjcmVhdGVUYWJs
ZXNJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCi0gICAgaWYg
KG1fZGIudGFibGVFeGlzdHMoIkljb25JbmZvIikgJiYgbV9kYi50YWJsZUV4aXN0cygiSWNvbkRh
dGEiKSAmJiBtX2RiLnRhYmxlRXhpc3RzKCJQYWdlVVJMIikgJiYgbV9kYi50YWJsZUV4aXN0cygi
SWNvbkRhdGFiYXNlSW5mbyIpKQorICAgIGlmIChtX2RiLnRhYmxlRXhpc3RzKCJJY29uSW5mbyJf
cykgJiYgbV9kYi50YWJsZUV4aXN0cygiSWNvbkRhdGEiX3MpICYmIG1fZGIudGFibGVFeGlzdHMo
IlBhZ2VVUkwiX3MpICYmIG1fZGIudGFibGVFeGlzdHMoIkljb25EYXRhYmFzZUluZm8iX3MpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9hbGxvd0RhdGFiYXNlV3JpdGUgPT0g
QWxsb3dEYXRhYmFzZVdyaXRlOjpObykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCAzMDgwZWM0MDM2MzZhODRhYTA1MWEzZjhmODNk
NjllMmIxMzJhMDlmLi5iZDIzNzFjMDMyMTMwM2Y3YzgyYTk2MDAxOGZlZTIwN2ZhM2Q2ZWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpA
QCAtMjk0OSw3ICsyOTQ5LDcgQEAgLSAoQk9PTClfYWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdAog
LSAoQk9PTClfaXNEaXNwbGF5aW5nUERGCiB7CiAgICAgZm9yIChhdXRvJiB0eXBlIDogV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkpIHsKLSAgICAgICAgQ2xhc3MgcHJv
dmlkZXJDbGFzcyA9IFtbX2NvbmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5XSBw
cm92aWRlckZvck1JTUVUeXBlOkAodHlwZSldOworICAgICAgICBDbGFzcyBwcm92aWRlckNsYXNz
ID0gW1tfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIHByb3ZpZGVyRm9y
TUlNRVR5cGU6QCh0eXBlLmNoYXJhY3RlcnMoKSldOwogICAgICAgICBpZiAoW19jdXN0b21Db250
ZW50VmlldyBpc0tpbmRPZkNsYXNzOnByb3ZpZGVyQ2xhc3NdKQogICAgICAgICAgICAgcmV0dXJu
IFlFUzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAxYzU0ZTAxNTg0ZTYwMzA1NDA4NjRiYjE2ZTE0NTY2YTgyNzgz
MGJlLi4zNzFhNTBiZjhhZGY2ZWNkMWFlMzdhYTUyYmFjOTExMzc5ZWE5NDMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTY0
LDExICs2NCwxMyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9u
cyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdQogewogICAgIGxhdW5jaE9wdGlv
bnMucHJvY2Vzc0lkZW50aWZpZXIgPSBtX3Byb2Nlc3NJZGVudGlmaWVyOwogCi0gICAgaWYgKGNv
bnN0IGNoYXIqIHVzZXJEaXJlY3RvcnlTdWZmaXggPSBnZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJ
Ul9TVUZGSVgiKSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0
YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgi
X3MsIHVzZXJEaXJlY3RvcnlTdWZmaXgpOworICAgIGlmIChjb25zdCBjaGFyKiB1c2VyRGlyZWN0
b3J5U3VmZml4ID0gZ2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikpIHsKKyAgICAg
ICAgaWYgKGF1dG8gdXNlckRpcmVjdG9yeVN1ZmZpeFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgo
dXNlckRpcmVjdG9yeVN1ZmZpeCk7ICF1c2VyRGlyZWN0b3J5U3VmZml4U3RyaW5nLmlzTnVsbCgp
KQorICAgICAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQ8
SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiX3MsIHVz
ZXJEaXJlY3RvcnlTdWZmaXhTdHJpbmcpOworICAgIH0KIAogICAgIGlmIChtX2Fsd2F5c1J1bnNB
dEJhY2tncm91bmRQcmlvcml0eSkKLSAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJhbHdheXMtcnVucy1h
dC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCAidHJ1ZSIpOworICAgICAgICBsYXVuY2hPcHRpb25z
LmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZDxIYXNoVHJhbnNsYXRvckFTQ0lJTGl0ZXJhbD4o
ImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3MsICJ0cnVlIl9zKTsKIAogI2lm
IEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KSkKICAgICBjb25zdCBjaGFyKiB2YXJuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9T
dWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggNjBjMGQ5ZGFlMGYwZDZhZGM1
NmNmZDFjOGNmMTBlZjk0M2Q1MWQzNS4uMjA3MmI1YjZiMWNiOTBmOGY2MjdmNjk2NWMzMTBmMDFl
N2Y0YjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFtZSgpCiAgICAgICAgIHBhZ2UtPnNldFNo
b3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
KCk7CiAgICAgICAgIGF1dG8mIHVybCA9IG1fcmVxdWVzdHNUb0xvYWQuZmlyc3QoKS5maXJzdDsK
ICAgICAgICAgV1RGOjpzd2l0Y2hPbihtX3JlcXVlc3RzVG9Mb2FkLmZpcnN0KCkuc2Vjb25kLCBb
Jl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSB7Ci0gICAgICAgICAgICBmcmFtZS0+bG9h
ZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAidGV4dC9odG1sIiwgIlVURi04IiwgdXJs
KTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSks
ICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgdXJsKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpIHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkVVJMKHVybCwgcmVmZXJy
ZXIpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0KaW5kZXgg
NDQ2ZjVmZGIzN2ExNWYxYzJmYzliMzkzMWIxZDAwMDIxY2QyODg0Ny4uZWE0NDlmOGRjN2QwYzU1
Mjk3ZWU1YmU4YzFjNmM4Zjk4YmM2ODY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0
cnkubW0KQEAgLTUyLDEzICs1MiwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAjaWYgRU5B
QkxFKFdLUERGVklFVykKICAgICBmb3IgKGF1dG8mIHR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKLSAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpb
V0tQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTpAKHR5cGUpXTsKKyAgICAgICAgW3NlbGYgcmVn
aXN0ZXJQcm92aWRlcjpbV0tQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTpAKHR5cGUuY2hhcmFj
dGVycygpKV07CiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykgJiYgIUhBVkUoVUlL
SVRfV0VCS0lUX0lOVEVSTkFMUykKICAgICBpZiAoY29uZmlndXJhdGlvbi5fc3lzdGVtUHJldmll
d0VuYWJsZWQgJiYgIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMuX21vZGVsRG9jdW1lbnRFbmFi
bGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OnVzZE1JTUVUeXBlcygpKQotICAgICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpb
V0tVU0RQcmV2aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlKV07CisgICAgICAgICAg
ICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1VTRFByZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1F
VHlwZTpAKHR5cGUuY2hhcmFjdGVycygpKV07CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tCmluZGV4
IDBlYzExNzQzYmIxZDhmMzlhMjUwYjUxYjNlNTc4NGJhZTFlNTBlMzAuLmVmY2E4ODAxM2YwZjEz
YzE2YzE4ZjliMWZiNWMwY2EwNGIyZjMwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGluay5tbQpAQCAtNDEsOCArNDEsMTEgQEAg
dm9pZCogV2ViS2l0U3dpZnRMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCkKICAgICAgICAgLy8gVGhl
biBzZWFyY2ggaW4gdGhlIEZyYW1ld29ya3MvIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudGx5IGxv
YWRlZCB2ZXJzaW9uIG9mIFdlYktpdC5mcmFtZXdvcms6CiAgICAgICAgIERsX2luZm8gaW5mbyB7
IH07CiAgICAgICAgIGlmIChkbGFkZHIoKGNvbnN0IHZvaWQqKSZXZWJLaXRTd2lmdExpYnJhcnks
ICZpbmZvKSAmJiBzdHJsZW4oaW5mby5kbGlfZm5hbWUpKSB7Ci0gICAgICAgICAgICBhdXRvIHdl
YmtpdEZyYW1ld29ya0RpcmVjdG9yeSA9IFdURjo6RmlsZVN5c3RlbUltcGw6OnBhcmVudFBhdGgo
aW5mby5kbGlfZm5hbWUpOwotICAgICAgICAgICAgYXV0byBkeWxpYlBhdGggPSBXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJhbWV3b3JrRGlyZWN0
b3J5LCAiRnJhbWV3b3Jrcy9saWJXZWJLaXRTd2lmdC5keWxpYiIpOworICAgICAgICAgICAgYXV0
byBkbGlQYXRoID0gU3RyaW5nOjpmcm9tVVRGOChpbmZvLmRsaV9mbmFtZSk7CisgICAgICAgICAg
ICBpZiAoZGxpUGF0aC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBhdXRvIHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSA9IFdURjo6RmlsZVN5c3RlbUltcGw6
OnBhcmVudFBhdGgoZGxpUGF0aCk7CisgICAgICAgICAgICBhdXRvIGR5bGliUGF0aCA9IFdURjo6
RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh3ZWJraXRGcmFtZXdvcmtE
aXJlY3RvcnksICJGcmFtZXdvcmtzL2xpYldlYktpdFN3aWZ0LmR5bGliIl9zKTsKICAgICAgICAg
ICAgIGlmICgobGlicmFyeSA9IGRsb3BlbihkeWxpYlBhdGgudXRmOCgpLmRhdGEoKSwgUlRMRF9O
T1cpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDI4
YTU4NTFmNWVlMGFjMGEzNGJhNzczZGQ2MTM0MzdiZjU0ODcxNzMuLjgwODU3MzIzZjlkOGY5YzM4
ZjYxYTkyMWI3ZGViODQ0YjgwMGYyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjgyLDcgKzI4Miw3IEBAIFN0
cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSgpCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQog
ewotICAgIG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGggPSByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSByZXNvdXJj
ZVBhdGhdKTsKKyAgICBtX3Jlc29sdmVkUGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRo
ID0gcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKFN0cmluZyB7IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSB9KTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDAw
NzRkY2E3NzI3YTk2ODc0ZmIxZWQzODQ3ZjUxOWUxNjA0YTUzZjcuLmE3YmYzZDJkYzRkNmUzMmVl
NmNiZjZjMjAyMGU1ZWNkY2M3MGVhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC05MjYsMTcgKzkyNiwxNyBAQCAtICh2b2lkKV93a0NoYW5n
ZVRleHRTdHlsZTooaWQpc2VuZGVyCiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0
ZWRGb3JTZWdtZW50OjBdICE9IF90ZXh0SXNCb2xkKSB7CiAgICAgICAgIF90ZXh0SXNCb2xkID0g
IV90ZXh0SXNCb2xkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENv
bW1hbmQoQCJUb2dnbGVCb2xkIiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCku
ZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVCb2xkIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9
CiAKICAgICBpZiAoW3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjFdICE9IF90
ZXh0SXNJdGFsaWMpIHsKICAgICAgICAgX3RleHRJc0l0YWxpYyA9ICFfdGV4dElzSXRhbGljOwot
ICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZUl0
YWxpYyIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29t
bWFuZCgiVG9nZ2xlSXRhbGljIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAo
W3NlbGYudGV4dFN0eWxlIGlzU2VsZWN0ZWRGb3JTZWdtZW50OjJdICE9IF90ZXh0SXNVbmRlcmxp
bmVkKSB7CiAgICAgICAgIF90ZXh0SXNVbmRlcmxpbmVkID0gIV90ZXh0SXNVbmRlcmxpbmVkOwot
ICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRvZ2dsZVVu
ZGVybGluZSIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0
Q29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5lIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICB9CiB9CiAK
QEAgLTk1NSwxOSArOTU1LDE5IEBAIC0gKHZvaWQpX3drQ2hhbmdlVGV4dEFsaWdubWVudDooaWQp
c2VuZGVyCiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVu
dExlZnQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudExl
ZnQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxp
Z25MZWZ0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRD
b21tYW5kKCJBbGlnbkxlZnQiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE5TVGV4dEFsaWdubWVudFJpZ2h0OgogICAgICAgICBfY3VycmVudFRleHRBbGlnbm1l
bnQgPSBOU1RleHRBbGlnbm1lbnRSaWdodDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCku
ZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0IiwgQCIiKTsKKyAgICAgICAgX3dlYlZpZXdJ
bXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnblJpZ2h0Il9zLCBlbXB0eVN0cmlu
ZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6CiAg
ICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudENlbnRlcjsKLSAg
ICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkNlbnRl
ciIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFu
ZCgiQWxpZ25DZW50ZXIiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE5TVGV4dEFsaWdubWVudEp1c3RpZmllZDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25t
ZW50ID0gTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOwotICAgICAgICBfd2ViVmlld0ltcGwtPnBh
Z2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduSnVzdGlmaWVkIiwgQCIiKTsKKyAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJBbGlnbkp1c3RpZmllZCJf
cywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtOTkzLDcgKzk5Myw3IEBAIC0gKHZvaWQpX3drQ2hhbmdlQ29sb3I6KGlkKXNl
bmRlcgogICAgICAgICByZXR1cm47CiAKICAgICBfdGV4dENvbG9yID0gc2VsZi5jb2xvclBpY2tl
ckl0ZW0uY29sb3I7Ci0gICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5k
KCJGb3JlQ29sb3IiLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChXZWJDb3JlOjpjb2xv
ckZyb21Db2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7CisgICAgX3dlYlZpZXdJbXBsLT5w
YWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OnNlcmlhbGl6
YXRpb25Gb3JIVE1MKFdlYkNvcmU6OmNvbG9yRnJvbUNvY29hQ29sb3IoX3RleHRDb2xvci5nZXQo
KSkpKTsKIH0KIAogLSAoTlNWaWV3Q29udHJvbGxlciAqKXRleHRMaXN0Vmlld0NvbnRyb2xsZXIK
QEAgLTUxMzIsNyArNTEzMiw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Omluc2VydFRleHQoaWQgc3Ry
aW5nLCBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4qIGtleXByZXNzQ29tbWFuZHMgPSBtX2NvbGxlY3RlZEtleXByZXNzQ29tbWFu
ZHM7CiAgICAgaWYgKGtleXByZXNzQ29tbWFuZHMgJiYgIW1faXNUZXh0SW5zZXJ0aW9uUmVwbGFj
aW5nU29mdFNwYWNlKSB7CiAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9u
ID09IE5TTm90Rm91bmQpOwotICAgICAgICBXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQgY29tbWFu
ZCgiaW5zZXJ0VGV4dDoiLCB0ZXh0KTsKKyAgICAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5k
IGNvbW1hbmQoImluc2VydFRleHQ6Il9zLCB0ZXh0KTsKICAgICAgICAga2V5cHJlc3NDb21tYW5k
cy0+YXBwZW5kKGNvbW1hbmQpOwogICAgICAgICBMT0coVGV4dElucHV0LCAiLi4uc3RvcmVkIik7
CiAgICAgICAgIG1fcGFnZS0+cmVnaXN0ZXJLZXlwcmVzc0NvbW1hbmROYW1lKGNvbW1hbmQuY29t
bWFuZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2UuY3BwCmluZGV4IDRiMjFlOTg5ZjI3OWFlNjczNGQ5ZDMyNjAxZGUzNjZkYjAw
YWY3YjIuLmVjNjliZjZhZDNlN2M1OGUxNzExOTcxNTJkMGIzNDRjMjIyNDFmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6On5EZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZSgpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKGNv
bnN0IGNoYXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKEFTQ0lJTGl0ZXJh
bCBuYW1lLCBLZXllZERlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIG9yaWdpbjsKIApA
QCAtMTU3LDIwICsxNTcsMjAgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6bG9hZFN0
b3JhZ2VGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hNYXAKIAogc3RkOjp1bmlx
dWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4gRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXIqIGRlY29k
ZXIsIFN0cmluZyYmIGRldmljZUlkSGFzaFNhbHQpIGNvbnN0CiB7Ci0gICAgYXV0byBzZWN1cml0
eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoIm9yaWdpbiIsIGRlY29kZXIpOwor
ICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJvcmln
aW4iX3MsIGRlY29kZXIpOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW5EYXRhKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlOiBUaGUgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZpbGUgaXMgbm90IGNvcnJlY3Q6
ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YSA9IGdl
dFNlY3VyaXR5T3JpZ2luRGF0YSgicGFyZW50T3JpZ2luIiwgZGVjb2Rlcik7CisgICAgYXV0byBw
YXJlbnRTZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0eU9yaWdpbkRhdGEoInBhcmVudE9y
aWdpbiJfcywgZGVjb2Rlcik7CiAgICAgaWYgKCFwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAiRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2U6IFRoZSBwYXJlbnQgc2VjdXJpdHkgb3JpZ2luIGRhdGEgaW4gdGhlIGZpbGUg
aXMgbm90IGNvcnJlY3Q6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBkb3VibGUgbGFzdFRpbWVVc2Vk
OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiLCBsYXN0VGlt
ZVVzZWQpKSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJf
cywgbGFzdFRpbWVVc2VkKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihEaXNrUGVyc2lz
dGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhlIGxhc3QgdGltZSB1c2VkIHdhcyBu
b3QgY29ycmVjdGx5IHJlc3RvcmVkIGZvcjogJyVzJyIsIGRldmljZUlkSGFzaFNhbHQudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE4NSw5ICsxODUs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9y
T3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0U3Rvcgogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rl
cj4gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YShjb25zdCBI
YXNoU2FsdEZvck9yaWdpbiYgaGFzaFNhbHRGb3JPcmlnaW4pIGNvbnN0CiB7CiAgICAgYXV0byBl
bmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3Ry
aW5nKCJvcmlnaW4iLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1bWVudE9yaWdpbi5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJwYXJlbnRPcmlnaW4iLCBo
YXNoU2FsdEZvck9yaWdpbi5wYXJlbnRPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAg
IGVuY29kZXItPmVuY29kZURvdWJsZSgibGFzdFRpbWVVc2VkIiwgaGFzaFNhbHRGb3JPcmlnaW4u
bGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlU3RyaW5nKCJvcmlnaW4iX3MsIGhhc2hTYWx0Rm9yT3JpZ2luLmRvY3VtZW50T3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcoInBhcmVu
dE9yaWdpbiJfcywgaGFzaFNhbHRGb3JPcmlnaW4ucGFyZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCJfcywgaGFz
aFNhbHRGb3JPcmlnaW4ubGFzdFRpbWVVc2VkLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7
CiAgICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3Bw
CmluZGV4IDZmNTljYWJhM2EwNzc5NzRkMzc4NWE2N2MwNDZhNmQ2ZGE0MTE4MTYuLjI4MjJlZTg3
ZWY0NTAyNWNjOTVjMDE5NjRlMzk1YjQ2ZjNiNmI0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVBy
b3h5R3RrLmNwcApAQCAtMTQ1LDE2ICsxNDUsMTYgQEAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0
b3JlPiBpbnNwZWN0b3JXZWJzaXRlRGF0YVN0b3JlKCkKICAgICBTdHJpbmcgYmFzZURhdGFEaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
dXNlckRhdGFEaXJlY3RvcnkoKSwgdmVyc2lvbmVkRGlyZWN0b3J5KTsKIAogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoSXNQZXJz
aXN0ZW50OjpZZXMsIFdpbGxDb3B5UGF0aHNGcm9tRXhpc3RpbmdDb25maWd1cmF0aW9uOjpZZXMp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlRGlyZWN0b3J5LCAiV2ViS2l0Q2Fj
aGUiKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlRGlyZWN0b3J5LCAi
YXBwbGljYXRpb25zIikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVj
dG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlRGlyZWN0
b3J5LCAiV2ViS2l0Q2FjaGUiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNl
Q2FjaGVEaXJlY3RvcnksICJhcHBsaWNhdGlvbnMiX3MpKTsKICAgICBjb25maWd1cmF0aW9uLT5z
ZXRIU1RTU3RvcmFnZURpcmVjdG9yeShTdHJpbmcoYmFzZUNhY2hlRGlyZWN0b3J5KSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChiYXNlQ2FjaGVEaXJlY3RvcnksICJDYWNoZVN0b3JhZ2UiKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVjdG9yeSwgImxvY2Fsc3RvcmFn
ZSIpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJp
bmRleGVkZGIiKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5
LCAiZGF0YWJhc2VzIikpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VE
YXRhRGlyZWN0b3J5LCAiaXRwIikpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAic2VydmljZXdvcmtlcnMiKSk7Ci0gICAgY29uZmlndXJh
dGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVjdG9yeSwgImRldmljZWlkaGFzaHNh
bHRzIikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlRGlyZWN0b3J5LCAiQ2Fj
aGVTdG9yYWdlIl9zKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVjdG9y
eSwgImxvY2Fsc3RvcmFnZSJfcykpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNl
RGF0YURpcmVjdG9yeSwgImluZGV4ZWRkYiJfcykpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChiYXNlRGF0YURpcmVjdG9yeSwgImRhdGFiYXNlcyJfcykpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAiaXRwIl9zKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJzZXJ2aWNld29y
a2VycyJfcykpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFE
aXJlY3RvcnksICJkZXZpY2VpZGhhc2hzYWx0cyJfcykpOwogICAgIHJldHVybiBXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6Omdl
bmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0
b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IDY5NTI3ZWRhNzI2M2Q4ZjM3ZTNh
ODA5NjI1MjhlZTE2M2Q2ZDc1ZjguLjQ3NGE1OGNkZWIwNTZiNjhlYWZlMTFjMDRlYTkwMDI0Mjkw
MjdiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4v
SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhh
bmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFMKICAgICBpZiAo
cmVxdWVzdFBhdGguc3RhcnRzV2l0aCgiXFwiKSkKICAgICAgICAgcmVxdWVzdFBhdGgucmVtb3Zl
KDApOwogICAgIGF1dG8gcGF0aCA9IFVSTChhZG9wdENGKENGQnVuZGxlQ29weUJ1bmRsZVVSTChX
ZWJDb3JlOjp3ZWJLaXRCdW5kbGUoKSkpLmdldCgpKS5maWxlU3lzdGVtUGF0aCgpOwotICAgIHBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgIldlYkluc3Bl
Y3RvclVJIik7CisgICAgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCAiV2ViSW5zcGVjdG9yVUkiX3MpOwogICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgcmVxdWVzdFBhdGgpOwogICAgIGJvb2wgc3VjY2Vz
czsKICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBmaWxlKHBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUy
OGYwZDRjMDdiMTYyYTRkN2Y0NzEzODJiM2RkMDU0YjA3NjgwMTEuLjEzYjUzYzZlMzM0ZTU0MmQ5
Y2JiMjliZWM0OGU1ZjE1YTQ1NjI2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTYzOCw3ICsxNjM4
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3Jh
ZGUoY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWIKICAgICBpZiAoaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIG9sZFZlcnNp
b25EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5LCAidjAiKTsKKyAgICBTdHJpbmcgb2xkVmVyc2lvbkRpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChpbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnksICJ2MCJfcyk7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
b2xkVmVyc2lvbkRpcmVjdG9yeSk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9s
ZFZlcnNpb25EaXJlY3RvcnkpKQogICAgICAgICBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xp
bmsoaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBvbGRWZXJzaW9uRGlyZWN0b3J5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0KaW5kZXggMmU4NmMxYjY2YTRkNTJkNmYzMDRhNDkwNTJlMGZlMDk4NWRj
MzM3OC4uNTE3MTYwMjg3NDlkMGJmODM0MWUzNzA5MDdmZWFiOThmNTU0MzI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Q29jb2EubW0KQEAgLTU0LDExICs1NCwxMSBAQCBib29sIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OlhQQ0V2ZW50SGFuZGxlcjo6aGFuZGxlWFBDRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBj
bwogICAgIGlmICghZXZlbnQgfHwgeHBjX2dldF90eXBlKGV2ZW50KSA9PSBYUENfVFlQRV9FUlJP
UikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1l
S2V5KTsKLSAgICBpZiAobWVzc2FnZU5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8qIG1lc3NhZ2VO
YW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6OnhwY01l
c3NhZ2VOYW1lS2V5KTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lIHx8ICEqbWVzc2FnZU5hbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtZXNzYWdlTmFtZSA9PSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5k
cG9pbnRNZXNzYWdlTmFtZSkgeworICAgIGlmIChMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDRW5kcG9pbnRNZXNzYWdlTmFtZSA9
PSBtZXNzYWdlTmFtZSkgewogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5tX2VuZHBvaW50TWVz
c2FnZSA9IGV2ZW50OwogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vz
c1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3MgOiBwcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggZWY4ZDJkZDg2MDE5NDAwZDBkZmMxM2ZhMWE0MjY2NjJmYjdiZDQyNS4u
N2FjNDRhOTdiMGJmZGMzYzU1Nzc0YzRhYThmMzkyYTQyYWJjYmIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2Vy
TWVkaWFQZXJtCiAgICAgdXBkYXRlU3RvcmVkUmVxdWVzdHMocmVxdWVzdCk7CiAKICAgICBpZiAo
IVVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS53aWxsQ3JlYXRlTWVkaWFTdHJl
YW0oKnRoaXMsIHJlcXVlc3QuaGFzQXVkaW9EZXZpY2UoKSwgcmVxdWVzdC5oYXNWaWRlb0Rldmlj
ZSgpKSkgewotICAgICAgICBkZW55UmVxdWVzdChyZXF1ZXN0LCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246Ok90aGVyRmFpbHVyZSwg
IlVuYWJsZSB0byBleHRlbmQgc2FuZGJveC4iKTsKKyAgICAgICAgZGVueVJlcXVlc3QocmVxdWVz
dCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFs
UmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUgdG8gZXh0ZW5kIHNhbmRib3guIl9zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggN2JkNTg3N2RkOGU5MjU4ZGM1ZDZhN2ZhNDI4
NjdmYjkyOTc5ZDZmYS4uNGFhNzI5ZGI0YTJjNjgyZTM3OWI3MTVjMTZiYTRmYjA2NDZmMDQ0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgU3RyaW5nIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25h
cHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRzRGVzY3JpcHRpb24oRXZlbnRzIGUKIH0KIAogCi12
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nKGNv
bnN0IFN0cmluZyYgbG9nKSBjb25zdAordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhTdHJpbmdWaWV3IGxvZykgY29uc3QKIHsKICAgICBSRUxF
QVNFX0xPRyhWaWV3R2VzdHVyZXMsICJTd2lwZSBTbmFwc2hvdCBSZW1vdmFsICglMC4yZiBtcykg
LSAlcyIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lKS5taWxsaXNlY29uZHMo
KSwgbG9nLnV0ZjgoKS5kYXRhKCkpOwogfQpAQCAtMzI0LDEzICszMjQsMTMgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBk
ZXNpcmVkRXZlbnRzLAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3Zh
bFRyYWNrZXI6OnJlc2V0KCkKIHsKICAgICBpZiAobV9vdXRzdGFuZGluZ0V2ZW50cykKLSAgICAg
ICAgbG9nKCJyZXNldDsgaGFkIG91dHN0YW5kaW5nIGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0
aW9uKG1fb3V0c3RhbmRpbmdFdmVudHMpKTsKKyAgICAgICAgbG9nKG1ha2VTdHJpbmcoInJlc2V0
OyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiLCBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5k
aW5nRXZlbnRzKSkpOwogICAgIG1fb3V0c3RhbmRpbmdFdmVudHMgPSAwOwogICAgIG1fd2F0Y2hk
b2dUaW1lci5zdG9wKCk7CiAgICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBudWxscHRyOwogfQogCi1i
b29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BX
YWl0aW5nRm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1JlYXNvbiwgU2hv
dWxkSWdub3JlRXZlbnRJZlBhdXNlZCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQorYm9vbCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OnN0b3BXYWl0aW5n
Rm9yRXZlbnQoRXZlbnRzIGV2ZW50LCBBU0NJSUxpdGVyYWwgbG9nUmVhc29uLCBTaG91bGRJZ25v
cmVFdmVudElmUGF1c2VkIHNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQpCiB7CiAgICAgQVNTRVJU
KGhhc09uZUJpdFNldChldmVudCkpOwogCkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBib29sIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9y
RXZlbnQoRXZlbnRzCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzaG91bGRJZ25v
cmVFdmVudElmUGF1c2VkID09IFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQ6OlllcyAmJiBpc1Bh
dXNlZCgpKSB7Ci0gICAgICAgIGxvZygiaXMgcGF1c2VkOyBpZ25vcmluZyBldmVudDogIiArIGV2
ZW50c0Rlc2NyaXB0aW9uKGV2ZW50KSk7CisgICAgICAgIGxvZyhtYWtlU3RyaW5nKCJpcyBwYXVz
ZWQ7IGlnbm9yaW5nIGV2ZW50OiAiLCBldmVudHNEZXNjcmlwdGlvbihldmVudCkpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGxvZyhsb2dSZWFzb24gKyBldmVudHNEZXNj
cmlwdGlvbihldmVudCkpOworICAgIGxvZyhtYWtlU3RyaW5nKGxvZ1JlYXNvbiwgZXZlbnRzRGVz
Y3JpcHRpb24oZXZlbnQpKSk7CiAKICAgICBtX291dHN0YW5kaW5nRXZlbnRzICY9IH5ldmVudDsK
IApAQCAtMzUyLDEyICszNTIsMTIgQEAgYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBz
aG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cwogCiBib29sIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJl
ZChFdmVudHMgZXZlbnQsIFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZl
bnRJZlBhdXNlZCkKIHsKLSAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91
dHN0YW5kaW5nIGV2ZW50IG9jY3VycmVkOiAiLCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsK
KyAgICByZXR1cm4gc3RvcFdhaXRpbmdGb3JFdmVudChldmVudCwgIm91dHN0YW5kaW5nIGV2ZW50
IG9jY3VycmVkOiAiX3MsIHNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQpOwogfQogCiBib29sIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6Y2FuY2VsT3V0c3Rh
bmRpbmdFdmVudChFdmVudHMgZXZlbnQpCiB7Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZl
bnQoZXZlbnQsICJ3YWl0IGZvciBldmVudCBjYW5jZWxsZWQ6ICIpOworICAgIHJldHVybiBzdG9w
V2FpdGluZ0ZvckV2ZW50KGV2ZW50LCAid2FpdCBmb3IgZXZlbnQgY2FuY2VsbGVkOiAiX3MpOwog
fQogCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
aGFzT3V0c3RhbmRpbmdFdmVudChFdmVudCBldmVudCkKQEAgLTM2OCw3ICszNjgsNyBAQCBib29s
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6aGFzT3V0c3Rh
bmRpbmdFdmVudChFdmVudCBldgogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCkKIHsKICAgICBp
ZiAobV9vdXRzdGFuZGluZ0V2ZW50cykgewotICAgICAgICBsb2coImRlZmVycmluZyByZW1vdmFs
OyBoYWQgb3V0c3RhbmRpbmcgZXZlbnRzOiAiICsgZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFu
ZGluZ0V2ZW50cykpOworICAgICAgICBsb2cobWFrZVN0cmluZygiZGVmZXJyaW5nIHJlbW92YWw7
IGhhZCBvdXRzdGFuZGluZyBldmVudHM6ICIsIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRp
bmdFdmVudHMpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggMjBjMzBiODM0ODg4N2Yz
ZTUyMDBiZjg2OTcwZDgyNDljMzUwNDdiZi4uMDJhMGI4OThmZDVjYjJlYTYyZjBmN2NiMGQ4Njg4
YWI1Njk0ZGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmgKQEAgLTI1MCwxMyArMjUwLDEzIEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRl
OgogICAgICAgICBzdGF0aWMgU3RyaW5nIGV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyk7Ci0gICAg
ICAgIHZvaWQgbG9nKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgICAgICB2b2lkIGxvZyhTdHJp
bmdWaWV3KSBjb25zdDsKIAogICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlh
dGVseSgpOwogICAgICAgICB2b2lkIGZpcmVSZW1vdmFsQ2FsbGJhY2tJZlBvc3NpYmxlKCk7CiAg
ICAgICAgIHZvaWQgd2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKLSAgICAgICAgYm9vbCBzdG9wV2Fp
dGluZ0ZvckV2ZW50KEV2ZW50cywgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9y
ZUV2ZW50SWZQYXVzZWQgPSBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkOjpZZXMpOworICAgICAg
ICBib29sIHN0b3BXYWl0aW5nRm9yRXZlbnQoRXZlbnRzLCBBU0NJSUxpdGVyYWwgbG9nUmVhc29u
LCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkID0gU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6
WWVzKTsKIAogICAgICAgICBFdmVudHMgbV9vdXRzdGFuZGluZ0V2ZW50cyB7IDAgfTsKICAgICAg
ICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcmVtb3ZhbENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpp
bmRleCBkODFkNzgwNjIxYzgwNTA5M2Q0ODNmMWVhYzM1ZTI5MDFkODE4M2I5Li5mNjdjZTQwNDMx
NWVkNjI4ZWYxZjgyZTQxMzUyYjFhNWE4NmMxMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpAQCAtNDE2LDcg
KzQxNiw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1S
ZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxCiAgICAgICAgIFttX3Byb3h5IHBlcmZv
cm1BdXRvRmlsbEF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6cmVxdWVzdENvbnRleHQu
Z2V0KCkgd2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGlkPEFTQ0NyZWRlbnRp
YWxQcm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgZW5zdXJlT25NYWluUnVuTG9vcChbd2Vha1RoaXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBjcmVkZW50aWFsID0gcmV0YWluUHRyKGNyZWRlbnRpYWwpLCBlcnJvciA9IHJldGFp
blB0cihlcnJvcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
IHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNo
bWVudCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxl
ZC4iIH0pOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJPcGVyYXRpb24g
ZmFpbGVkLiJfcyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZUFmdGVyUmVxdWVzdChjcmVkZW50aWFsLCBl
cnJvciwgV1RGTW92ZShoYW5kbGVyKSk7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6cGVyZm9ybVJlcXVlc3QoUmV0YWluUHRyPEFTQ0Ny
ZWRlbnRpYWxSZXEKICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKSwgd2luZG93ID0gV1RGTW92ZSh3aW5kb3cpLCBkYWVtb25FbmRw
b2ludCA9IHJldGFpblB0cihkYWVtb25FbmRwb2ludCksIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkYWVtb25FbmRw
b2ludCkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvbm5lY3QgdG8g
YXV0aG9yaXphdGlvbiBkYWVtb246ICVAXG4iLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVudCkwLCBFeGNlcHRpb25EYXRh
IHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4iIH0pOworICAgICAgICAgICAg
ICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0
YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIl9zIH0pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRv
clV0aWxzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmly
dHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tCmluZGV4IDc2ZTMzYTczODY3YmM0Zjdl
Y2Y3YmNkNjZjMDhlYWM1NmVmNjBmMWEuLjNmMDBhNTBhNzllZjZmMTM0NzEwNWI0ZWY3ODY0YTYx
Y2MyMDQ2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50
aWNhdG9yVXRpbHMubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBTdHJpbmcgYmFzZTY0UHJpdmF0ZUtl
eShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5KQogICAgIGF1dG8gcmV0YWluRXJyb3Ig
PSBhZG9wdENGKGVycm9yUmVmKTsKICAgICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgfQogICAgIE5TRGF0YSAqbnNQcml2YXRlS2V5UmVwID0gKE5TRGF0YSAq
KXByaXZhdGVLZXlSZXAuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFs
SGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggMTUwZmU0MmNkNDY3NjljNTM2NjA5MWQ2ZjRmZjRjMzFl
YTZmYzVmNS4uYTdkMGI1MDAxZTI0ZmUxNmVhZTI4ZmM4MzUzOGVkOTU5YjgzNWU2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9W
aXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTIyMiw3
ICsyMjIsNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAg
ICAgICAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSByZXNwb25zZTsKICAgICAgICAgICAgIHJlc3Bv
bnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoIm5vbmUiKTsKICAgICAgICAgICAgIHJlc3Bv
bnNlW0NCT1JWYWx1ZSgyKV0gPSBDQk9SVmFsdWUoYXV0aGVudGljYXRvckRhdGEpOwotICAgICAg
ICAgICAgYXV0byBhdHRPYmogPSBidWlsZEF0dGVzdGF0aW9uTWFwKFdURk1vdmUoYXV0aGVudGlj
YXRvckRhdGEpLCAiIiwgeyB9LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25l
KTsKKyAgICAgICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3Zl
KGF1dGhlbnRpY2F0b3JEYXRhKSwgU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9LCB7IH0sIEF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUpOwogICAgICAgICAgICAgcmVzcG9uc2Vb
Q0JPUlZhbHVlKDMpXSA9IENCT1JWYWx1ZShhdHRPYmopOwogICAgICAgICAgICAgYXV0byBwYXls
b2FkID0gQ0JPUldyaXRlcjo6d3JpdGUoQ0JPUlZhbHVlKHJlc3BvbnNlKSk7CiAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgVmlydHVh
bEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgICAgICByZXNwb25zZVtDQk9S
VmFsdWUoMildID0gQ0JPUlZhbHVlKGF1dGhEYXRhKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NC
T1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoc2lnbmF0dXJlRm9yUHJpdmF0ZUtleShrZXksIGF1dGhE
YXRhLCBjbGllbnREYXRhSGFzaCkpOwogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwudXNlckhh
bmRsZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVl
KGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51c2VySGFuZGxlLCAiIiwgIiIpKTsKKyAg
ICAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNl
ckVudGl0eU1hcCgqY3JlZGVudGlhbC51c2VySGFuZGxlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpKSk7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNSldID0gQ0JPUlZhbHVl
KChpbnQ2NF90KW1hdGNoaW5nQ3JlZGVudGlhbHMuc2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8g
cGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA4MGRjYzlmNmJmNWYwNWU0Nzdl
NmVkZjA0M2MwMTQ0NDhmMTUxNmM1Li5lOGQwZmY5NTc5ZmQyODllNWRiYzU2N2IwMzYxZDAxN2Rl
MTI3OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXQK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0
aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxs
ZWQgYnkgdGhlIHVzZXIuIiB9KTsKKyAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIlRoaXMg
cmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuIl9zIH0pOwogICAgIH07CiAg
ICAgCiAgICAgaWYgKCFkYXRhLnByb2Nlc3NpbmdVc2VyR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCmluZGV4IGYxYjkwZDNmYjZiNDUwOGQ2YTNmZmNkZDY3
OTFiODliYTdlMDRjZjIuLjhhMzkzY2VjZWI2NGE1MzgzNTg4ODVmYzRiMGViODJkNGVhYzQwNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtOTEsNyArOTEs
NyBAQCBzdGF0aWMgV2ViUGFnZUdyb3VwRGF0YSBwYWdlR3JvdXBEYXRhKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikKIC8vIElmIGl0IHR1cm5zIG91dCB0aGF0IGl0J3Mgd3JvbmcsIHdlIGNhbiBj
aGFuZ2UgaXQgdG8gdG8gIldlYktpdDIuIiBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsRGVidWdL
ZXlQcmVmaXggZnJvbSBXZWJQcmVmZXJlbmNlcy4KIFdlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3Vw
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1fZGF0YShwYWdlR3JvdXBEYXRhKGlk
ZW50aWZpZXIpKQotICAgICwgbV9wcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0
aExlZ2FjeURlZmF1bHRzKG1fZGF0YS5pZGVudGlmaWVyLCAiLldlYktpdDIiLCAiV2ViS2l0Mi4i
KSkKKyAgICAsIG1fcHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lE
ZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmllciwgIi5XZWJLaXQyIl9zLCAiV2ViS2l0Mi4iX3MpKQog
ICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmNyZWF0ZSgpKQogewogICAgIHdlYlBhZ2VHcm91cE1hcCgpLnNldChtX2RhdGEucGFnZUdy
b3VwSUQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNDA2MTZjYTcxZjViNWY3N2ZmMDYzZGQ1NTVjY2IwNzAwMjNjZjc4Ny4uMTRhZGJkOGFjYTg2
NWZkYWM1NzgzNDExZmM5OWYwNDgwNGE3YjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0xMTExMiw3ICsxMTExMiw3IEBAIFdlYkNvcmU6OkNhcHR1cmVT
b3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNw
ZWVjaFJlCiB7CiAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0gU3BlZWNoUmVjb2duaXRpb25DYXB0
dXJlU291cmNlOjpmaW5kQ2FwdHVyZURldmljZSgpOwogICAgIGlmICghY2FwdHVyZURldmljZSkK
LSAgICAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yIHsgIk5vIGRldmljZSBpcyBhdmFp
bGFibGUgZm9yIGNhcHR1cmUiIH07CisgICAgICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJv
ciB7ICJObyBkZXZpY2UgaXMgYXZhaWxhYmxlIGZvciBjYXB0dXJlIl9zIH07CiAKICAgICBpZiAo
cHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZTo6Y3JlYXRlKG1fcHJvY2Vzcy0+ZW5zdXJlU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcigpLCAqY2FwdHVyZURldmljZSwgbV93
ZWJQYWdlSUQpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggMmYxNjgxNzQ2NTRmNjU2ODAzOGE5M2I4YjZhZGI1YjE3NGUzZDI3Mi4uMWIyYjg1MWU5
NzI0YWM1MGZlMzk4ZjkwNGZiM2VjNTdhZTUwOWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogICAgIGlmICghc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0
ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpLnB0cigpKSk7CisgICAgc19pbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgZGVzY3JpcHRpb24o
bWVzc2FnZU5hbWUpIH0pLnB0cigpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29s
dmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE4ZWY1ZGJjNDdlNmVjYjJhNDYzZmU3Yjg1ZDFjZWQ5
ZWEwMzQ1ZWUuLmQ5OTQ3MjAxZjhiOTRiNWQzZTJkMzJiYjQ4MmRhMjY5ZDY3OWY2MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTU5LDE5ICs1
NTksMTkgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdl
IDogZ2xvYmFsUGFnZU1hcCgpKQotICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVk
IiwgbnVsbHB0cik7CisgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51
bGxwdHIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2Fu
Rm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6
IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKCJXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIs
IG51bGxwdHIpOworICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoIldlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxs
cHRyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhRGVsZXRp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBwYWdl
IDogZ2xvYmFsUGFnZU1hcCgpKQotICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCIsIG51bGxwdHIpOworICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hl
ZCJfcywgbnVsbHB0cik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlh
U291cmNlID0gW3dlYWtQYWdlID0gV2Vha1B0ciB7IHRhcmdldFBhZ2UgfV0oKSB7Ci0gICAgICAg
IHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9y
U3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52
YWxpZCIgfTsKKyAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0
aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgeyAiUGFnZSBpcyBpbnZhbGlkIl9zIH07CiAgICAgfTsKICAgICBzcGVlY2hSZWNvZ25pdGlv
blNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KCpjb25uZWN0aW9u
KCksIGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNr
SWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlh
U291cmNlKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4
IDgzMWFiNDdkMDA1NGIwNGFmZDdkY2NjZDVjOWU4ZTRmNzgwNDc4ZDkuLjEwNmFiOWRkYzNjNWFl
YzI3YjAzM2E4NGM2ZjM0Y2EyODg4MTU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KQEAgLTI3MiwyNiArMjcyLDI2IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAgICAgaWYgKFdlYkNvcmU6OklPU0Fw
cGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjpp
c1dlYkJvb2ttYXJrc0QoKSkgewogICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9t
ZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2Fj
aGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwogCi0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0
cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGgpOworICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxp
bmtzSW5QYXRoKFN0cmluZyB7IGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoIH0p
OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hl
U3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewot
ICAgIGF1dG8gZGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIkRlZmF1bHQiKTsKKyAgICBhdXRvIGRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJEZWZhdWx0Il9zKTsKIAogICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb2xkIHN0b3JhZ2UgZGlyZWN0b3J5LCBhbmQg
dGhlcmUgbWlnaHQgYmUgZmlsZXMgbGVmdCBoZXJlLgotICAgICAgICBhdXRvIG9sZERpcmVjdG9y
eSA9IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTdG9yYWdlIiwgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgICAgIGF1dG8gb2xkRGlyZWN0b3J5ID0gY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlN0b3JhZ2UiX3MsIFNob3VsZENy
ZWF0ZURpcmVjdG9yeTo6Tm8pOwogICAgICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9
IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICAgICAgTlNBcnJheSAqZmlsZXMg
PSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpvbGREaXJlY3RvcnkgZXJy
b3I6MF07CiAgICAgICAgIGlmIChmaWxlcykgewpAQCAtMzEyLDYzICszMTIsNjMgQEAgU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRHZW5lcmFsU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdv
cmtDYWNoZSIpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiTmV0d29ya0NhY2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRBbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkFsdGVybmF0aXZlU2VydmljZXMiLCBT
aG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIkFsdGVybmF0aXZlU2VydmljZXMiX3MsIFNob3VsZENyZWF0
ZURpcmVjdG9yeTo6Tm8pOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIklu
ZGV4ZWREQiIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiSW5kZXhlZERCIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJz
Iik7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJT
ZXJ2aWNlV29ya2VycyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdl
Il9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlzIl9zKTsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiRGV2aWNlSWRIYXNoU2FsdHMiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkRldmljZUlkSGFzaFNhbHRzIl9zKTsK
IH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJXZWJTUUwiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKTsKIH0KIAog
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsK
KyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNj
cmlwdENvcmVEZWJ1ZyJfcywgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9CiAKICNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTW9kZWxFbGVtZW50IiwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIk1vZGVsRWxlbWVudCJfcywgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CiB9
CiAjZW5kaWYKIApAQCAtMzk4LDcgKzM5OCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0
ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyCiAg
ICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3Rv
cnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5p
bCBlcnJvcjpudWxscHRyXSkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBk
aXJlY3RvcnkgJUAiLCB1cmwpOwogICAgIAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0
aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5w
YXRoOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVh
dGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIGRpCiAgICAgICAgICYmICFbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQogICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKIAotICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJu
IHVybC5hYnNvbHV0ZVVSTC5wYXRoOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQpAQCAtNDU1LDcgKzQ1NSw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
Ojp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
CiAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9y
eUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm51bGxwdHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGly
ZWN0b3J5ICVAIiwgdXJsKTsKIAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoOwog
fQogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAx
MWJiZjU0ZjBiNDBmZjEyM2EyNDFiYWNmMzY2YmI5MmJiZjAzOTE3Li5hYjQ1NjY0YjY5Y2Y4ODMw
NzljZGFiYTM1NzE3NmU0ODkxZGYyN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzYxLDcgKzM2
MSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
YWxsb3dzV2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBob3N0U3RyaW5n
ID0gZW50cnkub3JpZ2luLmhvc3QuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3RyaW5nKCIgIiwgZW50
cnkub3JpZ2luLmhvc3QpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9
IGVudHJ5Lm9yaWdpbi5ob3N0LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBtYWtlU3RyaW5n
KCIgIiwgZW50cnkub3JpZ2luLmhvc3QpOwogICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZSA9IG1ha2VTdHJpbmcoZW50cnkub3JpZ2luLnByb3RvY29sLCBob3N0U3RyaW5nKTsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTE0NjEsNyArMTQ2MSw3IEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlBy
b2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlUHJvY2Vzc1Bvb2xzKCkgY29uc3QK
IAogc3RhdGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVkaWFL
ZXlEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5
LCAiU2VjdXJlU3RvcC5wbGlzdCJfcyk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGUsIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0
YVN0b3JlV2luLmNwcAppbmRleCA3ZmZhMzU2ZGJjZTYyYWZmNzgwNzUzYzA2YWM0ODAwZWM2YTRh
NjE5Li5lM2UxN2E0ZjA0ZWEyNTdhMjk3ZDY5YTg4OTg5ODc1Zjk3NjY3MDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dl
YnNpdGVEYXRhU3RvcmVXaW4uY3BwCkBAIC00OCw1MiArNDgsNTIgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKFdhbGxUaW1lKQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hl
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9u
Q2FjaGUiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3Rv
cmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkNhY2hlU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJDYWNoZVN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiX3MpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJT
ZXJ2aWNlV29ya2VycyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJTZXJ2aWNlV29ya2VycyJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiX3MpOwog
fQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FM
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCJfcyk7
CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyJfcyk7CiB9CiAKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAKaW5kZXggODEyNDAyODE3YzI1N2FlNGU3NGIyNTJiNmQwMzc0NDdiODViNTkxMi4uMDdjMjE3
YzdkNmE5ODIzMGY5YTQ0OWQyYTJlNzRhMjYxODU0MTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTQ2LDEy
ICs0NiwxMiBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCiAvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3Bh
Y2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CisgICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSJfcykpOwogfQogCiBXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKKyAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSJfcykpOwog
fQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggNmQzYWUwZTA1YjQ4YmM2ZThmZWVhNDFiMmVm
NzFkMWIwMzIyZDJlNS4uZjE0MTliNzQ5NzhlZTdlNDk3Yjg5NmQyMDdiMzc0ODRiOGRiMTdlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
Zm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUod2VicnRjOjpWaWRlb0NvZGVjVHlwZSB0eXBl
KQogICAgICAgICByZXR1cm4gIlZQOSJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICJIMjY0IjsKKyAgICAgICAgcmV0dXJuICJI
MjY0Il9zOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBlMTli
MWUwMzI0MGM3NWE4M2M1OTk0NzJhZTJlZGU0NmRiZmM3MWFiLi4zYjg4MzU1MmJiMjU4YjA1OTM1
MTRiNWM1NTM1ZGVjNjA2NjYyNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAt
NjE3LDExICs2MTcsMTEgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGYKICAgICAgICAgYXV0byog
aGlnaGxpZ2h0RGF0YUFycmF5ID0gV2ViS2l0Ojp0b0ltcGwoaGlnaGxpZ2h0RGF0YSk7CiAgICAg
ICAgIGhpZ2hsaWdodHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShoaWdobGlnaHREYXRhQXJyYXkt
PnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byBkaWN0aW9uYXJ5IDogaGlnaGxpZ2h0RGF0YUFy
cmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRpY3Rpb25hcnk+KCkpIHsKLSAgICAgICAgICAgIGF1
dG8gc3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25hcnktPmdl
dCgiZnJvbSIpKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzdGF0
aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25hcnktPmdldCgiZnJvbSJfcykpLT52YWx1ZSgp
OwogICAgICAgICAgICAgaGlnaGxpZ2h0cy51bmNoZWNrZWRBcHBlbmQoewogICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksCi0gICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8QVBJOjpVSW50
NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCIpKS0+dmFsdWUoKSksCi0gICAgICAgICAgICAg
ICAgV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yV2l0aG91dENvbnRleHQoc3RhdGljX2Nh
c3Q8QVBJOjpTdHJpbmcqPihkaWN0aW9uYXJ5LT5nZXQoImNvbG9yIikpLT5zdHJpbmcoKSkKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQgKyBzdGF0aWNf
Y2FzdDxBUEk6OlVJbnQ2NCo+KGRpY3Rpb25hcnktPmdldCgibGVuZ3RoIl9zKSktPnZhbHVlKCkp
LAorICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRD
b250ZXh0KHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciJf
cykpLT5zdHJpbmcoKSkKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBiZGUyOGRlMDM3ZGFmYWVmNWJjZDA0NGE3
NWY3MDU2MmRlMDBiNzg5Li41MjJhZTU5OTZhNjc5NGM0YmVjZWU3N2E5ZTgyMWQ2MTMwYjBhZjU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzQsNyArNzQsNyBAQCBz
dGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKGNvbnN0IFN0
cmluZyYgb3JpZ2luUGF0aCwgV2FsbAogCiAgICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleU5h
bWUgOiBtZWRpYUtleU5hbWVzKSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIG1lZGlhS2V5TmFtZSk7
Ci0gICAgICAgIFN0cmluZyBtZWRpYUtleUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobWVkaWFLZXlQYXRoLCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgICAgICBT
dHJpbmcgbWVkaWFLZXlGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1lZGlhS2V5UGF0aCwgIlNlY3VyZVN0b3AucGxpc3QiX3MpOwogCiAgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAgICAgY29udGludWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IGViYzUzZWJmYTkxMDljNDkxNGI4OWQ3NDlhMDRjMGY1ZGNkMTY3ZjMu
LmI0ZGNhY2ZlMDU4MTY5YTkyZjZhMWY4MzU4ZGE1ZGIxNWU1YmIyMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0xMzAsNyArMTMwLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjppbmNyZWFzZUJ1ZmZlcmVk
QW1vdW50KHNpemVfdCBieXRlTGVuZ3RoKQogICAgIENoZWNrZWRTaXplIGNoZWNrZWROZXdCdWZm
ZXJlZEFtb3VudCA9IG1fYnVmZmVyZWRBbW91bnQ7CiAgICAgY2hlY2tlZE5ld0J1ZmZlcmVkQW1v
dW50ICs9IGJ5dGVMZW5ndGg7CiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWROZXdCdWZmZXJlZEFt
b3VudC5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAgICAgIGZhaWwoIkZhaWxlZCB0byBzZW5kIFdl
YlNvY2tldCBmcmFtZTogYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlIik7CisgICAgICAgIGZhaWwo
IkZhaWxlZCB0byBzZW5kIFdlYlNvY2tldCBmcmFtZTogYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNl
Il9zKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggY2ViZDk3
YWFkOGNhYjI1ZjZjZWRlMGUzZTcwNzk1ZmNmNzI3MDM0ZS4uNzhkNTBmNWRmMGRhZjBiZWZjYzY0
MjhkNDk0ZDk4ZjI4MTYyMjI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2Vi
U29ja2V0U3RyZWFtOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQogICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RyZWFtLT5tX3NlbmRI
YW5kc2hha2VDYWxsYmFja3MudmFsdWVzKCkpCiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwg
ZmFsc2UpOwotICAgICAgICBzdHJlYW0tPm1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnN0
cmVhbSwgU29ja2V0U3RyZWFtRXJyb3IoMCwgeyB9LCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQu
IikpOworICAgICAgICBzdHJlYW0tPm1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnN0cmVh
bSwgU29ja2V0U3RyZWFtRXJyb3IoMCwgeyB9LCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQuIl9z
KSk7CiAgICAgICAgIHN0cmVhbSA9IG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA3OWUzODViZTAy
NGViYmYxMzZkYzI3ZGRjZWFiNDk0NjJlMTVjMDVmLi5hNDg5MWI5MmRhZmNkNDY2NjQ4ZjE2ZGMx
MzM2MjYwYWJmMTJjODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTEyMSw3ICsxMjEsNyBAQCBAZW5kCiAvLyBTZXQgb3Zl
cmZsb3c6IGhpZGRlbiBvbiB0aGUgYW5ub3RhdGlvbiBjb250YWluZXIgc28gPGlucHV0PiBlbGVt
ZW50cyBzY3JvbGxlZCBvdXQgb2YgdmlldyBkb24ndCBzaG93CiAvLyBzY3JvbGxiYXJzIG9uIHRo
ZSBib2R5LiBXZSBjYW4ndCBhZGQgYW5ub3RhdGlvbnMgZGlyZWN0bHkgdG8gdGhlIGJvZHksIGJl
Y2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiBvbiB0aGUgYm9keQogLy8gd2lsbCBicmVhayBydWJiZXIt
YmFuZGluZy4KLXN0YXRpYyBjb25zdCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGFubm90YXRpb25TdHlsZSA9CiAiI2Fubm90YXRpb25Db250YWluZXIgeyIK
ICIgICAgb3ZlcmZsb3c6IGhpZGRlbjsgIgogIiAgICBwb3NpdGlvbjogYWJzb2x1dGU7ICIKQEAg
LTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxlID0KICIg
ICAgcG9zaXRpb246IHN0YXRpYzsgIgogIiAgICB3aWR0aDogMjAwcHg7ICIKICIgICAgbWFyZ2lu
LXRvcDogMTAwcHg7ICIKLSJ9ICI7CisifSAiX3M7CiAKIC8vIEluIG5vbi1jb250aW51b3VzIG1v
ZGVzLCBhIHNpbmdsZSBzY3JvbGwgZXZlbnQgd2l0aCBhIG1hZ25pdHVkZSBvZiA+PSAyMHB4CiAv
LyB3aWxsIGp1bXAgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgcGFnZSwgdG8gbWF0Y2ggUERGS2l0
IGJlaGF2aW9yLgpAQCAtNzY5LDcgKzc2OSw3IEBAIHZvaWQgUERGUGx1Z2luOjpyZWNlaXZlZE5v
bkxpbmVhcml6ZWRQREZTZW50aW5lbCgpCiAKICAgICBpZiAoIWlzTWFpblJ1bkxvb3AoKSkgewog
I2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAgcGRmTG9nKCJEaXNhYmxpbmcgaW5jcmVtZW50YWwg
UERGIGxvYWRpbmcgb24gYmFja2dyb3VuZCB0aHJlYWQiKTsKKyAgICAgICAgcGRmTG9nKCJEaXNh
YmxpbmcgaW5jcmVtZW50YWwgUERGIGxvYWRpbmcgb24gYmFja2dyb3VuZCB0aHJlYWQiX3MpOwog
I2VuZGlmCiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gewogICAgICAgICAgICAgcmVjZWl2ZWROb25MaW5lYXJpemVkUERGU2Vu
dGluZWwoKTsKQEAgLTk2MSw3ICs5NjEsNyBAQCB2b2lkIFBERlBsdWdpbjo6dGhyZWFkRW50cnko
UmVmPFBERlBsdWdpbj4mJiBwcm90ZWN0ZWRQbHVnaW4pCiAgICAgZmlyc3RQYWdlU2VtYXBob3Jl
LndhaXQoKTsKIAogI2lmICFMT0dfRElTQUJMRUQKLSAgICBwZGZMb2coIkZpbmlzaGVkIHByZWxv
YWRpbmcgZmlyc3QgcGFnZSIpOworICAgIHBkZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJz
dCBwYWdlIl9zKTsKICNlbmRpZgogfQogCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCB2b2lkIFBERlBs
dWdpbjo6YWRvcHRCYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQoKQogICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOwogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIHBkZkxvZygiQWRvcHRpbmcgUERG
RG9jdW1lbnQgZnJvbSBiYWNrZ3JvdW5kIHRocmVhZCIpOworICAgIHBkZkxvZygiQWRvcHRpbmcg
UERGRG9jdW1lbnQgZnJvbSBiYWNrZ3JvdW5kIHRocmVhZCJfcyk7CiAjZW5kaWYKIAogICAgIG1f
cGRmRG9jdW1lbnQgPSBXVEZNb3ZlKG1fYmFja2dyb3VuZFRocmVhZERvY3VtZW50KTsKQEAgLTEy
ODIsMTMgKzEyODIsMTMgQEAgUGx1Z2luSW5mbyBQREZQbHVnaW46OnBsdWdpbkluZm8oKQogICAg
IGluZm8uYnVuZGxlSWRlbnRpZmllciA9ICJjb20uYXBwbGUud2Via2l0LmJ1aWx0aW5wZGZwbHVn
aW4iX3M7CiAKICAgICBNaW1lQ2xhc3NJbmZvIHBkZk1pbWVDbGFzc0luZm87Ci0gICAgcGRmTWlt
ZUNsYXNzSW5mby50eXBlID0gImFwcGxpY2F0aW9uL3BkZiI7CisgICAgcGRmTWltZUNsYXNzSW5m
by50eXBlID0gImFwcGxpY2F0aW9uL3BkZiJfczsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmRlc2Mg
PSBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwogICAgIHBkZk1pbWVDbGFzc0luZm8uZXh0
ZW5zaW9ucy5hcHBlbmQoInBkZiIpOwogICAgIGluZm8ubWltZXMuYXBwZW5kKHBkZk1pbWVDbGFz
c0luZm8pOwogCiAgICAgTWltZUNsYXNzSW5mbyB0ZXh0UERGTWltZUNsYXNzSW5mbzsKLSAgICB0
ZXh0UERGTWltZUNsYXNzSW5mby50eXBlID0gInRleHQvcGRmIjsKKyAgICB0ZXh0UERGTWltZUNs
YXNzSW5mby50eXBlID0gInRleHQvcGRmIl9zOwogICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLmRl
c2MgPSBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwogICAgIHRleHRQREZNaW1lQ2xhc3NJ
bmZvLmV4dGVuc2lvbnMuYXBwZW5kKCJwZGYiKTsKICAgICBpbmZvLm1pbWVzLmFwcGVuZCh0ZXh0
UERGTWltZUNsYXNzSW5mbyk7CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6
YWRkQXJjaGl2ZVJlc291cmNlKCkKICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9u
c2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOm1fc291
cmNlVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNp
b24xXzEgaGVhZGVyRmllbGRzOmhlYWRlcnNdKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHN5bnRo
ZXNpemVkUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgYXV0byByZXNvdXJjZSA9IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSks
IG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50
aGVzaXplZFJlc3BvbnNlKTsKKyAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJh
cHBsaWNhdGlvbi9wZGYiX3MsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25z
ZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRk
QXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xNjg4
LDEwICsxNjg4LDEwIEBAIHZvaWQgUERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBz
dWdnZXN0ZWRGaWxlbmFtZTsKIAogICAgIGlmIChtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKG5pbCwgImFwcGxpY2F0aW9uL3BkZiIpOworICAgICAgICBtX3N1Z2dlc3RlZEZpbGVu
YW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUobmlsLCAiYXBwbGljYXRpb24vcGRm
Il9zKTsKIAogICAgIGlmICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCIucGRmIikpCi0gICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUuYXBwZW5kKCIucGRm
Iik7CisgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUuYXBwZW5kKCIucGRmIl9zKTsKIH0KICAg
ICAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKQEAg
LTE4OTMsNyArMTg5Myw3IEBAIGJvb2wgUERGUGx1Z2luOjppbml0aWFsaXplKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgbV9zb3VyY2VVUkwgPSBwYXJhbWV0ZXJzLnVybDsK
ICAgICBpZiAoIXBhcmFtZXRlcnMuc2hvdWxkVXNlTWFudWFsTG9hZGVyICYmICFwYXJhbWV0ZXJz
LnVybC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbnRyb2xsZXIoKS0+bG9hZFVSTChwZGZEb2N1bWVu
dFJlcXVlc3RJRCwgIkdFVCIsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpLCBTdHJpbmcoKSwgSFRU
UEhlYWRlck1hcCgpLCBWZWN0b3I8dWludDhfdD4oKSwgZmFsc2UpOworICAgICAgICBjb250cm9s
bGVyKCktPmxvYWRVUkwocGRmRG9jdW1lbnRSZXF1ZXN0SUQsICJHRVQiX3MsIHBhcmFtZXRlcnMu
dXJsLnN0cmluZygpLCBTdHJpbmcoKSwgSFRUUEhlYWRlck1hcCgpLCBWZWN0b3I8dWludDhfdD4o
KSwgZmFsc2UpOwogCiAgICAgY29udHJvbGxlcigpLT5kaWRJbml0aWFsaXplUGx1Z2luKCk7CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KaW5kZXggZDc0NWYw
MjA5NDg0ZjRlYzJiNzRhNTUzNzRkMWJjZTkxY2E2Nzg1ZC4uN2Q0M2ZhMDIxYzVhMjBkNjU1NDA4
ZTc4YmE5YmVmZjY1NDcwNzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAt
NTQsMTUgKzU0LDE1IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgY3NzQWxpZ25tZW50VmFsdWVGb3JO
U1RleHRBbGlnbm1lbnQoTlNUZXh0QWxpZ25tZW50IGFsaWdubWVuCiB7CiAgICAgc3dpdGNoIChh
bGlnbm1lbnQpIHsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudExlZnQ6Ci0gICAgICAgIHJldHVy
biAibGVmdCI7CisgICAgICAgIHJldHVybiAibGVmdCJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdu
bWVudFJpZ2h0OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdo
dCJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudENlbnRlcjoKLSAgICAgICAgcmV0dXJuICJj
ZW50ZXIiOworICAgICAgICByZXR1cm4gImNlbnRlciJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdu
bWVudEp1c3RpZmllZDoKLSAgICAgICAgcmV0dXJuICJqdXN0aWZ5IjsKKyAgICAgICAgcmV0dXJu
ICJqdXN0aWZ5Il9zOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50TmF0dXJhbDoKLSAgICAgICAg
cmV0dXJuICItd2Via2l0LXN0YXJ0IjsKKyAgICAgICAgcmV0dXJuICItd2Via2l0LXN0YXJ0Il9z
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IDAzNDRmNGJlMjNhNDM3NjcxOTc3ODk5OTdkNzYzN2EyMDMxYjdlYWUuLjQ1YTAxMWJlNTU2
NjIwN2M5Y2FjNDVmOWVmNjA5MmNlODAxNTAwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMjMxLDcgKzEyMzEsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgU3RyaW5nJgogICAgIGlmICghaHR0cEJvZHkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoRm9ybURh
dGE6OmNyZWF0ZShodHRwQm9keS5kYXRhKCksIGh0dHBCb2R5LnNpemUoKSkpOwogICAgICAgICBp
ZiAoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LnNldEhUVFBDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7
CisgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBD
b250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIl9zKTsKICAgICB9
CiAKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJl
ckhlYWRlcihmcmFtZSgpLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBmcmFtZUxvYWRS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBmcmFtZSgpLT5sb2FkZXIoKS5vdXRnb2lu
Z1JlZmVycmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcAppbmRleCAwZTExN2EwZWM2MTkwMGQxNTBhZGIxZGU5YzY4MjI5YThlN2FiNTcwLi5m
NWJkODlmMWMzNTQ2OTQ5N2IyOWI1NjllNGI4ZDI0YjNiZjBjMWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtODgsNyArODgsNyBAQCB2
b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWFrZUNyZWRlbnRpYWwoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBTZWN1cgogCiAgICAgaWYgKCFpc1dlYkJyb3dzZXIoKSkgewogICAg
ICAgICBXRUJBVVRITl9SRUxFQVNFX0xPR19FUlJPUigibWFrZUNyZWRlbnRpYWw6IFRoZSAnbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZScgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxp
Y2F0aW9ucyB3aXRoIHRoZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRs
ZW1lbnQuIik7Ci0gICAgICAgIGhhbmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNhdG9y
QXR0YWNobWVudD4oMCksIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgJ25h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBs
aWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0
bGVtZW50LiIgfSk7CisgICAgICAgIGhhbmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNh
dG9yQXR0YWNobWVudD4oMCksIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGUg
J25hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBh
cHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVu
dGl0bGVtZW50LiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpNYWtlQ3JlZGVudGlhbChoYXNoLCBvcHRpb25zLCBpc1Byb2Nlc3NpbmdVc2VyR2Vz
dHVyZSksIFdURk1vdmUoaGFuZGxlcikpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBTZWN1cml0CiAKICAgICBpZiAoIWlzV2ViQnJvd3NlcigpKSB7CiAgICAgICAgIFdFQkFV
VEhOX1JFTEVBU0VfTE9HX0VSUk9SKCJnZXRBc3NlcnRpb246IFRoZSAnbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldCcgQVBJIGlzIG9ubHkgcGVybWl0dGVkIGluIGFwcGxpY2F0aW9ucyB3aXRoIHRo
ZSAnY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlcicgZW50aXRsZW1lbnQuIik7Ci0gICAg
ICAgIGhhbmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4oMCks
IEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgJ25hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUg
J2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIgfSk7CisgICAg
ICAgIGhhbmRsZXIoeyB9LCBzdGF0aWNfY2FzdDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4oMCks
IEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgJ25hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUg
J2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiJfcyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRBc3NlcnRpb24o
aGFzaCwgb3B0aW9ucywgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYmEyMWU0ZDhiNDc0ZDVkYTBhMWViYzQ3N2ExMDNkODI5YzVlYTEwNy4uNDI3NWViZGM2ZTA5
ZWExNmE1M2Q4YTc3ZTZlODE4YWFjNjZhMzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGkKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjppc1NhbWVF
bnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBvdGhlcklkZW50aWZpZXIsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6U2FtZUVudHJ5Q2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJv
ciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0
aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBpZiAoaWRlbnRpZmllciA9PSBvdGhlcklkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmlzU2FtZUVudHJ5KFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGkKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2Fy
eSwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVDYWxsYmFj
ayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJv
ciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEZpbGVIYW5k
bGUoaWRlbnRpZmllciwgbmFtZSwgY3JlYXRlSWZOZWNlc3NhcnkpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpnZXRGaWxlSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVuCiB2b2lkIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpHZXRIYW5kbGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0
IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlv
biB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkdldERpcmVjdG9yeUhhbmRsZShpZGVudGlmaWVyLCBuYW1lLCBjcmVhdGVJ
Zk5lY2Vzc2FyeSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmFtZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTEwNyw3ICsxMDcsNyBAQCB2
b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbAogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OnJlbW92ZUVudHJ5KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBkZWxldGVSZWN1cnNpdmVseSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwg
IkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9u
IGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVFbnRyeShpZGVudGlmaWVyLCBu
YW1lLCBkZWxldGVSZWN1cnNpdmVseSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7CkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUVudHJ5
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGkKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpyZXNvbHZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIG90aGVySWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNvbHZlQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3du
RXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZXNvbHZl
KGlkZW50aWZpZXIsIG90aGVySWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpyZXNvbHZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyCiB2
b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmdDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVy
cm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5l
Y3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEZpbGUoaWRlbnRpZmllciks
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3Qi
IH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9u
IHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Q3JlYXRlU3luY0FjY2Vzc0hhbmRsZShpZGVudGlmaWVyKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbUgKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9z
ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlv
biBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJf
cyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsb3NlU3luY0FjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5k
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Z2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVOYW1lc0Nh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJD
b3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93
bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0SGFu
ZGxlTmFtZXMoaWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0
KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpnZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlCiB2b2lkIFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEhhbmRsZShpZGVudGlmaWVyLCBuYW1lKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghcmVzdWx0KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpnZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
CiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6bW92ZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29y
ZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6TW92ZShpZGVudGlmaWVyLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG5ld05hbWUpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9y
KGVycm9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCmluZGV4IGM1
N2U3ODA5YjJlZTE2NmRkNmY2ODhiZTIyYTg1OWM3ZGFkZGE4ZmEuLjBjNWRmNTRkYzQ3M2QxYTZm
MzZkMjg4MzlhNWJmMTFlZDY4MzEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXND
bGllbnQuY3BwCkBAIC03Nyw5ICs3Nyw5IEBAIHZvaWQgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
OjpzcGVhayhSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlCiAgICAg
fTsKIAogICAgIGF1dG8gdm9pY2UgPSB1dHRlcmFuY2UtPnZvaWNlKCk7Ci0gICAgYXV0byB2b2lj
ZVVSSSA9IHZvaWNlID8gdm9pY2UtPnZvaWNlVVJJKCkgOiAiIjsKLSAgICBhdXRvIG5hbWUgPSB2
b2ljZSA/IHZvaWNlLT5uYW1lKCkgOiAiIjsKLSAgICBhdXRvIGxhbmcgPSB2b2ljZSA/IHZvaWNl
LT5sYW5nKCkgOiAiIjsKKyAgICBhdXRvIHZvaWNlVVJJID0gdm9pY2UgPyB2b2ljZS0+dm9pY2VV
UkkoKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byBuYW1lID0gdm9pY2UgPyB2b2ljZS0+bmFt
ZSgpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIGxhbmcgPSB2b2ljZSA/IHZvaWNlLT5sYW5n
KCkgOiBlbXB0eVN0cmluZygpOwogICAgIGF1dG8gbG9jYWxTZXJ2aWNlID0gdm9pY2UgPyB2b2lj
ZS0+bG9jYWxTZXJ2aWNlKCkgOiBmYWxzZTsKICAgICBhdXRvIGlzRGVmYXVsdCA9IHZvaWNlID8g
dm9pY2UtPmlzRGVmYXVsdCgpIDogZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xp
ZW50TWFjLm1tCmluZGV4IGFhYzZiM2ZhMTA3MGE3YTNjMDVkYmE3NzI3ZjQwYTM4MWZhNDgxNjMu
LmFmYjFiMmQ5MWRhZjI3NDk4MGYzNzFjYmU3ZGY1MTlkMmZjMjUzMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGNoYW5n
ZVdvcmRDYXNlKFdlYlBhZ2UqIHBhZ2UsIE5TU3RyaW5nICooKmNoYW5nZUNhc2UpKE5TU3RyaW5n
ICopKQogICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoInNlbGVjdFdvcmQiKS5leGVjdXRlKCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoInNlbGVjdFdvcmQiX3MpLmV4ZWN1dGUoKTsK
IAogICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAgcGFn
ZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGZyYW1lLnB0cigpLCBjaGFuZ2VDYXNlKHNlbGVj
dGVkU3RyaW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCmluZGV4IGVlMTY0NWVmNGUwYzg0NDc1NzQwM2QyY2RlNTFhZDRiMTEz
MDJjY2IuLmRlODAxMjdlYjBiZTIzYTgzYWZkNDU5M2RlYmVlNDdhYzM2MzQwMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBA
IC0yMTQxLDcgKzIxNDEsNyBAQCBKU0M6OkpTT2JqZWN0KiBKU01lc3NhZ2VMaXN0ZW5lcjo6anNE
ZXNjcmlwdGlvbkZyb21EZWNvZGVyKEpTQzo6SlNHbG9iYWxPYmplY3QqCiAgICAganNSZXN1bHQt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSIpLCBK
U0M6OkpTVmFsdWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlY29kZXIubWVzc2FnZU5hbWUoKSkp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIGpzUmVz
dWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc2Ny
aXB0aW9uIiksIEpTQzo6anNTdHJpbmcodm0sIElQQzo6ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNz
YWdlTmFtZSgpKSkpOworICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImRlc2NyaXB0aW9uIiksIEpTQzo6anNTdHJpbmcodm0sIFN0cmlu
ZyB7IElQQzo6ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSB9KSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICBqc1Jlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXN0aW5hdGlvbklEIiks
IEpTQzo6SlNWYWx1ZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOwpAQCAtMjIwNCw3ICsyMjA0
LDcgQEAgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyks
IEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCAiU2VtYXBob3JlIikpOworICAgIG9iamVjdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwg
SlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJTZW1hcGhvcmUiX3MpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAgICAgYXV0byBqc1ZhbHVlID0g
dG9KUyhnbG9iYWxPYmplY3QsIFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6
OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSktPmNyZWF0ZUpTV3JhcHBlcih0b1JlZihnbG9iYWxPYmpl
Y3QpKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInZhbHVlIl9zKSwganNWYWx1ZSk7CkBAIC0yMjIxLDcgKzIyMjEsNyBAQCB0ZW1w
bGF0ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJTaGFyZWRNZW1vcnkiKSk7CisgICAgb2JqZWN0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6Ompz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlNoYXJlZE1lbW9yeSJfcykpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvdGVjdGlvbiA9
IFByb3RlY3Rpb246OlJlYWRXcml0ZTsKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHRlbXBsYXRlPD4g
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iCiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRhdGFTaXplIl9zKSwgSlNDOjpKU1ZhbHVlKHZhbHVlLmRhdGFTaXpl
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCi0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InByb3RlY3Rpb24iX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvdGVjdGlvbiA9
PSBQcm90ZWN0aW9uOjpSZWFkV3JpdGUgPyAiUmVhZFdyaXRlIiA6ICJSZWFkT25seSIpKTsKKyAg
ICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cHJvdGVjdGlvbiJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm90ZWN0aW9uID09
IFByb3RlY3Rpb246OlJlYWRXcml0ZSA/ICJSZWFkV3JpdGUiX3MgOiAiUmVhZE9ubHkiX3MpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKICAgICBy
ZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDQwYjk5NzMyMDA3ODI1ZTY2ODNlNjM2ODA0M2Y2MmI2YjU5MDMzN2IuLmIz
YmVlMjgyZWNjYzlkMWQ2NzJjYjFlZjdkODZkN2UwZDM4NTczNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBS
ZWY8QVBJOjpBcnJheT4gV2ViRnJhbWU6OmNoaWxkRnJhbWVzKCkKIFN0cmluZyBXZWJGcmFtZTo6
bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJu
IG1fY29yZUZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLmxheWVyVHJlZUFz
VGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4
IDg1ZjVhNDhhYWVmY2YzYjYzMDhhZjZjNGY3YjQ1MWYwYjJmYTE1Y2UuLmIxNDkzZjcxNDM4MzNk
ZWIxODhhOTU3OTQ5MTI4NDI2MzM3NmE3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KQEAgLTgxMCwxMSArODEwLDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBv
aW50CiAgICAgZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmJhY2tpbmcoKS0+dGls
ZWRCYWNraW5nKCktPnByZXBvcHVsYXRlUmVjdCh0aWxlQ292ZXJhZ2VSZWN0KTsKIH0KIAotc3Rh
dGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiB0cmFuc2llbnRab29tU25hcEFuaW1hdGlv
bkZvcktleVBhdGgoU3RyaW5nIGtleVBhdGgpCitzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmlt
YXRpb24+IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aChBU0NJSUxpdGVyYWwg
a2V5UGF0aCkKIHsKICAgICBjb25zdCBmbG9hdCB0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlv
biA9IDAuMjU7CiAKLSAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gYW5pbWF0aW9uID0g
W0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6a2V5UGF0aF07CisgICAgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFu
aW1hdGlvbldpdGhLZXlQYXRoOmtleVBhdGguY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiAgICAg
W2FuaW1hdGlvbiBzZXREdXJhdGlvbjp0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlvbl07CiAg
ICAgW2FuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbYW5p
bWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFsc2VdOwpAQCAtODUzLDcgKzg1Myw3IEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb25zdHJh
aW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAgdHJhbnNmb3JtLnNj
YWxlKHNjYWxlKTsKIAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3
QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5z
Zm9ybSIpOworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0
aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSJf
cyk7CiAgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3
QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgRmxvYXRQb2ludAogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAg
IFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbem9vbUxheWVyLCBzaGFkb3dDQUxh
eWVyLCBwYWdlLCBzY2FsZSwgb3JpZ2luXSAoKSB7Ci0gICAgICAgIHpvb21MYXllci0+cmVtb3Zl
QW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Iik7CisgICAgICAgIHpvb21MYXll
ci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zKTsKICAgICAg
ICAgaWYgKHNoYWRvd0NBTGF5ZXIpCiAgICAgICAgICAgICBbc2hhZG93Q0FMYXllciByZW1vdmVB
bGxBbmltYXRpb25zXTsKIApAQCAtODc0LDE3ICs4NzQsMTcgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0
UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uo
c2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZv
cktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOwor
ICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9z
LCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVyKSB7
CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0ZvckZy
YW1lKGZyYW1lVmlldywgc2NhbGUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFk
b3dQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5VTEwp
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5p
bWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiKTsK
KyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1hdGlv
biA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIl9zKTsKICAg
ICAgICAgW3NoYWRvd0JvdW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0
aFJlY3Q6c2hhZG93Qm91bmRzXV07Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9u
PiBzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9y
S2V5UGF0aCgicG9zaXRpb24iKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+
IHNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JL
ZXlQYXRoKCJwb3NpdGlvbiJfcyk7CiAgICAgICAgIFtzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiBz
ZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OnNoYWRvd0xheWVyUG9zaXRpb25Gb3JG
cmFtZShmcmFtZVZpZXcsIGNvbnN0cmFpbmVkT3JpZ2luKV1dOwotICAgICAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFw
QW5pbWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCIpOworICAgICAgICBSZXRhaW5QdHI8Q0FC
YXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5p
bWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCJfcyk7CiAgICAgICAgIFtzaGFkb3dQYXRoQW5p
bWF0aW9uIHNldFRvVmFsdWU6KF9fYnJpZGdlIGlkKXNoYWRvd1BhdGguZ2V0KCldOwogCiAgICAg
ICAgIFtzaGFkb3dDQUxheWVyIGFkZEFuaW1hdGlvbjpzaGFkb3dCb3VuZHNBbmltYXRpb24uZ2V0
KCkgZm9yS2V5OkAidHJhbnNpZW50Wm9vbUNvbW1pdFNoYWRvd0JvdW5kcyJdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDQ4NTQ2ZmMxNGExODlmN2YzMTNiOTM5ZWEwZjUyNGFk
OWVlNmNlZDMuLmJmY2ZhYTJhYWY1NDk3ODBmNWRiYjljZjM2NTkyM2I3YmEzODRkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTQ0LDEwICs0NCw4IEBAIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkKIAogdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQo
eHBjX29iamVjdF90IG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVL
ZXkpOwotICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6
eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgYXV0byog
bWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9
PSBtZXNzYWdlTmFtZSkgewogI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCiAgICAgICAgIGF1
dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQppbmRleCAwYzUz
ZDM1NjA0ZTM0YTY5NGJhYmNmZjNlNjQ3NjU0OGE4ZTEzNDFlLi4wNWFkNjc4YmEzMGFhM2M3Mjg4
ZWE0OTI5ZmRjNDU5MDQzZGZmM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L0FwcEJ1bmRsZVJlcXVlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5k
bGVSZXF1ZXN0Lm1tCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBBcHBCdW5kbGVEZWxldGlvblJl
cXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5kbGUmIGIK
ICAgICBpZiAoZXJyb3IpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YnJvYWRjYXN0RGVidWdNZXNz
YWdlKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBkZWxldGUgYXBwIGJ1bmRsZTogIiwgU3RyaW5nKFtl
cnJvciBkZXNjcmlwdGlvbl0pKSk7CiAKLSAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVh
bnVwKGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogIiIpOworICAgIGNhbGxD
b21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0
aW9uXSkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCA0NjU1
NTMxNTIwNWE0Yjc0NDVkM2U3OTdmYjczZTA2ZTljZWNmOTZhLi42MzVkMGFkODgyZTU0ZWRkZDky
YTM5OTY2OTZjOWZiNWEwMGU4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgc2Vu
ZERlYnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKIAogcHJpdmF0ZToKICAgICBDbGllbnRDb25uZWN0
aW9uKHhwY19jb25uZWN0aW9uX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENs
aWVudENvbm5lY3Rpb24ubW0KaW5kZXggZDA4YzA0NWIxNGU2MjVlMzcyZTBkMGZiYmJjZDA2OTRm
ZjUxMmQzMi4uZTAxMDQ1NzQ3Zjc0YzgzMzE5ZDRhMzkxMDZjNDNhNmNlNTAyNWFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC0xMzEs
NyArMTMxLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIGJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJUdXJu
ZWQgRGVidWcgTW9kZSAiLCBtX2RlYnVnTW9kZUVuYWJsZWQgPyAib24iIDogIm9mZiIpKTsKIH0K
IAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3Nh
Z2UoU3RyaW5nVmlldyBtZXNzYWdlKQogewogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRpZmllcjsK
ICAgICBhdXRvIHNpZ25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
KCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3RE
ZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIERhZW1vbjo6c2luZ2xldG9u
KCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZpZXIsIG1l
c3NhZ2UpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVz
c2FnZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBz
ZW5kIHRoZSBkZWJ1ZyBtZXNzYWdlIHR3aWNlLgogICAgIC8vIEFmdGVyIGdldHRpbmcgYWxsIGRl
YnVnIG1lc3NhZ2UgY2xpZW50cyBvbnRvIHRoZSBlbmNvZGVyL2RlY29kZXIgbWVjaGFuaXNtLCBy
ZW1vdmUgdGhlIG9sZCBzdHlsZSBtZXNzYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb24uaAppbmRleCA5NzgyMzhmNTE3YjBkM2ZiOTZkOTQwNjMxMTMzZmM4ZTQwYWE0NDk2Li4w
NjYyZjEzZTk4Mzk0OTAwYzU0MWZhYmRlOTU2ZTg1Yzk2NjJkYjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGllbnRDb25uZWN0aW9uKiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlw
dGlvbnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKIAotICAg
IHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYnJv
YWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29u
bmVjdGlvbklkZW50aXRpZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1OWVjZjVmMjUwN2M4MGRhYTAwM2JmZTJjOTcz
NGU0Li5kMWJmNjFlODNhZjBjMzg1Mjg3ZDdiMjVlOWMyMWJjZThlZDRmZWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBE
YWVtb246OnJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCiAgICAgZnVuY3Rpb24oKTsKIH0KIAotdm9pZCBEYWVtb246OmJyb2FkY2FzdERlYnVn
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIERhZW1vbjo6YnJvYWRjYXN0RGVi
dWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkKIHsKICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9y
IDogbV9jb25uZWN0aW9uTWFwKSB7CiAgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZS0+ZGVidWdN
b2RlSXNFbmFibGVkKCkpCkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBEYWVtb246OmdldE9yaWdp
bnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENsaWVudENvbm5lY3Rpb24qIGNv
bm4KIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENs
aWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQogewog
ICAgIGlmICghY2FuUmVnaXN0ZXJGb3JOb3RpZmljYXRpb25zKCpjb25uZWN0aW9uKSkgewotICAg
ICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0ZSBwdXNoIGFuZCBub3RpZmljYXRpb24g
cmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5rbm93biBob3N0IGFwcGxpY2F0aW9uIGNv
ZGUgc2lnbmluZyBpZGVudGlmaWVyIik7CisgICAgICAgIHJlcGx5U2VuZGVyKCJDb3VsZCBub3Qg
ZGVsZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIGZvciBjb25uZWN0aW9u
OiBVbmtub3duIGhvc3QgYXBwbGljYXRpb24gY29kZSBzaWduaW5nIGlkZW50aWZpZXIiX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uTWFpbi5tbQppbmRleCBkN2E2YjYzZmU0ZGIyZGViNTBhNWU5ZTE3MTc0MWYxMDg1ZGNh
ZWQ3Li5hZmU1MDllMjE1MDMwMzBmMDlhYWJlMzM0ODU1YzdiMDFhMTNkOTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KQEAgLTEyOSw4ICsxMjksOCBA
QCBpbnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAg
ICAgOjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKS5zdGFydE1vY2tQdXNoU2VydmljZSgp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IE5TU2Vh
cmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNVc2Vy
RG9tYWluTWFzaywgWUVTKVswXTsKLSAgICAgICAgICAgIFN0cmluZyBwdXNoRGF0YWJhc2VQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhsaWJyYXJ5UGF0aCwgeyAi
V2ViS2l0IiwgIldlYlB1c2giLCAiUHVzaERhdGFiYXNlLmRiIiB9KTsKLSAgICAgICAgICAgIDo6
V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2VydmljZShpbmNvbWluZ1B1
c2hTZXJ2aWNlTmFtZSwgcHVzaERhdGFiYXNlUGF0aCk7CisgICAgICAgICAgICBTdHJpbmcgcHVz
aERhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobGli
cmFyeVBhdGgsIHsgIldlYktpdCJfcywgIldlYlB1c2giX3MsICJQdXNoRGF0YWJhc2UuZGIiX3Mg
fSk7CisgICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbigpLnN0YXJ0UHVz
aFNlcnZpY2UoU3RyaW5nIHsgaW5jb21pbmdQdXNoU2VydmljZU5hbWUgfSwgcHVzaERhdGFiYXNl
UGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgQ0ZSdW5Mb29wUnVuKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IGY2YTZlOTc1
N2I0YWZjYWI4OTg0YWJhMWY1MjgwYjc5OGI5YWE0NzkuLjllN2I1MzZiYjJhYjViOTRhYTQ0NmU1
Y2ViYmE3ZmFmOTVjMWM1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5
bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUgb3BlbmluZ1N0cmF0ZWd5KQog
CiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKIHsKLSAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkl0ZW1UYWJsZSIpKQorICAgIGlmICghbV9k
YXRhYmFzZS50YWJsZUV4aXN0cygiSXRlbVRhYmxlIl9zKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
aW5kZXggYjIwMmI0NDgwNzhjM2ZlYTViYzk1NTA4MGFhN2VlZGU2ZWNhNzhhOC4uNWQ0ZWVjNWZl
ZDhiMzU0YzBmMWE2NzVkMGNiNGQ0MzI3ZDFkMjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFsaXplKCkKICAgICBzdG9yYWdlVHJhY2tlci0+
aW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKTsKIAogICAgIG1fdGhyZWFkLT5kaXNwYXRjaChbdGhp
c10gewotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiU3RvcmFnZVRyYWNrZXIu
ZGIiKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9yYWdlVHJhY2tl
ci5kYiJfcykpOwogICAgIH0pOwogfQogCiBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6
OnRyYWNrZXIoKQogewogICAgIGlmICghc3RvcmFnZVRyYWNrZXIpCi0gICAgICAgIHN0b3JhZ2VU
cmFja2VyID0gbmV3IFN0b3JhZ2VUcmFja2VyKCIiKTsKKyAgICAgICAgc3RvcmFnZVRyYWNrZXIg
PSBuZXcgU3RvcmFnZVRyYWNrZXIoZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKHN0b3JhZ2VUcmFj
a2VyLT5tX25lZWRzSW5pdGlhbGl6YXRpb24pCiAgICAgICAgIHN0b3JhZ2VUcmFja2VyLT5pbnRl
cm5hbEluaXRpYWxpemUoKTsKICAgICAKQEAgLTEwNyw3ICsxMDcsNyBAQCBTdG9yYWdlVHJhY2tl
cjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKIFN0cmluZyBTdG9y
YWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFi
YXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJMZWdhY3lTdG9yYWdlVHJhY2tl
ci5kYiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIkxlZ2FjeVN0b3JhZ2VUcmFja2VyLmRiIl9zKTsKIH0K
IAogc3RhdGljIGJvb2wgZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05v
dEV4aXN0KQogICAgIAogICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwog
ICAgIAotICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7CisgICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIl9zKSkgewogICAgICAgICBpZiAo
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4g
VEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcGF0aCBURVhUKTsiX3MpKQogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIE9yaWdpbnMgdGFibGUuIik7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgwZmRj
MzdkZmQ5NGY5NWE3YTlkZDFhLi4wMjZkNDg3MDNlMzRjZDc4ZTZkMDM0YWMwMGU2YjdhOTUyY2Q4
ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTIsOCArNTIsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
IAotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNl
dHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwotc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNo
RGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
U2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlz
YWJsZWQiX3M7CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZvclBy
ZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
IHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBkaXNh
YmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRh
Y2hEaXNhYmxlZFNldHRpbmcsIGRpc2FibGVkID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JT
dGFydHNBdHRhY2hlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JT
dGFydHNBdHRhY2hlZChib29sIGF0dGFjaGVkKQogewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0
b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiIDogImZhbHNlIik7Cisg
ICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQg
PyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpk
ZWxldGVJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggNDc5MTZlNzgx
YTI0MzA0MWUxZDU4MjQ4YWJmYWVhYWMwYzU3YmI1OS4uNzk5YTdiNTk1MmIyYjg1Y2I3MGEwYjAw
YzU2MmI5MDE3ODZjMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIEhp
c3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6OndyaXRlT2JqZWN0cyhCaW5hcnlQcm9wZXJ0eUxpc3RP
YmplY3RTdHJlYW0mIHN0cgogewogICAgIHNpemVfdCBvdXRlckRpY3Rpb25hcnlTdGFydCA9IHN0
cmVhbS53cml0ZURpY3Rpb25hcnlTdGFydCgpOwogCi0gICAgc3RyZWFtLndyaXRlU3RyaW5nKCJX
ZWJIaXN0b3J5RmlsZVZlcnNpb24iKTsKLSAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3Rv
cnlEYXRlcyIpOworICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9u
Il9zKTsKKyAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyJfcyk7CiAKICAg
ICBzdHJlYW0ud3JpdGVJbnRlZ2VyKGN1cnJlbnRGaWxlVmVyc2lvbik7CiAgICAgc2l6ZV90IG91
dGVyRGF0ZUFycmF5U3RhcnQgPSBzdHJlYW0ud3JpdGVBcnJheVN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0K
aW5kZXggYzg3MzMwN2QwZjJkYmRjNTRjNWY3Y2M3NmMxMTVmNDVjMTU5NGExOC4uN2ExODQ1Nzdk
OGU2OTQ3NzdlNzcyMzRmOWI0MWY1MWExZGY3NTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMzMsOSAr
MzMsOSBAQCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5UGF0aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5
ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9XZWJL
aXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIsIFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdKSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFz
ZXMvX19fSW5kZXhlZERCIl9zLCBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXSkpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZyhkYXRhYmFzZXNEaXJlY3Rv
cnkpLCAiX19fSW5kZXhlZERCIik7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcoZGF0YWJhc2VzRGlyZWN0b3J5
KSwgIl9fX0luZGV4ZWREQiJfcyk7CiAgICAgCiAgICAgcmV0dXJuIFtkYXRhYmFzZXNEaXJlY3Rv
cnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5t
bQppbmRleCBjYWMwZThiYzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZkMDllMzE2Li42MjkxMTQ2
OWFjZGRhNDE5ODdmNDk1NGM1YTY1ZDYzYzhmYjcyZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBAZW5kCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlJiB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGlj
YXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFr
UmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5k
ZXggYjUyNWJiMGQ4YjQ4NTFjZDFhYTUzMzI3OTc5ZDEwNjRmNmVlZTczOS4uZjhlYzJmYjQwYzNk
OGQ1Y2ViNTQ2ZWQ4N2FiYzk0YjA0NGY2ODkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAg
LTQ0LDcgKzQ0LDcgQEAgKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlm
aWVyOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoU3RyaW5nIHsg
ZGF0YWJhc2VJZGVudGlmaWVyIH0pOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4g
bmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCA4NzdmZjI4N2E3NmMzMTVmMTE5NzM5MWQyNmMwNGMzZWIyNWU2MDVhLi5iZmQ1ZDA5
ZTk4YWRmNzM5YWI4ZjM3N2JjYjdlNGQ1NGUyZTgwNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI2MDgsMTMgKzI2MDgsMTMgQEAg
c3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0b3JFeGNlcHRpb25NYXAo
KQogewogICAgIFNlbGVjdG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hNYXA8U0VMLCBTdHJpbmc+
OwogCi0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRp
dG9yOiksICJJbnNlcnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydFBh
cmFncmFwaFNlcGFyYXRvcjopLCAiSW5zZXJ0TmV3bGluZSIpOwotICAgIG1hcC0+YWRkKEBzZWxl
Y3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiKTsKLSAgICBt
YXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246KSwgIk1vdmVQYWdlRG93biIpOwotICAgIG1hcC0+
YWRkKEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAi
TW92ZVBhZ2VVcCIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxl
Y3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBtYXAtPmFkZChA
c2VsZWN0b3IoaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6KSwgIkluc2VydE5ld2xp
bmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6
KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRUYWJJ
Z25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiX3MpOworICAgIG1hcC0+YWRkKEBzZWxl
Y3RvcihwYWdlRG93bjopLCAiTW92ZVBhZ2VEb3duIl9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0
b3IocGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNl
bGVjdGlvbiJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAiTW92ZVBhZ2VV
cCJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbjop
LCAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CiAKICAgICByZXR1cm4gbWFwOwog
fQpAQCAtMjY1MCw3ICsyNjUwLDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kKWNvcmVD
b21tYW5kQnlOYW1lOihjb25zdCBjaGFyKiluYW1lCiAgICAgYXV0byogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQobmFtZSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChT
dHJpbmcgeyBuYW1lIH0pOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0
b3I6KFNFTClzZWxlY3RvcgpAQCAtMjg4OCw3ICsyODg4LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VO
RAogCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwog
ICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkg
ewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9u
TGVmdFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRTdGF0ZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1By
b3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZSldOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CkBAIC0yOTA2LDcgKzI5MDYsNyBA
QCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFz
czpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAgICAgICAgICAgICAvLyBUYWtlIGNvbnRyb2wgb2Yg
dGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nL3VuY2hl
Y2tpbmcgaXQgYmVjYXVzZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3b3VsZCBiZSBhbWJpZ3Vv
dXMuCi0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCIpICE9IFRy
aVN0YXRlOjpGYWxzZSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTooZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9uLCAi
cnRsIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJTkdf
SU5URVJOQUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRl
bSIpCiAgICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExlZnQi
LCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQpAQCAtNDY4
Myw3ICs0NjgzLDcgQEAgLSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJpbnRpbmcgbWluaW11
bVBhZ2VMb2dpY2FsV2lkdGg6KGZsb2F0KW1pblBhZ2VMb2dpY2EKICAgICBhdXRvKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJhbWUpIHsKICAgICAgICAg
aWYgKGF1dG8qIGNvcmVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjb3Jl
Vmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJwcmludCIgOiAic2NyZWVu
Iik7CisgICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGlu
ZyA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MpOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBjb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEluIHNldHRpbmcgcHJp
bnRpbmcsIHdlIHNob3VsZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFscmVhZHkgY2FjaGVkIGZv
ciB0aGUgZG9jdW1lbnQuCiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNzA0CkBAIC02NjcyLDcgKzY2NzIsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfSkoKTsKIAogICAgICAgICBpZiAo
IWlzRnVuY3Rpb25LZXlDb21tYW5kV2l0aE1hdGNoaW5nTWVudUl0ZW0pCi0gICAgICAgICAgICBl
dmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQo
Imluc2VydFRleHQ6IiwgdGV4dCkpOworICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29tbWFu
ZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRUZXh0OiJfcywgdGV4
dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTY4MjI5MjUwYjhjM2IwYzFhY2Y2ZWMxOGVhOTg2MmE2
YmI3ZWJmNS4uYjdhZDBkNjg0NzViYTE3NDRjNDFkOTYyODMwNzE4ZDkxMTkwYTFkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTUzNCw3ICsxNTM0
LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmlu
ZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVP
KQotICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcoTlNUZW1wb3Jh
cnlEaXJlY3RvcnkoKSksICJNZWRpYUNhY2hlLyIpKTsKKyAgICAgICAgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoU3RyaW5nKE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkpLCAiTWVkaWFDYWNo
ZS8iX3MpKTsKICNlbmRpZgogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVl
OwogICAgIH0KQEAgLTMzMDQsNyArMzMwNCw3IEBAICsgKEJPT0wpX2NhbkhhbmRsZVJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICsgKE5TU3RyaW5nICopX2RlY29kZURhdGE6KE5TRGF0
YSAqKWRhdGEKIHsKICAgICBXZWJDb3JlOjpIVE1MTmFtZXM6OmluaXQoKTsgLy8gdGhpcyBtZXRo
b2QgaXMgdXNlZCBmb3IgaW1wb3J0aW5nIGJvb2ttYXJrcyBhdCBzdGFydHVwLCBzbyBIVE1MTmFt
ZXMgYXJlIGxpa2VseSB0byBiZSB1bmluaXRpYWxpemVkIHlldAotICAgIHJldHVybiBXZWJDb3Jl
OjpUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCIpLT5kZWNvZGVBbmRGbHVz
aChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7
IC8vIGJvb2ttYXJrIGZpbGVzIGFyZSBIVE1MCisgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIl9zKS0+ZGVjb2RlQW5kRmx1c2goc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOyAvLyBib29r
bWFyayBmaWxlcyBhcmUgSFRNTAogfQogCiAtICh2b2lkKV9wdXNoUGVyZm9ybWluZ1Byb2dyYW1t
YXRpY0ZvY3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcAppbmRleCA1ODhjZTVkZmZkMjNlMjJlMDBjYWRiYTk1MzdkZTdmZWQ2MzgyZjFjLi42NzY3
NzIwMzE1YzM5MzNjZGMyMmU0MjUyZTNlYTMzOGZmODkyNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCBz
dGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiX3MpOwogfQog
CiB2b2lkIFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMDFlZWY4OGRlZDQyODE4
ZDUxY2YxYWViMWE3ZjQyOGEzZDUxNTZjYi4uOWNmOGNjMDJhMjFjZGRlYmIwZWQ4NDk5ZmZlOTQw
ZjZlNGYxODQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBzdGQ6Om51bWVyaWNfbGltaXRzOwogCiBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBvbGRQcmVmZXJlbmNlc1BhdGgoKQogewotICAgIHN0YXRpYyBTdHJpbmcg
cGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpy
b2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMu
cGxpc3QiKTsKKyAgICBzdGF0aWMgU3RyaW5nIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIldlYktpdFByZWZlcmVuY2VzLnBsaXN0Il9zKTsKICAgICByZXR1cm4gcGF0aDsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQyZmUyYmFkMzdlNGYwYzc4ODI4OGNjYjAxMDRhMDlmZTliZjA3OWIuLmFiNDhhMWVmNTViMmVl
ODBlODZkZTliMjRkN2Y3M2RlNGM4MDBkMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdl
YktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAo
LVtCbG9iV2l0aFVTRFpFeHRlbnNpb25Eb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1l
Lm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChjcmVhdGVEaXJlY3Rvcmllcyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKwogMjAyMi0wMy0zMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgYmFkIGFkb3B0TlMoKSBpbiBO
ZXR3b3JrUHJvY2Vzcy5MYXVuY2hPbmx5V2hlbk5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggYzg5M2IyMzI2MDgzZTdjMTBlNWE4NjFh
OWQ4MTMxM2IyODJjYTBkYi4uY2Y3Yjc4OWIzNWVhMWVmNzJiZDZjOGU2NGUzOTY5MDhkYzhjMTc2
YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC05
NzUsOSArOTc1LDkgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNG
b3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBS
ZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAgdGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGlu
ZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJpb3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNl
ZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShX
ZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3Jh
Z2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
YXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENh
Y2hlRGVmYXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJy
YXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQo
KSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0
aCwgIkRhdGFiYXNlcyJfcykuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwor
ICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNL
ZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxv
Y2FsU3RvcmFnZSJfcykuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2Fj
aGUiX3MpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQog
CkBAIC0xMTIzLDcgKzExMjMsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29u
c3QgY2hhciogcGF0aE9yVXJsKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAg
IFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3RyaW5nKGxvY2F0aW9uICsgbGF5
b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJp
bmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdp
biIpOworICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxh
eW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIl9zKTsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IHBvc3NpYmxlUGF0aHM7CiAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhU
b1Rlc3QpKTsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxs
YmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3Ry
aW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2li
bGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwor
ICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIl9zKTsKIAogICAgICAgICBpZiAoOjpQYXRoSXNE
aXJlY3RvcnlXKHBhdGhUb0ZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gcGF0aFRvRm9udEZhbGxiYWNrOwpAQCAtMTE1MCw3ICsxMTUwLDcg
QEAgc3RhdGljIHZvaWQgYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9u
dEZhbGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZv
bnQtZmFsbGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGli
bGUtZm9udC1mYWxsYmFjay5jc3MiX3MpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhm
b250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBA
IC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNl
bnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQ
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFj
ayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRo
LCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZh
bGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFj
a1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyJfcyk7CiAKICAgICBpZiAo
ITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKaW5kZXggYzQ2NzRhZmE2MDg3NjM2N2IzY2Y2NzZjMmU1N2ZkZGIzMGI4ODQ5MS4u
ZDgyYTNhYzUxNzJkYzU1ZDAzYjRmNjgxM2FjYmE3MGRkODhmYmZmZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTUzLDM3ICs1MywzNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZS4KICAgICAgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAg
ICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cFRlc3RGaWxlIl9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSho
YW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwog
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX3RlbXBG
aWxlU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RG
aWxlLXN5bWxpbmsiLCBoYW5kbGUpOworICAgICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiX3MsIGhh
bmRsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CiAgICAgICAgIEZp
bGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5
bWxpbmtQYXRoKTsKIAogICAgICAgICAvLyBDcmVhdGUgdGVtcCBkaXJlY3RvcnkuCiAgICAgICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlOwotICAgICAgICBt
X3RlbXBFbXB0eUZvbGRlclBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cEVtcHR5Rm9sZGVyIiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgICAgIG1fdGVtcEVtcHR5Rm9sZGVy
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlGb2xkZXIiX3Ms
IHRlbXBvcmFyeUZpbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5
RmlsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGb2xkZXJQ
YXRoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fdGVtcEVtcHR5
Rm9sZGVyUGF0aCk7CiAKLSAgICAgICAgbV90ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlGb2xkZXItc3ltbGluayIsIHRl
bXBvcmFyeUZpbGUpOworICAgICAgICBtX3RlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eUZvbGRlci1zeW1saW5rIl9zLCB0
ZW1wb3JhcnlGaWxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZp
bGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5Rm9sZGVyU3lt
bGlua1BhdGgpOwogICAgICAgICBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsobV90ZW1w
RW1wdHlGb2xkZXJQYXRoLCBtX3RlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKTsKIAotICAgICAg
ICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRl
bXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSJfcywgaGFu
ZGxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICAgICAg
bV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIG1fc3BhY2VDb250YWlu
aW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBU
ZXN0IEZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5k
bGUpOwogCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAg
IG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSJfcywgaGFuZGxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBo
YW5kbGUpOworICAgICAgICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSJfcywgaGFuZGxlKTsKICAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogCkBAIC0xNTQsNyAr
MTU0LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQogCiBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlKQogewotICAgIGF1dG8gZG9lc05vdEV4aXN0
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRo
KCksICJkb2VzLW5vdC1leGlzdCJfcyk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZp
bGVUeXBlKGRvZXNOb3RFeGlzdFBhdGgpKTsKIAogICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpm
aWxlVHlwZSh0ZW1wRmlsZVBhdGgoKSksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsK
QEAgLTE2MywxMyArMTYzLDEzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVR5cGUpCiAg
ICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBFbXB0eUZvbGRlclBhdGgoKSks
IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwogCiAgICAgLy8gU3ltbGluayB0byBm
aWxlIHN5bWxpbmsgY2FzZS4KLSAgICBhdXRvIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJzeW1saW5rVG9TeW1saW5rIik7CisgICAgYXV0byBzeW1saW5rVG9GaWxlU3ltbGlua1BhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0
aCgpLCAic3ltbGlua1RvU3ltbGluayJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRmlsZVN5
bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5bWxpbmtU
b0ZpbGVTeW1saW5rUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpTeW1ib2xpY0xpbmspOwog
CiAgICAgLy8gU3ltbGluayB0byBkaXJlY3Rvcnkgc3ltbGluayBjYXNlLgogICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgYXV0byBzeW1saW5rVG9EaXJlY3Rv
cnlTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZp
bGUtc3ltbGluayIsIGhhbmRsZSk7CisgICAgYXV0byBzeW1saW5rVG9EaXJlY3RvcnlTeW1saW5r
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUtc3ltbGlu
ayJfcywgaGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKTsKICAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEVtcHR5Rm9s
ZGVyU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgpKTsKQEAgLTE4
Niw3ICsxODYsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlKQogCiBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MpCiB7Ci0gICAgYXV0byBk
b2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRl
bXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAgYXV0byBkb2VzTm90
RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsKICAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhkb2VzTm90RXhpc3RQYXRoKSk7CiAK
ICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0ZW1w
RmlsZVBhdGgoKSksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKQEAgLTE5NSwxMyAr
MTk1LDEzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5r
cykKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCkpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsK
IAogICAgIC8vIFN5bWxpbmsgdG8gZmlsZSBzeW1saW5rIGNhc2UuCi0gICAgYXV0byBzeW1saW5r
VG9GaWxlU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGluayIpOworICAgIGF1dG8gc3lt
bGlua1RvRmlsZVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiX3MpOwogICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRmlsZVN5bWxpbmtQ
YXRoKCksIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9FUShGaWxlU3lz
dGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCks
IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpSZWd1bGFyKTsKIAogICAgIC8vIFN5bWxpbmsgdG8gZGly
ZWN0b3J5IHN5bWxpbmsgY2FzZS4KICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlOwotICAgIGF1dG8gc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiLCBoYW5kbGUpOwor
ICAgIGF1dG8gc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlLXN5bWxpbmsiX3MsIGhhbmRsZSk7CiAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShz
eW1saW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoKCksIHN5bWxp
bmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKQogI2lmIE9TKFVOSVgpCiBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIGlzSGlkZGVuRmlsZSkKIHsKLSAgICBhdXRvIGhpZGRlbkZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSwgIi5oaWRkZW5GaWxlIik7CisgICAgYXV0byBoaWRkZW5GaWxlUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICIuaGlkZGVuRmlsZSJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIaWRkZW5G
aWxlKGhpZGRlbkZpbGVQYXRoKSk7CiAKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNI
aWRkZW5GaWxlKHRlbXBGaWxlUGF0aCgpKSk7CkBAIC0yNDMsMTUgKzI0MywxNSBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhpc3RzKQogVEVT
VF9GKEZpbGVTeXN0ZW1UZXN0LCBkZWxldGVOb25FbXB0eURpcmVjdG9yeSkKIHsKICAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKLSAgICBhdXRvIHRlbXBv
cmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgYXV0byB0ZW1wb3JhcnlU
ZXN0Rm9sZGVyID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5VGVzdCJfcywgdGVtcG9yYXJ5RmlsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKHRlbXBvcmFyeUZpbGUpOwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Ci0gICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMo
dGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9KSkpOwotICAgIGNyZWF0ZVRlc3RG
aWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9s
ZGVyLCAiZmlsZTEudHh0IikpOwotICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOwot
ICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMo
dGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGUzLnR4dCIgfSkpOwotICAg
IGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVt
cG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciJf
cyB9KSkpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0Il9zKSk7CisgICAgY3JlYXRl
VGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRl
c3RGb2xkZXIsICJmaWxlMi50eHQiX3MpKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZv
bGRlciJfcywgImZpbGUzLnR4dCJfcyB9KSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJm
b2xkZXIiX3MsICJmaWxlNC50eHQiX3MgfSkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CiAgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CiAgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5
VGVzdEZvbGRlcikpOwpAQCAtMjY0LDEzICsyNjQsMTMgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBmaWxlRXhpc3RzKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVt
cEZpbGVTeW1saW5rUGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh0ZW1wRW1wdHlGaWxlUGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKSkpOworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcykpKTsKIH0K
IAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBmaWxlRXhpc3RzQnJva2VuU3ltbGluaykKIHsKLSAg
ICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKLSAgICBhdXRv
IHN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0LXN5bWxpbmsiKTsKKyAgICBhdXRvIGRv
ZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVt
cEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3MpOworICAgIGF1dG8gc3ltbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3Qtc3ltbGluayJfcyk7CiAgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGRvZXNOb3RFeGlzdFBhdGgsIHN5bWxpbmtQ
YXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZG9lc05vdEV4
aXN0UGF0aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxp
bmtQYXRoKSk7IC8vIGZpbGVFeGlzdHMoKSBmb2xsb3dzIHN5bWxpbmtzLgpAQCAtMjgxLDcgKzI4
MSw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZUV4aXN0c0Jyb2tlblN5bWxpbmspCiBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVFeGlzdHNTeW1saW5rVG9TeW1saW5rKQogewogICAg
IC8vIENyZWF0ZSBhIHZhbGlkIHN5bWxpbmsgdG8gYSBzeW1saW5rIHRvIGEgcmVndWxhciBmaWxl
LgotICAgIGF1dG8gc3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ltbGluayIpOworICAgIGF1dG8gc3ltbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAic3ltbGluayJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3Jl
YXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1BhdGgpKTsKICAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRoKSk7CiAgICAg
RVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN5bWxpbmtQYXRoKSwgRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CkBAIC0zNDQsNyArMzQ0LDcgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBkZWxldGVFbXB0eURpcmVjdG9yeUNvbnRhaW5pbmdEU1N0b3JlRmlsZSkKICAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBFbXB0eUZvbGRlclBhdGgo
KSkpOwogCiAgICAgLy8gQ3JlYXRlIC5EU1N0b3JlIGZpbGUuCi0gICAgYXV0byBkc1N0b3JlUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICIuRFNfU3RvcmUiKTsKKyAgICBhdXRvIGRzU3RvcmVQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgIi5EU19TdG9y
ZSJfcyk7CiAgICAgYXV0byBkc1N0b3JlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZHNT
dG9yZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGRzU3RvcmVIYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVu
KEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShkc1N0b3Jl
SGFuZGxlKTsKQEAgLTM2MCwxNCArMzYwLDE0IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGVs
ZXRlRW1wdHlEaXJlY3RvcnlPbk5vbkVtcHR5RGlyZWN0b3J5KQogICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CiAKICAgICAvLyBD
cmVhdGUgLkRTU3RvcmUgZmlsZS4KLSAgICBhdXRvIGRzU3RvcmVQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgIi5EU19TdG9y
ZSIpOworICAgIGF1dG8gZHNTdG9yZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLkRTX1N0b3JlIl9zKTsKICAgICBhdXRv
IGRzU3RvcmVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShkc1N0b3JlUGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZHNTdG9yZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3RE
YXRhKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGRzU3RvcmVIYW5kbGUpOwogICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZHNTdG9yZVBhdGgpKTsKIAogICAgIC8v
IENyZWF0ZSBhIGR1bW15IGZpbGUuCi0gICAgYXV0byBkdW1teUZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImR1bW15
RmlsZSIpOworICAgIGF1dG8gZHVtbXlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkdW1teUZpbGUiX3MpOwogICAg
IGF1dG8gZHVtbXlGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZHVtbXlGaWxlUGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZHVtbXlGaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxl
U3lzdGVtVGVzdERhdGEpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZHVtbXlGaWxlSGFu
ZGxlKTsKQEAgLTM5MSwxNCArMzkxLDE0IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGVsZXRl
RW1wdHlEaXJlY3RvcnlPbkFSZWd1bGFyRmlsZSkKIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBk
ZWxldGVFbXB0eURpcmVjdG9yeURvZXNOb3RFeGlzdCkKIHsKLSAgICBhdXRvIGRvZXNOb3RFeGlz
dFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0
aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGRvZXNOb3RFeGlzdFBhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZG9lc05vdEV4aXN0UGF0aCkpOwogfQogCiBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIG1vdmVGaWxlKQogewotICAgIGF1dG8gZGVzdGluYXRpb24gPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAi
dGVtcEZpbGUtbW92ZWQiKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInRlbXBGaWxlLW1v
dmVkIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxl
UGF0aCgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGlu
YXRpb24pKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptb3ZlRmlsZSh0ZW1wRmlsZVBh
dGgoKSwgZGVzdGluYXRpb24pKTsKQEAgLTQzMiwyNCArNDMyLDI0IEBAIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgbW92ZUZpbGVPdmVyd3JpdGVzRGVzdGluYXRpb24pCiBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIG1vdmVEaXJlY3RvcnkpCiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIHRlbXBvcmFyeUZpbGU7Ci0gICAgYXV0byB0ZW1wb3JhcnlUZXN0Rm9sZGVyID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIm1vdmVEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5Rmls
ZSk7CisgICAgYXV0byB0ZW1wb3JhcnlUZXN0Rm9sZGVyID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoIm1vdmVEaXJlY3RvcnlUZXN0Il9zLCB0ZW1wb3JhcnlGaWxlKTsKICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZSk7CiAKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKICAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXModGVtcG9yYXJ5VGVzdEZvbGRlcikpOwot
ICAgIGF1dG8gdGVzdEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHRlbXBvcmFyeVRlc3RGb2xkZXIsICJ0ZXN0RmlsZSIpOworICAgIGF1dG8gdGVzdEZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RG
b2xkZXIsICJ0ZXN0RmlsZSJfcyk7CiAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUodGVzdEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsK
ICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERh
dGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CiAKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHRlc3RGaWxlUGF0aCkpOwogCi0gICAgYXV0byBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAibW92ZURp
cmVjdG9yeVRlc3QiKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJtb3ZlRGlyZWN0
b3J5VGVzdCJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bW92ZUZpbGUodGVtcG9y
YXJ5VGVzdEZvbGRlciwgZGVzdGluYXRpb25QYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5VGVzdEZvbGRlcikpOwogICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlc3RGaWxlUGF0aCkpOwogICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRpb25QYXRoKSk7Ci0gICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGVzdGluYXRpb25QYXRoLCAidGVzdEZpbGUiKSkpOworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRlc3RpbmF0aW9uUGF0aCwgInRlc3RGaWxlIl9zKSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKEZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRlc3RpbmF0aW9uUGF0aCkpOwogICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRpb25QYXRoKSk7CkBAIC00
NjgsNyArNDY4LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBmaWxlU2l6ZSkKICAgICBBU1NF
UlRfVFJVRShmaWxlU2l6ZSk7CiAgICAgRVhQRUNUX0VRKCpmaWxlU2l6ZSwgMFUpOwogCi0gICAg
U3RyaW5nIGZpbGVUaGF0RG9lc05vdEV4aXN0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAg
U3RyaW5nIGZpbGVUaGF0RG9lc05vdEV4aXN0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsKICAg
ICBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVUaGF0RG9lc05vdEV4aXN0KTsK
ICAgICBFWFBFQ1RfVFJVRSghZmlsZVNpemUpOwogfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgbWFrZUFsbERpcmVjdG9yaWVzKQogICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CiAgICAgRVhQRUNU
X0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBFbXB0eUZvbGRlclBhdGgoKSksIEZpbGVTeXN0
ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3Rvcmllcyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKLSAgICBTdHJpbmcgc3Vi
Rm9sZGVyUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJGb2xkZXIxIiwgInN1YkZvbGRlcjIiLCAic3ViRm9sZGVy
MyIgfSk7CisgICAgU3RyaW5nIHN1YkZvbGRlclBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3ViRm9sZGVyMSJfcywg
InN1YkZvbGRlcjIiX3MsICJzdWJGb2xkZXIzIl9zIH0pOwogICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHN1YkZvbGRlclBhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3ViRm9sZGVyUGF0aCkpOwogICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ViRm9sZGVyUGF0aCkpOwpAQCAtNTMzLDEwICs1
MzMsMTAgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVTeW1ib2xpY0xpbmtGb2xkZXIp
CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRlU3ltYm9saWNMaW5rRmlsZURvZXNOb3RF
eGlzdCkKIHsKLSAgICBTdHJpbmcgZmlsZVRoYXREb2VzTm90RXhpc3QgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3Qt
ZXhpc3QiKTsKKyAgICBTdHJpbmcgZmlsZVRoYXREb2VzTm90RXhpc3QgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3Qt
ZXhpc3QiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVU
aGF0RG9lc05vdEV4aXN0KSk7CiAKLSAgICBhdXRvIHN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90
LWV4aXN0LXN5bWxpbmsiKTsKKyAgICBhdXRvIHN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4
aXN0LXN5bWxpbmsiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9s
aWNMaW5rKGZpbGVUaGF0RG9lc05vdEV4aXN0LCBzeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN5bWxpbmtQYXRoKSk7CkBAIC01NDQsNyArNTQ0
LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBjcmVhdGVTeW1ib2xpY0xpbmtGaWxlRG9lc05v
dEV4aXN0KQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rKQogewotICAg
IGF1dG8gaGFyZGxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInRlbXBGaWxlLWhhcmRsaW5rIik7CisgICAgYXV0byBo
YXJkbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZpbGUtaGFyZGxpbmsiX3MpOwogICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGhhcmRsaW5rUGF0aCkpOwogCiAgICAgYXV0byBmaWxl
U2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHRlbXBGaWxlUGF0aCgpKTsKQEAgLTU3Miw3ICs1
NzIsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rKQogCiBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIGNyZWF0ZUhhcmRMaW5rT3JDb3B5RmlsZSkKIHsKLSAgICBhdXRvIGhh
cmRsaW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1w
dHlGb2xkZXJQYXRoKCksICJ0ZW1wRmlsZS1oYXJkbGluayIpOworICAgIGF1dG8gaGFyZGxpbmtQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRl
clBhdGgoKSwgInRlbXBGaWxlLWhhcmRsaW5rIl9zKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhoYXJkbGlua1BhdGgpKTsKIAogICAgIGF1dG8gZmlsZVNpemUgPSBG
aWxlU3lzdGVtOjpmaWxlU2l6ZSh0ZW1wRmlsZVBhdGgoKSk7CkBAIC02MDQsMTMgKzYwNCwxMyBA
QCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGhhcmRMaW5rQ291bnQpCiAgICAgQVNTRVJUX1RSVUUo
ISFsaW5rQ291bnQpOwogICAgIEVYUEVDVF9FUSgqbGlua0NvdW50LCAxVSk7CiAKLSAgICBhdXRv
IGhhcmRsaW5rMVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVt
cEVtcHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZpbGUtaGFyZGxpbmsxIik7CisgICAgYXV0byBoYXJk
bGluazFQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgInRlbXBGaWxlLWhhcmRsaW5rMSJfcyk7CiAgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6aGFyZExpbmsodGVtcEZpbGVQYXRoKCksIGhhcmRsaW5rMVBhdGgpKTsKICAg
ICBsaW5rQ291bnQgPSBGaWxlU3lzdGVtOjpoYXJkTGlua0NvdW50KHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfVFJVRSghIWxpbmtDb3VudCk7CiAgICAgRVhQRUNUX0VRKCpsaW5rQ291bnQs
IDJVKTsKIAotICAgIGF1dG8gaGFyZGxpbmsyUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJ0ZW1wRmlsZS1oYXJkbGluazIi
KTsKKyAgICBhdXRvIGhhcmRsaW5rMlBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZpbGUtaGFyZGxpbmsyIl9zKTsK
ICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpoYXJkTGluayh0ZW1wRmlsZVBhdGgoKSwgaGFy
ZGxpbmsyUGF0aCkpOwogICAgIGxpbmtDb3VudCA9IEZpbGVTeXN0ZW06OmhhcmRMaW5rQ291bnQo
dGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKCEhbGlua0NvdW50KTsKQEAgLTY4Niwx
MyArNjg2LDEzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgdXBkYXRlRmlsZU1vZGlmaWNhdGlv
blRpbWUpCiAgICAgQVNTRVJUX1RSVUUoISFuZXdNb2RpZmljYXRpb25UaW1lKTsKICAgICBFWFBF
Q1RfR1QobmV3TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCBt
b2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOwogCi0gICAgYXV0
byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAgYXV0byBkb2Vz
Tm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsKICAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6dXBkYXRlRmlsZU1vZGlmaWNhdGlvblRpbWUoZG9lc05vdEV4aXN0UGF0aCkp
OwogfQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhdGhGaWxlTmFtZSkKIHsKLSAgICBhdXRv
IHRlc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1w
dHlGb2xkZXJQYXRoKCksIHsgInN1YmZvbGRlciIsICJmaWxlbmFtZS50eHQiIH0pOworICAgIGF1
dG8gdGVzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgeyAic3ViZm9sZGVyIl9zLCAiZmlsZW5hbWUudHh0Il9zIH0pOwog
ICAgIEVYUEVDVF9TVFJFUSgiZmlsZW5hbWUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEZpbGVOYW1l
KHRlc3RQYXRoKS51dGY4KCkuZGF0YSgpKTsKIAogI2lmIE9TKFVOSVgpCkBAIC03MTQsOCArNzE0
LDggQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBwYXRoRmlsZU5hbWUpCiAKIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgcGFyZW50UGF0aCkKIHsKLSAgICBhdXRvIHRlc3RQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgInN1
YmZvbGRlciIsICJmaWxlbmFtZS50eHQiIH0pOwotICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ViZm9s
ZGVyIikudXRmOCgpLmRhdGEoKSwgRmlsZVN5c3RlbTo6cGFyZW50UGF0aCh0ZXN0UGF0aCkudXRm
OCgpLmRhdGEoKSk7CisgICAgYXV0byB0ZXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJmb2xkZXIiX3MsICJm
aWxlbmFtZS50eHQiX3MgfSk7CisgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzdWJmb2xkZXIiX3MpLnV0
ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW06OnBhcmVudFBhdGgodGVzdFBhdGgpLnV0ZjgoKS5kYXRh
KCkpOwogI2lmIE9TKFVOSVgpCiAgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0
ZW06OnBhcmVudFBhdGgoIi92YXIvdG1wL2V4YW1wbGUudHh0IikudXRmOCgpLmRhdGEoKSk7CiAg
ICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoIi92YXIv
dG1wLyIpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNzMxLDQ4ICs3MzEsNDggQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBwYXJlbnRQYXRoKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQpCiB7CiAjaWYgT1MoVU5JWCkKLSAgICBFWFBFQ1RfU1RSRVEoIi92YXIi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi8iLCAidmFyIikudXRmOCgp
LmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCgiL3Zhci8iLCAidG1wIikudXRmOCgpLmRhdGEoKSk7Ci0gICAg
RVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCgiL3ZhciIsICJ0bXAiKS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIi92
YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIv
dmFyL3RtcCIsICJmaWxlLnR4dCIpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
L3Zhci8iLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIiLCAiIiku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3Zhci8iLCAiIikudXRmOCgpLmRhdGEoKSk7CisgICAg
RVhQRUNUX1NUUkVRKCIvdmFyIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCIvIl9zLCAidmFyIl9zKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIv
dG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyLyJfcywgInRt
cCJfcykudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3ZhciJfcywgInRtcCJfcykudXRmOCgp
LmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3Zhci90bXAiX3MsICJmaWxlLnR4dCJfcyku
dXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3ZhciJfcywgIiJfcykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCgiL3Zhci8iX3MsICIiX3MpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAjaWYgT1MoV0lO
RE9XUykKLSAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb28iLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoIkM6XFwiLCAiRm9vIikudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJDOlxcRm9vXFxCYXIiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoIkM6XFxGb28iLCAiQmFyIikudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJD
OlxcRm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KCJDOlxcRm9vXFxCYXIiLCAiRmlsZS50eHQiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIkM6XFxGb28iLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
IkM6XFwiX3MsICJGb28iX3MpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpc
XEZvb1xcQmFyIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJDOlxcRm9v
Il9zLCAiQmFyIl9zKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29c
XEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIkM6
XFxGb29cXEJhciJfcywgIkZpbGUudHh0Il9zKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogfQog
CiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMpCiB7CiAg
ICAgRVhQRUNUX1NUUkVRKHRlbXBFbXB0eUZvbGRlclBhdGgoKS51dGY4KCkuZGF0YSgpLCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwg
eyB9KS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImZpbGUudHh0IikudXRm
OCgpLmRhdGEoKSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1w
dHlGb2xkZXJQYXRoKCksIHsgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSwgImZpbGUudHh0Il9zKS51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAiZmlsZS50eHQi
X3MgfSkudXRmOCgpLmRhdGEoKSk7CiAjaWYgT1MoVU5JWCkKLSAgICBFWFBFQ1RfU1RSRVEoIi92
YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygi
LyIsIHsgInZhciIsICJ0bXAiLCAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVY
UEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKCIvdmFyIiwgeyAidG1wIiwgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci8iLCB7ICJ0bXAiLCAiZmlsZS50eHQiIH0pLnV0
ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFyL3RtcCIsIHsgImZpbGUudHh0
IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiLyJfcywgeyAidmFyIl9z
LCAidG1wIl9zLCAiZmlsZS50eHQiX3MgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NU
UkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoIi92YXIiX3MsIHsgInRtcCJfcywgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci8iX3MsIHsgInRtcCJfcywgImZpbGUudHh0Il9zIH0p
LnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFyL3RtcCJfcywgeyAiZmls
ZS50eHQiX3MgfSkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICNpZiBPUyhXSU5ET1dTKQotICAg
IEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFwiLCB7ICJGb28iLCAiQmFyIiwgIkZpbGUudHh0IiB9
KS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50
eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCJDOlxcRm9vIiwgeyAi
QmFyIiwgIkZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkM6
XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKCJDOlxcRm9vXFwiLCB7ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXEJhciIsIHsgIkZpbGUudHh0IiB9KS51
dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCJDOlxcRm9vXFxCYXJcXCIs
IHsgIkZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkM6XFxG
b29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KCJDOlxcIl9zLCB7ICJGb28iX3MsICJCYXIiX3MsICJGaWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0
YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCJDOlxcRm9vIl9zLCB7ICJCYXIiX3MsICJG
aWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29c
XEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCJD
OlxcRm9vXFwiX3MsIHsgIkJhciJfcywgIkZpbGUudHh0Il9zIH0pLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXEJhciJfcywgeyAiRmlsZS50eHQiX3Mg
fSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUu
dHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xcQmFy
XFwiX3MsIHsgIkZpbGUudHh0Il9zIH0pLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiB9CiAKIFRF
U1RfRihGaWxlU3lzdGVtVGVzdCwgbGlzdERpcmVjdG9yeSkKIHsKLSAgICBjcmVhdGVUZXN0Rmls
ZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0
aCgpLCAiYS50eHQiKSk7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImIudHh0IikpOwotICAgIGNy
ZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1w
dHlGb2xkZXJQYXRoKCksICJiYXIucG5nIikpOwotICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJmb28u
cG5nIikpOwotICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ViZm9sZGVy
IikpOwotICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJmb2xkZXIiLCAiYy50eHQiIH0pKTsK
LSAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3ViZm9sZGVyIiwgImQudHh0IiB9KSk7CisgICAg
Y3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgImEudHh0Il9zKSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImIu
dHh0Il9zKSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImJhci5wbmciX3MpKTsKKyAgICBjcmVh
dGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5
Rm9sZGVyUGF0aCgpLCAiZm9vLnBuZyJfcykpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAic3ViZm9sZGVyIl9zKSk7CisgICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgInN1
YmZvbGRlciJfcywgImMudHh0Il9zIH0pKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3Vi
Zm9sZGVyIl9zLCAiZC50eHQiX3MgfSkpOwogCiAgICAgYXV0byBtYXRjaGVzID0gRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkpOwogICAgIEFTU0VSVF9FUSht
YXRjaGVzLnNpemUoKSwgNVUpOwpAQCAtNzgzLDE2ICs3ODMsMTYgQEAgVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBsaXN0RGlyZWN0b3J5KQogICAgIEVYUEVDVF9TVFJFUShtYXRjaGVzWzNdLnV0Zjgo
KS5kYXRhKCksICJmb28ucG5nIik7CiAgICAgRVhQRUNUX1NUUkVRKG1hdGNoZXNbNF0udXRmOCgp
LmRhdGEoKSwgInN1YmZvbGRlciIpOwogCi0gICAgbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSwgInN1YmZvbGRlciIpKTsKKyAgICBtYXRjaGVzID0gRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5
Rm9sZGVyUGF0aCgpLCAic3ViZm9sZGVyIl9zKSk7CiAgICAgQVNTRVJUX0VRKG1hdGNoZXMuc2l6
ZSgpLCAyVSk7CiAgICAgc3RkOjpzb3J0KG1hdGNoZXMuYmVnaW4oKSwgbWF0Y2hlcy5lbmQoKSwg
V1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOwogICAgIEVYUEVDVF9TVFJFUShtYXRjaGVz
WzBdLnV0ZjgoKS5kYXRhKCksICJjLnR4dCIpOwogICAgIEVYUEVDVF9TVFJFUShtYXRjaGVzWzFd
LnV0ZjgoKS5kYXRhKCksICJkLnR4dCIpOwogCi0gICAgbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0IikpOworICAgIG1hdGNoZXMgPSBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcykpOwogICAgIEFTU0VSVF9F
UShtYXRjaGVzLnNpemUoKSwgMFUpOwogCi0gICAgbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSwgImEudHh0IikpOworICAgIG1hdGNoZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJhLnR4dCJfcykpOwogICAgIEFTU0VSVF9FUShtYXRjaGVzLnNpemUoKSwgMFUp
OwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CkBAIC04MDAsNyArODAwLDcgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBsaXN0RGlyZWN0b3J5KQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJlYWxQ
YXRoKQogewotICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIp
OworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcyk7CiAg
ICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKGRvZXNOb3RFeGlzdFBhdGgpLnV0
ZjgoKS5kYXRhKCksIGRvZXNOb3RFeGlzdFBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICAgICBhdXRv
IHJlc29sdmVkVGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgodGVtcEZpbGVQYXRo
KCkpOwpAQCAtODEyLDIzICs4MTIsMjMgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFsUGF0
aCkKICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgodGVtcEVtcHR5Rm9sZGVy
U3ltbGlua1BhdGgoKSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRUZW1wRW1wdHlGb2xkZXJQYXRo
LnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSBkaXJlY3Rvcnkgc3ltbGluay4KIAog
ICAgIC8vIFN5bWxpbmsgdG8gc3ltbGluayBjYXNlLgotICAgIGF1dG8gc3ltbGlua1RvU3ltbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGluayIpOworICAgIGF1dG8gc3ltbGlua1RvU3ltbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAic3ltbGlua1RvU3ltbGluayJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1Rv
U3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoc3lt
bGlua1RvU3ltbGlua1BhdGgpLnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkVGVtcEZpbGVQYXRoLnV0
ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSBhbGwgc3ltbGlua3MuCiAKLSAgICBhdXRv
IHN1YkZvbGRlclBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVt
cEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ViZm9sZGVyIik7CisgICAgYXV0byBzdWJGb2xkZXJQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBh
dGgoKSwgInN1YmZvbGRlciJfcyk7CiAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KHN1YkZvbGRlclBhdGgpOwogICAgIGF1dG8gcmVzb2x2ZWRTdWJGb2xkZXJQYXRoID0gRmlsZVN5
c3RlbTo6cmVhbFBhdGgoc3ViRm9sZGVyUGF0aCk7Ci0gICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0
ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdWJGb2xk
ZXJQYXRoLCAiLi4iKSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRUZW1wRW1wdHlGb2xkZXJQYXRo
LnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iLgotICAgIEVYUEVDVF9TVFJF
UShGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHN1YkZvbGRlclBhdGgsIHsgIi4uIiwgInN1YmZvbGRlciIgfSkpLnV0ZjgoKS5kYXRhKCks
IHJlc29sdmVkU3ViRm9sZGVyUGF0aC51dGY4KCkuZGF0YSgpKTsgLy8gU2hvdWxkIHJlc29sdmUg
Ii4uIi4KLSAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRoLCB7ICIuLiIsICIuIiwgIi4i
LCAic3ViZm9sZGVyIiB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJGb2xkZXJQYXRoLnV0
ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFuZCAiLiIKKyAgICBFWFBFQ1Rf
U1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHN1YkZvbGRlclBhdGgsICIuLiJfcykpLnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkVGVt
cEVtcHR5Rm9sZGVyUGF0aC51dGY4KCkuZGF0YSgpKTsgLy8gU2hvdWxkIHJlc29sdmUgIi4uIi4K
KyAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhzdWJGb2xkZXJQYXRoLCB7ICIuLiJfcywgInN1YmZvbGRlciJf
cyB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJGb2xkZXJQYXRoLnV0ZjgoKS5kYXRhKCkp
OyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iLgorICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpy
ZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHN1YkZvbGRlclBh
dGgsIHsgIi4uIl9zLCAiLiJfcywgIi4iX3MsICJzdWJmb2xkZXIiX3MgfSkpLnV0ZjgoKS5kYXRh
KCksIHJlc29sdmVkU3ViRm9sZGVyUGF0aC51dGY4KCkuZGF0YSgpKTsgLy8gU2hvdWxkIHJlc29s
dmUgIi4uIiBhbmQgIi4iCiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcmVhZEVudGlyZUZp
bGUpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoZW1wdHlTdHJpbmcoKSkpOwotICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKSkpOworICAg
IEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhp
c3QiX3MpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHRl
bXBFbXB0eUZpbGVQYXRoKCkpKTsKIAogICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVh
ZEVudGlyZUZpbGUodGVtcEZpbGVQYXRoKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMjNmNjYxY2YxNmFjMGMzZDdmZmU5
YTFjMGVlYmZlY2M3OTE5MGM2OS4uOWUyMGEzNDFkNWIxYzhlZDQ3ZWE0YmM2ZTJmNDIyODUyN2Vh
MTgwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8v
IGNyZWF0ZSB0ZW1wIGZpbGUKICAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIl9zLCBoYW5kbGUp
OwogICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKICAgICAgICAgCiAgICAgICAgIGludCByYyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxlTW9u
aXRvclRlc3REYXRhLmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAKaW5kZXggZWYxNjAxOTY0YmZjZjg1Y2YzMDk0ZDlk
NWYwZmU1ZjViNjRmOWZlOS4uNzMyOGMzZjE1YWNhNDZhMDM5YjE1ZjJlMTE1ODZmZjkzYzgwZjRh
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRh
YmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRh
YmFzZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogc3Rh
dGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCkKIHsKICAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKKyAgICBh
dXRvIHBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiUHVzaERhdGFiYXNlIl9z
LCBoYW5kbGUsICIuZGIiX3MpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwog
ICAgIHJldHVybiBwYXRoOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNGMxZGRhMzdjYTZlNzM0NjViODdiNmUz
YjViNzI1OTFlZGFjZGY4Ni4uMTgwMjgyODMwMDcyNjkwNThmZjRkODcxOTZhN2ViNWU0MDQyODlj
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uY3BwCkBAIC00MiwxNiArNDIsMTYgQEAgcHVibGljOgogCiAgICAgICAgIC8vIGNy
ZWF0ZSB0ZW1wIGZpbGUKICAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIl9zLCBoYW5kbGUpOwog
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgCi0gICAgICAg
IG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBtX3NwYWNlQ29udGFp
bmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkg
VGVzdCBGaWxlIl9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7
CisgICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSJfcywgaGFuZGxlKTsKICAgICAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBtX3F1b3RlQ29u
dGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVt
cHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxl
Il9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXJUZXN0LmNwcAppbmRleCBkMDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVh
YjhmYmI2Li4yZTExZWYzN2JjODU0NDRlNDNlOGIzMTc4MmJkODYzZDBkMmZhZWY5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuY3BwCkBAIC0zNywxMSArMzcsMTEgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dDo6U2V0VXAoKQogCiAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQogICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICBtX3RlbXBG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiX3Ms
IGhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCB0ZXN0RGF0YSgp
LCBzdHJsZW4odGVzdERhdGEoKSkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogCi0gICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgbV90ZW1wRW1wdHlGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSJfcywg
aGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJh
Y2tlclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0
YWJhc2VUcmFja2VyVGVzdC5tbQppbmRleCAwOTA1YzdlMDAxOGVkNDhiZTcwNDhlNDEyMDEwZTY0
NzA5MmVjZDkyLi40ZWQ2ZGNkZTg5ZmRmYWY5ZmEyMzA3NGFiMGQwOTJiNGViYzA4ZGU3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VU
cmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VGaWxlSWZF
bXB0eSkKIHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAg
IFN0cmluZyBkYXRhYmFzZUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXBFbXB0eURhdGFiYXNlIiwgaGFuZGxlKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlEYXRhYmFzZSJfcywg
aGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGF1dG8g
ZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRoKS52YWx1ZV9v
cigwKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3Jp
Z2luKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAg
ICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUo
KSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAg
IFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIl9zKTsKICAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5n
IHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKQEAgLTE1MSw3ICsxNTEsNyBAQCBU
RVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0
KQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBF
WFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7
CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIFN0
cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIl9zKTsKICAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdl
YkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKQEAgLTE4Niw3ICsxODYsNyBAQCBURVNU
KERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMp
CiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVY
UEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsK
IAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgU3Ry
aW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChk
YXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiX3MpOwogICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2Vi
RGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwpAQCAtMjQyLDcgKzI0Miw3IEBAIFRFU1Qo
RGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNU
YWJsZSkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAg
ICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXpl
KCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAg
ICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiJfcyk7CiAgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIEVYUEVD
VF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7
CkBAIC0yNTEsNyArMjUxLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldp
dGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxlKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKLSAgICBTdHJpbmcgd2ViRGF0YWJh
c2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgs
ICJkYXRhYmFzZS5kYiIpOworICAgIFN0cmluZyB3ZWJEYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgImRhdGFiYXNlLmRiIl9zKTsK
ICAgICBjcmVhdGVGaWxlQXRQYXRoKHdlYkRhdGFiYXNlUGF0aCk7CiAKICAgICBFWFBFQ1RfVFJV
RShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pKTsKQEAgLTI4MCw3ICsyODAs
NyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2UpCiAgICAgZGF0YWJhc2VU
cmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWdu
ZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9y
eVBhdGgsICJEYXRhYmFzZXMuZGIiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0g
ImRhdGFiYXNlX25hbWUiOwpAQCAtMzIyLDcgKzMyMiw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2Vy
LCBEZWxldGVEYXRhYmFzZVdoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBkYXRhYmFzZVRy
YWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25l
ZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRh
dGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgIkRhdGFiYXNlcy5kYiJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAi
ZGF0YWJhc2VfbmFtZSI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDdhM2VjYTU1NTgyZWVmODE1MjY2YTQ0YWQ2YzVlZTI1
MzY2Yjc1ZWUuLjBkMGIwMDdmNjRlZGU1YzQzZDNhZGRiMGIzODcyN2UyYTgzN2MzZjAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fY29va2llRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CiAKLSAgICAgICAg
bV9jb29raWVKYXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJjb29raWVkYi5z
cWwiKSk7CisgICAgICAgIG1fY29va2llSmFyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpDb29raWVK
YXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0
b3J5LCAiY29va2llZGIuc3FsIl9zKSk7CiAgICAgICAgIG1fY29va2llSmFyLT5vcGVuKCk7CiAg
ICAgICAgIG1fY29va2llSmFyLT5zZXRBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5OjpB
bHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0Nvb2tpZVN0b3JhZ2VGaWxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0Nvb2tpZVN0b3JhZ2VGaWxlLmNwcAppbmRleCBjMzZjNjU0N2Y5NGU5MWM2ZDcyNGEyMGJm
OGJlNzhhYjQyNDdiM2Q1Li40YjA2ZThkNTgwYWJkZjM5Y2M2MWUwYmE1NWNhZTkzMGRhMzI4Mjk1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVTdG9y
YWdlRmlsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2ll
U3RvcmFnZUZpbGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaE5h
dmlnYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmIHVzZXJE
CiBURVNUX0YoQ29va2llU3RvcmFnZUZpbGUsIEN1c3RvbVBhdGgpCiB7CiAgICAgYm9vbCBkaWRG
aW5pc2hMb2FkOwotICAgIGF1dG8gY29va2llU3RvcmFnZUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9jb29raWVTdG9yYWdlRGlyZWN0b3J5LCAiY29va2llLmph
ci5kYiIpOworICAgIGF1dG8gY29va2llU3RvcmFnZUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9jb29raWVTdG9yYWdlRGlyZWN0b3J5LCAiY29va2llLmphci5k
YiJfcyk7CiAKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhD
b25maWd1cmF0aW9uKG51bGxwdHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggYWNiN2U0MWJiNjRiZjNmNjk3ZGM4YmE5
MTM5YjE5ZjgyYzQwYzlhOC4uMjhmZGExY2NmNDg3NWUzYTcyMzUyZThhMzY2NzAzZTkzYzZmYTk1
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIEVYUEVD
VF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0
aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQ
SSJfcywgZmlsZUhhbmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5E
CiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCiAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJU
ZXN0V2ViS2l0QVBJIl9zLCBmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIC0gKE5TU3Ry
aW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpCiBJR05PUkVfV0FSTklOR1NfRU5ECiB7CiAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJU
ZXN0V2ViS2l0QVBJIl9zLCBmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CkBA
IC02NTAsNyArNjUwLDcgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUKICAgICBFWFBFQ1RfVFJV
RShbZmlsZW5hbWUgaGFzU3VmZml4OkAiLnVzZHoiXSk7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoZmlsZW5hbWUsIGZpbGVIYW5kbGUpOworICAgIF9kZXN0
aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmcgeyBmaWxl
bmFtZSB9LCBmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShmaWxlSGFuZGxlKTsKIApAQCAtMTA3NCw3ICsxMDc0LDcgQEAgQGltcGxlbWVudGF0aW9u
IERvd25sb2FkQ2FuY2VsaW5nRGVsZWdhdGUKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0
cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGFsbG93T3Zl
cndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX3BhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUp
OworICAgIF9wYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRB
UEkiX3MsIGZpbGVIYW5kbGUpOwogICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGVIYW5kbGUpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgX3BhdGguZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZFByb2dyZXNzLm1tCmluZGV4IDFjOTI1NjY0YzBlNTcxNTZjZjM5OGUzNmFiMmRiYmRl
MzhkNWVkNmIuLmRlY2NmMzM3ZGY5YTU2MWFlYjQyMTc0YjBkMjFlYjgyOTUxYmNmZmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9n
cmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkUHJvZ3Jlc3MubW0KQEAgLTM3OSw3ICszNzksNyBAQCAtICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZQogICAgIEVYUEVDVF9FUShkb3dubG9hZCwgbV9kb3dubG9hZC5nZXQoKSk7CiAKICAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IHBhdGggPSAoTlNTdHJpbmcgKilGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
VGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGF0
aCA9IChOU1N0cmluZyAqKUZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0
QVBJIl9zLCBmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCRmlsZU5hbWUubW0KaW5kZXggZGI2MzM5NjRmNjJh
YWYwODY1MzczY2NlYjNiNThlMmEwMDcxYTIwMi4uMzJkOTEwYTQ2ODlhY2UzY2Q0YjZhMWRiNGNi
ODg1Zjg1YTFkMTAzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJGaWxlTmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1lLm1tCkBAIC04Myw5ICs4Myw5IEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3QoKQogICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGFiYXNlTmFtZSA9
IEAiSW5kZXhlZERCVGVzdCI7CiAgICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZU5hbWUgPSBA
IkluZGV4ZWREQk90aGVyIjsKICAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VOYW1lID0gQCJJ
bmRleGVkREJVbnVzZWQiOwotICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0Rh
dGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3Jl
OjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFz
ZU5hbWUpOwotICAgIE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxp
dGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUp
OworICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNl
TmFtZSB9KTsKKyAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNR
TGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERh
dGFiYXNlTmFtZSB9KTsKKyAgICBOU1N0cmluZyAqdW51c2VkRGF0YWJhc2VIYXNoID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVh
dGVkRGF0YWJhc2VOYW1lIH0pOwogICAgIE5TVVJMICppZGJSb290VVJMID0gW3dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07CiAg
ICAgTlNVUkwgKm9sZFZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJ2MCJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uRGlyZWN0b3J5
VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidjEiXTsKQEAg
LTEyNyw4ICsxMjcsOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcmllcyhTdHJpbmcgdGVz
dE5hbWUpCiAgICAgaWYgKHRlc3ROYW1lID09ICJub25lIikKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIE5TU3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmls
ZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShleGlzdGluZ0RhdGFiYXNlTmFtZSk7Ci0g
ICAgTlNTdHJpbmcgKmNyZWF0ZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lz
dGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNyZWF0ZWREYXRhYmFzZU5hbWUpOworICAgIE5T
U3RyaW5nICpleGlzdGluZ0RhdGJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBleGlzdGluZ0RhdGFiYXNlTmFtZSB9KTsK
KyAgICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVT
eXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoU3RyaW5nIHsgY3JlYXRlZERhdGFiYXNlTmFt
ZSB9KTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwIl07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25E
aXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2
MSJdOwogICAgIE5TVVJMICpuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5VVJMID0gW25ld1ZlcnNp
b25EaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiBAImZpbGVfXzAiXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggMjFjYjc0NDc4Zjk2
OTNkNDRhZjlhN2E5NmYzZjQ1ZTI2YzE1N2RhOS4uOTEyZDRhZjUwOTFhYjM1ZjgwNDY1YWQ1YTAz
Y2RhMzZkODU5MTJiOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0K
QEAgLTg3NCw3ICs4NzQsNyBAQCBURVNUKFdlYktpdCwgTWlncmF0ZUluZGV4ZWREQkRhdGFUb0dl
bmVyYWxTdG9yYWdlRGlyZWN0b3J5KQogewogICAgIE5TVVJMICppbmRleGVkREJEaXJlY3Rvcnkg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWREQiIgc3RyaW5nQnlF
eHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBOU1VSTCAqaW5kZXhl
ZERCT3JpZ2luRGlyZWN0b3J5ID0gW2luZGV4ZWREQkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJ2MS9odHRwc193ZWJraXQub3JnXzAiXTsKLSAgICBOU1N0cmluZyAqaW5k
ZXhlZERCRGF0YWJhc2VOYW1lID0gQCJUZXN0RGF0YWJhc2UiOworICAgIHN0YXRpYyBjb25zdCBj
aGFyIGluZGV4ZWREQkRhdGFiYXNlTmFtZVtdID0gIlRlc3REYXRhYmFzZSI7CiAgICAgTlNTdHJp
bmcgKmhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0
ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoaW5kZXhlZERCRGF0YWJhc2VOYW1lKTsKICAgICBO
U1VSTCAqaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBbaW5kZXhlZERCT3JpZ2luRGlyZWN0
b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpoYXNoZWRJbmRleGVkREJEYXRhYmFzZU5h
bWVdOwogICAgIE5TVVJMICppbmRleGVkREJGaWxlID0gW2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5k
ZXggZGU5ZDgzNjU3M2YwZWEyMTFkMWRmMjJiODAzMTViNjhlNDU4YWRlNy4uMWQxZDlmYjhhN2U4
N2EwMDJiYTNlYzVkYjg2ZTEyNzA3YmMzYzdhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMg
U3RyaW5nIG1vZHVsZURpcmVjdG9yeSgpCiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVu
ZGxlUGF0aCgpCiB7Ci0gICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCAiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxl
LmRsbCIpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtb2R1bGVEaXJlY3RvcnkoKSwgIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwi
X3MpOwogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXRoLnV0Zjgo
KS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456305</attachid>
            <date>2022-03-31 18:50:25 -0700</date>
            <delta_ts>2022-03-31 19:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238525-20220331185024.patch</filename>
            <type>text/plain</type>
            <size>315318</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwOTI5OWFiNTZlZDhmNDhjMjdlZDQ0
NjkxODQyZTRhNDAzMDExYWEuLjMxMzg4MTYzNzM4ZjM5Zjk5OTE4YjdkZjIxYjA0NTk0OGIyMmFk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktpdC8gJiBXZWJLaXRMZWdhY3kvIGZv
ciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0
ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1w
b3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAg
ICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAg
KiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1w
bDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIyLTAzLTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVYUEVSSU1FTlRBTF9G
RUFUVVJFUyBmbGFnIHVzZSBvbiBDb2NvYSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhODdmZjBm
NjkwMjUxMTE4NWE1NmVmZGE2NjVlMjViY2RhNWUxZWViLi42YTJlY2IzYmI5MzFlZWNlYjIzNzdk
NjkzMGFjYzMzMmE5NjRmYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDMt
MjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdl
YktpdC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29y
ZHNUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEJsb2JUYWJsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNv
cmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
UmVjb3JkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJbmZvVGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0Rh
dGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21GaWxlKToKKyAgICAgICAgKiBNb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpw
ZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyRGF0YWJhc2VQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6ZHVtcEhlYXApOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4pOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZEJvb2xlYW4pOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZh
Y3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWls
ZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbmRl
eFNRTCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaDoKKwogMjAyMi0wMy0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoQVNDSUlMaXRlcmFsKSBtb3JlIGJyb2FkbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTljNmZjZmNk
Y2NhZjhkZjEzZDYxYWQ3YzRkMzg1Mjc5YWUwODI2ZS4uZGE3MTlkYWQ4NDM2NWZkMjQ4MmQxNGZj
ZTg5YzllODY1OTJhNjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNDcgQEAKKzIwMjItMDMtMjkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIFdlYktp
dC8gJiBXZWJLaXRMZWdhY3kvIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29u
c3RydWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0
aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YXBwZW5kQm9v
bGVhbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlz
dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Zv
ckRPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
bG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bG9nQ29va2ll
SW5mb3JtYXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNv
bHVtbnNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmNvbHVt
bnNGb3JUYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmFkZE1pc3NpbmdD
b2x1bW5Ub1RhYmxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRp
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpkYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkJsb2JTdG9yYWdlOjpnZXQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6Om1hcEZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW06CisgICAgICAgIChXZWJLaXQ6OkxhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVT
dG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0pTSVBDQmluZGluZy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZSk6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAgICogU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdGZWF0dXJl
cy5jcHAuZXJiOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbToKKyAgICAgICAgKGVuY29kZU9iamVjdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2Nv
YS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKHJlcGx5Qmxv
Y2tTaWduYXR1cmUpOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfaW52b2tl
TWV0aG9kOl0pOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgpOgor
ICAgICAgICAoV2ViS2l0OjpyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2Fu
ZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OnJlc29sdmVQYXRoRm9yU2FuZGJveEV4
dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4pOgor
ICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFs
aXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6WFBD
U2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudEJ1bmRsZUlkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50
UHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAqIFNoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWVzc2FnZVRlc3REcml2ZXIpOgorICAgICAgICAqIFNo
YXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmV4
dGVuc2lvbkVycm9yVG9TdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OnN0
cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgpOgorICAgICAgICAoV2ViS2l0OjpyZXNvbHZl
UGF0aEZvclNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpyZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzYW5kYm94
RGF0YVZhdWx0UGFyZW50RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6Z2V0VXNlckRpcmVj
dG9yeVN1ZmZpeCk6CisgICAgICAgIChXZWJLaXQ6OnBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6
CisgICAgICAgIChBUEk6Om9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcDoKKyAgICAgICAgKFdLRG93bmxvYWRTZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlR2V0U2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOgorICAgICAgICAoV0tQYWdlR2V0
U2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW1WYWx1ZVR5cGUpOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlKToKKyAgICAgICAgKFdLUHJlZmVyZW5j
ZXNDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpDb250ZW50UnVs
ZUxpc3RTdG9yZTo6ZGVmYXVsdFN0b3JlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxl
TGlzdFN0b3JlIHN0b3JlV2l0aFVSTDpdKToKKyAgICAgICAgKCtbV0tDb250ZW50UnVsZUxpc3RT
dG9yZSBzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMg
aW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb246OmxvYWRSZXF1ZXN0VG9GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW06CisgICAgICAgIChXZWJLaXQ6OldlYktpdFN3
aWZ0TGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQ
YXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgX3dr
Q2hhbmdlVGV4dFN0eWxlOl0pOgorICAgICAgICAoLVtXS1RleHRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIF93a0NoYW5nZVRleHRBbGlnbm1lbnQ6XSk6CisgICAgICAgICgtW1dLVGV4dFRvdWNoQmFy
SXRlbUNvbnRyb2xsZXIgX3drQ2hhbmdlQ29sb3I6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRTZWN1cml0eU9yaWdpbkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNv
ZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNy
ZWF0ZUVuY29kZXJGcm9tRGF0YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVy
L2NvY29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6WFBDRXZlbnRIYW5kbGVyOjpoYW5kbGVYUENFdmVudCBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Vmll
d0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZXNldCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tl
cjo6c3RvcFdhaXRpbmdGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZXZlbnRPY2N1cnJlZCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6
Y2FuY2VsT3V0c3RhbmRpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZmlyZVJlbW92YWxDYWxsYmFja0lmUG9z
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpzdG9wV2FpdGluZ0ZvckV2ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0
dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW06CisgICAgICAgIChXZWJLaXQ6OmJhc2U2
NFByaXZhdGVLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0
dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbEhp
ZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlR3JvdXA6OldlYlBhZ2VHcm91cCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRp
bWVNZWRpYVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0ZURh
dGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBbHRlcm5hdGl2ZVNlcnZpY2VzRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Zm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAg
ICAgICAgKFdLQnVuZGxlUGFnZVNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tl
dENoYW5uZWw6OmluY3JlYXNlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRT
dHJlYW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cmVjZWl2
ZWROb25MaW5lYXJpemVkUERGU2VudGluZWwpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OnRocmVhZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjphZG9wdEJhY2tncm91
bmRUaHJlYWREb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGx1Z2luSW5m
byk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6
Y3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
bG9hZFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjppc1NhbWVFbnRy
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0
RmlsZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Z2V0RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2VT
eW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWspOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6Y2hhbmdlV29yZENhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNNZXNzYWdl
TGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rlcik6CisgICAgICAgIChJUEM6OmpzVmFs
dWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmxheWVyVHJlZUFzVGV4
dCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNpZW50Wm9vbVNuYXBB
bmltYXRpb25Gb3JLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICog
d2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpBcHBCdW5k
bGVEZWxldGlvblJlcXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKToKKyAg
ICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENv
bm5lY3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xp
ZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVzc2FnZSk6CisgICAgICAgICogd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5oOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAg
ICAgIChXZWJQdXNoRDo6RGFlbW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UpOgorICAgICAgICAo
V2ViUHVzaEQ6OkRhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbik6
CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlB1c2hEYWVtb25NYWluKToKKwogMjAyMi0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IElkZW50aWZpZXI6OmZyb21TdHJpbmcoQVND
SUlMaXRlcmFsKSBtb3JlIGJyb2FkbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYzkwYmZiM2Q3
MDQ1N2IzNGE3ZTg1ODRlYzc3OTQ3ZGVmOTNjYjMyYy4uNjUzMTM3M2UzMzU2YmYzMzAyY2RhNjk5
Zjc0NGVjNDYyNzRiODliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBy
ZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0
IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIpOgorCiAyMDIyLTAzLTMxICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI5MjE4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggMDA2NzM2NzA5
YTJjMTJhMjYwOTg4N2M5ZDc3ODQyYzM0MDQ1Y2UyNi4uMTNkZDYzM2RkMjg0NWQxZDkwM2Q5Njdi
ZmI4ZDQ1ZjQ0N2JjMTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5n
KGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3RvckF0dGFj
aERpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yU3Rh
cnRzQXR0YWNoZWQpOgorCiAyMDIxLTA4LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFt
aWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGU3MDE1M2EzMzhkZmNiYTg0YTdlMzhmMWQ2NTVmZDU1N2JjZjM5NzMu
LjkxZGVmN2M4YjVkMmI2MzBiMGYzNDY2MGRiMzAwNzZlOTc0MmFkZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMy0yOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdlYktpdExl
Z2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBleHBs
aWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBIaXN0
b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAgICAgIChIaXN0b3J5UHJvcGVydHlMaXN0
V3JpdGVyOjp3cml0ZU9iamVjdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGUubW06CisgICAgICAgICh3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTZWxlY3RvckV4
Y2VwdGlvbk1hcCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcmVDb21tYW5kQnlOYW1lOl0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91
dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0UHJpbnRpbmc6bWluaW11
bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0aDpvcmlnaW5h
bFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdFZpZXdTaXplOnBhZ2luYXRlU2Ny
ZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2RlY29kZURh
dGE6XSk6CisKIDIwMjItMDMtMzEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkyMTgzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjMzY2Y5M2EwYjY2YmU2NzA2ZDQx
MjAxNzFlMjY2NDkyMTU5ZDM0Ny4uNzRlNzRjYTE0Mzg4YTliNjRiZGQwOTkwYWRkZTQ4OWE1ODgw
MDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OSw2
ICs1OSw3IEBACiAJCTMzN0IyRDZBMjY1NDZFQjMwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVuc2ln
bmVkSW50ZWdlclNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzdCMkQ2ODI2NTQ2RUFBMDBEREZEM0QgLyogTGlrZWx5RGVuc2VVbnNpZ25lZElu
dGVnZXJTZXQuY3BwICovOyB9OwogCQkzMzlCN0IxMTI3QzQ1RUY1MDA3MkJGOUEgLyogRml4ZWRX
aWR0aERvdWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzM0NzlDMUMyNzIzNkYyMDAwQjJFMUI3IC8qIEZpeGVkV2lkdGhEb3VibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDI3QzVBQTIxRjZE
NkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NDI3QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlw
ZS5jcHAgKi87IH07CisJCTQ2NTU3NDM2MjdGNUZDNEEwMDJENTUyMiAvKiBBU0NJSUxpdGVyYWxD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NTU3NDM1MjdGNUZDNEEwMDJENTUyMiAvKiBBU0NJSUxpdGVyYWxDb2NvYS5tbSAqLzsgfTsKIAkJ
NDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3
IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9OwogCQk0NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyog
U2FmZVN0cmVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RTQzNjQ3MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovOyB9
OwogCQk1MERFMzVGNTIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwREUzNUYzMjE1
QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwICovOyB9OwpAQCAtMTA3NCw2
ICsxMDc1LDcgQEAKIAkJNDQ2ODU2NzIyNTA5NEZFODAwOENDQTA1IC8qIFRocmVhZFNhbml0aXpl
clN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkU2FuaXRp
emVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NENERTREMjI2RUU2
Q0RBMDA5RjZBQ0IgLyogVHlwZUNhc3RzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHlwZUNhc3RzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxhYmxlVGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYW5jZWxsYWJsZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1
NTc0MzUyN0Y1RkM0QTAwMkQ1NTIyIC8qIEFTQ0lJTGl0ZXJhbENvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVNDSUlMaXRlcmFsQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkE5RUFCMUY0Q0Q2MUUwMDlBMkJCQyAvKiBDb21w
bGV0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV0
aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFOTIyRkZE
REQ1MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3Vu
dGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFNDM2NDYyNzFGMTBBQTAw
Qzg4QzkwIC8qIFNhZmVTdHJlcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlU3RyZXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDMsNiArMTg0NSw3IEBACiAJCUE1QkEx
NUYxMTgyNDMzOUYwMEE4MkU2OSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJNDY1NTc0MzUyN0Y1RkM0QTAwMkQ1NTIyIC8qIEFTQ0lJTGl0
ZXJhbENvY29hLm1tICovLAogCQkJCUE1QkExNUYyMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdD
b2NvYS5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbENv
Y29hLm1tICovLAogCQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q29j
b2EubW0gKi8sCkBAIC0zNTM2LDYgKzM1MzksNyBAQAogCQkJCUUzN0U5NjU0MjcwMkFEMEIwMEUx
QzM2QSAvKiBBcHByb3hpbWF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQyN0M1QUEy
MUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzgw
NUVGMzlFNUYxNDQ4MUE5NkQzOUZDIC8qIEFTQ0lJTGl0ZXJhbC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0NjU1NzQzNjI3RjVGQzRBMDAyRDU1MjIgLyogQVNDSUlMaXRlcmFsQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbVN0
cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEVDQTYwRDFCMDI0MjY4MDA0NDk3MzkgLyog
QXRvbVN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNTUyLDcgKzM1NTYsNiBAQAog
CQkJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQUMxNTFBODI1QjAwNDEyM0ZGIC8qIGNhY2hlZC1wb3dl
cnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUzNUQwOTIyN0RDNUVDQzAwOURGQTVC
IC8qIFN0YWNrQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEExREM5N0JBQjAw
NEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4
MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDYzMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTM2NTcsNiArMzY2MCw3IEBACiAJCQkJQThBNDc0MjUxNTFBODI1QjAwNDEyM0ZGIC8qIFNp
emVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOTMyMENDNzNBMzAwQTAzRENE
IC8qIFNtYWxsU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDI3MTUxQTgyNUIwMDQx
MjNGRiAvKiBTdGFja0JvdW5kcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTM1RDA5MjI3REM1
RUNDMDA5REZBNUIgLyogU3RhY2tDaGVjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUVBNERG
OTIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMzMzdEQjlDRTc0MzQxMEZBRjA3NkUxNyAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDZmNjY1ZDA4M2Y3NTgyNzFlMThmMzg4ZTdiNGYz
NWYwY2Q4ODQ5MDguLjIxMTgzYWE3ZWIyZjY3ZTk0N2M0OGM1ZDkxNzMyMDVhODYxY2ZhYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhh
bgogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFk
RW50aXJlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUg
ZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwor
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgU3RyaW5nVmlldyBzdWZmaXggPSB7IH0pOwogV1RG
X0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxlQWNjZXNzUGVy
bWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAvLyBSZXR1cm5z
IHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBz
dWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDY2
ODg0ZmZmNzlmOTJjOGYyMTFjNzdmYTVlY2RhZDAzYzc2MWI4ODkuLmFmOTQ3MWEwYzM4NGI2MTA3
MmExMmFmOThmMWFhNzRiNjY0ZWJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC05
NSw2ICs5NSw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgdGV4dC9jZi9TdHJpbmdJ
bXBsQ0YuY3BwCiAgICAgdGV4dC9jZi9TdHJpbmdWaWV3Q0YuY3BwCiAKKyAgICB0ZXh0L2NvY29h
L0FTQ0lJTGl0ZXJhbENvY29hLm1tCiAgICAgdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQogICAg
IHRleHQvY29jb2EvU3RyaW5nSW1wbENvY29hLm1tCiAgICAgdGV4dC9jb2NvYS9TdHJpbmdWaWV3
Q29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCmluZGV4IDAyYjA3ZTVhMmVjMDkyZDc2ZjFjNjhmOTM5ODZmOWUzZTAxNTBm
MmMuLmZhMTlhNjgyMjE0OTA5YzE5ZGEzN2RlOGU5M2M4OWRkNjZmZjQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAt
MzQwLDI1ICszNDAsNiBAQCBib29sIFVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3QK
ICAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW5GVFBGYW1pbHkoc3RyaW5nKCkpOwogfQogCi1i
b29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBh
c3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IFVSTHMg
YXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRo
ZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFT
Y3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQoIWVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIpKTsK
LQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBE
byB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlm
ICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0s
IHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVkIGFs
bCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQogYm9vbCBVUkw6OnByb3RvY29sSXMo
U3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKIHsKICAgICBhc3NlcnRQcm90b2NvbElzR29vZChw
cm90b2NvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5oCmluZGV4IGI4NzBmMjMxNWFmNzQxYzMyOWU4ZWYyN2U5MjdiZTkzODQzMWM0OWMu
LjY2MTFjZmZkYzFhZDVkN2IzMTBmYTEyOGRkZTYxODE5YmUwN2QxYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0xMzcsNyAr
MTM3LDYgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVS
TCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQogICAgIC8vIHRlcm1pbmF0ZWQg
QVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKICAg
ICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIp
OyB9CiAgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMo
ImRhdGEiKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmggYi9T
b3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAppbmRleCAzMjY5YzU2MWQxNTU2ZGNkYWI4Y2U0
MGU0MmEyMzljM2Y1YWY0N2YzLi4wMTY3N2I2MzllNzdmNjNmMDgxMjJiZTU0OTYxMDI2ZDA2YjJk
YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaApAQCAtNzQsNiArNzQsMTIgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+
IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0IFZl
Y3RvclRyYWl0czxBdG9tU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIAor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxBU0NJSUxpdGVyYWw+IDogVmVjdG9y
VHJhaXRzQmFzZTxmYWxzZSwgdm9pZD4geworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKKyAgICB9OworCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KICAgICBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPj4KICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9G
aWxlU3lzdGVtQ29jb2EubW0KaW5kZXggZWU0ZjQwMGQ3M2U4ZjkxNGIxMzQ0NDM0MWQ4NmJkNTEy
MzJiMDViZS4uYzVkYjBmOWU5ZTQxYmFjZTNhOTE4MTA5ZWUwZjBjZWQyOWEwOWIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtODksNyArODksNyBAQCBTdHJp
bmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0
dXJuIHRlbXBvcmFyeUZpbGU7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNv
bnN0IFN0cmluZyYgc3VmZml4KQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSwgU3RyaW5nVmll
dyBzdWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xp
Yi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCBjZDE5
NDc3YWM1MWE1NGIwNDkwMWVlYWYzN2ZkZjBjZWJhMzhhZTc0Li42ZTBlNDc2NzIyNjY0NGE5NjIz
YjJiYzYzMWFhNTA5MTAxZTU4ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1T
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIFN0
cmluZ1ZpZXcgc3VmZml4KQogewogICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRl
ZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1v
bmx5LgogICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDQyNzZmNzdlMjE4ZDFmNGFi
MWVmZTVlMjgxMzBiOTA1NTBjYzZiNDUuLjdmOWU4ZmMzZDBmYzNlM2M2ODc0Y2U2NzI4ZTM2ZWQy
NGM4MGYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAt
MjE1LDcgKzIxNSw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCkKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoU3Ry
aW5nVmlldyBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBTdHJpbmdWaWV3IHN1
ZmZpeCkKIHsKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBPSyBm
b3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQtb25seS4KICAgICBB
U1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJ
SUxpdGVyYWwuaAppbmRleCA1YzIzN2YzMDllMWI4MGNlYWEyYTNjMmFjMmE4YzRkYWE3MmU2MzFk
Li5kNWI0ZmE0NDMyZjRkNDQ2ZTMxZmQ2YTAwNGQ5YjE2OWZmNjgxMTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQVNDSUlMaXRlcmFsLmgKQEAgLTU3LDEyICs1NywyNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dGV4cHIgY2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzW2luZGV4XTsgfQogCisjaWZkZWYgX19PQkpDX18KKyAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNvbnZlcnQgbnVsbCBzdHJpbmdzIHRvIGVtcHR5IHN0cmluZ3MuCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFJldGFpblB0cjxOU1N0cmluZz4gY3JlYXRlTlNTdHJpbmcoKSBjb25zdDsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIGNvbnN0ZXhwciBleHBsaWNpdCBBU0NJSUxpdGVyYWwoY29u
c3QgY2hhciogY2hhcmFjdGVycykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9CiAKICAg
ICBjb25zdCBjaGFyKiBtX2NoYXJhY3RlcnM7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBjaGFyKiBiKQoreworICAgIHJldHVybiBiICYmICFzdHJj
bXAoYS5jaGFyYWN0ZXJzKCksIGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJ
TGl0ZXJhbCBhLCBBU0NJSUxpdGVyYWwgYikKK3sKKyAgICByZXR1cm4gIXN0cmNtcChhLmNoYXJh
Y3RlcnMoKSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xp
dGVyYWxzIHsKIAogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBvcGVyYXRvciIiIF9zKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKaW5kZXggMzZkMGE0NjBm
Mjk1NTQ4MmNlNGY0NjljMzUzNjNlMGQ5OTQ1NjUxNS4uMWI1MDYyZmI5M2NlYTMwN2UwMDQ5MGEz
NTBiNjg3YjE3YWExNmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCkBAIC0xMDUsNiArMTA1LDcgQEAg
U3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJpbmcmKTsKIFN0cmluZyBi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogCiBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcpOworaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoQVNDSUlM
aXRlcmFsIGxpdGVyYWwpIHsgcmV0dXJuIGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3IHsgbGl0
ZXJhbCB9KTsgfQogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShjb25zdCBTdHJpbmcmKTsKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90Pik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCmluZGV4IGE3NTMzMTM1NTMyYjUyYzRmMmFkYzUwZTNlYWI3MTZhZTczYjdj
ZjcuLmRmZjRjZTU4YjQ0N2Q2YzE3Y2RhY2ExMzlmOWVjYjY4NTVkYjc2YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmdWaWV3
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IGNo
YXIqKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IGV4cGxpY2l0IFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsKTsKKyAgICBTdHJpbmdWaWV3KEFTQ0lJ
TGl0ZXJhbCk7CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0yMjAsNiAr
MjIwLDcgQEAgYm9vbCBlcXVhbChTdHJpbmdWaWV3LCBjb25zdCBMQ2hhciogYik7CiAKIGJvb2wg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsKIGJvb2wgZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25zdCBjaGFyKik7Citib29sIGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgQVNDSUlMaXRlcmFsKTsKIAogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZXF1YWxSZXNwZWN0aW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJpbmdW
aWV3KTsKIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7
CkBAIC0yMzEsMTIgKzIzMiwxNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFN0cmluZ1ZpZXcg
YSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiBlcXVhbChhLCBiKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShTdHJpbmdWaWV3IGEsIGNvbnN0IExDaGFyICpiKTsKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oU3RyaW5nVmlldyBhLCBjb25zdCBjaGFyICpiKSB7IHJldHVybiBlcXVhbChhLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGNoYXIqIGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KK2lu
bGluZSBib29sIG9wZXJhdG9yPT0oU3RyaW5nVmlldyBhLCBBU0NJSUxpdGVyYWwgYikgeyByZXR1
cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIuY2hhcmFjdGVycygp
KSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsIGEsIFN0cmluZ1ZpZXcg
YikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTdHJp
bmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuICFl
cXVhbChhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTdHJpbmdWaWV3IGEsIGNvbnN0
IGNoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBMQ2hhciphLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChiLCBhKTsgfQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKmEsIFN0cmluZ1ZpZXcgYikgeyByZXR1
cm4gIWVxdWFsKGIsIGEpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcgYSwg
QVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmNoYXJhY3RlcnMoKSk7IH0KK2lu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTENoYXIqIGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1
cm4gIWVxdWFsKGIsIGEpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEs
IFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gIWVxdWFsKGIsIGEpOyB9CitpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KEFTQ0lJTGl0ZXJhbCBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChiLCBh
KTsgfQogCiBzdHJ1Y3QgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nOwogCkBAIC03MDEs
NiArNzA2LDExIEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyBhLCBjb25zdCBjaGFyKiBiKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29t
bW9uKGEsIGIpOwogfQogCitpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcgYSwgQVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2VDb21tb24oYSwgYi5jaGFyYWN0ZXJzKCkpOworfQorCiBjbGFzcyBTdHJpbmdWaWV3OjpT
cGxpdFJlc3VsdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL0FTQ0lJTGl0ZXJhbENvY29hLm1tIGIv
U291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9BU0NJSUxpdGVyYWxDb2NvYS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNmU0YmQ2MDc0OWNmOGJmMzM1NzQ0NWE0NzgwYWMwZjk1YWM3ODdkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9BU0NJSUxpdGVyYWxDb2NvYS5tbQpAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaD4KKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworUmV0YWluUHRyPE5TU3RyaW5nPiBBU0NJSUxpdGVyYWw6OmNyZWF0
ZU5TU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8TENoYXIqPihjaGFyYWN0ZXJzOCgpKSBs
ZW5ndGg6bGVuZ3RoKCkgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZyBmcmVlV2hl
bkRvbmU6Tk9dKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKaW5kZXggYjJjOTZlMGM3YjdlYTEwYjhlYTJkODAzNGYwZTA3MmU1NWQxODBj
NC4uMjhkMWNlNWY2ZWUxOGJkMDY5ZDdmNjc2ZGI1MTI1NGY0YTM1ZWZhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBTdHJpbmcg
Z2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+
JiBhY3Rpb24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25z
dCBTdHJpbmcmIHN1ZmZpeCkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgU3RyaW5nVmlldyBzdWZmaXgpCiB7CiAgICAgLy8g
RklYTUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUg
Y29kZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCiAgICAgQVNTRVJUX1VOVVNFRChzdWZm
aXgsIHN1ZmZpeC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCAzMjBjNmIxYmIwMTY1YmRjZWQ3
NGMwYzk3NjU4YzRlYjUwOGQxNjc0Li4xZmUzZDEwZjg3MDZlNzk3ZTg3YmE5MjVjNzUwZjAxZDAx
M2Y4ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtNTY2LDggKzU2Niw4IEBAIEhhc2hTZXQ8U2VjdXJpdHlP
cmlnaW5EYXRhPiBJREJTZXJ2ZXI6OmdldE9yaWdpbnMoKSBjb25zdAogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICBjb2xsZWN0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKSwgc2VjdXJp
dHlPcmlnaW5zKTsKLSAgICBjb2xsZWN0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKSwgc2Vj
dXJpdHlPcmlnaW5zKTsKKyAgICBjb2xsZWN0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiX3Mp
LCBzZWN1cml0eU9yaWdpbnMpOworICAgIGNvbGxlY3RPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2
MSJfcyksIHNlY3VyaXR5T3JpZ2lucyk7CiAKICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5zOwog
fQpAQCAtNjM2LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUFsbERhdGFiYXNlc0ZvckZ1
bGxPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgV2FsbFRpCiAKICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlTmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKICAgICAgICAgYXV0byBkYXRh
YmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0
aCwgZGF0YWJhc2VOYW1lKTsKLSAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZSA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZVBhdGgsICJJbmRleGVkREIuc3Fs
aXRlMyIpOworICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIl9zKTsK
ICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkgJiYgRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGUpKSB7CiAgICAgICAgICAgICBhdXRvIG1v
ZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShkYXRhYmFz
ZUZpbGUpOwogICAgICAgICAgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQpAQCAtNzMyLDcgKzcz
Miw3IEBAIHZvaWQgSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvbnN0CiAgICAgICAgIHJldHVybiBkYXRhYmFzZU9y
aWdpbi50b3BPcmlnaW4gPT0gdGFyZ2V0T3JpZ2luOwogICAgIH0pOwogCi0gICAgYXV0byB2ZXJz
aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgYXV0byB2ZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIl9z
KTsKICAgICBhdXRvIG9sZE9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodmVyc2lvblBhdGgsIG9sZE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAg
ICAgYXV0byBuZXdPcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHZlcnNpb25QYXRoLCBuZXdPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9sZE9yaWdpblBhdGgpKQpAQCAtNzY4LDcgKzc2OCw3
IEBAIHZvaWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
ZyBuZXdWZXJzaW9uRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKKyAgICBTdHJpbmcgbmV3VmVyc2lv
bkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgInYxIl9zKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobmV3VmVyc2lvbkRpcmVjdG9yeSkpCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggNGUyMGE0YjliZWIzZGZlZGY1OWM1MDM4YmJjNDJhODE5ZDUyOGMwYy4u
Y2JkNDYyNzkwNzg3NzgwMmYzOGM2YTRkZmI2NmMxYTIyMzFkYjNjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTkzNSw3ICs5MzUsNyBAQCBTdHJpbmcgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGVkTmFt
ZSkKIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aEZvckRp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxEYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZ1bGxEYXRhYmFzZURpcmVj
dG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnksICJJbmRleGVkREIuc3Fs
aXRlMyJfcyk7CiB9CiAKIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFz
ZVBhdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAppbmRleCBjZDBjNDE0ZmIzMTAwMjQxM2VhMmJmZGQwOTgzMDVkNTFiOWYxZmQy
Li5iMTMyMGYwMDhiYmY5MzM1OWIyYjg1MzFkZWIxNmYxNGQ5Zjk4ZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzY2LDExICsz
NjYsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5
KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIFdURk1vdmUobWVzc2FnZSkgfTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgU3RyaW5nIHRhYmxlTmFtZSh1bnF1YWxpZmllZEluZm9U
YWJsZU5hbWUpOwotICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRhYmxlRXhpc3Rz
KHRhYmxlTmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4
aXN0cyh1bnF1YWxpZmllZEluZm9UYWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbV9uZXcg
PSB0cnVlOwogCi0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kU2xvdygiQ1JFQVRFIFRBQkxFICIgKyB0YWJsZU5hbWUgKyAiIChrZXkgVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fc3FsaXRlRGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmRTbG93KG1ha2VTdHJpbmcoIkNSRUFURSBU
QUJMRSAiLCB1bnF1YWxpZmllZEluZm9UYWJsZU5hbWUsICIgKGtleSBURVhUIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCBm
YWlsZWQgdG8gY3JlYXRlICdpbmZvJyB0YWJsZSIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9y
KCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgICAg
ICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICBtX3NxbGl0ZURh
dGFiYXNlLmNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL09yaWdpbkxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9PcmlnaW5Mb2NrLmNwcAppbmRleCBkNDY1MWRiZTkzMGFhNGI3NmNlNTlkYTUyYzI5NmU2YWU2
OWYwMjc5Li43NTYwY2QwOTVkYjU5OTYzMDhhZmRlNjA4MzI4YjQ1NGMyMjdlZWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIGxvY2tG
aWxlTmFtZUZvclBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgIi5sb2NrIik7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5Q
YXRoLCAiLmxvY2siX3MpOwogfQogCiBPcmlnaW5Mb2NrOjpPcmlnaW5Mb2NrKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luUGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9VUkxGaWx0ZXJQYXJzZXIuY3BwCmluZGV4IDRmZjEyMjVmYWE4MjI4NWIzMWNlZDU3NTlkYjg5
Nzc2OTE4OWU3NGEuLmE5ZWM4ZDMyNzg5ZWQ4ZGRlM2MyZGRjMjU0YTlmMjk0MWVmZmRiOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6VVJMRmlsdGVyUGFy
c2VyKENvbWJpbmVkVVJMRmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogCiBVUkxGaWx0ZXJQ
YXJzZXI6On5VUkxGaWx0ZXJQYXJzZXIoKSA9IGRlZmF1bHQ7CiAKLVVSTEZpbHRlclBhcnNlcjo6
UGFyc2VTdGF0dXMgVVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0
dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0ZXJuSWQpCitV
UkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybihT
dHJpbmdWaWV3IHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3Qg
cGF0dGVybklkKQogewogICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJl
dHVybiBOb25BU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
VVJMRmlsdGVyUGFyc2VyLmgKaW5kZXggODg5ODNiNTVjM2NiZWQ1OWY0YTRhMDFhZWQyNWE0MzJj
ODAyOGI0MS4uYTQ5M2I5MTY1YTI1YzlmMmY4Nzc1ZDEyYWMyZmYxNTkwMjFiMjM3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3RhdHVz
U3RyaW5nKFBhcnNlU3RhdHVzKTsKICAgICBleHBsaWNpdCBVUkxGaWx0ZXJQYXJzZXIoQ29tYmlu
ZWRVUkxGaWx0ZXJzJik7CiAgICAgflVSTEZpbHRlclBhcnNlcigpOwotICAgIFBhcnNlU3RhdHVz
IGFkZFBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5z
aXRpdmUsIHVpbnQ2NF90IHBhdHRlcm5JZCk7CisgICAgUGFyc2VTdGF0dXMgYWRkUGF0dGVybihT
dHJpbmdWaWV3IHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3Qg
cGF0dGVybklkKTsKIAogcHJpdmF0ZToKICAgICBDb21iaW5lZFVSTEZpbHRlcnMmIG1fY29tYmlu
ZWRVUkxGaWx0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwCmluZGV4IDQ2YjVjOWUyM2Q1MjViZWQxY2Y3MjY4MDkzOTU2ZTQ1N2FhMDA2
NGQuLjBkNDdkN2MwNmIzMTM5OTJhY2EyZDY4ZDk4MTI2NjQ4MWNhNWM5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM0OSw3
ICszNDksNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29k
ZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0YXRpYyB2b2lkIGFwcGVuZEJvb2xlYW4oU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgQVNDSUlMaXRlcmFsIGxhYmVsLCBib29sIGZsYWcpCiB7CiAg
ICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5v
Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmZTY0MGFiNDhmMWJjMjJlOWIxOWFlYTFh
MjAxMTEwNjljMDJiY2ZhLi41MjMwMGM2YzViODFkNjUxMjIwNWQ4YzNmMzA2ZjcwYjcwOGZiNjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkK
ICAgICBpZiAobV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jYWNoZUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9j
YWNoZURpcmVjdG9yeSwgIkFwcGxpY2F0aW9uQ2FjaGUuZGIiKTsKKyAgICBtX2NhY2hlRmlsZSA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCAi
QXBwbGljYXRpb25DYWNoZS5kYiJfcyk7CiAgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlzdCAm
JiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDJkMzg2
ZGIxZmYzYzYyY2FmYTc5OWU1ODJmN2U1YzAyNWJmMGRjM2MuLmE2ODJjY2JhNzU0MjlkNzI4NTI2
ZDhhY2Y4ZmIwZWU3NTIyZDIyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2Nv
bCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0
KSwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3J0LnZhbHVlX29yKDApKTsKIH0KIAotc3RkOjpvcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNl
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3N0ZDo6b3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoU3RyaW5nVmlldyBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CiAgICAgLy8gTWFrZSBz
dXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRh
dGFiYXNlSWRlbnRpZmllci5maW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CkBAIC0xMDUsNyArMTA1
LDcgQEAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb24KICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QuCiAg
ICAgYXV0byBwb3J0TGVuZ3RoID0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2VwYXJh
dG9yMiAtIDE7Ci0gICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8dWludDE2X3Q+KFN0cmluZ1ZpZXcgeyBkYXRhYmFzZUlkZW50aWZpZXIgfS5yaWdodChwb3J0
TGVuZ3RoKSk7CisgICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8dWludDE2X3Q+KGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChwb3J0TGVuZ3RoKSk7CiAKICAg
ICAvLyBOb3RoaW5nIGFmdGVyIHRoZSBjb2xvbiBpcyBmaW5lLiBGYWlsdXJlIHRvIHBhcnNlIGFm
dGVyIHRoZSBjb2xvbiBpcyBub3QuCiAgICAgaWYgKCFwb3J0ICYmIHBvcnRMZW5ndGgpCkBAIC0x
MTcsNyArMTE3LDcgQEAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb24KIAogICAgIGF1dG8gcHJvdG9j
b2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIGF1
dG8gaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNl
cGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0
YSB7IHByb3RvY29sLCBob3N0LCBwb3J0IH07CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0
YSB7IHByb3RvY29sLnRvU3RyaW5nKCksIGhvc3QudG9TdHJpbmcoKSwgcG9ydCB9OwogfQogCiBT
ZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjppc29sYXRlZENvcHkoKSBjb25z
dCAmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCAzNzM1MGFh
NDBhNmJlMGJkMjZkYzY1NTFiYzcwNDYzNGRhOWMyMzlhLi5mYTQ0NmRiNjE3ODQ2NDc4ZTQ0NDI1
YTg2ZjU5MjA1Njk4Nzk0ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmgKQEAgLTcxLDcgKzcxLDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAg
Ly8gU2VyaWFsaXplIHRoZSBzZWN1cml0eSBvcmlnaW4gdG8gYSBzdHJpbmcgdGhhdCBjb3VsZCBi
ZSB1c2VkIGFzIHBhcnQgb2YKICAgICAvLyBmaWxlIG5hbWVzLiBUaGlzIGZvcm1hdCBzaG91bGQg
YmUgdXNlZCBpbiBzdG9yYWdlIEFQSXMgb25seS4KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gZnJvbURhdGFiYXNlSWRlbnRpZmllcihTdHJpbmdWaWV3KTsKICAg
ICAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA1YWNiMjljZmI0NTk5N2ExODg2ZmJjYTc1
YzAxNTA3YTNiYmU2NGZiLi4yOWNmYzMwNDMyMmJiZDJkYThkMDM1NWJiZWUzNWQ3MTUyNTQzYzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAt
MTUyLDE2ICsxNTIsMTYgQEAgY29uc3RleHByIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0
ZXJhbCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXlbXSA9IHsKICNlbmRpZgogfTsKIAotdGVt
cGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0LCB1bnNpZ25lZCBzaXplPiBzdGF0aWMgRml4ZWRWZWN0
b3I8Y29uc3QgY2hhcio+IG1ha2VGaXhlZFZlY3Rvcihjb25zdCBDb21wYXJhYmxlQVNDSUlTdWJz
ZXRMaXRlcmFsPHN1YnNldD4gKCZhcnJheSlbc2l6ZV0pCit0ZW1wbGF0ZTxBU0NJSVN1YnNldCBz
dWJzZXQsIHVuc2lnbmVkIHNpemU+IHN0YXRpYyBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IG1h
a2VGaXhlZFZlY3Rvcihjb25zdCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4g
KCZhcnJheSlbc2l6ZV0pCiB7Ci0gICAgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHJlc3VsdChz
dGQ6OnNpemUoYXJyYXkpKTsKKyAgICBGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IHJlc3VsdChz
dGQ6OnNpemUoYXJyYXkpKTsKICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGFycmF5KSwg
c3RkOjplbmQoYXJyYXkpLCByZXN1bHQuYmVnaW4oKSwgW10gKGF1dG8gbGl0ZXJhbCkgewogICAg
ICAgICByZXR1cm4gbGl0ZXJhbC5saXRlcmFsOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxpdGVyYWw+IE1JTUVUeXBlUmVn
aXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIHsKICAgICByZXR1cm4gbWFrZUZpeGVk
VmVjdG9yKHN1cHBvcnRlZEltYWdlTUlNRVR5cGVBcnJheSk7CiB9CkBAIC0yNDQsNyArMjQ0LDcg
QEAgY29uc3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBwZGZNSU1FVHlwZUFycmF5W10g
PSB7CiAgICAgInRleHQvcGRmIiwKIH07CiAKLUZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1F
VHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQorRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiBN
SU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQogewogICAgIHJldHVybiBtYWtlRml4ZWRW
ZWN0b3IocGRmTUlNRVR5cGVBcnJheSk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgY29uc3RleHBy
IENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZUFycmF5W10g
PSB7CiAgICAgInRleHQveC12Y2YiLAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IE1J
TUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxB
U0NJSUxpdGVyYWw+IE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygp
CiB7CiAgICAgcmV0dXJuIG1ha2VGaXhlZFZlY3Rvcih1bnN1cHBvcnRlZFRleHRNSU1FVHlwZUFy
cmF5KTsKIH0KQEAgLTY5MCw3ICs2OTAsNyBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNM
aXRlcmFsIHVzZE1JTUVUeXBlQXJyYXlbXSA9IHsKICAgICAibW9kZWwvdm5kLnVzZHoremlwIiwg
Ly8gVGhlIG9mZmljaWFsIHR5cGU6IGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL21l
ZGlhLXR5cGVzL21vZGVsL3ZuZC51c2R6K3ppcAogfTsKIAotRml4ZWRWZWN0b3I8Y29uc3QgY2hh
cio+IE1JTUVUeXBlUmVnaXN0cnk6OnVzZE1JTUVUeXBlcygpCitGaXhlZFZlY3RvcjxBU0NJSUxp
dGVyYWw+IE1JTUVUeXBlUmVnaXN0cnk6OnVzZE1JTUVUeXBlcygpCiB7CiAgICAgcmV0dXJuIG1h
a2VGaXhlZFZlY3Rvcih1c2RNSU1FVHlwZUFycmF5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA4YzJkNmZhMDI1Njk2ODY3MmUxY2I0N2EzNzIw
NzlhNjJhOTFmZmM3Li42YjUxNjJkOWFkY2YyY2VlMjI5ODM0ZDU4NWM1MDY1OTQ3N2RlY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xMzIsMTMg
KzEzMiwxMyBAQCBwdWJsaWM6CiAgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkg
b3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0
b3I8QVNDSUlMaXRlcmFsPiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgYWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHBkZk1JTUVU
eXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFy
Kj4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiB1c2RNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiBwZGZNSU1FVHlwZXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8QVNDSUlMaXRlcmFsPiB1bnN1cHBv
cnRlZFRleHRNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0
b3I8QVNDSUlMaXRlcmFsPiB1c2RNSU1FVHlwZXMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgYXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCmluZGV4IDEzMDY4Zjg5YWVkYWQzNTllMzI2MmJiYzZkZGRhNGMyZGE0NDRhMGEuLjExZmI3
OTFjMTJmYjE2Zjc3ODdhYWQ1ZmNkZjJlMTk4YThlZjUwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHN0b3IKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxp
c3QiKTsKKyAgICBhdXRvIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Il9zKTsKIAogICAg
IGF1dG8gZmlsZVR5cGUgPSBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHN0
b3JhZ2VEaXJlY3RvcnkpOwogICAgIGlmICghZmlsZVR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDI4
NmE1YTQ4ODdlOGQ5NTYwMGU3YzhiYWMzYWZiZTY2NzYxNjA1NTQuLmEwYzZhM2U1MjZjYWNhNGFk
MWM3ODhlM2MyMjJlOGE0ZTUxYzI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTEzLDcgKzExMyw3IEBA
IFN0cmluZyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpzdG9yYWdlUGF0aCgpIGNvbnN0
CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJT
ZWN1cmVTdG9wLnBsaXN0Il9zKTsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDA5OTdkNzhiNjZiNTRlMTU5NjVmNmI4ZjY1ZmFk
Y2MzY2ZhMzkzZjIuLjllZDAyMzYzMzYwOTg3ZGUyMTYzZGIwZGYzMzE5MGU3YzgxMjQ1MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEwOTYsNyArMTA5Niw3IEBAIEFWU3RyZWFt
U2Vzc2lvbiogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNz
aW9uKCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9CiAKLSAgICAgICAg
U3RyaW5nIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBz
dG9yYWdlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdl
RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCJfcyk7CiAgICAgICAgIG1fc3RyZWFtU2Vzc2lv
biA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRo
U3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhd
XSk7CiAgICAgfQogICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0K
aW5kZXggMDc3M2Y1ODg2ZTQwYTAyZWE5ZTNjYTA4MDIwNWM0NzJhOWIyODM0OS4uZGM3YTNjZTdm
ZjNiN2VkMTlkZWYwZmY0OGEyMDQ5ODBkNDk2N2UwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQpAQCAtNTExLDIx
ICs1MTEsMjEgQEAgcHVibGljOgogCiAgICAgICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVy
L1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFj
dGVyIGZvciBFbnRlci4KICAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09ICdc
cicpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAgICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gIlxyIjsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJcciJfczsKKyAgICAgICAgICAg
IG1fdW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUg
YWRqdXN0bWVudHMgYmVsb3cgYXJlIG9ubHkgbmVlZGVkIGluIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgbW9kZSwgYnV0IHdlIGNhbm5vdCB0ZWxsIHdoYXQgbW9kZSB3ZSBhcmUgaW4gZnJvbSBoZXJl
LgogCiAgICAgICAgIC8vIFR1cm4gMHg3RiBpbnRvIDgsIGJlY2F1c2UgYmFja3NwYWNlIG5lZWRz
IHRvIGFsd2F5cyBiZSA4LgogICAgICAgICBpZiAobV90ZXh0ID09ICJceDdGIikKLSAgICAgICAg
ICAgIG1fdGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCJfczsKICAgICAg
ICAgaWYgKG1fdW5tb2RpZmllZFRleHQgPT0gIlx4N0YiKQotICAgICAgICAgICAgbV91bm1vZGlm
aWVkVGV4dCA9ICJceDgiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiX3M7
CiAgICAgICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgdGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNl
IEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KICAgICAgICAgaWYg
KG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09IDkpIHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJc
eDkiOwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICAgICAg
bV90ZXh0ID0gIlx4OSJfczsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBtX3RleHQ7
CiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYWE2OTU1MGExZjA3NzlkMmM0NTI2
NTMyY2IzMTdjMjBlNWU3YzM3Yi4uNjEzNjUzMWI1YjFjNGM3ZmFiYjQ0OTEwMzAzNTZlNWY0NmY3
MWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBDb29raWVKYXJEQjo6b3Bl
bkRhdGFiYXNlKCkKIAogICAgIHZlcmlmeVNjaGVtYVZlcnNpb24oKTsKIAotICAgIGlmICghZXhp
c3RzRGF0YWJhc2VGaWxlIHx8ICFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJDb29raWUiKSkgewor
ICAgIGlmICghZXhpc3RzRGF0YWJhc2VGaWxlIHx8ICFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJD
b29raWUiX3MpKSB7CiAgICAgICAgIGJvb2wgb2sgPSBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudChDUkVBVEVfQ09PS0lFX1RBQkxFX1NRTCkpCiAgICAgICAg
ICAgICAmJiBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChD
UkVBVEVfRE9NQUlOX0lOREVYX1NRTCkpCiAgICAgICAgICAgICAmJiBleGVjdXRlU1FMU3RhdGVt
ZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChDUkVBVEVfUEFUSF9JTkRFWF9TUUwpKTsK
QEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIENvb2tpZUphckRCOjpjaGVja0RhdGFiYXNlVmFsaWRp
dHkoKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKIAotICAgIGlmICghbV9k
YXRhYmFzZS50YWJsZUV4aXN0cygiQ29va2llIikpCisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxl
RXhpc3RzKCJDb29raWUiX3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGlu
dGVncml0eSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIHF1aWNrX2NoZWNr
OyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggMDM0NjBmNTI1OWIwODVmMTc0ZTYyMzdkYzc3
YWQ1YjY0YzgxMzI4YS4uM2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6bG9hZEluZGV4KCkKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU3RyaW5nIGluZGV4RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9jYWNoZURpciwgImluZGV4LmRhdCIpOworICAgIFN0cmluZyBpbmRleEZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXIsICJp
bmRleC5kYXQiX3MpOwogICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZp
bGUoaW5kZXhGaWxlUGF0aCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HKE5ldHdv
cmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IHJlYWQgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0
aW4xKCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGYzYTU1YjM4MTFkNTI5OTI5NTgwMmM1MDhiYzcw
OGM4ZjkyNGQ3MWEuLjJiYWY5NDJkYmM5NjNkM2ZmYjNkY2IxNWZjMWIzYmVkZDBlZWVlYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcApAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBtX2Rvd25sb2FkRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiZG93bmxvYWQiLCBtX2Rvd25sb2FkRmlsZUhhbmRsZSk7CisgICAgICAgICAg
ICBtX2Rvd25sb2FkRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZG93
bmxvYWQiX3MsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKICAgICB9CiAKICAgICBpZiAobV9kb3du
bG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4
IGYyZTNlZGFkNTBlZGEyZmRlMGU1ZDU2N2FhZTMzNzNkYzU1ZGIwNTAuLjFlYjZkZWJhZmMyM2M0
MmRkMTJlZDc2YTFmNmYxMDVmZTI5Y2VmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtODksMTEgKzg5LDYgQEAgU1FMaXRlRGF0YWJh
c2U6On5TUUxpdGVEYXRhYmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotY29uc3QgY2hhciogU1FM
aXRlRGF0YWJhc2U6OmluTWVtb3J5UGF0aCgpCi17Ci0gICAgcmV0dXJuICI6bWVtb3J5OiI7Ci19
Ci0KIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Bl
bk1vZGUgb3Blbk1vZGUpCiB7CiAgICAgaW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5KCk7CkBA
IC00MjYsMTIgKzQyMSwxMiBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZChB
U0NJSUxpdGVyYWwgcXVlcnkpCiAgICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4
ZWN1dGVDb21tYW5kKCk7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNv
bnN0IFN0cmluZyYgdGFibGVOYW1lKQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMo
U3RyaW5nVmlldyB0YWJsZU5hbWUpCiB7CiAgICAgcmV0dXJuICF0YWJsZVNRTCh0YWJsZU5hbWUp
LmlzRW1wdHkoKTsKIH0KIAotU3RyaW5nIFNRTGl0ZURhdGFiYXNlOjp0YWJsZVNRTChjb25zdCBT
dHJpbmcmIHRhYmxlTmFtZSkKK1N0cmluZyBTUUxpdGVEYXRhYmFzZTo6dGFibGVTUUwoU3RyaW5n
VmlldyB0YWJsZU5hbWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTQ0Myw3ICs0MzgsNyBAQCBTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OnRhYmxlU1FMKGNv
bnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBzdGF0ZW1lbnQtPmNvbHVtblRleHQo
MCk7CiB9CiAKLVN0cmluZyBTUUxpdGVEYXRhYmFzZTo6aW5kZXhTUUwoY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUpCitTdHJpbmcgU1FMaXRlRGF0YWJhc2U6OmluZGV4U1FMKFN0cmluZ1ZpZXcgaW5k
ZXhOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGQ0MTRiOWE2
Y2EzNjM2MWY3YjExNzExNzZhMWU5NGQ0MWNiOWU4M2IuLjkxNjAxMzQ4MTc1OTIxM2FhNTJkMTk4
YTQ3ZTJlNWM0ZDZhOTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTUUxpdGVEYXRhYmFzZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZSgp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGNoYXIqIGluTWVtb3J5UGF0aCgp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGluTWVtb3J5UGF0aCgpIHsgcmV0
dXJuICI6bWVtb3J5OiJfczsgfQogCiAgICAgZW51bSBjbGFzcyBPcGVuTW9kZSB7IFJlYWRPbmx5
LCBSZWFkV3JpdGUsIFJlYWRXcml0ZUNyZWF0ZSB9OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSA9IE9wZW5Nb2RlOjpSZWFkV3Jp
dGVDcmVhdGUpOwpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwpOwogICAgIAotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgdGFibGVFeGlzdHMoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHRhYmxlU1FMKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBpbmRleFNRTChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHRh
YmxlRXhpc3RzKFN0cmluZ1ZpZXcpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0YWJsZVNR
TChTdHJpbmdWaWV3KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaW5kZXhTUUwoU3RyaW5n
Vmlldyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRhYmxlcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGludCBydW5WYWN1dW1Db21tYW5kKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IHJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDcyZDRhODc0OWEwOGQwYTcz
ODM0ODY0ZjZmNmYzOGRmNTQ5NDQ4MjMuLmVjMGQxY2VlNWJhMWEwODgwNTAwMGZmNzBkNzQ2NDY1
MDM2ZDc1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVG
aWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1FMaXRlRmlsZVN5c3RlbTo6U1FMaXRlRmls
ZVN5c3RlbSgpCiB7CiB9CiAKLVN0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFz
ZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSkKK1N0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRo
KFN0cmluZ1ZpZXcgcGF0aCwgU3RyaW5nVmlldyBmaWxlTmFtZSkKIHsKICAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKIH0KQEAg
LTEyOCw3ICsxMjgsNyBAQCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxpdGVGaWxlU3lzdGVt
OjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBGaWxl
U3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSk7CiB9CiAgICAgCi1TdHJpbmcg
U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQorU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUo
U3RyaW5nVmlldyBmaWxlTmFtZSkKIHsKICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7
CiAgICAgYXV0byB1dGY4RmlsZU5hbWUgPSBmaWxlTmFtZS51dGY4KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCA2NGYxYTJjMTJhOTEx
YWViMGFkYzU5ZWZiYmNlNTM5MDliOTU5NTZjLi41MzQyNzEwZjdiYmQyMTlhZDdiZGVmMDc0ZDBk
M2M2NDkyMzM2OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVG
aWxlU3lzdGVtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gcGF0
aCAtIFRoZSBkaXJlY3RvcnkuCiAgICAgLy8gZmlsZU5hbWUgLSBUaGUgZmlsZSBuYW1lLgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChTdHJp
bmdWaWV3IHBhdGgsIFN0cmluZ1ZpZXcgZmlsZU5hbWUpOwogCiAgICAgLy8gTWFrZXMgc3VyZSB0
aGUgZ2l2ZW4gZGlyZWN0b3J5IGV4aXN0cywgYnkgY3JlYXRpbmcgYWxsIG1pc3NpbmcgZGlyZWN0
b3JpZXMKICAgICAvLyBvbiB0aGUgZ2l2ZW4gcGF0aC4KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gTW92ZXMgYSBkYXRhYmFzZSBmaWxlIHRvIGEgbmV3IHBsYWNlLgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIG1vdmVEYXRhYmFzZUZpbGUoY29uc3QgU3RyaW5nJiBv
bGRGaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdGaWxlUGF0aCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyBjb21wdXRlSGFzaEZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUhhc2hGb3JG
aWxlTmFtZShTdHJpbmdWaWV3IGZpbGVQYXRoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gVHJ1bmNhdGVzIGEgZGF0YWJhc2UgZmlsZS4gVXNlZCB3aGVuIE1vYmlsZVNhZmFy
aVNldHRpbmdzIGRlbGV0ZXMgYSBkYXRhYmFzZSBmaWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggNGNiNDhmNDgwMzdmMGMx
NjEyOTgxZTFiMzczMTg5MDM4ODFmZDEwOC4uZTYxNjZkOWM3YTkxZTZhYmUxMDRhYmY5MWQ3NDE2
ODY3ZmQyYzFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNo
UG9wdXBNZW51REIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNlYXJjaFBvcHVwTWVudURCJiBTZWFy
Y2hQb3B1cE1lbnVEQjo6c2luZ2xldG9uKCkKIH0KIAogU2VhcmNoUG9wdXBNZW51REI6OlNlYXJj
aFBvcHVwTWVudURCKCkKLSAgICA6IG1fZGF0YWJhc2VGaWxlbmFtZShGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJhdXRvc2F2ZS1zZWFyY2guZGIiKSkKKyAgICA6IG1fZGF0YWJhc2VGaWxl
bmFtZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJhdXRvc2F2ZS1zZWFyY2guZGIiX3Mp
KQogewogfQogCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hl
Y2tEYXRhYmFzZVZhbGlkaXR5KCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7
CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIlNlYXJjaCIpKQorICAgIGlmICgh
bV9kYXRhYmFzZS50YWJsZUV4aXN0cygiU2VhcmNoIl9zKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBpbnRlZ3JpdHkgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlBS
QUdNQSBxdWlja19jaGVjazsiX3MpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIGJvb2wgU2VhcmNoUG9w
dXBNZW51REI6Om9wZW5EYXRhYmFzZSgpCiAgICAgdmVyaWZ5U2NoZW1hVmVyc2lvbigpOwogCiAg
ICAgYm9vbCBkYXRhYmFzZVZhbGlkaXR5ID0gdHJ1ZTsKLSAgICBpZiAoIWV4aXN0c0RhdGFiYXNl
RmlsZSB8fCAhbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiU2VhcmNoIikpCisgICAgaWYgKCFleGlz
dHNEYXRhYmFzZUZpbGUgfHwgIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIlNlYXJjaCJfcykpCiAg
ICAgICAgIGRhdGFiYXNlVmFsaWRpdHkgPSBkYXRhYmFzZVZhbGlkaXR5ICYmIChleGVjdXRlU1FM
U3RhdGVtZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChjcmVhdGVTZWFyY2hUYWJsZVNR
TCkpID09IFNRTElURV9ET05FKTsKIAogICAgIGlmICghZGF0YWJhc2VWYWxpZGl0eSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBm
ZjBlOTFjY2Y0YzA4N2UzZGU2YjM1MTE3NDgzZTQ0YjdhMzAxMTE2Li5mYmQ4YmRmOGExNjM4Zjg1
YTRiNjBlNDc0NjQyOGM1N2FmNWY2ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMzOCw3ICszMzM4LDcgQEAgc3RhdGljIFJl
ZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uLCBGbG8KICAgICAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNj
cmlwdGlvbiksIDAsIDApOwogICAgICAgICBmb250LnVwZGF0ZShudWxscHRyKTsKIAotICAgICAg
ICBUZXh0UnVuIHRleHRSdW4gPSBUZXh0UnVuKGRlc2NyaXB0aW9uLm5hbWUpOworICAgICAgICBU
ZXh0UnVuIHRleHRSdW4gPSBUZXh0UnVuKFN0cmluZ1ZpZXcgeyBkZXNjcmlwdGlvbi5uYW1lIH0p
OwogICAgICAgICBpbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKGRlc2NyaXB0aW9uLmZpbGxDb2xv
cik7CiAKICAgICAgICAgY29uc3RleHByIGZsb2F0IHRleHRHYXAgPSA0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAppbmRleCA5NzZkODBiODUwODViNDZmZTdlYWUwN2Q5MDBkMTYyN2NkMjkz
Mjk4Li5mMTQ4YTNkYWViMWM3NTAxNjI1MjMxNjk0ZmY1ODQ1NTg0ZWE1OWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgUmVnaXN0cmF0aW9u
RGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkK
IAogU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5
LCB7ICJTY3JpcHRzIl9zLCAiVjEiX3MgfSk7CiB9CiAKIFNXU2NyaXB0U3RvcmFnZSYgUmVnaXN0
cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDc1
ZDk4YTkyNjc2ODUwY2VjYjI0Yjk4OTJkMGQzNmEzMGE2MmIyMzUuLmExNTFjZDJhYTY2MjRjZGFl
ZWY4ZDk2YTNjNzQzMzJjZWFkOGU1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6c2hhMkhhc2goY29uc3QgVVJMJiBpbnB1dCkg
Y29uc3QKIAogU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6c2FsdFBhdGgoKSBjb25zdAogewotICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kaXJlY3Rvcnks
ICJzYWx0Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX2RpcmVjdG9yeSwgInNhbHQiX3MpOwogfQogCiBTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpy
ZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZDY0
Y2NjMGI2MDE4YzdmZTc0NmU3YWNmZTYxMGZjZTRmOWIwNjVjNS4uNmRiNjQ0MGNmOTZkOTJhYzJk
N2Y1YmUxZDUyMjNhZTA1YTAxNzFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5p
dGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHIKICAgICAgICAgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4
dEdMOjpSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKICAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRl
bnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxz
ZSwgSVBDOjpTZW1hcGhvcmUgeyB9LCAiIiwgIiIpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpTZW1h
cGhvcmUgeyB9LCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBj
YzYxNTI0NzkzYzBmMTFjZmViOGQ0YTg0ZWNmYTlhZjRlNmUyYWE3Li44N2JhZDg1OWNlY2UzMDNk
ODVjNWQwMWVmNGRlOGQyOWQ0NDM5YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBzdGF0
aWMgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBhbGxTdG9y
ZXMoKQogCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBz
dG9yZSwgU3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3Rv
cnlQYXRoLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUoc3RvcmUsIHdvcmtRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKLSAg
ICAsIERhdGFiYXNlVXRpbGl0aWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiIpKQorICAgICwgRGF0YWJh
c2VVdGlsaXRpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VE
aXJlY3RvcnlQYXRoLCAib2JzZXJ2YXRpb25zLmRiIl9zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNl
c3Npb25JRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQyNCw4ICs0
MjQsOCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpuZWVkc1Vw
ZGF0ZWRTY2hlbWEoKQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptaWdyYXRlRGF0YVRvUENNRGF0YWJhc2VJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCF0YWJs
ZUV4aXN0cygiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiKQotICAgICAgICAm
JiAhdGFibGVFeGlzdHMoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpKQorICAg
IGlmICghdGFibGVFeGlzdHMoIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9z
KQorICAgICAgICAmJiAhdGFibGVFeGlzdHMoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCJfcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gdW5hdHRyaWJ1dGVkOwpAQCAtMjUwMyw3ICsyNTAzLDcgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlz
dGljc0NvdW50KGNvbnN0IFJlZ2kKICAgICByZXR1cm4gKHN1YkZyYW1lVW5kZXJUb3BGcmFtZUNv
dW50LT5jb2x1bW5JbnQoMCkgPT0gMSAmJiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVDb3VudC0+
Y29sdW1uSW50KDApID09IDEgJiYgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby0+Y29sdW1u
SW50KDApID09IDEpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKK3N0YXRpYyB2b2lk
IGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgQVNDSUlMaXRlcmFsIGxhYmVs
LCBib29sIGZsYWcpCiB7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwg
ZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CkBAIC0yNTMxLDMxICsyNTMxLDMxIEBAIFN0cmluZyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURv
bWFpbklEKHVuc2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQVNDSUlMaXRlcmFsIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1l
bnQoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChBU0NJ
SUxpdGVyYWwgdGFibGVOYW1lKSBjb25zdAogewotICAgIGlmICh0YWJsZU5hbWUgPT0gIlN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIpCisgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3Rv
cmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIl9zKQogICAgICAgICByZXR1cm4gIlNFTEVD
VCB0b3BMZXZlbERvbWFpbklEIGZyb20gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5z
IFdIRVJFIGRvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvIikKKyAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvIl9zKQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8iX3M7Ci0gICAg
aWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikKKyAgICBpZiAo
dGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MpCiAgICAgICAgIHJl
dHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSBXSEVSRSB0YXJnZXREb21haW5JRCA9ID8iX3M7Ci0gICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9w
RnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKKyAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MpCiAgICAgICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21h
aW5JRCBmcm9tIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBXSEVSRSB0b0RvbWFpbklEID0g
PyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3Jp
cHRzIikKKyAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3Jp
cHRzIl9zKQogICAgICAgICByZXR1cm4gIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20g
VG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0g
PyJfczsKLSAgICBpZiAodGFibGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5z
IikKKyAgICBpZiAodGFibGVOYW1lID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIl9z
KQogICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyJfczsKLSAgICBp
ZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIikKKyAgICBp
ZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zKQogICAg
ICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKLSAgICBp
ZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIikKKyAgICBpZiAo
dGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zKQogICAgICAgICBy
ZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
byBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKLSAgICBpZiAodGFibGVOYW1lID09
ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQorICAgIGlmICh0YWJsZU5hbWUgPT0g
IlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcykKICAgICAgICAgcmV0dXJuICJTRUxF
Q1QgZnJvbURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJF
IHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIAogICAgIHJldHVybiAiIl9zOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
CiB7CiAgICAgYXV0byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUp
OwogICAgIApAQCAtMjYwMyw3ICsyNjAzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAg
ICBidWlsZGVyLmFwcGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCBkb21haW4sICdcbicpOwog
ICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIs
ICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CisgICAgYXBwZW5kQm9v
bGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVy
YWN0aW9uKFNlY29uZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNv
bHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQpAQCAtMjYx
MSwzNCArMjYxMSwzNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGVsc2UKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
YXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCJfcywgbV9nZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgp
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0g
ICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVEb21haW5zIiwgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxk
ZXIsICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAg
ICAvLyBUb3AgZnJhbWUgc3RhdHMKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIs
ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50IiwgZG9tYWluKTsKLSAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0
KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSIsIGRvbWFpbik7Ci0gICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgZG9tYWluKTsK
KyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLCBkb21haW4pOworICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BG
cmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iX3MsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlz
dGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywgZG9t
YWluKTsKIAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVu
dC0+Y29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCkp
OworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwiX3MsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5j
b2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwotICAgIGFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMiLCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGRvbWFpbik7CiAKICAgICAvLyBTdWJyZXNvdXJj
ZSBzdGF0cwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbnMiLCBkb21haW4pOwotICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xp
c3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBkb21haW4pOwotICAg
IGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSIsIGRvbWFpbik7CisgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAi
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgZG9tYWluKTsKKyAgICBhcHBlbmRT
dWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9z
LCBkb21haW4pOworICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgZG9tYWluKTsKIAogICAgIC8vIFByZXZhbGVudCBS
ZXNvdXJjZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3VyY2Ui
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KElzUHJl
dmFsZW50SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJl
c291cmNlIl9zLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1u
SW50KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBh
cHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVz
b3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50
SW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSJfcywgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbklu
dChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiLCBtX2dldFJlc291cmNl
RGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZElu
ZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDgxMWJiZjk3MGVhYzZmYTcw
ZGFhMDk3MmI1NjlkNWU5ZjgyZjE5MDkuLmYyMmJmMWY0YjA1OTFjNzM4YTJlMjliY2Y4NDhhYTBh
YjUyMWMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCkBAIC0xMzgsOCArMTM4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVu
c2lnbmVkLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFu
ZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRCh1bnNpZ25lZCkgY29uc3QgZmluYWw7Ci0gICAgQVNDSUlMaXRlcmFsIGdldFN1
YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIGFwcGVu
ZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CisgICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0
YXRpc3RpY1N0YXRlbWVudChBU0NJSUxpdGVyYWwpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kU3Vi
U3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiwgQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSwgY29u
c3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xl
YXJEYXRhYmFzZUNvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCmluZGV4IDJkNWIwMjc3YjI5ZTEwNmY5Y2ZkNmRhZDJhY2UzOTVhYjg3
MTE5M2QuLjllODJhMzlhNzFkYjI1MDk2YjkxYTAyZDM2YmUxNDAzZTUyNDBhYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNjMsNyAr
MTYzLDcgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAgICAgcG9zdFRhc2soW3RoaXMs
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBzZXNzaW9u
SUQgPSBuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKV0gewogICAgICAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
PigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNlc3Npb25JRCk7CiAKLSAgICAgICAgICAgIGF1
dG8gbGVnYWN5UGxpc3RGaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCAiZnVsbF9icm93c2luZ19zZXNz
aW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CisgICAgICAgICAgICBhdXRvIGxlZ2FjeVBsaXN0Rmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5w
bGlzdCJfcyk7CiAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhsZWdhY3lQ
bGlzdEZpbGVQYXRoKSkKICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGxl
Z2FjeVBsaXN0RmlsZVBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZi
OTMyZGJhZDQ0MGI1NTE1NTg0MjdkNDBkNmQyMmFkZDBkMzNjMDcuLmU0ZWEwM2MxMWI2YmIzZmZl
M2Y4MGQyZjNiNzhmYjlhMzk4YzU2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC03ODksNyArNzg5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFMKICNpZiBFTkFCTEUoSU5U
RUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChz
ZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9w
dCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00i
X3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJh
bWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CkBAIC04MDQs
NyArODA0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb24KICNpZiBFTkFCTEUoSU5URUxMSUdF
TlRfVFJBQ0tJTkdfUFJFVkVOVElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9u
LT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlv
bigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TSJfcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBm
cmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApp
bmRleCA2ZGJiNTJkYTI1N2U3NDAzNzJjNjJkYmQzYzA0Nzc2YzYyN2I5NTk0Li42NzRiOTg1NTM1
N2MxMGMzYTNjYzg3ZDA2Mzc3YjE3MTc2NDA2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTYxLDExICs2MSwx
MSBAQCBzdGF0aWMgY29uc3QgaW50IGh0dHBQYXJ0aWFsQ29udGVudCA9IDIwNjsKIHN0YXRpYyBj
b25zdCBpbnQgaHR0cE5vdEFsbG93ZWQgPSA0MDM7CiBzdGF0aWMgY29uc3QgaW50IGh0dHBSZXF1
ZXN0ZWRSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2Owogc3RhdGljIGNvbnN0IGludCBodHRwSW50
ZXJuYWxFcnJvciA9IDUwMDsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwT0tUZXh0ID0gIk9LIjsK
LXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29u
dGVudCI7Ci1zdGF0aWMgY29uc3QgY2hhciogaHR0cE5vdEFsbG93ZWRUZXh0ID0gIk5vdCBBbGxv
d2VkIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJs
ZVRleHQgPSAiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciogaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciI7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gaHR0cE9LVGV4dCA9ICJPSyJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBodHRwUGFydGlhbENvbnRlbnRUZXh0ID0gIlBhcnRpYWwgQ29udGVudCJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBodHRwTm90QWxsb3dlZFRleHQgPSAiTm90IEFsbG93ZWQiX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gaHR0cFJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVU
ZXh0ID0gIlJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUiX3M7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gaHR0cEludGVybmFsRXJyb3JUZXh0ID0gIkludGVybmFsIFNlcnZlciBFcnJvciJf
czsKIAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJX
ZWJLaXRCbG9iUmVzb3VyY2UiX3M7CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29kZSkK
ICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCV1KSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihl
cnJvckNvZGUpKTsKIAogICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tCbG9iPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBlcnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiIgOiBleHRyYWN0
TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCkpLCBlcnJvckNv
ZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAwIDogbV90b3RhbFJlbWFpbmluZ1NpemUsIFN0cmluZygp
KTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBl
cnJvckNvZGUgIT0gRXJyb3I6Ok5vRXJyb3IgPyAidGV4dC9wbGFpbiJfcyA6IGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSksIGVycm9yQ29kZSAh
PSBFcnJvcjo6Tm9FcnJvciA/IDAgOiBtX3RvdGFsUmVtYWluaW5nU2l6ZSwgU3RyaW5nKCkpOwog
ICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBFcnJvcjo6Tm9FcnJvcjogewogICAg
ICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAhPSBrUG9zaXRpb25Ob3RT
cGVjaWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCmluZGV4IDRhYTYzZGMwZTM4NGE5ZjZiMjk1YTE4ZDYzOTFkYTJlZWU5YzgwZmIuLjMx
YjAxZWY3N2ViNzE2YWEwYjBjNmE4ZWZkYjM0YmVlYmM2OTA4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzcwLDcgKzIzNzAs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3NpbwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCi0gICAgY2FsbGJhY2soIkNhbm5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiIpOworICAgIGNh
bGxiYWNrKCJDYW5ub3QgZmluZCBuZXR3b3JrIHNlc3Npb24iX3MpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAzMmEwNmQ0OTQ2M2QzODhjZTYyZTM2YTg2YmI4YTg0MGE2YWFiOTEyLi41N2MxYjFi
NjkzZDcxNWJlMTJlYWQ2YzZmZDU5NjUxMjk3YzMyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTk0
LDEwICsxNTk0LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbigpIGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAg
ICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJl
cXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmln
aW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3Qo
KS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7
CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyIl9zLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
U2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3Qo
KS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFn
ZUlEKCksIGNvcmVJZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29v
a2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmll
cikKK3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHN0
YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvCiAgICAgYXV0byBlc2NhcGVkSWRlbnRpZmllciA9IGVzY2Fw
ZUlERm9ySlNPTihpZGVudGlmaWVyKTsKICAgICBhdXRvIGVzY2FwZWRSZWZlcnJlciA9IGVzY2Fw
ZUZvckpTT04ocmVmZXJyZXIpOwogCi0jZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2Vk
T2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NB
TF9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAi
JXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9iamVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFf
QVJHU19fKQogI2RlZmluZSBMT0NBTF9MT0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZf
QUxMT1dFRCgibG9nQ29va2llSW5mb3JtYXRpb246IEJMT0NLRUQgY29va2llIGFjY2VzcyBmb3Ig
d2ViUGFnZUlEPSVzLCBmcmFtZUlEPSVzLCByZXNvdXJjZUlEPSVzLCBmaXJzdFBhcnR5PSVzOiAi
IHN0ciwgZXNjYXBlZFBhZ2VJRC51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRnJhbWVJRC51dGY4KCku
ZGF0YSgpLCBlc2NhcGVkSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBlc2NhcGVkRmlyc3RQYXJ0
eS51dGY4KCkuZGF0YSgpLCAjI19fVkFfQVJHU19fKQogCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBz
dGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAK
LXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nv
b2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb24sIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6
b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyPiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aQogICAgIGF1dG8gZXNjYXBlZElkZW50aWZpZXIgPSBlc2NhcGVJREZvckpTT04o
aWRlbnRpZmllcik7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzID0gKGZyYW1lSUQgJiYgcGFn
ZUlEKSA/IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgZmly
c3RQYXJ0eSB9LCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpKSA6IGZhbHNlOwogCi0j
ZGVmaW5lIExPQ0FMX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihuZXR3
b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtICVzOjoiIGZtdCwgbG9nZ2VkT2JqZWN0LCBsYWJlbC51dGY4KCkuZGF0
YSgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBMT0NBTF9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYobmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSAlczo6IiBmbXQsIGxvZ2dlZE9i
amVjdCwgbGFiZWwuY2hhcmFjdGVycygpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBMT0NBTF9M
T0coc3RyLCAuLi4pIFwKICAgICBMT0NBTF9MT0dfSUZfQUxMT1dFRCgibG9nQ29va2llSW5mb3Jt
YXRpb246IHdlYlBhZ2VJRD0lcywgZnJhbWVJRD0lcywgcmVzb3VyY2VJRD0lczogIiBzdHIsIGVz
Y2FwZWRQYWdlSUQudXRmOCgpLmRhdGEoKSwgZXNjYXBlZEZyYW1lSUQudXRmOCgpLmRhdGEoKSwg
ZXNjYXBlZElkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMTY4
NSw3ICsxNjg1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0df
SUZfQUxMT1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgQVNDSUlMaXRlcmFsIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXI+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAppbmRleCA2NWNlYzljZDNjMjRkNGJjN2UzNDBkNzlkYTVkY2Q4MmZkNjYxODQ0Li4yZmI5ZmFk
NDU1YTM5YjIwMTE3NjdiZWUzNzcxNzBjMzU3NjRjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0MCw3ICsx
NDAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVO
VElPTikgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNl
c3Npb25JRCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBs
b2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+KTsKKyAgICBzdGF0aWMg
dm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEFTQ0lJTGl0ZXJhbCBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyPik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggZDZiYzA5MDEy
MDMzMWY4MzA2MGJjZGE2MTRkOTMyYWE1OWEyMWNhMC4uYWQ2ZmNmMTJmMTI3ZDg1MGM3MzRlMThm
ZjA1NTQ2ZWEyZjI3NjBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHN0YXRpYyBIYXNoU2V0PERhdGFiYXNlKj4mIGFsbERhdGFiYXNlcygpCiB9CiAKIERhdGFi
YXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgOiBEYXRh
YmFzZVV0aWxpdGllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFn
ZURpcmVjdG9yeSwgInBjbS5kYiIpKQorICAgIDogRGF0YWJhc2VVdGlsaXRpZXMoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJwY20uZGIiX3Mp
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG9wZW5EYXRhYmFzZUFu
ZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CkBAIC00ODksMTQgKzQ4OSwxNSBAQCB2b2lkIERh
dGFiYXNlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEbwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
Ly8gRGVmYXVsdCB0byBjbGVhciBhbGwgZW50cmllcyBpZiBubyBkb21haW4gaXMgc3BlY2lmaWVk
LgotICAgIFN0cmluZyBiaW5kUGFyYW1ldGVyID0gIiUiOworICAgIFN0cmluZyBiaW5kUGFyYW1l
dGVyOwogICAgIGlmIChkb21haW4pIHsKICAgICAgICAgYXV0byBkb21haW5JRFRvTWF0Y2ggPSBk
b21haW5JRCgqZG9tYWluKTsKICAgICAgICAgaWYgKCFkb21haW5JRFRvTWF0Y2gpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgYmluZFBhcmFtZXRlciA9IFN0cmluZzo6bnVtYmVyKCpk
b21haW5JRFRvTWF0Y2gpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgYmluZFBhcmFtZXRl
ciA9ICIlIl9zOwogCiAgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlv
bklmTmVjZXNzYXJ5KCk7CiAKQEAgLTcxMiwxNyArNzEzLDE3IEBAIHZvaWQgRGF0YWJhc2U6OmRl
c3Ryb3lTdGF0ZW1lbnRzKCkKIAogdm9pZCBEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNv
bHVtbnNJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgU3RyaW5nIGF0dHJpYnV0ZWRUYWJsZU5hbWUoIkF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcyk7CisgICAgY29uc3RleHByIGF1dG8g
YXR0cmlidXRlZFRhYmxlTmFtZSA9ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3M7CiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKCJkZXN0aW5hdGlvbktl
eUlEIl9zKTsKICAgICBhdXRvIGNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUoYXR0cmlidXRlZFRh
YmxlTmFtZSk7CiAgICAgaWYgKCFjb2x1bW5zLnNpemUoKSB8fCBjb2x1bW5zLmxhc3QoKSAhPSBk
ZXN0aW5hdGlvbktleUlEQ29sdW1uTmFtZSkgewogICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25Ub2tlbiBURVhUIl9zKTsKICAg
ICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRlc3Rp
bmF0aW9uU2lnbmF0dXJlIFRFWFQiX3MpOwotICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJs
ZShhdHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25LZXlJRCBURVhUIik7CisgICAgICAg
IGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0aW5hdGlv
bktleUlEIFRFWFQiX3MpOwogICAgIH0KIH0KIAotVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNv
bHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IERh
dGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSkKIHsKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmlu
ZygiUFJBR01BIHRhYmxlX2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKIApAQCAtNzQxLDcgKzc0
Miw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUpCiAgICAgcmV0dXJuIGNvbHVtbnM7CiB9CiAKLXZvaWQgRGF0YWJhc2U6
OmFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbHVtbk5hbWUpCit2b2lkIERhdGFiYXNlOjphZGRNaXNzaW5nQ29sdW1uVG9UYWJs
ZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lLCBBU0NJSUxpdGVyYWwgY29sdW1uTmFtZSkKIHsKICAg
ICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0
cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1lLCAiIEFERCBDT0xVTU4gIiwgY29sdW1uTmFt
ZSkpOwogICAgIGlmICghc3RhdGVtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCmluZGV4IDJmYjdk
MjU2OWVkMzhhNTgyMzhhMjgwMGVlMjQ4YjU3ZjRlNmQ3ZmUuLmU3MWQ0MGJkNDk4NTllYmMzZWFh
MzM4Y2Q1ZWI4YjA1MmNiY2NkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCkBAIC04Miw4ICs4Miw4
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhR
dWVyaWVzKCkgZmluYWw7CiAgICAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNvcnRlZFRhYmxl
cygpIGZpbmFsOwogCi0gICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKTsKLSAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbHVtbk5hbWUpOworICAgIFZlY3Rv
cjxTdHJpbmc+IGNvbHVtbnNGb3JUYWJsZShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKTsKKyAgICB2
b2lkIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUsIEFTQ0lJ
TGl0ZXJhbCBjb2x1bW5OYW1lKTsKIAogICAgIHVzaW5nIFN0YXRlbWVudCA9IHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1f
c2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRTdGF0ZW1lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5jcHAKaW5kZXggMmE4MmExMTVhMWI5YmFkNThiYTg2OGU1NWU1Nzdj
ZjlmNTczZDE0NS4uZTJiNjM3YmQ5NjgxNzI4Y2UxYmFhN2U3MDMzZTFiZjQ2Mzg3ZWNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlv
bihTb3VyCiAKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oKnNpZ25hdHVyZUJh
c2U2NFVSTCwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25VbmxpbmthYmxlVG9r
ZW4pOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGVy
cm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3Vs
dC5lcnJvcigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVy
cm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iX3MgOiByZXN1bHQuZXJyb3IoKTsKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRo
ZSBmb2xsb3dpbmcgZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4o
KTogJyV7cHVibGljfXMiLCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVz
c2FnZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lk
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmli
dXRpb25UcmlnZ2VyRGF0YSYmCiAKICAgICAgICAgICAgIGlmIChwdWJsaWNLZXlCYXNlNjRVUkwu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIlRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7Ci0gICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVGhlIHB1YmxpYyBrZXkgVVJMIHdh
cyBlbXB0eS4iKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBU
aGUgcHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiJfcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5
KCkgPyAiVW5rbm93biIgOiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVy
cm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIl9zIDogcmVz
dWx0LmVycm9yKCk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVw
ZGF0ZURlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNz
YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA1ZTFmYWIwOTRlMzcz
MTVkZWEzNDYwMWIxNzk0MWE1OWVlZmEzN2NiLi4xNDkyYzMxMDUxYWUzZDU2OWU0ODQ2ZjA1ZWU0
MDE1ZmI2MTYzNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTEyMiw3
ICsxMjIsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzdGFydFRyYW5zYWN0aW9uSWZO
ZWNlc3NhcnkoKQogYm9vbCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlm
TmVlZGVkKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIW1f
ZGF0YWJhc2UudGFibGVFeGlzdHMoIkl0ZW1UYWJsZSIpKQorICAgIGlmICghbV9kYXRhYmFzZS50
YWJsZUV4aXN0cygiSXRlbVRhYmxlIl9zKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBh
dXRvIHF1ZXJ5ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUgRlJP
TSBJdGVtVGFibGUgTElNSVQgMSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuY3BwCmluZGV4IDNhYWEzYzQ4MGU1ZjZhOTUzMGRmOGQ4Y2NlYmEyZTU3OWUwMDI4
MTAuLmUwOWQyZTlmMzZjYWIyNWMxNzU0MWM4NzQ5NmZmMjliOTFhMDUzYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6fkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigp
CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdAogewotICAgIHJldHVy
biBkYXRhYmFzZVBhdGgoc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLmxv
Y2Fsc3RvcmFnZSIpOworICAgIHJldHVybiBkYXRhYmFzZVBhdGgobWFrZVN0cmluZyhzZWN1cml0
eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSwgIi5sb2NhbHN0b3JhZ2UiKSk7CiB9CiAKIHZv
aWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkaWRPcGVuRGF0YWJhc2VXaXRoT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCkBAIC0xMjksNyArMTI5
LDcgQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4g
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKICAgICB9KTsKIH0KIAotU3RyaW5nIExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpIGNvbnN0CitTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBh
dGgoU3RyaW5nVmlldyBmaWxlbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IHRoaXMtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghU1FMaXRl
RmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMobG9jYWxTdG9yYWdlRGly
ZWN0b3J5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4
IDViYzEzZWMzNmY1ZDJhOTZmYzYxZTcwMjJjMWM4YTFlNWM3OTFhNGIuLjZkNmEwNWM4OWE3NTE2
MzlmNTJiODUwYjE5NmUzMTVmYjY4MGI2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIoU3RyaW5nJiYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgY29u
c3Q7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aChTdHJpbmdWaWV3IGZpbGVuYW1lKSBjb25zdDsK
ICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICBlbnVtIERh
dGFiYXNlT3BlbmluZ1N0cmF0ZWd5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA0MWNjNGQ5MjEw
YWMxNDg4ODVmYTIzNGJkMDkxMjkyMWYzZGMwMDVmLi4yZDgzNTkwMDEyMDMwNTJmMTY2MzM5OThl
NDQwYzNiNWY2YTZkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
U3RyaW5nIEVuZ2luZTo6c3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmkKICAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgU3RyaW5nIHNhbHRQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksICJzYWx0
Iik7CisgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJvb3REaXJlY3RvcnksICJzYWx0Il9zKTsKICAgICBhdXRvIHNhbHQgPSBGaWxlU3lz
dGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7CiAgICAgaWYgKCFzYWx0KQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIEVuZ2luZTo6aW5p
dGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogICAgIG1faW9RdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJvb3RQYXRoID0g
bV9yb290UGF0aC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhyb290UGF0aCk7Ci0gICAgICAgIFN0cmluZyBzYWx0UGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCwgInNhbHQi
KTsKKyAgICAgICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJvb3RQYXRoLCAic2FsdCJfcyk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2FsdCA9IEZpbGVT
eXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwCmluZGV4IGZkYTg1NGRlMzhhYmFhNGZlNDMxNzkxNjA1Y2M3NDg2ZDk2ZGI3
M2EuLjc3YWQwMGJiYWVhNTJkZWI3MzE0ZjA3ODkxNDljNDhlZTQ4NzFhMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTQzLDE3ICs0MywxNyBAQCB1c2luZyBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlOwogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUo
Y29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAiY2FjaGVzbGlzdCIpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9v
dFBhdGgsICJjYWNoZXNsaXN0Il9zKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVz
T3JpZ2luRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCAi
b3JpZ2luIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjYWNoZXNSb290UGF0aCwgIm9yaWdpbiJfcyk7CiB9CiAKIFN0cmluZyBDYWNoZXM6OmNhY2hl
c1NpemVGaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RzUGF0aCkKIHsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RzUGF0aCwg
ImVzdGltYXRlZHNpemUiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNhY2hlc1Jvb3RzUGF0aCwgImVzdGltYXRlZHNpemUiX3MpOwogfQogCiBSZWY8
Q2FjaGVzPiBDYWNoZXM6OmNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYgb3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBmODZkMTQzYjRlZTc4
NjhmYTcxZGU3MDk4NjE0MDE5NDkzODY5OWI2Li5mNWRkMzFmZmI1OTllY2YxMzNlYTA3M2FlYThh
ZDY3MTYyMThkZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQ2FjaGU6OkNhY2hlKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0
b3J5LCBSZWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAg
ICAgICAvLyBUcmlnZ2VycyB3aXRoICJ0b3VjaCAkY2FjaGVQYXRoL2R1bXAiLgotICAgICAgICBD
U3RyaW5nIGR1bXBGaWxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aElzb2xhdGVkQ29weSgpLCAiZHVtcCIp
KTsKKyAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGhJc29sYXRlZENv
cHkoKSwgImR1bXAiX3MpKTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZHVtcEZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChkdW1wRmlsZVBhdGguZGF0YSgpKSk7CiAgICAgICAg
IEdGaWxlTW9uaXRvciogbW9uaXRvciA9IGdfZmlsZV9tb25pdG9yX2ZpbGUoZHVtcEZpbGUuZ2V0
KCksIEdfRklMRV9NT05JVE9SX05PTkUsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobW9uaXRvciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGR1bXBG
aWxlQ2hhbmdlZCksIHRoaXMpOwpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgQ2FjaGU6OnRyYXZl
cnNlKEZ1bmN0aW9uPHZvaWQoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0cmF2ZXJzZUhhbmRs
ZXIpCiAKIFN0cmluZyBDYWNoZTo6ZHVtcEZpbGVQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+dmVyc2lvblBhdGgoKSwgImR1bXAu
anNvbiIpOworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52
ZXJzaW9uUGF0aCgpLCAiZHVtcC5qc29uIl9zKTsKIH0KIAogdm9pZCBDYWNoZTo6ZHVtcENvbnRl
bnRzVG9GaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggYzIzNDlhMDgyYjU2
OGRlYmUzZmE1NmQzNThkNTVkZDljNjg4ZjYyNC4uZjRlNjFkNjA1MmIzNmQ3NDg0OWJiZTY2YWMy
MjBmNmY0YThlMDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTEyMyw4ICsx
MjMsNyBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbGlu
a1BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAg
YXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IG1h
cEZpbGUocGF0aCk7CiAKICAgICByZXR1cm4geyBkYXRhLCBjb21wdXRlU0hBMShkYXRhLCBtX3Nh
bHQpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCBhZWUxMDJiZWM1MWJiMzQ2OTAyM2ZhNzc5NWE4
MjI3NDgxMzJmMjY2Li5hOTE2OThkNWRjNDJkODZjMjk3NzI3MGI3NGZlM2IxODVjNWU1YzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKSBjb25zdAogICAgIHJldHVybiBEYXRhOjphZG9wdE1hcChXVEZNb3Zl
KG1hcHBlZEZpbGUpLCBoYW5kbGUpOwogfQogCi1EYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0
aCkKK0RhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYXV0byBmaWxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
KTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCkBAIC02NCwxMSAr
NjQsNiBAQCBEYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCkKICAgICByZXR1cm4gYWRvcHRB
bmRNYXBGaWxlKGZpbGUsIDAsICpzaXplKTsKIH0KIAotRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gbWFwRmlsZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKLX0KLQogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IHNpemUpCiB7CiAgICAgaWYgKCFzaXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCmluZGV4IDMyODMyOTc2NzhjMTU0
ZWU0OTA3ZDMxNDkzY2JmN2Y4ZjAwM2NiYzAuLjEyNDkyNTllNGIwNTI2OTQ1YmM1NDVmMmY2NGEx
NDI3YjVlNTYwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCkBAIC0xMTEsNyArMTExLDYgQEAgcHJpdmF0ZToKIERh
dGEgY29uY2F0ZW5hdGUoY29uc3QgRGF0YSYsIGNvbnN0IERhdGEmKTsKIGJvb2wgYnl0ZXNFcXVh
bChjb25zdCBEYXRhJiwgY29uc3QgRGF0YSYpOwogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwotRGF0YSBt
YXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpOwogRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiAKIHVzaW5nIFNhbHQgPSBGaWxlU3lzdGVtOjpTYWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggMDkxY2EzYTA3MDUwNzVmYTc3ZDM4ODY1YjlmZTRhN2U0NDRmYjA5Yi4uYjFlNmZmM2Mw
NzhiZTg3MWQ5NTEwZmEzNzZjNDcwMGUzM2MxOWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIFN0cmluZyBtYWtlQ2FjaGVQYXRoKGNvbnN0IFN0cmlu
ZyYgYmFzZUNhY2hlUGF0aCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gUHV0IGRldmVsb3Bt
ZW50IGNhY2hlIHRvIGEgZGlmZmVyZW50IGRpcmVjdG9yeSB0byBhdm9pZCBhZmZlY3RpbmcgdGhl
IHN5c3RlbSBjYWNoZS4KICAgICBpZiAoIUF1eGlsaWFyeVByb2Nlc3M6OmlzU3lzdGVtV2ViS2l0
KCkpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
YmFzZUNhY2hlUGF0aCwgIkRldmVsb3BtZW50Iik7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlUGF0aCwgIkRldmVsb3BtZW50Il9z
KTsKICNlbmRpZgogICAgIHJldHVybiBiYXNlQ2FjaGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbQppbmRleCA0MzIyZTQ0ZThlYTA2M2MzZGFhOGUyYzZkZTdh
NWEwODVmNWE4MWU4Li40MmY4ODgyNTA0NzZiZWQ3MzI0YjY3MjNiMzc0OTJmOGY1NWZkYmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbQpAQCAtMTQyLDggKzE0Miw4
IEBAIHZvaWQgTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAg
ICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCB4
cGNNZXNzYWdlTmFtZUtleSk7Ci0gICAgICAgIGlmIChtZXNzYWdlTmFtZSAhPSBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNSZXF1ZXN0TGF1bmNoU2VydmljZXNEYXRhYmFz
ZVVwZGF0ZU1lc3NhZ2VOYW1lKQorICAgICAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIHhwY01lc3NhZ2VOYW1lS2V5KTsKKyAgICAgICAgaWYg
KExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFudHM6OnhwY1JlcXVlc3RMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUgIT0gbWVzc2FnZU5hbWUpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHN0YXJ0T2JzZXJ2aW5nKGNvbm5lY3Rpb24pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZU1hbmFnZXIuY3BwCmluZGV4IDBhN2U0ZDNjNDcxOWQyODZjN2I5YmM1YjNlMzMxM2VhZmFl
YmFiYzguLmU4ODE5MzA3ZTJkNGFhNTQ1MDJjNTZiMGJlYmI4NjRhODkzOTcyZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VNYW5hZ2VyLmNwcApAQCAtMTIyLDggKzEyMiw4IEBAIEhhc2hTZXQ8V2ViQ29yZTo6Q2xpZW50
T3JpZ2luPiBJREJTdG9yYWdlTWFuYWdlcjo6b3JpZ2luc09mSURCU3RvcmFnZURhdGEoY29uc3QK
ICAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBvcmlnaW5z
OwogCi0gICAgZ2V0T3JpZ2luc0ZvclZlcnNpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJvb3REaXJlY3RvcnksICJ2MCIpLCBvcmlnaW5zKTsKLSAgICBnZXRPcmlnaW5z
Rm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVj
dG9yeSwgInYxIiksIG9yaWdpbnMpOworICAgIGdldE9yaWdpbnNGb3JWZXJzaW9uKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCAidjAiX3MpLCBvcmln
aW5zKTsKKyAgICBnZXRPcmlnaW5zRm9yVmVyc2lvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgInYxIl9zKSwgb3JpZ2lucyk7CiAKICAgICByZXR1
cm4gb3JpZ2luczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjZDJjNTFmNTE5YzRj
MGNkMTcxOGJiNWZlOTE3YmY3Njc4MzFjYzliLi4yNmJjOTA3OWJiMmY5NmRlNzlhZDA1MTlkNzcy
YTBjMGIxNjVhYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IFN0cmluZyBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSkKICAgICBpZiAoZGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgU3RyaW5nVmlldyB7IHNfZmlsZU5hbWUgfSk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3Rvcnks
IHNfZmlsZU5hbWUpOwogfQogCiBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VNYW5h
Z2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgU3RvcmFnZUFyZWFSZWdpc3RyeSYgcmVnaXN0cnkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYxZWVjYjRhYzA0ZmIxODhhNzY1MzAwYTU2
M2FkODgwZDljMDg3MjAuLmY5YmIyODVjMmU0MWE0ZDE4OGUwNTA0N2Y4ZTczMDIwYzBlOGYyN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBJUEM6OkNvbm4KICAgICAgICAgbV9jdXN0b21JREJTdG9yYWdlUGF0aCA9IGN1c3Rv
bUlEQlN0b3JhZ2VQYXRoOwogICAgICAgICBtX2N1c3RvbUNhY2hlU3RvcmFnZVBhdGggPSBjdXN0
b21DYWNoZVN0b3JhZ2VQYXRoOwogICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9wYXRoLCAic2FsdCIpOworICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Il9zKTsKICAgICAg
ICAgICAgIG1fc2FsdCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0
KHNhbHRQYXRoKSk7CiAgICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlMWU2YjE2M2MwMjAwMTE2ZmZmNTc2YjE1
OWUxYjc4Y2JjYWNiZDdmLi5jNDJhMTM5NDIzNWI4ZWQxYjBlOTJlZjg3MGU0OWZjZWFlNDY4MzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yMDgsNiArMjA4LDMyIEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8
U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN0cmluZyYKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KK3ZvaWQgQXJndW1lbnRDb2RlcjxT
dHJpbmdWaWV3Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQor
eworICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCisgICAgaWYgKHN0cmluZy5p
c051bGwoKSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQzMl90IGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBib29sIGlzOEJpdCA9IHN0cmluZy5pczhCaXQoKTsK
KworICAgIGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKKworICAgIGlmIChpczhCaXQpCisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBsZW5ndGggKiBzaXplb2YoTENoYXIpLCBhbGlnbm9mKExDaGFyKSk7CisgICAgZWxzZQorICAg
ICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIp
LCBhbGlnbm9mKFVDaGFyKSk7Cit9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmlu
Z1ZpZXc+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIFN0cmluZ1ZpZXcpOwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmdWaWV3Pjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIFN0cmluZ1ZpZXcpOwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmdWaWV3Pjo6ZW5jb2RlPFdlYktpdDo6RGFlbW9uOjpF
bmNvZGVyPihXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciYsIFN0cmluZ1ZpZXcpOworCiB2b2lkIEFy
Z3VtZW50Q29kZXI8U0hBMTo6RGlnZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNIQTE6OkRpZ2VzdCYgZGlnZXN0KQogewogICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGRpZ2VzdC5kYXRhKCksIHNpemVvZihkaWdlc3QpLCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGIzZDYyNTFkMDUyNjliNjk0Y2MwYzUw
OWQyMDY2M2U4ZDA2YzU4NTkuLjZkODE0ZDQxNTI4NmE5NWFiY2Q5ODVkYmEwNGRiMGNiZDI2NGE4
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAt
ODI5LDYgKzgyOSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0cmluZz4g
ewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nVmlldz4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBTdHJpbmdWaWV3KTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U0hB
MTo6RGlnZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBTSEEx
OjpEaWdlc3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBTSEExOjpEaWdlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0pTSVBDQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQ
Q0JpbmRpbmcuY3BwCmluZGV4IDBiZTM5NWMxYzM3YzJmZTdjYjNjYzNhNWI0OTU2MmFmYzczOWU2
NGEuLmU1OTJhYTAxYzZjNDExNGVkMGM3ODUzM2MwOWVkYTRmMTFiN2FmNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcApAQCAtODksNyArODksNyBAQCBK
U0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgYgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJib29sIikpOworICAgIG9iamVjdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJib29sIl9zKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNDOjpKU1ZhbHVlKCkpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2YWx1ZSJfcyksIEpTQzo6anNCb29sZWFuKHZhbHVlKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwpAQCAtOTks
NjcgKzk5LDY3IEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBiCiB0ZW1wbGF0ZTw+CiBKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVj
b2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJkb3VibGUiKTsK
KyAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxP
YmplY3QsIHZhbHVlLCAiZG91YmxlIl9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVl
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGZsb2F0IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51
bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJmbG9hdCIpOworICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJmbG9hdCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVl
Rm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQ4X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0Fy
Z3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDhfdCIpOworICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJpbnQ4X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50
MTZfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1l
bnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50MTZfdCIpOworICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJp
bnQxNl90Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNv
ZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMy
X3QgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1
ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAiaW50
MzJfdCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2Rl
ZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90
IHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZh
bHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImludDY0
X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDhfdCB2
YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1
ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDhfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9y
RGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50OF90
Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQxNl90IHZh
bHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVl
KGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MTZfdCIpOworICAgIHJldHVybiBqc1ZhbHVlRm9y
RGVjb2RlZE51bWVyaWNBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUsICJ1aW50MTZf
dCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFy
Z3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50MzJfdCB2
YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1
ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDMyX3QiKTsKKyAgICByZXR1cm4ganNWYWx1ZUZv
ckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAidWludDMy
X3QiX3MpOwogfQogCiB0ZW1wbGF0ZTw+CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3Qg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFs
dWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ2NF90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInVpbnQ2
NF90Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB2
YWx1ZSkKIHsKLSAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWROdW1lcmljQXJndW1lbnRWYWx1
ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAic2l6ZV90Iik7CisgICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkTnVtZXJpY0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgInNpemVfdCJf
cyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlY3RUeXBlPgpAQCAtMTg1LDEzICsxODUsMTMg
QEAgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY28KIHRlbXBsYXRlPD4KIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJJbnRSZWN0Iik7CisgICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUs
ICJJbnRSZWN0Il9zKTsKIH0KIAogdGVtcGxhdGU8PgogSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdl
YkNvcmU6OkZsb2F0UmVjdCYmIHZhbHVlKQogewotICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2Rl
ZEFyZ3VtZW50UmVjdChnbG9iYWxPYmplY3QsIHZhbHVlLCAiRmxvYXRSZWN0Iik7CisgICAgcmV0
dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJG
bG9hdFJlY3QiX3MpOwogfQogCiBib29sIHB1dEpTVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRBdElu
ZGV4T3JBcnJheUJ1ZmZlcklmVW5kZWZpbmVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVm
ZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5l
cmIKaW5kZXggOWQyYmM3YTIyNjI5Mjk2Yzc0MTZkY2I1MDAyMzhiZWY0ZmYyOWI1ZS4uODMwZWJh
YjhlODYyMTgwZWIwMzBhNjUzOTY2MjZmNDM4OTEwYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsRmVhdHVyZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCkBA
IC00MSw3ICs0MSw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJl
ZmVyZW5jZXM6OmV4cGVyaW1lbnRhbEZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24g
LSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJ
OjpFeHBlcmltZW50YWxGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1l
ICU+LCAiPCU9IEBwcmVmLm5hbWUgJT4iLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0
aW9uICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhp
ZGRlbiAlPiksCisgICAgICAgIEFQSTo6RXhwZXJpbWVudGFsRmVhdHVyZTo6Y3JlYXRlKFN0cmlu
ZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiB9LCAiPCU9IEBwcmVmLm5hbWUgJT4i
X3MsIFN0cmluZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4gfSwgREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAog
PCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJl
bmNlc0ludGVybmFsRGVidWdGZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
LmNwcC5lcmIKaW5kZXggODQ5Y2Y2ZjdhODg1NzNkZjI3OWYzYWVkMjUxMTA1MDVmN2I2YzM0Ni4u
ZTU2N2Y0NWIxZTQ0NTE2YjUyYjAzNjUwYmI5ZjJlOTY0Yjg0OWIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNw
cC5lcmIKQEAgLTQwLDcgKzQwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
JiBXZWJQcmVmZXJlbmNlczo6aW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5j
b25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAg
ICAgICAgQVBJOjpJbnRlcm5hbERlYnVnRmVhdHVyZTo6Y3JlYXRlKDwlPSBAcHJlZi5odW1hblJl
YWRhYmxlTmFtZSAlPiwgIjwlPSBAcHJlZi5uYW1lICU+IiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbiAlPiwgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwl
PSBAcHJlZi5oaWRkZW4gJT4pLAorICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpj
cmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+IH0sICI8JT0gQHBy
ZWYubmFtZSAlPiJfcywgU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlv
biAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhp
ZGRlbiAlPiksCiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQppbmRleCA1YzYzMWVkZGM5NjdjY2U4YTExMGJjNDBkMjc2OWUyY2Y5MzVkNjQ2
Li5hNmUyNWNjNDAzNDY3YTUwM2U4ZWVjMTA3YThmN2U0N2Y4MWMzODMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpA
QCAtNDIsOSArNDIsOSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBj
bGFzc05hbWVLZXkgPSAiJGNsYXNzIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvYmplY3RT
dHJlYW1LZXkgPSAiJG9iamVjdFN0cmVhbSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nS2V5ID0gIiRzdHJpbmciOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNsYXNzTmFtZUtleSA9
ICIkY2xhc3MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gb2JqZWN0U3RyZWFtS2V5ID0gIiRv
YmplY3RTdHJlYW0iX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc3RyaW5nS2V5ID0gIiRzdHJp
bmciX3M7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHNlbGVjdG9yS2V5ID0gQCJzZWxlY3Rv
ciI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB0eXBlU3RyaW5nS2V5ID0gQCJ0eXBlU3RyaW5n
IjsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVPYmplY3QoV0tSZW1vdGVP
YmplY3RFbmNvZGVyICplbmNvZGVyLCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZXItPl9vYmpl
Y3RzQmVpbmdFbmNvZGVkLnJlbW92ZShvYmplY3QpOwogICAgIH0pOwogCi0gICAgZW5jb2Rlci0+
X2N1cnJlbnREaWN0aW9uYXJ5LT5zZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRl
KGNsYXNzX2dldE5hbWUob2JqZWN0Q2xhc3MpKSk7CisgICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0
aW9uYXJ5LT5zZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGNs
YXNzX2dldE5hbWUob2JqZWN0Q2xhc3MpIH0pKTsKIAogICAgIGlmIChbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W05TSW52b2NhdGlvbiBjbGFzc11dKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gc3Bl
Y2lhbCBjYXNlIE5TSW52b2NhdGlvbiBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGVuY29kZSB0aGUg
dGFyZ2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGI5ODk2NmVjYWQ0MWI0OGVlY2QyNTgyMmI0
YzNjMWU2ZDk4YTA4N2UuLjdkODg1NjIyODQ4ZWY3Zjc5YTRkZjFkMzNjZDYwN2E3ZjJlMTQ1NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKV9zZW5kSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9i
amVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVX
aXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2Iikp
CiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRp
b24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQn
LiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJl
cGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBs
eUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOwor
ICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2Nh
dGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCBTdHJpbmcgeyByZXBs
eUJsb2NrU2lnbmF0dXJlIH0pOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVj
dCBzbyB3ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0
cjsKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogICAgIGlmICgh
dGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJu
IFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4
OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7CisgICAgcmV0dXJuIFt0YXJnZXRN
ZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5k
ZXhdLl90eXBlU3RyaW5nOwogfQogCiAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktp
dDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdGlvbgpAQCAtMjcw
LDcgKzI3MCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVP
YmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0
aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25h
dHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOworICAgICAgICBTdHJp
bmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhP
YmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0
cmluZzsKICAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2Nr
U2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsK
IAogICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQ
Q0NvbnN0YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvTGF1bmNoU2VydmljZXNE
YXRhYmFzZVhQQ0NvbnN0YW50cy5oCmluZGV4IDFiZTJhODAwN2MyNzc2N2JmOWE1OGE5ZDJiOTg3
ZTU2NzRkZmNhMzkuLjI4MzJhOTkxNmRmYjM4NzNlNzY3ODMyM2NmOTc1Y2NiYTU1YjQ1N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9MYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzLmgKQEAgLTI1LDE1ICsyNSwxNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oPgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENDb25zdGFu
dHMgewogCi1jb25zdGV4cHIgYXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVz
c2FnZU5hbWUgPSAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIjsKLWNv
bnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VLZXkgPSAibGF1bmNoLXNlcnZp
Y2VzLWRhdGFiYXNlIjsKLWNvbnN0ZXhwciBhdXRvIHhwY1JlcXVlc3RMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlVXBkYXRlTWVzc2FnZU5hbWUgPSAicmVxdWVzdC1sYXVuY2gtc2VydmljZXMtZGF0YWJh
c2UtdXBkYXRlLW1lc3NhZ2UiOwotY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0VuZHBvaW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNlcnZpY2VzLWRh
dGFiYXNlIjsKLWNvbnN0ZXhwciBhdXRvIHhwY0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VYUENFbmRw
b2ludE1lc3NhZ2VOYW1lID0gInhwYy1lbmRwb2ludC1sYXVuY2gtc2VydmljZXMtZGF0YWJhc2Ut
bWVzc2FnZSI7Citjb25zdGV4cHIgYXV0byB4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
TWVzc2FnZU5hbWUgPSAidXBkYXRlLWxhdW5jaC1zZXJ2aWNlcy1kYXRhYmFzZS1tZXNzYWdlIl9z
OworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSA9ICJsYXVuY2gt
c2VydmljZXMtZGF0YWJhc2UiX3M7Citjb25zdGV4cHIgYXV0byB4cGNSZXF1ZXN0TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVVwZGF0ZU1lc3NhZ2VOYW1lID0gInJlcXVlc3QtbGF1bmNoLXNlcnZpY2Vz
LWRhdGFiYXNlLXVwZGF0ZS1tZXNzYWdlIl9zOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TmFtZUtleSA9ICJ4cGMtZW5kcG9pbnQtbGF1bmNoLXNl
cnZpY2VzLWRhdGFiYXNlIl9zOworY29uc3RleHByIGF1dG8geHBjTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUgPSAieHBjLWVuZHBvaW50LWxhdW5jaC1zZXJ2aWNl
cy1kYXRhYmFzZS1tZXNzYWdlIl9zOwogfSAvLyBuYW1lc3BhY2UgTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0NvbnN0YW50cwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA1YmE5
MmJiODIzOWYyODA5YjAxODRjNGRmNzMwOTk5YzQzMGY0ZDQ1Li5mNjFiN2Y0NDljN2JkMDY1MDFh
NGVmMDg2YjVhOTExMjhmYTlhYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0xODUsMjcgKzE4NSwyNyBAQCBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmIGhh
bmRsZSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNhbmRib3hFeHRlbnNpb24oaGFuZGxlKSk7
CiB9CiAKLVN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK1N0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1Zp
ZXcgcGF0aCkKIHsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRIX01BWF0gPSB7IDAgfTsKICAg
ICByZWFscGF0aChwYXRoLnV0ZjgoKS5kYXRhKCksIHJlc29sdmVkUGF0aCk7CiAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocmVzb2x2ZWRQYXRoKTsKIH0KIAotU3RyaW5nIHJlc29sdmVBbmRD
cmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
cGF0aCkKK1N0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJv
eEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7
Ci0gICAgTlNTdHJpbmcgKm5zUGF0aCA9IHBhdGg7CisgICAgYXV0byBuc1BhdGggPSBwYXRoLmNy
ZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKTsKIAotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6bnNQYXRoIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXSkgewotICAg
ICAgICBOU0xvZyhAImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJUBcIiBmb3IgZnV0dXJl
IHNhbmRib3ggZXh0ZW5zaW9uLCBlcnJvciAlQCIsIG5zUGF0aCwgZXJyb3IpOworICAgIGlmICgh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6bnNQ
YXRoLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6JmVycm9yXSkgeworICAgICAgICBOU0xvZyhAImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0
b3J5IFwiJUBcIiBmb3IgZnV0dXJlIHNhbmRib3ggZXh0ZW5zaW9uLCBlcnJvciAlQCIsIG5zUGF0
aC5nZXQoKSwgZXJyb3IpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVy
biByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiB9CiAKLVN0cmluZyByZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIHJl
c29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpCiB7CiAgICAgU3Ry
aW5nIHJlc29sdmVkUGF0aCA9IHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgocGF0aCk7
CiAgICAgaWYgKHJlc29sdmVkUGF0aC5pc051bGwoKSkgewpAQCAtMjE2LDcgKzIxNiw3IEBAIFN0
cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIHJldHVybiByZXNvbHZlZFBhdGg7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5
cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5cGUgdHlwZSkg
LT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NF
UlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwpAQCAtMjI5LDcgKzIyOSw3IEBAIGF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoLCBUeXBlCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBl
IHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoU3RyaW5nVmlldyBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgogewogICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChy
ZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQpAQCAtMjU5LDcg
KzI1OSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9y
RmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zCiAgICAgfSk7CiB9CiAKLWF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3IHBhdGgpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewogICAgIFN0cmluZyByZXNvbHZlZFBhdGggPSByZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKTsK
ICAgICBpZiAocmVzb2x2ZWRQYXRoLmlzTnVsbCgpKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkgLT4KICAgICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgocmVzb2x2ZWRQYXRoLCBUeXBlOjpSZWFkV3JpdGUpOwogfQogCi1hdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+
PgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0
cmluZ1ZpZXcgcHJlZml4LCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhh
bmRsZSwgU3RyaW5nPj4KIHsKICAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxl
Lm1fc2FuZGJveEV4dGVuc2lvbik7CkBAIC0yODQsMTEgKzI4NCwxNiBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFR5cGUgdAogICAgIGlmIChwYXRoLmxhc3QoKSAhPSAnLycpCiAgICAgICAgIHBhdGguYXBw
ZW5kKCcvJyk7CiAgICAgCi0gICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuICAgIAotICAgIHBh
dGguYXBwZW5kKHByZWZpeC51dGY4KCkuZGF0YSgpLCBwcmVmaXgubGVuZ3RoKCkpOworICAgIC8v
IEFwcGVuZCB0aGUgZmlsZSBuYW1lLgorICAgIGF1dG8gcHJlZml4QXNVVEY4ID0gcHJlZml4LnV0
ZjgoKTsKKyAgICBwYXRoLmFwcGVuZChwcmVmaXhBc1VURjguZGF0YSgpLCBwcmVmaXhBc1VURjgu
bGVuZ3RoKCkpOwogICAgIHBhdGguYXBwZW5kKCdcMCcpOworCisgICAgYXV0byBwYXRoU3RyaW5n
ID0gU3RyaW5nOjpmcm9tVVRGOChwYXRoLmRhdGEoKSk7CisgICAgaWYgKHBhdGhTdHJpbmcuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgaGFuZGxlLm1f
c2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOwor
ICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3Jl
YXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoU3RyaW5nKS5kYXRh
KCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzM5LDcgKzM0NCw3IEBA
IGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjpp
bml0aWFsaXplcl9saXN0PGNvbnN0IEFTCiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNo
TG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRU
b2tlbiwgZmxhZ3MpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0
VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9r
ZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBIYW5kbGUg
aGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0K
aW5kZXggZjllZjU4ZDQwMGVhY2U0YTE4Njc1M2JjNjlkOTM1NTlkMWZlNWJjOC4uNDI2MDQyNjA5
Y2ZmOGQxOTA4NDhkZmEzOGQxMDc5YmQ3ZjgyNWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtNzIsMTMgKzcy
LDEzIEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENvbm5lY3Rpb25J
ZGVudGlmaWVyKElQQzo6Q29ubmVjdGlvbjo6SWRlCiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxp
emVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRJZGVudGlmaWVy
KQogewotICAgIGNsaWVudElkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1f
aW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKTsKKyAgICBjbGllbnRJZGVu
dGlmaWVyID0gU3RyaW5nOjpmcm9tVVRGOCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5p
dGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIiKSk7CiAgICAgcmV0dXJuICFjbGll
bnRJZGVudGlmaWVyLmlzRW1wdHkoKTsKIH0KIAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcihTdHJpbmcmIGNsaWVudEJ1bmRsZUlk
ZW50aWZpZXIpCiB7Ci0gICAgY2xpZW50QnVuZGxlSWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5
X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtYnVuZGxlLWlkZW50aWZp
ZXIiKTsKKyAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRlbnRp
ZmllciIpIH07CiAgICAgcmV0dXJuICFjbGllbnRCdW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKTsK
IH0KIApAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdh
dGU6OmdldFByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmCiAKIGJvb2wg
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmlu
ZyYgY2xpZW50UHJvY2Vzc05hbWUpCiB7Ci0gICAgY2xpZW50UHJvY2Vzc05hbWUgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1l
Iik7CisgICAgY2xpZW50UHJvY2Vzc05hbWUgPSBTdHJpbmcgeyB4cGNfZGljdGlvbmFyeV9nZXRf
c3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJvY2Vzcy1uYW1lIikgfTsKICAgICBy
ZXR1cm4gIWNsaWVudFByb2Nlc3NOYW1lLmlzRW1wdHkoKTsKIH0KIApAQCAtMTE5LDMwICsxMTks
MzAgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFs
aXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFMKIHsKICAgICB4cGNfb2JqZWN0X3QgZXh0cmFE
YXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1f
aW5pdGlhbGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5pdGlhbGl6YXRpb24tZGF0YSIpOwogCi0gICAg
U3RyaW5nIGluc3BlY3RvclByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJh
RGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIik7CisgICAg
U3RyaW5nIGluc3BlY3RvclByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJh
RGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIikgfTsKICAg
ICBpZiAoIWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQoImluc3BlY3Rvci1wcm9jZXNzIl9zLCBpbnNwZWN0b3JQcm9jZXNzKTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBTdHJpbmcgc2VydmljZVdvcmtlclBy
b2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9u
RGF0YU9iamVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKTsKKyAgICBTdHJpbmcgc2Vydmlj
ZVdvcmtlclByb2Nlc3MgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRp
YWxpemF0aW9uRGF0YU9iamVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSB9OwogICAgIGlm
ICghc2VydmljZVdvcmtlclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsIFdURk1vdmUoc2Vydmlj
ZVdvcmtlclByb2Nlc3MpKTsKLSAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4gPSB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInJl
Z2lzdHJhYmxlLWRvbWFpbiIpOworICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiB7IHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAi
cmVnaXN0cmFibGUtZG9tYWluIikgfTsKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1k
b21haW4iX3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKTsKICNlbmRpZgogCi0gICAgU3Ry
aW5nIGlzUHJld2FybWVkUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFE
YXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJld2FybWVkIik7CisgICAgU3RyaW5n
IGlzUHJld2FybWVkUHJvY2VzcyB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJld2FybWVkIikgfTsKICAgICBpZiAoIWlz
UHJld2FybWVkUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmFkZCgiaXMtcHJld2FybWVkIl9zLCBpc1ByZXdhcm1lZFByb2Nlc3MpOwogCiAgICAgaWYg
KCFpc0NsaWVudFNhbmRib3hlZCgpKSB7Ci0gICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3Vm
Zml4ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKTsKKyAgICAgICAgU3RyaW5nIHVzZXJE
aXJlY3RvcnlTdWZmaXggeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRp
YWxpemF0aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpIH07CiAgICAgICAg
IGlmICghdXNlckRpcmVjdG9yeVN1ZmZpeC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVj
dG9yeVN1ZmZpeCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQ
cmlvcml0eSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRp
b25EYXRhT2JqZWN0LCAiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpOworICAg
IFN0cmluZyBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgeyB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImFsd2F5cy1ydW5z
LWF0LWJhY2tncm91bmQtcHJpb3JpdHkiKSB9OwogICAgIGlmICghYWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
YWRkKCJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCBhbHdheXNSdW5zQXRC
YWNrZ3JvdW5kUHJpb3JpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW0KaW5kZXggZDg2MGU3YzdhYjA2MDE2ZmRmMTA3YzRjZjFkZGE1YzM3
ZjMzMmZiMS4uMTA4Y2IwOGFhYjhlNmU1MTg1YWE1MWFiYjBiNmRmMmI1MzQ0MTM2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMjAz
LDcgKzIwMyw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIFN0cmluZyB3ZWJLaXRCdW5kbGVW
ZXJzaW9uID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJL
aXRCdW5kbGVWZXJzaW9uIik7CisgICAgICAgIFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9uIHsg
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVW
ZXJzaW9uIikgfTsKICAgICAgICAgU3RyaW5nIGV4cGVjdGVkQnVuZGxlVmVyc2lvbiA9IFtOU0J1
bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXS5pbmZvRGljdGlv
bmFyeVsoX19icmlkZ2UgTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsKICAgICAgICAg
aWYgKCF3ZWJLaXRCdW5kbGVWZXJzaW9uLmlzTnVsbCgpICYmICFleHBlY3RlZEJ1bmRsZVZlcnNp
b24uaXNOdWxsKCkgJiYgd2ViS2l0QnVuZGxlVmVyc2lvbiAhPSBleHBlY3RlZEJ1bmRsZVZlcnNp
b24pIHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiV2ViS2l0
IGZyYW1ld29yayB2ZXJzaW9uIG1pc21hdGNoOiAiLCB3ZWJLaXRCdW5kbGVWZXJzaW9uLCAiICE9
ICIsIGV4cGVjdGVkQnVuZGxlVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcApp
bmRleCAwZDU3NGIwY2M1MDM0MTMzMjE3ZmUzOWYwYjA0MGI1NzlkMmZjMWMwLi4xYjhjNDczOWI2
MDY2MGFkYzdhYTc3NzgwMmIyZTM0NmEzMWVjN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgV0tNZXNz
YWdlVGVzdERyaXZlckZ1bmMgbWVzc2FnZVRlc3REcml2ZXIoU3RyaW5nJiYgZHJpdmVyTmFtZSkK
IHsKICAgICBpZiAoZHJpdmVyTmFtZS5pc0VtcHR5KCkgfHwgZHJpdmVyTmFtZSA9PSAiZGVmYXVs
dCIpCi0gICAgICAgIGRyaXZlck5hbWUgPSBnZXRlbnYoIldFQktJVF9NRVNTQUdFX1RFU1RfREVG
QVVMVF9EUklWRVIiKTsKKyAgICAgICAgZHJpdmVyTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoZ2V0
ZW52KCJXRUJLSVRfTUVTU0FHRV9URVNUX0RFRkFVTFRfRFJJVkVSIikpOwogICAgIGlmIChkcml2
ZXJOYW1lLmlzRW1wdHkoKSB8fCBkcml2ZXJOYW1lID09ICJkZWZhdWx0IikKICAgICAgICAgcmV0
dXJuIGRlZmF1bHRUZXN0RHJpdmVyOwogICAgIGF1dG8gdGVzdERyaXZlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V0tNZXNzYWdlVGVzdERyaXZlckZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgZHJpdmVy
TmFtZS51dGY4KCkuZGF0YSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5jcHAKaW5kZXggODY2NDlhNzcxMWRiYTcxNGVhYTAxNWYzZjI2Zjlm
N2Q2YzI3ZDk1ZS4uYTEwYjhjNzE0MGQ4ODE5ZDIyNWM5YzE5ZmFlYzhmNzllNTViNDIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApA
QCAtNDgsNyArNDgsNyBAQCBXVEY6OlN0cmluZyBleHRlbnNpb25FcnJvclRvU3RyaW5nKEV4dGVu
c2lvbkVycm9yIGVycm9yKQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAiSW50ZXJuYWxFcnJvciI7CisgICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIl9zOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRl
bnNpb24uaAppbmRleCA1ZGRhMzBjZDdmNjE3OWY4MzhjOTBkYzJhZjU3ODNiYTUyMWU2ZTkyLi5i
MmJhNTIzMjJjZGE0OTk4NzU4MjUxYzIwMjM5NTQxOTIyNWRjMGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC04NCwxNyArODQsMTcgQEAgcHVibGljOgogICAg
IH07CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFu
ZGxlJiYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiBjcmVhdGVIYW5kbGUoU3RyaW5nVmlldyBwYXRoLCBUeXBlKTsKICAgICBzdGF0aWMgVmVjdG9y
PEhhbmRsZT4gY3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xh
YmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5n
JiBwYXRoLCBUeXBlKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpOyAvLyBXaWxsIGF0
dGVtcHQgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkuCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4gY3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlPiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChTdHJpbmdWaWV3IHBhdGgsIFR5
cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KFN0cmluZ1ZpZXcgcGF0aCk7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVh
dGUgdGhlIGRpcmVjdG9yeS4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFu
ZGxlLCBTdHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJl
Zml4LCBUeXBlKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRs
ZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBz
dGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25z
dCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBP
cHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFu
ZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29u
c3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90Piwg
T3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBhdWRpdF90b2tlbl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+
IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90
b2tlbl90KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
cklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAg
ICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5z
aW9ucyhTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2Vu
ZGlmCkBAIC0xMTgsOSArMTE4LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotU3RyaW5nIHN0
cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmlu
ZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0
cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIHBhdGgpOworU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJ
blBhdGgoU3RyaW5nVmlldyBwYXRoKTsKK1N0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRl
bnNpb24oU3RyaW5nVmlldyBwYXRoKTsKK1N0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpOwogCiAjaWYgIUVO
QUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAKQEAgLTEyOSwxMSArMTI5LDExIEBAIGlubGluZSBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKSB7IH0KIGlubGluZSB2b2lkIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0IHsgfQogaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBIYW5kbGUgeyB9OyB9
CiBpbmxpbmUgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShIYW5kbGUmJikgeyByZXR1cm4gbnVsbHB0cjsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoU3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSAtPiBWZWN0b3I8SGFuZGxlPiB7IHJldHVybiB7IH07IH0KLWlubGluZSBhdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0
IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUg
eyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsg
cmV0dXJuIEhhbmRsZSB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6OnBhaXI8SGFuZGxl
LCBTdHJpbmc+IHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoU3RyaW5nVmlldywgVHlwZSkgLT4gc3RkOjpvcHRpb25h
bDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShTdHJpbmdWaWV3KSAtPiBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3
LCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0
dXJuIHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4geyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCkg
LT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBT
YW5kYm94RXh0ZW5zaW9uOjp+U2FuZGJveEV4dGVuc2lvbigpIHsgfQogaW5saW5lIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6cmV2b2tlKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTQxLDkgKzE0MSw5
IEBAIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVl
OyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKSB7
IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVy
bWFuZW50bHkoY29uc3QgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5kbGU+Jikg
eyByZXR1cm4gdHJ1ZTsgfQotaW5saW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtz
SW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQotaW5saW5lIFN0cmlu
ZyByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJl
dHVybiBwYXRoOyB9Ci1pbmxpbmUgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJl
Y3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0
aDsgfQoraW5saW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmlu
Z1ZpZXcgcGF0aCkgeyByZXR1cm4gcGF0aC50b1N0cmluZygpOyB9CitpbmxpbmUgU3RyaW5nIHJl
c29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBh
dGgudG9TdHJpbmcoKTsgfQoraW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmdWaWV3IHBhdGgpIHsgcmV0dXJuIHBh
dGgudG9TdHJpbmcoKTsgfQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCBlMDVhY2NjZTdmZjE0ZTYwMjExMzFmZTMy
ZmE4NjY5MWQ0MWI2OGI3Li44ZjI1OWRhNmQ1MTAyNmNjZDYxODliYmVjYTQ4ZDUzZGI5ODFkYjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5t
bQpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuZGJveERhdGFWYXVsdFBhcmVu
dERpcmVjdG9yeSgpCiAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmlj
YWxpemUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgp
LCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsK
ICAgICB9Ci0gICAgcmV0dXJuIHJlc29sdmVkUGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChyZXNvbHZlZFBhdGgpOwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbmRib3hEaXJlY3Rvcnko
V2ViQ29yZTo6QXV4aWxpYXJ5UHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYg
cGFyZW50RGlyZWN0b3J5KQpAQCAtNzA0LDkgKzcwNCw5IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJh
bWV0CiAKICAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0RJUiIs
IHB3ZC5wd19kaXIpOwogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwd2QucHdf
ZGlyKTsKLSAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKKyAgICBwYXRoLmFwcGVuZCgiL0xp
YnJhcnkiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVf
TElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpKTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7CisgICAgcGF0aC5hcHBl
bmQoIi9QcmVmZXJlbmNlcyJfcyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFt
ZXRlcigiSE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4Nl82NCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDkyMGRlMDBiYjY4
NjIwMmI2YzFkNjRmYWFkNzEyMzU5YzE2MDI3OGYuLjliZGU1MDUyN2QzNTU1ZWIzMjczODM2NWEx
ZjdjMmZjNGYxMzhjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJF
dmVudEZhY3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFj
dG9yeS5tbQpAQCAtNDY5LDIwICs0NjksMjAgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wgaGEKIAog
ICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRv
IHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KICAgICBpZiAod2lu
ZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewotICAgICAgICB0ZXh0ID0gIlxyIjsK
LSAgICAgICAgdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICB0ZXh0ID0gIlxyIl9zOwor
ICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCiAgICAgLy8gQXBwS2l0IHNl
dHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3JyZWN0IEtleWJvYXJk
RXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2Rl
ID09IFZLX0JBQ0spIHsKLSAgICAgICAgdGV4dCA9ICJceDgiOwotICAgICAgICB1bm1vZGlmaWVk
VGV4dCA9ICJceDgiOworICAgICAgICB0ZXh0ID0gIlx4OCJfczsKKyAgICAgICAgdW5tb2RpZmll
ZFRleHQgPSB0ZXh0OwogICAgIH0KIAogICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdl
IGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0
LXRhYi4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikgewotICAgICAg
ICB0ZXh0ID0gIlx4OSI7Ci0gICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4OSI7CisgICAgICAg
IHRleHQgPSAiXHg5Il9zOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQog
CiAgICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5tb2RpZmllZFRleHQs
IGtleSwgY29kZSwga2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVW
aXJ0dWFsS2V5Q29kZSwgbWFjQ2hhckNvZGUsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBjb21tYW5k
cywgYXV0b1JlcGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmllcnMsIHRpbWVzdGFt
cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcAppbmRleCBjMGE2NGZlZmJkMmY0NWMxMmFkOWNiZTJjNzg4M2IyNTE5
ZDg4YjQ0Li43ZjY4ZmQzMjM2N2U5NWI5N2M1MzUzZmYyOGJjY2MxZDlmMTU4OGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXBwZWRE
YXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYQogewog
ICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkRhdGEgZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCkpOworICAgIGF1dG8gZmlsZURhdGEgPSBtYXBGaWxlKHBhdGgpOwogICAgIGlmIChmaWxl
RGF0YS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIG1l
dGFEYXRhID0gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoZmlsZURhdGEpOwpAQCAtMzY2
LDcgKzM2Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxNYXBwZWREYXRhLCBzdGQ6OmVycm9yX2NvZGU+
IGNvbXBpbGVkVG9GaWxlKFdURjo6U3RyaW5nJiYganNvbiwKICAgICB9OwogCiAgICAgYXV0byB0
ZW1wb3JhcnlGaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICBXVEY6
OlN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVs
ZUxpc3QiLCB0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICBXVEY6OlN0cmluZyB0ZW1wb3JhcnlG
aWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiX3MsIHRlbXBvcmFy
eUZpbGVIYW5kbGUpOwogICAgIGlmICh0ZW1wb3JhcnlGaWxlSGFuZGxlID09IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50IFJ1bGUgTGlz
dCBjb21waWxpbmcgZmFpbGVkOiBPcGVuaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZC4iKTsKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6
Q29tcGlsZUZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0Rvd25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWRSZWYuY3BwCmluZGV4IGVlYmNjOTJkNzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJjODcwNDYz
MzYuLmMyYWFkMzZmZGU3ZmY5ZTIxNDQ3ZGNhNDNiYmUwZjEzMzk4M2RiOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCiAKICAgICAgICAgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKICAgICAgICAg
ewotICAgICAgICAgICAgZGlkRmFpbChkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7
IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGRvd25sb2FkLnJlcXVlc3Qo
KS51cmwoKSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkIGR1cmluZyBkb3dubG9hZCIgfSwgbnVs
bHB0cik7CisgICAgICAgICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVx
dWVzdCgpLnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIl9z
IH0sIG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKaW5kZXggZTI1NDkyNmRjNTFhNDlhZWJhNDk4ZDc5NDlhYWZjODA3YTRiNzIyOS4uNWVi
YzViOGE3NDliZmVjYjRjYjUyN2M1ZDQyYzhjOTU4ZjY3M2Y4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC01MTUsMTMgKzUxNSwxMyBAQCB2b2lkIFdLUGFn
ZVRlcm1pbmF0ZShXS1BhZ2VSZWYgcGFnZVJlZikKIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0U2Vz
c2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYgc2Vz
c2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlz
dG9yeVVSTCIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgYXV0byYgc2Vzc2lvbkhpc3RvcnlVUkxW
YWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uSGlzdG9yeVVSTCJfcykubGVh
a1JlZigpOwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUpOwog
fQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRlbVZhbHVl
VHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBzZXNzaW9uQmFja0ZvcndhcmRMaXN0
VmFsdWVUeXBlID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0
ZW0iKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIGF1dG8mIHNlc3Npb25CYWNrRm9yd2FyZExpc3RW
YWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uQmFja0ZvcndhcmRMaXN0SXRl
bSJfcykubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbkJhY2tGb3J3YXJkTGlz
dFZhbHVlVHlwZSk7CiB9CiAKQEAgLTE1ODIsMjEgKzE1ODIsMjEgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSog
d2tDbGllbnQKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEgfHwgbV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKSB7CiAgICAgICAgICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsK
ICAgICAgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueCkKLSAgICAgICAgICAgICAgICAg
ICAgbWFwLnNldCgieCIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLngpKTsK
KyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgieCJfcywgQVBJOjpEb3VibGU6OmNyZWF0ZSgq
d2luZG93RmVhdHVyZXMueCkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy55
KQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ5IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSgq
d2luZG93RmVhdHVyZXMueSkpOworICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ5Il9zLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKCp3aW5kb3dGZWF0dXJlcy55KSk7CiAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvd0ZlYXR1cmVzLndpZHRoKQotICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KCJ3
aWR0aCIsIEFQSTo6RG91YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLndpZHRoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQoIndpZHRoIl9zLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKCp3
aW5kb3dGZWF0dXJlcy53aWR0aCkpOwogICAgICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJl
cy5oZWlnaHQpCi0gICAgICAgICAgICAgICAgICAgIG1hcC5zZXQoImhlaWdodCIsIEFQSTo6RG91
YmxlOjpjcmVhdGUoKndpbmRvd0ZlYXR1cmVzLmhlaWdodCkpOwotICAgICAgICAgICAgICAgIG1h
cC5zZXQoIm1lbnVCYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVy
ZXMubWVudUJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJW
aXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlz
aWJsZSkpOwotICAgICAgICAgICAgICAgIG1hcC5zZXQoInRvb2xCYXJWaXNpYmxlIiwgQVBJOjpC
b29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMudG9vbEJhclZpc2libGUpKTsKLSAgICAgICAg
ICAgICAgICBtYXAuc2V0KCJsb2NhdGlvbkJhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpKTsKLSAgICAgICAgICAgICAgICBt
YXAuc2V0KCJzY3JvbGxiYXJzVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0Zl
YXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgicmVz
aXphYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMucmVzaXphYmxlKSk7
Ci0gICAgICAgICAgICAgICAgbWFwLnNldCgiZnVsbHNjcmVlbiIsIEFQSTo6Qm9vbGVhbjo6Y3Jl
YXRlKHdpbmRvd0ZlYXR1cmVzLmZ1bGxzY3JlZW4pKTsKLSAgICAgICAgICAgICAgICBtYXAuc2V0
KCJkaWFsb2ciLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFsb2cpKTsK
KyAgICAgICAgICAgICAgICAgICAgbWFwLnNldCgiaGVpZ2h0Il9zLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKCp3aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJt
ZW51QmFyVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubWVu
dUJhclZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJWaXNpYmxl
Il9zLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxl
KSk7CisgICAgICAgICAgICAgICAgbWFwLnNldCgidG9vbEJhclZpc2libGUiX3MsIEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlKSk7CisgICAgICAgICAg
ICAgICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxlIl9zLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpKTsKKyAgICAgICAgICAgICAgICBt
YXAuc2V0KCJzY3JvbGxiYXJzVmlzaWJsZSJfcywgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93
RmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KCJy
ZXNpemFibGUiX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnJlc2l6YWJs
ZSkpOworICAgICAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxzY3JlZW4iX3MsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmZ1bGxzY3JlZW4pKTsKKyAgICAgICAgICAgICAgICBt
YXAuc2V0KCJkaWFsb2ciX3MsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRp
YWxvZykpOwogICAgICAgICAgICAgICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IGZlYXR1cmVzTWFw
ID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtYXApKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5k
ZXggOGU2NzViMzk5MDdiYmNkN2E5MjRjNDZjNzgwZjcxNDJmMGVjOTUxYS4uMWE3M2E3MGNhYzk5
NjgyNjljNDY3YTg4NjdmODIxYzRiMGRiYTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXS1R5cGVJ
RCBXS1ByZWZlcmVuY2VzR2V0VHlwZUlEKCkKIAogV0tQcmVmZXJlbmNlc1JlZiBXS1ByZWZlcmVu
Y2VzQ3JlYXRlKCkKIHsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5
RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICByZXR1
cm4gdG9BUEkoJnByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYg
V0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXJS
ZWYpCiB7Ci0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRo
TGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmllclJlZiksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
V2l0aExlZ2FjeURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50aWZpZXJSZWYpLCAiV2ViS2l0Mi4i
X3MsICJXZWJLaXQyLiJfcyk7CiAgICAgcmV0dXJuIHRvQVBJKCZwcmVmZXJlbmNlcy5sZWFrUmVm
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCmluZGV4IDNkNjU3OWY1
MmNlMzUwMWE4NjFjM2Y2NTVlZmJlZDI0ZTgxZTEyZTQuLjM4Y2Q5NmNhNDA4YjBjN2Q4ZWM5MDE4
MGJiZjUxYjNjMzZjODkxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tCkBA
IC01OCw3ICs1OCw3IEBAIFdURjo6U3RyaW5nIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0
U3RvcmVQYXRoKCkKICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3Jl
YXRlRGlyZWN0b3J5QXRVUkw6Y29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkuZ2V0KCkgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRy
XSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIGNv
bnRlbnRSdWxlTGlzdFN0b3JlVVJMLmdldCgpLmdldCgpKTsKIAotICAgIHJldHVybiBbY29udGVu
dFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgYWJzb2x1dGVVUkxdLnBhdGguZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uOworICAgIHJldHVybiBbY29udGVudFJ1bGVMaXN0U3RvcmVVUkwuZ2V0KCkgYWJz
b2x1dGVVUkxdLnBhdGg7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9y
ZS5tbQppbmRleCA5ZmE3MWIwNzVhMDNmZjFkZmRkMDAxN2U0NWM4MTI5OTU5ZDM1ZDgzLi4zMzMy
Mzk0Mzk0NmJmYTc2YmE4YWYwMmJlOWRjMGMwNWMzM2VmZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9y
ZS5tbQpAQCAtNzksNyArNzksNyBAQCArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlCiArIChp
bnN0YW5jZXR5cGUpc3RvcmVXaXRoVVJMOihOU1VSTCAqKXVybAogewogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCi0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6c3RvcmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3Rv
cmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVTdHJpbmcpKTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsK
ICNlbmRpZgpAQCAtMTk0LDcgKzE5NCw3IEBAICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmVX
aXRoTGVnYWN5RmlsZW5hbWUKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkxBbmRMZWdhY3lG
aWxlbmFtZTooTlNVUkwgKil1cmwKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQot
ICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBh
dGgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworICAgIHJldHVy
biB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFi
c29sdXRlU3RyaW5nKSk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KaW5kZXgg
ZWIyMzIxNjljZmI4YWEyYjIyZGU3MTM4Zjk4YWVmNDZjMzkwNDhjNS4uNTlmYjhkYzBhNzgxYzdl
YWFkZWZiNjEyYTVmMzExMjYxYjJmZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXQKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0
OjpXZWJQcmVmZXJlbmNlcz4oc2VsZiwgU3RyaW5nKCksICJXZWJLaXQiLCAiV2ViS2l0RGVidWci
KTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXM+KHNlbGYsIFN0cmluZygpLCAiV2ViS2l0Il9zLCAiV2ViS2l0RGVidWciX3MpOwogICAg
IHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAxOTk2MzAzMjhhNTg3YmUxMTNlYmU1MjM3YTBlZjhh
ZmZmNzNlM2U1Li43ZThmMGJlZDJjMTM4Mjg0NWRkNTlhZmJjZDA0ZWIzZWMwMmU4NDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
QEAgLTExNCw3ICsxMTQsNyBAQCBib29sIEljb25EYXRhYmFzZTo6Y3JlYXRlVGFibGVzSWZOZWVk
ZWQoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAotICAgIGlmIChtX2RiLnRh
YmxlRXhpc3RzKCJJY29uSW5mbyIpICYmIG1fZGIudGFibGVFeGlzdHMoIkljb25EYXRhIikgJiYg
bV9kYi50YWJsZUV4aXN0cygiUGFnZVVSTCIpICYmIG1fZGIudGFibGVFeGlzdHMoIkljb25EYXRh
YmFzZUluZm8iKSkKKyAgICBpZiAobV9kYi50YWJsZUV4aXN0cygiSWNvbkluZm8iX3MpICYmIG1f
ZGIudGFibGVFeGlzdHMoIkljb25EYXRhIl9zKSAmJiBtX2RiLnRhYmxlRXhpc3RzKCJQYWdlVVJM
Il9zKSAmJiBtX2RiLnRhYmxlRXhpc3RzKCJJY29uRGF0YWJhc2VJbmZvIl9zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0
YWJhc2VXcml0ZTo6Tm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdJT1MubW0KaW5kZXggMzA4MGVjNDAzNjM2YTg0YWEwNTFhM2Y4ZjgzZDY5ZTJiMTMy
YTA5Zi4uYmQyMzcxYzAzMjEzMDNmN2M4MmE5NjAwMThmZWUyMDdmYTNkNmVhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTI5NDks
NyArMjk0OSw3IEBAIC0gKEJPT0wpX2FsbG93c1ZpZXdwb3J0U2hyaW5rVG9GaXQKIC0gKEJPT0wp
X2lzRGlzcGxheWluZ1BERgogewogICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpKSB7Ci0gICAgICAgIENsYXNzIHByb3ZpZGVyQ2xh
c3MgPSBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJG
b3JNSU1FVHlwZTpAKHR5cGUpXTsKKyAgICAgICAgQ2xhc3MgcHJvdmlkZXJDbGFzcyA9IFtbX2Nv
bmZpZ3VyYXRpb24gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5XSBwcm92aWRlckZvck1JTUVUeXBl
OkAodHlwZS5jaGFyYWN0ZXJzKCkpXTsKICAgICAgICAgaWYgKFtfY3VzdG9tQ29udGVudFZpZXcg
aXNLaW5kT2ZDbGFzczpwcm92aWRlckNsYXNzXSkKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5jcHAKaW5kZXggMWM1NGUwMTU4NGU2MDMwNTQwODY0YmIxNmUxNDU2NmE4Mjc4MzBiZS4uMzcx
YTUwYmY4YWRmNmVjZDFhZTM3YWE1MmJhYzkxMTM3OWVhOTQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC02NCwxMSArNjQs
MTMgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXUKIHsKICAgICBsYXVuY2hPcHRpb25zLnByb2Nl
c3NJZGVudGlmaWVyID0gbV9wcm9jZXNzSWRlbnRpZmllcjsKIAotICAgIGlmIChjb25zdCBjaGFy
KiB1c2VyRGlyZWN0b3J5U3VmZml4ID0gZ2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklY
IikpCi0gICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhh
c2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2Vy
RGlyZWN0b3J5U3VmZml4KTsKKyAgICBpZiAoY29uc3QgY2hhciogdXNlckRpcmVjdG9yeVN1ZmZp
eCA9IGdldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIpKSB7CisgICAgICAgIGlmIChh
dXRvIHVzZXJEaXJlY3RvcnlTdWZmaXhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHVzZXJEaXJl
Y3RvcnlTdWZmaXgpOyAhdXNlckRpcmVjdG9yeVN1ZmZpeFN0cmluZy5pc051bGwoKSkKKyAgICAg
ICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkPEhhc2hUcmFu
c2xhdG9yQVNDSUlMaXRlcmFsPigidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0
b3J5U3VmZml4U3RyaW5nKTsKKyAgICB9CiAKICAgICBpZiAobV9hbHdheXNSdW5zQXRCYWNrZ3Jv
dW5kUHJpb3JpdHkpCi0gICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuYWRkPEhhc2hUcmFuc2xhdG9yQVNDSUlMaXRlcmFsPigiYWx3YXlzLXJ1bnMtYXQtYmFja2dy
b3VuZC1wcmlvcml0eSJfcywgInRydWUiKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5hZGQ8SGFzaFRyYW5zbGF0b3JBU0NJSUxpdGVyYWw+KCJhbHdheXMt
cnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5Il9zLCAidHJ1ZSJfcyk7CiAKICNpZiBFTkFCTEUo
REVWRUxPUEVSX01PREUpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkpCiAgICAg
Y29uc3QgY2hhciogdmFybmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVT
T0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IDYwYzBkOWRhZTBmMGQ2YWRjNTZjZmQxYzhj
ZjEwZWY5NDNkNTFkMzUuLjIwNzJiNWI2YjFjYjkwZjhmNjI3ZjY5NjVjMzEwZjAxZTdmNGIxNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpsb2FkUmVxdWVzdFRvRnJhbWUoKQogICAgICAgICBwYWdlLT5zZXRTaG91bGRTdXBw
cmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpOwogICAg
ICAgICBhdXRvJiB1cmwgPSBtX3JlcXVlc3RzVG9Mb2FkLmZpcnN0KCkuZmlyc3Q7CiAgICAgICAg
IFdURjo6c3dpdGNoT24obV9yZXF1ZXN0c1RvTG9hZC5maXJzdCgpLnNlY29uZCwgWyZdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgewotICAgICAgICAgICAgZnJhbWUtPmxvYWREYXRhKElQ
Qzo6RGF0YVJlZmVyZW5jZShkYXRhKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIHVybCk7CisgICAg
ICAgICAgICBmcmFtZS0+bG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpLCAidGV4dC9o
dG1sIl9zLCAiVVRGLTgiX3MsIHVybCk7CiAgICAgICAgIH0sIFsmXShjb25zdCBTdHJpbmcmIHJl
ZmVycmVyKSB7CiAgICAgICAgICAgICBmcmFtZS0+bG9hZFVSTCh1cmwsIHJlZmVycmVyKTsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCmluZGV4IDQ0NmY1ZmRi
MzdhMTVmMWMyZmM5YjM5MzFiMWQwMDAyMWNkMjg4NDcuLmVhNDQ5ZjhkYzdkMGM1NTI5N2VlNWJl
OGMxYzZjOGY5OGJjNjg2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCkBA
IC01MiwxMyArNTIsMTMgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogI2lmIEVOQUJMRShXS1BE
RlZJRVcpCiAgICAgZm9yIChhdXRvJiB0eXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
cGRmTUlNRVR5cGVzKCkpCi0gICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLUERGVmll
dyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlKV07CisgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJv
dmlkZXI6W1dLUERGVmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0eXBlLmNoYXJhY3RlcnMoKSld
OwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpICYmICFIQVZFKFVJS0lUX1dFQktJ
VF9JTlRFUk5BTFMpCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVk
ICYmICFjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLl9tb2RlbERvY3VtZW50RW5hYmxlZCkgewog
ICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojp1c2RN
SU1FVHlwZXMoKSkKLSAgICAgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLVVNEUHJl
dmlld1ZpZXcgY2xhc3NdIGZvck1JTUVUeXBlOkAodHlwZSldOworICAgICAgICAgICAgW3NlbGYg
cmVnaXN0ZXJQcm92aWRlcjpbV0tVU0RQcmV2aWV3VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6QCh0
eXBlLmNoYXJhY3RlcnMoKSldOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViS2l0U3dpZnRTb2Z0TGluay5tbQppbmRleCAwZWMxMTc0
M2JiMWQ4ZjM5YTI1MGI1MWIzZTU3ODRiYWUxZTUwZTMwLi5lZmNhODgwMTNmMGYxM2MxNmMxOGY5
YjFmYjVjMGNhMDRiMmYzMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJLaXRTd2lmdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYktpdFN3aWZ0U29mdExpbmsubW0KQEAgLTQxLDggKzQxLDExIEBAIHZvaWQqIFdl
YktpdFN3aWZ0TGlicmFyeShib29sIGlzT3B0aW9uYWwpCiAgICAgICAgIC8vIFRoZW4gc2VhcmNo
IGluIHRoZSBGcmFtZXdvcmtzLyBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnRseSBsb2FkZWQgdmVy
c2lvbiBvZiBXZWJLaXQuZnJhbWV3b3JrOgogICAgICAgICBEbF9pbmZvIGluZm8geyB9OwogICAg
ICAgICBpZiAoZGxhZGRyKChjb25zdCB2b2lkKikmV2ViS2l0U3dpZnRMaWJyYXJ5LCAmaW5mbykg
JiYgc3RybGVuKGluZm8uZGxpX2ZuYW1lKSkgewotICAgICAgICAgICAgYXV0byB3ZWJraXRGcmFt
ZXdvcmtEaXJlY3RvcnkgPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXJlbnRQYXRoKGluZm8uZGxp
X2ZuYW1lKTsKLSAgICAgICAgICAgIGF1dG8gZHlsaWJQYXRoID0gV1RGOjpGaWxlU3lzdGVtSW1w
bDo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHdlYmtpdEZyYW1ld29ya0RpcmVjdG9yeSwgIkZy
YW1ld29ya3MvbGliV2ViS2l0U3dpZnQuZHlsaWIiKTsKKyAgICAgICAgICAgIGF1dG8gZGxpUGF0
aCA9IFN0cmluZzo6ZnJvbVVURjgoaW5mby5kbGlfZm5hbWUpOworICAgICAgICAgICAgaWYgKGRs
aVBhdGguaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0
byB3ZWJraXRGcmFtZXdvcmtEaXJlY3RvcnkgPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXJlbnRQ
YXRoKGRsaVBhdGgpOworICAgICAgICAgICAgYXV0byBkeWxpYlBhdGggPSBXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQod2Via2l0RnJhbWV3b3JrRGlyZWN0b3J5
LCAiRnJhbWV3b3Jrcy9saWJXZWJLaXRTd2lmdC5keWxpYiJfcyk7CiAgICAgICAgICAgICBpZiAo
KGxpYnJhcnkgPSBkbG9wZW4oZHlsaWJQYXRoLnV0ZjgoKS5kYXRhKCksIFJUTERfTk9XKSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAyOGE1ODUxZjVl
ZTBhYzBhMzRiYTc3M2RkNjEzNDM3YmY1NDg3MTczLi44MDg1NzMyM2Y5ZDhmOWMzOGY2MWE5MjFi
N2RlYjg0NGI4MDBmMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTI4Miw3ICsyODIsNyBAQCBTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKIHsKLSAgICBt
X3Jlc29sdmVkUGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gcmVzb2x2ZVBhdGhG
b3JTYW5kYm94RXh0ZW5zaW9uKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcmVzb3VyY2VQYXRoXSk7
CisgICAgbV9yZXNvbHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCA9IHJlc29s
dmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihTdHJpbmcgeyBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IHJlc291cmNlUGF0aF0gfSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwMDc0ZGNhNzcy
N2E5Njg3NGZiMWVkMzg0N2Y1MTllMTYwNGE1M2Y3Li5hN2JmM2QyZGM0ZDZlMzJlZTZjYmY2YzIw
MjBlNWVjZGNjNzBlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQpAQCAtOTI2LDE3ICs5MjYsMTcgQEAgLSAodm9pZClfd2tDaGFuZ2VUZXh0U3R5
bGU6KGlkKXNlbmRlcgogCiAgICAgaWYgKFtzZWxmLnRleHRTdHlsZSBpc1NlbGVjdGVkRm9yU2Vn
bWVudDowXSAhPSBfdGV4dElzQm9sZCkgewogICAgICAgICBfdGV4dElzQm9sZCA9ICFfdGV4dElz
Qm9sZDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKEAi
VG9nZ2xlQm9sZCIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVF
ZGl0Q29tbWFuZCgiVG9nZ2xlQm9sZCJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogCiAgICAg
aWYgKFtzZWxmLnRleHRTdHlsZSBpc1NlbGVjdGVkRm9yU2VnbWVudDoxXSAhPSBfdGV4dElzSXRh
bGljKSB7CiAgICAgICAgIF90ZXh0SXNJdGFsaWMgPSAhX3RleHRJc0l0YWxpYzsKLSAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVJdGFsaWMiLCBA
IiIpOworICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIlRv
Z2dsZUl0YWxpYyJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgaWYgKFtzZWxmLnRl
eHRTdHlsZSBpc1NlbGVjdGVkRm9yU2VnbWVudDoyXSAhPSBfdGV4dElzVW5kZXJsaW5lZCkgewog
ICAgICAgICBfdGV4dElzVW5kZXJsaW5lZCA9ICFfdGV4dElzVW5kZXJsaW5lZDsKLSAgICAgICAg
X3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhlY3V0ZUVkaXRDb21tYW5kKCJUb2dnbGVVbmRlcmxpbmUi
LCBAIiIpOworICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQo
IlRvZ2dsZVVuZGVybGluZSJfcywgZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogfQogCkBAIC05NTUs
MTkgKzk1NSwxOSBAQCAtICh2b2lkKV93a0NoYW5nZVRleHRBbGlnbm1lbnQ6KGlkKXNlbmRlcgog
ICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRMZWZ0Ogog
ICAgICAgICBfY3VycmVudFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRMZWZ0OwotICAg
ICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWduTGVmdCIs
IEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgi
QWxpZ25MZWZ0Il9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBO
U1RleHRBbGlnbm1lbnRSaWdodDoKICAgICAgICAgX2N1cnJlbnRUZXh0QWxpZ25tZW50ID0gTlNU
ZXh0QWxpZ25tZW50UmlnaHQ7Ci0gICAgICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVF
ZGl0Q29tbWFuZCgiQWxpZ25SaWdodCIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3SW1wbC0+cGFn
ZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25SaWdodCJfcywgZW1wdHlTdHJpbmcoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlNUZXh0QWxpZ25tZW50Q2VudGVyOgogICAgICAgICBf
Y3VycmVudFRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRDZW50ZXI7Ci0gICAgICAgIF93
ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25DZW50ZXIiLCBAIiIp
OworICAgICAgICBfd2ViVmlld0ltcGwtPnBhZ2UoKS5leGVjdXRlRWRpdENvbW1hbmQoIkFsaWdu
Q2VudGVyIl9zLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU1Rl
eHRBbGlnbm1lbnRKdXN0aWZpZWQ6CiAgICAgICAgIF9jdXJyZW50VGV4dEFsaWdubWVudCA9IE5T
VGV4dEFsaWdubWVudEp1c3RpZmllZDsKLSAgICAgICAgX3dlYlZpZXdJbXBsLT5wYWdlKCkuZXhl
Y3V0ZUVkaXRDb21tYW5kKCJBbGlnbkp1c3RpZmllZCIsIEAiIik7CisgICAgICAgIF93ZWJWaWV3
SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiQWxpZ25KdXN0aWZpZWQiX3MsIGVtcHR5
U3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
QEAgLTk5Myw3ICs5OTMsNyBAQCAtICh2b2lkKV93a0NoYW5nZUNvbG9yOihpZClzZW5kZXIKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgX3RleHRDb2xvciA9IHNlbGYuY29sb3JQaWNrZXJJdGVtLmNv
bG9yOwotICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4ZWN1dGVFZGl0Q29tbWFuZCgiRm9yZUNv
bG9yIiwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6Y29sb3JGcm9tQ29j
b2FDb2xvcihfdGV4dENvbG9yLmdldCgpKSkpOworICAgIF93ZWJWaWV3SW1wbC0+cGFnZSgpLmV4
ZWN1dGVFZGl0Q29tbWFuZCgiRm9yZUNvbG9yIl9zLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9y
SFRNTChXZWJDb3JlOjpjb2xvckZyb21Db2NvYUNvbG9yKF90ZXh0Q29sb3IuZ2V0KCkpKSk7CiB9
CiAKIC0gKE5TVmlld0NvbnRyb2xsZXIgKil0ZXh0TGlzdFZpZXdDb250cm9sbGVyCkBAIC01MTMy
LDcgKzUxMzIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnNlcnRUZXh0KGlkIHN0cmluZywgTlNS
YW5nZSByZXBsYWNlbWVudFJhbmdlKQogICAgIFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1h
bmQ+KiBrZXlwcmVzc0NvbW1hbmRzID0gbV9jb2xsZWN0ZWRLZXlwcmVzc0NvbW1hbmRzOwogICAg
IGlmIChrZXlwcmVzc0NvbW1hbmRzICYmICFtX2lzVGV4dEluc2VydGlvblJlcGxhY2luZ1NvZnRT
cGFjZSkgewogICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiA9PSBOU05v
dEZvdW5kKTsKLSAgICAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQoImluc2Vy
dFRleHQ6IiwgdGV4dCk7CisgICAgICAgIFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCBjb21tYW5k
KCJpbnNlcnRUZXh0OiJfcywgdGV4dCk7CiAgICAgICAgIGtleXByZXNzQ29tbWFuZHMtPmFwcGVu
ZChjb21tYW5kKTsKICAgICAgICAgTE9HKFRleHRJbnB1dCwgIi4uLnN0b3JlZCIpOwogICAgICAg
ICBtX3BhZ2UtPnJlZ2lzdGVyS2V5cHJlc3NDb21tYW5kTmFtZShjb21tYW5kLmNvbW1hbmROYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcAppbmRleCA0YjIxZTk4OWYyNzlhZTY3MzRkOWQzMjYwMWRlMzY2ZGIwMGFmN2IyLi5l
YzY5YmY2YWQzZTdjNThlMTcxMTk3MTUyZDBiMzQ0YzIyMjQxZmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC05Myw3
ICs5Myw3IEBAIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjp+RGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UoKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldFNlY3VyaXR5T3JpZ2luRGF0YShjb25zdCBjaGFy
KiBuYW1lLCBLZXllZERlY29kZXIqIGRlY29kZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+IGdldFNlY3VyaXR5T3JpZ2luRGF0YShBU0NJSUxpdGVyYWwgbmFtZSwg
S2V5ZWREZWNvZGVyKiBkZWNvZGVyKQogewogICAgIFN0cmluZyBvcmlnaW47CiAKQEAgLTE1Nywy
MCArMTU3LDIwIEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmxvYWRTdG9yYWdlRnJv
bURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoTWFwCiAKIHN0ZDo6dW5pcXVlX3B0cjxE
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNh
bHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyKiBkZWNvZGVyLCBTdHJp
bmcmJiBkZXZpY2VJZEhhc2hTYWx0KSBjb25zdAogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5E
YXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJvcmlnaW4iLCBkZWNvZGVyKTsKKyAgICBhdXRv
IHNlY3VyaXR5T3JpZ2luRGF0YSA9IGdldFNlY3VyaXR5T3JpZ2luRGF0YSgib3JpZ2luIl9zLCBk
ZWNvZGVyKTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luRGF0YSkgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihEaXNrUGVyc2lzdGVuY3ksICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTogVGhl
IHNlY3VyaXR5IG9yaWdpbiBkYXRhIGluIHRoZSBmaWxlIGlzIG5vdCBjb3JyZWN0OiAnJXMnIiwg
ZGV2aWNlSWRIYXNoU2FsdC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byBwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEgPSBnZXRTZWN1cml0
eU9yaWdpbkRhdGEoInBhcmVudE9yaWdpbiIsIGRlY29kZXIpOworICAgIGF1dG8gcGFyZW50U2Vj
dXJpdHlPcmlnaW5EYXRhID0gZ2V0U2VjdXJpdHlPcmlnaW5EYXRhKCJwYXJlbnRPcmlnaW4iX3Ms
IGRlY29kZXIpOwogICAgIGlmICghcGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKERpc2tQZXJzaXN0ZW5jeSwgIkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlOiBUaGUgcGFyZW50IHNlY3VyaXR5IG9yaWdpbiBkYXRhIGluIHRoZSBmaWxlIGlzIG5vdCBj
b3JyZWN0OiAnJXMnIiwgZGV2aWNlSWRIYXNoU2FsdC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgZG91YmxlIGxhc3RUaW1lVXNlZDsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSgibGFzdFRpbWVVc2VkIiwgbGFzdFRpbWVVc2VkKSkg
eworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiX3MsIGxhc3RU
aW1lVXNlZCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoRGlza1BlcnNpc3RlbmN5LCAi
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6IFRoZSBsYXN0IHRpbWUgdXNlZCB3YXMgbm90IGNvcnJl
Y3RseSByZXN0b3JlZCBmb3I6ICclcyciLCBkZXZpY2VJZEhhc2hTYWx0LnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xODUsOSArMTg1LDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4g
RGV2aWNlSWRIYXNoU2FsdFN0b3IKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IERldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEoY29uc3QgSGFzaFNhbHRG
b3JPcmlnaW4mIGhhc2hTYWx0Rm9yT3JpZ2luKSBjb25zdAogewogICAgIGF1dG8gZW5jb2RlciA9
IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwotICAgIGVuY29kZXItPmVuY29kZVN0cmluZygib3Jp
Z2luIiwgaGFzaFNhbHRGb3JPcmlnaW4uZG9jdW1lbnRPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVy
KCkpOwotICAgIGVuY29kZXItPmVuY29kZVN0cmluZygicGFyZW50T3JpZ2luIiwgaGFzaFNhbHRG
b3JPcmlnaW4ucGFyZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBlbmNvZGVy
LT5lbmNvZGVEb3VibGUoImxhc3RUaW1lVXNlZCIsIGhhc2hTYWx0Rm9yT3JpZ2luLmxhc3RUaW1l
VXNlZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworICAgIGVuY29kZXItPmVuY29kZVN0
cmluZygib3JpZ2luIl9zLCBoYXNoU2FsdEZvck9yaWdpbi5kb2N1bWVudE9yaWdpbi5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJwYXJlbnRPcmlnaW4i
X3MsIGhhc2hTYWx0Rm9yT3JpZ2luLnBhcmVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKCJsYXN0VGltZVVzZWQiX3MsIGhhc2hTYWx0Rm9y
T3JpZ2luLmxhc3RUaW1lVXNlZC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOwogICAgIHJl
dHVybiBlbmNvZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcAppbmRleCA2
ZjU5Y2FiYTNhMDc3OTc0ZDM3ODVhNjdjMDQ2YTZkNmRhNDExODE2Li4yODIyZWU4N2VmNDUwMjVj
Yzk1YzAxOTY0ZTM5NWI0NmYzYjZiNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5j
cHAKQEAgLTE0NSwxNiArMTQ1LDE2IEBAIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gaW5z
cGVjdG9yV2Vic2l0ZURhdGFTdG9yZSgpCiAgICAgU3RyaW5nIGJhc2VEYXRhRGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnVzZXJEYXRh
RGlyZWN0b3J5KCksIHZlcnNpb25lZERpcmVjdG9yeSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKElzUGVyc2lzdGVudDo6
WWVzLCBXaWxsQ29weVBhdGhzRnJvbUV4aXN0aW5nQ29uZmlndXJhdGlvbjo6WWVzKTsKLSAgICBj
b25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgIldlYktpdENhY2hlIikpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgImFwcGxpY2F0
aW9ucyIpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgIldl
YktpdENhY2hlIl9zKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZUNhY2hlRGly
ZWN0b3J5LCAiYXBwbGljYXRpb25zIl9zKSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0SFNUU1N0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKGJhc2VDYWNoZURpcmVjdG9yeSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoYmFzZUNhY2hlRGlyZWN0b3J5LCAiQ2FjaGVTdG9yYWdlIikpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJsb2NhbHN0b3JhZ2UiKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAiaW5kZXhlZGRi
IikpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVjdG9yeSwgImRhdGFi
YXNlcyIpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGF0YURpcmVj
dG9yeSwgIml0cCIpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNl
RGF0YURpcmVjdG9yeSwgInNlcnZpY2V3b3JrZXJzIikpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNl
dERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJkZXZpY2VpZGhhc2hzYWx0cyIpKTsK
KyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VDYWNoZURpcmVjdG9yeSwgIkNhY2hlU3RvcmFn
ZSJfcykpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJlY3RvcnksICJsb2Nh
bHN0b3JhZ2UiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURhdGFEaXJl
Y3RvcnksICJpbmRleGVkZGIiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURh
dGFEaXJlY3RvcnksICJkYXRhYmFzZXMiX3MpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChiYXNlRGF0YURpcmVjdG9yeSwgIml0cCJfcykpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5LCAic2VydmljZXdvcmtlcnMiX3Mp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEYXRhRGlyZWN0b3J5
LCAiZGV2aWNlaWRoYXNoc2FsdHMiX3MpKTsKICAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6
Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBl
cnNpc3RlbnRTZXNzaW9uSUQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci93aW4vSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vSW5zcGVjdG9yUmVzb3Vy
Y2VVUkxTY2hlbWVIYW5kbGVyLmNwcAppbmRleCA2OTUyN2VkYTcyNjNkOGYzN2UzYTgwOTYyNTI4
ZWUxNjNkNmQ3NWY4Li40NzRhNThjZGViMDU2YjY4ZWFmZTExYzA0ZWE5MDAyNDI5MDI3YjU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3Rv
clJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyOjpw
bGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTCiAgICAgaWYgKHJlcXVlc3RQ
YXRoLnN0YXJ0c1dpdGgoIlxcIikpCiAgICAgICAgIHJlcXVlc3RQYXRoLnJlbW92ZSgwKTsKICAg
ICBhdXRvIHBhdGggPSBVUkwoYWRvcHRDRihDRkJ1bmRsZUNvcHlCdW5kbGVVUkwoV2ViQ29yZTo6
d2ViS2l0QnVuZGxlKCkpKS5nZXQoKSkuZmlsZVN5c3RlbVBhdGgoKTsKLSAgICBwYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsICJXZWJJbnNwZWN0b3JVSSIp
OworICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwg
IldlYkluc3BlY3RvclVJIl9zKTsKICAgICBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIHJlcXVlc3RQYXRoKTsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZShwYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4OWJkMTZlYWQw
OWY3YTM5OTM2NjBiN2YxNThhZDg3YzM2NzkzMDhhLi41Y2YyYmVjMTJhYjljMGNmMzdmZjIzZjEx
NWYwZDliZjhlYzMyODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2NDAsNyArMTY0MCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKGNvbnN0
IFN0cmluZyYgaW5kZXhlZERhdGFiCiAgICAgaWYgKGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBvbGRWZXJzaW9uRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSwgInYwIik7CisgICAgU3RyaW5nIG9sZFZlcnNpb25EaXJlY3RvcnkgPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LCAidjAiX3MpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZFZlcnNp
b25EaXJlY3RvcnkpOwogICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRWZXJzaW9u
RGlyZWN0b3J5KSkKICAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeSwgb2xkVmVyc2lvbkRpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tCmluZGV4IDJlODZjMWI2NmE0ZDUyZDZmMzA0YTQ5MDUyZTBmZTA5ODVkYzMzNzguLjUx
NzE2MDI4NzQ5ZDBiZjgzNDFlMzcwOTA3ZmVhYjk4ZjU1NDMyODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eUNv
Y29hLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpYUENF
dmVudEhhbmRsZXI6OmhhbmRsZVhQQ0V2ZW50KHhwY19vYmplY3RfdCBldmVudCkgY28KICAgICBp
ZiAoIWV2ZW50IHx8IHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7Ci0g
ICAgaWYgKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvKiBtZXNzYWdlTmFtZSA9IHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFt
ZUtleSk7CisgICAgaWYgKCFtZXNzYWdlTmFtZSB8fCAhKm1lc3NhZ2VOYW1lKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRh
YmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVz
c2FnZU5hbWUpIHsKKyAgICBpZiAoTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6
eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0VuZHBvaW50TWVzc2FnZU5hbWUgPT0gbWVzc2Fn
ZU5hbWUpIHsKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+bV9lbmRwb2ludE1lc3NhZ2UgPSBl
dmVudDsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjph
bGxQcm9jZXNzUG9vbHMoKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJv
Y2Vzc1Bvb2wtPnByb2Nlc3NlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IGVmOGQyZGQ4NjAxOTQwMGQwZGZjMTNmYTFhNDI2NjYyZmI3YmQ0MjUuLjdhYzQ0YTk3
YjBiZmRjM2M1NTc3NGM0YWE4ZjM5MmE0MmFiY2JiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QoVXNlck1lZGlhUGVy
bQogICAgIHVwZGF0ZVN0b3JlZFJlcXVlc3RzKHJlcXVlc3QpOwogCiAgICAgaWYgKCFVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkud2lsbENyZWF0ZU1lZGlhU3RyZWFtKCp0aGlz
LCByZXF1ZXN0Lmhhc0F1ZGlvRGV2aWNlKCksIHJlcXVlc3QuaGFzVmlkZW9EZXZpY2UoKSkpIHsK
LSAgICAgICAgZGVueVJlcXVlc3QocmVxdWVzdCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpPdGhlckZhaWx1cmUsICJVbmFibGUg
dG8gZXh0ZW5kIHNhbmRib3guIik7CisgICAgICAgIGRlbnlSZXF1ZXN0KHJlcXVlc3QsIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6
T3RoZXJGYWlsdXJlLCAiVW5hYmxlIHRvIGV4dGVuZCBzYW5kYm94LiJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuY3BwCmluZGV4IDdiZDU4NzdkZDhlOTI1OGRjNWQ2YTdmYTQyODY3ZmI5Mjk3
OWQ2ZmEuLjRhYTcyOWRiNGEyYzY4MmUzNzliNzE1YzE2YmE0ZmIwNjQ2ZjA0NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAt
Mjk0LDcgKzI5NCw3IEBAIFN0cmluZyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVt
b3ZhbFRyYWNrZXI6OmV2ZW50c0Rlc2NyaXB0aW9uKEV2ZW50cyBlCiB9CiAKIAotdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmxvZyhjb25zdCBTdHJp
bmcmIGxvZykgY29uc3QKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92
YWxUcmFja2VyOjpsb2coU3RyaW5nVmlldyBsb2cpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9MT0co
Vmlld0dlc3R1cmVzLCAiU3dpcGUgU25hcHNob3QgUmVtb3ZhbCAoJTAuMmYgbXMpIC0gJXMiLCAo
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSkubWlsbGlzZWNvbmRzKCksIGxvZy51
dGY4KCkuZGF0YSgpKTsKIH0KQEAgLTMyNCwxMyArMzI0LDEzIEBAIHZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdGFydChFdmVudHMgZGVzaXJlZEV2
ZW50cywKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2Vy
OjpyZXNldCgpCiB7CiAgICAgaWYgKG1fb3V0c3RhbmRpbmdFdmVudHMpCi0gICAgICAgIGxvZygi
cmVzZXQ7IGhhZCBvdXRzdGFuZGluZyBldmVudHM6ICIgKyBldmVudHNEZXNjcmlwdGlvbihtX291
dHN0YW5kaW5nRXZlbnRzKSk7CisgICAgICAgIGxvZyhtYWtlU3RyaW5nKCJyZXNldDsgaGFkIG91
dHN0YW5kaW5nIGV2ZW50czogIiwgZXZlbnRzRGVzY3JpcHRpb24obV9vdXRzdGFuZGluZ0V2ZW50
cykpKTsKICAgICBtX291dHN0YW5kaW5nRXZlbnRzID0gMDsKICAgICBtX3dhdGNoZG9nVGltZXIu
c3RvcCgpOwogICAgIG1fcmVtb3ZhbENhbGxiYWNrID0gbnVsbHB0cjsKIH0KIAotYm9vbCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0Zv
ckV2ZW50KEV2ZW50cyBldmVudCwgY29uc3QgU3RyaW5nJiBsb2dSZWFzb24sIFNob3VsZElnbm9y
ZUV2ZW50SWZQYXVzZWQgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCkKK2Jvb2wgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpzdG9wV2FpdGluZ0ZvckV2ZW50
KEV2ZW50cyBldmVudCwgQVNDSUlMaXRlcmFsIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJ
ZlBhdXNlZCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQogewogICAgIEFTU0VSVChoYXNPbmVC
aXRTZXQoZXZlbnQpKTsKIApAQCAtMzM4LDExICszMzgsMTEgQEAgYm9vbCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OiBzdG9wV2FpdGluZ0ZvckV2ZW50KEV2
ZW50cwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoc2hvdWxkSWdub3JlRXZlbnRJ
ZlBhdXNlZCA9PSBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkOjpZZXMgJiYgaXNQYXVzZWQoKSkg
ewotICAgICAgICBsb2coImlzIHBhdXNlZDsgaWdub3JpbmcgZXZlbnQ6ICIgKyBldmVudHNEZXNj
cmlwdGlvbihldmVudCkpOworICAgICAgICBsb2cobWFrZVN0cmluZygiaXMgcGF1c2VkOyBpZ25v
cmluZyBldmVudDogIiwgZXZlbnRzRGVzY3JpcHRpb24oZXZlbnQpKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBsb2cobG9nUmVhc29uICsgZXZlbnRzRGVzY3JpcHRpb24o
ZXZlbnQpKTsKKyAgICBsb2cobWFrZVN0cmluZyhsb2dSZWFzb24sIGV2ZW50c0Rlc2NyaXB0aW9u
KGV2ZW50KSkpOwogCiAgICAgbV9vdXRzdGFuZGluZ0V2ZW50cyAmPSB+ZXZlbnQ7CiAKQEAgLTM1
MiwxMiArMzUyLDEyIEBAIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92
YWxUcmFja2VyOjogc3RvcFdhaXRpbmdGb3JFdmVudChFdmVudHMKIAogYm9vbCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmV2ZW50T2NjdXJyZWQoRXZlbnRz
IGV2ZW50LCBTaG91bGRJZ25vcmVFdmVudElmUGF1c2VkIHNob3VsZElnbm9yZUV2ZW50SWZQYXVz
ZWQpCiB7Ci0gICAgcmV0dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJvdXRzdGFuZGlu
ZyBldmVudCBvY2N1cnJlZDogIiwgc2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZCk7CisgICAgcmV0
dXJuIHN0b3BXYWl0aW5nRm9yRXZlbnQoZXZlbnQsICJvdXRzdGFuZGluZyBldmVudCBvY2N1cnJl
ZDogIl9zLCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKTsKIH0KIAogYm9vbCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmNhbmNlbE91dHN0YW5kaW5nRXZl
bnQoRXZlbnRzIGV2ZW50KQogewotICAgIHJldHVybiBzdG9wV2FpdGluZ0ZvckV2ZW50KGV2ZW50
LCAid2FpdCBmb3IgZXZlbnQgY2FuY2VsbGVkOiAiKTsKKyAgICByZXR1cm4gc3RvcFdhaXRpbmdG
b3JFdmVudChldmVudCwgIndhaXQgZm9yIGV2ZW50IGNhbmNlbGxlZDogIl9zKTsKIH0KIAogYm9v
bCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Omhhc091dHN0
YW5kaW5nRXZlbnQoRXZlbnQgZXZlbnQpCkBAIC0zNjgsNyArMzY4LDcgQEAgYm9vbCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6Omhhc091dHN0YW5kaW5nRXZl
bnQoRXZlbnQgZXYKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxU
cmFja2VyOjpmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKG1fb3V0
c3RhbmRpbmdFdmVudHMpIHsKLSAgICAgICAgbG9nKCJkZWZlcnJpbmcgcmVtb3ZhbDsgaGFkIG91
dHN0YW5kaW5nIGV2ZW50czogIiArIGV2ZW50c0Rlc2NyaXB0aW9uKG1fb3V0c3RhbmRpbmdFdmVu
dHMpKTsKKyAgICAgICAgbG9nKG1ha2VTdHJpbmcoImRlZmVycmluZyByZW1vdmFsOyBoYWQgb3V0
c3RhbmRpbmcgZXZlbnRzOiAiLCBldmVudHNEZXNjcmlwdGlvbihtX291dHN0YW5kaW5nRXZlbnRz
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDIwYzMwYjgzNDg4ODdmM2U1MjAwYmY4
Njk3MGQ4MjQ5YzM1MDQ3YmYuLjAyYTBiODk4ZmQ1Y2IyZWE2MmYwZjdjYjBkODY4OGFiNTY5NGRi
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oCkBAIC0yNTAsMTMgKzI1MCwxMyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgc3RhdGljIFN0cmluZyBldmVudHNEZXNjcmlwdGlvbihFdmVudHMpOwotICAgICAgICB2b2lk
IGxvZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgdm9pZCBsb2coU3RyaW5nVmlldykg
Y29uc3Q7CiAKICAgICAgICAgdm9pZCBmaXJlUmVtb3ZhbENhbGxiYWNrSW1tZWRpYXRlbHkoKTsK
ICAgICAgICAgdm9pZCBmaXJlUmVtb3ZhbENhbGxiYWNrSWZQb3NzaWJsZSgpOwogICAgICAgICB2
b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwogCi0gICAgICAgIGJvb2wgc3RvcFdhaXRpbmdGb3JF
dmVudChFdmVudHMsIGNvbnN0IFN0cmluZyYgbG9nUmVhc29uLCBTaG91bGRJZ25vcmVFdmVudElm
UGF1c2VkID0gU2hvdWxkSWdub3JlRXZlbnRJZlBhdXNlZDo6WWVzKTsKKyAgICAgICAgYm9vbCBz
dG9wV2FpdGluZ0ZvckV2ZW50KEV2ZW50cywgQVNDSUlMaXRlcmFsIGxvZ1JlYXNvbiwgU2hvdWxk
SWdub3JlRXZlbnRJZlBhdXNlZCA9IFNob3VsZElnbm9yZUV2ZW50SWZQYXVzZWQ6Olllcyk7CiAK
ICAgICAgICAgRXZlbnRzIG1fb3V0c3RhbmRpbmdFdmVudHMgeyAwIH07CiAgICAgICAgIFdURjo6
RnVuY3Rpb248dm9pZCgpPiBtX3JlbW92YWxDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KaW5kZXggZDgx
ZDc4MDYyMWM4MDUwOTNkNDgzZjFlYWMzNWUyOTAxZDgxODNiOS4uZjY3Y2U0MDQzMTVlZDYyOGVm
MWY4MmU0MTM1MmIxYTVhODZjMTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KQEAgLTQxNiw3ICs0MTYsNyBA
QCB2b2lkIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjpwZXJmb3JtUmVxdWVzdChS
ZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcQogICAgICAgICBbbV9wcm94eSBwZXJmb3JtQXV0b0Zp
bGxBdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0OnJlcXVlc3RDb250ZXh0LmdldCgpIHdp
dGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShpZDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGVu
c3VyZU9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwg
Y3JlZGVudGlhbCA9IHJldGFpblB0cihjcmVkZW50aWFsKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3IpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGhhbmRsZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwg
RXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIiB9KTsK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlcih7IH0sIChBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCkwLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiT3BlcmF0aW9uIGZhaWxlZC4i
X3MgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgY29udGludWVBZnRlclJlcXVlc3QoY3JlZGVudGlhbCwgZXJyb3IsIFdU
Rk1vdmUoaGFuZGxlcikpOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6OnBlcmZvcm1SZXF1ZXN0KFJldGFpblB0cjxBU0NDcmVkZW50aWFs
UmVxCiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywgaGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlciksIHdpbmRvdyA9IFdURk1vdmUod2luZG93KSwgZGFlbW9uRW5kcG9pbnQgPSBy
ZXRhaW5QdHIoZGFlbW9uRW5kcG9pbnQpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildICgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZGFlbW9uRW5kcG9pbnQpIHsK
ICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjb25uZWN0IHRvIGF1dGhvcml6
YXRpb24gZGFlbW9uOiAlQFxuIiwgZXJyb3IuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGhhbmRs
ZXIoeyB9LCAoQXV0aGVudGljYXRvckF0dGFjaG1lbnQpMCwgRXhjZXB0aW9uRGF0YSB7IE5vdEFs
bG93ZWRFcnJvciwgIk9wZXJhdGlvbiBmYWlsZWQuIiB9KTsKKyAgICAgICAgICAgICAgICBoYW5k
bGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RB
bGxvd2VkRXJyb3IsICJPcGVyYXRpb24gZmFpbGVkLiJfcyB9KTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmly
dHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbQppbmRleCA3NmUzM2E3Mzg2N2JjNGY3ZWNmN2JjZDY2
YzA4ZWFjNTZlZjYwZjFhLi4zZjAwYTUwYTc5ZWY2ZjEzNDcxMDViNGVmNzg2NGE2MWNjMjA0NmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9W
aXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0
aWxzLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIGJhc2U2NFByaXZhdGVLZXkoUmV0YWlu
UHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleSkKICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRD
RihlcnJvclJlZik7CiAgICAgaWYgKGVycm9yUmVmKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogICAgIH0KICAgICBOU0RhdGEgKm5zUHJpdmF0ZUtleVJlcCA9IChOU0RhdGEgKilwcml2YXRl
S2V5UmVwLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5l
Y3Rpb24uY3BwCmluZGV4IDE1MGZlNDJjZDQ2NzY5YzUzNjYwOTFkNmY0ZmY0YzMxZWE2ZmM1ZjUu
LmE3ZDBiNTAwMWUyNGZlMTZlYWUyOGZjODM1MzhlZDk1OWI4MzVlNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhp
ZENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCkBAIC0yMjIsNyArMjIyLDcg
QEAgdm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAgICAgICAg
IENCT1JWYWx1ZTo6TWFwVmFsdWUgcmVzcG9uc2U7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9S
VmFsdWUoMSldID0gQ0JPUlZhbHVlKCJub25lIik7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9S
VmFsdWUoMildID0gQ0JPUlZhbHVlKGF1dGhlbnRpY2F0b3JEYXRhKTsKLSAgICAgICAgICAgIGF1
dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhlbnRpY2F0b3JEYXRh
KSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7CisgICAg
ICAgICAgICBhdXRvIGF0dE9iaiA9IGJ1aWxkQXR0ZXN0YXRpb25NYXAoV1RGTW92ZShhdXRoZW50
aWNhdG9yRGF0YSksIFN0cmluZyB7IGVtcHR5U3RyaW5nKCkgfSwgeyB9LCBBdHRlc3RhdGlvbkNv
bnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1
ZSgzKV0gPSBDQk9SVmFsdWUoYXR0T2JqKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENC
T1JXcml0ZXI6OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25u
ZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDIp
XSA9IENCT1JWYWx1ZShhdXRoRGF0YSk7CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUo
MyldID0gQ0JPUlZhbHVlKHNpZ25hdHVyZUZvclByaXZhdGVLZXkoa2V5LCBhdXRoRGF0YSwgY2xp
ZW50RGF0YUhhc2gpKTsKICAgICAgICAgICAgIGlmIChjcmVkZW50aWFsLnVzZXJIYW5kbGUpCi0g
ICAgICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDQpXSA9IENCT1JWYWx1ZShidWlsZFVz
ZXJFbnRpdHlNYXAoKmNyZWRlbnRpYWwudXNlckhhbmRsZSwgIiIsICIiKSk7CisgICAgICAgICAg
ICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDQpXSA9IENCT1JWYWx1ZShidWlsZFVzZXJFbnRpdHlN
YXAoKmNyZWRlbnRpYWwudXNlckhhbmRsZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
OwogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDUpXSA9IENCT1JWYWx1ZSgoaW50NjRf
dCltYXRjaGluZ0NyZWRlbnRpYWxzLnNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHBheWxvYWQg
PSBDQk9SV3JpdGVyOjp3cml0ZShDQk9SVmFsdWUocmVzcG9uc2UpKTsKICAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggODBkY2M5ZjZiZjVmMDVlNDc3ZTZlZGYwNDNj
MDE0NDQ4ZjE1MTZjNS4uZThkMGZmOTU3OWZkMjg5ZTVkYmM1NjdiMDM2MWQwMTdkZTEyNzk3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0CiAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTAsIEV4Y2VwdGlvbkRhdGEg
eyBOb3RBbGxvd2VkRXJyb3IsICJUaGlzIHJlcXVlc3QgaGFzIGJlZW4gY2FuY2VsbGVkIGJ5IHRo
ZSB1c2VyLiIgfSk7CisgICAgICAgICAgICBoYW5kbGVyKHsgfSwgKEF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50KTAsIEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJUaGlzIHJlcXVlc3Qg
aGFzIGJlZW4gY2FuY2VsbGVkIGJ5IHRoZSB1c2VyLiJfcyB9KTsKICAgICB9OwogICAgIAogICAg
IGlmICghZGF0YS5wcm9jZXNzaW5nVXNlckdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZUdyb3VwLmNwcAppbmRleCBmMWI5MGQzZmI2YjQ1MDhkNmEzZmZjZGQ2NzkxYjg5YmE3
ZTA0Y2YyLi44YTM5M2NlY2ViNjRhNTM4MzU4ODg1ZmM0YjBlYjgyZDRlYWM0MDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3Rh
dGljIFdlYlBhZ2VHcm91cERhdGEgcGFnZUdyb3VwRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIpCiAvLyBJZiBpdCB0dXJucyBvdXQgdGhhdCBpdCdzIHdyb25nLCB3ZSBjYW4gY2hhbmdlIGl0
IHRvIHRvICJXZWJLaXQyLiIgYW5kIGdldCByaWQgb2YgdGhlIGdsb2JhbERlYnVnS2V5UHJlZml4
IGZyb20gV2ViUHJlZmVyZW5jZXMuCiBXZWJQYWdlR3JvdXA6OldlYlBhZ2VHcm91cChjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBtX2RhdGEocGFnZUdyb3VwRGF0YShpZGVudGlmaWVy
KSkKLSAgICAsIG1fcHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lE
ZWZhdWx0cyhtX2RhdGEuaWRlbnRpZmllciwgIi5XZWJLaXQyIiwgIldlYktpdDIuIikpCisgICAg
LCBtX3ByZWZlcmVuY2VzKFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMo
bV9kYXRhLmlkZW50aWZpZXIsICIuV2ViS2l0MiJfcywgIldlYktpdDIuIl9zKSkKICAgICAsIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVh
dGUoKSkKIHsKICAgICB3ZWJQYWdlR3JvdXBNYXAoKS5zZXQobV9kYXRhLnBhZ2VHcm91cElELCB0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQwNjE2
Y2E3MWY1YjVmNzdmZjA2M2RkNTU1Y2NiMDcwMDIzY2Y3ODcuLjE0YWRiZDhhY2E4NjVmZGFjNTc4
MzQxMWZjOTlmMDQ4MDRhN2IxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTExMTIsNyArMTExMTIsNyBAQCBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JF
cnJvciBXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZQog
ewogICAgIGF1dG8gY2FwdHVyZURldmljZSA9IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJj
ZTo6ZmluZENhcHR1cmVEZXZpY2UoKTsKICAgICBpZiAoIWNhcHR1cmVEZXZpY2UpCi0gICAgICAg
IHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJObyBkZXZpY2UgaXMgYXZhaWxhYmxlIGZv
ciBjYXB0dXJlIiB9OworICAgICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiTm8g
ZGV2aWNlIGlzIGF2YWlsYWJsZSBmb3IgY2FwdHVyZSJfcyB9OwogCiAgICAgaWYgKHByZWZlcmVu
Y2VzKCkuY2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4g
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2U6OmNyZWF0ZShtX3Byb2Nlc3MtPmVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIoKSwgKmNhcHR1cmVEZXZpY2UsIG1fd2ViUGFnZUlE
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDJm
MTY4MTc0NjU0ZjY1NjgwMzhhOTNiOGI2YWRiNWIxNzRlM2QyNzIuLjFiMmI4NTFlOTcyNGFjNTBm
ZTM5OGY5MDRmYjNlYzU3YWU1MDlhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAg
ICBpZiAoIXNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGVzY3Jp
cHRpb24obWVzc2FnZU5hbWUpKS5wdHIoKSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFj
ayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGRlc2NyaXB0aW9uKG1lc3NhZ2VO
YW1lKSB9KS5wdHIoKSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNG
b3JTYW5kYm94RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBhOGVmNWRiYzQ3ZTZlY2IyYTQ2M2ZlN2I4NWQxY2VkOWVhMDM0NWVl
Li5kOTk0NzIwMWY4Yjk0YjVkM2UyZDMyYmI0ODJkYTI2OWQ2NzlmNjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU1OSwxOSArNTU5LDE5IEBA
IFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlEKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHNQcm9jZXNzZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2Jh
bFBhZ2VNYXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKCJXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxw
dHIpOworICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldl
YnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIl9zLCBudWxscHRyKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lz
dHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQ
YWdlTWFwKCkpCi0gICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZSgiV2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBudWxscHRy
KTsKKyAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJz
aXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCJfcywgbnVsbHB0cik7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVn
aXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2Jh
bFBhZ2VNYXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKCJXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBu
dWxscHRyKTsKKyAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KCJXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiX3MsIG51
bGxwdHIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE3ODksNyArMTc4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGF1dG8gY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9
IFt3ZWFrUGFnZSA9IFdlYWtQdHIgeyB0YXJnZXRQYWdlIH1dKCkgewotICAgICAgICByZXR1cm4g
d2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJl
Y29nbml0aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQYWdlIGlzIGludmFsaWQiIH07
CisgICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlh
U291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBh
Z2UgaXMgaW52YWxpZCJfcyB9OwogICAgIH07CiAgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIg
PSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPigqY29ubmVjdGlvbigpLCBpZGVu
dGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lmTW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCksIFdURk1vdmUoY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSkp
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA4MzFhYjQ3
ZDAwNTRiMDRhZmQ3ZGNjY2Q1YzllOGU0Zjc4MDQ3OGQ5Li4xMDZhYjlkZGMzYzVhZWMyN2IwMzNh
ODRjNmYzNGNhMjg4ODE1NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CkBAIC0yNzIsMjYgKzI3MiwyNiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlv
bjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29r
bWFya3NEKCkpIHsKICAgICAgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3Rv
cnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20u
YXBwbGUuV2ViQXBwQ2FjaGUiXTsKIAotICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJl
c29sdmluZ1N5bWxpbmtzSW5QYXRoKGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRo
KTsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0
aChTdHJpbmcgeyBjYWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCB9KTsKICAgICB9
CiAjZW5kaWYKIAotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
Il9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICBhdXRv
IGRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJEZWZhdWx0Iik7CisgICAgYXV0byBkaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiRGVmYXVsdCJfcyk7CiAKICAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIG9sZCBzdG9yYWdlIGRpcmVjdG9yeSwgYW5kIHRoZXJlIG1p
Z2h0IGJlIGZpbGVzIGxlZnQgaGVyZS4KLSAgICAgICAgYXV0byBvbGREaXJlY3RvcnkgPSBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU3RvcmFnZSIsIFNob3VsZENyZWF0
ZURpcmVjdG9yeTo6Tm8pOworICAgICAgICBhdXRvIG9sZERpcmVjdG9yeSA9IGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTdG9yYWdlIl9zLCBTaG91bGRDcmVhdGVEaXJl
Y3Rvcnk6Ok5vKTsKICAgICAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgICAgIE5TQXJyYXkgKmZpbGVzID0gW2ZpbGVN
YW5hZ2VyIGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6b2xkRGlyZWN0b3J5IGVycm9yOjBdOwog
ICAgICAgICBpZiAoZmlsZXMpIHsKQEAgLTMxMiw2MyArMzEyLDYzIEBAIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUi
KTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5l
dHdvcmtDYWNoZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QWx0
ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJBbHRlcm5hdGl2ZVNlcnZpY2VzIiwgU2hvdWxkQ3Jl
YXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJBbHRlcm5hdGl2ZVNlcnZpY2VzIl9zLCBTaG91bGRDcmVhdGVEaXJlY3Rv
cnk6Ok5vKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTWVkaWFDYWNoZSIpOworICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVkREIi
KTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkluZGV4ZWREQiJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOworICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdv
cmtlcnMiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSJfcyk7CiB9
CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpCiB7Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJNZWRpYUtleXMiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyJfcyk7CiB9CiAKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkRldmljZUlkSGFzaFNhbHRzIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJEZXZpY2VJZEhhc2hTYWx0cyJfcyk7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQog
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiV2ViU1FMIik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJXZWJTUUwiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogewotICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyIpOworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyJfcyk7CiB9CiAKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
KQogewotICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJK
YXZhU2NyaXB0Q29yZURlYnVnIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7CisgICAgcmV0
dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3Jl
RGVidWciX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogCiAjaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXKQogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2Rl
bEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk1vZGVsRWxlbWVudCIsIFNob3VsZENyZWF0ZURpcmVjdG9y
eTo6Tm8pOworICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJNb2RlbEVsZW1lbnQiX3MsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOwogfQogI2VuZGlm
CiAKQEAgLTM5OCw3ICszOTgsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcgogICAgICAgICAm
JiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6
dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bnVsbHB0cl0pKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgdXJsKTsKICAgICAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aDsKIH0K
IAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKQEAgLTQyNiw3ICs0MjYsNyBAQCBTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBkaQogICAgICAgICAmJiAhW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllF
UyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CiAKLSAgICByZXR1cm4gdXJsLmFic29s
dXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworICAgIHJldHVybiB1cmwuYWJz
b2x1dGVVUkwucGF0aDsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
TmFtZSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaQogICAgIGlm
ICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1
cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpu
dWxscHRyXSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAl
QCIsIHVybCk7CiAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aDsKIH0KIAogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTFiYmY1NGYw
YjQwZmYxMjNhMjQxYmFjZjM2NmJiOTJiYmYwMzkxNy4uYWI0NTY2NGI2OWNmODgzMDc5Y2RhYmEz
NTcxNzZlNDg5MWRmMjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFsbG93c1dl
YnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaG9zdFN0cmluZyA9IGVudHJ5
Lm9yaWdpbi5ob3N0LmlzRW1wdHkoKSA/ICIiIDogbWFrZVN0cmluZygiICIsIGVudHJ5Lm9yaWdp
bi5ob3N0KTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGhvc3RTdHJpbmcgPSBlbnRyeS5v
cmlnaW4uaG9zdC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogbWFrZVN0cmluZygiICIsIGVu
dHJ5Lm9yaWdpbi5ob3N0KTsKICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBtYWtl
U3RyaW5nKGVudHJ5Lm9yaWdpbi5wcm90b2NvbCwgaG9zdFN0cmluZyk7CiAgICAgICAgICAgICAg
ICAgfQogCkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9v
bD4+IFdlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZVByb2Nlc3NQb29scygpIGNvbnN0CiAKIHN0YXRp
YyBTdHJpbmcgY29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0
b3J5KQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3Vy
ZVN0b3AucGxpc3QiX3MpOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdp
bi5jcHAKaW5kZXggN2ZmYTM1NmRiY2U2MmFmZjc4MDc1M2MwNmFjNDgwMGVjNmE0YTYxOS4uZTNl
MTdhNGYwNGVhMjU3YTI5N2Q2OWE4ODk4OTg3NWY5NzY2NzA1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0
YVN0b3JlV2luLmNwcApAQCAtNDgsNTIgKzQ4LDUyIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhXYWxsVGltZSkKIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIl9z
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNo
ZVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2Fj
aGVTdG9yYWdlIl9zKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRHZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIlN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiU3RvcmFnZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSJfcyk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIl9zKTsKIH0KIAogU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdv
cmtlcnMiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2Vydmlj
ZVdvcmtlcnMiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIkxvY2FsU3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJMb2NhbFN0b3JhZ2UiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIl9zKTsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiX3MpOwogfQogCiBT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKQogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiX3MpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4
IDgxMjQwMjgxN2MyNTdhZTRlNzRiMjUyYjZkMDM3NDQ3Yjg1YjU5MTIuLjA3YzIxN2M3ZDZhOTgy
MzBmOWE0NDlkMmEyZTc0YTI2MTg1NDEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC00NiwxMiArNDYsMTIg
QEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKQogLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBh
IHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiX3MpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiX3MpKTsKIH0KIAogV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCmluZGV4IDZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFiMDMy
MmQyZTUuLmYxNDE5Yjc0OTc4ZWU3ZTQ5N2I4OTZkMjA3YjM3NDg0YjhkYjE3ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5h
bWVGcm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuICJWUDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAiSDI2NCI7CisgICAgICAgIHJldHVybiAiSDI2NCJfczsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZTE5YjFlMDMyNDBj
NzVhODNjNTk5NDcyYWUyZWRlNDZkYmZjNzFhYi4uM2I4ODM1NTJiYjI1OGIwNTkzNTE0YjVjNTUz
NWRlYzYwNjY2MjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTYxNywxMSAr
NjE3LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGludCBmCiAgICAgICAgIGF1dG8qIGhpZ2hsaWdo
dERhdGFBcnJheSA9IFdlYktpdDo6dG9JbXBsKGhpZ2hsaWdodERhdGEpOwogICAgICAgICBoaWdo
bGlnaHRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGlnaGxpZ2h0RGF0YUFycmF5LT5zaXplKCkp
OwogICAgICAgICBmb3IgKGF1dG8gZGljdGlvbmFyeSA6IGhpZ2hsaWdodERhdGFBcnJheS0+ZWxl
bWVudHNPZlR5cGU8QVBJOjpEaWN0aW9uYXJ5PigpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0YXJ0
T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20i
KSktPnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8
QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImZyb20iX3MpKS0+dmFsdWUoKTsKICAgICAg
ICAgICAgIGhpZ2hsaWdodHMudW5jaGVja2VkQXBwZW5kKHsKICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpLAotICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCArIHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4oZGlj
dGlvbmFyeS0+Z2V0KCJsZW5ndGgiKSktPnZhbHVlKCkpLAotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0YXRpY19jYXN0PEFQSTo6
U3RyaW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xvciIpKS0+c3RyaW5nKCkpCisgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8QVBJ
OjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxlbmd0aCJfcykpLT52YWx1ZSgpKSwKKyAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChz
dGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KGRpY3Rpb25hcnktPmdldCgiY29sb3IiX3MpKS0+c3Ry
aW5nKCkpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggYmRlMjhkZTAzN2RhZmFlZjViY2QwNDRhNzVmNzA1NjJk
ZTAwYjc4OS4uNTIyYWU1OTk2YTY3OTRjNGJlY2VlNzdhOWU4MjFkNjEzMGIwYWY1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHZv
aWQgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9y
aWdpblBhdGgsIFdhbGwKIAogICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlOYW1lIDogbWVk
aWFLZXlOYW1lcykgewogICAgICAgICBhdXRvIG1lZGlhS2V5UGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCBtZWRpYUtleU5hbWUpOwotICAgICAg
ICBTdHJpbmcgbWVkaWFLZXlGaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1lZGlhS2V5UGF0aCwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICAgICAgU3RyaW5nIG1l
ZGlhS2V5RmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtl
eVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Il9zKTsKIAogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCBlYmM1M2ViZmE5MTA5YzQ5MTRiODlkNzQ5YTA0YzBmNWRjZDE2N2YzLi5iNGRjYWNm
ZTA1ODE2OWE5MmY2YTFmODM1OGRhNWRiMTVlNWJiMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTMwLDcg
KzEzMCw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6aW5jcmVhc2VCdWZmZXJlZEFtb3VudChz
aXplX3QgYnl0ZUxlbmd0aCkKICAgICBDaGVja2VkU2l6ZSBjaGVja2VkTmV3QnVmZmVyZWRBbW91
bnQgPSBtX2J1ZmZlcmVkQW1vdW50OwogICAgIGNoZWNrZWROZXdCdWZmZXJlZEFtb3VudCArPSBi
eXRlTGVuZ3RoOwogICAgIGlmIChVTkxJS0VMWShjaGVja2VkTmV3QnVmZmVyZWRBbW91bnQuaGFz
T3ZlcmZsb3dlZCgpKSkgewotICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQg
ZnJhbWU6IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZSIpOworICAgICAgICBmYWlsKCJGYWlsZWQg
dG8gc2VuZCBXZWJTb2NrZXQgZnJhbWU6IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZSJfcyk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGNlYmQ5N2FhZDhjYWIy
NWY2Y2VkZTBlM2U3MDc5NWZjZjcyNzAzNGUuLjc4ZDUwZjVkZjBkYWYwYmVmY2M2NDI4ZDQ5NGQ5
OGYyODE2MjIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYlNvY2tldFN0
cmVhbTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNl
KTsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHN0cmVhbS0+bV9zZW5kSGFuZHNoYWtl
Q2FsbGJhY2tzLnZhbHVlcygpKQogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIGZhbHNlKTsK
LSAgICAgICAgc3RyZWFtLT5tX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCpzdHJlYW0sIFNv
Y2tldFN0cmVhbUVycm9yKDAsIHsgfSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkLiIpKTsKKyAg
ICAgICAgc3RyZWFtLT5tX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCpzdHJlYW0sIFNvY2tl
dFN0cmVhbUVycm9yKDAsIHsgfSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkLiJfcykpOwogICAg
ICAgICBzdHJlYW0gPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzllMzg1YmUwMjRlYmJmMTM2
ZGMyN2RkY2VhYjQ5NDYyZTE1YzA1Zi4uYTQ4OTFiOTJkYWZjZDQ2NjY0OGYxNmRjMTMzNjI2MGFi
ZjEyYzg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xMjEsNyArMTIxLDcgQEAgQGVuZAogLy8gU2V0IG92ZXJmbG93OiBo
aWRkZW4gb24gdGhlIGFubm90YXRpb24gY29udGFpbmVyIHNvIDxpbnB1dD4gZWxlbWVudHMgc2Ny
b2xsZWQgb3V0IG9mIHZpZXcgZG9uJ3Qgc2hvdwogLy8gc2Nyb2xsYmFycyBvbiB0aGUgYm9keS4g
V2UgY2FuJ3QgYWRkIGFubm90YXRpb25zIGRpcmVjdGx5IHRvIHRoZSBib2R5LCBiZWNhdXNlIG92
ZXJmbG93OiBoaWRkZW4gb24gdGhlIGJvZHkKIC8vIHdpbGwgYnJlYWsgcnViYmVyLWJhbmRpbmcu
Ci1zdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxlID0KK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBhbm5vdGF0aW9uU3R5bGUgPQogIiNhbm5vdGF0aW9uQ29udGFpbmVyIHsiCiAiICAgIG92
ZXJmbG93OiBoaWRkZW47ICIKICIgICAgcG9zaXRpb246IGFic29sdXRlOyAiCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CiAiICAgIHBvc2l0
aW9uOiBzdGF0aWM7ICIKICIgICAgd2lkdGg6IDIwMHB4OyAiCiAiICAgIG1hcmdpbi10b3A6IDEw
MHB4OyAiCi0ifSAiOworIn0gIl9zOwogCiAvLyBJbiBub24tY29udGludW91cyBtb2RlcywgYSBz
aW5nbGUgc2Nyb2xsIGV2ZW50IHdpdGggYSBtYWduaXR1ZGUgb2YgPj0gMjBweAogLy8gd2lsbCBq
dW1wIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIHBhZ2UsIHRvIG1hdGNoIFBERktpdCBiZWhhdmlv
ci4KQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIFBERlBsdWdpbjo6cmVjZWl2ZWROb25MaW5lYXJp
emVkUERGU2VudGluZWwoKQogCiAgICAgaWYgKCFpc01haW5SdW5Mb29wKCkpIHsKICNpZiAhTE9H
X0RJU0FCTEVECi0gICAgICAgIHBkZkxvZygiRGlzYWJsaW5nIGluY3JlbWVudGFsIFBERiBsb2Fk
aW5nIG9uIGJhY2tncm91bmQgdGhyZWFkIik7CisgICAgICAgIHBkZkxvZygiRGlzYWJsaW5nIGlu
Y3JlbWVudGFsIFBERiBsb2FkaW5nIG9uIGJhY2tncm91bmQgdGhyZWFkIl9zKTsKICNlbmRpZgog
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dIHsKICAgICAgICAgICAgIHJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7
CkBAIC05NjEsNyArOTYxLDcgQEAgdm9pZCBQREZQbHVnaW46OnRocmVhZEVudHJ5KFJlZjxQREZQ
bHVnaW4+JiYgcHJvdGVjdGVkUGx1Z2luKQogICAgIGZpcnN0UGFnZVNlbWFwaG9yZS53YWl0KCk7
CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgcGRmTG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZp
cnN0IHBhZ2UiKTsKKyAgICBwZGZMb2coIkZpbmlzaGVkIHByZWxvYWRpbmcgZmlyc3QgcGFnZSJf
cyk7CiAjZW5kaWYKIH0KIApAQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCBQREZQbHVnaW46OmFk
b3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KCkKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKIAogI2lmICFMT0dfRElTQUJMRUQKLSAgICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50
IGZyb20gYmFja2dyb3VuZCB0aHJlYWQiKTsKKyAgICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3Vt
ZW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWQiX3MpOwogI2VuZGlmCiAKICAgICBtX3BkZkRvY3Vt
ZW50ID0gV1RGTW92ZShtX2JhY2tncm91bmRUaHJlYWREb2N1bWVudCk7CkBAIC0xMjgyLDEzICsx
MjgyLDEzIEBAIFBsdWdpbkluZm8gUERGUGx1Z2luOjpwbHVnaW5JbmZvKCkKICAgICBpbmZvLmJ1
bmRsZUlkZW50aWZpZXIgPSAiY29tLmFwcGxlLndlYmtpdC5idWlsdGlucGRmcGx1Z2luIl9zOwog
CiAgICAgTWltZUNsYXNzSW5mbyBwZGZNaW1lQ2xhc3NJbmZvOwotICAgIHBkZk1pbWVDbGFzc0lu
Zm8udHlwZSA9ICJhcHBsaWNhdGlvbi9wZGYiOworICAgIHBkZk1pbWVDbGFzc0luZm8udHlwZSA9
ICJhcHBsaWNhdGlvbi9wZGYiX3M7CiAgICAgcGRmTWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9j
dW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMu
YXBwZW5kKCJwZGYiKTsKICAgICBpbmZvLm1pbWVzLmFwcGVuZChwZGZNaW1lQ2xhc3NJbmZvKTsK
IAogICAgIE1pbWVDbGFzc0luZm8gdGV4dFBERk1pbWVDbGFzc0luZm87Ci0gICAgdGV4dFBERk1p
bWVDbGFzc0luZm8udHlwZSA9ICJ0ZXh0L3BkZiI7CisgICAgdGV4dFBERk1pbWVDbGFzc0luZm8u
dHlwZSA9ICJ0ZXh0L3BkZiJfczsKICAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5kZXNjID0gcGRm
RG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKICAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5leHRl
bnNpb25zLmFwcGVuZCgicGRmIik7CiAgICAgaW5mby5taW1lcy5hcHBlbmQodGV4dFBERk1pbWVD
bGFzc0luZm8pOwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hp
dmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRv
cHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDptX3NvdXJjZVVSTCBz
dGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcqKWtDRkhUVFBWZXJzaW9uMV8xIGhl
YWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJl
c3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJj
ZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRS
ZXNwb25zZSk7CisgICAgYXV0byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRp
b24vcGRmIl9zLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAg
IHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVS
ZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTY4OCwxMCArMTY4
OCwxMCBAQCB2b2lkIFBERlBsdWdpbjo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVk
RmlsZW5hbWU7CiAKICAgICBpZiAobV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShu
aWwsICJhcHBsaWNhdGlvbi9wZGYiKTsKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1
Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKG5pbCwgImFwcGxpY2F0aW9uL3BkZiJfcyk7CiAK
ICAgICBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
LnBkZiIpKQotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lLmFwcGVuZCgiLnBkZiIpOworICAg
ICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lLmFwcGVuZCgiLnBkZiJfcyk7CiB9CiAgICAgCiB2b2lk
IFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmLCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCkBAIC0xODkzLDcg
KzE4OTMsNyBAQCBib29sIFBERlBsdWdpbjo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogewogICAgIG1fc291cmNlVVJMID0gcGFyYW1ldGVycy51cmw7CiAgICAgaWYg
KCFwYXJhbWV0ZXJzLnNob3VsZFVzZU1hbnVhbExvYWRlciAmJiAhcGFyYW1ldGVycy51cmwuaXNF
bXB0eSgpKQotICAgICAgICBjb250cm9sbGVyKCktPmxvYWRVUkwocGRmRG9jdW1lbnRSZXF1ZXN0
SUQsICJHRVQiLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgU3RyaW5nKCksIEhUVFBIZWFkZXJN
YXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlKTsKKyAgICAgICAgY29udHJvbGxlcigpLT5s
b2FkVVJMKHBkZkRvY3VtZW50UmVxdWVzdElELCAiR0VUIl9zLCBwYXJhbWV0ZXJzLnVybC5zdHJp
bmcoKSwgU3RyaW5nKCksIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNl
KTsKIAogICAgIGNvbnRyb2xsZXIoKS0+ZGlkSW5pdGlhbGl6ZVBsdWdpbigpOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCmluZGV4IGQ3NDVmMDIwOTQ4NGY0
ZWMyYjc0YTU1Mzc0ZDFiY2U5MWNhNjc4NWQuLjdkNDNmYTAyMWM1YTIwZDY1NTQwOGU3OGJhOWJl
ZmY2NTQ3MDc4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTU0LDE1ICs1
NCwxNSBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxp
Z25tZW50KE5TVGV4dEFsaWdubWVudCBhbGlnbm1lbgogewogICAgIHN3aXRjaCAoYWxpZ25tZW50
KSB7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRSaWdo
dDoKLSAgICAgICAgcmV0dXJuICJyaWdodCI7CisgICAgICAgIHJldHVybiAicmlnaHQiX3M7CiAg
ICAgY2FzZSBOU1RleHRBbGlnbm1lbnRDZW50ZXI6Ci0gICAgICAgIHJldHVybiAiY2VudGVyIjsK
KyAgICAgICAgcmV0dXJuICJjZW50ZXIiX3M7CiAgICAgY2FzZSBOU1RleHRBbGlnbm1lbnRKdXN0
aWZpZWQ6Ci0gICAgICAgIHJldHVybiAianVzdGlmeSI7CisgICAgICAgIHJldHVybiAianVzdGlm
eSJfczsKICAgICBjYXNlIE5TVGV4dEFsaWdubWVudE5hdHVyYWw6Ci0gICAgICAgIHJldHVybiAi
LXdlYmtpdC1zdGFydCI7CisgICAgICAgIHJldHVybiAiLXdlYmtpdC1zdGFydCJfczsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwMzQ0
ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlLi40NWEwMTFiZTU1NjYyMDdjOWNh
YzQ1ZjllZjYwOTJjZTgwMTUwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgdm9pZCBQbHVnaW5W
aWV3Ojpsb2FkVVJMKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWh0dHBCb2R5LmlzRW1wdHkoKSkgewogICAgICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVh
dGUoaHR0cEJvZHkuZGF0YSgpLCBodHRwQm9keS5zaXplKCkpKTsKICAgICAgICAgaWYgKGZyYW1l
TG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCkuaXNFbXB0eSgp
KQotICAgICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQ
Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOworICAgICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQ29udGVudFR5
cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJfcyk7CiAgICAgfQogCiAgICAg
U3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIo
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJl
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
aW5kZXggMGUxMTdhMGVjNjE5MDBkMTUwYWRiMWRlOWM2ODIyOWE4ZTdhYjU3MC4uZjViZDg5ZjFj
MzU0Njk0OTdiMjliNTY5ZTRiOGQyNGIzYmYwYzFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgU2VjdXIKIAogICAgIGlmICghaXNXZWJCcm93c2VyKCkpIHsKICAgICAgICAgV0VC
QVVUSE5fUkVMRUFTRV9MT0dfRVJST1IoIm1ha2VDcmVkZW50aWFsOiBUaGUgJ25hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMg
d2l0aCB0aGUgJ2NvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIp
OwotICAgICAgICBoYW5kbGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1l
bnQ+KDApLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25z
IHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4i
IH0pOworICAgICAgICBoYW5kbGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFj
aG1lbnQ+KDApLCBFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlJyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRp
b25zIHdpdGggdGhlICdjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVu
dC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
TWFrZUNyZWRlbnRpYWwoaGFzaCwgb3B0aW9ucywgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUpLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgU2Vj
dXJpdAogCiAgICAgaWYgKCFpc1dlYkJyb3dzZXIoKSkgewogICAgICAgICBXRUJBVVRITl9SRUxF
QVNFX0xPR19FUlJPUigiZ2V0QXNzZXJ0aW9uOiBUaGUgJ25hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQnIEFQSSBpcyBvbmx5IHBlcm1pdHRlZCBpbiBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgJ2NvbS5h
cHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXInIGVudGl0bGVtZW50LiIpOwotICAgICAgICBoYW5k
bGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRp
b25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
JyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBw
bGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iIH0pOworICAgICAgICBoYW5k
bGVyKHsgfSwgc3RhdGljX2Nhc3Q8QXV0aGVudGljYXRvckF0dGFjaG1lbnQ+KDApLCBFeGNlcHRp
b25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlICduYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
JyBBUEkgaXMgb25seSBwZXJtaXR0ZWQgaW4gYXBwbGljYXRpb25zIHdpdGggdGhlICdjb20uYXBw
bGUuZGV2ZWxvcGVyLndlYi1icm93c2VyJyBlbnRpdGxlbWVudC4iX3MgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViQXV0aG5Q
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0QXNzZXJ0aW9uKGhhc2gsIG9w
dGlvbnMsIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGJhMjFl
NGQ4YjQ3NGQ1ZGEwYTFlYmM0NzdhMTAzZDgyOWM1ZWExMDcuLjQyNzVlYmRjNmUwOWVhMTZhNTNk
OGE3N2U2ZTgxOGFhYzY2YTM2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpjbG9zZUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgb3RoZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OlNhbWVFbnRyeUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25u
ZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2Vi
Q29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBs
b3N0Il9zIH0pOwogCiAgICAgaWYgKGlkZW50aWZpZXIgPT0gb3RoZXJJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjppc1NhbWVFbnRyeShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Z2V0RmlsZUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnksIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25F
cnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25u
ZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRGaWxlSGFuZGxlKGlkZW50
aWZpZXIsIG5hbWUsIGNyZWF0ZUlmTmVjZXNzYXJ5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KQpA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0
RmlsZUhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbgogdm9pZCBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldERpcmVjdG9yeUhhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
Y3JlYXRlSWZOZWNlc3NhcnksIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29u
bmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2Vw
dGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7Cisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJD
b3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpHZXREaXJlY3RvcnlIYW5kbGUoaWRlbnRpZmllciwgbmFtZSwgY3JlYXRlSWZOZWNlc3Nh
cnkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5hbWUsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldERpcmVjdG9yeUhhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGwKIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1v
dmVFbnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGVsZXRlUmVjdXJzaXZlbHksIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0
aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0
Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlRW50cnkoaWRlbnRpZmllciwgbmFtZSwgZGVs
ZXRlUmVjdXJzaXZlbHkpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwpAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeShXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6cmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBvdGhlcklkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6UmVzb2x2ZUNhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtu
b3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAi
Q29ubmVjdGlvbiBpcyBsb3N0Il9zIH0pOwogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVzb2x2ZShpZGVudGlm
aWVyLCBvdGhlcklkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3Vs
dCkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6cmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcgogdm9pZCBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNv
bm5lY3Rpb24gaXMgbG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlz
IGxvc3QiX3MgfSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRGaWxlKGlkZW50aWZpZXIpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllcgogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNy
ZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nl
c3NIYW5kbGVDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0
aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghcmVzdWx0KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1ICiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2VTeW5jQWNj
ZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7CiAK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpDbG9zZVN5bmNBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFu
ZGxlSWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Omdl
dEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlTmFtZXNDYWxsYmFjayYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5r
bm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwg
IkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldEhhbmRsZU5hbWVz
KGlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE3
OSw3ICsxNzksNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFu
ZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZQogdm9pZCBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6R2V0SGFuZGxlQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdl
YkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMg
bG9zdCIgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNl
cHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiX3MgfSk7
CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpHZXRIYW5kbGUoaWRlbnRpZmllciwgbmFtZSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJl
c3VsdCkKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Z2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaQogdm9pZCBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Om1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFZvaWRD
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25v
d25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCJfcyB9KTsKIAogICAgIG1fY29ubmVjdGlvbi0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok1vdmUo
aWRlbnRpZmllciwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBuZXdOYW1lKSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcAppbmRleCBjNTdlNzgwOWIy
ZWUxNjZkZDZmNjg4YmUyMmE4NTljN2RhZGRhOGZhLi4wYzVkZjU0ZGM0NzNkMWE2ZjM2ZDI4ODM5
YTViZjExZWQ2ODMxMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNw
cApAQCAtNzcsOSArNzcsOSBAQCB2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudDo6c3BlYWso
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZQogICAgIH07CiAKICAg
ICBhdXRvIHZvaWNlID0gdXR0ZXJhbmNlLT52b2ljZSgpOwotICAgIGF1dG8gdm9pY2VVUkkgPSB2
b2ljZSA/IHZvaWNlLT52b2ljZVVSSSgpIDogIiI7Ci0gICAgYXV0byBuYW1lID0gdm9pY2UgPyB2
b2ljZS0+bmFtZSgpIDogIiI7Ci0gICAgYXV0byBsYW5nID0gdm9pY2UgPyB2b2ljZS0+bGFuZygp
IDogIiI7CisgICAgYXV0byB2b2ljZVVSSSA9IHZvaWNlID8gdm9pY2UtPnZvaWNlVVJJKCkgOiBl
bXB0eVN0cmluZygpOworICAgIGF1dG8gbmFtZSA9IHZvaWNlID8gdm9pY2UtPm5hbWUoKSA6IGVt
cHR5U3RyaW5nKCk7CisgICAgYXV0byBsYW5nID0gdm9pY2UgPyB2b2ljZS0+bGFuZygpIDogZW1w
dHlTdHJpbmcoKTsKICAgICBhdXRvIGxvY2FsU2VydmljZSA9IHZvaWNlID8gdm9pY2UtPmxvY2Fs
U2VydmljZSgpIDogZmFsc2U7CiAgICAgYXV0byBpc0RlZmF1bHQgPSB2b2ljZSA/IHZvaWNlLT5p
c0RlZmF1bHQoKSA6IGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bQppbmRleCBhYWM2YjNmYTEwNzBhN2EzYzA1ZGJhNzcyN2Y0MGEzODFmYTQ4MTYzLi5hZmIxYjJk
OTFkYWYyNzQ5ODBmMzcxY2JlN2RmNTE5ZDJmYzI1MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRv
ckNsaWVudE1hYy5tbQpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VXb3JkQ2Fz
ZShXZWJQYWdlKiBwYWdlLCBOU1N0cmluZyAqKCpjaGFuZ2VDYXNlKShOU1N0cmluZyAqKSkKICAg
ICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0ZSgpOworICAgIGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RXb3JkIl9zKS5leGVjdXRlKCk7CiAKICAgICBO
U1N0cmluZyAqc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgIHBhZ2UtPnJlcGxh
Y2VTZWxlY3Rpb25XaXRoVGV4dChmcmFtZS5wdHIoKSwgY2hhbmdlQ2FzZShzZWxlY3RlZFN0cmlu
ZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVz
dGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5n
QVBJLmNwcAppbmRleCA2NzQzOTQ0YTNlNmE4ODgxZjA4NDFjMDdlZTE5YTI5MjU1N2IxNmMwLi5k
YjVhYThlNDBkM2RiZjZhYmJjNzRmZmEwYWNjMDhiMmRkMmI1NmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMjE0MSw3
ICsyMTQxLDcgQEAgSlNDOjpKU09iamVjdCogSlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRp
b25Gcm9tRGVjb2RlcihKU0M6OkpTR2xvYmFsT2JqZWN0KgogICAgIGpzUmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpLCBKU0M6OkpT
VmFsdWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIGpzUmVzdWx0LT5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc2NyaXB0aW9u
Il9zKSwgSlNDOjpqc1N0cmluZyh2bSwgSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpKSk7CisgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmcg
eyBJUEM6OmRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkgfSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAganNSZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzdGluYXRpb25JRCJfcyks
IEpTQzo6SlNWYWx1ZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOwpAQCAtMjIwNCw3ICsyMjA0
LDcgQEAgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyks
IEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCAiU2VtYXBob3JlIikpOworICAgIG9iamVjdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwg
SlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sICJTZW1hcGhvcmUiX3MpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAgICAgYXV0byBqc1ZhbHVlID0g
dG9KUyhnbG9iYWxPYmplY3QsIFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6
OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSktPmNyZWF0ZUpTV3JhcHBlcih0b1JlZihnbG9iYWxPYmpl
Y3QpKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInZhbHVlIl9zKSwganNWYWx1ZSk7CkBAIC0yMjIxLDcgKzIyMjEsNyBAQCB0ZW1w
bGF0ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9zKSwgSlNDOjpqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJTaGFyZWRNZW1vcnkiKSk7CisgICAgb2JqZWN0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6Ompz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlNoYXJlZE1lbW9yeSJfcykpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvdGVjdGlvbiA9
IFByb3RlY3Rpb246OlJlYWRXcml0ZTsKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHRlbXBsYXRlPD4g
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iCiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImRhdGFTaXplIl9zKSwgSlNDOjpKU1ZhbHVlKHZhbHVlLmRhdGFTaXpl
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCi0g
ICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InByb3RlY3Rpb24iX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvdGVjdGlvbiA9
PSBQcm90ZWN0aW9uOjpSZWFkV3JpdGUgPyAiUmVhZFdyaXRlIiA6ICJSZWFkT25seSIpKTsKKyAg
ICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cHJvdGVjdGlvbiJfcyksIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm90ZWN0aW9uID09
IFByb3RlY3Rpb246OlJlYWRXcml0ZSA/ICJSZWFkV3JpdGUiX3MgOiAiUmVhZE9ubHkiX3MpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKICAgICBy
ZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDQwYjk5NzMyMDA3ODI1ZTY2ODNlNjM2ODA0M2Y2MmI2YjU5MDMzN2IuLmIz
YmVlMjgyZWNjYzlkMWQ2NzJjYjFlZjdkODZkN2UwZDM4NTczNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBS
ZWY8QVBJOjpBcnJheT4gV2ViRnJhbWU6OmNoaWxkRnJhbWVzKCkKIFN0cmluZyBXZWJGcmFtZTo6
bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJu
IG1fY29yZUZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLmxheWVyVHJlZUFz
VGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4
IDg1ZjVhNDhhYWVmY2YzYjYzMDhhZjZjNGY3YjQ1MWYwYjJmYTE1Y2UuLmIxNDkzZjcxNDM4MzNk
ZWIxODhhOTU3OTQ5MTI4NDI2MzM3NmE3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KQEAgLTgxMCwxMSArODEwLDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBv
aW50CiAgICAgZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmJhY2tpbmcoKS0+dGls
ZWRCYWNraW5nKCktPnByZXBvcHVsYXRlUmVjdCh0aWxlQ292ZXJhZ2VSZWN0KTsKIH0KIAotc3Rh
dGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiB0cmFuc2llbnRab29tU25hcEFuaW1hdGlv
bkZvcktleVBhdGgoU3RyaW5nIGtleVBhdGgpCitzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmlt
YXRpb24+IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aChBU0NJSUxpdGVyYWwg
a2V5UGF0aCkKIHsKICAgICBjb25zdCBmbG9hdCB0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlv
biA9IDAuMjU7CiAKLSAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gYW5pbWF0aW9uID0g
W0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6a2V5UGF0aF07CisgICAgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFu
aW1hdGlvbldpdGhLZXlQYXRoOmtleVBhdGguY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiAgICAg
W2FuaW1hdGlvbiBzZXREdXJhdGlvbjp0cmFuc2llbnRab29tU25hcEJhY2tEdXJhdGlvbl07CiAg
ICAgW2FuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbYW5p
bWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFsc2VdOwpAQCAtODUzLDcgKzg1Myw3IEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb25zdHJh
aW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAgdHJhbnNmb3JtLnNj
YWxlKHNjYWxlKTsKIAotICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3
QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5z
Zm9ybSIpOworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0
aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSJf
cyk7CiAgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3
QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgRmxvYXRQb2ludAogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAg
IFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbem9vbUxheWVyLCBzaGFkb3dDQUxh
eWVyLCBwYWdlLCBzY2FsZSwgb3JpZ2luXSAoKSB7Ci0gICAgICAgIHpvb21MYXllci0+cmVtb3Zl
QW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Iik7CisgICAgICAgIHpvb21MYXll
ci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9zKTsKICAgICAg
ICAgaWYgKHNoYWRvd0NBTGF5ZXIpCiAgICAgICAgICAgICBbc2hhZG93Q0FMYXllciByZW1vdmVB
bGxBbmltYXRpb25zXTsKIApAQCAtODc0LDE3ICs4NzQsMTcgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0
UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uo
c2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZv
cktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOwor
ICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0Il9z
LCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVyKSB7
CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0ZvckZy
YW1lKGZyYW1lVmlldywgc2NhbGUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFk
b3dQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5VTEwp
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5p
bWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiKTsK
KyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRvd0JvdW5kc0FuaW1hdGlv
biA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgiYm91bmRzIl9zKTsKICAg
ICAgICAgW3NoYWRvd0JvdW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0
aFJlY3Q6c2hhZG93Qm91bmRzXV07Ci0gICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9u
PiBzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9y
S2V5UGF0aCgicG9zaXRpb24iKTsKKyAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+
IHNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JL
ZXlQYXRoKCJwb3NpdGlvbiJfcyk7CiAgICAgICAgIFtzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiBz
ZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OnNoYWRvd0xheWVyUG9zaXRpb25Gb3JG
cmFtZShmcmFtZVZpZXcsIGNvbnN0cmFpbmVkT3JpZ2luKV1dOwotICAgICAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFw
QW5pbWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCIpOworICAgICAgICBSZXRhaW5QdHI8Q0FC
YXNpY0FuaW1hdGlvbj4gc2hhZG93UGF0aEFuaW1hdGlvbiA9IHRyYW5zaWVudFpvb21TbmFwQW5p
bWF0aW9uRm9yS2V5UGF0aCgic2hhZG93UGF0aCJfcyk7CiAgICAgICAgIFtzaGFkb3dQYXRoQW5p
bWF0aW9uIHNldFRvVmFsdWU6KF9fYnJpZGdlIGlkKXNoYWRvd1BhdGguZ2V0KCldOwogCiAgICAg
ICAgIFtzaGFkb3dDQUxheWVyIGFkZEFuaW1hdGlvbjpzaGFkb3dCb3VuZHNBbmltYXRpb24uZ2V0
KCkgZm9yS2V5OkAidHJhbnNpZW50Wm9vbUNvbW1pdFNoYWRvd0JvdW5kcyJdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDQ4NTQ2ZmMxNGExODlmN2YzMTNiOTM5ZWEwZjUyNGFk
OWVlNmNlZDMuLmJmY2ZhYTJhYWY1NDk3ODBmNWRiYjljZjM2NTkyM2I3YmEzODRkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTQ0LDEwICs0NCw4IEBAIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VNYW5hZ2VyJiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkKIAogdm9pZCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlcjo6aGFuZGxlRXZlbnQo
eHBjX29iamVjdF90IG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2Rp
Y3Rpb25hcnlfZ2V0X3N0cmluZyhtZXNzYWdlLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVL
ZXkpOwotICAgIGlmIChtZXNzYWdlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gTGF1bmNoU2VydmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6
eHBjVXBkYXRlTGF1bmNoU2VydmljZXNEYXRhYmFzZU1lc3NhZ2VOYW1lKSB7CisgICAgYXV0byog
bWVzc2FnZU5hbWUgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1lc3NhZ2UsIFhQQ0VuZHBv
aW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7CisgICAgaWYgKExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSA9
PSBtZXNzYWdlTmFtZSkgewogI2lmIEhBVkUoTFNEQVRBQkFTRUNPTlRFWFQpCiAgICAgICAgIGF1
dG8gZGF0YWJhc2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobWVzc2FnZSwgTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvQXBwQnVuZGxlUmVxdWVzdC5tbQppbmRleCAwYzUz
ZDM1NjA0ZTM0YTY5NGJhYmNmZjNlNjQ3NjU0OGE4ZTEzNDFlLi4wNWFkNjc4YmEzMGFhM2M3Mjg4
ZWE0OTI5ZmRjNDU5MDQzZGZmM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L0FwcEJ1bmRsZVJlcXVlc3QubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9BcHBCdW5k
bGVSZXF1ZXN0Lm1tCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBBcHBCdW5kbGVEZWxldGlvblJl
cXVlc3Q6OmRpZERlbGV0ZUV4aXN0aW5nQnVuZGxlV2l0aEVycm9yKFB1c2hBcHBCdW5kbGUmIGIK
ICAgICBpZiAoZXJyb3IpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YnJvYWRjYXN0RGVidWdNZXNz
YWdlKG1ha2VTdHJpbmcoIkZhaWxlZCB0byBkZWxldGUgYXBwIGJ1bmRsZTogIiwgU3RyaW5nKFtl
cnJvciBkZXNjcmlwdGlvbl0pKSk7CiAKLSAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXJBbmRDbGVh
bnVwKGVycm9yID8gU3RyaW5nKFtlcnJvciBkZXNjcmlwdGlvbl0pIDogIiIpOworICAgIGNhbGxD
b21wbGV0aW9uSGFuZGxlckFuZENsZWFudXAoZXJyb3IgPyBTdHJpbmcoW2Vycm9yIGRlc2NyaXB0
aW9uXSkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCA0NjU1
NTMxNTIwNWE0Yjc0NDVkM2U3OTdmYjczZTA2ZTljZWNmOTZhLi42MzVkMGFkODgyZTU0ZWRkZDky
YTM5OTY2OTZjOWZiNWEwMGU4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5oCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZW5kRGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgc2Vu
ZERlYnVnTWVzc2FnZShTdHJpbmdWaWV3KTsKIAogcHJpdmF0ZToKICAgICBDbGllbnRDb25uZWN0
aW9uKHhwY19jb25uZWN0aW9uX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENs
aWVudENvbm5lY3Rpb24ubW0KaW5kZXggZDA4YzA0NWIxNGU2MjVlMzcyZTBkMGZiYmJjZDA2OTRm
ZjUxMmQzMi4uZTAxMDQ1NzQ3Zjc0YzgzMzE5ZDRhMzkxMDZjNDNhNmNlNTAyNWFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC0xMzEs
NyArMTMxLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIGJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJUdXJu
ZWQgRGVidWcgTW9kZSAiLCBtX2RlYnVnTW9kZUVuYWJsZWQgPyAib24iIDogIm9mZiIpKTsKIH0K
IAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3Nh
Z2UoU3RyaW5nVmlldyBtZXNzYWdlKQogewogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRpZmllcjsK
ICAgICBhdXRvIHNpZ25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
KCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3RE
ZWJ1Z01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIERhZW1vbjo6c2luZ2xldG9u
KCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZpZXIsIG1l
c3NhZ2UpKTsKIH0KIAotdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZW5kRGVidWdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQ2xpZW50Q29ubmVjdGlvbjo6c2VuZERlYnVnTWVz
c2FnZShTdHJpbmdWaWV3IG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBz
ZW5kIHRoZSBkZWJ1ZyBtZXNzYWdlIHR3aWNlLgogICAgIC8vIEFmdGVyIGdldHRpbmcgYWxsIGRl
YnVnIG1lc3NhZ2UgY2xpZW50cyBvbnRvIHRoZSBlbmNvZGVyL2RlY29kZXIgbWVjaGFuaXNtLCBy
ZW1vdmUgdGhlIG9sZCBzdHlsZSBtZXNzYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb24uaAppbmRleCA5NzgyMzhmNTE3YjBkM2ZiOTZkOTQwNjMxMTMzZmM4ZTQwYWE0NDk2Li4w
NjYyZjEzZTk4Mzk0OTAwYzU0MWZhYmRlOTU2ZTg1Yzk2NjJkYjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVBbGxQdXNoU3Vic2NyaXB0aW9ucyhDbGllbnRDb25uZWN0aW9uKiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlw
dGlvbnNGb3JPcmlnaW4oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmKTsKIAotICAg
IHZvaWQgYnJvYWRjYXN0RGVidWdNZXNzYWdlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYnJv
YWRjYXN0RGVidWdNZXNzYWdlKFN0cmluZ1ZpZXcpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29u
bmVjdGlvbklkZW50aXRpZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5tbQppbmRleCA2Zjk2YWViOGFlYzZhMGUxNGQ0NjdlNGZjYmJmNjBjYjllMjlj
YWI5Li4yYTcwMWZkNzg4NjRlODhmMGJiMzg4OWUzNDI4YzhmM2U4MjhhZWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBE
YWVtb246OnJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCiAgICAgZnVuY3Rpb24oKTsKIH0KIAotdm9pZCBEYWVtb246OmJyb2FkY2FzdERlYnVn
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIERhZW1vbjo6YnJvYWRjYXN0RGVi
dWdNZXNzYWdlKFN0cmluZ1ZpZXcgbWVzc2FnZSkKIHsKICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9y
IDogbV9jb25uZWN0aW9uTWFwKSB7CiAgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZS0+ZGVidWdN
b2RlSXNFbmFibGVkKCkpCkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBEYWVtb246OmdldE9yaWdp
bnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENsaWVudENvbm5lY3Rpb24qIGNv
bm4KIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENs
aWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQogewog
ICAgIGlmICghY2FuUmVnaXN0ZXJGb3JOb3RpZmljYXRpb25zKCpjb25uZWN0aW9uKSkgewotICAg
ICAgICByZXBseVNlbmRlcigiQ291bGQgbm90IGRlbGV0ZSBwdXNoIGFuZCBub3RpZmljYXRpb24g
cmVnaXN0cmF0aW9ucyBmb3IgY29ubmVjdGlvbjogVW5rbm93biBob3N0IGFwcGxpY2F0aW9uIGNv
ZGUgc2lnbmluZyBpZGVudGlmaWVyIik7CisgICAgICAgIHJlcGx5U2VuZGVyKCJDb3VsZCBub3Qg
ZGVsZXRlIHB1c2ggYW5kIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIGZvciBjb25uZWN0aW9u
OiBVbmtub3duIGhvc3QgYXBwbGljYXRpb24gY29kZSBzaWduaW5nIGlkZW50aWZpZXIiX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uTWFpbi5tbQppbmRleCBkN2E2YjYzZmU0ZGIyZGViNTBhNWU5ZTE3MTc0MWYxMDg1ZGNh
ZWQ3Li5hZmU1MDllMjE1MDMwMzBmMDlhYWJlMzM0ODU1YzdiMDFhMTNkOTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KQEAgLTEyOSw4ICsxMjksOCBA
QCBpbnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAg
ICAgOjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKS5zdGFydE1vY2tQdXNoU2VydmljZSgp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IE5TU2Vh
cmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNVc2Vy
RG9tYWluTWFzaywgWUVTKVswXTsKLSAgICAgICAgICAgIFN0cmluZyBwdXNoRGF0YWJhc2VQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhsaWJyYXJ5UGF0aCwgeyAi
V2ViS2l0IiwgIldlYlB1c2giLCAiUHVzaERhdGFiYXNlLmRiIiB9KTsKLSAgICAgICAgICAgIDo6
V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2VydmljZShpbmNvbWluZ1B1
c2hTZXJ2aWNlTmFtZSwgcHVzaERhdGFiYXNlUGF0aCk7CisgICAgICAgICAgICBTdHJpbmcgcHVz
aERhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobGli
cmFyeVBhdGgsIHsgIldlYktpdCJfcywgIldlYlB1c2giX3MsICJQdXNoRGF0YWJhc2UuZGIiX3Mg
fSk7CisgICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbigpLnN0YXJ0UHVz
aFNlcnZpY2UoU3RyaW5nIHsgaW5jb21pbmdQdXNoU2VydmljZU5hbWUgfSwgcHVzaERhdGFiYXNl
UGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgQ0ZSdW5Mb29wUnVuKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IGY2YTZlOTc1
N2I0YWZjYWI4OTg0YWJhMWY1MjgwYjc5OGI5YWE0NzkuLjllN2I1MzZiYjJhYjViOTRhYTQ0NmU1
Y2ViYmE3ZmFmOTVjMWM1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5
bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUgb3BlbmluZ1N0cmF0ZWd5KQog
CiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKIHsKLSAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkl0ZW1UYWJsZSIpKQorICAgIGlmICghbV9k
YXRhYmFzZS50YWJsZUV4aXN0cygiSXRlbVRhYmxlIl9zKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
aW5kZXggYjIwMmI0NDgwNzhjM2ZlYTViYzk1NTA4MGFhN2VlZGU2ZWNhNzhhOC4uNWQ0ZWVjNWZl
ZDhiMzU0YzBmMWE2NzVkMGNiNGQ0MzI3ZDFkMjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFsaXplKCkKICAgICBzdG9yYWdlVHJhY2tlci0+
aW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKTsKIAogICAgIG1fdGhyZWFkLT5kaXNwYXRjaChbdGhp
c10gewotICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiU3RvcmFnZVRyYWNrZXIu
ZGIiKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9yYWdlVHJhY2tl
ci5kYiJfcykpOwogICAgIH0pOwogfQogCiBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6
OnRyYWNrZXIoKQogewogICAgIGlmICghc3RvcmFnZVRyYWNrZXIpCi0gICAgICAgIHN0b3JhZ2VU
cmFja2VyID0gbmV3IFN0b3JhZ2VUcmFja2VyKCIiKTsKKyAgICAgICAgc3RvcmFnZVRyYWNrZXIg
PSBuZXcgU3RvcmFnZVRyYWNrZXIoZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKHN0b3JhZ2VUcmFj
a2VyLT5tX25lZWRzSW5pdGlhbGl6YXRpb24pCiAgICAgICAgIHN0b3JhZ2VUcmFja2VyLT5pbnRl
cm5hbEluaXRpYWxpemUoKTsKICAgICAKQEAgLTEwNyw3ICsxMDcsNyBAQCBTdG9yYWdlVHJhY2tl
cjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKIFN0cmluZyBTdG9y
YWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFi
YXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJMZWdhY3lTdG9yYWdlVHJhY2tl
ci5kYiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIkxlZ2FjeVN0b3JhZ2VUcmFja2VyLmRiIl9zKTsKIH0K
IAogc3RhdGljIGJvb2wgZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05v
dEV4aXN0KQogICAgIAogICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwog
ICAgIAotICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7CisgICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIl9zKSkgewogICAgICAgICBpZiAo
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4g
VEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcGF0aCBURVhUKTsiX3MpKQogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIE9yaWdpbnMgdGFibGUuIik7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgwZmRj
MzdkZmQ5NGY5NWE3YTlkZDFhLi4wMjZkNDg3MDNlMzRjZDc4ZTZkMDM0YWMwMGU2YjdhOTUyY2Q4
ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTIsOCArNTIsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
IAotc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNl
dHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwotc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNo
RGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
U2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCJfczsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlz
YWJsZWQiX3M7CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZvclBy
ZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
IHsKLSAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nLCBkaXNh
YmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRh
Y2hEaXNhYmxlZFNldHRpbmcsIGRpc2FibGVkID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JT
dGFydHNBdHRhY2hlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JT
dGFydHNBdHRhY2hlZChib29sIGF0dGFjaGVkKQogewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0
b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8gInRydWUiIDogImZhbHNlIik7Cisg
ICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQg
PyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpk
ZWxldGVJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggNDc5MTZlNzgx
YTI0MzA0MWUxZDU4MjQ4YWJmYWVhYWMwYzU3YmI1OS4uNzk5YTdiNTk1MmIyYjg1Y2I3MGEwYjAw
YzU2MmI5MDE3ODZjMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIEhp
c3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6OndyaXRlT2JqZWN0cyhCaW5hcnlQcm9wZXJ0eUxpc3RP
YmplY3RTdHJlYW0mIHN0cgogewogICAgIHNpemVfdCBvdXRlckRpY3Rpb25hcnlTdGFydCA9IHN0
cmVhbS53cml0ZURpY3Rpb25hcnlTdGFydCgpOwogCi0gICAgc3RyZWFtLndyaXRlU3RyaW5nKCJX
ZWJIaXN0b3J5RmlsZVZlcnNpb24iKTsKLSAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3Rv
cnlEYXRlcyIpOworICAgIHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9u
Il9zKTsKKyAgICBzdHJlYW0ud3JpdGVTdHJpbmcoIldlYkhpc3RvcnlEYXRlcyJfcyk7CiAKICAg
ICBzdHJlYW0ud3JpdGVJbnRlZ2VyKGN1cnJlbnRGaWxlVmVyc2lvbik7CiAgICAgc2l6ZV90IG91
dGVyRGF0ZUFycmF5U3RhcnQgPSBzdHJlYW0ud3JpdGVBcnJheVN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0K
aW5kZXggYzg3MzMwN2QwZjJkYmRjNTRjNWY3Y2M3NmMxMTVmNDVjMTU5NGExOC4uN2ExODQ1Nzdk
OGU2OTQ3NzdlNzcyMzRmOWI0MWY1MWExZGY3NTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMzMsOSAr
MzMsOSBAQCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5UGF0aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5
ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIn4vTGlicmFyeS9XZWJL
aXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIsIFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdKSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFz
ZXMvX19fSW5kZXhlZERCIl9zLCBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXSkpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZyhkYXRhYmFzZXNEaXJlY3Rv
cnkpLCAiX19fSW5kZXhlZERCIik7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcoZGF0YWJhc2VzRGlyZWN0b3J5
KSwgIl9fX0luZGV4ZWREQiJfcyk7CiAgICAgCiAgICAgcmV0dXJuIFtkYXRhYmFzZXNEaXJlY3Rv
cnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5t
bQppbmRleCBjYWMwZThiYzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZkMDllMzE2Li42MjkxMTQ2
OWFjZGRhNDE5ODdmNDk1NGM1YTY1ZDYzYzhmYjcyZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBAZW5kCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlJiB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGlj
YXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFr
UmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5k
ZXggYjUyNWJiMGQ4YjQ4NTFjZDFhYTUzMzI3OTc5ZDEwNjRmNmVlZTczOS4uZjhlYzJmYjQwYzNk
OGQ1Y2ViNTQ2ZWQ4N2FiYzk0YjA0NGY2ODkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAg
LTQ0LDcgKzQ0LDcgQEAgKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlm
aWVyOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKIAotICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoU3RyaW5nIHsg
ZGF0YWJhc2VJZGVudGlmaWVyIH0pOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4g
bmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCA4NzdmZjI4N2E3NmMzMTVmMTE5NzM5MWQyNmMwNGMzZWIyNWU2MDVhLi5iZmQ1ZDA5
ZTk4YWRmNzM5YWI4ZjM3N2JjYjdlNGQ1NGUyZTgwNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTI2MDgsMTMgKzI2MDgsMTMgQEAg
c3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0b3JFeGNlcHRpb25NYXAo
KQogewogICAgIFNlbGVjdG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hNYXA8U0VMLCBTdHJpbmc+
OwogCi0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRp
dG9yOiksICJJbnNlcnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKGluc2VydFBh
cmFncmFwaFNlcGFyYXRvcjopLCAiSW5zZXJ0TmV3bGluZSIpOwotICAgIG1hcC0+YWRkKEBzZWxl
Y3RvcihpbnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiKTsKLSAgICBt
YXAtPmFkZChAc2VsZWN0b3IocGFnZURvd246KSwgIk1vdmVQYWdlRG93biIpOwotICAgIG1hcC0+
YWRkKEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjopLCAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAi
TW92ZVBhZ2VVcCIpOwotICAgIG1hcC0+YWRkKEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxl
Y3Rpb246KSwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBtYXAtPmFkZChA
c2VsZWN0b3IoaW5zZXJ0TmV3bGluZUlnbm9yaW5nRmllbGRFZGl0b3I6KSwgIkluc2VydE5ld2xp
bmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6
KSwgIkluc2VydE5ld2xpbmUiX3MpOworICAgIG1hcC0+YWRkKEBzZWxlY3RvcihpbnNlcnRUYWJJ
Z25vcmluZ0ZpZWxkRWRpdG9yOiksICJJbnNlcnRUYWIiX3MpOworICAgIG1hcC0+YWRkKEBzZWxl
Y3RvcihwYWdlRG93bjopLCAiTW92ZVBhZ2VEb3duIl9zKTsKKyAgICBtYXAtPmFkZChAc2VsZWN0
b3IocGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KSwgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNl
bGVjdGlvbiJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcDopLCAiTW92ZVBhZ2VV
cCJfcyk7CisgICAgbWFwLT5hZGQoQHNlbGVjdG9yKHBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbjop
LCAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyk7CiAKICAgICByZXR1cm4gbWFwOwog
fQpAQCAtMjY1MCw3ICsyNjUwLDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kKWNvcmVD
b21tYW5kQnlOYW1lOihjb25zdCBjaGFyKiluYW1lCiAgICAgYXV0byogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQobmFtZSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChT
dHJpbmcgeyBuYW1lIH0pOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0
b3I6KFNFTClzZWxlY3RvcgpAQCAtMjg4OCw3ICsyODg4LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VO
RAogCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwog
ICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkg
ewotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOworICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9u
TGVmdFRvUmlnaHQgPyAibHRyIl9zIDogInJ0bCJfczsKICAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRTdGF0ZTooZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1By
b3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZSldOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CkBAIC0yOTA2LDcgKzI5MDYsNyBA
QCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFz
czpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAgICAgICAgICAgICAvLyBUYWtlIGNvbnRyb2wgb2Yg
dGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nL3VuY2hl
Y2tpbmcgaXQgYmVjYXVzZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3b3VsZCBiZSBhbWJpZ3Vv
dXMuCi0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6KGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCIpICE9IFRy
aVN0YXRlOjpGYWxzZSkKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTooZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9uLCAi
cnRsIl9zKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJTkdf
SU5URVJOQUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRl
bSIpCiAgICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExlZnQi
LCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQpAQCAtNDY4
Myw3ICs0NjgzLDcgQEAgLSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJpbnRpbmcgbWluaW11
bVBhZ2VMb2dpY2FsV2lkdGg6KGZsb2F0KW1pblBhZ2VMb2dpY2EKICAgICBhdXRvKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJhbWUpIHsKICAgICAgICAg
aWYgKGF1dG8qIGNvcmVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjb3Jl
Vmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGluZyA/ICJwcmludCIgOiAic2NyZWVu
Iik7CisgICAgICAgICAgICBjb3JlVmlldy0+c2V0TWVkaWFUeXBlKF9wcml2YXRlLT5wcmludGlu
ZyA/ICJwcmludCJfcyA6ICJzY3JlZW4iX3MpOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBjb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEluIHNldHRpbmcgcHJp
bnRpbmcsIHdlIHNob3VsZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFscmVhZHkgY2FjaGVkIGZv
ciB0aGUgZG9jdW1lbnQuCiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNzA0CkBAIC02NjcyLDcgKzY2NzIsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfSkoKTsKIAogICAgICAgICBpZiAo
IWlzRnVuY3Rpb25LZXlDb21tYW5kV2l0aE1hdGNoaW5nTWVudUl0ZW0pCi0gICAgICAgICAgICBl
dmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQo
Imluc2VydFRleHQ6IiwgdGV4dCkpOworICAgICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29tbWFu
ZHMoKS5hcHBlbmQoV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kKCJpbnNlcnRUZXh0OiJfcywgdGV4
dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOTY4MjI5MjUwYjhjM2IwYzFhY2Y2ZWMxOGVhOTg2MmE2
YmI3ZWJmNS4uYjdhZDBkNjg0NzViYTE3NDRjNDFkOTYyODMwNzE4ZDkxMTkwYTFkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTUzNCw3ICsxNTM0
LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmlu
ZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVP
KQotICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcoTlNUZW1wb3Jh
cnlEaXJlY3RvcnkoKSksICJNZWRpYUNhY2hlLyIpKTsKKyAgICAgICAgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoU3RyaW5nKE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkpLCAiTWVkaWFDYWNo
ZS8iX3MpKTsKICNlbmRpZgogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVl
OwogICAgIH0KQEAgLTMzMDQsNyArMzMwNCw3IEBAICsgKEJPT0wpX2NhbkhhbmRsZVJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICsgKE5TU3RyaW5nICopX2RlY29kZURhdGE6KE5TRGF0
YSAqKWRhdGEKIHsKICAgICBXZWJDb3JlOjpIVE1MTmFtZXM6OmluaXQoKTsgLy8gdGhpcyBtZXRo
b2QgaXMgdXNlZCBmb3IgaW1wb3J0aW5nIGJvb2ttYXJrcyBhdCBzdGFydHVwLCBzbyBIVE1MTmFt
ZXMgYXJlIGxpa2VseSB0byBiZSB1bmluaXRpYWxpemVkIHlldAotICAgIHJldHVybiBXZWJDb3Jl
OjpUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCIpLT5kZWNvZGVBbmRGbHVz
aChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7
IC8vIGJvb2ttYXJrIGZpbGVzIGFyZSBIVE1MCisgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIl9zKS0+ZGVjb2RlQW5kRmx1c2goc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOyAvLyBib29r
bWFyayBmaWxlcyBhcmUgSFRNTAogfQogCiAtICh2b2lkKV9wdXNoUGVyZm9ybWluZ1Byb2dyYW1t
YXRpY0ZvY3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcAppbmRleCA1ODhjZTVkZmZkMjNlMjJlMDBjYWRiYTk1MzdkZTdmZWQ2MzgyZjFjLi42NzY3
NzIwMzE1YzM5MzNjZGMyMmU0MjUyZTNlYTMzOGZmODkyNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCBz
dGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiX3MpOwogfQog
CiB2b2lkIFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMDFlZWY4OGRlZDQyODE4
ZDUxY2YxYWViMWE3ZjQyOGEzZDUxNTZjYi4uOWNmOGNjMDJhMjFjZGRlYmIwZWQ4NDk5ZmZlOTQw
ZjZlNGYxODQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBzdGQ6Om51bWVyaWNfbGltaXRzOwogCiBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBvbGRQcmVmZXJlbmNlc1BhdGgoKQogewotICAgIHN0YXRpYyBTdHJpbmcg
cGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpy
b2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMu
cGxpc3QiKTsKKyAgICBzdGF0aWMgU3RyaW5nIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIldlYktpdFByZWZlcmVuY2VzLnBsaXN0Il9zKTsKICAgICByZXR1cm4gcGF0aDsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDg1NmEwY2Q2NzJlMTkxMjViZWE5OGY3NTQ2NGY0NWM1MzEyMmJjODIuLjg4MDkxNDhmY2IzYjQw
NmVhYzMxMmYzNjQwMDhjM2UwODk2N2RlNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgV2ViS2l0LyAmIFdl
YktpdExlZ2FjeS8gZm9yIG1ha2luZyB0aGUgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAo
LVtCbG9iV2l0aFVTRFpFeHRlbnNpb25Eb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVOYW1l
Lm1tOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChjcmVhdGVEaXJlY3Rvcmllcyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKwogMjAyMi0wMy0zMSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyOTIxODMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAppbmRleCBjODkzYjIzMjYwODNlN2MxMGU1YTg2MWE5ZDgxMzEzYjI4MmNhMGRiLi5jZjdi
Nzg5YjM1ZWExZWY3MmJkNmM4ZTY0ZTM5NjkwOGRjOGMxNzZhIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTk3NSw5ICs5NzUsOSBAQCBzdGF0aWMg
dm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFN0cmlu
ZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKTsKIAogICAgIC8v
IFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQg
dGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwgc2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1
ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsdHNLZXksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0
aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKLSAg
ICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2Nh
bFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQ
cmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIl9zKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFw
cFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIl9zKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZh
bHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSJfcykuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTExMjMsNyArMTEyMyw3IEBA
IHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5nIHBhdGhUb1Rlc3QgPSBw
YXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEp
OwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxheW91
dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAgU3RyaW5nIHBvc3Np
YmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0
aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAx
KSwgInBsYXRmb3JtXFx3aW4iX3MpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRo
czsKICAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwpAQCAtMTEzNiw3ICsx
MTM2LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhP
clVybCkKICAgICB9CiAKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBwb3MgPSBw
b3NzaWJsZVBhdGhzLmJlZ2luKCk7IHBvcyAhPSBwb3NzaWJsZVBhdGhzLmVuZCgpOyArK3Bvcykg
ewotICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7CisgICAgICAgIHBhdGhUb0ZvbnRGYWxs
YmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3Vy
Y2VzXFwiX3MpOwogCiAgICAgICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZh
bGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRo
VG9Gb250RmFsbGJhY2s7CkBAIC0xMTUwLDcgKzExNTAsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250
RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlm
IChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChm
b250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAg
ICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyJf
cyk7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay53aWRlQ2hhcmFj
dGVycygpLmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNjMsNyArMTE2Myw3IEBAIHN0
YXRpYyB2b2lkIHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRG
YWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250
LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxl
LWZvbnQtZmFsbGJhY2suY3NzIl9zKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9u
dEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCBjNDY3NGFm
YTYwODc2MzY3YjNjZjY3NmMyZTU3ZmRkYjMwYjg4NDkxLi5kODJhM2FjNTE3MmRjNTVkMDNiNGY2
ODEzYWNiYTcwZGQ4OGZiZmZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcApAQCAtNTMsMzcgKzUzLDM3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBj
cmVhdGUgdGVtcCBmaWxlLgogICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiX3MsIGhhbmRsZSk7
CiAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3RE
YXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUtc3ltbGluayIsIGhhbmRsZSk7
CisgICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJ0ZW1wVGVzdEZpbGUtc3ltbGluayJfcywgaGFuZGxlKTsKICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9s
aWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwogCiAgICAgICAg
IC8vIENyZWF0ZSB0ZW1wIGRpcmVjdG9yeS4KICAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7Ci0gICAgICAgIG1fdGVtcEVtcHR5Rm9sZGVyUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlGb2xkZXIiLCB0ZW1wb3Jh
cnlGaWxlKTsKKyAgICAgICAgbV90ZW1wRW1wdHlGb2xkZXJQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eUZvbGRlciJfcywgdGVtcG9yYXJ5RmlsZSk7CiAgICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlKTsKICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZvbGRlclBhdGgpOwogICAgICAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV90ZW1wRW1wdHlGb2xkZXJQYXRoKTsKIAotICAgICAg
ICBtX3RlbXBFbXB0eUZvbGRlclN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXBFbXB0eUZvbGRlci1zeW1saW5rIiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgICAg
IG1fdGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcEVtcHR5Rm9sZGVyLXN5bWxpbmsiX3MsIHRlbXBvcmFyeUZpbGUpOwogICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZSk7CiAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCk7CiAgICAgICAgIEZp
bGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBFbXB0eUZvbGRlclBhdGgsIG1fdGVt
cEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgpOwogCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5k
bGUpOworICAgICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIl9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxl
IiwgaGFuZGxlKTsKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSJfcywgaGFuZGxlKTsK
ICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICAgICAgbV9iYW5n
Q29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAh
RW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxl
Il9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAot
ICAgICAgICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIG1fcXVv
dGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cFwiRW1wdHlcIlRlc3RGaWxlIl9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKICAgICB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
ZmlsZVR5cGUpCiB7Ci0gICAgYXV0byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4
aXN0Iik7CisgICAgYXV0byBkb2VzTm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9z
KTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoZG9lc05vdEV4aXN0UGF0
aCkpOwogCiAgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHRlbXBGaWxlUGF0aCgp
KSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwpAQCAtMTYzLDEzICsxNjMsMTMgQEAg
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBmaWxlVHlwZSkKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3Rl
bTo6ZmlsZVR5cGUodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OkRpcmVjdG9yeSk7CiAKICAgICAvLyBTeW1saW5rIHRvIGZpbGUgc3ltbGluayBjYXNlLgotICAg
IGF1dG8gc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInN5bWxpbmtUb1N5bWxpbmsiKTsK
KyAgICBhdXRvIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5rVG9TeW1saW5r
Il9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVt
cEZpbGVTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9GaWxlU3ltbGlua1BhdGgpKTsKICAgICBFWFBF
Q1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoKSwgRmls
ZVN5c3RlbTo6RmlsZVR5cGU6OlN5bWJvbGljTGluayk7CiAKICAgICAvLyBTeW1saW5rIHRvIGRp
cmVjdG9yeSBzeW1saW5rIGNhc2UuCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZTsKLSAgICBhdXRvIHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIiwgaGFuZGxlKTsK
KyAgICBhdXRvIHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZS1zeW1saW5rIl9zLCBoYW5kbGUpOwogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
c3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1BhdGgpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmNyZWF0ZVN5bWJvbGljTGluayh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpLCBzeW1s
aW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIFRFU1RfRihG
aWxlU3lzdGVtVGVzdCwgZmlsZVR5cGUpCiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcykKIHsKLSAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAi
ZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1u
b3QtZXhpc3QiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxv
d2luZ1N5bWxpbmtzKGRvZXNOb3RFeGlzdFBhdGgpKTsKIAogICAgIEVYUEVDVF9FUShGaWxlU3lz
dGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlUGF0aCgpKSwgRmlsZVN5c3Rl
bTo6RmlsZVR5cGU6OlJlZ3VsYXIpOwpAQCAtMTk1LDEzICsxOTUsMTMgQEAgVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKQogICAgIEVYUEVDVF9FUShGaWxl
U3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSks
IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwogCiAgICAgLy8gU3ltbGluayB0byBm
aWxlIHN5bWxpbmsgY2FzZS4KLSAgICBhdXRvIHN5bWxpbmtUb0ZpbGVTeW1saW5rUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJzeW1saW5rVG9TeW1saW5rIik7CisgICAgYXV0byBzeW1saW5rVG9GaWxlU3ltbGlua1BhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0
aCgpLCAic3ltbGlua1RvU3ltbGluayJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
Y3JlYXRlU3ltYm9saWNMaW5rKHRlbXBGaWxlU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRmlsZVN5
bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5n
U3ltbGlua3Moc3ltbGlua1RvRmlsZVN5bWxpbmtQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6
OlJlZ3VsYXIpOwogCiAgICAgLy8gU3ltbGluayB0byBkaXJlY3Rvcnkgc3ltbGluayBjYXNlLgog
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgYXV0byBzeW1s
aW5rVG9EaXJlY3RvcnlTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wVGVzdEZpbGUtc3ltbGluayIsIGhhbmRsZSk7CisgICAgYXV0byBzeW1saW5rVG9EaXJl
Y3RvcnlTeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVz
dEZpbGUtc3ltbGluayJfcywgaGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN5bWxpbmtUb0RpcmVjdG9yeVN5bWxp
bmtQYXRoKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmso
dGVtcEVtcHR5Rm9sZGVyU3ltbGlua1BhdGgoKSwgc3ltbGlua1RvRGlyZWN0b3J5U3ltbGlua1Bh
dGgpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MpCiAjaWYgT1MoVU5JWCkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
aXNIaWRkZW5GaWxlKQogewotICAgIGF1dG8gaGlkZGVuRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLmhpZGRlbkZp
bGUiKTsKKyAgICBhdXRvIGhpZGRlbkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgIi5oaWRkZW5GaWxlIl9zKTsKICAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUoaGlkZGVuRmlsZVBhdGgpKTsK
IAogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hpZGRlbkZpbGUodGVtcEZpbGVQYXRo
KCkpKTsKQEAgLTI0MywxNSArMjQzLDE1IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgb3BlbkV4
aXN0aW5nRmlsZUFuZEZhaWxJZkZpbGVFeGlzdHMpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQogewogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSB0ZW1wb3JhcnlGaWxlOwotICAgIGF1dG8gdGVtcG9yYXJ5VGVzdEZvbGRlciA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJkZWxldGVOb25FbXB0eURpcmVjdG9yeVRlc3QiLCB0
ZW1wb3JhcnlGaWxlKTsKKyAgICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0Il9zLCB0ZW1w
b3JhcnlGaWxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZSk7CiAK
ICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRlbXBvcmFyeVRlc3RGb2xk
ZXIpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7
ICJzdWJmb2xkZXIiIH0pKSk7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RGb2xkZXIsICJmaWxlMS50eHQiKSk7Ci0g
ICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRl
bXBvcmFyeVRlc3RGb2xkZXIsICJmaWxlMi50eHQiKSk7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7
ICJzdWJmb2xkZXIiLCAiZmlsZTMudHh0IiB9KSk7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJz
dWJmb2xkZXIiLCAiZmlsZTQudHh0IiB9KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMo
dGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIl9zIH0pKSk7CisgICAgY3JlYXRlVGVz
dEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RG
b2xkZXIsICJmaWxlMS50eHQiX3MpKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCJf
cykpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIl9zLCAiZmlsZTMudHh0Il9z
IH0pKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKHRlbXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciJfcywgImZpbGU0LnR4dCJf
cyB9KSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CkBAIC0yNjQs
MTMgKzI2NCwxMyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGZpbGVFeGlzdHMpCiAgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBFbXB0eUZpbGVQYXRo
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBFbXB0eUZv
bGRlclBhdGgoKSkpOwotICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
ICJkb2VzLW5vdC1leGlzdCIpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRl
clBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKSkpOwogfQogCiBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIGZpbGVFeGlzdHNCcm9rZW5TeW1saW5rKQogewotICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICJkb2VzLW5vdC1leGlzdCIpOwotICAgIGF1dG8gc3ltbGlua1BhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9l
cy1ub3QtZXhpc3Qtc3ltbGluayIpOworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJk
b2VzLW5vdC1leGlzdCJfcyk7CisgICAgYXV0byBzeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1l
eGlzdC1zeW1saW5rIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1i
b2xpY0xpbmsoZG9lc05vdEV4aXN0UGF0aCwgc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRkFM
U0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkb2VzTm90RXhpc3RQYXRoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsgLy8gZmlsZUV4aXN0
cygpIGZvbGxvd3Mgc3ltbGlua3MuCkBAIC0yODEsNyArMjgxLDcgQEAgVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBmaWxlRXhpc3RzQnJva2VuU3ltbGluaykKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
ZmlsZUV4aXN0c1N5bWxpbmtUb1N5bWxpbmspCiB7CiAgICAgLy8gQ3JlYXRlIGEgdmFsaWQgc3lt
bGluayB0byBhIHN5bWxpbmsgdG8gYSByZWd1bGFyIGZpbGUuCi0gICAgYXV0byBzeW1saW5rUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksICJzeW1saW5rIik7CisgICAgYXV0byBzeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5rIl9z
KTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsodGVtcEZp
bGVTeW1saW5rUGF0aCgpLCBzeW1saW5rUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6
ZmlsZVR5cGUoc3ltbGlua1BhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6U3ltYm9saWNMaW5r
KTsKQEAgLTM0NCw3ICszNDQsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5Q29udGFpbmluZ0RTU3RvcmVGaWxlKQogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CiAKICAgICAvLyBDcmVhdGUg
LkRTU3RvcmUgZmlsZS4KLSAgICBhdXRvIGRzU3RvcmVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgIi5EU19TdG9yZSIpOwor
ICAgIGF1dG8gZHNTdG9yZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLkRTX1N0b3JlIl9zKTsKICAgICBhdXRvIGRzU3Rv
cmVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShkc1N0b3JlUGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZHNTdG9y
ZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7
CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGRzU3RvcmVIYW5kbGUpOwpAQCAtMzYwLDE0ICsz
NjAsMTQgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBkZWxldGVFbXB0eURpcmVjdG9yeU9uTm9u
RW1wdHlEaXJlY3RvcnkpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKIAogICAgIC8vIENyZWF0ZSAuRFNTdG9yZSBmaWxlLgot
ICAgIGF1dG8gZHNTdG9yZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLkRTX1N0b3JlIik7CisgICAgYXV0byBkc1N0b3Jl
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICIuRFNfU3RvcmUiX3MpOwogICAgIGF1dG8gZHNTdG9yZUhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKGRzU3RvcmVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlKTsKICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShkc1N0b3JlSGFuZGxlLCBGaWxlU3lz
dGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZHNTdG9yZUhhbmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhkc1N0b3JlUGF0aCkpOwogCiAgICAgLy8gQ3JlYXRlIGEgZHVtbXkgZmlsZS4K
LSAgICBhdXRvIGR1bW15RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZHVtbXlGaWxlIik7CisgICAgYXV0byBkdW1t
eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgImR1bW15RmlsZSJfcyk7CiAgICAgYXV0byBkdW1teUZpbGVIYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShkdW1teUZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlKTsKICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShkdW1teUZpbGVIYW5k
bGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShkdW1teUZpbGVIYW5kbGUpOwpAQCAtMzkxLDE0ICszOTEs
MTQgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBkZWxldGVFbXB0eURpcmVjdG9yeU9uQVJlZ3Vs
YXJGaWxlKQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZUVtcHR5RGlyZWN0b3J5RG9l
c05vdEV4aXN0KQogewotICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1l
eGlzdCIpOworICAgIGF1dG8gZG9lc05vdEV4aXN0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJf
cyk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZG9lc05vdEV4aXN0
UGF0aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShkb2VzTm90RXhpc3RQYXRoKSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgbW92ZUZp
bGUpCiB7Ci0gICAgYXV0byBkZXN0aW5hdGlvbiA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJ0ZW1wRmlsZS1tb3ZlZCIpOworICAg
IGF1dG8gZGVzdGluYXRpb24gPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZpbGUtbW92ZWQiX3MpOwogICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKICAgICBFWFBFQ1Rf
RkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkZXN0aW5hdGlvbikpOwogICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06Om1vdmVGaWxlKHRlbXBGaWxlUGF0aCgpLCBkZXN0aW5hdGlvbikpOwpA
QCAtNDMyLDI0ICs0MzIsMjQgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtb3ZlRmlsZU92ZXJ3
cml0ZXNEZXN0aW5hdGlvbikKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgbW92ZURpcmVjdG9yeSkK
IHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKLSAg
ICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgibW92ZURpcmVjdG9yeVRlc3QiLCB0ZW1wb3JhcnlGaWxlKTsKKyAgICBhdXRvIHRlbXBvcmFy
eVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgibW92ZURpcmVjdG9y
eVRlc3QiX3MsIHRlbXBvcmFyeUZpbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1w
b3JhcnlGaWxlKTsKIAogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVt
cG9yYXJ5VGVzdEZvbGRlcikpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3Rvcmllcyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Ci0gICAgYXV0byB0ZXN0RmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRl
ciwgInRlc3RGaWxlIik7CisgICAgYXV0byB0ZXN0RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgInRlc3RGaWxlIl9zKTsK
ICAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZXN0RmlsZVBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGVIYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVzdEZpbGVQYXRoKSk7CiAKLSAg
ICBhdXRvIGRlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJtb3ZlRGlyZWN0b3J5VGVzdCIpOworICAgIGF1
dG8gZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgIm1vdmVEaXJlY3RvcnlUZXN0Il9zKTsKICAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjptb3ZlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCBkZXN0aW5h
dGlvblBhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1w
b3JhcnlUZXN0Rm9sZGVyKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHModGVzdEZpbGVQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhkZXN0aW5hdGlvblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkZXN0aW5hdGlvblBhdGgs
ICJ0ZXN0RmlsZSIpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGVzdGluYXRpb25QYXRoLCAidGVz
dEZpbGUiX3MpKSk7CiAKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkoZGVzdGluYXRpb25QYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhkZXN0aW5hdGlvblBhdGgpKTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIGZpbGVTaXplKQogICAgIEFTU0VSVF9UUlVFKGZpbGVTaXplKTsKICAg
ICBFWFBFQ1RfRVEoKmZpbGVTaXplLCAwVSk7CiAKLSAgICBTdHJpbmcgZmlsZVRoYXREb2VzTm90
RXhpc3QgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBTdHJpbmcgZmlsZVRoYXREb2VzTm90
RXhpc3QgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3QiX3MpOwogICAgIGZpbGVTaXplID0gRmlsZVN5c3Rl
bTo6ZmlsZVNpemUoZmlsZVRoYXREb2VzTm90RXhpc3QpOwogICAgIEVYUEVDVF9UUlVFKCFmaWxl
U2l6ZSk7CiB9CkBAIC00NzgsNyArNDc4LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtYWtl
QWxsRGlyZWN0b3JpZXMpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCkpKTsKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5
cGUodGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9y
eSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHRlbXBF
bXB0eUZvbGRlclBhdGgoKSkpOwotICAgIFN0cmluZyBzdWJGb2xkZXJQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgInN1
YkZvbGRlcjEiLCAic3ViRm9sZGVyMiIsICJzdWJGb2xkZXIzIiB9KTsKKyAgICBTdHJpbmcgc3Vi
Rm9sZGVyUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJGb2xkZXIxIl9zLCAic3ViRm9sZGVyMiJfcywgInN1YkZv
bGRlcjMiX3MgfSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3Vi
Rm9sZGVyUGF0aCkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhzdWJGb2xkZXJQYXRoKSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhzdWJGb2xkZXJQYXRoKSk7CkBAIC01MzMsMTAgKzUzMywxMCBAQCBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIGNyZWF0ZVN5bWJvbGljTGlua0ZvbGRlcikKIAogVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBjcmVhdGVTeW1ib2xpY0xpbmtGaWxlRG9lc05vdEV4aXN0KQogewotICAgIFN0cmluZyBm
aWxlVGhhdERvZXNOb3RFeGlzdCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpOworICAgIFN0cmluZyBm
aWxlVGhhdERvZXNOb3RFeGlzdCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcyk7CiAgICAgRVhQRUNU
X0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZVRoYXREb2VzTm90RXhpc3QpKTsKIAot
ICAgIGF1dG8gc3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3Qtc3ltbGluayIpOworICAg
IGF1dG8gc3ltbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1ub3QtZXhpc3Qtc3ltbGluayJfcyk7CiAgICAg
RVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKTsKICAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsoZmlsZVRoYXREb2VzTm90
RXhpc3QsIHN5bWxpbmtQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoc3ltbGlua1BhdGgpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIGNyZWF0ZVN5bWJvbGljTGlua0ZpbGVEb2VzTm90RXhpc3QpCiAKIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgY3JlYXRlSGFyZExpbmspCiB7Ci0gICAgYXV0byBoYXJkbGlua1BhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCAidGVtcEZpbGUtaGFyZGxpbmsiKTsKKyAgICBhdXRvIGhhcmRsaW5rUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJ0ZW1w
RmlsZS1oYXJkbGluayJfcyk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoaGFyZGxpbmtQYXRoKSk7CiAKICAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6Zmls
ZVNpemUodGVtcEZpbGVQYXRoKCkpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgY3JlYXRlSGFyZExpbmspCiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgY3JlYXRl
SGFyZExpbmtPckNvcHlGaWxlKQogewotICAgIGF1dG8gaGFyZGxpbmtQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgInRlbXBG
aWxlLWhhcmRsaW5rIik7CisgICAgYXV0byBoYXJkbGlua1BhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZpbGUtaGFy
ZGxpbmsiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGhhcmRs
aW5rUGF0aCkpOwogCiAgICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHRl
bXBGaWxlUGF0aCgpKTsKQEAgLTYwNCwxMyArNjA0LDEzIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgaGFyZExpbmtDb3VudCkKICAgICBBU1NFUlRfVFJVRSghIWxpbmtDb3VudCk7CiAgICAgRVhQ
RUNUX0VRKCpsaW5rQ291bnQsIDFVKTsKIAotICAgIGF1dG8gaGFyZGxpbmsxUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJ0
ZW1wRmlsZS1oYXJkbGluazEiKTsKKyAgICBhdXRvIGhhcmRsaW5rMVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAidGVtcEZp
bGUtaGFyZGxpbmsxIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpoYXJkTGluayh0
ZW1wRmlsZVBhdGgoKSwgaGFyZGxpbmsxUGF0aCkpOwogICAgIGxpbmtDb3VudCA9IEZpbGVTeXN0
ZW06OmhhcmRMaW5rQ291bnQodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKCEhbGlu
a0NvdW50KTsKICAgICBFWFBFQ1RfRVEoKmxpbmtDb3VudCwgMlUpOwogCi0gICAgYXV0byBoYXJk
bGluazJQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0
eUZvbGRlclBhdGgoKSwgInRlbXBGaWxlLWhhcmRsaW5rMiIpOworICAgIGF1dG8gaGFyZGxpbmsy
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJ0ZW1wRmlsZS1oYXJkbGluazIiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmhhcmRMaW5rKHRlbXBGaWxlUGF0aCgpLCBoYXJkbGluazJQYXRoKSk7CiAgICAgbGlu
a0NvdW50ID0gRmlsZVN5c3RlbTo6aGFyZExpbmtDb3VudCh0ZW1wRmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX1RSVUUoISFsaW5rQ291bnQpOwpAQCAtNjg2LDEzICs2ODYsMTMgQEAgVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZSkKICAgICBBU1NFUlRfVFJV
RSghIW5ld01vZGlmaWNhdGlvblRpbWUpOwogICAgIEVYUEVDVF9HVChuZXdNb2RpZmljYXRpb25U
aW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIG1vZGlmaWNhdGlvblRpbWUtPnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CiAKLSAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCAiZG9lcy1ub3QtZXhpc3QiKTsKKyAgICBhdXRvIGRvZXNOb3RFeGlzdFBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9l
cy1ub3QtZXhpc3QiX3MpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjp1cGRhdGVGaWxl
TW9kaWZpY2F0aW9uVGltZShkb2VzTm90RXhpc3RQYXRoKSk7CiB9CiAKIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgcGF0aEZpbGVOYW1lKQogewotICAgIGF1dG8gdGVzdFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3Vi
Zm9sZGVyIiwgImZpbGVuYW1lLnR4dCIgfSk7CisgICAgYXV0byB0ZXN0UGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJz
dWJmb2xkZXIiX3MsICJmaWxlbmFtZS50eHQiX3MgfSk7CiAgICAgRVhQRUNUX1NUUkVRKCJmaWxl
bmFtZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoRmlsZU5hbWUodGVzdFBhdGgpLnV0ZjgoKS5kYXRh
KCkpOwogCiAjaWYgT1MoVU5JWCkKQEAgLTcxNCw4ICs3MTQsOCBAQCBURVNUX0YoRmlsZVN5c3Rl
bVRlc3QsIHBhdGhGaWxlTmFtZSkKIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBwYXJlbnRQYXRo
KQogewotICAgIGF1dG8gdGVzdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3ViZm9sZGVyIiwgImZpbGVuYW1lLnR4
dCIgfSk7Ci0gICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzdWJmb2xkZXIiKS51dGY4KCkuZGF0YSgpLCBG
aWxlU3lzdGVtOjpwYXJlbnRQYXRoKHRlc3RQYXRoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRv
IHRlc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1w
dHlGb2xkZXJQYXRoKCksIHsgInN1YmZvbGRlciJfcywgImZpbGVuYW1lLnR4dCJfcyB9KTsKKyAg
ICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgInN1YmZvbGRlciJfcykudXRmOCgpLmRhdGEoKSwgRmlsZVN5c3Rl
bTo6cGFyZW50UGF0aCh0ZXN0UGF0aCkudXRmOCgpLmRhdGEoKSk7CiAjaWYgT1MoVU5JWCkKICAg
ICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGFyZW50UGF0aCgiL3Zhci90
bXAvZXhhbXBsZS50eHQiKS51dGY4KCkuZGF0YSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoIi92YXIv
dG1wIiwgRmlsZVN5c3RlbTo6cGFyZW50UGF0aCgiL3Zhci90bXAvIikudXRmOCgpLmRhdGEoKSk7
CkBAIC03MzEsNDggKzczMSw0OCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhcmVudFBhdGgp
CiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCkKIHsKICNp
ZiBPUyhVTklYKQotICAgIEVYUEVDVF9TVFJFUSgiL3ZhciIsIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCgiLyIsICJ2YXIiKS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIi92YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIv
dmFyLyIsICJ0bXAiKS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1w
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyIiwgInRtcCIpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIvdG1wIiwgImZpbGUudHh0Iiku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3ZhciIsICIiKS51dGY4KCkuZGF0YSgpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoIi92YXIvIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCIvdmFyLyIsICIiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIiLCBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi8iX3MsICJ2YXIiX3MpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAiLCBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIvIl9zLCAidG1wIl9zKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KCIvdmFyIl9zLCAidG1wIl9zKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KCIvdmFyL3RtcCJfcywgImZpbGUudHh0Il9zKS51dGY4KCkuZGF0YSgpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIi92YXIvIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCIvdmFyIl9zLCAiIl9zKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIv
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyLyJfcywgIiJfcyku
dXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICNpZiBPUyhXSU5ET1dTKQotICAgIEVYUEVDVF9TVFJF
USgiQzpcXEZvbyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXCIs
ICJGb28iKS51dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhciIs
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXEZvbyIsICJCYXIiKS51
dGY4KCkuZGF0YSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIkM6XFxGb29cXEJhciIsICJG
aWxlLnR4dCIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvbyIsIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXCJfcywgIkZvbyJfcykudXRm
OCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXIiLCBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIkM6XFxGb28iX3MsICJCYXIiX3MpLnV0ZjgoKS5k
YXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXEZvb1xcQmFyIl9zLCAiRmlsZS50
eHQiX3MpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cykKIHsKICAgICBFWFBFQ1RfU1RSRVEodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLnV0ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7IH0pLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVt
cEVtcHR5Rm9sZGVyUGF0aCgpLCAiZmlsZS50eHQiKS51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAiZmls
ZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZmlsZS50eHQi
X3MpLnV0ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJmaWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0YSgpKTsK
ICNpZiBPUyhVTklYKQotICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvIiwgeyAidmFyIiwgInRtcCIsICJm
aWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9m
aWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIi92YXIiLCB7
ICJ0bXAiLCAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgi
L3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KCIvdmFyLyIsIHsgInRtcCIsICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHMoIi92YXIvdG1wIiwgeyAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnRzKCIvIl9zLCB7ICJ2YXIiX3MsICJ0bXAiX3MsICJmaWxlLnR4dCJf
cyB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3ZhciJfcywgeyAidG1w
Il9zLCAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zh
ci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIv
dmFyLyJfcywgeyAidG1wIl9zLCAiZmlsZS50eHQiX3MgfSkudXRmOCgpLmRhdGEoKSk7CisgICAg
RVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMoIi92YXIvdG1wIl9zLCB7ICJmaWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0
YSgpKTsKICNlbmRpZgogI2lmIE9TKFdJTkRPV1MpCi0gICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9v
XFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygi
QzpcXCIsIHsgIkZvbyIsICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwotICAg
IEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb28iLCB7ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0
ZjgoKS5kYXRhKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIs
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXCIsIHsgIkJh
ciIsICJGaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJDOlxc
Rm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cygiQzpcXEZvb1xcQmFyIiwgeyAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwotICAgIEVY
UEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXEJhclxcIiwgeyAiRmlsZS50eHQiIH0pLnV0Zjgo
KS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFwiX3MsIHsgIkZvbyJfcywg
IkJhciJfcywgIkZpbGUudHh0Il9zIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJF
USgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoIkM6XFxGb28iX3MsIHsgIkJhciJfcywgIkZpbGUudHh0Il9zIH0pLnV0ZjgoKS5k
YXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXCJfcywgeyAiQmFyIl9z
LCAiRmlsZS50eHQiX3MgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxc
Rm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cygiQzpcXEZvb1xcQmFyIl9zLCB7ICJGaWxlLnR4dCJfcyB9KS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKCJDOlxcRm9vXFxCYXJcXCJfcywgeyAiRmlsZS50eHQiX3Mg
fSkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIH0KIAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBs
aXN0RGlyZWN0b3J5KQogewotICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJhLnR4dCIpKTsKLSAgICBj
cmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCAiYi50eHQiKSk7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImJhci5w
bmciKSk7Ci0gICAgY3JlYXRlVGVzdEZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImZvby5wbmciKSk7Ci0gICAgRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzdWJmb2xkZXIiKSk7Ci0gICAgY3JlYXRlVGVzdEZp
bGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQ
YXRoKCksIHsgInN1YmZvbGRlciIsICJjLnR4dCIgfSkpOwotICAgIGNyZWF0ZVRlc3RGaWxlKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgp
LCB7ICJzdWJmb2xkZXIiLCAiZC50eHQiIH0pKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiYS50
eHQiX3MpKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiYi50eHQiX3MpKTsKKyAgICBjcmVhdGVU
ZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCAiYmFyLnBuZyJfcykpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJmb28ucG5n
Il9zKSk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzdWJmb2xkZXIi
X3MpKTsKKyAgICBjcmVhdGVUZXN0RmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAic3ViZm9sZGVyIl9zLCAiYy50eHQiX3Mg
fSkpOworICAgIGNyZWF0ZVRlc3RGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHModGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCB7ICJzdWJmb2xkZXIiX3MsICJkLnR4dCJfcyB9
KSk7CiAKICAgICBhdXRvIG1hdGNoZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSk7CiAgICAgQVNTRVJUX0VRKG1hdGNoZXMuc2l6ZSgpLCA1VSk7CkBA
IC03ODMsMTYgKzc4MywxNiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGxpc3REaXJlY3Rvcnkp
CiAgICAgRVhQRUNUX1NUUkVRKG1hdGNoZXNbM10udXRmOCgpLmRhdGEoKSwgImZvby5wbmciKTsK
ICAgICBFWFBFQ1RfU1RSRVEobWF0Y2hlc1s0XS51dGY4KCkuZGF0YSgpLCAic3ViZm9sZGVyIik7
CiAKLSAgICBtYXRjaGVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ViZm9sZGVy
IikpOworICAgIG1hdGNoZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzdWJmb2xk
ZXIiX3MpKTsKICAgICBBU1NFUlRfRVEobWF0Y2hlcy5zaXplKCksIDJVKTsKICAgICBzdGQ6OnNv
cnQobWF0Y2hlcy5iZWdpbigpLCBtYXRjaGVzLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVM
ZXNzVGhhbik7CiAgICAgRVhQRUNUX1NUUkVRKG1hdGNoZXNbMF0udXRmOCgpLmRhdGEoKSwgImMu
dHh0Iik7CiAgICAgRVhQRUNUX1NUUkVRKG1hdGNoZXNbMV0udXRmOCgpLmRhdGEoKSwgImQudHh0
Iik7CiAKLSAgICBtYXRjaGVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZG9lcy1u
b3QtZXhpc3QiKSk7CisgICAgbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwg
ImRvZXMtbm90LWV4aXN0Il9zKSk7CiAgICAgQVNTRVJUX0VRKG1hdGNoZXMuc2l6ZSgpLCAwVSk7
CiAKLSAgICBtYXRjaGVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiYS50eHQiKSk7
CisgICAgbWF0Y2hlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgImEudHh0Il9zKSk7
CiAgICAgQVNTRVJUX0VRKG1hdGNoZXMuc2l6ZSgpLCAwVSk7CiAKICAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkp
KTsKQEAgLTgwMCw3ICs4MDAsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGxpc3REaXJlY3Rv
cnkpCiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcmVhbFBhdGgpCiB7Ci0gICAgYXV0byBkb2Vz
Tm90RXhpc3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBF
bXB0eUZvbGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Iik7CisgICAgYXV0byBkb2VzTm90RXhp
c3RQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBFbXB0eUZv
bGRlclBhdGgoKSwgImRvZXMtbm90LWV4aXN0Il9zKTsKICAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5
c3RlbTo6cmVhbFBhdGgoZG9lc05vdEV4aXN0UGF0aCkudXRmOCgpLmRhdGEoKSwgZG9lc05vdEV4
aXN0UGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgIGF1dG8gcmVzb2x2ZWRUZW1wRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpyZWFsUGF0aCh0ZW1wRmlsZVBhdGgoKSk7CkBAIC04MTIsMjMgKzgxMiwy
MyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJlYWxQYXRoKQogICAgIEVYUEVDVF9TVFJFUShG
aWxlU3lzdGVtOjpyZWFsUGF0aCh0ZW1wRW1wdHlGb2xkZXJTeW1saW5rUGF0aCgpKS51dGY4KCku
ZGF0YSgpLCByZXNvbHZlZFRlbXBFbXB0eUZvbGRlclBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNo
b3VsZCByZXNvbHZlIGRpcmVjdG9yeSBzeW1saW5rLgogCiAgICAgLy8gU3ltbGluayB0byBzeW1s
aW5rIGNhc2UuCi0gICAgYXV0byBzeW1saW5rVG9TeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5rVG9T
eW1saW5rIik7CisgICAgYXV0byBzeW1saW5rVG9TeW1saW5rUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJzeW1saW5rVG9T
eW1saW5rIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xp
bmsodGVtcEZpbGVTeW1saW5rUGF0aCgpLCBzeW1saW5rVG9TeW1saW5rUGF0aCkpOwogICAgIEVY
UEVDVF9TVFJFUShGaWxlU3lzdGVtOjpyZWFsUGF0aChzeW1saW5rVG9TeW1saW5rUGF0aCkudXRm
OCgpLmRhdGEoKSwgcmVzb2x2ZWRUZW1wRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3Vs
ZCByZXNvbHZlIGFsbCBzeW1saW5rcy4KIAotICAgIGF1dG8gc3ViRm9sZGVyUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJz
dWJmb2xkZXIiKTsKKyAgICBhdXRvIHN1YkZvbGRlclBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAic3ViZm9sZGVyIl9zKTsK
ICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3ViRm9sZGVyUGF0aCk7CiAgICAg
YXV0byByZXNvbHZlZFN1YkZvbGRlclBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChzdWJGb2xk
ZXJQYXRoKTsKLSAgICBFWFBFQ1RfU1RSRVEoRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN1YkZvbGRlclBhdGgsICIuLiIpKS51dGY4KCku
ZGF0YSgpLCByZXNvbHZlZFRlbXBFbXB0eUZvbGRlclBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNo
b3VsZCByZXNvbHZlICIuLiIuCi0gICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRo
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoc3ViRm9sZGVyUGF0aCwgeyAi
Li4iLCAic3ViZm9sZGVyIiB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJGb2xkZXJQYXRo
LnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iLgotICAgIEVYUEVDVF9TVFJF
UShGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHN1YkZvbGRlclBhdGgsIHsgIi4uIiwgIi4iLCAiLiIsICJzdWJmb2xkZXIiIH0pKS51dGY4
KCkuZGF0YSgpLCByZXNvbHZlZFN1YkZvbGRlclBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3Vs
ZCByZXNvbHZlICIuLiIgYW5kICIuIgorICAgIEVYUEVDVF9TVFJFUShGaWxlU3lzdGVtOjpyZWFs
UGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3ViRm9sZGVyUGF0aCwg
Ii4uIl9zKSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRUZW1wRW1wdHlGb2xkZXJQYXRoLnV0Zjgo
KS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iLgorICAgIEVYUEVDVF9TVFJFUShGaWxl
U3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHN1
YkZvbGRlclBhdGgsIHsgIi4uIl9zLCAic3ViZm9sZGVyIl9zIH0pKS51dGY4KCkuZGF0YSgpLCBy
ZXNvbHZlZFN1YkZvbGRlclBhdGgudXRmOCgpLmRhdGEoKSk7IC8vIFNob3VsZCByZXNvbHZlICIu
LiIuCisgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoc3ViRm9sZGVyUGF0aCwgeyAiLi4iX3MsICIuIl9zLCAi
LiJfcywgInN1YmZvbGRlciJfcyB9KSkudXRmOCgpLmRhdGEoKSwgcmVzb2x2ZWRTdWJGb2xkZXJQ
YXRoLnV0ZjgoKS5kYXRhKCkpOyAvLyBTaG91bGQgcmVzb2x2ZSAiLi4iIGFuZCAiLiIKIH0KIAog
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCByZWFkRW50aXJlRmlsZSkKIHsKICAgICBFWFBFQ1RfRkFM
U0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmls
ZShlbXB0eVN0cmluZygpKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OnJlYWRFbnRp
cmVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xk
ZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCIpKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0
ZW06OnJlYWRFbnRpcmVGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJkb2VzLW5vdC1leGlzdCJfcykpKTsKICAgICBFWFBFQ1Rf
RkFMU0UoRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSkpOwog
CiAgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmls
ZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25p
dG9yLmNwcAppbmRleCAyM2Y2NjFjZjE2YWMwYzNkN2ZmZTlhMWMwZWViZmVjYzc5MTkwYzY5Li45
ZTIwYTM0MWQ1YjFjOGVkNDdlYTRiYzZlMmY0MjI4NTI3ZWExODA3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQogICAg
ICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3Rl
bXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUi
LCBoYW5kbGUpOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAgIEFTU0VSVF9ORSho
YW5kbGUsIEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgICAgICAK
ICAgICAgICAgaW50IHJjID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9u
aXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3RoKCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRh
YmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNl
LmNwcAppbmRleCBlZjE2MDE5NjRiZmNmODVjZjMwOTRkOWQ1ZjBmZTVmNWI2NGY5ZmU5Li43MzI4
YzNmMTVhY2E0NmEwMzliMTVmMmUxMTU4NmZmOTNjODBmNGEzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBzdGF0aWMgU3RyaW5nIG1ha2VUZW1wb3Jh
cnlEYXRhYmFzZVBhdGgoKQogewogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGU7Ci0gICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlB1
c2hEYXRhYmFzZSIsIGhhbmRsZSwgIi5kYiIpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiX3MsIGhhbmRsZSwgIi5kYiJfcyk7CiAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmln
aW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCA0YzFkZGEzN2NhNmU3MzQ2NWI4N2I2ZTNiNWI3MjU5MWVkYWNkZjg2Li4xODAy
ODI4MzAwNzI2OTA1OGZmNGQ4NzE5NmE3ZWI1ZTQwNDI4OWNlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQyLDE2
ICs0MiwxNiBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQogICAgICAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBG
aWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBo
YW5kbGUpOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJ0ZW1wVGVzdEZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmls
ZSIsIGhhbmRsZSk7CisgICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiX3MsIGhhbmRsZSk7
CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAg
ICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgbV9iYW5nQ29udGFp
bmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkh
VGVzdCFGaWxlIl9zLCBoYW5kbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiX3MsIGhhbmRsZSk7CiAgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4
IGQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYuLjJlMTFlZjM3YmM4NTQ0
NGU0M2U4YjMxNzgyYmQ4NjNkMGQyZmFlZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTM3LDExICszNywx
MSBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAKICAgICAvLyBj
cmVhdGUgdGVtcCBmaWxlCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZTsKLSAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSJfcywgaGFuZGxlKTsKICAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHRlc3REYXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7
CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICBtX3RlbXBFbXB0eUZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxl
IiwgaGFuZGxlKTsKKyAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIl9zLCBoYW5kbGUpOwogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCmlu
ZGV4IDA5MDVjN2UwMDE4ZWQ0OGJlNzA0OGU0MTIwMTBlNjQ3MDkyZWNkOTIuLjRlZDZkY2RlODlm
ZGZhZjlmYTIzMDc0YWIwZDA5MmI0ZWJjMDhkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0
Lm1tCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoRGF0
YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQogewogICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJhc2UiLCBo
YW5kbGUpOworICAgIFN0cmluZyBkYXRhYmFzZUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoInRlbXBFbXB0eURhdGFiYXNlIl9zLCBoYW5kbGUpOwogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06
OmZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgpLnZhbHVlX29yKDApOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW4pCiAgICAgZGF0YWJhc2VUcmFj
a2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQp
MSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRh
YmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBh
dGgsICJEYXRhYmFzZXMuZGIiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRh
dGFiYXNlX25hbWUiOwpAQCAtMTUxLDcgKzE1MSw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBE
ZWxldGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgZGF0YWJhc2VUcmFja2Vy
LT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwg
ZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFz
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgs
ICJEYXRhYmFzZXMuZGIiX3MpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFi
YXNlX25hbWUiOwpAQCAtMTg2LDcgKzE4Niw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICBkYXRhYmFzZVRyYWNrZXIt
PnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBk
YXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNl
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVj
dG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
IkRhdGFiYXNlcy5kYiJfcyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJh
c2VfbmFtZSI7CkBAIC0yNDIsNyArMjQyLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0
ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxlKQogICAgIGRhdGFiYXNlVHJh
Y2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVk
KTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0
YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCAiRGF0YWJhc2VzLmRiIl9zKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2Vy
LT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBU
RVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2l0aE1pc3NpbmdFbnRyeUluRGF0YWJh
c2VzVGFibGUpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG9yaWdpblBhdGgpKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9y
aWdpblBhdGgpKTsKIAotICAgIFN0cmluZyB3ZWJEYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgImRhdGFiYXNlLmRiIik7CisgICAg
U3RyaW5nIHdlYkRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIiX3MpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgo
d2ViRGF0YWJhc2VQYXRoKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVs
ZXRlT3JpZ2luKG9yaWdpbikpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFj
a2VyLCBEZWxldGVEYXRhYmFzZSkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdp
biwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXIt
Pm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRh
YmFzZXMuZGIiKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiJf
cyk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgp
KTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CkBAIC0z
MjIsNyArMzIyLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlV2hlbkRh
dGFiYXNlRG9lc05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2lu
LCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+
b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFi
YXNlcy5kYiIpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIl9z
KTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkp
OwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKaW5k
ZXggN2EzZWNhNTU1ODJlZWY4MTUyNjZhNDRhZDZjNWVlMjUzNjZiNzVlZS4uMGQwYjAwN2Y2NGVk
ZTVjNDNkM2FkZGIwYjM4NzI3ZTJhODM3YzNmMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgbV9jb29raWVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKIAotICAgICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKKyAgICAgICAgbV9jb29r
aWVKYXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiX3Mp
KTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29raWVKYXItPnNl
dEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2llU3RvcmFnZUZpbGUu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2llU3RvcmFnZUZpbGUu
Y3BwCmluZGV4IGMzNmM2NTQ3Zjk0ZTkxYzZkNzI0YTIwYmY4YmU3OGFiNDI0N2IzZDUuLjRiMDZl
OGQ1ODBhYmRmMzljYzYxZTBiYTU1Y2FlOTMwZGEzMjgyOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZVN0b3JhZ2VGaWxlLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVTdG9yYWdlRmlsZS5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYgcGFn
ZSwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckQKIFRFU1RfRihDb29raWVTdG9yYWdl
RmlsZSwgQ3VzdG9tUGF0aCkKIHsKICAgICBib29sIGRpZEZpbmlzaExvYWQ7Ci0gICAgYXV0byBj
b29raWVTdG9yYWdlRmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2Nvb2tpZVN0b3JhZ2VEaXJlY3RvcnksICJjb29raWUuamFyLmRiIik7CisgICAgYXV0byBjb29r
aWVTdG9yYWdlRmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nv
b2tpZVN0b3JhZ2VEaXJlY3RvcnksICJjb29raWUuamFyLmRiIl9zKTsKIAogICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24obnVsbHB0cikp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQppbmRleCBhY2I3ZTQxYmI2NGJmM2Y2OTdkYzhiYTkxMzliMTlmODJjNDBjOWE4Li4yOGZk
YTFjY2Y0ODc1ZTNhNzIzNTJlOGEzNjY3MDNlOTNjNmZhOTU0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTEwOSw3ICsxMDks
NyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxv
YWQpOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0g
ICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0
V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIl9zLCBmaWxlSGFuZGxlKTsKICAg
ICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApAQCAt
NDE1LDcgKzQxNSw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBFWFBFQ1RfRVEoX2Rvd25s
b2FkLCBkb3dubG9hZCk7CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBfZGVzdGluYXRpb25QYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiX3MsIGZpbGVI
YW5kbGUpOwogICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOwogCkBAIC00NzUsNyArNDc1LDcgQEAgLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmkKIElHTk9S
RV9XQVJOSU5HU19FTkQKIHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBfZGVzdGluYXRpb25QYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiX3MsIGZpbGVI
YW5kbGUpOwogICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOwogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKQEAgLTY1MCw3ICs2NTAsNyBAQCAtICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZQogICAgIEVYUEVDVF9UUlVFKFtmaWxlbmFtZSBoYXNTdWZmaXg6
QCIudXNkeiJdKTsKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFu
ZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZShmaWxlbmFtZSwgZmlsZUhhbmRsZSk7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKFN0cmluZyB7IGZpbGVuYW1lIH0sIGZpbGVIYW5kbGUpOwog
ICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCkBA
IC0xMDc0LDcgKzEwNzQsNyBAQCBAaW1wbGVtZW50YXRpb24gRG93bmxvYWRDYW5jZWxpbmdEZWxl
Z2F0ZQogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0
aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgX3BhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSJfcywgZmlsZUhhbmRsZSk7CiAg
ICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoWUVTLCBfcGF0aC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5k
ZXggMWM5MjU2NjRjMGU1NzE1NmNmMzk4ZTM2YWIyZGJiZGUzOGQ1ZWQ2Yi4uZGVjY2YzMzdkZjlh
NTYxYWViNDIxNzRiMGQyMWViODI5NTFiY2ZmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMzc5
LDcgKzM3OSw3IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiAgICAgRVhQRUNUX0VRKGRvd25s
b2FkLCBtX2Rvd25sb2FkLmdldCgpKTsKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0cmlu
ZyAqKUZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhh
bmRsZSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwYXRoID0gKE5TU3RyaW5nICopRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiX3MsIGZpbGVIYW5kbGUpOwog
ICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QkZpbGVOYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJGaWxlTmFtZS5tbQppbmRleCBkYjYzMzk2NGY2MmFhZjA4NjUzNzNjY2ViM2I1OGUyYTAw
NzFhMjAyLi4zMmQ5MTBhNDY4OWFjZTNjZDRiNmExZGI0Y2I4ODVmODVhMWQxMDMzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQkZpbGVO
YW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCRmlsZU5hbWUubW0KQEAgLTgzLDkgKzgzLDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdCgpCiAg
ICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YWJhc2VOYW1lID0gQCJJbmRleGVkREJUZXN0IjsKICAg
ICBOU1N0cmluZyAqY3JlYXRlZERhdGFiYXNlTmFtZSA9IEAiSW5kZXhlZERCT3RoZXIiOwogICAg
IE5TU3RyaW5nICp1bnVzZWREYXRhYmFzZU5hbWUgPSBAIkluZGV4ZWREQlVudXNlZCI7Ci0gICAg
TlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVt
Ojpjb21wdXRlSGFzaEZvckZpbGVOYW1lKGV4aXN0aW5nRGF0YWJhc2VOYW1lKTsKLSAgICBOU1N0
cmluZyAqY3JlYXRlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNv
bXB1dGVIYXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7Ci0gICAgTlNTdHJpbmcg
KnVudXNlZERhdGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVI
YXNoRm9yRmlsZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CisgICAgTlNTdHJpbmcgKmV4aXN0
aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKFN0cmluZyB7IGV4aXN0aW5nRGF0YWJhc2VOYW1lIH0pOworICAgIE5TU3RyaW5n
ICpjcmVhdGVkRGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZShTdHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VOYW1lIH0pOworICAgIE5T
U3RyaW5nICp1bnVzZWREYXRhYmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpj
b21wdXRlSGFzaEZvckZpbGVOYW1lKFN0cmluZyB7IGNyZWF0ZWREYXRhYmFzZU5hbWUgfSk7CiAg
ICAgTlNVUkwgKmlkYlJvb3RVUkwgPSBbd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCkgX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKICAgICBOU1VSTCAqb2xkVmVyc2lvbkRp
cmVjdG9yeVVSTCA9IFtpZGJSb290VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYw
Il07CiAgICAgTlNVUkwgKm5ld1ZlcnNpb25EaXJlY3RvcnlVUkwgPSBbaWRiUm9vdFVSTCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdOwpAQCAtMTI3LDggKzEyNyw4IEBAIHN0YXRp
YyB2b2lkIGNyZWF0ZURpcmVjdG9yaWVzKFN0cmluZyB0ZXN0TmFtZSkKICAgICBpZiAodGVzdE5h
bWUgPT0gIm5vbmUiKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgTlNTdHJpbmcgKmV4aXN0
aW5nRGF0YmFzZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZv
ckZpbGVOYW1lKGV4aXN0aW5nRGF0YWJhc2VOYW1lKTsKLSAgICBOU1N0cmluZyAqY3JlYXRlZERh
dGFiYXNlSGFzaCA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9yRmls
ZU5hbWUoY3JlYXRlZERhdGFiYXNlTmFtZSk7CisgICAgTlNTdHJpbmcgKmV4aXN0aW5nRGF0YmFz
ZUhhc2ggPSBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1l
KFN0cmluZyB7IGV4aXN0aW5nRGF0YWJhc2VOYW1lIH0pOworICAgIE5TU3RyaW5nICpjcmVhdGVk
RGF0YWJhc2VIYXNoID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JG
aWxlTmFtZShTdHJpbmcgeyBjcmVhdGVkRGF0YWJhc2VOYW1lIH0pOwogICAgIE5TVVJMICpvbGRW
ZXJzaW9uRGlyZWN0b3J5VVJMID0gW2lkYlJvb3RVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAidjAiXTsKICAgICBOU1VSTCAqbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCA9IFtpZGJSb290
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl07CiAgICAgTlNVUkwgKm5ld1Zl
cnNpb25PcmlnaW5EaXJlY3RvcnlVUkwgPSBbbmV3VmVyc2lvbkRpcmVjdG9yeVVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiZmlsZV9fMCJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbQppbmRleCAyMWNiNzQ0NzhmOTY5M2Q0NGFmOWE3YTk2ZjNmNDVlMjZj
MTU3ZGE5Li45MTJkNGFmNTA5MWFiMzVmODA0NjVhZDVhMDNjZGEzNmQ4NTkxMmI4IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtODc0LDcgKzg3NCw3IEBAIFRF
U1QoV2ViS2l0LCBNaWdyYXRlSW5kZXhlZERCRGF0YVRvR2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkp
CiB7CiAgICAgTlNVUkwgKmluZGV4ZWREQkRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3Vz
dG9tV2Vic2l0ZURhdGEvSW5kZXhlZERCIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBp
c0RpcmVjdG9yeTpZRVNdOwogICAgIE5TVVJMICppbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgPSBb
aW5kZXhlZERCRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxL2h0dHBz
X3dlYmtpdC5vcmdfMCJdOwotICAgIE5TU3RyaW5nICppbmRleGVkREJEYXRhYmFzZU5hbWUgPSBA
IlRlc3REYXRhYmFzZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgaW5kZXhlZERCRGF0YWJhc2VO
YW1lW10gPSAiVGVzdERhdGFiYXNlIjsKICAgICBOU1N0cmluZyAqaGFzaGVkSW5kZXhlZERCRGF0
YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxl
TmFtZShpbmRleGVkREJEYXRhYmFzZU5hbWUpOwogICAgIE5TVVJMICppbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSA9IFtpbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50Omhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07CiAgICAgTlNVUkwgKmluZGV4
ZWREQkZpbGUgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAppbmRleCBkZTlkODM2NTczZjBlYTIxMWQx
ZGYyMmI4MDMxNWI2OGU0NThhZGU3Li4xZDFkOWZiOGE3ZTg3YTAwMmJhM2VjNWRiODZlMTI3MDdi
YzNjN2FmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxp
dGllc1dpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRp
ZXNXaW4uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5
KCkKIAogV0tTdHJpbmdSZWYgY3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBhdXRv
IHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0
b3J5KCksICJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIik7CisgICAgYXV0byBwYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgp
LCAiVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmRsbCJfcyk7CiAgICAgcmV0dXJuIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>