<?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>198990</bug_id>
          
          <creation_ts>2019-06-18 21:11:57 -0700</creation_ts>
          <short_desc>Tidy up the remaining bits of the AtomicString to AtomString rename</short_desc>
          <delta_ts>2019-06-20 09:22:17 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>dbates</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1545955</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-18 21:11:57 -0700</bug_when>
    <thetext>Tidy up the remaining bits of the AtomicString to AtomString rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545956</commentid>
    <comment_count>1</comment_count>
      <attachid>372426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-18 21:21:18 -0700</bug_when>
    <thetext>Created attachment 372426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545957</commentid>
    <comment_count>2</comment_count>
      <attachid>372427</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-18 21:26:10 -0700</bug_when>
    <thetext>Created attachment 372427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546099</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-19 09:58:11 -0700</bug_when>
    <thetext>Passes all the tests, so ready to go</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546103</commentid>
    <comment_count>4</comment_count>
      <attachid>372427</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-06-19 10:09:45 -0700</bug_when>
    <thetext>Comment on attachment 372427
Patch

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

&gt; Source/WTF/wtf/text/AtomString.h:-180
&gt; -using AtomicString = AtomString;

Ah you got rid of it already! That was quick.

&gt; Source/WTF/wtf/text/AtomStringImpl.h:52
&gt;          if (!string)
&gt; -            return static_cast&lt;AtomStringImpl*&gt;(string);
&gt; +            return nullptr;

Good cleanup.

&gt; Source/WTF/wtf/text/StringImpl.h:211
&gt;      enum StringKind {
&gt;          StringNormal = 0u, // non-symbol, non-atomic
&gt; -        StringAtomic = s_hashFlagStringKindIsAtomic, // non-symbol, atomic
&gt; +        StringAtomic = s_hashFlagStringKindIsAtom, // non-symbol, atomic
&gt;          StringSymbol = s_hashFlagStringKindIsSymbol, // symbol, non-atomic
&gt;      };

Missed some spots here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546537</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-20 09:18:38 -0700</bug_when>
    <thetext>I found a few more things I missed, so after I land this, I’ll return to these:

AtomicHTMLToken

WebCore/css/StyleSheetContents.cpp:    // The assumption is that nearly all of of them are atomic and would exist anyway.
WebCore/dom/ContainerNode.cpp:    return ensureRareData().ensureNodeLists().addCacheWithAtomicName&lt;NameNodeList&gt;(*this, elementName);
WebCore/dom/ContainerNode.cpp:    return ensureRareData().ensureNodeLists().addCacheWithAtomicName&lt;RadioNodeList&gt;(*this, name);
WebCore/dom/Element.h:    // A fast function for checking the local name against another atomic string.
WebCore/dom/NameNodeList.cpp:    ownerNode().nodeLists()-&gt;removeCacheWithAtomicName(this, m_name);
WebCore/dom/Node.cpp:    for (auto&amp; atomicName : m_atomicNameCaches)
WebCore/dom/Node.cpp:        atomicName.value-&gt;invalidateCache();
WebCore/dom/Node.cpp:    for (auto&amp; atomicName : m_atomicNameCaches)
WebCore/dom/Node.cpp:        atomicName.value-&gt;invalidateCacheForAttribute(attrName);
WebCore/dom/NodeRareData.h:    typedef HashMap&lt;std::pair&lt;unsigned char, AtomString&gt;, LiveNodeList*, NodeListCacheMapEntryHash&gt; NodeListAtomicNameCacheMap;
WebCore/dom/NodeRareData.h:    ALWAYS_INLINE Ref&lt;T&gt; addCacheWithAtomicName(ContainerType&amp; container, const AtomString&amp; name)
WebCore/dom/NodeRareData.h:        NodeListAtomicNameCacheMap::AddResult result = m_atomicNameCaches.fastAdd(namedNodeListKey&lt;T&gt;(name), nullptr);
WebCore/dom/NodeRareData.h:    void removeCacheWithAtomicName(NodeListType* list, const AtomString&amp; name = starAtom())
WebCore/dom/NodeRareData.h:        ASSERT(list == m_atomicNameCaches.get(namedNodeListKey&lt;NodeListType&gt;(name)));
WebCore/dom/NodeRareData.h:        m_atomicNameCaches.remove(namedNodeListKey&lt;NodeListType&gt;(name));
WebCore/dom/NodeRareData.h:        for (auto&amp; cache : m_atomicNameCaches.values())
WebCore/dom/NodeRareData.h:    NodeListAtomicNameCacheMap m_atomicNameCaches;
WebCore/dom/NodeRareData.h:    if ((m_childNodeList ? 1 : 0) + (m_emptyChildNodeList ? 1 : 0) + m_atomicNameCaches.size()
WebCore/dom/TreeScope.cpp:    if (RefPtr&lt;AtomStringImpl&gt; atomicElementId = AtomStringImpl::lookUp(elementId.impl()))
WebCore/dom/TreeScope.cpp:        return m_elementsById-&gt;getElementById(*atomicElementId, *this);
WebCore/dom/TreeScope.cpp:    if (auto atomicElementId = elementId.toExistingAtomString())
WebCore/dom/TreeScope.cpp:        return m_elementsById-&gt;getElementById(*atomicElementId, *this);
WebCore/html/LabelableElement.cpp:    return ensureRareData().ensureNodeLists().addCacheWithAtomicName&lt;LabelsNodeList&gt;(*this, starAtom());
WebCore/html/LabelsNodeList.cpp:    ownerNode().nodeLists()-&gt;removeCacheWithAtomicName(this, starAtom());
WebCore/html/RadioNodeList.cpp:    ownerNode().nodeLists()-&gt;removeCacheWithAtomicName(this, m_name);
WebCore/html/parser/HTMLDocumentParser.cpp:    // We clear the rawToken in case constructTreeFromAtomicToken
WebCore/loader/appcache/ApplicationCacheStorage.cpp:    // Save memory by putting the header names into atomic strings so each is stored only once,
WebCore/loader/appcache/ApplicationCacheStorage.cpp:    // even though the setHTTPHeaderField function does not require an atomic string.
WebCore/platform/text/TextEncoding.cpp:    : m_name(atomicCanonicalTextEncodingName(name))
WebCore/platform/text/TextEncoding.cpp:    : m_name(atomicCanonicalTextEncodingName(name))
WebCore/platform/text/TextEncoding.cpp:    static const char* const a = atomicCanonicalTextEncodingName(&quot;windows-949&quot;);
WebCore/platform/text/TextEncoding.cpp:    static const char* const a = atomicCanonicalTextEncodingName(&quot;ISO-8859-8&quot;);
WebCore/platform/text/TextEncodingRegistry.cpp:    const char* atomicName = textEncodingNameMap-&gt;get(name);
WebCore/platform/text/TextEncodingRegistry.cpp:    ASSERT(strcmp(alias, name) == 0 || atomicName);
WebCore/platform/text/TextEncodingRegistry.cpp:    if (!atomicName)
WebCore/platform/text/TextEncodingRegistry.cpp:        atomicName = name;
WebCore/platform/text/TextEncodingRegistry.cpp:    ASSERT_WITH_MESSAGE(!textEncodingNameMap-&gt;get(alias), &quot;Duplicate text encoding name %s for %s (previously registered as %s)&quot;, alias, atomicName, textEncodingNameMap-&gt;get(alias));
WebCore/platform/text/TextEncodingRegistry.cpp:    textEncodingNameMap-&gt;add(alias, atomicName);
WebCore/platform/text/TextEncodingRegistry.cpp:    const char* atomicName = textEncodingNameMap-&gt;get(name);
WebCore/platform/text/TextEncodingRegistry.cpp:    ASSERT(atomicName);
WebCore/platform/text/TextEncodingRegistry.cpp:    textCodecMap-&gt;add(atomicName, WTFMove(function));
WebCore/platform/text/TextEncodingRegistry.cpp:        auto* atomicName = textEncodingNameMap-&gt;get(nameFromBlacklist);
WebCore/platform/text/TextEncodingRegistry.cpp:        if (!atomicName)
WebCore/platform/text/TextEncodingRegistry.cpp:            if (entry.value == atomicName)
WebCore/platform/text/TextEncodingRegistry.cpp:        textCodecMap-&gt;remove(atomicName);
WebCore/platform/text/TextEncodingRegistry.cpp:    // We must not use atomicCanonicalTextEncodingName() because this function is called in it.
WebCore/platform/text/TextEncodingRegistry.cpp:    const char* atomicName = textEncodingNameMap-&gt;get(name);
WebCore/platform/text/TextEncodingRegistry.cpp:    if (atomicName)
WebCore/platform/text/TextEncodingRegistry.cpp:        set-&gt;add(atomicName);
WebCore/platform/text/TextEncodingRegistry.cpp:const char* atomicCanonicalTextEncodingName(const char* name)
WebCore/platform/text/TextEncodingRegistry.cpp:    if (const char* atomicName = textEncodingNameMap-&gt;get(name))
WebCore/platform/text/TextEncodingRegistry.cpp:    if (atomicName)
WebCore/platform/text/TextEncodingRegistry.cpp:        set-&gt;add(atomicName);
WebCore/platform/text/TextEncodingRegistry.cpp:const char* atomicCanonicalTextEncodingName(const char* name)
WebCore/platform/text/TextEncodingRegistry.cpp:    if (const char* atomicName = textEncodingNameMap-&gt;get(name))
WebCore/platform/text/TextEncodingRegistry.cpp:        return atomicName;
WebCore/platform/text/TextEncodingRegistry.cpp:template&lt;typename CharacterType&gt; static const char* atomicCanonicalTextEncodingName(const CharacterType* characters, size_t length)
WebCore/platform/text/TextEncodingRegistry.cpp:    return atomicCanonicalTextEncodingName(buffer);
WebCore/platform/text/TextEncodingRegistry.cpp:const char* atomicCanonicalTextEncodingName(const String&amp; alias)
WebCore/platform/text/TextEncodingRegistry.cpp:        return atomicCanonicalTextEncodingName(alias.characters8(), alias.length());
WebCore/platform/text/TextEncodingRegistry.cpp:    return atomicCanonicalTextEncodingName(alias.characters16(), alias.length());
WebCore/platform/text/TextEncodingRegistry.h:const char* atomicCanonicalTextEncodingName(const char* alias);
WebCore/platform/text/TextEncodingRegistry.h:const char* atomicCanonicalTextEncodingName(const String&amp;);
WebCore/xml/XPathFunctions.cpp:static AtomString atomicSubstring(StringBuilder&amp; builder, unsigned start, unsigned length)
WebCore/xml/XPathFunctions.cpp:        Node* node = contextScope.getElementById(atomicSubstring(idList, startPos, endPos - startPos));
WebKitLegacy/win/AccessibleBase.cpp:    AtomString keyAtomic(key, ::SysStringLen(key));
WebKitLegacy/win/AccessibleBase.cpp:    accessibilityAttributeValue(keyAtomic, value);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546539</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-20 09:21:55 -0700</bug_when>
    <thetext>Committed r246636: &lt;https://trac.webkit.org/changeset/246636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546540</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-20 09:22:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/51946239&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372426</attachid>
            <date>2019-06-18 21:21:18 -0700</date>
            <delta_ts>2019-06-18 21:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198990-20190618212117.patch</filename>
            <type>text/plain</type>
            <size>49469</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzNkNGU0YjA1YWQ5Y2JiNzVjOWI1YWM3NWQ4YjEzMjI1ZGY0OGIzLi45Y2Y4ODA0M2FlMjM1MGJj
NTA1NzkxZjJlZWNjYjJlN2E0NDU5MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOS0wNi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlkeSB1cCB0aGUgcmVtYWluaW5nIGJpdHMgb2YgdGhlIEF0b21pY1N0cmluZyB0
byBBdG9tU3RyaW5nIHJlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKTog
VXNlIGZsYWdJc0F0b20uCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogRGl0dG8uCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogRGl0dG8uCisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVIYXNPd25Qcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdJZGVudCk6IERpdHRvLgorCiAyMDE5LTA2LTE4ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNMb2NrIHNo
b3VsZCBiZSBXZWJUaHJlYWQgYXdhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDQ5MzVjNDVjOGZmYjgzMWFmMmRiMGQwOTI0
ZGQzNzFkMzc0MTUzZS4uOWY3MGIyOGRhNGRkYTc0ZTc4ZjViZjMxNGMwZGRhYTA2NjdlMGZkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0wNi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVGlkeSB1cCB0aGUgcmVtYWluaW5nIGJpdHMgb2YgdGhlIEF0b21p
Y1N0cmluZyB0byBBdG9tU3RyaW5nIHJlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6IFR3ZWFrIGZvcm1h
dHRpbmcgYSBiaXQuIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMC4KKyAgICAgICAgUmVtb3ZlZCAi
dXNpbmcgQXRvbWljU3RyaW5nID0gQXRvbVN0cmluZyIuCisgICAgICAgICogd3RmL3RleHQvQXRv
bVN0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjo6dHJhbnNs
YXRlKTogVXNlIHNldElzQXRvbSBpbnN0ZWFkIG9mIHNldElzQXRvbWljLgorICAgICAgICAoV1RG
OjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6IERpdHRvLgorICAgICAgICAoV1RG
OjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOjp0cmFuc2xhdGUpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjo6dHJhbnNsYXRlKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjo6dHJhbnNsYXRlKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OkJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjo6dHJhbnNsYXRlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkF0b21TdHJpbmdJbXBsOjphZGRTbG93Q2FzZSk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpBdG9tU3RyaW5nSW1wbDo6bG9va1VwU2xvd0Nhc2UpOiBVcGRhdGVkIGFz
c2VydGlvbiBtZXNzYWdlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaDog
VHdlYWtlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWRkLgorICAgICAgICBVcGRhdGVkIGNvbW1l
bnRzIHRvIHNheSBBdG9tU3RyaW5nLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZ1Rh
YmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZ1RhYmxlOjp+QXRvbVN0cmluZ1RhYmxl
KTogVXNlIHNldElzQXRvbS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDogVXBk
YXRlZCBuYW1lIG9mIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tLgorICAgICAgICByZW5hbWVk
IHRvIGZsYWdJc0F0b20gYW5kIHNldElzQXRvbS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhy
ZWFkIGNvbnN0KTogVXBkYXRlZCBjb21tZW50LgorCiAyMDE5LTA2LTE4ICBLZW5uZXRoIFJ1c3Nl
bGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBwcmVsaW1pbmFyeSBBTkdMRSBi
YWNrZW5kIHRvIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNTcxYjU4YTgwZjNlYmRkOTRkN2JjMjc2
MDY0N2NjZDE1ZGFjNzVmLi5lMGVhZjZmZTIxNmY3NmYzZGVhOWZlZjBmYzIyOWNiN2IzMDI2YjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDYtMTggIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgdGhlIHJlbWFpbmluZyBiaXRzIG9m
IHRoZSBBdG9taWNTdHJpbmcgdG8gQXRvbVN0cmluZyByZW5hbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODk5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHA6IFVwZGF0ZWQgbmFtZXMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsOiBEaXR0by4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDog
VXBkYXRlZCBjb21tZW50LgorICAgICAgICAqIGNzcy9tYWtldmFsdWVzLnBsOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1L
ZXlHZW5lcmF0b3I6OmZvcm1LZXkpOiBEaXR0by4KKwogMjAxOS0wNi0xOCAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIFN1cHBvcnQgbWF0cmljZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggMjEzNWM4ZTYzNjM5MTAwYWYwM2YyMjY0ODU5MGViNTM3MDllYzNkNy4uMWYzNjM4ZDIxNDdi
OWY2MGQ3ODRmMDhmYmM5NDU1NjA3YzE4MGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjgxLDcgKzEwMjgxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShFZGdl
IGVkZ2UsIEdQUlJlZyBzdHJpbmcKICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoc3RyaW5nKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDMyKAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Olplcm8sCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJ
c0F0b20oKSkpKTsKICAgICAKICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3Ry
aW5nSWRlbnQgfCB+U3BlY1N0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA3NWYxMDJiYzRmZGM2MzMy
OWYyZGRmZGU4MTlkZTA0NjA2NDQ2NjhlLi5iM2QxZDFkZDYxMWUxNjdmMWU0Mjg0M2Y1OGZhNGM2
MzhmZTlmM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCht
X2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKGltcGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6
OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
QEAgLTM5MDksNyArMzkwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJp
bmdJbXBsKGltcGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFu
Y2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6Zmxh
Z0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKSk7CiAgICAgICAgICAgICBhdXRvIGhhc1Vu
aXF1ZWRJbXBsID0gbV9qaXQuanVtcCgpOwogCiAgICAgICAgICAgICBpc05vdFN0cmluZy5saW5r
KCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBmM2EwYjJiYzZmY2YzYzI0NDI1YWM2ZDNhYTMwZGEyNjViOTRiNzUw
Li45ZDBhZTBhZjE1MGI4MDljNzE0MWNjNjBiYTZmYmU2MjkwMmNjZjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NjYs
NyArNDQ2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKGlt
cGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWlj
KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJp
bmdJbXBsOjpmbGFnSXNBdG9tKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKQEAgLTQ0NzYsNyArNDQ3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmFw
cGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKGltcGxHUFIpKTsKICAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmlu
Z0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkp
KSk7CiAgICAgICAgICAgICBhdXRvIGhhc1VuaXF1ZWRJbXBsID0gbV9qaXQuanVtcCgpOwogCiAg
ICAgICAgICAgICBpc05vdFN0cmluZy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTUzOWIwNTQ0ZGM2NzBhMmQ0NTI1
OWI4YmFkN2Y4YmQ3MThjMWQ4OC4uYzRhNjcwNWVjYWMwNzE1OTY2ODEwNGUwNGJhNGEwY2YxZmFm
ZDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTA0NjMsNyArMTA0NjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm9uRW1wdHlTdHJpbmcsIGlzQXRvbVN0cmluZyk7CiAgICAg
ICAgICAgICB1bmlxdWVkU3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoa2V5QXNWYWx1ZSwgbV9o
ZWFwcy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgICAgICBMVmFsdWUgaXNOb3RBdG9taWMgPSBt
X291dC50ZXN0SXNaZXJvMzIobV9vdXQubG9hZDMyKHVuaXF1ZWRTdHJpbmdJbXBsLCBtX2hlYXBz
LlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpm
bGFnSXNBdG9taWMoKSkpOworICAgICAgICAgICAgTFZhbHVlIGlzTm90QXRvbWljID0gbV9vdXQu
dGVzdElzWmVybzMyKG1fb3V0LmxvYWQzMih1bmlxdWVkU3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJp
bmdJbXBsX2hhc2hBbmRGbGFncyksIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lz
QXRvbSgpKSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RBdG9taWMsIHJhcmVseShz
bG93Q2FzZSksIHVzdWFsbHkoaXNBdG9tU3RyaW5nKSk7CiAKICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGlzQXRvbVN0cmluZywgc2xvd0Nhc2UpOwpAQCAtMTA0OTUsNyArMTA0OTUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb25FbXB0eVN0cmluZywgbm90
U3RyaW5nQ2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgaW1wbEZyb21TdHJpbmcgPSBtX291dC5s
b2FkUHRyKGtleUFzVmFsdWUsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwogICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc3RyaW5nUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGltcGxGcm9tU3RyaW5n
KTsKLSAgICAgICAgICAgIExWYWx1ZSBpc05vdEF0b21pYyA9IG1fb3V0LnRlc3RJc1plcm8zMiht
X291dC5sb2FkMzIoaW1wbEZyb21TdHJpbmcsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxh
Z3MpLCBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSk7CisgICAg
ICAgICAgICBMVmFsdWUgaXNOb3RBdG9taWMgPSBtX291dC50ZXN0SXNaZXJvMzIobV9vdXQubG9h
ZDMyKGltcGxGcm9tU3RyaW5nLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwgbV9v
dXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKTsKICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChpc05vdEF0b21pYywgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNVbmlx
dWVkU3RyaW5nSW1wbCkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdD
YXNlLCBpc1N5bWJvbENhc2UpOwpAQCAtMTY0MjEsNyArMTY0MjEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKHN0cmluZyksIGVkZ2Uubm9kZSgpLAogICAg
ICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQz
MihzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKLSAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSkpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbSgp
KSkpOwogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQg
fCB+U3BlY1N0cmluZyk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRl
eCA5ZDQzZTFmYTcyODRlYmExNGE3YzNiY2RkZDMzOTRlNjNlOTZlYmE3Li4zOGMzMTEwMDcyYjI0
MjU1NjBlMmRjNjZiZjg4ZjM3MmU1MTkyNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTkwLDcgKzkw
LDggQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmc7IH07CiAKLSAgICBBdG9tU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KKyAgICAv
LyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoaXMgaXNuJ3QgYSBTeW1ib2xJbXBsIHJhdGhlciB0
aGFuIGFuIEF0b21TdHJpbmdJbXBsPworICAgIEF0b21TdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihtX3N0cmluZy5pbXBsKCkpOyB9
CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzOEJpdCgpOyB9
CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
Y2hhcmFjdGVyczgoKTsgfQpAQCAtMTMyLDkgKzEzMyw5IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNl
KCkgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy50b0ludChvayk7IH0KLSAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy50b0RvdWJsZShvayk7IH0KLSAgICBmbG9hdCB0b0Zsb2F0
KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0KKyAg
ICBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50
b0ludChvayk7IH0KKyAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy50b0RvdWJsZShvayk7IH0KKyAgICBmbG9hdCB0b0Zsb2F0KGJv
b2wqIG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0K
ICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5wZXJj
ZW50YWdlKHApOyB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmlzTnVsbCgpOyB9CkBAIC0xNDUsOCArMTQ2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZmRl
ZiBfX09CSkNfXwotICAgIEF0b21TdHJpbmcoTlNTdHJpbmcqKTsKLSAgICBvcGVyYXRvciBOU1N0
cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIEF0b21TdHJpbmcoTlNTdHJp
bmcgKik7CisgICAgb3BlcmF0b3IgTlNTdHJpbmcgKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpICYmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVN
ID49IDU5CkBAIC0xNzcsOSArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7
CiB9OwogCi11c2luZyBBdG9taWNTdHJpbmcgPSBBdG9tU3RyaW5nOwotCi1zdGF0aWNfYXNzZXJ0
KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJpbmcgYW5kIFN0
cmluZyBtdXN0IGJlIHNhbWUgc2l6ZSEiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEF0b21TdHJp
bmcpID09IHNpemVvZihTdHJpbmcpLCAiQXRvbVN0cmluZyBhbmQgU3RyaW5nIG11c3QgYmUgdGhl
IHNhbWUgc2l6ZSEiKTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5n
JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsg
fQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBMQ2hhciopOwpAQCAt
MjgxLDcgKzI4MCw3IEBAIGlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKENGU3RyaW5nUmVm
IHN0cmluZykKIAogI2lmZGVmIF9fT0JKQ19fCiAKLWlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3Ry
aW5nKE5TU3RyaW5nKiBzdHJpbmcpCitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhOU1N0
cmluZyAqc3RyaW5nKQogICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZCgoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpc3RyaW5nKSkKIHsKIH0KQEAgLTM2MCw3ICszNTksNiBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRvbVN0cmluZz4gewog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6QXRvbVN0cmluZzsKLXVzaW5nIFdURjo6
QXRvbWljU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsKIHVzaW5nIFdURjo6ZW1wdHlBdG9t
OwogdXNpbmcgV1RGOjpzdGFyQXRvbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbVN0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5j
cHAKaW5kZXggODdhNjRlZWFiMjVhYTc0ZGMwYjkxOTA3YjJjODQ0OGI5NWQxZmM5Yy4uMjY5Y2Ji
Y2IyZTA3NTcyZjJjMDIyM2YzYWMzOTcwMDMwODMzYWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nSW1wbC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgQ1N0cmluZ1RyYW5z
bGF0b3IgewogICAgIHsKICAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlKGNo
YXJhY3RlcnMpLmxlYWtSZWYoKTsKICAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0g
ICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNl
dElzQXRvbSh0cnVlKTsKICAgICB9CiB9OwogCkBAIC0xNTksNyArMTU5LDcgQEAgc3RydWN0IFVD
aGFyQnVmZmVyVHJhbnNsYXRvciB7CiAgICAgewogICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJ
bXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCkubGVh
a1JlZigpOwogICAgICAgICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKLSAgICAgICAgbG9jYXRp
b24tPnNldElzQXRvbWljKHRydWUpOworICAgICAgICBsb2NhdGlvbi0+c2V0SXNBdG9tKHRydWUp
OwogICAgIH0KIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdHJ1Y3QgSGFzaEFuZFVURjhDaGFy
YWN0ZXJzVHJhbnNsYXRvciB7CiAKICAgICAgICAgbG9jYXRpb24gPSAmbmV3U3RyaW5nLmxlYWtS
ZWYoKTsKICAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9u
LT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbSh0cnVlKTsK
ICAgICB9CiB9OwogCkBAIC0yNzAsNyArMjcwLDcgQEAgc3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0
b3IgewogICAgIHsKICAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3Ry
aW5nU2hhcmluZ0ltcGwoKmJ1ZmZlci5iYXNlU3RyaW5nLCBidWZmZXIuc3RhcnQsIGJ1ZmZlci5s
ZW5ndGgpLmxlYWtSZWYoKTsKICAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAg
ICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNldElz
QXRvbSh0cnVlKTsKICAgICB9CiB9OwogCkBAIC0zMzUsNyArMzM1LDcgQEAgc3RydWN0IExDaGFy
QnVmZmVyVHJhbnNsYXRvciB7CiAgICAgewogICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJbXBs
OjpjcmVhdGUoYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpLmxlYWtSZWYoKTsKICAgICAgICAg
bG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0
cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbSh0cnVlKTsKICAgICB9CiB9OwogCkBA
IC0zNTYsNyArMzU2LDcgQEAgc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvciB7
CiAgICAgewogICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCkubGVha1JlZigpOwogICAgICAgICBsb2Nh
dGlvbi0+c2V0SGFzaChoYXNoKTsKLSAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbWljKHRydWUp
OworICAgICAgICBsb2NhdGlvbi0+c2V0SXNBdG9tKHRydWUpOwogICAgIH0KIH07CiAKQEAgLTQ0
NCw3ICs0NDQsNyBAQCBSZWY8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGRTbG93
Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgQVNTRVJUKCphZGRSZXN1bHQuaXRlcmF0b3IgPT0gJnN0cmluZyk7Ci0gICAg
ICAgIHN0cmluZy5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgc3RyaW5nLnNldElzQXRvbSh0
cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4o
KmFkZFJlc3VsdC5pdGVyYXRvcik7CkBAIC00NzQsNyArNDc0LDcgQEAgUmVmPEF0b21TdHJpbmdJ
bXBsPiBBdG9tU3RyaW5nSW1wbDo6YWRkU2xvd0Nhc2UoQXRvbVN0cmluZ1RhYmxlJiBzdHJpbmdU
YWJsZSwgU3QKIAogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NF
UlQoKmFkZFJlc3VsdC5pdGVyYXRvciA9PSAmc3RyaW5nKTsKLSAgICAgICAgc3RyaW5nLnNldElz
QXRvbWljKHRydWUpOworICAgICAgICBzdHJpbmcuc2V0SXNBdG9tKHRydWUpOwogICAgIH0KIAog
ICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPigqYWRkUmVzdWx0Lml0ZXJh
dG9yKTsKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIEF0b21TdHJpbmdJbXBsOjpyZW1vdmUoQXRv
bVN0cmluZ0ltcGwqIHN0cmluZykKIAogUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5n
SW1wbDo6bG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogewotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b20oKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCBy
ZXR1cm4gZnJvbSB0aGUgZmFzdCBjYXNlLiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZy5pc0F0b20oKSwgIkF0b21TdHJpbmdJbXBsIG9iamVjdHMgc2hvdWxkIHJldHVybiBmcm9t
IHRoZSBmYXN0IGNhc2UuIik7CiAKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKaW5kZXggMzQ2NmE5MWJmYWJiMjUwOTk4
MjZlYzdlODAzMzM5MWE1YjU0MTljZC4uNTUyODJkZGNjNmU1MDA3NDYwNjE2NmQ3MzZiMjNlNDlh
NWNkNzViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC00NiwxMiArNDYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVu
Z3RoKSB7IHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5n
dGgpOyB9OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJ
bXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRyPEF0b21TdHJp
bmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3RyaW5nKQotICAgIHsKLSAgICAgICAgaWYgKCFzdHJp
bmcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihzdHJp
bmcpOwotICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwotICAgIH0KKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiBzdHJpbmcp
IHsgcmV0dXJuIHN0cmluZyA/IGFkZCgqc3RyaW5nKSA6IG51bGxwdHI7IH0KICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKGNvbnN0IFN0YXRp
Y1N0cmluZ0ltcGwqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBdG9tU3Ry
aW5nSW1wbD4gYWRkTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpOwogCkBAIC0xMDIsMjAgKzk3LDE5IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAotLy8gQXRvbWljU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0lt
cGwgd2lsbCBBU1NFUlQKLS8vIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29u
c2lzdGVuY3kKLS8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KLS8v
IFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFueSB3YXkgdG8gZGV0ZWN0IHRoYXQgY2FzZQotLy8g
c28gd2UgaWdub3JlIHRoZSBjb25zaXN0ZW5jeSBjaGVjayBmb3IgYWxsIEF0b21pY1N0cmluZ0lt
cGxzKi4KLXRlbXBsYXRlPD4gc3RydWN0Ci1WYWx1ZUNoZWNrPEF0b21TdHJpbmdJbXBsKj4gewor
CisvLyBBdG9tU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBB
U1NFUlQgaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5jeSwKKy8v
IGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4gV2UgZG9uJ3QgY3VycmVu
dGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3QgdGhhdCBjYXNlLCBzbyB3ZSBkb24ndAorLy8gZG8g
YW55IGNvbnNpc3RlbmN5IGNoZWNrIGZvciBBdG9tU3RyaW5nSW1wbCouCisKK3RlbXBsYXRlPD4g
c3RydWN0IFZhbHVlQ2hlY2s8QXRvbVN0cmluZ0ltcGwqPiB7CiAgICAgc3RhdGljIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeShjb25zdCBBdG9tU3RyaW5nSW1wbCopIHsgfQogfTsKIAotdGVtcGxhdGU8
PiBzdHJ1Y3QKLVZhbHVlQ2hlY2s8Y29uc3QgQXRvbVN0cmluZ0ltcGwqPiB7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBWYWx1ZUNoZWNrPGNvbnN0IEF0b21TdHJpbmdJbXBsKj4gewogICAgIHN0YXRpYyB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgQXRvbVN0cmluZ0ltcGwqKSB7IH0KIH07CisKICNl
bmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdUYWJs
ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5jcHAKaW5kZXggOTgx
MmFjMjI5ZjVkNGM0YTY5MzNlMTlmMzFjZWRiYTc2ZDk4Y2IyZC4uYzEzODI1MjhkMTA5MDkwNWY0
OTExNzFkMjM5YjUyZDNjY2ExOWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ1Rh
YmxlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIEF0b21TdHJpbmdUYWJs
ZTo6fkF0b21TdHJpbmdUYWJsZSgpCiB7CiAgICAgZm9yIChhdXRvKiBzdHJpbmcgOiBtX3RhYmxl
KQotICAgICAgICBzdHJpbmctPnNldElzQXRvbWljKGZhbHNlKTsKKyAgICAgICAgc3RyaW5nLT5z
ZXRJc0F0b20oZmFsc2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGQ3
OWM1NTc5NjZjYTVkMTVhNDMwZTNiYWE4MDViYjk1ZDRiN2RlMDYuLmMwYWRkMTFiZmZkZjRkMjAy
N2M5M2VkMGY4NzMxYmNmNjgxOTE4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0x
OTcsMTYgKzE5NywxNiBAQCBwcml2YXRlOgogICAgIHN0YXRpY19hc3NlcnQoc19mbGFnQ291bnQg
PD0gU3RyaW5nSGFzaGVyOjpmbGFnQ291bnQsICJTdHJpbmdIYXNoZXIgcmVzZXJ2ZXMgZW5vdWdo
IGJpdHMgZm9yIFN0cmluZ0ltcGwgZmxhZ3MiKTsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IHVuc2lnbmVkIHNfZmxhZ1N0cmluZ0tpbmRDb3VudCA9IDQ7CiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWMgPSAxdSA8PCAo
c19mbGFnU3RyaW5nS2luZENvdW50KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2ln
bmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRD
b3VudCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3Ry
aW5nS2luZElzU3ltYm9sID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCArIDEpOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19oYXNoTWFza1N0cmluZ0tpbmQgPSBz
X2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljIHwgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJv
bDsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tTdHJpbmdL
aW5kID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b20gfCBzX2hhc2hGbGFnU3RyaW5nS2luZElz
U3ltYm9sOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ0Rp
ZFJlcG9ydENvc3QgPSAxdSA8PCAzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWdu
ZWQgc19oYXNoRmxhZzhCaXRCdWZmZXIgPSAxdSA8PCAyOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgdW5zaWduZWQgc19oYXNoTWFza0J1ZmZlck93bmVyc2hpcCA9ICgxdSA8PCAwKSB8ICgx
dSA8PCAxKTsKIAogICAgIGVudW0gU3RyaW5nS2luZCB7CiAgICAgICAgIFN0cmluZ05vcm1hbCA9
IDB1LCAvLyBub24tc3ltYm9sLCBub24tYXRvbWljCi0gICAgICAgIFN0cmluZ0F0b21pYyA9IHNf
aGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWMsIC8vIG5vbi1zeW1ib2wsIGF0b21pYworICAgICAg
ICBTdHJpbmdBdG9taWMgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbSwgLy8gbm9uLXN5bWJv
bCwgYXRvbWljCiAgICAgICAgIFN0cmluZ1N5bWJvbCA9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNT
eW1ib2wsIC8vIHN5bWJvbCwgbm9uLWF0b21pYwogICAgIH07CiAKQEAgLTI2NSw3ICsyNjUsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBmbGFnSXM4Qml0KCkgeyByZXR1cm4gc19oYXNoRmxhZzhCaXRC
dWZmZXI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZsYWdJc0F0b21pYygpIHsg
cmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGZsYWdJc0F0b20oKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElz
QXRvbTsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmxhZ0lzU3ltYm9sKCkgeyBy
ZXR1cm4gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbDsgfQogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2lu
ZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CkBAIC0yOTIsOCArMjkyLDggQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFz
aEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7IH0KLSAgICBib29sIGlzQXRvbSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsgfQotICAg
IHZvaWQgc2V0SXNBdG9taWMoYm9vbCk7CisgICAgYm9vbCBpc0F0b20oKSBjb25zdCB7IHJldHVy
biBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tOyB9CisgICAgdm9p
ZCBzZXRJc0F0b20oYm9vbCk7CiAgICAgCiAgICAgYm9vbCBpc0V4dGVybmFsKCkgY29uc3QgeyBy
ZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyRXh0ZXJuYWw7IH0KIApAQCAtMzU5LDgg
KzM1OSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgICAgVGhpcyBtZWFucyBTdGF0aWNTdHJp
bmdJbXBsIGNvc3RzIGFyZSBub3QgY291bnRlZC4gQnV0IHNpbmNlIHRoZXJlIHNob3VsZCBvbmx5
CiAgICAgICAgIC8vICAgICAgIGJlIGEgZmluaXRlIHNldCBvZiBTdGF0aWNTdHJpbmdJbXBscywg
dGhlaXIgY29zdCBjYW4gYmUgYWdncmVnYXRlZCBpbnRvIGEgc2luZ2xlCiAgICAgICAgIC8vICAg
ICAgIHN5c3RlbSBjb3N0IGlmIG5lZWRlZC4KLSAgICAgICAgLy8gICAgYi4gc2V0SXNBdG9taWMo
KSBpcyBuZXZlciBjYWxsZWQgb24gYSBTdGF0aWNTdHJpbmdJbXBsLgotICAgICAgICAvLyAgICAg
ICBzZXRJc0F0b21pYygpIGFzc2VydHMgIWlzU3RhdGljKCkuCisgICAgICAgIC8vICAgIGIuIHNl
dElzQXRvbSgpIGlzIG5ldmVyIGNhbGxlZCBvbiBhIFN0YXRpY1N0cmluZ0ltcGwuCisgICAgICAg
IC8vICAgICAgIHNldElzQXRvbSgpIGFzc2VydHMgIWlzU3RhdGljKCkuCiAgICAgICAgIC8vICAg
IGMuIHNldEhhc2goKSBpcyBuZXZlciBjYWxsZWQgb24gYSBTdGF0aWNTdHJpbmdJbXBsLgogICAg
ICAgICAvLyAgICAgICBTdGF0aWNTdHJpbmdJbXBsJ3MgY29uc3RydWN0b3Igc2V0cyB0aGUgaGFz
aCBvbiBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIC8vICAgICAgIFN0cmluZ0ltcGw6Omhhc2goKSBv
bmx5IHNldHMgYSBuZXcgaGFzaCBpZmYgIWhhc0hhc2goKS4KQEAgLTEwMzEsMTQgKzEwMzEsMTQg
QEAgaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpjb3N0RHVyaW5nR0MoKQogICAgIHJldHVybiBk
aXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3Ry
aW5nSW1wbDo6c2V0SXNBdG9taWMoYm9vbCBpc0F0b20pCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBs
OjpzZXRJc0F0b20oYm9vbCBpc0F0b20pCiB7CiAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKICAg
ICBBU1NFUlQoIWlzU3ltYm9sKCkpOwogICAgIGlmIChpc0F0b20pCi0gICAgICAgIG1faGFzaEFu
ZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAgICAgIG1faGFzaEFu
ZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tOwogICAgIGVsc2UKLSAgICAgICAg
bV9oYXNoQW5kRmxhZ3MgJj0gfnNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAgICAg
IG1faGFzaEFuZEZsYWdzICY9IH5zX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbTsKIH0KIAogaW5s
aW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SGFzaCh1bnNpZ25lZCBoYXNoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDQzZGUzZDA3NjA1OWY4MDc0Yjc0ODc2ZWY3N2Y2ODM5
MDRiNmEwYjQuLmNmZjdiZWRiYTBkM2QxODc4M2ZjMTI5MzQyZDI0ODc0MTJhZDFmOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTY0OCw3ICs2NDgsNyBAQCBT
dHJpbmcgU3RyaW5nOjppc29sYXRlZENvcHkoKSAmJgogCiBib29sIFN0cmluZzo6aXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKIHsKLSAgICAvLyBBdG9taWNTdHJpbmdzIGFyZSBu
b3Qgc2FmZSB0byBzZW5kIGJldHdlZW4gdGhyZWFkcyBhcyB+U3RyaW5nSW1wbCgpCisgICAgLy8g
QXRvbVN0cmluZ3MgYXJlIG5vdCBzYWZlIHRvIHNlbmQgYmV0d2VlbiB0aHJlYWRzLCBhcyB+U3Ry
aW5nSW1wbCgpCiAgICAgLy8gd2lsbCB0cnkgdG8gcmVtb3ZlIHRoZW0gZnJvbSB0aGUgd3Jvbmcg
QXRvbVN0cmluZ1RhYmxlLgogICAgIHJldHVybiBpc0VtcHR5KCkgfHwgKG1faW1wbC0+aGFzT25l
UmVmKCkgJiYgIW1faW1wbC0+aXNBdG9tKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjNzgxYzg2NjQ5
YzdjM2E1NDQxOGU5MDNmMjIxMDk2Njg3MTg3MjIzLi5iZjNjODVkZDhjYmNmNGM5YWJhNGFhYjMz
MDViNDdiMWUwZmRkMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTQ4NiwxNSArMTQ4NiwxNSBAQCBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmco
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1
bHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNO
dWxsKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVm
aW5lZChKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
SXNOdWxsKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5n
SXNOdWxsKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0Vt
cHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJp
bmdJc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEZsb2F0SXNOYU4oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbExvbmdMb25nKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0yMjAzLDE1ICsyMjAzLDE1IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KICAgICB7ICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3Ry
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmlu
ZyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWlj
U3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEF0
b21TdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdBbmREZWZhdWx0VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAg
IHsgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZh
dWx0VmFsdWUpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
QXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlKSwgKGludHB0cl90KSAoMCkg
fSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmlu
ZWQpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWlj
U3RyaW5nSXNOdWxsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEF0b21pY1N0cmluZ0lzTnVsbCksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtZXRob2RX
aXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAg
ICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1w
dHlTdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNW
U3RyaW5nSXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJtZXRob2RX
aXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcpLCAoaW50
cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1w
dHlTdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bVN0cmluZ0lzRW1wdHlTdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9k
V2l0aE9wdGlvbmFsRG91YmxlSXNOYU4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRG91YmxlSXNOYU4pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtNjQ0OCwyMCAr
NjQ0OCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaQogICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFVTVlN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmlu
ZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdCb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEF0b21TdHJpbmdCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkKCkgPyBudWxsQXRvbSgpIDogY29udmVydDxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01T
dHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyhXVEZNb3ZlKHN0cikpOworICAgIGltcGwubWV0
aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhXVEZNb3ZlKHN0cikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nIik7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmciKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5k
RGVmYXVsdFZhbHVlQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCkBAIC02NDgwLDIwICs2NDgwLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdBCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVl
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZUJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHkoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBz
dGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IEF0b21TdHJpbmcoImZvbyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUoV1RG
TW92ZShzdHIpKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZh
dWx0VmFsdWUoV1RGTW92ZShzdHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1
bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzTnVsbEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNjUyOCwyMCArNjUyOCwyMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZp
bmVkQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsQm9keShKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmluZ0FkYXB0b3I8
SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGwoV1RGTW92ZShzdHIpKTsK
KyAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc051bGwoV1RGTW92ZShzdHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbEJvZHk+KCpzdGF0ZSwgIm1ldGhv
ZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21TdHJpbmdJc051bGxCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxB
dG9tU3RyaW5nSXNOdWxsIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1w
dHlTdHJpbmdCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTY1NzYsMjAgKzY1NzYsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0
cmkKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyIpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nQm9keShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+
YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5QXRvbSgpIDogY29udmVydDxJRExBdG9t
U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlT
dHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJp
bmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNF
bXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxBdG9tU3RyaW5nSXNFbXB0eVN0cmluZyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxEb3VibGVJc05hTkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDA4NzJhOWY1MTMyYjY3ZGNhNjE0NGZlNmYzNDNkOGYyMmFj
NzM4MjguLjFlOThiY2QwYzU0NTg0MzEwNmJmYTQ5NDY0MDFiYjNhZTg5OTE1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTIy
MCwxNSArMjIwLDE1IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ci
IH07CiAgICAgdm9pZCAgICBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3MobG9uZyBub25PcHQsIG9wdGlvbmFsIGxvbmcgb3B0MSwgb3B0aW9uYWwgbG9uZyBvcHQyKTsK
ICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhvcHRpb25hbCBET01TdHJpbmcg
c3RyKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhvcHRpb25hbCBV
U1ZTdHJpbmcgc3RyKTsKLSAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
ZyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHN0cik7CisgICAgdm9pZCAgICBtZXRo
b2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nKG9wdGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJpbmcg
c3RyKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1
ZShvcHRpb25hbCBET01TdHJpbmcgc3RyID0gImZvbyIpOwotICAgIHZvaWQgICAgbWV0aG9kV2l0
aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlKG9wdGlvbmFsIFtBdG9tU3RyaW5n
XSBET01TdHJpbmcgc3RyID0gImZvbyIpOworICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFs
QXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZShvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5n
IHN0ciA9ICJmb28iKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVs
bChvcHRpb25hbCBET01TdHJpbmcgc3RyID0gbnVsbCk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChvcHRpb25hbCBET01TdHJpbmcgc3RyID0gInVuZGVm
aW5lZCIpOwotICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxs
KG9wdGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJpbmcgc3RyID0gbnVsbCk7CisgICAgdm9pZCAg
ICBtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKG9wdGlvbmFsIFtBdG9tU3RyaW5n
XSBET01TdHJpbmcgc3RyID0gbnVsbCk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc0VtcHR5U3RyaW5nKG9wdGlvbmFsIERPTVN0cmluZyBzdHIgPSAiIik7CiAgICAgdm9p
ZCAgICBtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKG9wdGlvbmFsIFVT
VlN0cmluZyBzdHIgPSAiIik7Ci0gICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmdJc0VtcHR5U3RyaW5nKG9wdGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJpbmcgc3RyID0g
IiIpOworICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJp
bmcob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzdHIgPSAiIik7CiAgICAgdm9pZCAg
ICBtZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91
YmxlIG51bWJlciA9IE5hTik7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxGbG9hdElz
TmFOKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBudW1iZXIgPSBOYU4pOwogICAgIHZvaWQg
ICAgbWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcob3B0aW9uYWwgbG9uZyBsb25nIG51bWJlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggN2FjYzU4Y2JmMTJlNGFhZjU3NGFkMzgyZTU1YTQ2
NDU4Y2JlYzlmNi4uOTk3YzRjMDM2N2RkNWQwZDY0NWQ1ZWRmNTFlZWM0YmZiMGMzMjEwNSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtMzY5LDcgKzM2OSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IGdldFByb3BlcnR5TmFtZUF0b21TdHJpbmcoQ1NTUHJvcGVydHlJRCBpZCkKIAogU3RyaW5nIGdl
dFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUlEIGlkKQogewotICAgIC8vIFdlIHNoYXJl
IHRoZSBTdHJpbmdJbXBsIHdpdGggdGhlIEF0b21pY1N0cmluZ3MuCisgICAgLy8gV2Ugc2hhcmUg
dGhlIFN0cmluZ0ltcGwgd2l0aCB0aGUgQXRvbVN0cmluZ3MuCiAgICAgcmV0dXJuIGdldFByb3Bl
cnR5TmFtZUF0b21TdHJpbmcoaWQpLnN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtldmFsdWVz
LnBsCmluZGV4IDcyMjRkZjUxMTQyNDY3OTVmZGU1YjY0OTkxYjJjNWMyNjljNzQxMjUuLmFiZGIx
ZWM2Mzc2YWVkNzc2Zjk0ZWYxYjQxNWVlZTk4MzEwYmY5YWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtldmFsdWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtldmFs
dWVzLnBsCkBAIC0xNDUsNyArMTQ1LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgZ2V0VmFsdWVOYW1l
QXRvbVN0cmluZyhDU1NWYWx1ZUlEIGlkKQogCiBTdHJpbmcgZ2V0VmFsdWVOYW1lU3RyaW5nKENT
U1ZhbHVlSUQgaWQpCiB7Ci0gICAgLy8gV2Ugc2hhcmUgdGhlIFN0cmluZ0ltcGwgd2l0aCB0aGUg
QXRvbWljU3RyaW5ncy4KKyAgICAvLyBXZSBzaGFyZSB0aGUgU3RyaW5nSW1wbCB3aXRoIHRoZSBB
dG9tU3RyaW5ncy4KICAgICByZXR1cm4gZ2V0VmFsdWVOYW1lQXRvbVN0cmluZyhpZCkuc3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjdkMTAz
NWI3NTg5NDY5YjE1NTAxNDQxMDgxMmQxYzExMmFhOTM0Yi4uNjUzMmJkYmIzMGU1YTI2NzFlODA0
YWVhNjkxZDViMjVlNTE0MTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAKQEAgLTMyNiw3ICszMjYsNyBAQCBBdG9tU3RyaW5nIEZvcm1LZXlHZW5lcmF0b3I6OmZvcm1L
ZXkoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYgY29udAogICAgIHJldHVy
biBtX2Zvcm1Ub0tleU1hcC5lbnN1cmUoZm9ybS5nZXQoKSwgW3RoaXMsICZmb3JtXSB7CiAgICAg
ICAgIGF1dG8gc2lnbmF0dXJlID0gZm9ybVNpZ25hdHVyZSgqZm9ybSk7CiAgICAgICAgIGF1dG8g
bmV4dEluZGV4ID0gbV9mb3JtU2lnbmF0dXJlVG9OZXh0SW5kZXhNYXAuYWRkKHNpZ25hdHVyZSwg
MCkuaXRlcmF0b3ItPnZhbHVlKys7Ci0gICAgICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRv
IGhhdmUgbWFrZUF0b21pY1N0cmluZyB0byB1c2UgaGVyZS4KKyAgICAgICAgLy8gRklYTUU6IFdv
dWxkIGJlIG5pY2UgdG8gaGF2ZSBtYWtlQXRvbVN0cmluZyB0byB1c2UgdG8gb3B0aW1pemUgdGhl
IGNhc2Ugd2hlcmUgdGhlIHN0cmluZyBhbHJlYWR5IGV4aXN0cy4KICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoc2lnbmF0dXJlLCAiICMiLCBuZXh0SW5kZXgpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA2YzhiYjJmYWI5NmU3OWRiNzU2ZjU0NWY3ZDU5ZWVmZDBlZDk5ODZhLi45ZGM4ZDk3NzQy
YzdiYjAzOGJlYzA1MTc3ZjI3NDg4NzhmNWQzOTcwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDYtMTggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgdGhlIHJlbWFp
bmluZyBiaXRzIG9mIHRoZSBBdG9taWNTdHJpbmcgdG8gQXRvbVN0cmluZyByZW5hbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODk5MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9kby13
ZWJjb3JlLXJlbmFtZTogUmVtb3ZlZCBhbHJlYWR5LWRvbmUgcmVuYW1lcy4KKwogMjAxOS0wNi0x
OCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpT
TG9jayBzaG91bGQgYmUgV2ViVGhyZWFkIGF3YXJlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2RvLXdlYmNvcmUtcmVuYW1lIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQppbmRl
eCA4OTk4Zjc2NzVlOGQ0Yzc1ZTNiZmMwMzYxODVhNjQzMDJjOTQyYmI3Li4wY2NkZGEyYTA2ZTEw
ZDk3YWQyM2Y5M2JkZGRmZWJmMzdiMmQxOTI4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2Rv
LXdlYmNvcmUtcmVuYW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKQEAg
LTEwMiw2NyArMTAyLDEwIEBAIHN1YiB3YW50ZWQKIG15ICRpc0RPTVR5cGVSZW5hbWUgPSAwOwog
bXkgJXJlbmFtZXMgPSAoCiAgICAgIyBSZW5hbWVzIGdvIGhlcmUgaW4gdGhlIGZvcm0gb2Y6Ci0g
ICAgIkF0b21pY1N0cmluZyIgPT4gIkF0b21TdHJpbmciLAotICAgICJBdG9taWNTdHJpbmdDcmVh
dGlvbkZyb21MaXRlcmFsIiA9PiAiQXRvbVN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWwiLAotICAg
ICJBdG9taWNTdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsVW5pcXVlbmVzcyIgPT4gIkF0b21TdHJp
bmdDcmVhdGlvbkZyb21MaXRlcmFsVW5pcXVlbmVzcyIsCi0gICAgIkF0b21pY1N0cmluZ0V4aXN0
aW5nSGFzaCIgPT4gIkF0b21TdHJpbmdFeGlzdGluZ0hhc2giLAotICAgICJBdG9taWNTdHJpbmdG
cm9tTGl0ZXJhbENhbm5vdE92ZXJmbG93IiA9PiAiQXRvbVN0cmluZ0Zyb21MaXRlcmFsQ2Fubm90
T3ZlcmZsb3ciLAotICAgICJBdG9taWNTdHJpbmdGcm9tTGl0ZXJhbE5vdEVtcHR5IiA9PiAiQXRv
bVN0cmluZ0Zyb21MaXRlcmFsTm90RW1wdHkiLAotICAgICJBdG9taWNTdHJpbmdIYXNoIiA9PiAi
QXRvbVN0cmluZ0hhc2giLAotICAgICJBdG9taWNTdHJpbmdJbXBsIiA9PiAiQXRvbVN0cmluZ0lt
cGwiLAotICAgICJBdG9taWNTdHJpbmdJbXBsQ0YiID0+ICJBdG9tU3RyaW5nSW1wbENGIiwKLSAg
ICAiQXRvbWljU3RyaW5nTnVtYmVyRG91YmxlIiA9PiAiQXRvbVN0cmluZ051bWJlckRvdWJsZSIs
Ci0gICAgIkF0b21pY1N0cmluZ1RhYmxlIiA9PiAiQXRvbVN0cmluZ1RhYmxlIiwKLSAgICAiQXRv
bWljU3RyaW5nVGFibGUiID0+ICJBdG9tU3RyaW5nVGFibGUiLAotICAgICJBdG9taWNTdHJpbmdU
YWJsZUxvY2tlciIgPT4gIkF0b21TdHJpbmdUYWJsZUxvY2tlciIsCi0gICAgIkF0b21pY1N0cmlu
Z19oIiA9PiAiQXRvbVN0cmluZ19oIiwKLSAgICAiSURMQXRvbWljU3RyaW5nQWRhcHRvciIgPT4g
IklETEF0b21TdHJpbmdBZGFwdG9yIiwKLSAgICAiSURMUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0
cmluZ0FkYXB0b3IiID0+ICJJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3IiLAot
ICAgICJSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nIiA9PiAiUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmciLAotICAgICJTdHJpbmdJbXBsTnVsbFN5bWJvbFRvQXRvbWljU3RyaW5nIiA9PiAi
U3RyaW5nSW1wbE51bGxTeW1ib2xUb0F0b21TdHJpbmciLAotICAgICJTdHJpbmdJbXBsU3RhdGlj
VG9BdG9taWNTdHJpbmciID0+ICJTdHJpbmdJbXBsU3RhdGljVG9BdG9tU3RyaW5nIiwKLSAgICAi
U3RyaW5nSW1wbFN5bWJvbFRvQXRvbWljU3RyaW5nIiA9PiAiU3RyaW5nSW1wbFN5bWJvbFRvQXRv
bVN0cmluZyIsCi0gICAgIlRvQXRvbWljU3RyaW5nIiA9PiAiVG9BdG9tU3RyaW5nIiwKLSAgICAi
VG9BdG9taWNTdHJpbmdPbkVtcHR5IiA9PiAiVG9BdG9tU3RyaW5nT25FbXB0eSIsCi0gICAgIlRv
a2VuQXRvbWljU3RyaW5nSW5pdGlhbGl6ZXIiID0+ICJUb2tlbkF0b21TdHJpbmdJbml0aWFsaXpl
ciIsCi0gICAgIldURkF0b21pY1N0cmluZ1ByaW50ZXIiID0+ICJXVEZBdG9tU3RyaW5nUHJpbnRl
ciIsCi0gICAgIldURkF0b21pY1N0cmluZ19TdW1tYXJ5UHJvdmlkZXIiID0+ICJXVEZBdG9tU3Ry
aW5nX1N1bW1hcnlQcm92aWRlciIsCi0gICAgImF0b21pY1N0cmluZyIgPT4gImF0b21TdHJpbmci
LAotICAgICJhdG9taWNTdHJpbmcxIiA9PiAiYXRvbVN0cmluZzEiLAotICAgICJhdG9taWNTdHJp
bmcyIiA9PiAiYXRvbVN0cmluZzIiLAotICAgICJhdG9taWNTdHJpbmdUYWJsZSIgPT4gImF0b21T
dHJpbmdUYWJsZSIsCi0gICAgImF0b21pY1N0cmluZ1dpdGhUZW1wbGF0ZSIgPT4gImF0b21TdHJp
bmdXaXRoVGVtcGxhdGUiLAotICAgICJhdG9taWNTdHJpbmdzIiA9PiAiYXRvbVN0cmluZ3MiLAot
ICAgICJjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSIgPT4gImNoZWNrQ3VycmVudEF0b21T
dHJpbmdUYWJsZSIsCi0gICAgImV4aXN0aW5nQXRvbWljU3RyaW5nIiA9PiAiZXhpc3RpbmdBdG9t
U3RyaW5nIiwKLSAgICAiZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlIiA9PiAiZXhpc3Rp
bmdFbnRyeUF0b21TdHJpbmdUYWJsZSIsCi0gICAgImdldFByb3BlcnR5TmFtZUF0b21pY1N0cmlu
ZyIgPT4gImdldFByb3BlcnR5TmFtZUF0b21TdHJpbmciLAotICAgICJnZXRWYWx1ZU5hbWVBdG9t
aWNTdHJpbmciID0+ICJnZXRWYWx1ZU5hbWVBdG9tU3RyaW5nIiwKLSAgICAiaXNBdG9taWMiID0+
ICJpc0F0b20iLAotICAgICJpc0F0b21pY1N0cmluZyIgPT4gImlzQXRvbVN0cmluZyIsCi0gICAg
ImlzSW5BdG9taWNTdHJpbmdUYWJsZSIgPT4gImlzSW5BdG9tU3RyaW5nVGFibGUiLAotICAgICJt
X2F0b21pY1N0cmluZ1RhYmxlIiA9PiAibV9hdG9tU3RyaW5nVGFibGUiLAotICAgICJtX2N1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm1fY3VycmVudEF0b21TdHJpbmdUYWJsZSIsCi0gICAg
Im1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIiA9PiAibV9kZWZhdWx0QXRvbVN0cmluZ1RhYmxl
IiwKLSAgICAibV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlIiA9PiAibV9lbnRyeUF0b21TdHJpbmdU
YWJsZSIsCi0gICAgIm9sZEF0b21pY1N0cmluZ1RhYmxlIiA9PiAib2xkQXRvbVN0cmluZ1RhYmxl
IiwKLSAgICAicHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmciID0+ICJwcm9wZXJ0eU5hbWVUb0F0
b21TdHJpbmciLAotICAgICJyZXNvbHZlUm9wZVRvQXRvbWljU3RyaW5nIiA9PiAicmVzb2x2ZVJv
cGVUb0F0b21TdHJpbmciLAotICAgICJyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9taWNTdHJpbmci
ID0+ICJyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9tU3RyaW5nIiwKLSAgICAic2V0Q3VycmVudEF0
b21pY1N0cmluZ1RhYmxlIiA9PiAic2V0Q3VycmVudEF0b21TdHJpbmdUYWJsZSIsCi0gICAgInNo
b3VsZFVzZUF0b21pY1N0cmluZyIgPT4gInNob3VsZFVzZUF0b21TdHJpbmciLAotICAgICJ0ZXN0
QXRvbWljU3RyaW5nTnVtYmVyIiA9PiAidGVzdEF0b21TdHJpbmdOdW1iZXIiLAotICAgICJ0b0F0
b21pY1N0cmluZyIgPT4gInRvQXRvbVN0cmluZyIsCi0gICAgInRvRXhpc3RpbmdBdG9taWNTdHJp
bmciID0+ICJ0b0V4aXN0aW5nQXRvbVN0cmluZyIsCi0gICAgInVzZUF0b21pY1N0cmluZyIgPT4g
InVzZUF0b21TdHJpbmciLAorICAgICJmbGFnSXNBdG9taWMiID0+ICJmbGFnSXNBdG9tIiwKICk7
CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJlID0gKAotICAgICJzZXRET01F
eGNlcHRpb24iID0+ICJwcm9wYWdhdGVFeGNlcHRpb24iLAotICAgICJzZXRET01FeGNlcHRpb25T
bG93IiA9PiAicHJvcGFnYXRlRXhjZXB0aW9uU2xvd1BhdGgiLAotCi0gICAgIlBhc3NSZWZQdHIi
ID0+ICJEZXByZWNhdGVkUGFzc1JlZlB0ciIsCi0KICAgICAiSFRNTFBsdWdJbkltYWdlRWxlbWVu
dCIgPT4gIkhUTUxFbWJlZGRlZE9iamVjdEVsZW1lbnQiLAogICAgICJpc1BsdWdJbkltYWdlRWxl
bWVudCIgPT4gImlzRW1iZWRkZWRPYmplY3RFbGVtZW50IiwKICAgICAiaXNIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50IiA9PiAiaXNIVE1MRW1iZWRkZWRPYmplY3RFbGVtZW50IiwKQEAgLTE3Myw4ICsx
MTYsNiBAQCBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVyZSA9ICgKICAgICAiRGF0
ZUluc3RhbmNlIiA9PiAiSlNEYXRlIiwKICAgICAiRXJyb3JJbnN0YW5jZSIgPT4gIkpTRXJyb3Ii
LAogCi0gICAgIlRyZWVTaGFyZWQiID0+ICJUcmVlUmVmQ291bnRlZCIsCi0KICAgICAiU3RyaW5n
SW1wbCIgPT4gIlNoYXJlZFN0cmluZyIsCiAKICAgICAiUmVuZGVyVmlldyIgPT4gIlJlbmRlclZp
ZXdwb3J0IiwKQEAgLTE4NywxMCArMTI4LDYgQEAgbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JU
aGVGdXR1cmUgPSAoCiAgICAgInJ1bnRpbWVfb2JqZWN0IiA9PiAiQnJpZGdlZE9iamVjdCIsCiAg
ICAgIm9iamNfcnVudGltZSIgPT4gIk9iakNCcmlkZ2UiLAogCi0gICAgIldURl9VTklDT0RFX0gi
ID0+ICJVbmljb2RlX2giLAotICAgICJXVEZfVU5JQ09ERV9JQ1VfSCIgPT4gIlVuaWNvZGVJQ1Vf
aCIsCi0gICAgIlVuaWNvZGVJY3UiID0+ICJVbmljb2RlSUNVIiwKLQogICAgICJMZWdhY3lXZWJB
cmNoaXZlIiA9PiAiV2ViQXJjaGl2ZSIsCiAgICAgIkxlZ2FjeVdlYkFyY2hpdmVfaCIgPT4gIldl
YkFyY2hpdmVfaCIsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZjcwMzAyZTVhZjc5M2U4MDc2Nzg4OTM1Njk4ZWQ2MTZk
ZTUzNmQwLi4yN2JiNGU1ZDM4ZjExMzA5ODRlMTk0NWVjYTU4MzJjM2U2OWYzYmRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTktMDYtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFRpZHkgdXAgdGhlIHJlbWFpbmluZyBiaXRzIG9mIHRoZSBBdG9taWNTdHJp
bmcgdG8gQXRvbVN0cmluZyByZW5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICoganMvZG9wZXktcm9wZS13aXRoLTE2LWJpdC1wcm9wZXJ0eW5hbWUt
ZXhwZWN0ZWQudHh0OiBSZW5hbWUgdG8gQXRvbVN0cmluZy4KKyAgICAgICAgKiBqcy9kb3BleS1y
b3BlLXdpdGgtMTYtYml0LXByb3BlcnR5bmFtZS5odG1sOiBEaXR0by4KKwogMjAxOS0wNi0xOCAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIFN1cHBv
cnQgbWF0cmljZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvcGV5LXJvcGUtd2l0aC0x
Ni1iaXQtcHJvcGVydHluYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvcGV5LXJv
cGUtd2l0aC0xNi1iaXQtcHJvcGVydHluYW1lLWV4cGVjdGVkLnR4dAppbmRleCA2ZjI1ZjE5N2Jk
NTk5M2Y0M2Q2ODRhYTI3OGRhY2M4NjhjYzYxMGU0Li5lYjcwOGJjOWJjODRjNWI2ZWZmMzc5MjVj
OWFlMjE4ZjA4ZWRhNTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb3BleS1yb3BlLXdp
dGgtMTYtYml0LXByb3BlcnR5bmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9wZXktcm9wZS13aXRoLTE2LWJpdC1wcm9wZXJ0eW5hbWUtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAotVGVzdCB0aGF0IGEgMTYtYml0IEF0b21pY1N0cmluZyBjb250YWluaW5nIG9ubHkg
OC1iaXQgY2hhcmFjdGVycyBkb2Vzbid0IGNvbmZ1c2UgdGhlIEpJVCBpbnRvIHRoaW5raW5nIGl0
J3MgYW4gOC1iaXQgQXRvbWljU3RyaW5nLgorVGVzdCB0aGF0IGEgMTYtYml0IEF0b21TdHJpbmcg
Y29udGFpbmluZyBvbmx5IDgtYml0IGNoYXJhY3RlcnMgZG9lc24ndCBjb25mdXNlIHRoZSBKSVQg
aW50byB0aGlua2luZyBpdCdzIGFuIDgtYml0IEF0b21TdHJpbmcuCiAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9wZXktcm9wZS13aXRo
LTE2LWJpdC1wcm9wZXJ0eW5hbWUuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvcGV5LXJvcGUtd2l0
aC0xNi1iaXQtcHJvcGVydHluYW1lLmh0bWwKaW5kZXggZDk0YjRiNTk5OTg1MDRmM2FlMDFiNzhh
ODJmY2Y3ZjllNWRjM2RjZi4uMWIyZDRmMGZlYjc1ZGNmODc3YWU3ZjhiMGE5NmY5MjUxYzc4ZTAy
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9wZXktcm9wZS13aXRoLTE2LWJpdC1wcm9w
ZXJ0eW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb3BleS1yb3BlLXdpdGgtMTYtYml0
LXByb3BlcnR5bmFtZS5odG1sCkBAIC03LDE0ICs3LDE0IEBACiA8Ym9keT4KIDxzY3JpcHQ+CiAK
LWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYSAxNi1iaXQgQXRvbWljU3RyaW5nIGNvbnRhaW5pbmcg
b25seSA4LWJpdCBjaGFyYWN0ZXJzIGRvZXNuJ3QgY29uZnVzZSB0aGUgSklUIGludG8gdGhpbmtp
bmcgaXQncyBhbiA4LWJpdCBBdG9taWNTdHJpbmcuIik7CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0
IGEgMTYtYml0IEF0b21TdHJpbmcgY29udGFpbmluZyBvbmx5IDgtYml0IGNoYXJhY3RlcnMgZG9l
c24ndCBjb25mdXNlIHRoZSBKSVQgaW50byB0aGlua2luZyBpdCdzIGFuIDgtYml0IEF0b21TdHJp
bmcuIik7CiAKIG8gPSB7fTsKIAogc3RyaW5nV2l0aEVtb2ppID0gInplc3Twn5iQIjsKIHZhciB0
ZXN0MTZiaXQgPSBzdHJpbmdXaXRoRW1vamkuc3Vic3RyaW5nKDAsIDQpOwogCi1vW3Rlc3QxNmJp
dF0gPSAidGhpcyBtYWtlcyBpdCBhbiBBdG9taWNTdHJpbmciOworb1t0ZXN0MTZiaXRdID0gInRo
aXMgbWFrZXMgaXQgYW4gQXRvbVN0cmluZyI7CiAKIGdsb2JhbFJvcGUgPSAiIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372427</attachid>
            <date>2019-06-18 21:26:10 -0700</date>
            <delta_ts>2019-06-19 10:09:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198990-20190618212609.patch</filename>
            <type>text/plain</type>
            <size>48951</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzNkNGU0YjA1YWQ5Y2JiNzVjOWI1YWM3NWQ4YjEzMjI1ZGY0OGIzLi45Y2Y4ODA0M2FlMjM1MGJj
NTA1NzkxZjJlZWNjYjJlN2E0NDU5MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOS0wNi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlkeSB1cCB0aGUgcmVtYWluaW5nIGJpdHMgb2YgdGhlIEF0b21pY1N0cmluZyB0
byBBdG9tU3RyaW5nIHJlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKTog
VXNlIGZsYWdJc0F0b20uCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogRGl0dG8uCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogRGl0dG8uCisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVIYXNPd25Qcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdJZGVudCk6IERpdHRvLgorCiAyMDE5LTA2LTE4ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNMb2NrIHNo
b3VsZCBiZSBXZWJUaHJlYWQgYXdhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDQ5MzVjNDVjOGZmYjgzMWFmMmRiMGQwOTI0
ZGQzNzFkMzc0MTUzZS4uOWY3MGIyOGRhNGRkYTc0ZTc4ZjViZjMxNGMwZGRhYTA2NjdlMGZkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0wNi0xOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVGlkeSB1cCB0aGUgcmVtYWluaW5nIGJpdHMgb2YgdGhlIEF0b21p
Y1N0cmluZyB0byBBdG9tU3RyaW5nIHJlbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6IFR3ZWFrIGZvcm1h
dHRpbmcgYSBiaXQuIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMC4KKyAgICAgICAgUmVtb3ZlZCAi
dXNpbmcgQXRvbWljU3RyaW5nID0gQXRvbVN0cmluZyIuCisgICAgICAgICogd3RmL3RleHQvQXRv
bVN0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjo6dHJhbnNs
YXRlKTogVXNlIHNldElzQXRvbSBpbnN0ZWFkIG9mIHNldElzQXRvbWljLgorICAgICAgICAoV1RG
OjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6IERpdHRvLgorICAgICAgICAoV1RG
OjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOjp0cmFuc2xhdGUpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjo6dHJhbnNsYXRlKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjo6dHJhbnNsYXRlKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OkJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjo6dHJhbnNsYXRlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkF0b21TdHJpbmdJbXBsOjphZGRTbG93Q2FzZSk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpBdG9tU3RyaW5nSW1wbDo6bG9va1VwU2xvd0Nhc2UpOiBVcGRhdGVkIGFz
c2VydGlvbiBtZXNzYWdlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaDog
VHdlYWtlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWRkLgorICAgICAgICBVcGRhdGVkIGNvbW1l
bnRzIHRvIHNheSBBdG9tU3RyaW5nLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZ1Rh
YmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZ1RhYmxlOjp+QXRvbVN0cmluZ1RhYmxl
KTogVXNlIHNldElzQXRvbS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDogVXBk
YXRlZCBuYW1lIG9mIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tLgorICAgICAgICByZW5hbWVk
IHRvIGZsYWdJc0F0b20gYW5kIHNldElzQXRvbS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhy
ZWFkIGNvbnN0KTogVXBkYXRlZCBjb21tZW50LgorCiAyMDE5LTA2LTE4ICBLZW5uZXRoIFJ1c3Nl
bGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBwcmVsaW1pbmFyeSBBTkdMRSBi
YWNrZW5kIHRvIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNTcxYjU4YTgwZjNlYmRkOTRkN2JjMjc2
MDY0N2NjZDE1ZGFjNzVmLi5lMGVhZjZmZTIxNmY3NmYzZGVhOWZlZjBmYzIyOWNiN2IzMDI2YjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDYtMTggIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgdGhlIHJlbWFpbmluZyBiaXRzIG9m
IHRoZSBBdG9taWNTdHJpbmcgdG8gQXRvbVN0cmluZyByZW5hbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODk5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHA6IFVwZGF0ZWQgbmFtZXMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsOiBEaXR0by4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDog
VXBkYXRlZCBjb21tZW50LgorICAgICAgICAqIGNzcy9tYWtldmFsdWVzLnBsOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1L
ZXlHZW5lcmF0b3I6OmZvcm1LZXkpOiBEaXR0by4KKwogMjAxOS0wNi0xOCAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIFN1cHBvcnQgbWF0cmljZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggMjEzNWM4ZTYzNjM5MTAwYWYwM2YyMjY0ODU5MGViNTM3MDllYzNkNy4uMWYzNjM4ZDIxNDdi
OWY2MGQ3ODRmMDhmYmM5NDU1NjA3YzE4MGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjgxLDcgKzEwMjgxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShFZGdl
IGVkZ2UsIEdQUlJlZyBzdHJpbmcKICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoc3RyaW5nKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDMyKAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Olplcm8sCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJ
c0F0b20oKSkpKTsKICAgICAKICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3Ry
aW5nSWRlbnQgfCB+U3BlY1N0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA3NWYxMDJiYzRmZGM2MzMy
OWYyZGRmZGU4MTlkZTA0NjA2NDQ2NjhlLi5iM2QxZDFkZDYxMWUxNjdmMWU0Mjg0M2Y1OGZhNGM2
MzhmZTlmM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCht
X2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKGltcGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6
OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
QEAgLTM5MDksNyArMzkwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJp
bmdJbXBsKGltcGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFu
Y2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6Zmxh
Z0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKSk7CiAgICAgICAgICAgICBhdXRvIGhhc1Vu
aXF1ZWRJbXBsID0gbV9qaXQuanVtcCgpOwogCiAgICAgICAgICAgICBpc05vdFN0cmluZy5saW5r
KCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBmM2EwYjJiYzZmY2YzYzI0NDI1YWM2ZDNhYTMwZGEyNjViOTRiNzUw
Li45ZDBhZTBhZjE1MGI4MDljNzE0MWNjNjBiYTZmYmU2MjkwMmNjZjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NjYs
NyArNDQ2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKGlt
cGxHUFIpKTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWlj
KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJp
bmdJbXBsOjpmbGFnSXNBdG9tKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKQEAgLTQ0NzYsNyArNDQ3Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmFw
cGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKGltcGxHUFIpKTsKICAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGltcGxHUFIsIFN0cmlu
Z0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbWljKCkpKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkp
KSk7CiAgICAgICAgICAgICBhdXRvIGhhc1VuaXF1ZWRJbXBsID0gbV9qaXQuanVtcCgpOwogCiAg
ICAgICAgICAgICBpc05vdFN0cmluZy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTUzOWIwNTQ0ZGM2NzBhMmQ0NTI1
OWI4YmFkN2Y4YmQ3MThjMWQ4OC4uYzRhNjcwNWVjYWMwNzE1OTY2ODEwNGUwNGJhNGEwY2YxZmFm
ZDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTA0NjMsNyArMTA0NjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm9uRW1wdHlTdHJpbmcsIGlzQXRvbVN0cmluZyk7CiAgICAg
ICAgICAgICB1bmlxdWVkU3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoa2V5QXNWYWx1ZSwgbV9o
ZWFwcy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgICAgICBMVmFsdWUgaXNOb3RBdG9taWMgPSBt
X291dC50ZXN0SXNaZXJvMzIobV9vdXQubG9hZDMyKHVuaXF1ZWRTdHJpbmdJbXBsLCBtX2hlYXBz
LlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpm
bGFnSXNBdG9taWMoKSkpOworICAgICAgICAgICAgTFZhbHVlIGlzTm90QXRvbWljID0gbV9vdXQu
dGVzdElzWmVybzMyKG1fb3V0LmxvYWQzMih1bmlxdWVkU3RyaW5nSW1wbCwgbV9oZWFwcy5TdHJp
bmdJbXBsX2hhc2hBbmRGbGFncyksIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lz
QXRvbSgpKSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RBdG9taWMsIHJhcmVseShz
bG93Q2FzZSksIHVzdWFsbHkoaXNBdG9tU3RyaW5nKSk7CiAKICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGlzQXRvbVN0cmluZywgc2xvd0Nhc2UpOwpAQCAtMTA0OTUsNyArMTA0OTUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb25FbXB0eVN0cmluZywgbm90
U3RyaW5nQ2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgaW1wbEZyb21TdHJpbmcgPSBtX291dC5s
b2FkUHRyKGtleUFzVmFsdWUsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwogICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc3RyaW5nUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGltcGxGcm9tU3RyaW5n
KTsKLSAgICAgICAgICAgIExWYWx1ZSBpc05vdEF0b21pYyA9IG1fb3V0LnRlc3RJc1plcm8zMiht
X291dC5sb2FkMzIoaW1wbEZyb21TdHJpbmcsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5kRmxh
Z3MpLCBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSk7CisgICAg
ICAgICAgICBMVmFsdWUgaXNOb3RBdG9taWMgPSBtX291dC50ZXN0SXNaZXJvMzIobV9vdXQubG9h
ZDMyKGltcGxGcm9tU3RyaW5nLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwgbV9v
dXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9tKCkpKTsKICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChpc05vdEF0b21pYywgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNVbmlx
dWVkU3RyaW5nSW1wbCkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdD
YXNlLCBpc1N5bWJvbENhc2UpOwpAQCAtMTY0MjEsNyArMTY0MjEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKHN0cmluZyksIGVkZ2Uubm9kZSgpLAogICAg
ICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQz
MihzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKLSAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b21pYygpKSkpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lzQXRvbSgp
KSkpOwogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nSWRlbnQg
fCB+U3BlY1N0cmluZyk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRl
eCA5ZDQzZTFmYTcyODRlYmExNGE3YzNiY2RkZDMzOTRlNjNlOTZlYmE3Li4zOGMzMTEwMDcyYjI0
MjU1NjBlMmRjNjZiZjg4ZjM3MmU1MTkyNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTkwLDcgKzkw
LDggQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmc7IH07CiAKLSAgICBBdG9tU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KKyAgICAv
LyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoaXMgaXNuJ3QgYSBTeW1ib2xJbXBsIHJhdGhlciB0
aGFuIGFuIEF0b21TdHJpbmdJbXBsPworICAgIEF0b21TdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihtX3N0cmluZy5pbXBsKCkpOyB9
CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzOEJpdCgpOyB9
CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
Y2hhcmFjdGVyczgoKTsgfQpAQCAtMTMyLDkgKzEzMyw5IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNl
KCkgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy50b0ludChvayk7IH0KLSAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy50b0RvdWJsZShvayk7IH0KLSAgICBmbG9hdCB0b0Zsb2F0
KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0KKyAg
ICBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50
b0ludChvayk7IH0KKyAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy50b0RvdWJsZShvayk7IH0KKyAgICBmbG9hdCB0b0Zsb2F0KGJv
b2wqIG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0K
ICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5wZXJj
ZW50YWdlKHApOyB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmlzTnVsbCgpOyB9CkBAIC0xNDUsOCArMTQ2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZmRl
ZiBfX09CSkNfXwotICAgIEF0b21TdHJpbmcoTlNTdHJpbmcqKTsKLSAgICBvcGVyYXRvciBOU1N0
cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIEF0b21TdHJpbmcoTlNTdHJp
bmcgKik7CisgICAgb3BlcmF0b3IgTlNTdHJpbmcgKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpICYmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVN
ID49IDU5CkBAIC0xNzcsOSArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7
CiB9OwogCi11c2luZyBBdG9taWNTdHJpbmcgPSBBdG9tU3RyaW5nOwotCi1zdGF0aWNfYXNzZXJ0
KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJpbmcgYW5kIFN0
cmluZyBtdXN0IGJlIHNhbWUgc2l6ZSEiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEF0b21TdHJp
bmcpID09IHNpemVvZihTdHJpbmcpLCAiQXRvbVN0cmluZyBhbmQgU3RyaW5nIG11c3QgYmUgdGhl
IHNhbWUgc2l6ZSEiKTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5n
JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsg
fQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBMQ2hhciopOwpAQCAt
MjgxLDcgKzI4MCw3IEBAIGlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKENGU3RyaW5nUmVm
IHN0cmluZykKIAogI2lmZGVmIF9fT0JKQ19fCiAKLWlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3Ry
aW5nKE5TU3RyaW5nKiBzdHJpbmcpCitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhOU1N0
cmluZyAqc3RyaW5nKQogICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZCgoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpc3RyaW5nKSkKIHsKIH0KQEAgLTM2MCw3ICszNTksNiBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRvbVN0cmluZz4gewog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6QXRvbVN0cmluZzsKLXVzaW5nIFdURjo6
QXRvbWljU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsQXRvbTsKIHVzaW5nIFdURjo6ZW1wdHlBdG9t
OwogdXNpbmcgV1RGOjpzdGFyQXRvbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbVN0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5j
cHAKaW5kZXggODdhNjRlZWFiMjVhYTc0ZGMwYjkxOTA3YjJjODQ0OGI5NWQxZmM5Yy4uMjY5Y2Ji
Y2IyZTA3NTcyZjJjMDIyM2YzYWMzOTcwMDMwODMzYWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nSW1wbC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgQ1N0cmluZ1RyYW5z
bGF0b3IgewogICAgIHsKICAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlKGNo
YXJhY3RlcnMpLmxlYWtSZWYoKTsKICAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0g
ICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNl
dElzQXRvbSh0cnVlKTsKICAgICB9CiB9OwogCkBAIC0xNTksNyArMTU5LDcgQEAgc3RydWN0IFVD
aGFyQnVmZmVyVHJhbnNsYXRvciB7CiAgICAgewogICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJ
bXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCkubGVh
a1JlZigpOwogICAgICAgICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKLSAgICAgICAgbG9jYXRp
b24tPnNldElzQXRvbWljKHRydWUpOworICAgICAgICBsb2NhdGlvbi0+c2V0SXNBdG9tKHRydWUp
OwogICAgIH0KIH07CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdHJ1Y3QgSGFzaEFuZFVURjhDaGFy
YWN0ZXJzVHJhbnNsYXRvciB7CiAKICAgICAgICAgbG9jYXRpb24gPSAmbmV3U3RyaW5nLmxlYWtS
ZWYoKTsKICAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9u
LT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbSh0cnVlKTsK
ICAgICB9CiB9OwogCkBAIC0yNzAsNyArMjcwLDcgQEAgc3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0
b3IgewogICAgIHsKICAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3Ry
aW5nU2hhcmluZ0ltcGwoKmJ1ZmZlci5iYXNlU3RyaW5nLCBidWZmZXIuc3RhcnQsIGJ1ZmZlci5s
ZW5ndGgpLmxlYWtSZWYoKTsKICAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAg
ICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNldElz
QXRvbSh0cnVlKTsKICAgICB9CiB9OwogCkBAIC0zMzUsNyArMzM1LDcgQEAgc3RydWN0IExDaGFy
QnVmZmVyVHJhbnNsYXRvciB7CiAgICAgewogICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJbXBs
OjpjcmVhdGUoYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpLmxlYWtSZWYoKTsKICAgICAgICAg
bG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0
cnVlKTsKKyAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbSh0cnVlKTsKICAgICB9CiB9OwogCkBA
IC0zNTYsNyArMzU2LDcgQEAgc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvciB7
CiAgICAgewogICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCkubGVha1JlZigpOwogICAgICAgICBsb2Nh
dGlvbi0+c2V0SGFzaChoYXNoKTsKLSAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbWljKHRydWUp
OworICAgICAgICBsb2NhdGlvbi0+c2V0SXNBdG9tKHRydWUpOwogICAgIH0KIH07CiAKQEAgLTQ0
NCw3ICs0NDQsNyBAQCBSZWY8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGRTbG93
Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgQVNTRVJUKCphZGRSZXN1bHQuaXRlcmF0b3IgPT0gJnN0cmluZyk7Ci0gICAg
ICAgIHN0cmluZy5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICAgICAgc3RyaW5nLnNldElzQXRvbSh0
cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4o
KmFkZFJlc3VsdC5pdGVyYXRvcik7CkBAIC00NzQsNyArNDc0LDcgQEAgUmVmPEF0b21TdHJpbmdJ
bXBsPiBBdG9tU3RyaW5nSW1wbDo6YWRkU2xvd0Nhc2UoQXRvbVN0cmluZ1RhYmxlJiBzdHJpbmdU
YWJsZSwgU3QKIAogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NF
UlQoKmFkZFJlc3VsdC5pdGVyYXRvciA9PSAmc3RyaW5nKTsKLSAgICAgICAgc3RyaW5nLnNldElz
QXRvbWljKHRydWUpOworICAgICAgICBzdHJpbmcuc2V0SXNBdG9tKHRydWUpOwogICAgIH0KIAog
ICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPigqYWRkUmVzdWx0Lml0ZXJh
dG9yKTsKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIEF0b21TdHJpbmdJbXBsOjpyZW1vdmUoQXRv
bVN0cmluZ0ltcGwqIHN0cmluZykKIAogUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5n
SW1wbDo6bG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogewotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b20oKSwgIkF0b21pY1N0cmluZ0ltcGxzIHNob3VsZCBy
ZXR1cm4gZnJvbSB0aGUgZmFzdCBjYXNlLiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZy5pc0F0b20oKSwgIkF0b21TdHJpbmdJbXBsIG9iamVjdHMgc2hvdWxkIHJldHVybiBmcm9t
IHRoZSBmYXN0IGNhc2UuIik7CiAKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKaW5kZXggMzQ2NmE5MWJmYWJiMjUwOTk4
MjZlYzdlODAzMzM5MWE1YjU0MTljZC4uNmRmY2M1MDk2NzkwYzUxMjFiNTI3ZmVkNTlmMmY4M2I4
YTQ0NWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewog
ICAgICAgICBpZiAoIXN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
U3RyaW5nSW1wbCo+KHN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIGFkZCgqc3RyaW5nKTsKICAgICB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChjb25zdCBTdGF0aWNTdHJpbmdJbXBsKik7
CkBAIC0xMDIsMjAgKzEwMiwxOSBAQCBwcml2YXRlOgogfTsKIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKLS8vIEF0b21pY1N0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdp
bGwgQVNTRVJUCi0vLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3Rl
bmN5Ci0vLyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCi0vLyBXZSBk
b24ndCBjdXJyZW50bHkgaGF2ZSBhbnkgd2F5IHRvIGRldGVjdCB0aGF0IGNhc2UKLS8vIHNvIHdl
IGlnbm9yZSB0aGUgY29uc2lzdGVuY3kgY2hlY2sgZm9yIGFsbCBBdG9taWNTdHJpbmdJbXBscyou
Ci10ZW1wbGF0ZTw+IHN0cnVjdAotVmFsdWVDaGVjazxBdG9tU3RyaW5nSW1wbCo+IHsKKworLy8g
QXRvbVN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJU
IGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3ksCisvLyBhcyB0
aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuIFdlIGRvbid0IGN1cnJlbnRseSBo
YXZlIGFueSB3YXkgdG8gZGV0ZWN0IHRoYXQgY2FzZSwgc28gd2UgZG9uJ3QKKy8vIGRvIGFueSBj
b25zaXN0ZW5jeSBjaGVjayBmb3IgQXRvbVN0cmluZ0ltcGwqLgorCit0ZW1wbGF0ZTw+IHN0cnVj
dCBWYWx1ZUNoZWNrPEF0b21TdHJpbmdJbXBsKj4gewogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29u
c2lzdGVuY3koY29uc3QgQXRvbVN0cmluZ0ltcGwqKSB7IH0KIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0Ci1WYWx1ZUNoZWNrPGNvbnN0IEF0b21TdHJpbmdJbXBsKj4gewordGVtcGxhdGU8PiBzdHJ1
Y3QgVmFsdWVDaGVjazxjb25zdCBBdG9tU3RyaW5nSW1wbCo+IHsKICAgICBzdGF0aWMgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KGNvbnN0IEF0b21TdHJpbmdJbXBsKikgeyB9CiB9OworCiAjZW5kaWYK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nVGFibGUuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nVGFibGUuY3BwCmluZGV4IDk4MTJhYzIy
OWY1ZDRjNGE2OTMzZTE5ZjMxY2VkYmE3NmQ5OGNiMmQuLmMxMzgyNTI4ZDEwOTA5MDVmNDkxMTcx
ZDIzOWI1MmQzY2NhMTlmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZ1RhYmxlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiBBdG9tU3RyaW5nVGFibGU6On5B
dG9tU3RyaW5nVGFibGUoKQogewogICAgIGZvciAoYXV0byogc3RyaW5nIDogbV90YWJsZSkKLSAg
ICAgICAgc3RyaW5nLT5zZXRJc0F0b21pYyhmYWxzZSk7CisgICAgICAgIHN0cmluZy0+c2V0SXNB
dG9tKGZhbHNlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBkNzljNTU3
OTY2Y2E1ZDE1YTQzMGUzYmFhODA1YmI5NWQ0YjdkZTA2Li5jMGFkZDExYmZmZGY0ZDIwMjdjOTNl
ZDBmODczMWJjZjY4MTkxODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTk3LDE2
ICsxOTcsMTYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWNfYXNzZXJ0KHNfZmxhZ0NvdW50IDw9IFN0
cmluZ0hhc2hlcjo6ZmxhZ0NvdW50LCAiU3RyaW5nSGFzaGVyIHJlc2VydmVzIGVub3VnaCBiaXRz
IGZvciBTdHJpbmdJbXBsIGZsYWdzIik7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNp
Z25lZCBzX2ZsYWdTdHJpbmdLaW5kQ291bnQgPSA0OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljID0gMXUgPDwgKHNfZmxh
Z1N0cmluZ0tpbmRDb3VudCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBz
X2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbSA9IDF1IDw8IChzX2ZsYWdTdHJpbmdLaW5kQ291bnQp
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZ1N0cmluZ0tp
bmRJc1N5bWJvbCA9IDF1IDw8IChzX2ZsYWdTdHJpbmdLaW5kQ291bnQgKyAxKTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tTdHJpbmdLaW5kID0gc19oYXNo
RmxhZ1N0cmluZ0tpbmRJc0F0b21pYyB8IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrU3RyaW5nS2luZCA9
IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9tIHwgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJv
bDsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBv
cnRDb3N0ID0gMXUgPDwgMzsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHNf
aGFzaEZsYWc4Qml0QnVmZmVyID0gMXUgPDwgMjsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IHVuc2lnbmVkIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXAgPSAoMXUgPDwgMCkgfCAoMXUgPDwg
MSk7CiAKICAgICBlbnVtIFN0cmluZ0tpbmQgewogICAgICAgICBTdHJpbmdOb3JtYWwgPSAwdSwg
Ly8gbm9uLXN5bWJvbCwgbm9uLWF0b21pYwotICAgICAgICBTdHJpbmdBdG9taWMgPSBzX2hhc2hG
bGFnU3RyaW5nS2luZElzQXRvbWljLCAvLyBub24tc3ltYm9sLCBhdG9taWMKKyAgICAgICAgU3Ry
aW5nQXRvbWljID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b20sIC8vIG5vbi1zeW1ib2wsIGF0
b21pYwogICAgICAgICBTdHJpbmdTeW1ib2wgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9s
LCAvLyBzeW1ib2wsIG5vbi1hdG9taWMKICAgICB9OwogCkBAIC0yNjUsNyArMjY1LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdzT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdzKTsgfQogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgZmxhZ0lzOEJpdCgpIHsgcmV0dXJuIHNfaGFzaEZsYWc4Qml0QnVmZmVy
OyB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmbGFnSXNBdG9taWMoKSB7IHJldHVy
biBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBmbGFnSXNBdG9tKCkgeyByZXR1cm4gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207
IH0KICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZsYWdJc1N5bWJvbCgpIHsgcmV0dXJu
IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7IH0KICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1hc2tTdHJpbmdLaW5kKCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tpbmQ7IH0K
ICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQpAQCAtMjkyLDggKzI5Miw4IEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBi
b29sIGlzU3ltYm9sKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
U3RyaW5nS2luZElzU3ltYm9sOyB9Ci0gICAgYm9vbCBpc0F0b20oKSBjb25zdCB7IHJldHVybiBt
X2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KLSAgICB2b2lk
IHNldElzQXRvbWljKGJvb2wpOworICAgIGJvb2wgaXNBdG9tKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbTsgfQorICAgIHZvaWQgc2V0
SXNBdG9tKGJvb2wpOwogICAgIAogICAgIGJvb2wgaXNFeHRlcm5hbCgpIGNvbnN0IHsgcmV0dXJu
IGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlckV4dGVybmFsOyB9CiAKQEAgLTM1OSw4ICszNTks
OCBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICAgIFRoaXMgbWVhbnMgU3RhdGljU3RyaW5nSW1w
bCBjb3N0cyBhcmUgbm90IGNvdW50ZWQuIEJ1dCBzaW5jZSB0aGVyZSBzaG91bGQgb25seQogICAg
ICAgICAvLyAgICAgICBiZSBhIGZpbml0ZSBzZXQgb2YgU3RhdGljU3RyaW5nSW1wbHMsIHRoZWly
IGNvc3QgY2FuIGJlIGFnZ3JlZ2F0ZWQgaW50byBhIHNpbmdsZQogICAgICAgICAvLyAgICAgICBz
eXN0ZW0gY29zdCBpZiBuZWVkZWQuCi0gICAgICAgIC8vICAgIGIuIHNldElzQXRvbWljKCkgaXMg
bmV2ZXIgY2FsbGVkIG9uIGEgU3RhdGljU3RyaW5nSW1wbC4KLSAgICAgICAgLy8gICAgICAgc2V0
SXNBdG9taWMoKSBhc3NlcnRzICFpc1N0YXRpYygpLgorICAgICAgICAvLyAgICBiLiBzZXRJc0F0
b20oKSBpcyBuZXZlciBjYWxsZWQgb24gYSBTdGF0aWNTdHJpbmdJbXBsLgorICAgICAgICAvLyAg
ICAgICBzZXRJc0F0b20oKSBhc3NlcnRzICFpc1N0YXRpYygpLgogICAgICAgICAvLyAgICBjLiBz
ZXRIYXNoKCkgaXMgbmV2ZXIgY2FsbGVkIG9uIGEgU3RhdGljU3RyaW5nSW1wbC4KICAgICAgICAg
Ly8gICAgICAgU3RhdGljU3RyaW5nSW1wbCdzIGNvbnN0cnVjdG9yIHNldHMgdGhlIGhhc2ggb24g
Y29uc3RydWN0aW9uLgogICAgICAgICAvLyAgICAgICBTdHJpbmdJbXBsOjpoYXNoKCkgb25seSBz
ZXRzIGEgbmV3IGhhc2ggaWZmICFoYXNIYXNoKCkuCkBAIC0xMDMxLDE0ICsxMDMxLDE0IEBAIGlu
bGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdER1cmluZ0dDKCkKICAgICByZXR1cm4gZGl2aWRl
Um91bmRlZFVwKHJlc3VsdCwgcmVmQ291bnQoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0cmluZ0lt
cGw6OnNldElzQXRvbWljKGJvb2wgaXNBdG9tKQoraW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0
SXNBdG9tKGJvb2wgaXNBdG9tKQogewogICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CiAgICAgQVNT
RVJUKCFpc1N5bWJvbCgpKTsKICAgICBpZiAoaXNBdG9tKQotICAgICAgICBtX2hhc2hBbmRGbGFn
cyB8PSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOworICAgICAgICBtX2hhc2hBbmRGbGFn
cyB8PSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbTsKICAgICBlbHNlCi0gICAgICAgIG1faGFz
aEFuZEZsYWdzICY9IH5zX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOworICAgICAgICBtX2hh
c2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207CiB9CiAKIGlubGluZSB2
b2lkIFN0cmluZ0ltcGw6OnNldEhhc2godW5zaWduZWQgaGFzaCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAppbmRleCA0M2RlM2QwNzYwNTlmODA3NGI3NDg3NmVmNzdmNjgzOTA0YjZh
MGI0Li5jZmY3YmVkYmEwZDNkMTg3ODNmYzEyOTM0MmQyNDg3NDEyYWQxZjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBU
b3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC02NDgsNyArNjQ4LDcgQEAgU3RyaW5n
IFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKIAogYm9vbCBTdHJpbmc6OmlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpIGNvbnN0CiB7Ci0gICAgLy8gQXRvbWljU3RyaW5ncyBhcmUgbm90IHNh
ZmUgdG8gc2VuZCBiZXR3ZWVuIHRocmVhZHMgYXMgflN0cmluZ0ltcGwoKQorICAgIC8vIEF0b21T
dHJpbmdzIGFyZSBub3Qgc2FmZSB0byBzZW5kIGJldHdlZW4gdGhyZWFkcywgYXMgflN0cmluZ0lt
cGwoKQogICAgIC8vIHdpbGwgdHJ5IHRvIHJlbW92ZSB0aGVtIGZyb20gdGhlIHdyb25nIEF0b21T
dHJpbmdUYWJsZS4KICAgICByZXR1cm4gaXNFbXB0eSgpIHx8IChtX2ltcGwtPmhhc09uZVJlZigp
ICYmICFtX2ltcGwtPmlzQXRvbSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYzc4MWM4NjY0OWM3YzNh
NTQ0MThlOTAzZjIyMTA5NjY4NzE4NzIyMy4uYmYzYzg1ZGQ4Y2JjZjRjOWFiYTRhYWIzMzA1YjQ3
YjFlMGZkZDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE0ODYsMTUgKzE0ODYsMTUgQEAgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmEKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFs
QXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEpTQzo6
RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoSlNDOjpFeGVjU3Rh
dGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEpTQzo6RXhlY1N0YXRlKik7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVs
bChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVs
bChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0
cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNF
bXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWlj
U3RyaW5nSXNFbXB0eVN0cmluZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbERvdWJsZUlzTmFOKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxGbG9hdElzTmFOKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxM
b25nTG9uZyhKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMjIwMywxNSArMjIwMywxNSBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAg
ICAgeyAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFs
QXJncyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKSwg
KGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcpLCAo
aW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
ZyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBdG9tU3Ry
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJp
bmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
QW5kRGVmYXVsdFZhbHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJt
ZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZh
bHVlKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21T
dHJpbmdBbmREZWZhdWx0VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZSksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKSwgKGludHB0cl90KSAoMCkg
fSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKSwg
KGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
Z0lzTnVsbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9t
aWNTdHJpbmdJc051bGwpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9w
dGlvbmFsQXRvbVN0cmluZ0lzTnVsbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3Ry
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmlu
Z0lzRW1wdHlTdHJpbmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAibWV0aG9kV2l0aE9w
dGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3Ry
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJp
bmdJc0VtcHR5U3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhP
cHRpb25hbERvdWJsZUlzTmFOIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbERvdWJsZUlzTmFOKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdp
dGhPcHRpb25hbEZsb2F0SXNOYU4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRmxvYXRJc05hTiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RX
aXRoT3B0aW9uYWxMb25nTG9uZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxMb25nTG9uZyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTY0NDgsMjAgKzY0NDgs
MjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmkKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxVU1ZTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQm9keShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxBdG9tU3RyaW5nQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgp
ID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5n
Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5tZXRob2RX
aXRoT3B0aW9uYWxBdG9taWNTdHJpbmcoV1RGTW92ZShzdHIpKTsKKyAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbEF0b21TdHJpbmcoV1RGTW92ZShzdHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZyhFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0JvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9u
YWxBdG9tU3RyaW5nIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1
bHRWYWx1ZUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQpAQCAtNjQ4MCwyMCArNjQ4MCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
QQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHk+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBBdG9tU3RyaW5nKCJmb28iLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElE
TERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUo
c3RyKSk7CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZh
bHVlKFdURk1vdmUoc3RyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdBbmREZWZhdWx0VmFs
dWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9t
aWNTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9tU3RyaW5nQW5kRGVmYXVsdFZhbHVlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsQXRvbVN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKQEAgLTY1MjgsMjAgKzY1MjgsMjAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0kKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZEJv
ZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbEJvZHkoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRl
ZmluZWQoKSA/IG51bGxBdG9tKCkgOiBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7CisgICAg
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNOdWxsKFdURk1vdmUoc3RyKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21TdHJpbmdJc051bGwoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGxCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGwiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9tU3RyaW5nSXNOdWxsQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0
cmluZ0lzTnVsbCIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3Ry
aW5nQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC02NTc2LDIwICs2NTc2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpCiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHk+KCpz
dGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmciKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3Vt
ZW50KDApLmlzVW5kZWZpbmVkKCkgPyBlbXB0eUF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmlu
Z0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5n
KFdURk1vdmUoc3RyKSk7CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxBdG9tU3RyaW5nSXNF
bXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
QXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
QXRvbVN0cmluZ0lzRW1wdHlTdHJpbmciKTsKIH0KIAogc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91
YmxlSXNOYU5Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAppbmRleCAwODcyYTlmNTEzMmI2N2RjYTYxNDRmZTZmMzQzZDhmMjJhYzczODI4
Li4xZTk4YmNkMGM1NDU4NDMxMDZiZmE0OTQ2NDAxYmIzYWU4OTkxNTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0yMjAsMTUg
KzIyMCwxNSBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9Owog
ICAgIHZvaWQgICAgbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKGxv
bmcgbm9uT3B0LCBvcHRpb25hbCBsb25nIG9wdDEsIG9wdGlvbmFsIGxvbmcgb3B0Mik7CiAgICAg
dm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcob3B0aW9uYWwgRE9NU3RyaW5nIHN0cik7
CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcob3B0aW9uYWwgVVNWU3Ry
aW5nIHN0cik7Ci0gICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmcob3B0
aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzdHIpOworICAgIHZvaWQgICAgbWV0aG9kV2l0
aE9wdGlvbmFsQXRvbVN0cmluZyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHN0cik7
CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUob3B0
aW9uYWwgRE9NU3RyaW5nIHN0ciA9ICJmb28iKTsKLSAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9N
U3RyaW5nIHN0ciA9ICJmb28iKTsKKyAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEF0b21T
dHJpbmdBbmREZWZhdWx0VmFsdWUob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzdHIg
PSAiZm9vIik7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwob3B0
aW9uYWwgRE9NU3RyaW5nIHN0ciA9IG51bGwpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWQob3B0aW9uYWwgRE9NU3RyaW5nIHN0ciA9ICJ1bmRlZmluZWQi
KTsKLSAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChvcHRp
b25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHN0ciA9IG51bGwpOworICAgIHZvaWQgICAgbWV0
aG9kV2l0aE9wdGlvbmFsQXRvbVN0cmluZ0lzTnVsbChvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9N
U3RyaW5nIHN0ciA9IG51bGwpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
SXNFbXB0eVN0cmluZyhvcHRpb25hbCBET01TdHJpbmcgc3RyID0gIiIpOwogICAgIHZvaWQgICAg
bWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhvcHRpb25hbCBVU1ZTdHJp
bmcgc3RyID0gIiIpOwotICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
SXNFbXB0eVN0cmluZyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHN0ciA9ICIiKTsK
KyAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEF0b21TdHJpbmdJc0VtcHR5U3RyaW5nKG9w
dGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJpbmcgc3RyID0gIiIpOwogICAgIHZvaWQgICAgbWV0
aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4ob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBu
dW1iZXIgPSBOYU4pOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgbnVtYmVyID0gTmFOKTsKICAgICB2b2lkICAgIG1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nKG9wdGlvbmFsIGxvbmcgbG9uZyBudW1iZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsCmluZGV4IDdhY2M1OGNiZjEyZTRhYWY1NzRhZDM4MmU1NWE0NjQ1OGNi
ZWM5ZjYuLjk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWFrZXByb3AucGwKQEAgLTM2OSw3ICszNjksNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBnZXRQ
cm9wZXJ0eU5hbWVBdG9tU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpCiAKIFN0cmluZyBnZXRQcm9w
ZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlJRCBpZCkKIHsKLSAgICAvLyBXZSBzaGFyZSB0aGUg
U3RyaW5nSW1wbCB3aXRoIHRoZSBBdG9taWNTdHJpbmdzLgorICAgIC8vIFdlIHNoYXJlIHRoZSBT
dHJpbmdJbXBsIHdpdGggdGhlIEF0b21TdHJpbmdzLgogICAgIHJldHVybiBnZXRQcm9wZXJ0eU5h
bWVBdG9tU3RyaW5nKGlkKS5zdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL21ha2V2YWx1ZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbApp
bmRleCA3MjI0ZGY1MTE0MjQ2Nzk1ZmRlNWI2NDk5MWIyYzVjMjY5Yzc0MTI1Li5hYmRiMWVjNjM3
NmFlZDc3NmY5NGVmMWI0MTVlZWU5ODMxMGJmOWFlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvbWFrZXZhbHVlcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5w
bApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIGdldFZhbHVlTmFtZUF0b21T
dHJpbmcoQ1NTVmFsdWVJRCBpZCkKIAogU3RyaW5nIGdldFZhbHVlTmFtZVN0cmluZyhDU1NWYWx1
ZUlEIGlkKQogewotICAgIC8vIFdlIHNoYXJlIHRoZSBTdHJpbmdJbXBsIHdpdGggdGhlIEF0b21p
Y1N0cmluZ3MuCisgICAgLy8gV2Ugc2hhcmUgdGhlIFN0cmluZ0ltcGwgd2l0aCB0aGUgQXRvbVN0
cmluZ3MuCiAgICAgcmV0dXJuIGdldFZhbHVlTmFtZUF0b21TdHJpbmcoaWQpLnN0cmluZygpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IGI3ZDEwMzViNzU4
OTQ2OWIxNTUwMTQ0MTA4MTJkMWMxMTJhYTkzNGIuLjY1MzJiZGJiMzBlNWEyNjcxZTgwNGFlYTY5
MWQ1YjI1ZTUxNDE2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBA
IC0zMjYsNyArMzI2LDcgQEAgQXRvbVN0cmluZyBGb3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KGNv
bnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmIGNvbnQKICAgICByZXR1cm4gbV9m
b3JtVG9LZXlNYXAuZW5zdXJlKGZvcm0uZ2V0KCksIFt0aGlzLCAmZm9ybV0gewogICAgICAgICBh
dXRvIHNpZ25hdHVyZSA9IGZvcm1TaWduYXR1cmUoKmZvcm0pOwogICAgICAgICBhdXRvIG5leHRJ
bmRleCA9IG1fZm9ybVNpZ25hdHVyZVRvTmV4dEluZGV4TWFwLmFkZChzaWduYXR1cmUsIDApLml0
ZXJhdG9yLT52YWx1ZSsrOwotICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBoYXZl
IG1ha2VBdG9taWNTdHJpbmcgdG8gdXNlIGhlcmUuCisgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBi
ZSBuaWNlIHRvIGhhdmUgbWFrZUF0b21TdHJpbmcgdG8gdXNlIHRvIG9wdGltaXplIHRoZSBjYXNl
IHdoZXJlIHRoZSBzdHJpbmcgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgIHJldHVybiBtYWtlU3Ry
aW5nKHNpZ25hdHVyZSwgIiAjIiwgbmV4dEluZGV4KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NmM4YmIyZmFiOTZlNzlkYjc1NmY1NDVmN2Q1OWVlZmQwZWQ5OTg2YS4uOWRjOGQ5Nzc0MmM3YmIw
MzhiZWMwNTE3N2YyNzQ4ODc4ZjVkMzk3MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA2LTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBUaWR5IHVwIHRoZSByZW1haW5pbmcg
Yml0cyBvZiB0aGUgQXRvbWljU3RyaW5nIHRvIEF0b21TdHJpbmcgcmVuYW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg5OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvZG8td2ViY29y
ZS1yZW5hbWU6IFJlbW92ZWQgYWxyZWFkeS1kb25lIHJlbmFtZXMuCisKIDIwMTktMDYtMTggIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBKU0xvY2sg
c2hvdWxkIGJlIFdlYlRocmVhZCBhd2FyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9kby13
ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKaW5kZXggODk5
OGY3Njc1ZThkNGM3NWUzYmZjMDM2MTg1YTY0MzAyYzk0MmJiNy4uMGNjZGRhMmEwNmUxMGQ5N2Fk
MjNmOTNiZGRkZmViZjM3YjJkMTkyOCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kby13ZWJj
b3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBAIC0xMDIs
NjcgKzEwMiwxMCBAQCBzdWIgd2FudGVkCiBteSAkaXNET01UeXBlUmVuYW1lID0gMDsKIG15ICVy
ZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBnbyBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJB
dG9taWNTdHJpbmciID0+ICJBdG9tU3RyaW5nIiwKLSAgICAiQXRvbWljU3RyaW5nQ3JlYXRpb25G
cm9tTGl0ZXJhbCIgPT4gIkF0b21TdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsIiwKLSAgICAiQXRv
bWljU3RyaW5nQ3JlYXRpb25Gcm9tTGl0ZXJhbFVuaXF1ZW5lc3MiID0+ICJBdG9tU3RyaW5nQ3Jl
YXRpb25Gcm9tTGl0ZXJhbFVuaXF1ZW5lc3MiLAotICAgICJBdG9taWNTdHJpbmdFeGlzdGluZ0hh
c2giID0+ICJBdG9tU3RyaW5nRXhpc3RpbmdIYXNoIiwKLSAgICAiQXRvbWljU3RyaW5nRnJvbUxp
dGVyYWxDYW5ub3RPdmVyZmxvdyIgPT4gIkF0b21TdHJpbmdGcm9tTGl0ZXJhbENhbm5vdE92ZXJm
bG93IiwKLSAgICAiQXRvbWljU3RyaW5nRnJvbUxpdGVyYWxOb3RFbXB0eSIgPT4gIkF0b21TdHJp
bmdGcm9tTGl0ZXJhbE5vdEVtcHR5IiwKLSAgICAiQXRvbWljU3RyaW5nSGFzaCIgPT4gIkF0b21T
dHJpbmdIYXNoIiwKLSAgICAiQXRvbWljU3RyaW5nSW1wbCIgPT4gIkF0b21TdHJpbmdJbXBsIiwK
LSAgICAiQXRvbWljU3RyaW5nSW1wbENGIiA9PiAiQXRvbVN0cmluZ0ltcGxDRiIsCi0gICAgIkF0
b21pY1N0cmluZ051bWJlckRvdWJsZSIgPT4gIkF0b21TdHJpbmdOdW1iZXJEb3VibGUiLAotICAg
ICJBdG9taWNTdHJpbmdUYWJsZSIgPT4gIkF0b21TdHJpbmdUYWJsZSIsCi0gICAgIkF0b21pY1N0
cmluZ1RhYmxlIiA9PiAiQXRvbVN0cmluZ1RhYmxlIiwKLSAgICAiQXRvbWljU3RyaW5nVGFibGVM
b2NrZXIiID0+ICJBdG9tU3RyaW5nVGFibGVMb2NrZXIiLAotICAgICJBdG9taWNTdHJpbmdfaCIg
PT4gIkF0b21TdHJpbmdfaCIsCi0gICAgIklETEF0b21pY1N0cmluZ0FkYXB0b3IiID0+ICJJRExB
dG9tU3RyaW5nQWRhcHRvciIsCi0gICAgIklETFJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmdB
ZGFwdG9yIiA9PiAiSURMUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yIiwKLSAgICAi
UmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZyIgPT4gIlJlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nIiwKLSAgICAiU3RyaW5nSW1wbE51bGxTeW1ib2xUb0F0b21pY1N0cmluZyIgPT4gIlN0cmlu
Z0ltcGxOdWxsU3ltYm9sVG9BdG9tU3RyaW5nIiwKLSAgICAiU3RyaW5nSW1wbFN0YXRpY1RvQXRv
bWljU3RyaW5nIiA9PiAiU3RyaW5nSW1wbFN0YXRpY1RvQXRvbVN0cmluZyIsCi0gICAgIlN0cmlu
Z0ltcGxTeW1ib2xUb0F0b21pY1N0cmluZyIgPT4gIlN0cmluZ0ltcGxTeW1ib2xUb0F0b21TdHJp
bmciLAotICAgICJUb0F0b21pY1N0cmluZyIgPT4gIlRvQXRvbVN0cmluZyIsCi0gICAgIlRvQXRv
bWljU3RyaW5nT25FbXB0eSIgPT4gIlRvQXRvbVN0cmluZ09uRW1wdHkiLAotICAgICJUb2tlbkF0
b21pY1N0cmluZ0luaXRpYWxpemVyIiA9PiAiVG9rZW5BdG9tU3RyaW5nSW5pdGlhbGl6ZXIiLAot
ICAgICJXVEZBdG9taWNTdHJpbmdQcmludGVyIiA9PiAiV1RGQXRvbVN0cmluZ1ByaW50ZXIiLAot
ICAgICJXVEZBdG9taWNTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIiA9PiAiV1RGQXRvbVN0cmluZ19T
dW1tYXJ5UHJvdmlkZXIiLAotICAgICJhdG9taWNTdHJpbmciID0+ICJhdG9tU3RyaW5nIiwKLSAg
ICAiYXRvbWljU3RyaW5nMSIgPT4gImF0b21TdHJpbmcxIiwKLSAgICAiYXRvbWljU3RyaW5nMiIg
PT4gImF0b21TdHJpbmcyIiwKLSAgICAiYXRvbWljU3RyaW5nVGFibGUiID0+ICJhdG9tU3RyaW5n
VGFibGUiLAotICAgICJhdG9taWNTdHJpbmdXaXRoVGVtcGxhdGUiID0+ICJhdG9tU3RyaW5nV2l0
aFRlbXBsYXRlIiwKLSAgICAiYXRvbWljU3RyaW5ncyIgPT4gImF0b21TdHJpbmdzIiwKLSAgICAi
Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUiID0+ICJjaGVja0N1cnJlbnRBdG9tU3RyaW5n
VGFibGUiLAotICAgICJleGlzdGluZ0F0b21pY1N0cmluZyIgPT4gImV4aXN0aW5nQXRvbVN0cmlu
ZyIsCi0gICAgImV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSIgPT4gImV4aXN0aW5nRW50
cnlBdG9tU3RyaW5nVGFibGUiLAotICAgICJnZXRQcm9wZXJ0eU5hbWVBdG9taWNTdHJpbmciID0+
ICJnZXRQcm9wZXJ0eU5hbWVBdG9tU3RyaW5nIiwKLSAgICAiZ2V0VmFsdWVOYW1lQXRvbWljU3Ry
aW5nIiA9PiAiZ2V0VmFsdWVOYW1lQXRvbVN0cmluZyIsCi0gICAgImlzQXRvbWljIiA9PiAiaXNB
dG9tIiwKLSAgICAiaXNBdG9taWNTdHJpbmciID0+ICJpc0F0b21TdHJpbmciLAotICAgICJpc0lu
QXRvbWljU3RyaW5nVGFibGUiID0+ICJpc0luQXRvbVN0cmluZ1RhYmxlIiwKLSAgICAibV9hdG9t
aWNTdHJpbmdUYWJsZSIgPT4gIm1fYXRvbVN0cmluZ1RhYmxlIiwKLSAgICAibV9jdXJyZW50QXRv
bWljU3RyaW5nVGFibGUiID0+ICJtX2N1cnJlbnRBdG9tU3RyaW5nVGFibGUiLAotICAgICJtX2Rl
ZmF1bHRBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm1fZGVmYXVsdEF0b21TdHJpbmdUYWJsZSIsCi0g
ICAgIm1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm1fZW50cnlBdG9tU3RyaW5nVGFibGUi
LAotICAgICJvbGRBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm9sZEF0b21TdHJpbmdUYWJsZSIsCi0g
ICAgInByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nIiA9PiAicHJvcGVydHlOYW1lVG9BdG9tU3Ry
aW5nIiwKLSAgICAicmVzb2x2ZVJvcGVUb0F0b21pY1N0cmluZyIgPT4gInJlc29sdmVSb3BlVG9B
dG9tU3RyaW5nIiwKLSAgICAicmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbWljU3RyaW5nIiA9PiAi
cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmluZyIsCi0gICAgInNldEN1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZSIgPT4gInNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUiLAotICAgICJzaG91bGRV
c2VBdG9taWNTdHJpbmciID0+ICJzaG91bGRVc2VBdG9tU3RyaW5nIiwKLSAgICAidGVzdEF0b21p
Y1N0cmluZ051bWJlciIgPT4gInRlc3RBdG9tU3RyaW5nTnVtYmVyIiwKLSAgICAidG9BdG9taWNT
dHJpbmciID0+ICJ0b0F0b21TdHJpbmciLAotICAgICJ0b0V4aXN0aW5nQXRvbWljU3RyaW5nIiA9
PiAidG9FeGlzdGluZ0F0b21TdHJpbmciLAotICAgICJ1c2VBdG9taWNTdHJpbmciID0+ICJ1c2VB
dG9tU3RyaW5nIiwKKyAgICAiZmxhZ0lzQXRvbWljIiA9PiAiZmxhZ0lzQXRvbSIsCiApOwogCiBt
eSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVyZSA9ICgKLSAgICAic2V0RE9NRXhjZXB0
aW9uIiA9PiAicHJvcGFnYXRlRXhjZXB0aW9uIiwKLSAgICAic2V0RE9NRXhjZXB0aW9uU2xvdyIg
PT4gInByb3BhZ2F0ZUV4Y2VwdGlvblNsb3dQYXRoIiwKLQotICAgICJQYXNzUmVmUHRyIiA9PiAi
RGVwcmVjYXRlZFBhc3NSZWZQdHIiLAotCiAgICAgIkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQiID0+
ICJIVE1MRW1iZWRkZWRPYmplY3RFbGVtZW50IiwKICAgICAiaXNQbHVnSW5JbWFnZUVsZW1lbnQi
ID0+ICJpc0VtYmVkZGVkT2JqZWN0RWxlbWVudCIsCiAgICAgImlzSFRNTFBsdWdJbkltYWdlRWxl
bWVudCIgPT4gImlzSFRNTEVtYmVkZGVkT2JqZWN0RWxlbWVudCIsCkBAIC0xNzMsOCArMTE2LDYg
QEAgbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JUaGVGdXR1cmUgPSAoCiAgICAgIkRhdGVJbnN0
YW5jZSIgPT4gIkpTRGF0ZSIsCiAgICAgIkVycm9ySW5zdGFuY2UiID0+ICJKU0Vycm9yIiwKIAot
ICAgICJUcmVlU2hhcmVkIiA9PiAiVHJlZVJlZkNvdW50ZWQiLAotCiAgICAgIlN0cmluZ0ltcGwi
ID0+ICJTaGFyZWRTdHJpbmciLAogCiAgICAgIlJlbmRlclZpZXciID0+ICJSZW5kZXJWaWV3cG9y
dCIsCkBAIC0xODcsMTAgKzEyOCw2IEBAIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0
dXJlID0gKAogICAgICJydW50aW1lX29iamVjdCIgPT4gIkJyaWRnZWRPYmplY3QiLAogICAgICJv
YmpjX3J1bnRpbWUiID0+ICJPYmpDQnJpZGdlIiwKIAotICAgICJXVEZfVU5JQ09ERV9IIiA9PiAi
VW5pY29kZV9oIiwKLSAgICAiV1RGX1VOSUNPREVfSUNVX0giID0+ICJVbmljb2RlSUNVX2giLAot
ICAgICJVbmljb2RlSWN1IiA9PiAiVW5pY29kZUlDVSIsCi0KICAgICAiTGVnYWN5V2ViQXJjaGl2
ZSIgPT4gIldlYkFyY2hpdmUiLAogICAgICJMZWdhY3lXZWJBcmNoaXZlX2giID0+ICJXZWJBcmNo
aXZlX2giLAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNmY3MDMwMmU1YWY3OTNlODA3Njc4ODkzNTY5OGVkNjE2ZGU1MzZk
MC4uMjdiYjRlNWQzOGYxMTMwOTg0ZTE5NDVlY2E1ODMyYzNlNjlmM2JkZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE5LTA2LTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBUaWR5IHVwIHRoZSByZW1haW5pbmcgYml0cyBvZiB0aGUgQXRvbWljU3RyaW5nIHRv
IEF0b21TdHJpbmcgcmVuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTg5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL2RvcGV5LXJvcGUtd2l0aC0xNi1iaXQtcHJvcGVydHluYW1lLWV4cGVj
dGVkLnR4dDogUmVuYW1lIHRvIEF0b21TdHJpbmcuCisgICAgICAgICoganMvZG9wZXktcm9wZS13
aXRoLTE2LWJpdC1wcm9wZXJ0eW5hbWUuaHRtbDogRGl0dG8uCisKIDIwMTktMDYtMTggIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBTdXBwb3J0IG1h
dHJpY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb3BleS1yb3BlLXdpdGgtMTYtYml0
LXByb3BlcnR5bmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb3BleS1yb3BlLXdp
dGgtMTYtYml0LXByb3BlcnR5bmFtZS1leHBlY3RlZC50eHQKaW5kZXggNmYyNWYxOTdiZDU5OTNm
NDNkNjg0YWEyNzhkYWNjODY4Y2M2MTBlNC4uZWI3MDhiYzliYzg0YzViNmVmZjM3OTI1YzlhZTIx
OGYwOGVkYTUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9wZXktcm9wZS13aXRoLTE2
LWJpdC1wcm9wZXJ0eW5hbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvcGV5
LXJvcGUtd2l0aC0xNi1iaXQtcHJvcGVydHluYW1lLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQg
QEAKLVRlc3QgdGhhdCBhIDE2LWJpdCBBdG9taWNTdHJpbmcgY29udGFpbmluZyBvbmx5IDgtYml0
IGNoYXJhY3RlcnMgZG9lc24ndCBjb25mdXNlIHRoZSBKSVQgaW50byB0aGlua2luZyBpdCdzIGFu
IDgtYml0IEF0b21pY1N0cmluZy4KK1Rlc3QgdGhhdCBhIDE2LWJpdCBBdG9tU3RyaW5nIGNvbnRh
aW5pbmcgb25seSA4LWJpdCBjaGFyYWN0ZXJzIGRvZXNuJ3QgY29uZnVzZSB0aGUgSklUIGludG8g
dGhpbmtpbmcgaXQncyBhbiA4LWJpdCBBdG9tU3RyaW5nLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvcGV5LXJvcGUtd2l0aC0xNi1i
aXQtcHJvcGVydHluYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb3BleS1yb3BlLXdpdGgtMTYt
Yml0LXByb3BlcnR5bmFtZS5odG1sCmluZGV4IGQ5NGI0YjU5OTk4NTA0ZjNhZTAxYjc4YTgyZmNm
N2Y5ZTVkYzNkY2YuLjFiMmQ0ZjBmZWI3NWRjZjg3N2FlN2Y4YjBhOTZmOTI1MWM3OGUwMjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvcGV5LXJvcGUtd2l0aC0xNi1iaXQtcHJvcGVydHlu
YW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9wZXktcm9wZS13aXRoLTE2LWJpdC1wcm9w
ZXJ0eW5hbWUuaHRtbApAQCAtNywxNCArNywxNCBAQAogPGJvZHk+CiA8c2NyaXB0PgogCi1kZXNj
cmlwdGlvbigiVGVzdCB0aGF0IGEgMTYtYml0IEF0b21pY1N0cmluZyBjb250YWluaW5nIG9ubHkg
OC1iaXQgY2hhcmFjdGVycyBkb2Vzbid0IGNvbmZ1c2UgdGhlIEpJVCBpbnRvIHRoaW5raW5nIGl0
J3MgYW4gOC1iaXQgQXRvbWljU3RyaW5nLiIpOworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhIDE2
LWJpdCBBdG9tU3RyaW5nIGNvbnRhaW5pbmcgb25seSA4LWJpdCBjaGFyYWN0ZXJzIGRvZXNuJ3Qg
Y29uZnVzZSB0aGUgSklUIGludG8gdGhpbmtpbmcgaXQncyBhbiA4LWJpdCBBdG9tU3RyaW5nLiIp
OwogCiBvID0ge307CiAKIHN0cmluZ1dpdGhFbW9qaSA9ICJ6ZXN08J+YkCI7CiB2YXIgdGVzdDE2
Yml0ID0gc3RyaW5nV2l0aEVtb2ppLnN1YnN0cmluZygwLCA0KTsKIAotb1t0ZXN0MTZiaXRdID0g
InRoaXMgbWFrZXMgaXQgYW4gQXRvbWljU3RyaW5nIjsKK29bdGVzdDE2Yml0XSA9ICJ0aGlzIG1h
a2VzIGl0IGFuIEF0b21TdHJpbmciOwogCiBnbG9iYWxSb3BlID0gIiI7CiAK
</data>
<flag name="review"
          id="388215"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="388255"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>