<?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>240978</bug_id>
          
          <creation_ts>2022-05-26 14:46:26 -0700</creation_ts>
          <short_desc>AX: WebKit does not trap user focus inside modals that have been DOM moved</short_desc>
          <delta_ts>2022-06-13 00:14:11 -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>Accessibility</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>giacomo.petri</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1872124</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-05-26 14:46:26 -0700</bug_when>
    <thetext>WebKit does not trap user focus inside modals that have been DOM moved. This pattern is used in the WAI-ARIA aria-modal usage example: https://w3c.github.io/aria-practices/examples/dialog-modal/dialog.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872125</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-26 14:46:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/93996539&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872171</commentid>
    <comment_count>2</comment_count>
      <attachid>459796</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-05-26 15:12:04 -0700</bug_when>
    <thetext>Created attachment 459796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872182</commentid>
    <comment_count>3</comment_count>
      <attachid>459798</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-05-26 15:35:52 -0700</bug_when>
    <thetext>Created attachment 459798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873373</commentid>
    <comment_count>4</comment_count>
      <attachid>459933</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-06-01 14:10:02 -0700</bug_when>
    <thetext>Created attachment 459933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873586</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-06-02 08:01:07 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; Created attachment 459933 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ a/Source/WebCore/accessibility/AXObjectCache.cpp

-Element* AXObjectCache::currentModalNode()
+Element* AXObjectCache::recomputeCurrentModalNode()

Wouldn&apos;t it make more sense to name it updateCurrentModalNode or updateCurrentModalElement and have a void return? Since in most calls the returned value is not used. We have another method named modalNode that can do the update if needed and return the stored pointer.

+{
+    auto* previousModal = m_currentModalElement.get();
+    m_currentModalElement = recomputeCurrentModalNodeInner();
+    if (previousModal != m_currentModalElement.get()) {
+        childrenChanged(rootWebArea());
+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
+        // Because the presence of a modal affects every element on the page,
+        // regenerate the entire isolated tree with the next cache update.
+        m_deferredRegenerateIsolatedTree = true;
+#endif

Would it be more appropriate to do the update of the isolated tree in the childrenChanged or handleChildrenChanged as everything else? Perhaps we need to add an AXNotification for a new modal and update the isolated tree upon that notification.

+Element* AXObjectCache::recomputeCurrentModalNodeInner()

See comment above about update versus recompute prefix. I think Internal is more customary than Inner as a suffix for a private method name that is invoked by another possibly public method, but I don&apos;t feel strongly either way.

--- a/Source/WebCore/accessibility/AXObjectCache.h
+++ a/Source/WebCore/accessibility/AXObjectCache.h

-    void handleFocusedUIElementChanged(Node* oldFocusedNode, Node* newFocusedNode);
+    enum class RecomputeModal : bool { No, Yes };
+    void handleFocusedUIElementChanged(Node* oldFocusedNode, Node* newFocusedNode, RecomputeModal = RecomputeModal::Yes);

RecomputeModal -&gt; UpdateModal ?

+#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
+    bool m_deferredRegenerateIsolatedTree { false };
+#endif

If we handle this as an AXNotification as the rest of all isolated tree updates, I don&apos;t think we would need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873951</commentid>
    <comment_count>6</comment_count>
      <attachid>460016</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-06-03 10:32:25 -0700</bug_when>
    <thetext>Created attachment 460016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874576</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-07 14:45:34 -0700</bug_when>
    <thetext>Committed r295366 (251374@main): &lt;https://commits.webkit.org/251374@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 460016.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1875488</commentid>
    <comment_count>8</comment_count>
    <who name="Giacomo Petri">giacomo.petri</who>
    <bug_when>2022-06-13 00:14:11 -0700</bug_when>
    <thetext>Hi,

there is still a bug on Safari mobile + VO. I&apos;m not sure if the issue is related to this topic or more to this one https://bugs.webkit.org/show_bug.cgi?id=239295, but on mobile users are still not trapped within the modal.

Giacomo</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459796</attachid>
            <date>2022-05-26 15:12:04 -0700</date>
            <delta_ts>2022-05-26 15:36:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240978-20220526151203.patch</filename>
            <type>text/plain</type>
            <size>41665</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA1NDllOWMwOGFhNzgxZDRhOWI3MjM4ZDY2ZTdmMmNiZDUzNmRlMWI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVGh1LCAyNiBNYXkgMjAyMiAxNDo1OTo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBX
ZWJLaXQgZG9lcyBub3QgdHJhcCB1c2VyIGZvY3VzIGluc2lkZSBtb2RhbHMgdGhhdCBoYXZlCiBi
ZWVuIERPTSBtb3ZlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQw
OTc4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluIHRoaXMgcGF0Y2gsIHdlIG5vdyBw
cm9wZXJseSB0cmFwIHVzZXIgZm9jdXMgaW5zaWRlIG5vbi1lbXB0eSBtb2RhbHMKdGhhdCBoYXZl
IGJlZW4gRE9NIG1vdmVkLiBUaGlzIHBhdHRlcm4gaXMgdXNlZCBpbiB0aGUgV0FJLUFSSUEgYXJp
YS1tb2RhbAp1c2FnZSBleGFtcGxlOgoKaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2FyaWEtcHJhY3Rp
Y2VzL2V4YW1wbGVzL2RpYWxvZy1tb2RhbC9kaWFsb2cuaHRtbAoKV2UgZG8gdGhpcyBieSByZS1j
b21wdXRpbmcgdGhlIGxpdmUgYW5kIGlzb2xhdGVkIHRyZWVzIHdoZW4gdGhlIGFjdGl2ZQptb2Rh
bCBjaGFuZ2VzLCBzaW5jZSB0aGUgcHJlc2VuY2Ugb2YgYSBtb2RhbCBlZmZlY3RzIGV2ZXJ5IGVs
ZW1lbnQgb24KdGhlIHBhZ2UuCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgc2V2ZXJhbCBvdGhl
ciBtb2RhbCBpbXByb3ZlbWVudHM6CiAgLSBXaGVuIGZvY3VzIGlzIGV4cGxpY2l0bHkgc2V0IG91
dHNpZGUgdGhlIGFjdGl2ZSBtb2RhbCwgd2Ugbm8gbG9uZ2VyCiAgICBwcmV2ZW50IHVzZXJzIGZy
b20gbmF2aWdhdGluZyB0byB0aG9zZSBlbGVtZW50cyAoZWZmZWN0aXZlbHkKICAgIGJyZWFraW5n
IG91dCBvZiB0aGVtIG91dCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBtb2RhbCkuCgogIC0gV2Ug
bm8gbG9uZ2VyIHNvbWV0aW1lcyBvdmVyd3JpdGUgYXV0aG9yIG1hbnVhbCBmb2N1cyAoZS5nLiB2
aWEgSlMpCiAgICB3aXRoIG91ciBtb2RhbCBhdXRvZm9jdXMgYmVoYXZpb3IuCgogIC0gV2Ugbm93
IHByb3Blcmx5IHJlLWNvbXB1dGUgdGhlIGFjdGl2ZSBtb2RhbCB3aGVuIGZvY3VzIGNoYW5nZXMu
IFRoaXMKICAgIGlzIHJlbGV2YW50IGluIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBt
b2RhbHMsIGFuZCBhbiBhdXRob3IKICAgIGNoYW5nZXMgZm9jdXMgZnJvbSBvbmUgdG8gYW5vdGhl
ciwgbWFraW5nIHRoZSBsYXR0ZXIgdGhlIG5ldyBhY3RpdmUKICAgIG1vZGFsLgoKVGhpcyBwYXRj
aCByZW1vdmVzIG1fZm9jdXNNb2RhbE5vZGVUaW1lciBpbiBmYXZvciBvZiBhIG5ldyBmdW5jdGlv
bgpjYWxsZWQgZm9jdXNDdXJyZW50TW9kYWwoKSwgd2hpY2ggYWxsb3dzIHByZWNpc2UgYW5kIHN5
bmNocm9ub3VzIGNvbnRyb2wKb3ZlciB3aGVuIG1vZGFsIGF1dG9mb2N1cyBoYXBwZW5zLiBUaGUg
YXN5bmNocm9ub3VzIG5hdHVyZSBvZiB0aGUgdGltZXIKbWFkZSBpdCBoYXJkIHRvIHByZXZlbnQg
b3ZlcndyaXRpbmcgbWFudWFsIGF1dGhvciBmb2N1cyAoZS5nLiB2aWEgSlMpLgoKVGhpcyBwYXRj
aCBmaXhlcyBleGlzdGluZyB0ZXN0cyBpbiBJVE06CiAgLSBhY2Nlc3NpYmlsaXR5L2FyaWEtbW9k
YWwtbXVsdGlwbGUtZGlhbG9ncy5odG1sCiAgLSBhY2Nlc3NpYmlsaXR5L2lnbm9yZS1tb2RhbHMt
d2l0aG91dC1hbnktY29udGVudC5odG1sCiAgLSBhY2Nlc3NpYmlsaXR5L21hYy9hcmlhLW1vZGFs
LWF1dG8tZm9jdXMuaHRtbAoKQW5kIGFkZHMgYSBuZXcgdGVzdDoKYWNjZXNzaWJpbGl0eS9yZWNv
bXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy5odG1s
CgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dz
LWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVs
dGlwbGUtZGlhbG9ncy5odG1sOgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRl
LWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1lbGVtZW50LWFwcGVhcnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50
LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWw6IEFkZGVkLgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5B
WE9iamVjdENhY2hlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUN1cnJlbnRN
b2RhbE5vZGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cmVjb21wdXRlQ3VycmVudE1vZGFs
Tm9kZUlubmVyKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om1vZGFsTm9kZSk6CihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZCk6CihXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCk6CihXZWJDb3JlOjpmaXJz
dEZvY3VzYWJsZUNoaWxkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzQ3VycmVudE1v
ZGFsKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRl
KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmN1cnJlbnRNb2RhbE5vZGUpOiBEZWxldGVkLgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGUpOiBEZWxldGVkLgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKTogRGVsZXRlZC4KKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdlKTogRGVsZXRlZC4KKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXND
dXJyZW50TW9kYWwpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYUV4cGFuZGVk
Q2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRD
aGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJl
ZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZSk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ3VycmVudE1vZGFsTm9k
ZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTW9kYWxOb2RlIGNvbnN0KTogUmVuYW1l
ZCB0byBpc0N1cnJlbnRNb2RhbE5vZGUuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpzdGF0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CihXZWJDb3JlOjpBWElzb2xh
dGVkT2JqZWN0Ojppc0N1cnJlbnRNb2RhbE5vZGUgY29uc3QpOgooV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6aXNNb2RhbE5vZGUgY29uc3QpOiBSZW5hbWVkIHRvIGlzQ3VycmVudE1vZGFsTm9k
ZS4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0Lmg6Ci0tLQogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cCAgIHwgMTMxICsrKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oICB8ICAyMCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAgICAgIHwgICAzICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmggICAgICAgfCAgIDIgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgg
ICAgICAgICAgICB8ICAgMiArLQogLi4uL2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5j
cHAgICAgICAgIHwgICAyICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
ICAgICAgICAgfCAgIDIgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oICAg
ICAgICAgICB8ICAgMiArLQogLi4uL2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3Rl
ZC50eHQgIHwgIDU0ICsrKystLQogLi4uL2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy5odG1s
ICAgICAgICAgIHwgMTc5ICsrKysrKysrKysrLS0tLS0tLQogLi4uZXItYXJpYS1tb2RhbC1lbGVt
ZW50LWFwcGVhcnMtZXhwZWN0ZWQudHh0IHwgIDE1ICsrCiAuLi5vZGFsLWFmdGVyLWFyaWEtbW9k
YWwtZWxlbWVudC1hcHBlYXJzLmh0bWwgfCAgNjMgKysrKysrCiAxMiBmaWxlcyBjaGFuZ2VkLCAz
MjUgaW5zZXJ0aW9ucygrKSwgMTUwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJp
YS1tb2RhbC1lbGVtZW50LWFwcGVhcnMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1h
cmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggOTRmMDAxNzE2NWU0Li5lNDgyODIxYWEx
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cApAQCAtMjIyLDcgKzIyMiw2IEBAIEFYT2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1l
bnQmIGRvY3VtZW50KQogICAgICwgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCkKICAgICAsIG1fcGFzc3dvcmRO
b3RpZmljYXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpwYXNzd29yZE5vdGlm
aWNhdGlvblBvc3RUaW1lckZpcmVkKQogICAgICwgbV9saXZlUmVnaW9uQ2hhbmdlZFBvc3RUaW1l
cigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OmxpdmVSZWdpb25DaGFuZ2VkTm90aWZpY2F0aW9uUG9z
dFRpbWVyRmlyZWQpCi0gICAgLCBtX2ZvY3VzTW9kYWxOb2RlVGltZXIoKnRoaXMsICZBWE9iamVj
dENhY2hlOjpmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQpCiAgICAgLCBtX2N1cnJlbnRNb2RhbEVs
ZW1lbnQobnVsbHB0cikKICAgICAsIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRoaXMsICZB
WE9iamVjdENhY2hlOjpwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKQogewpAQCAtMjQwLDcg
KzIzOSw2IEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKIHsKICAgICBtX25vdGlm
aWNhdGlvblBvc3RUaW1lci5zdG9wKCk7CiAgICAgbV9saXZlUmVnaW9uQ2hhbmdlZFBvc3RUaW1l
ci5zdG9wKCk7Ci0gICAgbV9mb2N1c01vZGFsTm9kZVRpbWVyLnN0b3AoKTsKICAgICBtX3BlcmZv
cm1DYWNoZVVwZGF0ZVRpbWVyLnN0b3AoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0
IDogbV9vYmplY3RzLnZhbHVlcygpKQpAQCAtMjk2LDExICsyOTQsMjMgQEAgYm9vbCBBWE9iamVj
dENhY2hlOjptb2RhbEVsZW1lbnRIYXNBY2Nlc3NpYmxlQ29udGVudChFbGVtZW50JiBlbGVtZW50
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRWxlbWVudCogQVhPYmplY3RDYWNoZTo6Y3VycmVu
dE1vZGFsTm9kZSgpCitFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVDdXJyZW50TW9k
YWxOb2RlKFdpbGxSZWNvbXB1dGVGb2N1cyB3aWxsUmVjb21wdXRlRm9jdXMpCit7CisgICAgYXV0
byogcHJldmlvdXNNb2RhbCA9IG1fY3VycmVudE1vZGFsRWxlbWVudC5nZXQoKTsKKyAgICBtX2N1
cnJlbnRNb2RhbEVsZW1lbnQgPSByZWNvbXB1dGVDdXJyZW50TW9kYWxOb2RlSW5uZXIod2lsbFJl
Y29tcHV0ZUZvY3VzKTsKKyAgICBpZiAocHJldmlvdXNNb2RhbCAhPSBtX2N1cnJlbnRNb2RhbEVs
ZW1lbnQuZ2V0KCkpIHsKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKHJvb3RXZWJBcmVhKCkpOwor
ICAgICAgICAvLyBCZWNhdXNlIHRoZSBwcmVzZW5jZSBvZiBhIG1vZGFsIGFmZmVjdHMgZXZlcnkg
ZWxlbWVudCBvbiB0aGUgcGFnZSwKKyAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgZW50aXJlIGlz
b2xhdGVkIHRyZWUgd2l0aCB0aGUgbmV4dCBjYWNoZSB1cGRhdGUuCisgICAgICAgIG1fcmVnZW5l
cmF0ZUlzb2xhdGVkVHJlZSA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBtX2N1cnJlbnRNb2Rh
bEVsZW1lbnQuZ2V0KCk7Cit9CisKK0VsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUN1
cnJlbnRNb2RhbE5vZGVJbm5lcihXaWxsUmVjb21wdXRlRm9jdXMgd2lsbFJlY29tcHV0ZUZvY3Vz
KQogewogICAgIC8vIFRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG1vZGFsIGRpYWxvZyBub2Rlcy4K
ICAgICAvLyBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBwaWNrIHRoZSBvbmUgd2Ugd2FudC4KLSAg
ICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChtX21vZGFsRWxlbWVu
dHNTZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzE1LDYgKzMy
NSw3IEBAIEVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OmN1cnJlbnRNb2RhbE5vZGUoKQogICAgIC8v
IElmIG5vdCwgd2Ugd2FudCB0byBwaWNrIHRoZSBsYXN0IHZpc2libGUgZGlhbG9nIGluIHRoZSBE
T00uCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQoKS5mb2N1
c2VkRWxlbWVudCgpOwogICAgIFJlZlB0cjxFbGVtZW50PiBsYXN0VmlzaWJsZTsKKyAgICBib29s
IGZvY3VzZWRFbGVtZW50T3V0c2lkZU1vZGFscyA9IGZvY3VzZWRFbGVtZW50OwogICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IG1fbW9kYWxFbGVtZW50c1NldCkgewogICAgICAgICAvLyBFbGVtZW50
cyBpbiBtX21vZGFsRWxlbWVudHNTZXQgbWF5IGhhdmUgYmVjb21lIHVuLW1vZGFsIHNpbmNlIHdl
IGFkZGVkIHRoZW0sIGJ1dCBub3QgeWV0IHJlbW92ZWQKICAgICAgICAgLy8gYXMgcGFydCBvZiB0
aGUgYXN5bmNocm9ub3VzIG1fZGVmZXJyZWRNb2RhbENoYW5nZWRMaXN0IGhhbmRsaW5nLiBTa2lw
IHRoZXNlLgpAQCAtMzI1LDE3ICszMzYsMTggQEAgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6Y3Vy
cmVudE1vZGFsTm9kZSgpCiAgICAgICAgIGlmICghaXNOb2RlVmlzaWJsZShlbGVtZW50KSB8fCAh
bW9kYWxFbGVtZW50SGFzQWNjZXNzaWJsZUNvbnRlbnQoKmVsZW1lbnQpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKKyAgICAgICAgbGFzdFZpc2libGUgPSBlbGVtZW50OwogICAgICAgICBpZiAo
Zm9jdXNlZEVsZW1lbnQgJiYgZm9jdXNlZEVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQp
KSB7Ci0gICAgICAgICAgICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBlbGVtZW50OworICAgICAg
ICAgICAgZm9jdXNlZEVsZW1lbnRPdXRzaWRlTW9kYWxzID0gZmFsc2U7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBsYXN0VmlzaWJsZSA9IGVsZW1lbnQ7CiAgICAgfQog
Ci0gICAgaWYgKCFtX2N1cnJlbnRNb2RhbEVsZW1lbnQpCi0gICAgICAgIG1fY3VycmVudE1vZGFs
RWxlbWVudCA9IGxhc3RWaXNpYmxlLmdldCgpOwotCi0gICAgcmV0dXJuIG1fY3VycmVudE1vZGFs
RWxlbWVudC5nZXQoKTsKKyAgICAvLyBJZiB0aGVyZSBpcyBhIGZvY3VzZWQgZWxlbWVudCwgYW5k
IGl0J3Mgbm90IGluc2lkZSBhbnkgb2YgdGhlIG1vZGFscywgd2Ugc2hvdWxkCisgICAgLy8gY29u
c2lkZXIgYWxsIG1vZGFscyBpbmFjdGl2ZSB0byBhbGxvdyB0aGUgdXNlciB0byBmcmVlbHkgbmF2
aWdhdGUuCisgICAgaWYgKGZvY3VzZWRFbGVtZW50T3V0c2lkZU1vZGFscyAmJiB3aWxsUmVjb21w
dXRlRm9jdXMgPT0gV2lsbFJlY29tcHV0ZUZvY3VzOjpObykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGxhc3RWaXNpYmxlLmdldCgpOwogfQogCiBib29sIEFYT2JqZWN0Q2Fj
aGU6OmlzTm9kZVZpc2libGUoTm9kZSogbm9kZSkgY29uc3QKQEAgLTM4NSw3ICszOTcsNyBAQCBO
b2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5vZGUoKQogICAgICAgICByZXR1cm4gbV9jdXJyZW50
TW9kYWxFbGVtZW50LmdldCgpOwogCiAgICAgLy8gUmVjb21wdXRlIHRoZSB2YWxpZCBhcmlhIG1v
ZGFsIG5vZGUgd2hlbiBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgaXMgbnVsbCBvciBoaWRkZW4uCi0g
ICAgcmV0dXJuIGN1cnJlbnRNb2RhbE5vZGUoKTsKKyAgICByZXR1cm4gcmVjb21wdXRlQ3VycmVu
dE1vZGFsTm9kZSgpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpm
b2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50KiBhcmVhRWxlbWVudCkKQEAg
LTExMTksNiArMTEzMSwxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyTm9kZUFkZGVkT3JS
ZW1vdmVkKE5vZGUqIG5vZGUpCiAKICAgICBtX2RlZmVycmVkTm9kZUFkZGVkT3JSZW1vdmVkTGlz
dC5hZGQobm9kZSk7CiAKKyAgICBpZiAoaXM8RWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgYXV0
byogY2hhbmdlZEVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICAgICAgaWYg
KGlzTW9kYWxFbGVtZW50KCpjaGFuZ2VkRWxlbWVudCkpCisgICAgICAgICAgICBkZWZlck1vZGFs
Q2hhbmdlKGNoYW5nZWRFbGVtZW50KTsKKyAgICB9CisKICAgICBpZiAoIW1fcGVyZm9ybUNhY2hl
VXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKIH0KQEAgLTEzNTEsMTIgKzEzNjksMTQgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpkZWZlck1vZGFsQ2hhbmdlKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIG1f
cGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAgICAgCi12b2lk
IEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZE5v
ZGUsIE5vZGUqIG5ld05vZGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZE5vZGUsIE5vZGUqIG5ld05vZGUsIFJlY29tcHV0ZU1vZGFs
IHJlY29tcHV0ZU1vZGFsKQogewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RS
RUUpCiAgICAgc2V0SXNvbGF0ZWRUcmVlRm9jdXNlZE9iamVjdChuZXdOb2RlKTsKICNlbmRpZgog
CisgICAgaWYgKHJlY29tcHV0ZU1vZGFsID09IFJlY29tcHV0ZU1vZGFsOjpZZXMpCisgICAgICAg
IHJlY29tcHV0ZUN1cnJlbnRNb2RhbE5vZGUoKTsKICAgICBoYW5kbGVNZW51SXRlbVNlbGVjdGVk
KG5ld05vZGUpOwogICAgIHBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQob2xk
Tm9kZSwgbmV3Tm9kZSk7CiB9CkBAIC0xNzQ5LDcgKzE3NjksNyBAQCBzdGF0aWMgQWNjZXNzaWJp
bGl0eU9iamVjdCogZmlyc3RGb2N1c2FibGVDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmop
CiB7CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAg
Zm9yIChhdXRvKiBjaGlsZCA9IG9iai0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmNhblNldEZvY3VzQXR0cmli
dXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CkBAIC0xNzU5LDE1ICsxNzc5LDcgQEAg
c3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Rm9jdXNhYmxlQ2hpbGQoQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEFYT2JqZWN0
Q2FjaGU6OmZvY3VzTW9kYWxOb2RlKCkKLXsKLSAgICBpZiAobV9mb2N1c01vZGFsTm9kZVRpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZm9jdXNNb2RhbE5vZGVUaW1lci5zdG9wKCk7Ci0gICAg
Ci0gICAgbV9mb2N1c01vZGFsTm9kZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotfQotCi12b2lk
IEFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJlZCgpCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OmZvY3VzQ3VycmVudE1vZGFsKCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQuaGFzTGl2
aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzc1LDYgKzE3ODcsMTAgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQoKQogICAgIFJlZjxE
b2N1bWVudD4gcHJvdGVjdGVkRG9jdW1lbnQobV9kb2N1bWVudCk7CiAgICAgaWYgKCFub2RlQW5k
UmVuZGVyZXJBcmVWYWxpZChtX2N1cnJlbnRNb2RhbEVsZW1lbnQuZ2V0KCkpIHx8ICFpc05vZGVW
aXNpYmxlKG1fY3VycmVudE1vZGFsRWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIERvbid0IGZvY3VzIHRoZSBjdXJyZW50IG1vZGFsIGlmIGZvY3VzIGhhcyBiZWVuIHJl
cXVlc3RlZCB0byBiZSBwdXQgZWxzZXdoZXJlIChlLmcuIHZpYSBKUykuCisgICAgaWYgKCFtX2Rl
ZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgLy8gRG9uJ3Qgc2V0IGZvY3VzIGlmIHdlIGFyZSBhbHJlYWR5IGZvY3VzaW5nIG9udG8g
c29tZSBlbGVtZW50IHdpdGhpbgogICAgIC8vIHRoZSBkaWFsb2cuCkBAIC0xOTc1LDM0ICsxOTkx
LDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihl
bGVtZW50LCBBWE9iamVjdENhY2hlOjpBWFNvcnREaXJlY3Rpb25DaGFuZ2VkKTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZShFbGVtZW50JiBlbGVtZW50KQotewot
ICAgIGlmICghaXM8SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQpICYmICFub2RlSGFzUm9sZSgm
ZWxlbWVudCwgImRpYWxvZyJfcykgJiYgIW5vZGVIYXNSb2xlKCZlbGVtZW50LCAiYWxlcnRkaWFs
b2ciX3MpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0
QXR0cmlidXRlcygpOwotCi0gICAgaWYgKCFtX21vZGFsTm9kZXNJbml0aWFsaXplZCkKLSAgICAg
ICAgZmluZE1vZGFsTm9kZXMoKTsKLQotICAgIGlmIChpc01vZGFsRWxlbWVudChlbGVtZW50KSkg
ewotICAgICAgICAvLyBBZGQgdGhlIG5ld2x5IG1vZGlmaWVkIG5vZGUgdG8gdGhlIG1vZGFsIG5v
ZGVzIHNldC4KLSAgICAgICAgLy8gV2Ugd2lsbCByZWNvbXB1dGUgdGhlIGN1cnJlbnQgdmFsaWQg
YXJpYSBtb2RhbCBub2RlIGluIG1vZGFsTm9kZSgpIHdoZW4gdGhpcyBub2RlIGlzIG5vdCB2aXNp
YmxlLgotICAgICAgICBtX21vZGFsRWxlbWVudHNTZXQuYWRkKCZlbGVtZW50KTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBSZW1vdmUgdGhlIG5vZGUgZnJvbSB0aGUgbW9kYWwgbm9kZXMgc2V0
LgotICAgICAgICBtX21vZGFsRWxlbWVudHNTZXQucmVtb3ZlKCZlbGVtZW50KTsKLSAgICB9Ci0K
LSAgICAvLyBGaW5kIG5ldyBhY3RpdmUgbW9kYWwgbm9kZS4KLSAgICBjdXJyZW50TW9kYWxOb2Rl
KCk7Ci0KLSAgICBpZiAobV9jdXJyZW50TW9kYWxFbGVtZW50KQotICAgICAgICBmb2N1c01vZGFs
Tm9kZSgpOwotCi0gICAgc3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxU
cmVlTXV0YXRlcygpOwotfQotCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZChFbGVt
ZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVChpczxIVE1MTGFiZWxFbGVtZW50PigqZWxlbWVu
dCkpOwpAQCAtMzM4OSwyMyArMzM3Nyw1OCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1E
ZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICBtX2RlZmVycmVkQXR0cmlidXRlQ2hhbmdlLmNsZWFy
KCk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBkZWZlcnJlZEZvY3VzZWRDaGFuZ2VDb250ZXh0IDog
bV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlKSB7Ci0gICAgICAgIGhhbmRsZUZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkKGRlZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQuZmlyc3QsIGRlZmVycmVk
Rm9jdXNlZENoYW5nZUNvbnRleHQuc2Vjb25kKTsKKyAgICAgICAgLy8gRG9uJ3QgcmVjb21wdXRl
IHRoZSBhY3RpdmUgbW9kYWwgZm9yIGVhY2ggaW5kaXZpZGFsIGZvY3VzIGNoYW5nZSwgYXMgdGhh
dCBjb3VsZCBjYXVzZSBhIGxvdCBvZiBleHBlbnNpdmUgdHJlZSByZWJ1aWxkaW5nLiBJbnN0ZWFk
LCB3ZSBkbyBpdCBvbmNlIGJlbG93LgorICAgICAgICBoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hh
bmdlZChkZWZlcnJlZEZvY3VzZWRDaGFuZ2VDb250ZXh0LmZpcnN0LCBkZWZlcnJlZEZvY3VzZWRD
aGFuZ2VDb250ZXh0LnNlY29uZCwgUmVjb21wdXRlTW9kYWw6Ok5vKTsKICAgICAgICAgLy8gUmVj
b21wdXRlIGlzSWdub3JlZCBhZnRlciBhIGZvY3VzIGNoYW5nZSBpbiBjYXNlIHRoYXQgYWx0ZXJl
ZCB2aXNpYmlsaXR5LgogICAgICAgICByZWNvbXB1dGVJc0lnbm9yZWQoZGVmZXJyZWRGb2N1c2Vk
Q2hhbmdlQ29udGV4dC5maXJzdCk7CiAgICAgICAgIHJlY29tcHV0ZUlzSWdub3JlZChkZWZlcnJl
ZEZvY3VzZWRDaGFuZ2VDb250ZXh0LnNlY29uZCk7CiAgICAgfQorICAgIGJvb2wgdXBkYXRlZEZv
Y3VzZWRFbGVtZW50ID0gIW1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZS5pc0VtcHR5KCk7Cisg
ICAgLy8gSWYgd2UgY2hhbmdlZCB0aGUgZm9jdXNlZCBlbGVtZW50LCB0aGF0IGNvdWxkIGFmZmVj
dCB3aGF0IG1vZGFsIHNob3VsZCBiZSBhY3RpdmUsIHNvIHJlY29tcHV0ZSBpdC4KKyAgICBib29s
IHNob3VsZFJlY29tcHV0ZU1vZGFsID0gdXBkYXRlZEZvY3VzZWRFbGVtZW50OwogICAgIG1fZGVm
ZXJyZWRGb2N1c2VkTm9kZUNoYW5nZS5jbGVhcigpOwogCi0gICAgbV9kZWZlcnJlZE1vZGFsQ2hh
bmdlZExpc3QuZm9yRWFjaChbdGhpc10gKGF1dG8mIGRlZmVycmVkTW9kYWxDaGFuZ2VkRWxlbWVu
dCkgewotICAgICAgICBoYW5kbGVNb2RhbENoYW5nZShkZWZlcnJlZE1vZGFsQ2hhbmdlZEVsZW1l
bnQpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZGVmZXJyZWRNb2RhbENo
YW5nZWRMaXN0KSB7CisgICAgICAgIGlmICghaXM8SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQp
ICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImRpYWxvZyJfcykgJiYgIW5vZGVIYXNSb2xlKCZl
bGVtZW50LCAiYWxlcnRkaWFsb2ciX3MpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgc2hvdWxkUmVjb21wdXRlTW9kYWwgPSB0cnVlOworICAgICAgICBpZiAoIW1fbW9kYWxOb2Rl
c0luaXRpYWxpemVkKQorICAgICAgICAgICAgZmluZE1vZGFsTm9kZXMoKTsKKworICAgICAgICBp
ZiAoaXNNb2RhbEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3
bHkgbW9kaWZpZWQgbm9kZSB0byB0aGUgbW9kYWwgbm9kZXMgc2V0LgorICAgICAgICAgICAgLy8g
V2Ugd2lsbCByZWNvbXB1dGUgdGhlIGN1cnJlbnQgdmFsaWQgYXJpYSBtb2RhbCBub2RlIGluIG1v
ZGFsTm9kZSgpIHdoZW4gdGhpcyBub2RlIGlzIG5vdCB2aXNpYmxlLgorICAgICAgICAgICAgbV9t
b2RhbEVsZW1lbnRzU2V0LmFkZCgmZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9tb2RhbEVsZW1lbnRzU2V0LnJlbW92ZSgmZWxlbWVudCk7CisgICAgfQogICAgIG1fZGVm
ZXJyZWRNb2RhbENoYW5nZWRMaXN0LmNsZWFyKCk7CiAKKyAgICBpZiAoc2hvdWxkUmVjb21wdXRl
TW9kYWwpIHsKKyAgICAgICAgLy8gIldoZW4gYSBtb2RhbCBlbGVtZW50IGlzIGRpc3BsYXllZCwg
YXNzaXN0aXZlIHRlY2hub2xvZ2llcyBTSE9VTEQgbmF2aWdhdGUgdG8gdGhlIGVsZW1lbnQgdW5s
ZXNzIGZvY3VzIGhhcyBleHBsaWNpdGx5IGJlZW4gc2V0IGVsc2V3aGVyZS4iCisgICAgICAgIC8v
IGB1cGRhdGVkRm9jdXNlZEVsZW1lbnRgIGluZGljYXRlcyBmb2N1cyB3YXMgZXhwbGljaXRseSBz
ZXQgZWxzZXdoZXJlLCBzbyBkb24ndCBhdXRvZm9jdXMgaW50byB0aGUgbW9kYWwuCisgICAgICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9hcmlhLyNhcmlhLW1vZGFsCisgICAgICAgIHJlY29t
cHV0ZUN1cnJlbnRNb2RhbE5vZGUodXBkYXRlZEZvY3VzZWRFbGVtZW50ID8gV2lsbFJlY29tcHV0
ZUZvY3VzOjpObyA6IFdpbGxSZWNvbXB1dGVGb2N1czo6WWVzKTsKKyAgICAgICAgaWYgKCF1cGRh
dGVkRm9jdXNlZEVsZW1lbnQpCisgICAgICAgICAgICBmb2N1c0N1cnJlbnRNb2RhbCgpOworICAg
IH0KKwogICAgIG1fZGVmZXJyZWRNZW51TGlzdENoYW5nZS5mb3JFYWNoKFt0aGlzXSAoYXV0byYg
ZWxlbWVudCkgewogICAgICAgICBoYW5kbGVNZW51TGlzdFZhbHVlQ2hhbmdlZChlbGVtZW50KTsK
ICAgICB9KTsKICAgICBtX2RlZmVycmVkTWVudUxpc3RDaGFuZ2UuY2xlYXIoKTsKIAorICAgIGlm
IChtX3JlZ2VuZXJhdGVJc29sYXRlZFRyZWUgJiYgbV9wYWdlSUQpIHsKKyAgICAgICAgaWYgKGF1
dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCptX3BhZ2VJRCkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiB3ZWJBcmVhID0gcm9vdFdlYkFyZWEoKSkgeworICAgICAgICAg
ICAgICAgIEFYTE9HKCJSZWdlbmVyYXRpbmcgaXNvbGF0ZWQgdHJlZSBmcm9tIEFYT2JqZWN0Q2Fj
aGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkuIik7CisgICAgICAgICAgICAgICAgdHJl
ZS0+Z2VuZXJhdGVTdWJ0cmVlKCp3ZWJBcmVhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICBtX3JlZ2VuZXJhdGVJc29sYXRlZFRyZWUgPSBmYWxzZTsKKwogICAgIHBsYXRm
b3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBmYmUzZmQyNzg1NzAuLjE3YjMyYTVm
YmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
QEAgLTM0MCw3ICszNDAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0VGV4dFN0YXRlQ2hhbmdl
Tm90aWZpY2F0aW9uKE5vZGUqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmlj
YXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIHBvc3RMaXZlUmVnaW9uQ2hhbmdlTm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICB2b2lkIGZvY3VzTW9kYWxOb2Rl
KCk7CiAKICAgICBlbnVtIEFYTG9hZGluZ0V2ZW50IHsKICAgICAgICAgQVhMb2FkaW5nU3RhcnRl
ZCwKQEAgLTQ1Myw3ICs0NTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsaXZlUmVnaW9uQ2hh
bmdlZE5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCk7CiAgICAgCi0gICAgdm9pZCBmb2N1c01v
ZGFsTm9kZVRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGZvY3VzQ3VycmVudE1vZGFsKCk7CiAgICAg
CiAgICAgdm9pZCBwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKCk7CiAKQEAgLTQ3OSwxNSAr
NDc4LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdl
ZChFbGVtZW50Jik7CiAKICAgICB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKik7
Ci0gICAgdm9pZCBoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRGb2N1c2Vk
Tm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUpOworICAgIGVudW0gY2xhc3MgUmVjb21wdXRlTW9k
YWwgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENo
YW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlLCBSZWNvbXB1
dGVNb2RhbCA9IFJlY29tcHV0ZU1vZGFsOjpZZXMpOwogICAgIHZvaWQgaGFuZGxlTWVudUxpc3RW
YWx1ZUNoYW5nZWQoRWxlbWVudCYpOwogCiAgICAgLy8gYXJpYS1tb2RhbCBvciBtb2RhbCA8ZGlh
bG9nPiByZWxhdGVkCiAgICAgYm9vbCBpc01vZGFsRWxlbWVudChFbGVtZW50JikgY29uc3Q7CiAg
ICAgdm9pZCBmaW5kTW9kYWxOb2RlcygpOwotICAgIEVsZW1lbnQqIGN1cnJlbnRNb2RhbE5vZGUo
KTsKKyAgICBlbnVtIGNsYXNzIFdpbGxSZWNvbXB1dGVGb2N1cyA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgRWxlbWVudCogcmVjb21wdXRlQ3VycmVudE1vZGFsTm9kZShXaWxsUmVjb21wdXRlRm9j
dXMgPSBXaWxsUmVjb21wdXRlRm9jdXM6Ok5vKTsKKyAgICBFbGVtZW50KiByZWNvbXB1dGVDdXJy
ZW50TW9kYWxOb2RlSW5uZXIoV2lsbFJlY29tcHV0ZUZvY3VzID0gV2lsbFJlY29tcHV0ZUZvY3Vz
OjpObyk7CiAgICAgYm9vbCBpc05vZGVWaXNpYmxlKE5vZGUqKSBjb25zdDsKLSAgICB2b2lkIGhh
bmRsZU1vZGFsQ2hhbmdlKEVsZW1lbnQmKTsKICAgICBib29sIG1vZGFsRWxlbWVudEhhc0FjY2Vz
c2libGVDb250ZW50KEVsZW1lbnQmKTsKIAogICAgIC8vIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBv
YmplY3RzLgpAQCAtNTI5LDcgKzUzMCw2IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9saXZlUmVn
aW9uQ2hhbmdlZFBvc3RUaW1lcjsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4+IG1fbGl2ZVJlZ2lvbk9iamVjdHNTZXQ7CiAKLSAgICBUaW1lciBtX2ZvY3VzTW9k
YWxOb2RlVGltZXI7CiAgICAgV2Vha1B0cjxFbGVtZW50PiBtX2N1cnJlbnRNb2RhbEVsZW1lbnQ7
CiAgICAgLy8gTXVsdGlwbGUgYXJpYS1tb2RhbHMgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGJ5IHNw
ZWMuIFdlIGtlZXAgdGhlbSBzb3J0ZWQgYmFzZWQgb24gRE9NIG9yZGVyIGhlcmUuCiAgICAgLy8g
SWYgdGhhdCBjaGFuZ2VzIHRvIHJlcXVpcmUgb25seSBvbmUgYXJpYS1tb2RhbCB3ZSBjb3VsZCBj
aGFuZ2UgdGhpcyB0byBhIFdlYWtIYXNoU2V0LCBvciBkaXNjYXJkIHRoZSBzZXQgY29tcGxldGVs
eS4KQEAgLTU1MSw2ICs1NTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8RWxlbWVudCosIFN0
cmluZz4gbV9kZWZlcnJlZFRleHRGb3JtQ29udHJvbFZhbHVlOwogICAgIEhhc2hNYXA8RWxlbWVu
dCosIFF1YWxpZmllZE5hbWU+IG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2U7CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7Cisg
ICAgYm9vbCBtX3JlZ2VuZXJhdGVJc29sYXRlZFRyZWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c1N5bmNocm9uaXppbmdTZWxlY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZXJmb3JtaW5n
RGVmZXJyZWRDYWNoZVVwZGF0ZSB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbG9hZGluZ1Byb2dy
ZXNzIHsgMCB9OwpAQCAtNTg2LDcgKzU4Nyw3IEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Z2V0SWdub3JlZChBCiBp
bmxpbmUgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dDo6QWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4
dChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBY2Nlc3NpYmlsaXR5
UmVwbGFjZWRUZXh0Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKEFYT2JqZWN0Q2Fj
aGUqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIHsgfQogaW5saW5lIHZvaWQgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpzZXRJ
Z25vcmVkKEFYSUQsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24pIHsgfQotaW5saW5lIEFY
T2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpLCBtX25vdGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2Fj
aGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBv
c3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRp
bWVyRmlyZWQpLCBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RD
YWNoZTo6bGl2ZVJlZ2lvbkNoYW5nZWROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCksIG1fZm9j
dXNNb2RhbE5vZGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGlt
ZXJGaXJlZCksIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hl
OjpwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKSB7IH0KK2lubGluZSBBWE9iamVjdENhY2hl
OjpBWE9iamVjdENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgOiBtX2RvY3VtZW50KGRvY3VtZW50
KSwgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCksIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXIoKnRo
aXMsICZBWE9iamVjdENhY2hlOjpwYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwg
bV9saXZlUmVnaW9uQ2hhbmdlZFBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OmxpdmVS
ZWdpb25DaGFuZ2VkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpLCBtX3BlcmZvcm1DYWNoZVVw
ZGF0ZVRpbWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6cGVyZm9ybUNhY2hlVXBkYXRlVGltZXJG
aXJlZCkgeyB9CiBpbmxpbmUgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKSB7IH0KIGlu
bGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoUmVuZGVyT2JqZWN0
KikgeyByZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2Jq
ZWN0Q2FjaGU6OmdldChOb2RlKikgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNjIxLDE5ICs2MjIs
MTggQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0UmVwbGFjZW1lbnROb3Rp
ZmljYXRpb25Gb3JUZXh0Q29udHJvbChIVE1MVGUKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFV
U0UoQVRTUEkpCiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFYQ29y
ZU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkgeyB9CiAjZW5kaWYKLWlubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJlZCgpIHsgfQoraW5s
aW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Zm9jdXNDdXJyZW50TW9kYWwoKSB7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyRmlyZWQoKSB7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKEZy
YW1lKiwgQVhMb2FkaW5nRXZlbnQpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZnJh
bWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
QVhMb2FkaW5nRXZlbnQpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0
aXZlRGVzY2VuZGFudENoYW5nZWQoRWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKE5vZGUqKSB7IH0KLWlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdlKEVsZW1lbnQmKSB7IH0KIGlubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6OmRlZmVyTW9kYWxDaGFuZ2UoRWxlbWVudCopIHsgfQogaW5saW5lIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm9sZUNoYW5nZShBY2Nlc3NpYmlsaXR5T2JqZWN0Kikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlckF0dHJpYnV0ZUNoYW5nZUlmTmVl
ZGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFbGVtZW50KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEVs
ZW1lbnQqKSB7IH0KIGlubGluZSBib29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFByb2Nlc3NBdHRy
aWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEVsZW1lbnQqKSB7IHJldHVybiBmYWxz
ZTsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENo
YW5nZWQoTm9kZSosIE5vZGUqKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRs
ZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqLCBOb2RlKiwgUmVjb21wdXRlTW9kYWwpIHsg
fQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsYmFyVXBkYXRlKFNjcm9s
bFZpZXcqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGVkVG9B
bmNob3IoY29uc3QgTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6bGl2ZVJl
Z2lvbkNoYW5nZWROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
ZTdiOTkyYTRmYTRhLi40NzU0MWFjZmNiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjI2MSw3ICsyMjYxLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc01vZGFsRGVzY2VuZGFudChOb2RlKiBtb2Rh
bE5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIG5vZGUtPmlzRGVzY2VuZGFudE9mKCptb2RhbE5vZGUp
OwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTW9kYWxOb2RlKCkgY29uc3QKK2Jv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDdXJyZW50TW9kYWxOb2RlKCkgY29uc3QKIHsKICAg
ICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCiAgICAgICAgIHJl
dHVybiBub2RlKCkgJiYgY2FjaGUtPm1vZGFsTm9kZSgpID09IG5vZGUoKTsKQEAgLTQzMTIsNiAr
NDMxMiw3IEBAIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWEgY29uc3QmIGNyaXRlcmlhLCBBWENvcmVPYmplCiAKICAgICAvLyBUaGUgb3V0ZXIgbG9v
cCBzdGVwcyB1cCB0aGUgcGFyZW50IGNoYWluIGVhY2ggdGltZSAodW5pZ25vcmVkIGlzIGltcG9y
dGFudCBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIGVsZW1lbnRzIHdvdWxkIGJlIHNlYXJjaGVkIHR3
aWNlKQogICAgIGZvciAoYXV0byogc3RvcFNlYXJjaEVsZW1lbnQgPSBjcml0ZXJpYS5hbmNob3JP
YmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOyBzdGFydE9iamVjdCAmJiBzdGFydE9iamVj
dCAhPSBzdG9wU2VhcmNoRWxlbWVudDsgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50
T2JqZWN0VW5pZ25vcmVkKCkpIHsKKwogICAgICAgICAvLyBPbmx5IGFwcGVuZCB0aGUgY2hpbGRy
ZW4gYWZ0ZXIvYmVmb3JlIHRoZSBwcmV2aW91cyBlbGVtZW50LCBzbyB0aGF0IHRoZSBzZWFyY2gg
ZG9lcyBub3QgY2hlY2sgZWxlbWVudHMgdGhhdCBhcmUKICAgICAgICAgLy8gYWxyZWFkeSBiZWhp
bmQvYWhlYWQgb2Ygc3RhcnQgZWxlbWVudC4KICAgICAgICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VhcmNoU3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDVjZTNjZWNlZTIzNi4u
ZDQwZDkxZDRhMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzQzLDcgKzM0Myw3IEBAIHB1YmxpYzoKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4g
dGhlcmUncyBhIG1vZGFsIGRpYWxvZyBkaXNwbGF5ZWQuCiAgICAgdmlydHVhbCBib29sIGlnbm9y
ZWRGcm9tTW9kYWxQcmVzZW5jZSgpIGNvbnN0OwogICAgIGJvb2wgaXNNb2RhbERlc2NlbmRhbnQo
Tm9kZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzQ3VycmVudE1vZGFsTm9kZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBzdXBwb3J0c1NldFNpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBv
cnRzUG9zSW5TZXQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXgg
Zjc0Nzg0YTk1MGMzLi45Y2FkNWI5OGZhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0x
MTEzLDcgKzExMTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBp
ZiB0aGUgb2JqZWN0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gdGhlcmUncyBhIG1vZGFsIGRpYWxv
ZyBkaXNwbGF5ZWQuCiAgICAgdmlydHVhbCBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzTW9kYWxOb2RlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRNb2RhbE5vZGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNTZXRTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1Bvc0luU2V0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3Bw
CmluZGV4IDgyZjQwMDY3ZTg2NS4uNTFiNjQ0MGJkZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkuY3BwCkBAIC04MzQsNyArODM0LDcgQEAgdWludDY0X3QgQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpzdGF0ZSgpIGNvbnN0CiAgICAgZWxzZSBpZiAoKG1fY29yZU9iamVjdC0+aXNDaGVj
a2JveE9yUmFkaW8oKSB8fCBtX2NvcmVPYmplY3QtPmlzTWVudUl0ZW0oKSB8fCBtX2NvcmVPYmpl
Y3QtPmlzVG9nZ2xlQnV0dG9uKCkpICYmIG1fY29yZU9iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkKQogICAgICAgICBhZGRTdGF0
ZShBdHNwaTo6U3RhdGU6OkluZGV0ZXJtaW5hdGUpOwogCi0gICAgaWYgKG1fY29yZU9iamVjdC0+
aXNNb2RhbE5vZGUoKSkKKyAgICBpZiAobV9jb3JlT2JqZWN0LT5pc0N1cnJlbnRNb2RhbE5vZGUo
KSkKICAgICAgICAgYWRkU3RhdGUoQXRzcGk6OlN0YXRlOjpNb2RhbCk7CiAKICAgICBpZiAobV9j
b3JlT2JqZWN0LT5pc0J1c3koKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMGQ3
MjRiZTg3NDE3Li5jZDIzMDdmMWUxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBA
IC0xOTU1LDcgKzE5NTUsNyBAQCBib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9kYWxEZXNjZW5k
YW50KE5vZGUqKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBWElzb2xhdGVk
T2JqZWN0Ojppc01vZGFsTm9kZSgpIGNvbnN0Citib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzQ3Vy
cmVudE1vZGFsTm9kZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDBlZDkwNGY5MGQ3Ni4u
ODNkNjg1NTIxMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC01NjMsNyArNTYzLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgc3VwcG9ydHNSb3dDb3VudENoYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNSb3dDb3VudENoYW5n
ZSk7IH0KICAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0N1cnJl
bnRNb2RhbE5vZGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlh
bG9ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwt
bXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQKaW5kZXggNDkxYTNjN2Q4MjM1Li5lOTIyYTY4
NWU2ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1t
dWx0aXBsZS1kaWFsb2dzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQKQEAgLTEsMjAgKzEs
NTAgQEAKIFRoaXMgdGVzdHMgdGhhdCBhcmlhLW1vZGFsIHdvcmtzIGNvcnJlY3RseSBvbiBtdWx0
aXBsZSBkaWFsb2dzCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGJhY2tn
cm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQotUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlz
IGZhbHNlCi1QQVNTIGRpYWxvZzFBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQotUEFTUyBiYWNrZ3JvdW5k
QWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGRpYWxvZzFBY2Nlc3NpYmxlKCkgaXMgZmFsc2UK
LVBBU1MgY2xvc2VCdG4uaXNJZ25vcmVkIGlzIGZhbHNlCi1QQVNTIGJhY2tncm91bmRBY2Nlc3Np
YmxlKCkgaXMgZmFsc2UKLVBBU1MgZGlhbG9nMUFjY2Vzc2libGUoKSBpcyB0cnVlCi1QQVNTIGJh
Y2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorCitWZXJpZnlpbmcgdGhlIGJhY2tncm91bmQg
aXMgYWNjZXNzaWJsZSBvbiBwYWdlIGxvYWQuCisKK1BBU1M6IGJhY2tncm91bmQgYWNjZXNzaWJs
ZTogdHJ1ZQorCitDbGlja2luZyB0aGUgZGlzcGxheSBidXR0b24gdG8gb3BlbiAjZGlhbG9nMS4K
KworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxzZQorUEFTUzogI2RpYWxvZzEgYWNj
ZXNzaWJsZTogdHJ1ZQorCitDbGlja2luZyB0aGUgbmV3IGJ1dHRvbiB0byBvcGVuICNkaWFsb2cy
IHdpdGhvdXQgY2xvc2luZyAjZGlhbG9nMS4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxl
OiBmYWxzZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cy
IGFjY2Vzc2libGU6IHRydWUKKworRm9jdXNpbmcgb24gYmFja2dyb3VuZC4KKworUEFTUzogYmFj
a2dyb3VuZCBhY2Nlc3NpYmxlOiB0cnVlCisKK0ZvY3VzaW5nIGZpcnN0IGRlc2NlbmRhbnQgb2Yg
I2RpYWxvZzEuCisKK1BBU1M6IGJhY2tncm91bmQgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNk
aWFsb2cxIGFjY2Vzc2libGU6IHRydWUKK1BBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6IGZhbHNl
CisKK01vdmluZyBmb2N1cyBiYWNrIHRvIGZpcnN0IGRlc2NlbmRhbnQgb2YgI2RpYWxvZzIuCisK
K1BBU1M6IGJhY2tncm91bmQgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cxIGFjY2Vz
c2libGU6IGZhbHNlCitQQVNTOiAjZGlhbG9nMiBhY2Nlc3NpYmxlOiB0cnVlCisKK0Nsb3Npbmcg
ZGlhbG9nMi4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxzZQorUEFTUzogI2Rp
YWxvZzEgYWNjZXNzaWJsZTogdHJ1ZQorCitDbG9zaW5nIGRpYWxvZzEuCisKK1BBU1M6IGJhY2tn
cm91bmQgYWNjZXNzaWJsZTogdHJ1ZQorCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKKwogT3RoZXIgcGFnZSBjb250ZW50IHdpdGggYSBkdW1teSBmb2N1
c2FibGUgZWxlbWVudAogCiBEaXNwbGF5IGEgZGlhbG9nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbAppbmRl
eCAyODJhYWU0ZmIyMTYuLjFiZDgxMzk1Y2Q1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy5odG1sCkBAIC0x
LDk0ICsxLDEzNyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5
LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogCi08c3R5bGU+Ci0uYm94LWhpZGRlbiB7Ci0gICAgZGlz
cGxheTogbm9uZTsKLX0KLTwvc3R5bGU+Cis8Ym9keT4KIAotPGJvZHkgaWQ9ImJvZHkiPgorPGlu
cHV0IHR5cGU9InRleHQiIGlkPSJ0ZXh0ZmllbGQiIHZhbHVlPSJUZXh0IGZpZWxkLiI+Cis8cCBp
ZD0iYmdDb250ZW50Ij5PdGhlciBwYWdlIGNvbnRlbnQgd2l0aCA8YSBpZD0iYmFja2dyb3VuZC1s
aW5rIiB0YWJpbmRleD0iMCIgaHJlZj0iIyI+YSBkdW1teSBmb2N1c2FibGUgZWxlbWVudDwvYT48
L3A+Cis8cD48YSBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2RpYWxvZzEnKSwgJ3Nob3cnKTsgcmV0dXJuIGZhbHNlOyIgaHJlZj0iIyIgcm9sZT0iYnV0dG9u
IiBpZD0iZGlzcGxheUJ0biI+RGlzcGxheSBhIGRpYWxvZzwvYT48L3A+CiAKLTxkaXYgaWQ9ImJn
Ij4KLTxwIGlkPSJiZ0NvbnRlbnQiPk90aGVyIHBhZ2UgY29udGVudCB3aXRoIDxhIGhyZWY9IiMi
PmEgZHVtbXkgZm9jdXNhYmxlIGVsZW1lbnQ8L2E+PC9wPgotPHA+PGEgb25jbGljaz0idG9nZ2xl
RGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSwnc2hvdycpOyByZXR1cm4gZmFs
c2U7IiBocmVmPSIjIiByb2xlPSJidXR0b24iIGlkPSJkaXNwbGF5QnRuIj5EaXNwbGF5IGEgZGlh
bG9nPC9hPjwvcD4KKzxkaXYgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImRlc2NyaXB0
aW9uMSIgaWQ9ImRpYWxvZzEiIHN0eWxlPSJkaXNwbGF5OiBub25lIiB0YWJpbmRleD0iLTEiPgor
ICAgIDxoMyBpZD0iZGVzY3JpcHRpb24xIj5KdXN0IGFuIGV4YW1wbGUuPC9oMz4KKyAgICA8YSBp
ZD0iZGlhbG9nMS1saW5rIiB0YWJpbmRleD0iMCIgaHJlZj0iIyI+TGluayBwcmVzZW50IHRvIGVu
c3VyZSB3ZSBoYXZlIGEgZm9jdXNhYmxlIGVsZW1lbnQ8L2E+CisgICAgPGJ1dHRvbiBpZD0ib2si
IG9uY2xpY2s9InRvZ2dsZURpYWxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nMScp
LCAnaGlkZScpOyI+T0s8L2J1dHRvbj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InRvZ2dsZURpYWxv
Zyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nMicpLCAnc2hvdycpOyIgaWQ9Im5ldyI+
TmV3PC9idXR0b24+CiA8L2Rpdj4KIAotPGRpdiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRi
eT0ibXlEaWFsb2ciIGlkPSJib3giIGNsYXNzPSJib3gtaGlkZGVuIiB0YWJpbmRleD0iLTEiPgot
ICAgIDxoMyBpZD0ibXlEaWFsb2ciPkp1c3QgYW4gZXhhbXBsZS48L2gzPgotICAgIDxidXR0b24g
aWQ9Im9rIiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
eCcpLCdoaWRlJyk7IiBjbGFzcz0iY2xvc2UtYnV0dG9uIj5PSzwvYnV0dG9uPgotICAgIDxidXR0
b24gb25jbGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gyJyks
J3Nob3cnKTsiIGlkPSJuZXciPk5ldzwvYnV0dG9uPgorPGRpdiByb2xlPSJkaWFsb2ciIGFyaWEt
bGFiZWxsZWRieT0iZGVzY3JpcHRpb24yIiBpZD0iZGlhbG9nMiIgc3R5bGU9ImRpc3BsYXk6IG5v
bmUiIHRhYmluZGV4PSItMSI+CisgICAgPGgzIGlkPSJkZXNjcmlwdGlvbjIiPkFub3RoZXIgZGlh
bG9nLjwvaDM+CisgICAgPGEgaWQ9ImRpYWxvZzItbGluayIgdGFiaW5kZXg9IjAiIGhyZWY9IiMi
PkxpbmsgcHJlc2VudCB0byBlbnN1cmUgd2UgaGF2ZSBhIGZvY3VzYWJsZSBlbGVtZW50PC9hPgor
ICAgIDxidXR0b24gaWQ9ImNsb3NlIiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RpYWxvZzInKSwgJ2hpZGUnKTsiPkNsb3NlPC9idXR0b24+CiA8L2Rpdj4K
IAotPGRpdiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ibXlEaWFsb2cyIiBpZD0iYm94
MiIgY2xhc3M9ImJveC1oaWRkZW4iIHRhYmluZGV4PSItMSI+Ci0gICAgPGgzIGlkPSJteURpYWxv
ZzIiPkFub3RoZXIgZGlhbG9nLjwvaDM+Ci0gICAgPGJ1dHRvbiBpZD0iY2xvc2UiIG9uY2xpY2s9
InRvZ2dsZURpYWxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpLCdoaWRlJyk7IiBj
bGFzcz0iY2xvc2UtYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgotPC9kaXY+Cis8c2NyaXB0PgorICAg
IHZhciB0ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCBhcmlhLW1vZGFsIHdvcmtzIGNvcnJl
Y3RseSBvbiBtdWx0aXBsZSBkaWFsb2dzXG5cbiI7CiAKKyAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KyAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7CisgICAgICAgICAgICB0ZXN0T3V0cHV0
ICs9ICJcblZlcmlmeWluZyB0aGUgYmFja2dyb3VuZCBpcyBhY2Nlc3NpYmxlIG9uIHBhZ2UgbG9h
ZC5cblxuIjsKKyAgICAgICAgICAgIGF3YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKHRydWUpOwog
Ci08c2NyaXB0PgorICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5DbGlja2luZyB0aGUgZGlz
cGxheSBidXR0b24gdG8gb3BlbiAjZGlhbG9nMS5cblxuIjsKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkaXNwbGF5QnRuIikuY2xpY2soKTsKKyAgICAgICAgICAgIGF3YWl0
IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IGRpYWxvZzFB
Y2Nlc3NpYmxlKHRydWUpOwogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhcmlh
LW1vZGFsIHdvcmtzIGNvcnJlY3RseSBvbiBtdWx0aXBsZSBkaWFsb2dzIik7CisgICAgICAgICAg
ICB0ZXN0T3V0cHV0ICs9ICJcbkNsaWNraW5nIHRoZSBuZXcgYnV0dG9uIHRvIG9wZW4gI2RpYWxv
ZzIgd2l0aG91dCBjbG9zaW5nICNkaWFsb2cxLlxuXG4iOworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm5ldyIpLmNsaWNrKCk7CisgICAgICAgICAgICBhd2FpdCBiYWNrZ3Jv
dW5kQWNjZXNzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cxQWNjZXNzaWJs
ZShmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cyQWNjZXNzaWJsZSh0cnVlKTsKIAot
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgLy8gQmFj
a2dyb3VuZCBzaG91bGQgYmUgYWNjZXNzaWJsZSBhZnRlciBsb2FkaW5nLgotICAgICAgICBzaG91
bGRCZVRydWUoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IENsaWNrIHRoZSBkaXNwbGF5IGJ1dHRvbiwgZGlhbG9nMSBzaG93cyBhbmQgYmFja2dyb3VuZCBi
ZWNvbWVzIHVuYWNjZXNzaWJsZS4KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
c3BsYXlCdG4iKS5jbGljaygpOwotICAgICAgICBzaG91bGRCZUZhbHNlKCJiYWNrZ3JvdW5kQWNj
ZXNzaWJsZSgpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZGlhbG9nMUFjY2Vzc2libGUoKSIp
OwotICAgICAgICAKLSAgICAgICAgLy8gQ2xpY2sgdGhlIG5ldyBidXR0b24sIGRpYWxvZzIgc2hv
d3MgYW5kIGJhY2tncm91bmQvZGlhbG9nMSBzaG91bGQgYm90aCBiZSB1bmFjY2Vzc2libGUuCi0g
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXciKS5jbGljaygpOwotICAgICAgICBz
aG91bGRCZUZhbHNlKCJiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIik7Ci0gICAgICAgIHNob3VsZEJl
RmFsc2UoImRpYWxvZzFBY2Nlc3NpYmxlKCkiKTsKLSAgICAgICAgdmFyIGNsb3NlQnRuID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjbG9zZSIpOwotICAg
ICAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUJ0bi5pc0lnbm9yZWQiKTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIENsb3NlIGRpYWxvZzIsIGRpYWxvZzEgc2hvdWxkIGJlY29tZSBhY2Nlc3NpYmxlIGJ1
dCBub3QgdGhlIGJhY2tncm91bmQKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNs
b3NlIikuY2xpY2soKTsKLSAgICAgICAgc2hvdWxkQmVGYWxzZSgiYmFja2dyb3VuZEFjY2Vzc2li
bGUoKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImRpYWxvZzFBY2Nlc3NpYmxlKCkiKTsKLSAg
ICAgICAgCi0gICAgICAgIC8vIENsb3NlIGRpYWxvZzEsIGJhY2tncm91bmQgc2hvdWxkIGJlIGFj
Y2Vzc2libGUuCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvayIpLmNsaWNrKCk7
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiYmFja2dyb3VuZEFjY2Vzc2libGUoKSIpOworICAgICAg
ICAgICAgdGVzdE91dHB1dCArPSAiXG5Gb2N1c2luZyBvbiBiYWNrZ3JvdW5kLlxuXG4iOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRmaWVsZCIpLmZvY3VzKCk7Cisg
ICAgICAgICAgICBhd2FpdCBiYWNrZ3JvdW5kQWNjZXNzaWJsZSh0cnVlKTsKKworICAgICAgICAg
ICAgLy8gV2l0aCBib3RoIG1vZGFscyBhY3RpdmUsIGFuZCBmb2N1cyBjdXJyZW50bHkgaW4gI2Rp
YWxvZzIsIG1vdmluZyBmb2N1cyB0byAjZGlhbG9nMSBzaG91bGQgY2F1c2UgaXQgdG8gYmVjb21l
IHRoZSBhY3RpdmUgbW9kYWwuCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJcbkZvY3VzaW5n
IGZpcnN0IGRlc2NlbmRhbnQgb2YgI2RpYWxvZzEuXG5cbiI7CisgICAgICAgICAgICBmb2N1c0Zp
cnN0RGVzY2VuZGFudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhbG9nMSIpKTsKKyAgICAg
ICAgICAgIGF3YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3
YWl0IGRpYWxvZzFBY2Nlc3NpYmxlKHRydWUpOworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMkFj
Y2Vzc2libGUoZmFsc2UpOworCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJcbk1vdmluZyBm
b2N1cyBiYWNrIHRvIGZpcnN0IGRlc2NlbmRhbnQgb2YgI2RpYWxvZzIuXG5cbiI7CisgICAgICAg
ICAgICBmb2N1c0ZpcnN0RGVzY2VuZGFudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhbG9n
MiIpKTsKKyAgICAgICAgICAgIGF3YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAg
ICAgICAgICAgIGF3YWl0IGRpYWxvZzFBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3
YWl0IGRpYWxvZzJBY2Nlc3NpYmxlKHRydWUpOworCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9
ICJcbkNsb3NpbmcgZGlhbG9nMi5cblxuIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjbG9zZSIpLmNsaWNrKCk7CisgICAgICAgICAgICBhd2FpdCBiYWNrZ3JvdW5kQWNj
ZXNzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cxQWNjZXNzaWJsZSh0cnVl
KTsKKworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5DbG9zaW5nIGRpYWxvZzEuXG5cbiI7
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib2siKS5jbGljaygpOworICAg
ICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUodHJ1ZSk7CisKKyAgICAgICAgICAg
IGRlYnVnKHRlc3RPdXRwdXQpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0pOwogICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIHsK
LSAgICAgICAgdmFyIGRpc3BsYXlCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImRpc3BsYXlCdG4iKTsKLSAgICAgICAgdmFyIGJnQ29udGVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiYmdDb250ZW50Iik7
Ci0gICAgICAgIGlmICghZGlzcGxheUJ0biB8fCAhYmdDb250ZW50KQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gIWRpc3BsYXlCdG4uaXNJZ25vcmVkICYmICFiZ0Nv
bnRlbnQuaXNJZ25vcmVkOworICAgIGFzeW5jIGZ1bmN0aW9uIGJhY2tncm91bmRBY2Nlc3NpYmxl
KHNob3VsZEJlQWNjZXNzaWJsZSkgeworICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IGRpc3BsYXlCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImRpc3BsYXlCdG4iKTsKKyAgICAgICAgICAgIGNvbnN0IGJnQ29u
dGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiYmdD
b250ZW50Iik7CisgICAgICAgICAgICBpZiAoIWRpc3BsYXlCdG4gfHwgIWJnQ29udGVudCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIXNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgICAgIHJl
dHVybiAoIWRpc3BsYXlCdG4uaXNJZ25vcmVkICYmICFiZ0NvbnRlbnQuaXNJZ25vcmVkKSA9PT0g
c2hvdWxkQmVBY2Nlc3NpYmxlOworICAgICAgICB9KTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBg
UEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiAke3Nob3VsZEJlQWNjZXNzaWJsZX1cbmAKICAg
ICB9CiAgICAgCi0gICAgZnVuY3Rpb24gZGlhbG9nMUFjY2Vzc2libGUoKSB7Ci0gICAgICAgICB2
YXIgb2tCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Im9rIik7Ci0gICAgICAgICB2YXIgbmV3QnRuID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJuZXciKTsKLSAgICAgICAgIGlmICghb2tCdG4gfHwgIW5ld0J0
bikKLSAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICByZXR1cm4gIW9rQnRuLmlz
SWdub3JlZCAmJiAhbmV3QnRuLmlzSWdub3JlZDsKKyAgICBhc3luYyBmdW5jdGlvbiBkaWFsb2cx
QWNjZXNzaWJsZShzaG91bGRCZUFjY2Vzc2libGUpIHsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBva0J0biA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgib2siKTsKKyAgICAgICAgICAgIGNvbnN0IG5ld0J0biA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibmV3Iik7Cisg
ICAgICAgICAgICBpZiAoIW9rQnRuIHx8ICFuZXdCdG4pCisgICAgICAgICAgICAgICAgcmV0dXJu
ICFzaG91bGRCZUFjY2Vzc2libGU7CisgICAgICAgICAgICByZXR1cm4gKCFva0J0bi5pc0lnbm9y
ZWQgJiYgIW5ld0J0bi5pc0lnbm9yZWQpID09PSBzaG91bGRCZUFjY2Vzc2libGU7CisgICAgICAg
IH0pOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGBQQVNTOiAjZGlhbG9nMSBhY2Nlc3NpYmxlOiAk
e3Nob3VsZEJlQWNjZXNzaWJsZX1cbmAKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiBkaWFs
b2cyQWNjZXNzaWJsZShzaG91bGRCZUFjY2Vzc2libGUpIHsKKyAgICAgICAgYXdhaXQgd2FpdEZv
cigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjbG9zZUJ1dHRvbiA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xvc2UiKTsKKyAgICAgICAgICAgIGlm
ICghY2xvc2VCdXR0b24pCisgICAgICAgICAgICAgICAgcmV0dXJuICFzaG91bGRCZUFjY2Vzc2li
bGU7CisgICAgICAgICAgICByZXR1cm4gY2xvc2VCdXR0b24uaXNJZ25vcmVkICE9PSBzaG91bGRC
ZUFjY2Vzc2libGU7CisgICAgICAgIH0pOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGBQQVNTOiAj
ZGlhbG9nMiBhY2Nlc3NpYmxlOiAke3Nob3VsZEJlQWNjZXNzaWJsZX1cbmAKICAgICB9CiAgICAg
CiAgICAgZnVuY3Rpb24gdG9nZ2xlRGlhbG9nKGRpYWxvZywgc2gpIHsKLSAgICBpZiAoc2ggPT0g
InNob3ciKSB7Ci0gICAgICAgIC8vIHNob3cgdGhlIGRpYWxvZyAKLSAgICAgICAgZGlhbG9nLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOwotICAgICAgICBkaWFsb2cuc2V0QXR0cmlidXRlKCJhcmlh
LW1vZGFsIiwgInRydWUiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkaWFsb2cuc3R5bGUuZGlz
cGxheSA9ICdub25lJzsKLSAgICAgICAgZGlhbG9nLnNldEF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIs
ICJmYWxzZSIpOyAKKyAgICAgICAgaWYgKHNoID09ICJzaG93IikgeworICAgICAgICAgICAgZGlh
bG9nLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgICAgICAgICAgZGlhbG9nLnNldEF0dHJp
YnV0ZSgiYXJpYS1tb2RhbCIsICJ0cnVlIik7CisgICAgICAgICAgICAvLyBQdXQgZm9jdXMgaW5z
aWRlIHRoZSBuZXcgZGlhbG9nIHNvIGl0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvdGhlciBkaWFs
b2dzIChldmVuIGlmIHRoZXkgY29tZSBsYXRlciBpbiBET00gb3JkZXIpLgorICAgICAgICAgICAg
Zm9jdXNGaXJzdERlc2NlbmRhbnQoZGlhbG9nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICAgZGlhbG9nLnNl
dEF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIsICJmYWxzZSIpOworICAgICAgICB9CiAgICAgfQotfQot
Ci08L3NjcmlwdD4KIAorICAgIGZ1bmN0aW9uIGZvY3VzRmlyc3REZXNjZW5kYW50KGVsZW1lbnQp
IHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkTm9kZXMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZE5vZGVzW2ld
OworICAgICAgICAgICAgaWYgKCFhdHRlbXB0Rm9jdXMoY2hpbGQpKQorICAgICAgICAgICAgICAg
IGZvY3VzRmlyc3REZXNjZW5kYW50KGNoaWxkKQorICAgICAgICB9CisgICAgfTsKIAotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIGZ1bmN0
aW9uIGF0dGVtcHRGb2N1cyhlbGVtZW50KSB7CisgICAgICAgIHRyeSB7IGVsZW1lbnQuZm9jdXMo
KSB9IGNhdGNoIChlKSB7fQorICAgICAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9
PT0gZWxlbWVudDsKKyAgICB9Cis8L3NjcmlwdD4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1lbGVt
ZW50LWFwcGVhcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNv
bXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kOWJmZjA4
NWRhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29t
cHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHdlIHVwZGF0
ZSB0aGUgcGFnZS13aWRlIGFjdGl2ZSBtb2RhbCB3aGVuIGFuIGFyaWEtbW9kYWwgZWxlbWVudCBp
cyBkeW5hbWljYWxseSBhZGRlZCBhbmQgcmVtb3ZlZC4KKworUEFTUzogTW9kYWwgY29udGVudCBp
cyBub3QgaW5pdGlhbGx5IGFjY2Vzc2libGUuCisKK1VuLWhpZGluZyBhcmlhLW1vZGFsIGVsZW1l
bnQuCitQQVNTOiBCYWNrZ3JvdW5kIGlzIGluYWNjZXNzaWJsZSwgbW9kYWwgY29udGVudCBpcyBh
Y2Nlc3NpYmxlLgorCitSZS1oaWRpbmcgYXJpYS1tb2RhbCBlbGVtZW50LgorUEFTUzogQmFja2dy
b3VuZCBpcyBhY2Nlc3NpYmxlLCBtb2RhbCBjb250ZW50IGlzIGluYWNjZXNzaWJsZS4KKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1h
ZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQt
YXBwZWFycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjdh
ODllYmI0MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9y
ZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy5o
dG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Fj
Y2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29u
dGVudCI+CisgICAgPHAgaWQ9InAtYmVmb3JlLW1vZGFsIj5QYWdlIGNvbnRlbnQgYmVmb3JlIG1v
ZGFsPC9wPgorCisgICAgPGRpdiBpZD0ibW9kYWwiIGFyaWEtbW9kYWw9InRydWUiIHJvbGU9ImRp
YWxvZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgICAgICA8cCBpZD0icC1pbnNpZGUtbW9k
YWwiPlBhZ2UgY29udGVudCBpbnNpZGUgbW9kYWw8L3A+CisgICAgICAgIDxidXR0b24gaWQ9ImNs
b3NlLWJ1dHRvbiI+Q2xvc2UgbW9kYWwgYnV0dG9uPC9idXR0b24+CisgICAgPC9kaXY+CisgICAg
PGRpdiBpZD0ibmV3LW1vZGFsLWNvbnRhaW5lciI+PC9kaXY+CisKKyAgICA8cCBpZD0icC1hZnRl
ci1tb2RhbCI+UGFnZSBjb250ZW50IGFmdGVyIG1vZGFsPC9wPgorPC9kaXY+CisKKzxzY3JpcHQ+
CisgICAgdmFyIHRlc3RPdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB3ZSB1cGRhdGUg
dGhlIHBhZ2Utd2lkZSBhY3RpdmUgbW9kYWwgd2hlbiBhbiBhcmlhLW1vZGFsIGVsZW1lbnQgaXMg
ZHluYW1pY2FsbHkgYWRkZWQgYW5kIHJlbW92ZWQuXG5cbiI7CisKKyAgICBmdW5jdGlvbiBiYWNr
Z3JvdW5kSXNBY2Nlc3NpYmxlKCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwLWJlZm9yZS1tb2RhbCIpICYmCisgICAgICAg
ICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInAtYWZ0
ZXItbW9kYWwiKTsKKyAgICB9CisgICAgZnVuY3Rpb24gbW9kYWxDb250ZW50SXNBY2Nlc3NpYmxl
KCkgeworICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJwLWluc2lkZS1tb2RhbCIpICYmCisgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNsb3NlLWJ1dHRvbiIpOworICAgIH0K
KworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGlmIChiYWNrZ3JvdW5kSXNBY2Nl
c3NpYmxlKCkgJiYgIW1vZGFsQ29udGVudElzQWNjZXNzaWJsZSgpKQorICAgICAgICAgICAgdGVz
dE91dHB1dCArPSAiUEFTUzogTW9kYWwgY29udGVudCBpcyBub3QgaW5pdGlhbGx5IGFjY2Vzc2li
bGUuXG4iOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJGQUlMOiBN
b2RlbCBjb250ZW50IGlzIGluaXRpYWxseSBhY2Nlc3NpYmxlLlxuIjsKKworICAgICAgICB0ZXN0
T3V0cHV0ICs9IGBcblVuLWhpZGluZyBhcmlhLW1vZGFsIGVsZW1lbnQuXG5gOworICAgICAgICAv
LyBNb3ZlIHRoZSBtb2RhbCBpbiB0aGUgRE9NLiBUaGlzIGlzIHRoZSBrZXkgdGhpbmcgYmVpbmcg
dGVzdGVkIC0tIGRvIHdlIHByb3Blcmx5IHByZXNlcnZlIG1vZGFsIGJlaGF2aW9yCisgICAgICAg
IC8vIGZvciBhIG1vZGFsIHRoYXQgaGFzIGJlZW4gbW92ZWQ/CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJuZXctbW9kYWwtY29udGFpbmVyIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm1vZGFsIikpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtb2RhbCIpLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTsKKyAgICAgICAgc2V0VGltZW91dChh
c3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geyByZXR1
cm4gIWJhY2tncm91bmRJc0FjY2Vzc2libGUoKSAmJiBtb2RhbENvbnRlbnRJc0FjY2Vzc2libGUo
KSB9KTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gIlBBU1M6IEJhY2tncm91bmQgaXMgaW5h
Y2Nlc3NpYmxlLCBtb2RhbCBjb250ZW50IGlzIGFjY2Vzc2libGUuXG4iOworCisgICAgICAgICAg
ICB0ZXN0T3V0cHV0ICs9IGBcblJlLWhpZGluZyBhcmlhLW1vZGFsIGVsZW1lbnQuXG5gOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vZGFsIikuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKKyAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geyByZXR1cm4gYmFja2dy
b3VuZElzQWNjZXNzaWJsZSgpIH0pOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiUEFTUzog
QmFja2dyb3VuZCBpcyBhY2Nlc3NpYmxlLCBtb2RhbCBjb250ZW50IGlzIGluYWNjZXNzaWJsZS5c
biI7CisKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICAgICAgZGVidWcodGVzdE91dHB1dCk7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKLS0gCjIuMzIuMCAoQXBwbGUgR2l0LTEzMikKCg==
</data>
<flag name="commit-queue"
          id="488927"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459798</attachid>
            <date>2022-05-26 15:35:52 -0700</date>
            <delta_ts>2022-06-01 14:10:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240978-20220526153550.patch</filename>
            <type>text/plain</type>
            <size>41813</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAzZWFlMjE3ODQxMzg5MDE5YTNlNWE0OTgxNWU3MDU3MThlZWJkOTg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVGh1LCAyNiBNYXkgMjAyMiAxNDo1OTo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBX
ZWJLaXQgZG9lcyBub3QgdHJhcCB1c2VyIGZvY3VzIGluc2lkZSBtb2RhbHMgdGhhdCBoYXZlCiBi
ZWVuIERPTSBtb3ZlZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQw
OTc4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluIHRoaXMgcGF0Y2gsIHdlIG5vdyBw
cm9wZXJseSB0cmFwIHVzZXIgZm9jdXMgaW5zaWRlIG5vbi1lbXB0eSBtb2RhbHMKdGhhdCBoYXZl
IGJlZW4gRE9NIG1vdmVkLiBUaGlzIHBhdHRlcm4gaXMgdXNlZCBpbiB0aGUgV0FJLUFSSUEgYXJp
YS1tb2RhbAp1c2FnZSBleGFtcGxlOgoKaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2FyaWEtcHJhY3Rp
Y2VzL2V4YW1wbGVzL2RpYWxvZy1tb2RhbC9kaWFsb2cuaHRtbAoKV2UgZG8gdGhpcyBieSByZS1j
b21wdXRpbmcgdGhlIGxpdmUgYW5kIGlzb2xhdGVkIHRyZWVzIHdoZW4gdGhlIGFjdGl2ZQptb2Rh
bCBjaGFuZ2VzLCBzaW5jZSB0aGUgcHJlc2VuY2Ugb2YgYSBtb2RhbCBlZmZlY3RzIGV2ZXJ5IGVs
ZW1lbnQgb24KdGhlIHBhZ2UuCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgc2V2ZXJhbCBvdGhl
ciBtb2RhbCBpbXByb3ZlbWVudHM6CiAgLSBXaGVuIGZvY3VzIGlzIGV4cGxpY2l0bHkgc2V0IG91
dHNpZGUgdGhlIGFjdGl2ZSBtb2RhbCwgd2Ugbm8gbG9uZ2VyCiAgICBwcmV2ZW50IHVzZXJzIGZy
b20gbmF2aWdhdGluZyB0byB0aG9zZSBlbGVtZW50cyAoZWZmZWN0aXZlbHkKICAgIGJyZWFraW5n
IG91dCBvZiB0aGVtIG91dCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBtb2RhbCkuCgogIC0gV2Ug
bm8gbG9uZ2VyIHNvbWV0aW1lcyBvdmVyd3JpdGUgYXV0aG9yIG1hbnVhbCBmb2N1cyAoZS5nLiB2
aWEgSlMpCiAgICB3aXRoIG91ciBtb2RhbCBhdXRvZm9jdXMgYmVoYXZpb3IuCgogIC0gV2Ugbm93
IHByb3Blcmx5IHJlLWNvbXB1dGUgdGhlIGFjdGl2ZSBtb2RhbCB3aGVuIGZvY3VzIGNoYW5nZXMu
IFRoaXMKICAgIGlzIHJlbGV2YW50IGluIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBt
b2RhbHMsIGFuZCBhbiBhdXRob3IKICAgIGNoYW5nZXMgZm9jdXMgZnJvbSBvbmUgdG8gYW5vdGhl
ciwgbWFraW5nIHRoZSBsYXR0ZXIgdGhlIG5ldyBhY3RpdmUKICAgIG1vZGFsLgoKVGhpcyBwYXRj
aCByZW1vdmVzIG1fZm9jdXNNb2RhbE5vZGVUaW1lciBpbiBmYXZvciBvZiBhIG5ldyBmdW5jdGlv
bgpjYWxsZWQgZm9jdXNDdXJyZW50TW9kYWwoKSwgd2hpY2ggYWxsb3dzIHByZWNpc2UgYW5kIHN5
bmNocm9ub3VzIGNvbnRyb2wKb3ZlciB3aGVuIG1vZGFsIGF1dG9mb2N1cyBoYXBwZW5zLiBUaGUg
YXN5bmNocm9ub3VzIG5hdHVyZSBvZiB0aGUgdGltZXIKbWFkZSBpdCBoYXJkIHRvIHByZXZlbnQg
b3ZlcndyaXRpbmcgbWFudWFsIGF1dGhvciBmb2N1cyAoZS5nLiB2aWEgSlMpLgoKVGhpcyBwYXRj
aCBmaXhlcyBleGlzdGluZyB0ZXN0cyBpbiBJVE06CiAgLSBhY2Nlc3NpYmlsaXR5L2FyaWEtbW9k
YWwtbXVsdGlwbGUtZGlhbG9ncy5odG1sCiAgLSBhY2Nlc3NpYmlsaXR5L2lnbm9yZS1tb2RhbHMt
d2l0aG91dC1hbnktY29udGVudC5odG1sCiAgLSBhY2Nlc3NpYmlsaXR5L21hYy9hcmlhLW1vZGFs
LWF1dG8tZm9jdXMuaHRtbAoKQW5kIGFkZHMgYSBuZXcgdGVzdDoKYWNjZXNzaWJpbGl0eS9yZWNv
bXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy5odG1s
CgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dz
LWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVs
dGlwbGUtZGlhbG9ncy5odG1sOgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRl
LWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1lbGVtZW50LWFwcGVhcnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50
LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWw6IEFkZGVkLgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5B
WE9iamVjdENhY2hlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUN1cnJlbnRN
b2RhbE5vZGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cmVjb21wdXRlQ3VycmVudE1vZGFs
Tm9kZUlubmVyKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om1vZGFsTm9kZSk6CihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZCk6CihXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCk6CihXZWJDb3JlOjpmaXJz
dEZvY3VzYWJsZUNoaWxkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzQ3VycmVudE1v
ZGFsKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRl
KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmN1cnJlbnRNb2RhbE5vZGUpOiBEZWxldGVkLgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGUpOiBEZWxldGVkLgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKTogRGVsZXRlZC4KKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdlKTogRGVsZXRlZC4KKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXND
dXJyZW50TW9kYWwpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXJpYUV4cGFuZGVk
Q2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRD
aGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJl
ZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZSk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ3VycmVudE1vZGFsTm9k
ZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTW9kYWxOb2RlIGNvbnN0KTogUmVuYW1l
ZCB0byBpc0N1cnJlbnRNb2RhbE5vZGUuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpzdGF0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CihXZWJDb3JlOjpBWElzb2xh
dGVkT2JqZWN0Ojppc0N1cnJlbnRNb2RhbE5vZGUgY29uc3QpOgooV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6aXNNb2RhbE5vZGUgY29uc3QpOiBSZW5hbWVkIHRvIGlzQ3VycmVudE1vZGFsTm9k
ZS4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0Lmg6Ci0tLQogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cCAgIHwgMTM1ICsrKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oICB8ICAyMiArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwICAgICB8ICAgMyArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oICAgICAgIHwgICAyICstCiAuLi4vQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
ICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
Y3BwICAgICAgICB8ICAgMiArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cCAgICAgICAgIHwgICAyICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAg
ICAgICAgICAgfCAgIDIgKy0KIC4uLi9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MtZXhwZWN0
ZWQudHh0ICB8ICA1NCArKysrLS0KIC4uLi9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRt
bCAgICAgICAgICB8IDE3OSArKysrKysrKysrKy0tLS0tLS0KIC4uLmVyLWFyaWEtbW9kYWwtZWxl
bWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4dCB8ICAxNSArKwogLi4ub2RhbC1hZnRlci1hcmlhLW1v
ZGFsLWVsZW1lbnQtYXBwZWFycy5odG1sIHwgIDYzICsrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwg
MzMxIGluc2VydGlvbnMoKyksIDE1MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFy
aWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXIt
YXJpYS1tb2RhbC1lbGVtZW50LWFwcGVhcnMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDk0ZjAwMTcxNjVlNC4uZGE2MDhmN2Fk
YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKQEAgLTIyMiw3ICsyMjIsNiBAQCBBWE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hlKERvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICAsIG1fbm90aWZpY2F0aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpCiAgICAgLCBtX3Bhc3N3b3Jk
Tm90aWZpY2F0aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6cGFzc3dvcmROb3Rp
ZmljYXRpb25Qb3N0VGltZXJGaXJlZCkKICAgICAsIG1fbGl2ZVJlZ2lvbkNoYW5nZWRQb3N0VGlt
ZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpsaXZlUmVnaW9uQ2hhbmdlZE5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKQotICAgICwgbV9mb2N1c01vZGFsTm9kZVRpbWVyKCp0aGlzLCAmQVhPYmpl
Y3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKQogICAgICwgbV9jdXJyZW50TW9kYWxF
bGVtZW50KG51bGxwdHIpCiAgICAgLCBtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyKCp0aGlzLCAm
QVhPYmplY3RDYWNoZTo6cGVyZm9ybUNhY2hlVXBkYXRlVGltZXJGaXJlZCkKIHsKQEAgLTI0MCw3
ICsyMzksNiBAQCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiB7CiAgICAgbV9ub3Rp
ZmljYXRpb25Qb3N0VGltZXIuc3RvcCgpOwogICAgIG1fbGl2ZVJlZ2lvbkNoYW5nZWRQb3N0VGlt
ZXIuc3RvcCgpOwotICAgIG1fZm9jdXNNb2RhbE5vZGVUaW1lci5zdG9wKCk7CiAgICAgbV9wZXJm
b3JtQ2FjaGVVcGRhdGVUaW1lci5zdG9wKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iamVj
dCA6IG1fb2JqZWN0cy52YWx1ZXMoKSkKQEAgLTI5NiwxMSArMjk0LDI1IEBAIGJvb2wgQVhPYmpl
Y3RDYWNoZTo6bW9kYWxFbGVtZW50SGFzQWNjZXNzaWJsZUNvbnRlbnQoRWxlbWVudCYgZWxlbWVu
dCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUVsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OmN1cnJl
bnRNb2RhbE5vZGUoKQorRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cmVjb21wdXRlQ3VycmVudE1v
ZGFsTm9kZShXaWxsUmVjb21wdXRlRm9jdXMgd2lsbFJlY29tcHV0ZUZvY3VzKQoreworICAgIGF1
dG8qIHByZXZpb3VzTW9kYWwgPSBtX2N1cnJlbnRNb2RhbEVsZW1lbnQuZ2V0KCk7CisgICAgbV9j
dXJyZW50TW9kYWxFbGVtZW50ID0gcmVjb21wdXRlQ3VycmVudE1vZGFsTm9kZUlubmVyKHdpbGxS
ZWNvbXB1dGVGb2N1cyk7CisgICAgaWYgKHByZXZpb3VzTW9kYWwgIT0gbV9jdXJyZW50TW9kYWxF
bGVtZW50LmdldCgpKSB7CisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChyb290V2ViQXJlYSgpKTsK
KyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgICAgICAvLyBCZWNh
dXNlIHRoZSBwcmVzZW5jZSBvZiBhIG1vZGFsIGFmZmVjdHMgZXZlcnkgZWxlbWVudCBvbiB0aGUg
cGFnZSwKKyAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgZW50aXJlIGlzb2xhdGVkIHRyZWUgd2l0
aCB0aGUgbmV4dCBjYWNoZSB1cGRhdGUuCisgICAgICAgIG1fcmVnZW5lcmF0ZUlzb2xhdGVkVHJl
ZSA9IHRydWU7CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIG1fY3VycmVudE1vZGFsRWxlbWVu
dC5nZXQoKTsKK30KKworRWxlbWVudCogQVhPYmplY3RDYWNoZTo6cmVjb21wdXRlQ3VycmVudE1v
ZGFsTm9kZUlubmVyKFdpbGxSZWNvbXB1dGVGb2N1cyB3aWxsUmVjb21wdXRlRm9jdXMpCiB7CiAg
ICAgLy8gVGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgbW9kYWwgZGlhbG9nIG5vZGVzLgogICAgIC8v
IFdlIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHBpY2sgdGhlIG9uZSB3ZSB3YW50LgotICAgIG1fY3Vy
cmVudE1vZGFsRWxlbWVudCA9IG51bGxwdHI7CiAgICAgaWYgKG1fbW9kYWxFbGVtZW50c1NldC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0zMTUsNiArMzI3LDcgQEAg
RWxlbWVudCogQVhPYmplY3RDYWNoZTo6Y3VycmVudE1vZGFsTm9kZSgpCiAgICAgLy8gSWYgbm90
LCB3ZSB3YW50IHRvIHBpY2sgdGhlIGxhc3QgdmlzaWJsZSBkaWFsb2cgaW4gdGhlIERPTS4KICAg
ICBSZWZQdHI8RWxlbWVudD4gZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGxhc3RWaXNpYmxlOworICAgIGJvb2wgZm9jdXNl
ZEVsZW1lbnRPdXRzaWRlTW9kYWxzID0gZm9jdXNlZEVsZW1lbnQ7CiAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbV9tb2RhbEVsZW1lbnRzU2V0KSB7CiAgICAgICAgIC8vIEVsZW1lbnRzIGluIG1f
bW9kYWxFbGVtZW50c1NldCBtYXkgaGF2ZSBiZWNvbWUgdW4tbW9kYWwgc2luY2Ugd2UgYWRkZWQg
dGhlbSwgYnV0IG5vdCB5ZXQgcmVtb3ZlZAogICAgICAgICAvLyBhcyBwYXJ0IG9mIHRoZSBhc3lu
Y2hyb25vdXMgbV9kZWZlcnJlZE1vZGFsQ2hhbmdlZExpc3QgaGFuZGxpbmcuIFNraXAgdGhlc2Uu
CkBAIC0zMjUsMTcgKzMzOCwxOCBAQCBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpjdXJyZW50TW9k
YWxOb2RlKCkKICAgICAgICAgaWYgKCFpc05vZGVWaXNpYmxlKGVsZW1lbnQpIHx8ICFtb2RhbEVs
ZW1lbnRIYXNBY2Nlc3NpYmxlQ29udGVudCgqZWxlbWVudCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAorICAgICAgICBsYXN0VmlzaWJsZSA9IGVsZW1lbnQ7CiAgICAgICAgIGlmIChmb2N1c2Vk
RWxlbWVudCAmJiBmb2N1c2VkRWxlbWVudC0+aXNEZXNjZW5kYW50T2YoZWxlbWVudCkpIHsKLSAg
ICAgICAgICAgIG1fY3VycmVudE1vZGFsRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgICAgICBm
b2N1c2VkRWxlbWVudE91dHNpZGVNb2RhbHMgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGxhc3RWaXNpYmxlID0gZWxlbWVudDsKICAgICB9CiAKLSAgICBp
ZiAoIW1fY3VycmVudE1vZGFsRWxlbWVudCkKLSAgICAgICAgbV9jdXJyZW50TW9kYWxFbGVtZW50
ID0gbGFzdFZpc2libGUuZ2V0KCk7Ci0KLSAgICByZXR1cm4gbV9jdXJyZW50TW9kYWxFbGVtZW50
LmdldCgpOworICAgIC8vIElmIHRoZXJlIGlzIGEgZm9jdXNlZCBlbGVtZW50LCBhbmQgaXQncyBu
b3QgaW5zaWRlIGFueSBvZiB0aGUgbW9kYWxzLCB3ZSBzaG91bGQKKyAgICAvLyBjb25zaWRlciBh
bGwgbW9kYWxzIGluYWN0aXZlIHRvIGFsbG93IHRoZSB1c2VyIHRvIGZyZWVseSBuYXZpZ2F0ZS4K
KyAgICBpZiAoZm9jdXNlZEVsZW1lbnRPdXRzaWRlTW9kYWxzICYmIHdpbGxSZWNvbXB1dGVGb2N1
cyA9PSBXaWxsUmVjb21wdXRlRm9jdXM6Ok5vKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gbGFzdFZpc2libGUuZ2V0KCk7CiB9CiAKIGJvb2wgQVhPYmplY3RDYWNoZTo6aXNO
b2RlVmlzaWJsZShOb2RlKiBub2RlKSBjb25zdApAQCAtMzg1LDcgKzM5OSw3IEBAIE5vZGUqIEFY
T2JqZWN0Q2FjaGU6Om1vZGFsTm9kZSgpCiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRNb2RhbEVs
ZW1lbnQuZ2V0KCk7CiAKICAgICAvLyBSZWNvbXB1dGUgdGhlIHZhbGlkIGFyaWEgbW9kYWwgbm9k
ZSB3aGVuIG1fY3VycmVudE1vZGFsRWxlbWVudCBpcyBudWxsIG9yIGhpZGRlbi4KLSAgICByZXR1
cm4gY3VycmVudE1vZGFsTm9kZSgpOworICAgIHJldHVybiByZWNvbXB1dGVDdXJyZW50TW9kYWxO
b2RlKCk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRJ
bWFnZU1hcFVJRWxlbWVudChIVE1MQXJlYUVsZW1lbnQqIGFyZWFFbGVtZW50KQpAQCAtMTExOSw2
ICsxMTMzLDEyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJOb2RlQWRkZWRPclJlbW92ZWQo
Tm9kZSogbm9kZSkKIAogICAgIG1fZGVmZXJyZWROb2RlQWRkZWRPclJlbW92ZWRMaXN0LmFkZChu
b2RlKTsKIAorICAgIGlmIChpczxFbGVtZW50Pihub2RlKSkgeworICAgICAgICBhdXRvKiBjaGFu
Z2VkRWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgICAgICBpZiAoaXNNb2Rh
bEVsZW1lbnQoKmNoYW5nZWRFbGVtZW50KSkKKyAgICAgICAgICAgIGRlZmVyTW9kYWxDaGFuZ2Uo
Y2hhbmdlZEVsZW1lbnQpOworICAgIH0KKwogICAgIGlmICghbV9wZXJmb3JtQ2FjaGVVcGRhdGVU
aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwogfQpAQCAtMTM1MSwxMiArMTM3MSwxNCBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmRlZmVyTW9kYWxDaGFuZ2UoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgbV9wZXJmb3Jt
Q2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KICAgICAKLXZvaWQgQVhPYmpl
Y3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkTm9kZSwgTm9k
ZSogbmV3Tm9kZSkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENo
YW5nZWQoTm9kZSogb2xkTm9kZSwgTm9kZSogbmV3Tm9kZSwgUmVjb21wdXRlTW9kYWwgcmVjb21w
dXRlTW9kYWwpCiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAg
ICBzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KG5ld05vZGUpOwogI2VuZGlmCiAKKyAgICBp
ZiAocmVjb21wdXRlTW9kYWwgPT0gUmVjb21wdXRlTW9kYWw6OlllcykKKyAgICAgICAgcmVjb21w
dXRlQ3VycmVudE1vZGFsTm9kZSgpOwogICAgIGhhbmRsZU1lbnVJdGVtU2VsZWN0ZWQobmV3Tm9k
ZSk7CiAgICAgcGxhdGZvcm1IYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChvbGROb2RlLCBu
ZXdOb2RlKTsKIH0KQEAgLTE3NDksNyArMTc3MSw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmaXJzdEZvY3VzYWJsZUNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKIHsKICAg
ICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBmb3IgKGF1
dG8qIGNoaWxkID0gb2JqLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkK
ICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKQEAgLTE3NTksMTUgKzE3ODEsNyBAQCBzdGF0aWMg
QWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RGb2N1c2FibGVDaGlsZChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmopCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6
Zm9jdXNNb2RhbE5vZGUoKQotewotICAgIGlmIChtX2ZvY3VzTW9kYWxOb2RlVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV9mb2N1c01vZGFsTm9kZVRpbWVyLnN0b3AoKTsKLSAgICAKLSAgICBt
X2ZvY3VzTW9kYWxOb2RlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQVhPYmpl
Y3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKCkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
Zm9jdXNDdXJyZW50TW9kYWwoKQogewogICAgIGlmICghbV9kb2N1bWVudC5oYXNMaXZpbmdSZW5k
ZXJUcmVlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3NzUsNiArMTc4OSwxMCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJlZCgpCiAgICAgUmVmPERvY3VtZW50
PiBwcm90ZWN0ZWREb2N1bWVudChtX2RvY3VtZW50KTsKICAgICBpZiAoIW5vZGVBbmRSZW5kZXJl
ckFyZVZhbGlkKG1fY3VycmVudE1vZGFsRWxlbWVudC5nZXQoKSkgfHwgIWlzTm9kZVZpc2libGUo
bV9jdXJyZW50TW9kYWxFbGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RG9uJ3QgZm9jdXMgdGhlIGN1cnJlbnQgbW9kYWwgaWYgZm9jdXMgaGFzIGJlZW4gcmVxdWVzdGVk
IHRvIGJlIHB1dCBlbHNld2hlcmUgKGUuZy4gdmlhIEpTKS4KKyAgICBpZiAoIW1fZGVmZXJyZWRG
b2N1c2VkTm9kZUNoYW5nZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICAKICAgICAv
LyBEb24ndCBzZXQgZm9jdXMgaWYgd2UgYXJlIGFscmVhZHkgZm9jdXNpbmcgb250byBzb21lIGVs
ZW1lbnQgd2l0aGluCiAgICAgLy8gdGhlIGRpYWxvZy4KQEAgLTE5NzUsMzQgKzE5OTMsNiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSwgRWxlbWVudAogICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQs
IEFYT2JqZWN0Q2FjaGU6OkFYU29ydERpcmVjdGlvbkNoYW5nZWQpOwogfQogCi12b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgaWYg
KCFpczxIVE1MRGlhbG9nRWxlbWVudD4oZWxlbWVudCkgJiYgIW5vZGVIYXNSb2xlKCZlbGVtZW50
LCAiZGlhbG9nIl9zKSAmJiAhbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJhbGVydGRpYWxvZyJfcykp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1
dGVzKCk7Ci0KLSAgICBpZiAoIW1fbW9kYWxOb2Rlc0luaXRpYWxpemVkKQotICAgICAgICBmaW5k
TW9kYWxOb2RlcygpOwotCi0gICAgaWYgKGlzTW9kYWxFbGVtZW50KGVsZW1lbnQpKSB7Ci0gICAg
ICAgIC8vIEFkZCB0aGUgbmV3bHkgbW9kaWZpZWQgbm9kZSB0byB0aGUgbW9kYWwgbm9kZXMgc2V0
LgotICAgICAgICAvLyBXZSB3aWxsIHJlY29tcHV0ZSB0aGUgY3VycmVudCB2YWxpZCBhcmlhIG1v
ZGFsIG5vZGUgaW4gbW9kYWxOb2RlKCkgd2hlbiB0aGlzIG5vZGUgaXMgbm90IHZpc2libGUuCi0g
ICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5hZGQoJmVsZW1lbnQpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIC8vIFJlbW92ZSB0aGUgbm9kZSBmcm9tIHRoZSBtb2RhbCBub2RlcyBzZXQuCi0gICAg
ICAgIG1fbW9kYWxFbGVtZW50c1NldC5yZW1vdmUoJmVsZW1lbnQpOwotICAgIH0KLQotICAgIC8v
IEZpbmQgbmV3IGFjdGl2ZSBtb2RhbCBub2RlLgotICAgIGN1cnJlbnRNb2RhbE5vZGUoKTsKLQot
ICAgIGlmIChtX2N1cnJlbnRNb2RhbEVsZW1lbnQpCi0gICAgICAgIGZvY3VzTW9kYWxOb2RlKCk7
Ci0KLSAgICBzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRh
dGVzKCk7Ci19Ci0KIHZvaWQgQVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2VkKEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KCplbGVtZW50KSk7CkBA
IC0zMzg5LDIzICszMzc5LDYwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVk
Q2FjaGVVcGRhdGUoKQogICAgIG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2UuY2xlYXIoKTsKICAg
ICAKICAgICBmb3IgKGF1dG8mIGRlZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQgOiBtX2RlZmVy
cmVkRm9jdXNlZE5vZGVDaGFuZ2UpIHsKLSAgICAgICAgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENo
YW5nZWQoZGVmZXJyZWRGb2N1c2VkQ2hhbmdlQ29udGV4dC5maXJzdCwgZGVmZXJyZWRGb2N1c2Vk
Q2hhbmdlQ29udGV4dC5zZWNvbmQpOworICAgICAgICAvLyBEb24ndCByZWNvbXB1dGUgdGhlIGFj
dGl2ZSBtb2RhbCBmb3IgZWFjaCBpbmRpdmlkYWwgZm9jdXMgY2hhbmdlLCBhcyB0aGF0IGNvdWxk
IGNhdXNlIGEgbG90IG9mIGV4cGVuc2l2ZSB0cmVlIHJlYnVpbGRpbmcuIEluc3RlYWQsIHdlIGRv
IGl0IG9uY2UgYmVsb3cuCisgICAgICAgIGhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKGRl
ZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQuZmlyc3QsIGRlZmVycmVkRm9jdXNlZENoYW5nZUNv
bnRleHQuc2Vjb25kLCBSZWNvbXB1dGVNb2RhbDo6Tm8pOwogICAgICAgICAvLyBSZWNvbXB1dGUg
aXNJZ25vcmVkIGFmdGVyIGEgZm9jdXMgY2hhbmdlIGluIGNhc2UgdGhhdCBhbHRlcmVkIHZpc2li
aWxpdHkuCiAgICAgICAgIHJlY29tcHV0ZUlzSWdub3JlZChkZWZlcnJlZEZvY3VzZWRDaGFuZ2VD
b250ZXh0LmZpcnN0KTsKICAgICAgICAgcmVjb21wdXRlSXNJZ25vcmVkKGRlZmVycmVkRm9jdXNl
ZENoYW5nZUNvbnRleHQuc2Vjb25kKTsKICAgICB9CisgICAgYm9vbCB1cGRhdGVkRm9jdXNlZEVs
ZW1lbnQgPSAhbV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlLmlzRW1wdHkoKTsKKyAgICAvLyBJ
ZiB3ZSBjaGFuZ2VkIHRoZSBmb2N1c2VkIGVsZW1lbnQsIHRoYXQgY291bGQgYWZmZWN0IHdoYXQg
bW9kYWwgc2hvdWxkIGJlIGFjdGl2ZSwgc28gcmVjb21wdXRlIGl0LgorICAgIGJvb2wgc2hvdWxk
UmVjb21wdXRlTW9kYWwgPSB1cGRhdGVkRm9jdXNlZEVsZW1lbnQ7CiAgICAgbV9kZWZlcnJlZEZv
Y3VzZWROb2RlQ2hhbmdlLmNsZWFyKCk7CiAKLSAgICBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlz
dC5mb3JFYWNoKFt0aGlzXSAoYXV0byYgZGVmZXJyZWRNb2RhbENoYW5nZWRFbGVtZW50KSB7Ci0g
ICAgICAgIGhhbmRsZU1vZGFsQ2hhbmdlKGRlZmVycmVkTW9kYWxDaGFuZ2VkRWxlbWVudCk7Ci0g
ICAgfSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9kZWZlcnJlZE1vZGFsQ2hhbmdlZExp
c3QpIHsKKyAgICAgICAgaWYgKCFpczxIVE1MRGlhbG9nRWxlbWVudD4oZWxlbWVudCkgJiYgIW5v
ZGVIYXNSb2xlKCZlbGVtZW50LCAiZGlhbG9nIl9zKSAmJiAhbm9kZUhhc1JvbGUoJmVsZW1lbnQs
ICJhbGVydGRpYWxvZyJfcykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaG91
bGRSZWNvbXB1dGVNb2RhbCA9IHRydWU7CisgICAgICAgIGlmICghbV9tb2RhbE5vZGVzSW5pdGlh
bGl6ZWQpCisgICAgICAgICAgICBmaW5kTW9kYWxOb2RlcygpOworCisgICAgICAgIGlmIChpc01v
ZGFsRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXdseSBtb2Rp
ZmllZCBub2RlIHRvIHRoZSBtb2RhbCBub2RlcyBzZXQuCisgICAgICAgICAgICAvLyBXZSB3aWxs
IHJlY29tcHV0ZSB0aGUgY3VycmVudCB2YWxpZCBhcmlhIG1vZGFsIG5vZGUgaW4gbW9kYWxOb2Rl
KCkgd2hlbiB0aGlzIG5vZGUgaXMgbm90IHZpc2libGUuCisgICAgICAgICAgICBtX21vZGFsRWxl
bWVudHNTZXQuYWRkKCZlbGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX21v
ZGFsRWxlbWVudHNTZXQucmVtb3ZlKCZlbGVtZW50KTsKKyAgICB9CiAgICAgbV9kZWZlcnJlZE1v
ZGFsQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAorICAgIGlmIChzaG91bGRSZWNvbXB1dGVNb2RhbCkg
eworICAgICAgICAvLyAiV2hlbiBhIG1vZGFsIGVsZW1lbnQgaXMgZGlzcGxheWVkLCBhc3Npc3Rp
dmUgdGVjaG5vbG9naWVzIFNIT1VMRCBuYXZpZ2F0ZSB0byB0aGUgZWxlbWVudCB1bmxlc3MgZm9j
dXMgaGFzIGV4cGxpY2l0bHkgYmVlbiBzZXQgZWxzZXdoZXJlLiIKKyAgICAgICAgLy8gYHVwZGF0
ZWRGb2N1c2VkRWxlbWVudGAgaW5kaWNhdGVzIGZvY3VzIHdhcyBleHBsaWNpdGx5IHNldCBlbHNl
d2hlcmUsIHNvIGRvbid0IGF1dG9mb2N1cyBpbnRvIHRoZSBtb2RhbC4KKyAgICAgICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2FyaWEvI2FyaWEtbW9kYWwKKyAgICAgICAgcmVjb21wdXRlQ3Vy
cmVudE1vZGFsTm9kZSh1cGRhdGVkRm9jdXNlZEVsZW1lbnQgPyBXaWxsUmVjb21wdXRlRm9jdXM6
Ok5vIDogV2lsbFJlY29tcHV0ZUZvY3VzOjpZZXMpOworICAgICAgICBpZiAoIXVwZGF0ZWRGb2N1
c2VkRWxlbWVudCkKKyAgICAgICAgICAgIGZvY3VzQ3VycmVudE1vZGFsKCk7CisgICAgfQorCiAg
ICAgbV9kZWZlcnJlZE1lbnVMaXN0Q2hhbmdlLmZvckVhY2goW3RoaXNdIChhdXRvJiBlbGVtZW50
KSB7CiAgICAgICAgIGhhbmRsZU1lbnVMaXN0VmFsdWVDaGFuZ2VkKGVsZW1lbnQpOwogICAgIH0p
OwogICAgIG1fZGVmZXJyZWRNZW51TGlzdENoYW5nZS5jbGVhcigpOwogCisjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBpZiAobV9yZWdlbmVyYXRlSXNvbGF0ZWRU
cmVlICYmIG1fcGFnZUlEKSB7CisgICAgICAgIGlmIChhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJl
ZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogd2Vi
QXJlYSA9IHJvb3RXZWJBcmVhKCkpIHsKKyAgICAgICAgICAgICAgICBBWExPRygiUmVnZW5lcmF0
aW5nIGlzb2xhdGVkIHRyZWUgZnJvbSBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNo
ZVVwZGF0ZSgpLiIpOworICAgICAgICAgICAgICAgIHRyZWUtPmdlbmVyYXRlU3VidHJlZSgqd2Vi
QXJlYSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9yZWdlbmVyYXRl
SXNvbGF0ZWRUcmVlID0gZmFsc2U7CisjZW5kaWYKKwogICAgIHBsYXRmb3JtUGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAppbmRleCBmYmUzZmQyNzg1NzAuLjk1Zjk2MWY5MzA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM0MCw3ICszNDAs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5v
ZGUqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKTsKICAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oY29uc3QgUG9z
aXRpb24mLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKTsKICAgICB2b2lkIHBvc3RMaXZlUmVnaW9uQ2hhbmdlTm90aWZpY2F0aW9uKEFjY2Vz
c2liaWxpdHlPYmplY3QqKTsKLSAgICB2b2lkIGZvY3VzTW9kYWxOb2RlKCk7CiAKICAgICBlbnVt
IEFYTG9hZGluZ0V2ZW50IHsKICAgICAgICAgQVhMb2FkaW5nU3RhcnRlZCwKQEAgLTQ1Myw3ICs0
NTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsaXZlUmVnaW9uQ2hhbmdlZE5vdGlmaWNhdGlv
blBvc3RUaW1lckZpcmVkKCk7CiAgICAgCi0gICAgdm9pZCBmb2N1c01vZGFsTm9kZVRpbWVyRmly
ZWQoKTsKKyAgICB2b2lkIGZvY3VzQ3VycmVudE1vZGFsKCk7CiAgICAgCiAgICAgdm9pZCBwZXJm
b3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKCk7CiAKQEAgLTQ3OSwxNSArNDc4LDE3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChFbGVtZW50Jik7CiAK
ICAgICB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKik7Ci0gICAgdm9pZCBoYW5k
bGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3
Rm9jdXNlZE5vZGUpOworICAgIGVudW0gY2xhc3MgUmVjb21wdXRlTW9kYWwgOiBib29sIHsgTm8s
IFllcyB9OworICAgIHZvaWQgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xk
Rm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlLCBSZWNvbXB1dGVNb2RhbCA9IFJlY29t
cHV0ZU1vZGFsOjpZZXMpOwogICAgIHZvaWQgaGFuZGxlTWVudUxpc3RWYWx1ZUNoYW5nZWQoRWxl
bWVudCYpOwogCiAgICAgLy8gYXJpYS1tb2RhbCBvciBtb2RhbCA8ZGlhbG9nPiByZWxhdGVkCiAg
ICAgYm9vbCBpc01vZGFsRWxlbWVudChFbGVtZW50JikgY29uc3Q7CiAgICAgdm9pZCBmaW5kTW9k
YWxOb2RlcygpOwotICAgIEVsZW1lbnQqIGN1cnJlbnRNb2RhbE5vZGUoKTsKKyAgICBlbnVtIGNs
YXNzIFdpbGxSZWNvbXB1dGVGb2N1cyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgRWxlbWVudCog
cmVjb21wdXRlQ3VycmVudE1vZGFsTm9kZShXaWxsUmVjb21wdXRlRm9jdXMgPSBXaWxsUmVjb21w
dXRlRm9jdXM6Ok5vKTsKKyAgICBFbGVtZW50KiByZWNvbXB1dGVDdXJyZW50TW9kYWxOb2RlSW5u
ZXIoV2lsbFJlY29tcHV0ZUZvY3VzID0gV2lsbFJlY29tcHV0ZUZvY3VzOjpObyk7CiAgICAgYm9v
bCBpc05vZGVWaXNpYmxlKE5vZGUqKSBjb25zdDsKLSAgICB2b2lkIGhhbmRsZU1vZGFsQ2hhbmdl
KEVsZW1lbnQmKTsKICAgICBib29sIG1vZGFsRWxlbWVudEhhc0FjY2Vzc2libGVDb250ZW50KEVs
ZW1lbnQmKTsKIAogICAgIC8vIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBvYmplY3RzLgpAQCAtNTI5
LDcgKzUzMCw2IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9saXZlUmVnaW9uQ2hhbmdlZFBvc3RU
aW1lcjsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fbGl2
ZVJlZ2lvbk9iamVjdHNTZXQ7CiAKLSAgICBUaW1lciBtX2ZvY3VzTW9kYWxOb2RlVGltZXI7CiAg
ICAgV2Vha1B0cjxFbGVtZW50PiBtX2N1cnJlbnRNb2RhbEVsZW1lbnQ7CiAgICAgLy8gTXVsdGlw
bGUgYXJpYS1tb2RhbHMgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGJ5IHNwZWMuIFdlIGtlZXAgdGhl
bSBzb3J0ZWQgYmFzZWQgb24gRE9NIG9yZGVyIGhlcmUuCiAgICAgLy8gSWYgdGhhdCBjaGFuZ2Vz
IHRvIHJlcXVpcmUgb25seSBvbmUgYXJpYS1tb2RhbCB3ZSBjb3VsZCBjaGFuZ2UgdGhpcyB0byBh
IFdlYWtIYXNoU2V0LCBvciBkaXNjYXJkIHRoZSBzZXQgY29tcGxldGVseS4KQEAgLTU1MSw2ICs1
NTEsOSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8RWxlbWVudCosIFN0cmluZz4gbV9kZWZlcnJl
ZFRleHRGb3JtQ29udHJvbFZhbHVlOwogICAgIEhhc2hNYXA8RWxlbWVudCosIFF1YWxpZmllZE5h
bWU+IG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2U7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxOb2Rl
KiwgTm9kZSo+PiBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2U7CisjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBib29sIG1fcmVnZW5lcmF0ZUlzb2xhdGVkVHJl
ZSB7IGZhbHNlIH07CisjZW5kaWYKICAgICBib29sIG1faXNTeW5jaHJvbml6aW5nU2VsZWN0aW9u
IHsgZmFsc2UgfTsKICAgICBib29sIG1fcGVyZm9ybWluZ0RlZmVycmVkQ2FjaGVVcGRhdGUgeyBm
YWxzZSB9OwogICAgIGRvdWJsZSBtX2xvYWRpbmdQcm9ncmVzcyB7IDAgfTsKQEAgLTU4Niw3ICs1
ODksNyBAQCBpbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBWENvbXB1dGVkT2Jq
ZWN0QXR0cmlidXRlQ2FjaGU6OmdldElnbm9yZWQoQQogaW5saW5lIEFjY2Vzc2liaWxpdHlSZXBs
YWNlZFRleHQ6OkFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIHsgfQogaW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dDo6cG9zdFRleHRT
dGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihBWE9iamVjdENhY2hlKiwgQVhUZXh0RWRpdFR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KIGlubGluZSB2b2lkIEFY
Q29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6c2V0SWdub3JlZChBWElELCBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uKSB7IH0KLWlubGluZSBBWE9iamVjdENhY2hlOjpBWE9iamVjdENh
Y2hlKERvY3VtZW50JiBkb2N1bWVudCkgOiBtX2RvY3VtZW50KGRvY3VtZW50KSwgbV9ub3RpZmlj
YXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGlt
ZXJGaXJlZCksIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9iamVj
dENhY2hlOjpwYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwgbV9saXZlUmVnaW9u
Q2hhbmdlZFBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OmxpdmVSZWdpb25DaGFuZ2Vk
Tm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpLCBtX2ZvY3VzTW9kYWxOb2RlVGltZXIoKnRoaXMs
ICZBWE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQpLCBtX3BlcmZvcm1DYWNo
ZVVwZGF0ZVRpbWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6cGVyZm9ybUNhY2hlVXBkYXRlVGlt
ZXJGaXJlZCkgeyB9CitpbmxpbmUgQVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZShEb2N1bWVu
dCYgZG9jdW1lbnQpIDogbV9kb2N1bWVudChkb2N1bWVudCksIG1fbm90aWZpY2F0aW9uUG9zdFRp
bWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpLCBt
X3Bhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6cGFz
c3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCksIG1fbGl2ZVJlZ2lvbkNoYW5nZWRQb3N0
VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpsaXZlUmVnaW9uQ2hhbmdlZE5vdGlmaWNhdGlv
blBvc3RUaW1lckZpcmVkKSwgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lcigqdGhpcywgJkFYT2Jq
ZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyRmlyZWQpIHsgfQogaW5saW5lIEFYT2Jq
ZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkgeyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVj
dCogQVhPYmplY3RDYWNoZTo6Z2V0KFJlbmRlck9iamVjdCopIHsgcmV0dXJuIG51bGxwdHI7IH0K
IGlubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoTm9kZSopIHsg
cmV0dXJuIG51bGxwdHI7IH0KQEAgLTYyMSwxOSArNjI0LDE4IEBAIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmRlZmVyVGV4dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2wo
SFRNTFRlCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEFUU1BJKQogaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6ZGV0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5
RGV0YWNobWVudFR5cGUpIHsgfQogI2VuZGlmCi1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpm
b2N1c01vZGFsTm9kZVRpbWVyRmlyZWQoKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmZvY3VzQ3VycmVudE1vZGFsKCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJm
b3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpmcmFtZUxvYWRpbmdFdmVudE5vdGlmaWNhdGlvbihGcmFtZSosIEFYTG9hZGluZ0V2ZW50KSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KSB7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKEVs
ZW1lbnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRl
ZENoYW5nZShOb2RlKikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVNb2Rh
bENoYW5nZShFbGVtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlck1v
ZGFsQ2hhbmdlKEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRs
ZVJvbGVDaGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZGVmZXJBdHRyaWJ1dGVDaGFuZ2VJZk5lZWRlZChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRWxlbWVudCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmli
dXRlQ2hhbmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFbGVtZW50KikgeyB9CiBpbmxpbmUgYm9v
bCBBWE9iamVjdENhY2hlOjpzaG91bGRQcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBFbGVtZW50KikgeyByZXR1cm4gZmFsc2U7IH0KLWlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqLCBOb2RlKikgeyB9
CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdl
ZChOb2RlKiwgTm9kZSosIFJlY29tcHV0ZU1vZGFsKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZVNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3KikgeyB9CiBpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmxpdmVSZWdpb25DaGFuZ2VkTm90aWZpY2F0aW9u
UG9zdFRpbWVyRmlyZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGU3Yjk5MmE0ZmE0YS4uNDc1NDFhY2Zj
YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKQEAgLTIyNjEsNyArMjI2MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNNb2RhbERlc2NlbmRhbnQoTm9kZSogbW9kYWxOb2RlKSBjb25zdAogICAgIHJldHVy
biBub2RlLT5pc0Rlc2NlbmRhbnRPZigqbW9kYWxOb2RlKTsKIH0KIAotYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc01vZGFsTm9kZSgpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzQ3VycmVudE1vZGFsTm9kZSgpIGNvbnN0CiB7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gYXhPYmplY3RDYWNoZSgpKQogICAgICAgICByZXR1cm4gbm9kZSgpICYmIGNhY2hlLT5t
b2RhbE5vZGUoKSA9PSBub2RlKCk7CkBAIC00MzEyLDYgKzQzMTIsNyBAQCB2b2lkIGZpbmRNYXRj
aGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNvbnN0JiBjcml0ZXJpYSwg
QVhDb3JlT2JqZQogCiAgICAgLy8gVGhlIG91dGVyIGxvb3Agc3RlcHMgdXAgdGhlIHBhcmVudCBj
aGFpbiBlYWNoIHRpbWUgKHVuaWdub3JlZCBpcyBpbXBvcnRhbnQgaGVyZSBiZWNhdXNlIG90aGVy
d2lzZSBlbGVtZW50cyB3b3VsZCBiZSBzZWFyY2hlZCB0d2ljZSkKICAgICBmb3IgKGF1dG8qIHN0
b3BTZWFyY2hFbGVtZW50ID0gY3JpdGVyaWEuYW5jaG9yT2JqZWN0LT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsgc3RhcnRPYmplY3QgJiYgc3RhcnRPYmplY3QgIT0gc3RvcFNlYXJjaEVsZW1lbnQ7
IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKSB7CisK
ICAgICAgICAgLy8gT25seSBhcHBlbmQgdGhlIGNoaWxkcmVuIGFmdGVyL2JlZm9yZSB0aGUgcHJl
dmlvdXMgZWxlbWVudCwgc28gdGhhdCB0aGUgc2VhcmNoIGRvZXMgbm90IGNoZWNrIGVsZW1lbnRz
IHRoYXQgYXJlCiAgICAgICAgIC8vIGFscmVhZHkgYmVoaW5kL2FoZWFkIG9mIHN0YXJ0IGVsZW1l
bnQuCiAgICAgICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNl
YXJjaFN0YWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAppbmRleCA1Y2UzY2VjZWUyMzYuLmQ0MGQ5MWQ0YTE0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAg
LTM0Myw3ICszNDMsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYg
dGhlIG9iamVjdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHRoZXJlJ3MgYSBtb2RhbCBkaWFsb2cg
ZGlzcGxheWVkLgogICAgIHZpcnR1YWwgYm9vbCBpZ25vcmVkRnJvbU1vZGFsUHJlc2VuY2UoKSBj
b25zdDsKICAgICBib29sIGlzTW9kYWxEZXNjZW5kYW50KE5vZGUqKSBjb25zdCBvdmVycmlkZTsK
LSAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0N1cnJl
bnRNb2RhbE5vZGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgc3VwcG9ydHNTZXRTaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bvc0luU2V0KCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IGY3NDc4NGE5NTBjMy4uOWNhZDViOThm
YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTExMyw3ICsxMTEzLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIG9iamVjdCBzaG91bGQgYmUg
aWdub3JlZCB3aGVuIHRoZXJlJ3MgYSBtb2RhbCBkaWFsb2cgZGlzcGxheWVkLgogICAgIHZpcnR1
YWwgYm9vbCBpc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBpc01vZGFsTm9kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXJyZW50
TW9kYWxOb2RlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2V0U2l6
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQb3NJblNldCgpIGNvbnN0
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCA4MmY0MDA2N2U4NjUuLjUx
YjY0NDBiZGYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApAQCAtODM0LDcgKzgz
NCw3IEBAIHVpbnQ2NF90IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c3RhdGUoKSBjb25zdAog
ICAgIGVsc2UgaWYgKChtX2NvcmVPYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwgbV9jb3Jl
T2JqZWN0LT5pc01lbnVJdGVtKCkgfHwgbV9jb3JlT2JqZWN0LT5pc1RvZ2dsZUJ1dHRvbigpKSAm
JiBtX2NvcmVPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eUJ1
dHRvblN0YXRlOjpNaXhlZCkKICAgICAgICAgYWRkU3RhdGUoQXRzcGk6OlN0YXRlOjpJbmRldGVy
bWluYXRlKTsKIAotICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTW9kYWxOb2RlKCkpCisgICAgaWYg
KG1fY29yZU9iamVjdC0+aXNDdXJyZW50TW9kYWxOb2RlKCkpCiAgICAgICAgIGFkZFN0YXRlKEF0
c3BpOjpTdGF0ZTo6TW9kYWwpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+aXNCdXN5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDBkNzI0YmU4NzQxNy4uY2QyMzA3ZjFlMTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgYm9v
bCBBWElzb2xhdGVkT2JqZWN0Ojppc01vZGFsRGVzY2VuZGFudChOb2RlKikgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbE5vZGUoKSBj
b25zdAorYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0N1cnJlbnRNb2RhbE5vZGUoKSBjb25zdAog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaAppbmRleCAwZWQ5MDRmOTBkNzYuLjgzZDY4NTUyMTIzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaApAQCAtNTYzLDcgKzU2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
dXBwb3J0c0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUm93Q291
bnRDaGFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlN1cHBvcnRzUm93Q291bnRDaGFuZ2UpOyB9CiAgICAgYm9vbCBpc01vZGFs
RGVzY2VuZGFudChOb2RlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc01vZGFsTm9kZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDdXJyZW50TW9kYWxOb2RlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBBWENvcmVPYmplY3QqIHBhcmVudE9i
amVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkJh
cnJlblBhcmVudCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MtZXhwZWN0
ZWQudHh0CmluZGV4IDQ5MWEzYzdkODIzNS4uZTkyMmE2ODVlNmQ0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxl
LWRpYWxvZ3MtZXhwZWN0ZWQudHh0CkBAIC0xLDIwICsxLDUwIEBACiBUaGlzIHRlc3RzIHRoYXQg
YXJpYS1tb2RhbCB3b3JrcyBjb3JyZWN0bHkgb24gbXVsdGlwbGUgZGlhbG9ncwogCi1PbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIHRy
dWUKLVBBU1MgYmFja2dyb3VuZEFjY2Vzc2libGUoKSBpcyBmYWxzZQotUEFTUyBkaWFsb2cxQWNj
ZXNzaWJsZSgpIGlzIHRydWUKLVBBU1MgYmFja2dyb3VuZEFjY2Vzc2libGUoKSBpcyBmYWxzZQot
UEFTUyBkaWFsb2cxQWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGNsb3NlQnRuLmlzSWdub3Jl
ZCBpcyBmYWxzZQotUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGRp
YWxvZzFBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQotUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlz
IHRydWUKKworVmVyaWZ5aW5nIHRoZSBiYWNrZ3JvdW5kIGlzIGFjY2Vzc2libGUgb24gcGFnZSBs
b2FkLgorCitQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vzc2libGU6IHRydWUKKworQ2xpY2tpbmcgdGhl
IGRpc3BsYXkgYnV0dG9uIHRvIG9wZW4gI2RpYWxvZzEuCisKK1BBU1M6IGJhY2tncm91bmQgYWNj
ZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cxIGFjY2Vzc2libGU6IHRydWUKKworQ2xpY2tp
bmcgdGhlIG5ldyBidXR0b24gdG8gb3BlbiAjZGlhbG9nMiB3aXRob3V0IGNsb3NpbmcgI2RpYWxv
ZzEuCisKK1BBU1M6IGJhY2tncm91bmQgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cx
IGFjY2Vzc2libGU6IGZhbHNlCitQQVNTOiAjZGlhbG9nMiBhY2Nlc3NpYmxlOiB0cnVlCisKK0Zv
Y3VzaW5nIG9uIGJhY2tncm91bmQuCisKK1BBU1M6IGJhY2tncm91bmQgYWNjZXNzaWJsZTogdHJ1
ZQorCitGb2N1c2luZyBmaXJzdCBkZXNjZW5kYW50IG9mICNkaWFsb2cxLgorCitQQVNTOiBiYWNr
Z3JvdW5kIGFjY2Vzc2libGU6IGZhbHNlCitQQVNTOiAjZGlhbG9nMSBhY2Nlc3NpYmxlOiB0cnVl
CitQQVNTOiAjZGlhbG9nMiBhY2Nlc3NpYmxlOiBmYWxzZQorCitNb3ZpbmcgZm9jdXMgYmFjayB0
byBmaXJzdCBkZXNjZW5kYW50IG9mICNkaWFsb2cyLgorCitQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vz
c2libGU6IGZhbHNlCitQQVNTOiAjZGlhbG9nMSBhY2Nlc3NpYmxlOiBmYWxzZQorUEFTUzogI2Rp
YWxvZzIgYWNjZXNzaWJsZTogdHJ1ZQorCitDbG9zaW5nIGRpYWxvZzIuCisKK1BBU1M6IGJhY2tn
cm91bmQgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cxIGFjY2Vzc2libGU6IHRydWUK
KworQ2xvc2luZyBkaWFsb2cxLgorCitQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vzc2libGU6IHRydWUK
KwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCisKIE90
aGVyIHBhZ2UgY29udGVudCB3aXRoIGEgZHVtbXkgZm9jdXNhYmxlIGVsZW1lbnQKIAogRGlzcGxh
eSBhIGRpYWxvZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1v
ZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLmh0bWwKaW5kZXggMjgyYWFlNGZiMjE2Li4xYmQ4MTM5
NWNkNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1t
dWx0aXBsZS1kaWFsb2dzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbApAQCAtMSw5NCArMSwxMzcgQEAKIDwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IAotPHN0eWxlPgotLmJveC1oaWRkZW4gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci08L3N0eWxl
PgorPGJvZHk+CiAKLTxib2R5IGlkPSJib2R5Ij4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGV4
dGZpZWxkIiB2YWx1ZT0iVGV4dCBmaWVsZC4iPgorPHAgaWQ9ImJnQ29udGVudCI+T3RoZXIgcGFn
ZSBjb250ZW50IHdpdGggPGEgaWQ9ImJhY2tncm91bmQtbGluayIgdGFiaW5kZXg9IjAiIGhyZWY9
IiMiPmEgZHVtbXkgZm9jdXNhYmxlIGVsZW1lbnQ8L2E+PC9wPgorPHA+PGEgb25jbGljaz0idG9n
Z2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2cxJyksICdzaG93Jyk7IHJl
dHVybiBmYWxzZTsiIGhyZWY9IiMiIHJvbGU9ImJ1dHRvbiIgaWQ9ImRpc3BsYXlCdG4iPkRpc3Bs
YXkgYSBkaWFsb2c8L2E+PC9wPgogCi08ZGl2IGlkPSJiZyI+Ci08cCBpZD0iYmdDb250ZW50Ij5P
dGhlciBwYWdlIGNvbnRlbnQgd2l0aCA8YSBocmVmPSIjIj5hIGR1bW15IGZvY3VzYWJsZSBlbGVt
ZW50PC9hPjwvcD4KLTxwPjxhIG9uY2xpY2s9InRvZ2dsZURpYWxvZyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYm94JyksJ3Nob3cnKTsgcmV0dXJuIGZhbHNlOyIgaHJlZj0iIyIgcm9sZT0iYnV0
dG9uIiBpZD0iZGlzcGxheUJ0biI+RGlzcGxheSBhIGRpYWxvZzwvYT48L3A+Cis8ZGl2IHJvbGU9
ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJkZXNjcmlwdGlvbjEiIGlkPSJkaWFsb2cxIiBzdHls
ZT0iZGlzcGxheTogbm9uZSIgdGFiaW5kZXg9Ii0xIj4KKyAgICA8aDMgaWQ9ImRlc2NyaXB0aW9u
MSI+SnVzdCBhbiBleGFtcGxlLjwvaDM+CisgICAgPGEgaWQ9ImRpYWxvZzEtbGluayIgdGFiaW5k
ZXg9IjAiIGhyZWY9IiMiPkxpbmsgcHJlc2VudCB0byBlbnN1cmUgd2UgaGF2ZSBhIGZvY3VzYWJs
ZSBlbGVtZW50PC9hPgorICAgIDxidXR0b24gaWQ9Im9rIiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2co
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZzEnKSwgJ2hpZGUnKTsiPk9LPC9idXR0b24+
CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RpYWxvZzInKSwgJ3Nob3cnKTsiIGlkPSJuZXciPk5ldzwvYnV0dG9uPgogPC9kaXY+CiAK
LTxkaXYgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9Im15RGlhbG9nIiBpZD0iYm94IiBj
bGFzcz0iYm94LWhpZGRlbiIgdGFiaW5kZXg9Ii0xIj4KLSAgICA8aDMgaWQ9Im15RGlhbG9nIj5K
dXN0IGFuIGV4YW1wbGUuPC9oMz4KLSAgICA8YnV0dG9uIGlkPSJvayIgb25jbGljaz0idG9nZ2xl
RGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKSwnaGlkZScpOyIgY2xhc3M9ImNs
b3NlLWJ1dHRvbiI+T0s8L2J1dHRvbj4KLSAgICA8YnV0dG9uIG9uY2xpY2s9InRvZ2dsZURpYWxv
Zyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94MicpLCdzaG93Jyk7IiBpZD0ibmV3Ij5OZXc8
L2J1dHRvbj4KKzxkaXYgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImRlc2NyaXB0aW9u
MiIgaWQ9ImRpYWxvZzIiIHN0eWxlPSJkaXNwbGF5OiBub25lIiB0YWJpbmRleD0iLTEiPgorICAg
IDxoMyBpZD0iZGVzY3JpcHRpb24yIj5Bbm90aGVyIGRpYWxvZy48L2gzPgorICAgIDxhIGlkPSJk
aWFsb2cyLWxpbmsiIHRhYmluZGV4PSIwIiBocmVmPSIjIj5MaW5rIHByZXNlbnQgdG8gZW5zdXJl
IHdlIGhhdmUgYSBmb2N1c2FibGUgZWxlbWVudDwvYT4KKyAgICA8YnV0dG9uIGlkPSJjbG9zZSIg
b25jbGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2cyJyks
ICdoaWRlJyk7Ij5DbG9zZTwvYnV0dG9uPgogPC9kaXY+CiAKLTxkaXYgcm9sZT0iZGlhbG9nIiBh
cmlhLWxhYmVsbGVkYnk9Im15RGlhbG9nMiIgaWQ9ImJveDIiIGNsYXNzPSJib3gtaGlkZGVuIiB0
YWJpbmRleD0iLTEiPgotICAgIDxoMyBpZD0ibXlEaWFsb2cyIj5Bbm90aGVyIGRpYWxvZy48L2gz
PgotICAgIDxidXR0b24gaWQ9ImNsb3NlIiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JveDInKSwnaGlkZScpOyIgY2xhc3M9ImNsb3NlLWJ1dHRvbiI+Q2xv
c2U8L2J1dHRvbj4KLTwvZGl2PgorPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9ICJUaGlz
IHRlc3RzIHRoYXQgYXJpYS1tb2RhbCB3b3JrcyBjb3JyZWN0bHkgb24gbXVsdGlwbGUgZGlhbG9n
c1xuXG4iOwogCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHNldFRpbWVvdXQoYXN5
bmMgKCkgPT4geworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5WZXJpZnlpbmcgdGhlIGJh
Y2tncm91bmQgaXMgYWNjZXNzaWJsZSBvbiBwYWdlIGxvYWQuXG5cbiI7CisgICAgICAgICAgICBh
d2FpdCBiYWNrZ3JvdW5kQWNjZXNzaWJsZSh0cnVlKTsKIAotPHNjcmlwdD4KKyAgICAgICAgICAg
IHRlc3RPdXRwdXQgKz0gIlxuQ2xpY2tpbmcgdGhlIGRpc3BsYXkgYnV0dG9uIHRvIG9wZW4gI2Rp
YWxvZzEuXG5cbiI7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzcGxh
eUJ0biIpLmNsaWNrKCk7CisgICAgICAgICAgICBhd2FpdCBiYWNrZ3JvdW5kQWNjZXNzaWJsZShm
YWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cxQWNjZXNzaWJsZSh0cnVlKTsKIAotICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYXJpYS1tb2RhbCB3b3JrcyBjb3JyZWN0bHkg
b24gbXVsdGlwbGUgZGlhbG9ncyIpOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5DbGlj
a2luZyB0aGUgbmV3IGJ1dHRvbiB0byBvcGVuICNkaWFsb2cyIHdpdGhvdXQgY2xvc2luZyAjZGlh
bG9nMS5cblxuIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXciKS5j
bGljaygpOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUoZmFsc2UpOwor
ICAgICAgICAgICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUoZmFsc2UpOworICAgICAgICAgICAg
YXdhaXQgZGlhbG9nMkFjY2Vzc2libGUodHJ1ZSk7CiAKLSAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIC8vIEJhY2tncm91bmQgc2hvdWxkIGJlIGFjY2Vz
c2libGUgYWZ0ZXIgbG9hZGluZy4KLSAgICAgICAgc2hvdWxkQmVUcnVlKCJiYWNrZ3JvdW5kQWNj
ZXNzaWJsZSgpIik7Ci0gICAgICAgIAotICAgICAgICAvLyBDbGljayB0aGUgZGlzcGxheSBidXR0
b24sIGRpYWxvZzEgc2hvd3MgYW5kIGJhY2tncm91bmQgYmVjb21lcyB1bmFjY2Vzc2libGUuCi0g
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNwbGF5QnRuIikuY2xpY2soKTsKLSAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiYmFja2dyb3VuZEFjY2Vzc2libGUoKSIpOwotICAgICAgICBz
aG91bGRCZVRydWUoImRpYWxvZzFBY2Nlc3NpYmxlKCkiKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IENsaWNrIHRoZSBuZXcgYnV0dG9uLCBkaWFsb2cyIHNob3dzIGFuZCBiYWNrZ3JvdW5kL2RpYWxv
ZzEgc2hvdWxkIGJvdGggYmUgdW5hY2Nlc3NpYmxlLgotICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibmV3IikuY2xpY2soKTsKLSAgICAgICAgc2hvdWxkQmVGYWxzZSgiYmFja2dyb3Vu
ZEFjY2Vzc2libGUoKSIpOwotICAgICAgICBzaG91bGRCZUZhbHNlKCJkaWFsb2cxQWNjZXNzaWJs
ZSgpIik7Ci0gICAgICAgIHZhciBjbG9zZUJ0biA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiY2xvc2UiKTsKLSAgICAgICAgc2hvdWxkQmVGYWxzZSgiY2xv
c2VCdG4uaXNJZ25vcmVkIik7Ci0gICAgICAgIAotICAgICAgICAvLyBDbG9zZSBkaWFsb2cyLCBk
aWFsb2cxIHNob3VsZCBiZWNvbWUgYWNjZXNzaWJsZSBidXQgbm90IHRoZSBiYWNrZ3JvdW5kCi0g
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbG9zZSIpLmNsaWNrKCk7Ci0gICAgICAg
IHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKLSAgICAgICAgc2hvdWxk
QmVUcnVlKCJkaWFsb2cxQWNjZXNzaWJsZSgpIik7Ci0gICAgICAgIAotICAgICAgICAvLyBDbG9z
ZSBkaWFsb2cxLCBiYWNrZ3JvdW5kIHNob3VsZCBiZSBhY2Nlc3NpYmxlLgotICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib2siKS5jbGljaygpOwotICAgICAgICBzaG91bGRCZVRydWUo
ImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gIlxu
Rm9jdXNpbmcgb24gYmFja2dyb3VuZC5cblxuIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0ZmllbGQiKS5mb2N1cygpOworICAgICAgICAgICAgYXdhaXQgYmFja2dy
b3VuZEFjY2Vzc2libGUodHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIFdpdGggYm90aCBtb2RhbHMg
YWN0aXZlLCBhbmQgZm9jdXMgY3VycmVudGx5IGluICNkaWFsb2cyLCBtb3ZpbmcgZm9jdXMgdG8g
I2RpYWxvZzEgc2hvdWxkIGNhdXNlIGl0IHRvIGJlY29tZSB0aGUgYWN0aXZlIG1vZGFsLgorICAg
ICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5Gb2N1c2luZyBmaXJzdCBkZXNjZW5kYW50IG9mICNk
aWFsb2cxLlxuXG4iOworICAgICAgICAgICAgZm9jdXNGaXJzdERlc2NlbmRhbnQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpYWxvZzEiKSk7CisgICAgICAgICAgICBhd2FpdCBiYWNrZ3JvdW5k
QWNjZXNzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cxQWNjZXNzaWJsZSh0
cnVlKTsKKyAgICAgICAgICAgIGF3YWl0IGRpYWxvZzJBY2Nlc3NpYmxlKGZhbHNlKTsKKworICAg
ICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5Nb3ZpbmcgZm9jdXMgYmFjayB0byBmaXJzdCBkZXNj
ZW5kYW50IG9mICNkaWFsb2cyLlxuXG4iOworICAgICAgICAgICAgZm9jdXNGaXJzdERlc2NlbmRh
bnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZzIiKSk7CisgICAgICAgICAgICBhd2Fp
dCBiYWNrZ3JvdW5kQWNjZXNzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cx
QWNjZXNzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBhd2FpdCBkaWFsb2cyQWNjZXNzaWJsZSh0
cnVlKTsKKworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiXG5DbG9zaW5nIGRpYWxvZzIuXG5c
biI7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xvc2UiKS5jbGljaygp
OworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUoZmFsc2UpOworICAgICAg
ICAgICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUodHJ1ZSk7CisKKyAgICAgICAgICAgIHRlc3RP
dXRwdXQgKz0gIlxuQ2xvc2luZyBkaWFsb2cxLlxuXG4iOworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm9rIikuY2xpY2soKTsKKyAgICAgICAgICAgIGF3YWl0IGJhY2tncm91
bmRBY2Nlc3NpYmxlKHRydWUpOworCisgICAgICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAg
ZnVuY3Rpb24gYmFja2dyb3VuZEFjY2Vzc2libGUoKSB7Ci0gICAgICAgIHZhciBkaXNwbGF5QnRu
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJkaXNwbGF5
QnRuIik7Ci0gICAgICAgIHZhciBiZ0NvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImJnQ29udGVudCIpOwotICAgICAgICBpZiAoIWRpc3BsYXlC
dG4gfHwgIWJnQ29udGVudCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0
dXJuICFkaXNwbGF5QnRuLmlzSWdub3JlZCAmJiAhYmdDb250ZW50LmlzSWdub3JlZDsKKyAgICBh
c3luYyBmdW5jdGlvbiBiYWNrZ3JvdW5kQWNjZXNzaWJsZShzaG91bGRCZUFjY2Vzc2libGUpIHsK
KyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkaXNwbGF5
QnRuID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJkaXNw
bGF5QnRuIik7CisgICAgICAgICAgICBjb25zdCBiZ0NvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImJnQ29udGVudCIpOworICAgICAgICAgICAg
aWYgKCFkaXNwbGF5QnRuIHx8ICFiZ0NvbnRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuICFz
aG91bGRCZUFjY2Vzc2libGU7CisgICAgICAgICAgICByZXR1cm4gKCFkaXNwbGF5QnRuLmlzSWdu
b3JlZCAmJiAhYmdDb250ZW50LmlzSWdub3JlZCkgPT09IHNob3VsZEJlQWNjZXNzaWJsZTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gYFBBU1M6IGJhY2tncm91bmQgYWNjZXNz
aWJsZTogJHtzaG91bGRCZUFjY2Vzc2libGV9XG5gCiAgICAgfQogICAgIAotICAgIGZ1bmN0aW9u
IGRpYWxvZzFBY2Nlc3NpYmxlKCkgewotICAgICAgICAgdmFyIG9rQnRuID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJvayIpOwotICAgICAgICAgdmFyIG5l
d0J0biA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibmV3
Iik7Ci0gICAgICAgICBpZiAoIW9rQnRuIHx8ICFuZXdCdG4pCi0gICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgcmV0dXJuICFva0J0bi5pc0lnbm9yZWQgJiYgIW5ld0J0bi5pc0ln
bm9yZWQ7CisgICAgYXN5bmMgZnVuY3Rpb24gZGlhbG9nMUFjY2Vzc2libGUoc2hvdWxkQmVBY2Nl
c3NpYmxlKSB7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geworICAgICAgICAgICAgY29u
c3Qgb2tCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
Im9rIik7CisgICAgICAgICAgICBjb25zdCBuZXdCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm5ldyIpOworICAgICAgICAgICAgaWYgKCFva0J0biB8
fCAhbmV3QnRuKQorICAgICAgICAgICAgICAgIHJldHVybiAhc2hvdWxkQmVBY2Nlc3NpYmxlOwor
ICAgICAgICAgICAgcmV0dXJuICghb2tCdG4uaXNJZ25vcmVkICYmICFuZXdCdG4uaXNJZ25vcmVk
KSA9PT0gc2hvdWxkQmVBY2Nlc3NpYmxlOworICAgICAgICB9KTsKKyAgICAgICAgdGVzdE91dHB1
dCArPSBgUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTogJHtzaG91bGRCZUFjY2Vzc2libGV9XG5g
CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gZGlhbG9nMkFjY2Vzc2libGUoc2hvdWxkQmVB
Y2Nlc3NpYmxlKSB7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4geworICAgICAgICAgICAg
Y29uc3QgY2xvc2VCdXR0b24gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNsb3NlIik7CisgICAgICAgICAgICBpZiAoIWNsb3NlQnV0dG9uKQorICAgICAg
ICAgICAgICAgIHJldHVybiAhc2hvdWxkQmVBY2Nlc3NpYmxlOworICAgICAgICAgICAgcmV0dXJu
IGNsb3NlQnV0dG9uLmlzSWdub3JlZCAhPT0gc2hvdWxkQmVBY2Nlc3NpYmxlOworICAgICAgICB9
KTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBgUEFTUzogI2RpYWxvZzIgYWNjZXNzaWJsZTogJHtz
aG91bGRCZUFjY2Vzc2libGV9XG5gCiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHRvZ2dsZURp
YWxvZyhkaWFsb2csIHNoKSB7Ci0gICAgaWYgKHNoID09ICJzaG93IikgewotICAgICAgICAvLyBz
aG93IHRoZSBkaWFsb2cgCi0gICAgICAgIGRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsK
LSAgICAgICAgZGlhbG9nLnNldEF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIsICJ0cnVlIik7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZGlhbG9nLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAg
IGRpYWxvZy5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCAiZmFsc2UiKTsgCisgICAgICAgIGlm
IChzaCA9PSAic2hvdyIpIHsKKyAgICAgICAgICAgIGRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gImJs
b2NrIjsKKyAgICAgICAgICAgIGRpYWxvZy5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCAidHJ1
ZSIpOworICAgICAgICAgICAgLy8gUHV0IGZvY3VzIGluc2lkZSB0aGUgbmV3IGRpYWxvZyBzbyBp
dCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgZGlhbG9ncyAoZXZlbiBpZiB0aGV5IGNvbWUg
bGF0ZXIgaW4gRE9NIG9yZGVyKS4KKyAgICAgICAgICAgIGZvY3VzRmlyc3REZXNjZW5kYW50KGRp
YWxvZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkaWFsb2cuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKKyAgICAgICAgICAgIGRpYWxvZy5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwi
LCAiZmFsc2UiKTsKKyAgICAgICAgfQogICAgIH0KLX0KLQotPC9zY3JpcHQ+CiAKKyAgICBmdW5j
dGlvbiBmb2N1c0ZpcnN0RGVzY2VuZGFudChlbGVtZW50KSB7CisgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBj
b25zdCBjaGlsZCA9IGVsZW1lbnQuY2hpbGROb2Rlc1tpXTsKKyAgICAgICAgICAgIGlmICghYXR0
ZW1wdEZvY3VzKGNoaWxkKSkKKyAgICAgICAgICAgICAgICBmb2N1c0ZpcnN0RGVzY2VuZGFudChj
aGlsZCkKKyAgICAgICAgfQorICAgIH07CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICBmdW5jdGlvbiBhdHRlbXB0Rm9jdXMoZWxlbWVu
dCkgeworICAgICAgICB0cnkgeyBlbGVtZW50LmZvY3VzKCkgfSBjYXRjaCAoZSkge30KKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsZW1lbnQ7CisgICAgfQorPC9z
Y3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1j
dXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0
ZXItYXJpYS1tb2RhbC1lbGVtZW50LWFwcGVhcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDliZmYwODVkYTkwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRl
ci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBA
QAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB3ZSB1cGRhdGUgdGhlIHBhZ2Utd2lkZSBhY3RpdmUg
bW9kYWwgd2hlbiBhbiBhcmlhLW1vZGFsIGVsZW1lbnQgaXMgZHluYW1pY2FsbHkgYWRkZWQgYW5k
IHJlbW92ZWQuCisKK1BBU1M6IE1vZGFsIGNvbnRlbnQgaXMgbm90IGluaXRpYWxseSBhY2Nlc3Np
YmxlLgorCitVbi1oaWRpbmcgYXJpYS1tb2RhbCBlbGVtZW50LgorUEFTUzogQmFja2dyb3VuZCBp
cyBpbmFjY2Vzc2libGUsIG1vZGFsIGNvbnRlbnQgaXMgYWNjZXNzaWJsZS4KKworUmUtaGlkaW5n
IGFyaWEtbW9kYWwgZWxlbWVudC4KK1BBU1M6IEJhY2tncm91bmQgaXMgYWNjZXNzaWJsZSwgbW9k
YWwgY29udGVudCBpcyBpbmFjY2Vzc2libGUuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1lbGVtZW50
LWFwcGVhcnMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJl
bnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1lbGVtZW50LWFwcGVhcnMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI3YTg5ZWJiNDE3NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwt
YWZ0ZXItYXJpYS1tb2RhbC1lbGVtZW50LWFwcGVhcnMuaHRtbApAQCAtMCwwICsxLDYzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRlbnQiPgorICAgIDxwIGlkPSJwLWJl
Zm9yZS1tb2RhbCI+UGFnZSBjb250ZW50IGJlZm9yZSBtb2RhbDwvcD4KKworICAgIDxkaXYgaWQ9
Im1vZGFsIiBhcmlhLW1vZGFsPSJ0cnVlIiByb2xlPSJkaWFsb2ciIHN0eWxlPSJkaXNwbGF5OiBu
b25lIj4KKyAgICAgICAgPHAgaWQ9InAtaW5zaWRlLW1vZGFsIj5QYWdlIGNvbnRlbnQgaW5zaWRl
IG1vZGFsPC9wPgorICAgICAgICA8YnV0dG9uIGlkPSJjbG9zZS1idXR0b24iPkNsb3NlIG1vZGFs
IGJ1dHRvbjwvYnV0dG9uPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9Im5ldy1tb2RhbC1jb250
YWluZXIiPjwvZGl2PgorCisgICAgPHAgaWQ9InAtYWZ0ZXItbW9kYWwiPlBhZ2UgY29udGVudCBh
ZnRlciBtb2RhbDwvcD4KKzwvZGl2PgorCis8c2NyaXB0PgorICAgIHZhciB0ZXN0T3V0cHV0ID0g
IlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgd2UgdXBkYXRlIHRoZSBwYWdlLXdpZGUgYWN0aXZlIG1v
ZGFsIHdoZW4gYW4gYXJpYS1tb2RhbCBlbGVtZW50IGlzIGR5bmFtaWNhbGx5IGFkZGVkIGFuZCBy
ZW1vdmVkLlxuXG4iOworCisgICAgZnVuY3Rpb24gYmFja2dyb3VuZElzQWNjZXNzaWJsZSgpIHsK
KyAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgicC1iZWZvcmUtbW9kYWwiKSAmJgorICAgICAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwLWFmdGVyLW1vZGFsIik7CisgICAgfQorICAg
IGZ1bmN0aW9uIG1vZGFsQ29udGVudElzQWNjZXNzaWJsZSgpIHsKKyAgICAgICAgcmV0dXJuIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicC1pbnNpZGUtbW9k
YWwiKSAmJgorICAgICAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjbG9zZS1idXR0b24iKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICBpZiAoYmFja2dyb3VuZElzQWNjZXNzaWJsZSgpICYmICFtb2RhbENvbnRl
bnRJc0FjY2Vzc2libGUoKSkKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gIlBBU1M6IE1vZGFs
IGNvbnRlbnQgaXMgbm90IGluaXRpYWxseSBhY2Nlc3NpYmxlLlxuIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiRkFJTDogTW9kZWwgY29udGVudCBpcyBpbml0aWFs
bHkgYWNjZXNzaWJsZS5cbiI7CisKKyAgICAgICAgdGVzdE91dHB1dCArPSBgXG5Vbi1oaWRpbmcg
YXJpYS1tb2RhbCBlbGVtZW50LlxuYDsKKyAgICAgICAgLy8gTW92ZSB0aGUgbW9kYWwgaW4gdGhl
IERPTS4gVGhpcyBpcyB0aGUga2V5IHRoaW5nIGJlaW5nIHRlc3RlZCAtLSBkbyB3ZSBwcm9wZXJs
eSBwcmVzZXJ2ZSBtb2RhbCBiZWhhdmlvcgorICAgICAgICAvLyBmb3IgYSBtb2RhbCB0aGF0IGhh
cyBiZWVuIG1vdmVkPworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3LW1vZGFs
LWNvbnRhaW5lciIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2RhbCIp
KQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9kYWwiKS5yZW1vdmVBdHRyaWJ1
dGUoInN0eWxlIik7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsgcmV0dXJuICFiYWNrZ3JvdW5kSXNBY2Nlc3Np
YmxlKCkgJiYgbW9kYWxDb250ZW50SXNBY2Nlc3NpYmxlKCkgfSk7CisgICAgICAgICAgICB0ZXN0
T3V0cHV0ICs9ICJQQVNTOiBCYWNrZ3JvdW5kIGlzIGluYWNjZXNzaWJsZSwgbW9kYWwgY29udGVu
dCBpcyBhY2Nlc3NpYmxlLlxuIjsKKworICAgICAgICAgICAgdGVzdE91dHB1dCArPSBgXG5SZS1o
aWRpbmcgYXJpYS1tb2RhbCBlbGVtZW50LlxuYDsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJtb2RhbCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgICAgICBh
d2FpdCB3YWl0Rm9yKCgpID0+IHsgcmV0dXJuIGJhY2tncm91bmRJc0FjY2Vzc2libGUoKSB9KTsK
KyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gIlBBU1M6IEJhY2tncm91bmQgaXMgYWNjZXNzaWJs
ZSwgbW9kYWwgY29udGVudCBpcyBpbmFjY2Vzc2libGUuXG4iOworCisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVu
IjsKKyAgICAgICAgICAgIGRlYnVnKHRlc3RPdXRwdXQpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCi0tIAoyLjMyLjAgKEFwcGxlIEdpdC0xMzIpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459933</attachid>
            <date>2022-06-01 14:10:02 -0700</date>
            <delta_ts>2022-06-03 10:32:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240978-20220601141001.patch</filename>
            <type>text/plain</type>
            <size>34047</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBlODY5ZDU4MGM1YTFmNzNhZmNkM2FhZmZlNzQ1YzViNmNjMWNmOWQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCAxIEp1biAyMDIyIDE0OjA0OjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFdl
YktpdCBkb2VzIG5vdCB0cmFwIHVzZXIgZm9jdXMgaW5zaWRlIG1vZGFscyB0aGF0IGhhdmUKIGJl
ZW4gRE9NIG1vdmVkIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA5
NzgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKSW4gdGhpcyBwYXRjaCwgd2Ugbm93IHBy
b3Blcmx5IHRyYXAgdXNlciBmb2N1cyBpbnNpZGUgbm9uLWVtcHR5IG1vZGFscwp0aGF0IGhhdmUg
YmVlbiBET00gbW92ZWQuIFRoaXMgcGF0dGVybiBpcyB1c2VkIGluIHRoZSBXQUktQVJJQSBhcmlh
LW1vZGFsCnVzYWdlIGV4YW1wbGU6CgpodHRwczovL3czYy5naXRodWIuaW8vYXJpYS1wcmFjdGlj
ZXMvZXhhbXBsZXMvZGlhbG9nLW1vZGFsL2RpYWxvZy5odG1sCgpXZSBkbyB0aGlzIGJ5IHJlLWNv
bXB1dGluZyB0aGUgbGl2ZSBhbmQgaXNvbGF0ZWQgdHJlZXMgd2hlbiB0aGUgYWN0aXZlCm1vZGFs
IGNoYW5nZXMsIHNpbmNlIHRoZSBwcmVzZW5jZSBvZiBhIG1vZGFsIGVmZmVjdHMgZXZlcnkgZWxl
bWVudCBvbgp0aGUgcGFnZS4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBzZXZlcmFsIG90aGVy
IG1vZGFsIGltcHJvdmVtZW50czoKICAtIFdlIG5vIGxvbmdlciBzb21ldGltZXMgb3ZlcndyaXRl
IGF1dGhvciBtYW51YWwgZm9jdXMgKGUuZy4gdmlhIEpTKQogICAgd2l0aCBvdXIgbW9kYWwgYXV0
b2ZvY3VzIGJlaGF2aW9yLgoKICAtIFdlIG5vdyBwcm9wZXJseSByZS1jb21wdXRlIHRoZSBhY3Rp
dmUgbW9kYWwgd2hlbiBmb2N1cyBjaGFuZ2VzLiBUaGlzCiAgICBpcyByZWxldmFudCBpbiBjYXNl
cyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGUgbW9kYWxzLCBhbmQgYW4gYXV0aG9yCiAgICBjaGFu
Z2VzIGZvY3VzIGZyb20gb25lIHRvIGFub3RoZXIsIG1ha2luZyB0aGUgbGF0dGVyIHRoZSBuZXcg
YWN0aXZlCiAgICBtb2RhbC4KClRoaXMgcGF0Y2ggcmVtb3ZlcyBtX2ZvY3VzTW9kYWxOb2RlVGlt
ZXIgaW4gZmF2b3Igb2YgYSBuZXcgZnVuY3Rpb24KY2FsbGVkIGZvY3VzQ3VycmVudE1vZGFsKCks
IHdoaWNoIGFsbG93cyBwcmVjaXNlIGFuZCBzeW5jaHJvbm91cyBjb250cm9sCm92ZXIgd2hlbiBt
b2RhbCBhdXRvZm9jdXMgaGFwcGVucy4gVGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgdGhlIHRp
bWVyCm1hZGUgaXQgaGFyZCB0byBwcmV2ZW50IG92ZXJ3cml0aW5nIG1hbnVhbCBhdXRob3IgZm9j
dXMgKGUuZy4gdmlhIEpTKS4KClRoaXMgcGF0Y2ggZml4ZXMgZXhpc3RpbmcgdGVzdHMgaW4gSVRN
OgogIC0gYWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbAogIC0g
YWNjZXNzaWJpbGl0eS9pZ25vcmUtbW9kYWxzLXdpdGhvdXQtYW55LWNvbnRlbnQuaHRtbAogIC0g
YWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1tb2RhbC1hdXRvLWZvY3VzLmh0bWwKCkFuZCBhZGRzIGEg
bmV3IHRlc3Q6CmFjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJp
YS1tb2RhbC1lbGVtZW50LWFwcGVhcnMuaHRtbAoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQ6CiogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbDoKKiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9k
YWwtZWxlbWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1l
bnQtYXBwZWFycy5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6
CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSk6CihXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpyZWNvbXB1dGVDdXJyZW50TW9kYWxOb2RlKToKKFdlYkNvcmU6OkFYT2JqZWN0
Q2FjaGU6OnJlY29tcHV0ZUN1cnJlbnRNb2RhbE5vZGVJbm5lcik6CihXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjptb2RhbE5vZGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZGVmZXJOb2RlQWRk
ZWRPclJlbW92ZWQpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxl
bWVudENoYW5nZWQpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNDdXJyZW50TW9kYWwp
OgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUpOgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3VycmVudE1vZGFsTm9kZSk6IERlbGV0ZWQuCihXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQpOiBEZWxldGVkLgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTW9kYWxDaGFuZ2UpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6QVhPYmplY3RDYWNoZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c0N1cnJl
bnRNb2RhbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFu
Z2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5n
ZWQpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKTog
RGVsZXRlZC4KKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdlKTogRGVs
ZXRlZC4KLS0tCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAg
fCAxMzEgKysrKysrKy0tLS0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmggIHwgIDIxICsrLQogLi4uL2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBl
Y3RlZC50eHQgIHwgIDUwICsrKy0tCiAuLi4vYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLmh0
bWwgICAgICAgICAgfCAxNzUgKysrKysrKysrKystLS0tLS0tCiAuLi5lci1hcmlhLW1vZGFsLWVs
ZW1lbnQtYXBwZWFycy1leHBlY3RlZC50eHQgfCAgMTUgKysKIC4uLm9kYWwtYWZ0ZXItYXJpYS1t
b2RhbC1lbGVtZW50LWFwcGVhcnMuaHRtbCB8ICA2MyArKysrKysrCiA2IGZpbGVzIGNoYW5nZWQs
IDMwOSBpbnNlcnRpb25zKCspLCAxNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1h
cmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVy
LWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCA3MjJlMDg5Y2QyM2EuLjAwYjVjZWJl
YzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCkBAIC0yMjIsNyArMjIyLDYgQEAgQVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZShEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX25vdGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFY
T2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKQogICAgICwgbV9wYXNzd29y
ZE5vdGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBhc3N3b3JkTm90
aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpCiAgICAgLCBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRp
bWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bGl2ZVJlZ2lvbkNoYW5nZWROb3RpZmljYXRpb25Q
b3N0VGltZXJGaXJlZCkKLSAgICAsIG1fZm9jdXNNb2RhbE5vZGVUaW1lcigqdGhpcywgJkFYT2Jq
ZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJlZCkKICAgICAsIG1fY3VycmVudE1vZGFs
RWxlbWVudChudWxscHRyKQogICAgICwgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lcigqdGhpcywg
JkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyRmlyZWQpCiB7CkBAIC0yNDAs
NyArMjM5LDYgQEAgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogewogICAgIG1fbm90
aWZpY2F0aW9uUG9zdFRpbWVyLnN0b3AoKTsKICAgICBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRp
bWVyLnN0b3AoKTsKLSAgICBtX2ZvY3VzTW9kYWxOb2RlVGltZXIuc3RvcCgpOwogICAgIG1fcGVy
Zm9ybUNhY2hlVXBkYXRlVGltZXIuc3RvcCgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmpl
Y3QgOiBtX29iamVjdHMudmFsdWVzKCkpCkBAIC0yOTYsMTEgKzI5NCwyNSBAQCBib29sIEFYT2Jq
ZWN0Q2FjaGU6Om1vZGFsRWxlbWVudEhhc0FjY2Vzc2libGVDb250ZW50KEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1FbGVtZW50KiBBWE9iamVjdENhY2hlOjpjdXJy
ZW50TW9kYWxOb2RlKCkKK0VsZW1lbnQqIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUN1cnJlbnRN
b2RhbE5vZGUoKQoreworICAgIGF1dG8qIHByZXZpb3VzTW9kYWwgPSBtX2N1cnJlbnRNb2RhbEVs
ZW1lbnQuZ2V0KCk7CisgICAgbV9jdXJyZW50TW9kYWxFbGVtZW50ID0gcmVjb21wdXRlQ3VycmVu
dE1vZGFsTm9kZUlubmVyKCk7CisgICAgaWYgKHByZXZpb3VzTW9kYWwgIT0gbV9jdXJyZW50TW9k
YWxFbGVtZW50LmdldCgpKSB7CisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChyb290V2ViQXJlYSgp
KTsKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgICAgICAvLyBC
ZWNhdXNlIHRoZSBwcmVzZW5jZSBvZiBhIG1vZGFsIGFmZmVjdHMgZXZlcnkgZWxlbWVudCBvbiB0
aGUgcGFnZSwKKyAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgZW50aXJlIGlzb2xhdGVkIHRyZWUg
d2l0aCB0aGUgbmV4dCBjYWNoZSB1cGRhdGUuCisgICAgICAgIG1fZGVmZXJyZWRSZWdlbmVyYXRl
SXNvbGF0ZWRUcmVlID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gbV9jdXJyZW50
TW9kYWxFbGVtZW50LmdldCgpOworfQorCitFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyZWNvbXB1
dGVDdXJyZW50TW9kYWxOb2RlSW5uZXIoKQogewogICAgIC8vIFRoZXJlIG1pZ2h0IGJlIG11bHRp
cGxlIG1vZGFsIGRpYWxvZyBub2Rlcy4KICAgICAvLyBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBw
aWNrIHRoZSBvbmUgd2Ugd2FudC4KLSAgICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBudWxscHRy
OwogICAgIGlmIChtX21vZGFsRWxlbWVudHNTZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMzI1LDE3ICszMzcsMTEgQEAgRWxlbWVudCogQVhPYmplY3RDYWNoZTo6
Y3VycmVudE1vZGFsTm9kZSgpCiAgICAgICAgIGlmICghaXNOb2RlVmlzaWJsZShlbGVtZW50KSB8
fCAhbW9kYWxFbGVtZW50SGFzQWNjZXNzaWJsZUNvbnRlbnQoKmVsZW1lbnQpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIGZvY3VzZWRFbGVt
ZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KSkgewotICAgICAgICAgICAgbV9jdXJyZW50TW9k
YWxFbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAg
ICAgIGxhc3RWaXNpYmxlID0gZWxlbWVudDsKKyAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYm
IGZvY3VzZWRFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KSkKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLQotICAgIGlmICghbV9jdXJyZW50TW9kYWxFbGVtZW50KQotICAgICAgICBt
X2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBsYXN0VmlzaWJsZS5nZXQoKTsKLQotICAgIHJldHVybiBt
X2N1cnJlbnRNb2RhbEVsZW1lbnQuZ2V0KCk7CisgICAgcmV0dXJuIGxhc3RWaXNpYmxlLmdldCgp
OwogfQogCiBib29sIEFYT2JqZWN0Q2FjaGU6OmlzTm9kZVZpc2libGUoTm9kZSogbm9kZSkgY29u
c3QKQEAgLTM4NSw3ICszOTEsNyBAQCBOb2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5vZGUoKQog
ICAgICAgICByZXR1cm4gbV9jdXJyZW50TW9kYWxFbGVtZW50LmdldCgpOwogCiAgICAgLy8gUmVj
b21wdXRlIHRoZSB2YWxpZCBhcmlhIG1vZGFsIG5vZGUgd2hlbiBtX2N1cnJlbnRNb2RhbEVsZW1l
bnQgaXMgbnVsbCBvciBoaWRkZW4uCi0gICAgcmV0dXJuIGN1cnJlbnRNb2RhbE5vZGUoKTsKKyAg
ICByZXR1cm4gcmVjb21wdXRlQ3VycmVudE1vZGFsTm9kZSgpOwogfQogCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFF
bGVtZW50KiBhcmVhRWxlbWVudCkKQEAgLTExMTksNiArMTEyNSwxMiBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqIG5vZGUpCiAKICAgICBtX2RlZmVy
cmVkTm9kZUFkZGVkT3JSZW1vdmVkTGlzdC5hZGQobm9kZSk7CiAKKyAgICBpZiAoaXM8RWxlbWVu
dD4obm9kZSkpIHsKKyAgICAgICAgYXV0byogY2hhbmdlZEVsZW1lbnQgPSBkb3duY2FzdDxFbGVt
ZW50Pihub2RlKTsKKyAgICAgICAgaWYgKGlzTW9kYWxFbGVtZW50KCpjaGFuZ2VkRWxlbWVudCkp
CisgICAgICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKGNoYW5nZWRFbGVtZW50KTsKKyAgICB9CisK
ICAgICBpZiAoIW1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAg
bV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KQEAgLTEzNTEs
MTIgKzEzNjMsMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlck1vZGFsQ2hhbmdlKEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3RhcnRPbmVT
aG90KDBfcyk7CiB9CiAgICAgCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZE5vZGUsIE5vZGUqIG5ld05vZGUpCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZE5vZGUsIE5vZGUq
IG5ld05vZGUsIFJlY29tcHV0ZU1vZGFsIHJlY29tcHV0ZU1vZGFsKQogewogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgc2V0SXNvbGF0ZWRUcmVlRm9jdXNlZE9i
amVjdChuZXdOb2RlKTsKICNlbmRpZgogCisgICAgaWYgKHJlY29tcHV0ZU1vZGFsID09IFJlY29t
cHV0ZU1vZGFsOjpZZXMpCisgICAgICAgIHJlY29tcHV0ZUN1cnJlbnRNb2RhbE5vZGUoKTsKICAg
ICBoYW5kbGVNZW51SXRlbVNlbGVjdGVkKG5ld05vZGUpOwogICAgIHBsYXRmb3JtSGFuZGxlRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQob2xkTm9kZSwgbmV3Tm9kZSk7CiB9CkBAIC0xNzU5LDE1ICsx
NzczLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Rm9jdXNhYmxlQ2hpbGQo
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lk
IEFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlKCkKLXsKLSAgICBpZiAobV9mb2N1c01vZGFs
Tm9kZVRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fZm9jdXNNb2RhbE5vZGVUaW1lci5zdG9w
KCk7Ci0gICAgCi0gICAgbV9mb2N1c01vZGFsTm9kZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwot
fQotCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJlZCgpCit2b2lk
IEFYT2JqZWN0Q2FjaGU6OmZvY3VzQ3VycmVudE1vZGFsKCkKIHsKICAgICBpZiAoIW1fZG9jdW1l
bnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzc1LDYgKzE3
ODEsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQoKQog
ICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdGVkRG9jdW1lbnQobV9kb2N1bWVudCk7CiAgICAgaWYg
KCFub2RlQW5kUmVuZGVyZXJBcmVWYWxpZChtX2N1cnJlbnRNb2RhbEVsZW1lbnQuZ2V0KCkpIHx8
ICFpc05vZGVWaXNpYmxlKG1fY3VycmVudE1vZGFsRWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJl
dHVybjsKKworICAgIC8vIERvbid0IGZvY3VzIHRoZSBjdXJyZW50IG1vZGFsIGlmIGZvY3VzIGhh
cyBiZWVuIHJlcXVlc3RlZCB0byBiZSBwdXQgZWxzZXdoZXJlIChlLmcuIHZpYSBKUykuCisgICAg
aWYgKCFtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gRG9uJ3Qgc2V0IGZvY3VzIGlmIHdlIGFyZSBhbHJlYWR5IGZvY3Vz
aW5nIG9udG8gc29tZSBlbGVtZW50IHdpdGhpbgogICAgIC8vIHRoZSBkaWFsb2cuCkBAIC0xOTc5
LDM0ICsxOTg5LDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2Uo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbnQKICAgICAgICAgcG9zdE5vdGlm
aWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWFNvcnREaXJlY3Rpb25DaGFuZ2VkKTsK
IH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZShFbGVtZW50JiBlbGVt
ZW50KQotewotICAgIGlmICghaXM8SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQpICYmICFub2Rl
SGFzUm9sZSgmZWxlbWVudCwgImRpYWxvZyJfcykgJiYgIW5vZGVIYXNSb2xlKCZlbGVtZW50LCAi
YWxlcnRkaWFsb2ciX3MpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wQ2FjaGluZ0NvbXB1
dGVkT2JqZWN0QXR0cmlidXRlcygpOwotCi0gICAgaWYgKCFtX21vZGFsTm9kZXNJbml0aWFsaXpl
ZCkKLSAgICAgICAgZmluZE1vZGFsTm9kZXMoKTsKLQotICAgIGlmIChpc01vZGFsRWxlbWVudChl
bGVtZW50KSkgewotICAgICAgICAvLyBBZGQgdGhlIG5ld2x5IG1vZGlmaWVkIG5vZGUgdG8gdGhl
IG1vZGFsIG5vZGVzIHNldC4KLSAgICAgICAgLy8gV2Ugd2lsbCByZWNvbXB1dGUgdGhlIGN1cnJl
bnQgdmFsaWQgYXJpYSBtb2RhbCBub2RlIGluIG1vZGFsTm9kZSgpIHdoZW4gdGhpcyBub2RlIGlz
IG5vdCB2aXNpYmxlLgotICAgICAgICBtX21vZGFsRWxlbWVudHNTZXQuYWRkKCZlbGVtZW50KTsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgdGhlIG5vZGUgZnJvbSB0aGUgbW9kYWwg
bm9kZXMgc2V0LgotICAgICAgICBtX21vZGFsRWxlbWVudHNTZXQucmVtb3ZlKCZlbGVtZW50KTsK
LSAgICB9Ci0KLSAgICAvLyBGaW5kIG5ldyBhY3RpdmUgbW9kYWwgbm9kZS4KLSAgICBjdXJyZW50
TW9kYWxOb2RlKCk7Ci0KLSAgICBpZiAobV9jdXJyZW50TW9kYWxFbGVtZW50KQotICAgICAgICBm
b2N1c01vZGFsTm9kZSgpOwotCi0gICAgc3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1
dGVzVW50aWxUcmVlTXV0YXRlcygpOwotfQotCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hh
bmdlZChFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVChpczxIVE1MTGFiZWxFbGVtZW50
PigqZWxlbWVudCkpOwpAQCAtMzM5MywyMyArMzM3NSw2MCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICBtX2RlZmVycmVkQXR0cmlidXRlQ2hh
bmdlLmNsZWFyKCk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBkZWZlcnJlZEZvY3VzZWRDaGFuZ2VD
b250ZXh0IDogbV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlKSB7Ci0gICAgICAgIGhhbmRsZUZv
Y3VzZWRVSUVsZW1lbnRDaGFuZ2VkKGRlZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQuZmlyc3Qs
IGRlZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQuc2Vjb25kKTsKKyAgICAgICAgLy8gRG9uJ3Qg
cmVjb21wdXRlIHRoZSBhY3RpdmUgbW9kYWwgZm9yIGVhY2ggaW5kaXZpZGFsIGZvY3VzIGNoYW5n
ZSwgYXMgdGhhdCBjb3VsZCBjYXVzZSBhIGxvdCBvZiBleHBlbnNpdmUgdHJlZSByZWJ1aWxkaW5n
LiBJbnN0ZWFkLCB3ZSBkbyBpdCBvbmNlIGJlbG93LgorICAgICAgICBoYW5kbGVGb2N1c2VkVUlF
bGVtZW50Q2hhbmdlZChkZWZlcnJlZEZvY3VzZWRDaGFuZ2VDb250ZXh0LmZpcnN0LCBkZWZlcnJl
ZEZvY3VzZWRDaGFuZ2VDb250ZXh0LnNlY29uZCwgUmVjb21wdXRlTW9kYWw6Ok5vKTsKICAgICAg
ICAgLy8gUmVjb21wdXRlIGlzSWdub3JlZCBhZnRlciBhIGZvY3VzIGNoYW5nZSBpbiBjYXNlIHRo
YXQgYWx0ZXJlZCB2aXNpYmlsaXR5LgogICAgICAgICByZWNvbXB1dGVJc0lnbm9yZWQoZGVmZXJy
ZWRGb2N1c2VkQ2hhbmdlQ29udGV4dC5maXJzdCk7CiAgICAgICAgIHJlY29tcHV0ZUlzSWdub3Jl
ZChkZWZlcnJlZEZvY3VzZWRDaGFuZ2VDb250ZXh0LnNlY29uZCk7CiAgICAgfQorICAgIGJvb2wg
dXBkYXRlZEZvY3VzZWRFbGVtZW50ID0gIW1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZS5pc0Vt
cHR5KCk7CisgICAgLy8gSWYgd2UgY2hhbmdlZCB0aGUgZm9jdXNlZCBlbGVtZW50LCB0aGF0IGNv
dWxkIGFmZmVjdCB3aGF0IG1vZGFsIHNob3VsZCBiZSBhY3RpdmUsIHNvIHJlY29tcHV0ZSBpdC4K
KyAgICBib29sIHNob3VsZFJlY29tcHV0ZU1vZGFsID0gdXBkYXRlZEZvY3VzZWRFbGVtZW50Owog
ICAgIG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZS5jbGVhcigpOwogCi0gICAgbV9kZWZlcnJl
ZE1vZGFsQ2hhbmdlZExpc3QuZm9yRWFjaChbdGhpc10gKGF1dG8mIGRlZmVycmVkTW9kYWxDaGFu
Z2VkRWxlbWVudCkgewotICAgICAgICBoYW5kbGVNb2RhbENoYW5nZShkZWZlcnJlZE1vZGFsQ2hh
bmdlZEVsZW1lbnQpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZGVmZXJy
ZWRNb2RhbENoYW5nZWRMaXN0KSB7CisgICAgICAgIGlmICghaXM8SFRNTERpYWxvZ0VsZW1lbnQ+
KGVsZW1lbnQpICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImRpYWxvZyJfcykgJiYgIW5vZGVI
YXNSb2xlKCZlbGVtZW50LCAiYWxlcnRkaWFsb2ciX3MpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgc2hvdWxkUmVjb21wdXRlTW9kYWwgPSB0cnVlOworICAgICAgICBpZiAoIW1f
bW9kYWxOb2Rlc0luaXRpYWxpemVkKQorICAgICAgICAgICAgZmluZE1vZGFsTm9kZXMoKTsKKwor
ICAgICAgICBpZiAoaXNNb2RhbEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIC8vIEFk
ZCB0aGUgbmV3bHkgbW9kaWZpZWQgbm9kZSB0byB0aGUgbW9kYWwgbm9kZXMgc2V0LgorICAgICAg
ICAgICAgLy8gV2Ugd2lsbCByZWNvbXB1dGUgdGhlIGN1cnJlbnQgdmFsaWQgYXJpYSBtb2RhbCBu
b2RlIGluIG1vZGFsTm9kZSgpIHdoZW4gdGhpcyBub2RlIGlzIG5vdCB2aXNpYmxlLgorICAgICAg
ICAgICAgbV9tb2RhbEVsZW1lbnRzU2V0LmFkZCgmZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9tb2RhbEVsZW1lbnRzU2V0LnJlbW92ZSgmZWxlbWVudCk7CisgICAgfQog
ICAgIG1fZGVmZXJyZWRNb2RhbENoYW5nZWRMaXN0LmNsZWFyKCk7CiAKKyAgICBpZiAoc2hvdWxk
UmVjb21wdXRlTW9kYWwpIHsKKyAgICAgICAgcmVjb21wdXRlQ3VycmVudE1vZGFsTm9kZSgpOwor
ICAgICAgICAvLyAiV2hlbiBhIG1vZGFsIGVsZW1lbnQgaXMgZGlzcGxheWVkLCBhc3Npc3RpdmUg
dGVjaG5vbG9naWVzIFNIT1VMRCBuYXZpZ2F0ZSB0byB0aGUgZWxlbWVudCB1bmxlc3MgZm9jdXMg
aGFzIGV4cGxpY2l0bHkgYmVlbiBzZXQgZWxzZXdoZXJlLiIKKyAgICAgICAgLy8gYHVwZGF0ZWRG
b2N1c2VkRWxlbWVudGAgaW5kaWNhdGVzIGZvY3VzIHdhcyBleHBsaWNpdGx5IHNldCBlbHNld2hl
cmUsIHNvIGRvbid0IGF1dG9mb2N1cyBpbnRvIHRoZSBtb2RhbC4KKyAgICAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2FyaWEvI2FyaWEtbW9kYWwKKyAgICAgICAgaWYgKCF1cGRhdGVkRm9j
dXNlZEVsZW1lbnQpCisgICAgICAgICAgICBmb2N1c0N1cnJlbnRNb2RhbCgpOworICAgIH0KKwog
ICAgIG1fZGVmZXJyZWRNZW51TGlzdENoYW5nZS5mb3JFYWNoKFt0aGlzXSAoYXV0byYgZWxlbWVu
dCkgewogICAgICAgICBoYW5kbGVNZW51TGlzdFZhbHVlQ2hhbmdlZChlbGVtZW50KTsKICAgICB9
KTsKICAgICBtX2RlZmVycmVkTWVudUxpc3RDaGFuZ2UuY2xlYXIoKTsKIAorI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgaWYgKG1fZGVmZXJyZWRSZWdlbmVyYXRl
SXNvbGF0ZWRUcmVlICYmIG1fcGFnZUlEKSB7CisgICAgICAgIGlmIChhdXRvIHRyZWUgPSBBWElz
b2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogd2ViQXJlYSA9IHJvb3RXZWJBcmVhKCkpIHsKKyAgICAgICAgICAgICAgICBBWExPRygi
UmVnZW5lcmF0aW5nIGlzb2xhdGVkIHRyZWUgZnJvbSBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVm
ZXJyZWRDYWNoZVVwZGF0ZSgpLiIpOworICAgICAgICAgICAgICAgIHRyZWUtPmdlbmVyYXRlU3Vi
dHJlZSgqd2ViQXJlYSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9k
ZWZlcnJlZFJlZ2VuZXJhdGVJc29sYXRlZFRyZWUgPSBmYWxzZTsKKyNlbmRpZgorCiAgICAgcGxh
dGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGYwNzM5YjZiYmZkYy4uODRmYzdh
M2Y5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aApAQCAtMzQyLDcgKzM0Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFu
Z2VOb3RpZmljYXRpb24oTm9kZSosIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlm
aWNhdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jiwg
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgcG9zdExpdmVSZWdpb25DaGFuZ2VO
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCopOwotICAgIHZvaWQgZm9jdXNNb2RhbE5v
ZGUoKTsKIAogICAgIGVudW0gQVhMb2FkaW5nRXZlbnQgewogICAgICAgICBBWExvYWRpbmdTdGFy
dGVkLApAQCAtNDU1LDcgKzQ1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxpdmVSZWdpb25D
aGFuZ2VkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQoKTsKICAgICAKLSAgICB2b2lkIGZvY3Vz
TW9kYWxOb2RlVGltZXJGaXJlZCgpOworICAgIHZvaWQgZm9jdXNDdXJyZW50TW9kYWwoKTsKICAg
ICAKICAgICB2b2lkIHBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyRmlyZWQoKTsKIApAQCAtNDgxLDE1
ICs0ODAsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkKEVsZW1lbnQmKTsKIAogICAgIHZvaWQgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdlKE5vZGUq
KTsKLSAgICB2b2lkIGhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3Vz
ZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CisgICAgZW51bSBjbGFzcyBSZWNvbXB1dGVN
b2RhbCA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCBoYW5kbGVGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUsIFJlY29t
cHV0ZU1vZGFsID0gUmVjb21wdXRlTW9kYWw6Olllcyk7CiAgICAgdm9pZCBoYW5kbGVNZW51TGlz
dFZhbHVlQ2hhbmdlZChFbGVtZW50Jik7CiAKICAgICAvLyBhcmlhLW1vZGFsIG9yIG1vZGFsIDxk
aWFsb2c+IHJlbGF0ZWQKICAgICBib29sIGlzTW9kYWxFbGVtZW50KEVsZW1lbnQmKSBjb25zdDsK
ICAgICB2b2lkIGZpbmRNb2RhbE5vZGVzKCk7Ci0gICAgRWxlbWVudCogY3VycmVudE1vZGFsTm9k
ZSgpOworICAgIEVsZW1lbnQqIHJlY29tcHV0ZUN1cnJlbnRNb2RhbE5vZGUoKTsKKyAgICBFbGVt
ZW50KiByZWNvbXB1dGVDdXJyZW50TW9kYWxOb2RlSW5uZXIoKTsKICAgICBib29sIGlzTm9kZVZp
c2libGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgaGFuZGxlTW9kYWxDaGFuZ2UoRWxlbWVudCYp
OwogICAgIGJvb2wgbW9kYWxFbGVtZW50SGFzQWNjZXNzaWJsZUNvbnRlbnQoRWxlbWVudCYpOwog
CiAgICAgLy8gUmVsYXRpb25zaGlwcyBiZXR3ZWVuIG9iamVjdHMuCkBAIC01MzEsNyArNTMxLDYg
QEAgcHJpdmF0ZToKICAgICBUaW1lciBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVyOwogICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9saXZlUmVnaW9uT2Jq
ZWN0c1NldDsKIAotICAgIFRpbWVyIG1fZm9jdXNNb2RhbE5vZGVUaW1lcjsKICAgICBXZWFrUHRy
PEVsZW1lbnQ+IG1fY3VycmVudE1vZGFsRWxlbWVudDsKICAgICAvLyBNdWx0aXBsZSBhcmlhLW1v
ZGFscyBiZWhhdmlvciBpcyB1bmRlZmluZWQgYnkgc3BlYy4gV2Uga2VlcCB0aGVtIHNvcnRlZCBi
YXNlZCBvbiBET00gb3JkZXIgaGVyZS4KICAgICAvLyBJZiB0aGF0IGNoYW5nZXMgdG8gcmVxdWly
ZSBvbmx5IG9uZSBhcmlhLW1vZGFsIHdlIGNvdWxkIGNoYW5nZSB0aGlzIHRvIGEgV2Vha0hhc2hT
ZXQsIG9yIGRpc2NhcmQgdGhlIHNldCBjb21wbGV0ZWx5LgpAQCAtNTUzLDYgKzU1Miw5IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgU3RyaW5nPiBtX2RlZmVycmVkVGV4dEZvcm1D
b250cm9sVmFsdWU7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgUXVhbGlmaWVkTmFtZT4gbV9kZWZl
cnJlZEF0dHJpYnV0ZUNoYW5nZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPE5vZGUqLCBOb2RlKj4+
IG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZTsKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQorICAgIGJvb2wgbV9kZWZlcnJlZFJlZ2VuZXJhdGVJc29sYXRlZFRyZWUg
eyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFs
c2UgfTsKICAgICBkb3VibGUgbV9sb2FkaW5nUHJvZ3Jlc3MgeyAwIH07CkBAIC01ODgsNyArNTkw
LDcgQEAgaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQVhDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlOjpnZXRJZ25vcmVkKEEKIGlubGluZSBBY2Nlc3NpYmlsaXR5UmVwbGFj
ZWRUZXh0OjpBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KSB7IH0KIGlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQ6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VOb3RpZmljYXRpb24oQVhPYmplY3RDYWNoZSosIEFYVGV4dEVkaXRUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBWENv
bXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OnNldElnbm9yZWQoQVhJRCwgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbikgeyB9Ci1pbmxpbmUgQVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNo
ZShEb2N1bWVudCYgZG9jdW1lbnQpIDogbV9kb2N1bWVudChkb2N1bWVudCksIG1fbm90aWZpY2F0
aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVy
RmlyZWQpLCBtX3Bhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RD
YWNoZTo6cGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCksIG1fbGl2ZVJlZ2lvbkNo
YW5nZWRQb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpsaXZlUmVnaW9uQ2hhbmdlZE5v
dGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwgbV9mb2N1c01vZGFsTm9kZVRpbWVyKCp0aGlzLCAm
QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKSwgbV9wZXJmb3JtQ2FjaGVV
cGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVy
RmlyZWQpIHsgfQoraW5saW5lIEFYT2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQm
IGRvY3VtZW50KSA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpLCBtX25vdGlmaWNhdGlvblBvc3RUaW1l
cigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwgbV9w
YXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBhc3N3
b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpLCBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRp
bWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bGl2ZVJlZ2lvbkNoYW5nZWROb3RpZmljYXRpb25Q
b3N0VGltZXJGaXJlZCksIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRoaXMsICZBWE9iamVj
dENhY2hlOjpwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKSB7IH0KIGlubGluZSBBWE9iamVj
dENhY2hlOjp+QVhPYmplY3RDYWNoZSgpIHsgfQogaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFYT2JqZWN0Q2FjaGU6OmdldChSZW5kZXJPYmplY3QqKSB7IHJldHVybiBudWxscHRyOyB9CiBp
bmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KE5vZGUqKSB7IHJl
dHVybiBudWxscHRyOyB9CkBAIC02MjMsMTkgKzYyNSwxOCBAQCBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpkZWZlclRleHRSZXBsYWNlbWVudE5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhU
TUxUZQogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShBVFNQSSkKIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlKSB7IH0KICNlbmRpZgotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Zm9j
dXNNb2RhbE5vZGVUaW1lckZpcmVkKCkgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpm
b2N1c0N1cnJlbnRNb2RhbCgpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9y
bUNhY2hlVXBkYXRlVGltZXJGaXJlZCgpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRpb24oRnJhbWUqLCBBWExvYWRpbmdFdmVudCkgeyB9
CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWExvYWRpbmdFdmVudCkgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChFbGVt
ZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRD
aGFuZ2UoTm9kZSopIHsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTW9kYWxD
aGFuZ2UoRWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJNb2Rh
bENoYW5nZShFbGVtZW50KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVS
b2xlQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVkZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0
ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCopIHsgfQogaW5saW5lIGJvb2wg
QVhPYmplY3RDYWNoZTo6c2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiwgTm9kZSopIHsgfQor
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQo
Tm9kZSosIE5vZGUqLCBSZWNvbXB1dGVNb2RhbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpoYW5kbGVTY3JvbGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopIHsgfQogaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKikgeyB9CiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpsaXZlUmVnaW9uQ2hhbmdlZE5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKCkgeyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQKaW5k
ZXggNDkxYTNjN2Q4MjM1Li5hZmFlOTZjNGQ3ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1l
eHBlY3RlZC50eHQKQEAgLTEsMjAgKzEsNDYgQEAKIFRoaXMgdGVzdHMgdGhhdCBhcmlhLW1vZGFs
IHdvcmtzIGNvcnJlY3RseSBvbiBtdWx0aXBsZSBkaWFsb2dzCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQotUEFTUyBi
YWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGRpYWxvZzFBY2Nlc3NpYmxlKCkg
aXMgdHJ1ZQotUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGRpYWxv
ZzFBY2Nlc3NpYmxlKCkgaXMgZmFsc2UKLVBBU1MgY2xvc2VCdG4uaXNJZ25vcmVkIGlzIGZhbHNl
Ci1QQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgZmFsc2UKLVBBU1MgZGlhbG9nMUFjY2Vz
c2libGUoKSBpcyB0cnVlCi1QQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorCitW
ZXJpZnlpbmcgdGhlIGJhY2tncm91bmQgaXMgYWNjZXNzaWJsZSBvbiBwYWdlIGxvYWQuCisKK1BB
U1M6IGJhY2tncm91bmQgYWNjZXNzaWJsZTogdHJ1ZQorCitDbGlja2luZyB0aGUgZGlzcGxheSBi
dXR0b24gdG8gb3BlbiAjZGlhbG9nMS4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBm
YWxzZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTogdHJ1ZQorCitDbGlja2luZyB0aGUgbmV3
IGJ1dHRvbiB0byBvcGVuICNkaWFsb2cyIHdpdGhvdXQgY2xvc2luZyAjZGlhbG9nMS4KKworUEFT
UzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxzZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJs
ZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6IHRydWUKKworRm9jdXNpbmcgZmly
c3QgZGVzY2VuZGFudCBvZiAjZGlhbG9nMS4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxl
OiBmYWxzZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTogdHJ1ZQorUEFTUzogI2RpYWxvZzIg
YWNjZXNzaWJsZTogZmFsc2UKKworTW92aW5nIGZvY3VzIGJhY2sgdG8gZmlyc3QgZGVzY2VuZGFu
dCBvZiAjZGlhbG9nMi4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxzZQorUEFT
UzogI2RpYWxvZzEgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6
IHRydWUKKworQ2xvc2luZyBkaWFsb2cyLgorCitQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vzc2libGU6
IGZhbHNlCitQQVNTOiAjZGlhbG9nMSBhY2Nlc3NpYmxlOiB0cnVlCisKK0Nsb3NpbmcgZGlhbG9n
MS4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiB0cnVlCisKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQorCiBPdGhlciBwYWdlIGNvbnRlbnQg
d2l0aCBhIGR1bW15IGZvY3VzYWJsZSBlbGVtZW50CiAKIERpc3BsYXkgYSBkaWFsb2cKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFs
b2dzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUt
ZGlhbG9ncy5odG1sCmluZGV4IDI4MmFhZTRmYjIxNi4uMzQ5OTI5N2ZhMTZiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1k
aWFsb2dzLmh0bWwKQEAgLTEsOTQgKzEsMTMzIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxzdHlsZT4KLS5ib3gt
aGlkZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotPC9zdHlsZT4KKzxib2R5PgogCi08Ym9k
eSBpZD0iYm9keSI+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHRmaWVsZCIgdmFsdWU9IlRl
eHQgZmllbGQuIj4KKzxwIGlkPSJiZ0NvbnRlbnQiPk90aGVyIHBhZ2UgY29udGVudCB3aXRoIDxh
IGlkPSJiYWNrZ3JvdW5kLWxpbmsiIHRhYmluZGV4PSIwIiBocmVmPSIjIj5hIGR1bW15IGZvY3Vz
YWJsZSBlbGVtZW50PC9hPjwvcD4KKzxwPjxhIG9uY2xpY2s9InRvZ2dsZURpYWxvZyhkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nMScpLCAnc2hvdycpOyByZXR1cm4gZmFsc2U7IiBocmVm
PSIjIiByb2xlPSJidXR0b24iIGlkPSJkaXNwbGF5QnRuIj5EaXNwbGF5IGEgZGlhbG9nPC9hPjwv
cD4KIAotPGRpdiBpZD0iYmciPgotPHAgaWQ9ImJnQ29udGVudCI+T3RoZXIgcGFnZSBjb250ZW50
IHdpdGggPGEgaHJlZj0iIyI+YSBkdW1teSBmb2N1c2FibGUgZWxlbWVudDwvYT48L3A+Ci08cD48
YSBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpLCdz
aG93Jyk7IHJldHVybiBmYWxzZTsiIGhyZWY9IiMiIHJvbGU9ImJ1dHRvbiIgaWQ9ImRpc3BsYXlC
dG4iPkRpc3BsYXkgYSBkaWFsb2c8L2E+PC9wPgorPGRpdiByb2xlPSJkaWFsb2ciIGFyaWEtbGFi
ZWxsZWRieT0iZGVzY3JpcHRpb24xIiBpZD0iZGlhbG9nMSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUi
IHRhYmluZGV4PSItMSI+CisgICAgPGgzIGlkPSJkZXNjcmlwdGlvbjEiPkp1c3QgYW4gZXhhbXBs
ZS48L2gzPgorICAgIDxhIGlkPSJkaWFsb2cxLWxpbmsiIHRhYmluZGV4PSIwIiBocmVmPSIjIj5M
aW5rIHByZXNlbnQgdG8gZW5zdXJlIHdlIGhhdmUgYSBmb2N1c2FibGUgZWxlbWVudDwvYT4KKyAg
ICA8YnV0dG9uIGlkPSJvayIgb25jbGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkaWFsb2cxJyksICdoaWRlJyk7Ij5PSzwvYnV0dG9uPgorICAgIDxidXR0b24gb25j
bGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2cyJyksICdz
aG93Jyk7IiBpZD0ibmV3Ij5OZXc8L2J1dHRvbj4KIDwvZGl2PgogCi08ZGl2IHJvbGU9ImRpYWxv
ZyIgYXJpYS1sYWJlbGxlZGJ5PSJteURpYWxvZyIgaWQ9ImJveCIgY2xhc3M9ImJveC1oaWRkZW4i
IHRhYmluZGV4PSItMSI+Ci0gICAgPGgzIGlkPSJteURpYWxvZyI+SnVzdCBhbiBleGFtcGxlLjwv
aDM+Ci0gICAgPGJ1dHRvbiBpZD0ib2siIG9uY2xpY2s9InRvZ2dsZURpYWxvZyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYm94JyksJ2hpZGUnKTsiIGNsYXNzPSJjbG9zZS1idXR0b24iPk9LPC9i
dXR0b24+Ci0gICAgPGJ1dHRvbiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JveDInKSwnc2hvdycpOyIgaWQ9Im5ldyI+TmV3PC9idXR0b24+Cis8ZGl2IHJv
bGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJkZXNjcmlwdGlvbjIiIGlkPSJkaWFsb2cyIiBz
dHlsZT0iZGlzcGxheTogbm9uZSIgdGFiaW5kZXg9Ii0xIj4KKyAgICA8aDMgaWQ9ImRlc2NyaXB0
aW9uMiI+QW5vdGhlciBkaWFsb2cuPC9oMz4KKyAgICA8YSBpZD0iZGlhbG9nMi1saW5rIiB0YWJp
bmRleD0iMCIgaHJlZj0iIyI+TGluayBwcmVzZW50IHRvIGVuc3VyZSB3ZSBoYXZlIGEgZm9jdXNh
YmxlIGVsZW1lbnQ8L2E+CisgICAgPGJ1dHRvbiBpZD0iY2xvc2UiIG9uY2xpY2s9InRvZ2dsZURp
YWxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nMicpLCAnaGlkZScpOyI+Q2xvc2U8
L2J1dHRvbj4KIDwvZGl2PgogCi08ZGl2IHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJt
eURpYWxvZzIiIGlkPSJib3gyIiBjbGFzcz0iYm94LWhpZGRlbiIgdGFiaW5kZXg9Ii0xIj4KLSAg
ICA8aDMgaWQ9Im15RGlhbG9nMiI+QW5vdGhlciBkaWFsb2cuPC9oMz4KLSAgICA8YnV0dG9uIGlk
PSJjbG9zZSIgb25jbGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
b3gyJyksJ2hpZGUnKTsiIGNsYXNzPSJjbG9zZS1idXR0b24iPkNsb3NlPC9idXR0b24+Ci08L2Rp
dj4KKzxzY3JpcHQ+CisgICAgdmFyIHRlc3RPdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGF0IGFyaWEt
bW9kYWwgd29ya3MgY29ycmVjdGx5IG9uIG11bHRpcGxlIGRpYWxvZ3NcblxuIjsKIAorICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgIHRlc3RPdXRwdXQgKz0gIlxuVmVyaWZ5aW5nIHRoZSBiYWNrZ3JvdW5kIGlzIGFjY2Vz
c2libGUgb24gcGFnZSBsb2FkLlxuXG4iOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFj
Y2Vzc2libGUodHJ1ZSk7CiAKLTxzY3JpcHQ+CisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJc
bkNsaWNraW5nIHRoZSBkaXNwbGF5IGJ1dHRvbiB0byBvcGVuICNkaWFsb2cxLlxuXG4iOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc3BsYXlCdG4iKS5jbGljaygpOwor
ICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUoZmFsc2UpOworICAgICAgICAg
ICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUodHJ1ZSk7CiAKLSAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyB0aGF0IGFyaWEtbW9kYWwgd29ya3MgY29ycmVjdGx5IG9uIG11bHRpcGxlIGRpYWxv
Z3MiKTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gIlxuQ2xpY2tpbmcgdGhlIG5ldyBidXR0
b24gdG8gb3BlbiAjZGlhbG9nMiB3aXRob3V0IGNsb3NpbmcgI2RpYWxvZzEuXG5cbiI7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3IikuY2xpY2soKTsKKyAgICAgICAg
ICAgIGF3YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0
IGRpYWxvZzFBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IGRpYWxvZzJBY2Nl
c3NpYmxlKHRydWUpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewotICAgICAgICAvLyBCYWNrZ3JvdW5kIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGFmdGVyIGxvYWRp
bmcuCi0gICAgICAgIHNob3VsZEJlVHJ1ZSgiYmFja2dyb3VuZEFjY2Vzc2libGUoKSIpOwotICAg
ICAgICAKLSAgICAgICAgLy8gQ2xpY2sgdGhlIGRpc3BsYXkgYnV0dG9uLCBkaWFsb2cxIHNob3dz
IGFuZCBiYWNrZ3JvdW5kIGJlY29tZXMgdW5hY2Nlc3NpYmxlLgotICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZGlzcGxheUJ0biIpLmNsaWNrKCk7Ci0gICAgICAgIHNob3VsZEJlRmFs
c2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJkaWFs
b2cxQWNjZXNzaWJsZSgpIik7Ci0gICAgICAgIAotICAgICAgICAvLyBDbGljayB0aGUgbmV3IGJ1
dHRvbiwgZGlhbG9nMiBzaG93cyBhbmQgYmFja2dyb3VuZC9kaWFsb2cxIHNob3VsZCBib3RoIGJl
IHVuYWNjZXNzaWJsZS4KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ldyIpLmNs
aWNrKCk7Ci0gICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsK
LSAgICAgICAgc2hvdWxkQmVGYWxzZSgiZGlhbG9nMUFjY2Vzc2libGUoKSIpOwotICAgICAgICB2
YXIgY2xvc2VCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNsb3NlIik7Ci0gICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlQnRuLmlzSWdub3JlZCIp
OwotICAgICAgICAKLSAgICAgICAgLy8gQ2xvc2UgZGlhbG9nMiwgZGlhbG9nMSBzaG91bGQgYmVj
b21lIGFjY2Vzc2libGUgYnV0IG5vdCB0aGUgYmFja2dyb3VuZAotICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2xvc2UiKS5jbGljaygpOwotICAgICAgICBzaG91bGRCZUZhbHNlKCJi
YWNrZ3JvdW5kQWNjZXNzaWJsZSgpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZGlhbG9nMUFj
Y2Vzc2libGUoKSIpOwotICAgICAgICAKLSAgICAgICAgLy8gQ2xvc2UgZGlhbG9nMSwgYmFja2dy
b3VuZCBzaG91bGQgYmUgYWNjZXNzaWJsZS4KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm9rIikuY2xpY2soKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJiYWNrZ3JvdW5kQWNjZXNz
aWJsZSgpIik7CisgICAgICAgICAgICAvLyBXaXRoIGJvdGggbW9kYWxzIGFjdGl2ZSwgYW5kIGZv
Y3VzIGN1cnJlbnRseSBpbiAjZGlhbG9nMiwgbW92aW5nIGZvY3VzIHRvICNkaWFsb2cxIHNob3Vs
ZCBjYXVzZSBpdCB0byBiZWNvbWUgdGhlIGFjdGl2ZSBtb2RhbC4KKyAgICAgICAgICAgIHRlc3RP
dXRwdXQgKz0gIlxuRm9jdXNpbmcgZmlyc3QgZGVzY2VuZGFudCBvZiAjZGlhbG9nMS5cblxuIjsK
KyAgICAgICAgICAgIGZvY3VzRmlyc3REZXNjZW5kYW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaWFsb2cxIikpOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUoZmFs
c2UpOworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUodHJ1ZSk7CisgICAgICAg
ICAgICBhd2FpdCBkaWFsb2cyQWNjZXNzaWJsZShmYWxzZSk7CisKKyAgICAgICAgICAgIHRlc3RP
dXRwdXQgKz0gIlxuTW92aW5nIGZvY3VzIGJhY2sgdG8gZmlyc3QgZGVzY2VuZGFudCBvZiAjZGlh
bG9nMi5cblxuIjsKKyAgICAgICAgICAgIGZvY3VzRmlyc3REZXNjZW5kYW50KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkaWFsb2cyIikpOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFj
Y2Vzc2libGUoZmFsc2UpOworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUoZmFs
c2UpOworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMkFjY2Vzc2libGUodHJ1ZSk7CisKKyAgICAg
ICAgICAgIHRlc3RPdXRwdXQgKz0gIlxuQ2xvc2luZyBkaWFsb2cyLlxuXG4iOworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlIikuY2xpY2soKTsKKyAgICAgICAgICAg
IGF3YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IGRp
YWxvZzFBY2Nlc3NpYmxlKHRydWUpOworCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJcbkNs
b3NpbmcgZGlhbG9nMS5cblxuIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvayIpLmNsaWNrKCk7CisgICAgICAgICAgICBhd2FpdCBiYWNrZ3JvdW5kQWNjZXNzaWJsZSh0
cnVlKTsKKworICAgICAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CisgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGZ1bmN0aW9uIGJhY2tn
cm91bmRBY2Nlc3NpYmxlKCkgewotICAgICAgICB2YXIgZGlzcGxheUJ0biA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZGlzcGxheUJ0biIpOwotICAgICAg
ICB2YXIgYmdDb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJiZ0NvbnRlbnQiKTsKLSAgICAgICAgaWYgKCFkaXNwbGF5QnRuIHx8ICFiZ0NvbnRl
bnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiAhZGlzcGxheUJ0
bi5pc0lnbm9yZWQgJiYgIWJnQ29udGVudC5pc0lnbm9yZWQ7CisgICAgYXN5bmMgZnVuY3Rpb24g
YmFja2dyb3VuZEFjY2Vzc2libGUoc2hvdWxkQmVBY2Nlc3NpYmxlKSB7CisgICAgICAgIGF3YWl0
IHdhaXRGb3IoKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGlzcGxheUJ0biA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZGlzcGxheUJ0biIpOworICAg
ICAgICAgICAgY29uc3QgYmdDb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJiZ0NvbnRlbnQiKTsKKyAgICAgICAgICAgIGlmICghZGlzcGxheUJ0
biB8fCAhYmdDb250ZW50KQorICAgICAgICAgICAgICAgIHJldHVybiAhc2hvdWxkQmVBY2Nlc3Np
YmxlOworICAgICAgICAgICAgcmV0dXJuICghZGlzcGxheUJ0bi5pc0lnbm9yZWQgJiYgIWJnQ29u
dGVudC5pc0lnbm9yZWQpID09PSBzaG91bGRCZUFjY2Vzc2libGU7CisgICAgICAgIH0pOworICAg
ICAgICB0ZXN0T3V0cHV0ICs9IGBQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vzc2libGU6ICR7c2hvdWxk
QmVBY2Nlc3NpYmxlfVxuYAogICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBkaWFsb2cxQWNjZXNz
aWJsZSgpIHsKLSAgICAgICAgIHZhciBva0J0biA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgib2siKTsKLSAgICAgICAgIHZhciBuZXdCdG4gPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm5ldyIpOwotICAgICAgICAg
aWYgKCFva0J0biB8fCAhbmV3QnRuKQotICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgIHJldHVybiAhb2tCdG4uaXNJZ25vcmVkICYmICFuZXdCdG4uaXNJZ25vcmVkOworICAgIGFz
eW5jIGZ1bmN0aW9uIGRpYWxvZzFBY2Nlc3NpYmxlKHNob3VsZEJlQWNjZXNzaWJsZSkgeworICAg
ICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IG9rQnRuID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJvayIpOworICAgICAg
ICAgICAgY29uc3QgbmV3QnRuID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJuZXciKTsKKyAgICAgICAgICAgIGlmICghb2tCdG4gfHwgIW5ld0J0bikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIXNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgICAgIHJl
dHVybiAoIW9rQnRuLmlzSWdub3JlZCAmJiAhbmV3QnRuLmlzSWdub3JlZCkgPT09IHNob3VsZEJl
QWNjZXNzaWJsZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gYFBBU1M6ICNk
aWFsb2cxIGFjY2Vzc2libGU6ICR7c2hvdWxkQmVBY2Nlc3NpYmxlfVxuYAorICAgIH0KKworICAg
IGFzeW5jIGZ1bmN0aW9uIGRpYWxvZzJBY2Nlc3NpYmxlKHNob3VsZEJlQWNjZXNzaWJsZSkgewor
ICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNsb3NlQnV0
dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjbG9z
ZSIpOworICAgICAgICAgICAgaWYgKCFjbG9zZUJ1dHRvbikKKyAgICAgICAgICAgICAgICByZXR1
cm4gIXNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgICAgIHJldHVybiBjbG9zZUJ1dHRvbi5p
c0lnbm9yZWQgIT09IHNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRl
c3RPdXRwdXQgKz0gYFBBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6ICR7c2hvdWxkQmVBY2Nlc3Np
YmxlfVxuYAogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiB0b2dnbGVEaWFsb2coZGlhbG9nLCBz
aCkgewotICAgIGlmIChzaCA9PSAic2hvdyIpIHsKLSAgICAgICAgLy8gc2hvdyB0aGUgZGlhbG9n
IAotICAgICAgICBkaWFsb2cuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Ci0gICAgICAgIGRpYWxv
Zy5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCAidHJ1ZSIpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICBkaWFsb2cuc2V0QXR0
cmlidXRlKCJhcmlhLW1vZGFsIiwgImZhbHNlIik7IAorICAgICAgICBpZiAoc2ggPT0gInNob3ci
KSB7CisgICAgICAgICAgICBkaWFsb2cuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CisgICAgICAg
ICAgICBkaWFsb2cuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgInRydWUiKTsKKyAgICAgICAg
ICAgIC8vIFB1dCBmb2N1cyBpbnNpZGUgdGhlIG5ldyBkaWFsb2cgc28gaXQgdGFrZXMgcHJlY2Vk
ZW5jZSBvdmVyIG90aGVyIGRpYWxvZ3MgKGV2ZW4gaWYgdGhleSBjb21lIGxhdGVyIGluIERPTSBv
cmRlcikuCisgICAgICAgICAgICBmb2N1c0ZpcnN0RGVzY2VuZGFudChkaWFsb2cpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZGlhbG9nLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cisg
ICAgICAgICAgICBkaWFsb2cuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgImZhbHNlIik7Cisg
ICAgICAgIH0KICAgICB9Ci19Ci0KLTwvc2NyaXB0PgogCisgICAgZnVuY3Rpb24gZm9jdXNGaXJz
dERlc2NlbmRhbnQoZWxlbWVudCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1l
bnQuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBl
bGVtZW50LmNoaWxkTm9kZXNbaV07CisgICAgICAgICAgICBpZiAoIWF0dGVtcHRGb2N1cyhjaGls
ZCkpCisgICAgICAgICAgICAgICAgZm9jdXNGaXJzdERlc2NlbmRhbnQoY2hpbGQpCisgICAgICAg
IH0KKyAgICB9OwogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgICAgZnVuY3Rpb24gYXR0ZW1wdEZvY3VzKGVsZW1lbnQpIHsKKyAgICAgICAg
dHJ5IHsgZWxlbWVudC5mb2N1cygpIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIHJldHVybiBkb2N1
bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbGVtZW50OworICAgIH0KKzwvc2NyaXB0PgogPC9ib2R5
PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1h
ZnRlci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwt
ZWxlbWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmQ5YmZmMDg1ZGE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1l
bGVtZW50LWFwcGVhcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgd2UgdXBkYXRlIHRoZSBwYWdlLXdpZGUgYWN0aXZlIG1vZGFsIHdoZW4gYW4g
YXJpYS1tb2RhbCBlbGVtZW50IGlzIGR5bmFtaWNhbGx5IGFkZGVkIGFuZCByZW1vdmVkLgorCitQ
QVNTOiBNb2RhbCBjb250ZW50IGlzIG5vdCBpbml0aWFsbHkgYWNjZXNzaWJsZS4KKworVW4taGlk
aW5nIGFyaWEtbW9kYWwgZWxlbWVudC4KK1BBU1M6IEJhY2tncm91bmQgaXMgaW5hY2Nlc3NpYmxl
LCBtb2RhbCBjb250ZW50IGlzIGFjY2Vzc2libGUuCisKK1JlLWhpZGluZyBhcmlhLW1vZGFsIGVs
ZW1lbnQuCitQQVNTOiBCYWNrZ3JvdW5kIGlzIGFjY2Vzc2libGUsIG1vZGFsIGNvbnRlbnQgaXMg
aW5hY2Nlc3NpYmxlLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29t
cHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVy
LWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5iN2E4OWViYjQxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9k
YWwtZWxlbWVudC1hcHBlYXJzLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorCis8ZGl2IGlkPSJjb250ZW50Ij4KKyAgICA8cCBpZD0icC1iZWZvcmUtbW9kYWwiPlBh
Z2UgY29udGVudCBiZWZvcmUgbW9kYWw8L3A+CisKKyAgICA8ZGl2IGlkPSJtb2RhbCIgYXJpYS1t
b2RhbD0idHJ1ZSIgcm9sZT0iZGlhbG9nIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CisgICAgICAg
IDxwIGlkPSJwLWluc2lkZS1tb2RhbCI+UGFnZSBjb250ZW50IGluc2lkZSBtb2RhbDwvcD4KKyAg
ICAgICAgPGJ1dHRvbiBpZD0iY2xvc2UtYnV0dG9uIj5DbG9zZSBtb2RhbCBidXR0b248L2J1dHRv
bj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJuZXctbW9kYWwtY29udGFpbmVyIj48L2Rpdj4K
KworICAgIDxwIGlkPSJwLWFmdGVyLW1vZGFsIj5QYWdlIGNvbnRlbnQgYWZ0ZXIgbW9kYWw8L3A+
Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9ICJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHdlIHVwZGF0ZSB0aGUgcGFnZS13aWRlIGFjdGl2ZSBtb2RhbCB3aGVuIGFuIGFy
aWEtbW9kYWwgZWxlbWVudCBpcyBkeW5hbWljYWxseSBhZGRlZCBhbmQgcmVtb3ZlZC5cblxuIjsK
KworICAgIGZ1bmN0aW9uIGJhY2tncm91bmRJc0FjY2Vzc2libGUoKSB7CisgICAgICAgIHJldHVy
biBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInAtYmVmb3Jl
LW1vZGFsIikgJiYKKyAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicC1hZnRlci1tb2RhbCIpOworICAgIH0KKyAgICBmdW5jdGlvbiBtb2Rh
bENvbnRlbnRJc0FjY2Vzc2libGUoKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInAtaW5zaWRlLW1vZGFsIikgJiYKKyAgICAg
ICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xv
c2UtYnV0dG9uIik7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
aWYgKGJhY2tncm91bmRJc0FjY2Vzc2libGUoKSAmJiAhbW9kYWxDb250ZW50SXNBY2Nlc3NpYmxl
KCkpCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJQQVNTOiBNb2RhbCBjb250ZW50IGlzIG5v
dCBpbml0aWFsbHkgYWNjZXNzaWJsZS5cbiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRl
c3RPdXRwdXQgKz0gIkZBSUw6IE1vZGVsIGNvbnRlbnQgaXMgaW5pdGlhbGx5IGFjY2Vzc2libGUu
XG4iOworCisgICAgICAgIHRlc3RPdXRwdXQgKz0gYFxuVW4taGlkaW5nIGFyaWEtbW9kYWwgZWxl
bWVudC5cbmA7CisgICAgICAgIC8vIE1vdmUgdGhlIG1vZGFsIGluIHRoZSBET00uIFRoaXMgaXMg
dGhlIGtleSB0aGluZyBiZWluZyB0ZXN0ZWQgLS0gZG8gd2UgcHJvcGVybHkgcHJlc2VydmUgbW9k
YWwgYmVoYXZpb3IKKyAgICAgICAgLy8gZm9yIGEgbW9kYWwgdGhhdCBoYXMgYmVlbiBtb3ZlZD8K
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ldy1tb2RhbC1jb250YWluZXIiKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9kYWwiKSkKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vZGFsIikucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOwor
ICAgICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXdhaXQg
d2FpdEZvcigoKSA9PiB7IHJldHVybiAhYmFja2dyb3VuZElzQWNjZXNzaWJsZSgpICYmIG1vZGFs
Q29udGVudElzQWNjZXNzaWJsZSgpIH0pOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiUEFT
UzogQmFja2dyb3VuZCBpcyBpbmFjY2Vzc2libGUsIG1vZGFsIGNvbnRlbnQgaXMgYWNjZXNzaWJs
ZS5cbiI7CisKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gYFxuUmUtaGlkaW5nIGFyaWEtbW9k
YWwgZWxlbWVudC5cbmA7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9k
YWwiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigo
KSA9PiB7IHJldHVybiBiYWNrZ3JvdW5kSXNBY2Nlc3NpYmxlKCkgfSk7CisgICAgICAgICAgICB0
ZXN0T3V0cHV0ICs9ICJQQVNTOiBCYWNrZ3JvdW5kIGlzIGFjY2Vzc2libGUsIG1vZGFsIGNvbnRl
bnQgaXMgaW5hY2Nlc3NpYmxlLlxuIjsKKworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgICAg
ICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwotLSAKMi4zMi4w
IChBcHBsZSBHaXQtMTMyKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460016</attachid>
            <date>2022-06-03 10:32:25 -0700</date>
            <delta_ts>2022-06-07 14:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240978-20220603103224.patch</filename>
            <type>text/plain</type>
            <size>33987</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBkMWQ5ZWMzMmI2OTNhNTY1YmMwNzEwODVlNzQwYzFlM2UyZDJmYjk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAzIEp1biAyMDIyIDEwOjMwOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFdl
YktpdCBkb2VzIG5vdCB0cmFwIHVzZXIgZm9jdXMgaW5zaWRlIG1vZGFscyB0aGF0IGhhdmUKIGJl
ZW4gRE9NIG1vdmVkIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA5
NzgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKSW4gdGhpcyBwYXRjaCwgd2Ugbm93IHBy
b3Blcmx5IHRyYXAgdXNlciBmb2N1cyBpbnNpZGUgbm9uLWVtcHR5IG1vZGFscwp0aGF0IGhhdmUg
YmVlbiBET00gbW92ZWQuIFRoaXMgcGF0dGVybiBpcyB1c2VkIGluIHRoZSBXQUktQVJJQSBhcmlh
LW1vZGFsCnVzYWdlIGV4YW1wbGU6CgpodHRwczovL3czYy5naXRodWIuaW8vYXJpYS1wcmFjdGlj
ZXMvZXhhbXBsZXMvZGlhbG9nLW1vZGFsL2RpYWxvZy5odG1sCgpXZSBkbyB0aGlzIGJ5IHJlLWNv
bXB1dGluZyB0aGUgbGl2ZSBhbmQgaXNvbGF0ZWQgdHJlZXMgd2hlbiB0aGUgYWN0aXZlCm1vZGFs
IGNoYW5nZXMsIHNpbmNlIHRoZSBwcmVzZW5jZSBvZiBhIG1vZGFsIGVmZmVjdHMgZXZlcnkgZWxl
bWVudCBvbgp0aGUgcGFnZS4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBzZXZlcmFsIG90aGVy
IG1vZGFsIGltcHJvdmVtZW50czoKICAtIFdlIG5vIGxvbmdlciBzb21ldGltZXMgb3ZlcndyaXRl
IGF1dGhvciBtYW51YWwgZm9jdXMgKGUuZy4gdmlhIEpTKQogICAgd2l0aCBvdXIgbW9kYWwgYXV0
b2ZvY3VzIGJlaGF2aW9yLgoKICAtIFdlIG5vdyBwcm9wZXJseSByZS1jb21wdXRlIHRoZSBhY3Rp
dmUgbW9kYWwgd2hlbiBmb2N1cyBjaGFuZ2VzLiBUaGlzCiAgICBpcyByZWxldmFudCBpbiBjYXNl
cyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGUgbW9kYWxzLCBhbmQgYW4gYXV0aG9yCiAgICBjaGFu
Z2VzIGZvY3VzIGZyb20gb25lIHRvIGFub3RoZXIsIG1ha2luZyB0aGUgbGF0dGVyIHRoZSBuZXcg
YWN0aXZlCiAgICBtb2RhbC4KClRoaXMgcGF0Y2ggcmVtb3ZlcyBtX2ZvY3VzTW9kYWxOb2RlVGlt
ZXIgaW4gZmF2b3Igb2YgYSBuZXcgZnVuY3Rpb24KY2FsbGVkIGZvY3VzQ3VycmVudE1vZGFsKCks
IHdoaWNoIGFsbG93cyBwcmVjaXNlIGFuZCBzeW5jaHJvbm91cyBjb250cm9sCm92ZXIgd2hlbiBt
b2RhbCBhdXRvZm9jdXMgaGFwcGVucy4gVGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgdGhlIHRp
bWVyCm1hZGUgaXQgaGFyZCB0byBwcmV2ZW50IG92ZXJ3cml0aW5nIG1hbnVhbCBhdXRob3IgZm9j
dXMgKGUuZy4gdmlhIEpTKS4KClRoaXMgcGF0Y2ggZml4ZXMgZXhpc3RpbmcgdGVzdHMgaW4gSVRN
OgogIC0gYWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbAogIC0g
YWNjZXNzaWJpbGl0eS9pZ25vcmUtbW9kYWxzLXdpdGhvdXQtYW55LWNvbnRlbnQuaHRtbAogIC0g
YWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1tb2RhbC1hdXRvLWZvY3VzLmh0bWwKCkFuZCBhZGRzIGEg
bmV3IHRlc3Q6CmFjY2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJp
YS1tb2RhbC1lbGVtZW50LWFwcGVhcnMuaHRtbAoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQ6CiogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLW1vZGFsLW11bHRpcGxlLWRpYWxvZ3MuaHRtbDoKKiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9k
YWwtZWxlbWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlhLW1vZGFsLWVsZW1l
bnQtYXBwZWFycy5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZSk6
CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSk6CihXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp1cGRhdGVDdXJyZW50TW9kYWxOb2RlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnVwZGF0ZUN1cnJlbnRNb2RhbE5vZGVJbnRlcm5hbCk6CihXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjptb2RhbE5vZGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZGVmZXJOb2RlQWRkZWRP
clJlbW92ZWQpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVu
dENoYW5nZWQpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNDdXJyZW50TW9kYWwpOgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUpOgooV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6Y3VycmVudE1vZGFsTm9kZSk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQpOiBEZWxldGVkLgooV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6aGFuZGxlTW9kYWxDaGFuZ2UpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6QVhPYmplY3RDYWNoZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c0N1cnJlbnRN
b2RhbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2Up
OgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQp
OgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKTogRGVs
ZXRlZC4KKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdlKTogRGVsZXRl
ZC4KLS0tCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAx
MzEgKysrKysrKy0tLS0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmggIHwgIDIxICsrLQogLi4uL2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3Rl
ZC50eHQgIHwgIDUwICsrKy0tCiAuLi4vYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLmh0bWwg
ICAgICAgICAgfCAxNzUgKysrKysrKysrKystLS0tLS0tCiAuLi5lci1hcmlhLW1vZGFsLWVsZW1l
bnQtYXBwZWFycy1leHBlY3RlZC50eHQgfCAgMTUgKysKIC4uLm9kYWwtYWZ0ZXItYXJpYS1tb2Rh
bC1lbGVtZW50LWFwcGVhcnMuaHRtbCB8ICA2MyArKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDMw
OSBpbnNlcnRpb25zKCspLCAxNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRlci1hcmlh
LW1vZGFsLWVsZW1lbnQtYXBwZWFycy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFy
aWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmYzBmZGJlZjIzMTAuLjhlMjYzZjY1YWE2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC0yMjIsNyArMjIyLDYgQEAgQVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNoZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgLCBtX25vdGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKQogICAgICwgbV9wYXNzd29yZE5v
dGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBhc3N3b3JkTm90aWZp
Y2F0aW9uUG9zdFRpbWVyRmlyZWQpCiAgICAgLCBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVy
KCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bGl2ZVJlZ2lvbkNoYW5nZWROb3RpZmljYXRpb25Qb3N0
VGltZXJGaXJlZCkKLSAgICAsIG1fZm9jdXNNb2RhbE5vZGVUaW1lcigqdGhpcywgJkFYT2JqZWN0
Q2FjaGU6OmZvY3VzTW9kYWxOb2RlVGltZXJGaXJlZCkKICAgICAsIG1fY3VycmVudE1vZGFsRWxl
bWVudChudWxscHRyKQogICAgICwgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lcigqdGhpcywgJkFY
T2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyRmlyZWQpCiB7CkBAIC0yNDAsNyAr
MjM5LDYgQEAgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogewogICAgIG1fbm90aWZp
Y2F0aW9uUG9zdFRpbWVyLnN0b3AoKTsKICAgICBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVy
LnN0b3AoKTsKLSAgICBtX2ZvY3VzTW9kYWxOb2RlVGltZXIuc3RvcCgpOwogICAgIG1fcGVyZm9y
bUNhY2hlVXBkYXRlVGltZXIuc3RvcCgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmplY3Qg
OiBtX29iamVjdHMudmFsdWVzKCkpCkBAIC0yOTYsMTEgKzI5NCwyNCBAQCBib29sIEFYT2JqZWN0
Q2FjaGU6Om1vZGFsRWxlbWVudEhhc0FjY2Vzc2libGVDb250ZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1FbGVtZW50KiBBWE9iamVjdENhY2hlOjpjdXJyZW50
TW9kYWxOb2RlKCkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ3VycmVudE1vZGFsTm9kZSgp
Cit7CisgICAgYXV0byogcHJldmlvdXNNb2RhbCA9IG1fY3VycmVudE1vZGFsRWxlbWVudC5nZXQo
KTsKKyAgICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSB1cGRhdGVDdXJyZW50TW9kYWxOb2RlSW50
ZXJuYWwoKTsKKyAgICBpZiAocHJldmlvdXNNb2RhbCAhPSBtX2N1cnJlbnRNb2RhbEVsZW1lbnQu
Z2V0KCkpIHsKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKHJvb3RXZWJBcmVhKCkpOworI2lmIEVO
QUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgICAgIC8vIEJlY2F1c2UgdGhl
IHByZXNlbmNlIG9mIGEgbW9kYWwgYWZmZWN0cyBldmVyeSBlbGVtZW50IG9uIHRoZSBwYWdlLAor
ICAgICAgICAvLyByZWdlbmVyYXRlIHRoZSBlbnRpcmUgaXNvbGF0ZWQgdHJlZSB3aXRoIHRoZSBu
ZXh0IGNhY2hlIHVwZGF0ZS4KKyAgICAgICAgbV9kZWZlcnJlZFJlZ2VuZXJhdGVJc29sYXRlZFRy
ZWUgPSB0cnVlOworI2VuZGlmCisgICAgfQorfQorCitFbGVtZW50KiBBWE9iamVjdENhY2hlOjp1
cGRhdGVDdXJyZW50TW9kYWxOb2RlSW50ZXJuYWwoKQogewogICAgIC8vIFRoZXJlIG1pZ2h0IGJl
IG11bHRpcGxlIG1vZGFsIGRpYWxvZyBub2Rlcy4KICAgICAvLyBXZSB1c2UgdGhpcyBmdW5jdGlv
biB0byBwaWNrIHRoZSBvbmUgd2Ugd2FudC4KLSAgICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBu
dWxscHRyOwogICAgIGlmIChtX21vZGFsRWxlbWVudHNTZXQuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMzI1LDE3ICszMzYsMTEgQEAgRWxlbWVudCogQVhPYmplY3RD
YWNoZTo6Y3VycmVudE1vZGFsTm9kZSgpCiAgICAgICAgIGlmICghaXNOb2RlVmlzaWJsZShlbGVt
ZW50KSB8fCAhbW9kYWxFbGVtZW50SGFzQWNjZXNzaWJsZUNvbnRlbnQoKmVsZW1lbnQpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIGZvY3Vz
ZWRFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KSkgewotICAgICAgICAgICAgbV9jdXJy
ZW50TW9kYWxFbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CiAgICAgICAgIGxhc3RWaXNpYmxlID0gZWxlbWVudDsKKyAgICAgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmIGZvY3VzZWRFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KSkKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KLQotICAgIGlmICghbV9jdXJyZW50TW9kYWxFbGVtZW50KQotICAg
ICAgICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBsYXN0VmlzaWJsZS5nZXQoKTsKLQotICAgIHJl
dHVybiBtX2N1cnJlbnRNb2RhbEVsZW1lbnQuZ2V0KCk7CisgICAgcmV0dXJuIGxhc3RWaXNpYmxl
LmdldCgpOwogfQogCiBib29sIEFYT2JqZWN0Q2FjaGU6OmlzTm9kZVZpc2libGUoTm9kZSogbm9k
ZSkgY29uc3QKQEAgLTM4NSw3ICszOTAsOCBAQCBOb2RlKiBBWE9iamVjdENhY2hlOjptb2RhbE5v
ZGUoKQogICAgICAgICByZXR1cm4gbV9jdXJyZW50TW9kYWxFbGVtZW50LmdldCgpOwogCiAgICAg
Ly8gUmVjb21wdXRlIHRoZSB2YWxpZCBhcmlhIG1vZGFsIG5vZGUgd2hlbiBtX2N1cnJlbnRNb2Rh
bEVsZW1lbnQgaXMgbnVsbCBvciBoaWRkZW4uCi0gICAgcmV0dXJuIGN1cnJlbnRNb2RhbE5vZGUo
KTsKKyAgICB1cGRhdGVDdXJyZW50TW9kYWxOb2RlKCk7CisgICAgcmV0dXJuIG1fY3VycmVudE1v
ZGFsRWxlbWVudC5nZXQoKTsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Zm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KEhUTUxBcmVhRWxlbWVudCogYXJlYUVsZW1lbnQp
CkBAIC0xMTE5LDYgKzExMjUsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlck5vZGVBZGRl
ZE9yUmVtb3ZlZChOb2RlKiBub2RlKQogCiAgICAgbV9kZWZlcnJlZE5vZGVBZGRlZE9yUmVtb3Zl
ZExpc3QuYWRkKG5vZGUpOwogCisgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpKSB7CisgICAgICAg
IGF1dG8qIGNoYW5nZWRFbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CisgICAgICAg
IGlmIChpc01vZGFsRWxlbWVudCgqY2hhbmdlZEVsZW1lbnQpKQorICAgICAgICAgICAgZGVmZXJN
b2RhbENoYW5nZShjaGFuZ2VkRWxlbWVudCk7CisgICAgfQorCiAgICAgaWYgKCFtX3BlcmZvcm1D
YWNoZVVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRl
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CkBAIC0xMzUxLDEyICsxMzYzLDE0IEBAIHZvaWQg
QVhPYmplY3RDYWNoZTo6ZGVmZXJNb2RhbENoYW5nZShFbGVtZW50KiBlbGVtZW50KQogICAgICAg
ICBtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogICAgIAot
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBv
bGROb2RlLCBOb2RlKiBuZXdOb2RlKQordm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2Vk
VUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGROb2RlLCBOb2RlKiBuZXdOb2RlLCBVcGRhdGVNb2Rh
bCB1cGRhdGVNb2RhbCkKIHsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogICAgIHNldElzb2xhdGVkVHJlZUZvY3VzZWRPYmplY3QobmV3Tm9kZSk7CiAjZW5kaWYKIAor
ICAgIGlmICh1cGRhdGVNb2RhbCA9PSBVcGRhdGVNb2RhbDo6WWVzKQorICAgICAgICB1cGRhdGVD
dXJyZW50TW9kYWxOb2RlKCk7CiAgICAgaGFuZGxlTWVudUl0ZW1TZWxlY3RlZChuZXdOb2RlKTsK
ICAgICBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKG9sZE5vZGUsIG5ld05v
ZGUpOwogfQpAQCAtMTc1OSwxNSArMTc3Myw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBmaXJzdEZvY3VzYWJsZUNoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpmb2N1c01vZGFsTm9kZSgpCi17
Ci0gICAgaWYgKG1fZm9jdXNNb2RhbE5vZGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2Zv
Y3VzTW9kYWxOb2RlVGltZXIuc3RvcCgpOwotICAgIAotICAgIG1fZm9jdXNNb2RhbE5vZGVUaW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBBWE9iamVjdENhY2hlOjpmb2N1c01vZGFs
Tm9kZVRpbWVyRmlyZWQoKQordm9pZCBBWE9iamVjdENhY2hlOjpmb2N1c0N1cnJlbnRNb2RhbCgp
CiB7CiAgICAgaWYgKCFtX2RvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTc3NSw2ICsxNzgxLDEwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6Zm9jdXNN
b2RhbE5vZGVUaW1lckZpcmVkKCkKICAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3RlZERvY3VtZW50
KG1fZG9jdW1lbnQpOwogICAgIGlmICghbm9kZUFuZFJlbmRlcmVyQXJlVmFsaWQobV9jdXJyZW50
TW9kYWxFbGVtZW50LmdldCgpKSB8fCAhaXNOb2RlVmlzaWJsZShtX2N1cnJlbnRNb2RhbEVsZW1l
bnQuZ2V0KCkpKQogICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBmb2N1cyB0aGUgY3Vy
cmVudCBtb2RhbCBpZiBmb2N1cyBoYXMgYmVlbiByZXF1ZXN0ZWQgdG8gYmUgcHV0IGVsc2V3aGVy
ZSAoZS5nLiB2aWEgSlMpLgorICAgIGlmICghbV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIERvbid0IHNldCBmb2N1cyBp
ZiB3ZSBhcmUgYWxyZWFkeSBmb2N1c2luZyBvbnRvIHNvbWUgZWxlbWVudCB3aXRoaW4KICAgICAv
LyB0aGUgZGlhbG9nLgpAQCAtMTk3OSwzNCArMTk4OSw2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
aGFuZGxlQXR0cmlidXRlQ2hhbmdlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVt
ZW50CiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhT
b3J0RGlyZWN0aW9uQ2hhbmdlZCk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTW9k
YWxDaGFuZ2UoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBpZiAoIWlzPEhUTUxEaWFsb2dFbGVt
ZW50PihlbGVtZW50KSAmJiAhbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJkaWFsb2ciX3MpICYmICFu
b2RlSGFzUm9sZSgmZWxlbWVudCwgImFsZXJ0ZGlhbG9nIl9zKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgc3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKTsKLQotICAgIGlmICgh
bV9tb2RhbE5vZGVzSW5pdGlhbGl6ZWQpCi0gICAgICAgIGZpbmRNb2RhbE5vZGVzKCk7Ci0KLSAg
ICBpZiAoaXNNb2RhbEVsZW1lbnQoZWxlbWVudCkpIHsKLSAgICAgICAgLy8gQWRkIHRoZSBuZXds
eSBtb2RpZmllZCBub2RlIHRvIHRoZSBtb2RhbCBub2RlcyBzZXQuCi0gICAgICAgIC8vIFdlIHdp
bGwgcmVjb21wdXRlIHRoZSBjdXJyZW50IHZhbGlkIGFyaWEgbW9kYWwgbm9kZSBpbiBtb2RhbE5v
ZGUoKSB3aGVuIHRoaXMgbm9kZSBpcyBub3QgdmlzaWJsZS4KLSAgICAgICAgbV9tb2RhbEVsZW1l
bnRzU2V0LmFkZCgmZWxlbWVudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBub2RlIGZyb20gdGhlIG1vZGFsIG5vZGVzIHNldC4KLSAgICAgICAgbV9tb2RhbEVsZW1lbnRz
U2V0LnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgfQotCi0gICAgLy8gRmluZCBuZXcgYWN0aXZlIG1v
ZGFsIG5vZGUuCi0gICAgY3VycmVudE1vZGFsTm9kZSgpOwotCi0gICAgaWYgKG1fY3VycmVudE1v
ZGFsRWxlbWVudCkKLSAgICAgICAgZm9jdXNNb2RhbE5vZGUoKTsKLQotICAgIHN0YXJ0Q2FjaGlu
Z0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMoKTsKLX0KLQogdm9pZCBB
WE9iamVjdENhY2hlOjpsYWJlbENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NF
UlQoaXM8SFRNTExhYmVsRWxlbWVudD4oKmVsZW1lbnQpKTsKQEAgLTMzOTMsMjMgKzMzNzUsNjAg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAg
bV9kZWZlcnJlZEF0dHJpYnV0ZUNoYW5nZS5jbGVhcigpOwogICAgIAogICAgIGZvciAoYXV0byYg
ZGVmZXJyZWRGb2N1c2VkQ2hhbmdlQ29udGV4dCA6IG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5n
ZSkgewotICAgICAgICBoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChkZWZlcnJlZEZvY3Vz
ZWRDaGFuZ2VDb250ZXh0LmZpcnN0LCBkZWZlcnJlZEZvY3VzZWRDaGFuZ2VDb250ZXh0LnNlY29u
ZCk7CisgICAgICAgIC8vIERvbid0IHJlY29tcHV0ZSB0aGUgYWN0aXZlIG1vZGFsIGZvciBlYWNo
IGluZGl2aWRhbCBmb2N1cyBjaGFuZ2UsIGFzIHRoYXQgY291bGQgY2F1c2UgYSBsb3Qgb2YgZXhw
ZW5zaXZlIHRyZWUgcmVidWlsZGluZy4gSW5zdGVhZCwgd2UgZG8gaXQgb25jZSBiZWxvdy4KKyAg
ICAgICAgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoZGVmZXJyZWRGb2N1c2VkQ2hhbmdl
Q29udGV4dC5maXJzdCwgZGVmZXJyZWRGb2N1c2VkQ2hhbmdlQ29udGV4dC5zZWNvbmQsIFVwZGF0
ZU1vZGFsOjpObyk7CiAgICAgICAgIC8vIFJlY29tcHV0ZSBpc0lnbm9yZWQgYWZ0ZXIgYSBmb2N1
cyBjaGFuZ2UgaW4gY2FzZSB0aGF0IGFsdGVyZWQgdmlzaWJpbGl0eS4KICAgICAgICAgcmVjb21w
dXRlSXNJZ25vcmVkKGRlZmVycmVkRm9jdXNlZENoYW5nZUNvbnRleHQuZmlyc3QpOwogICAgICAg
ICByZWNvbXB1dGVJc0lnbm9yZWQoZGVmZXJyZWRGb2N1c2VkQ2hhbmdlQ29udGV4dC5zZWNvbmQp
OwogICAgIH0KKyAgICBib29sIHVwZGF0ZWRGb2N1c2VkRWxlbWVudCA9ICFtX2RlZmVycmVkRm9j
dXNlZE5vZGVDaGFuZ2UuaXNFbXB0eSgpOworICAgIC8vIElmIHdlIGNoYW5nZWQgdGhlIGZvY3Vz
ZWQgZWxlbWVudCwgdGhhdCBjb3VsZCBhZmZlY3Qgd2hhdCBtb2RhbCBzaG91bGQgYmUgYWN0aXZl
LCBzbyByZWNvbXB1dGUgaXQuCisgICAgYm9vbCBzaG91bGRSZWNvbXB1dGVNb2RhbCA9IHVwZGF0
ZWRGb2N1c2VkRWxlbWVudDsKICAgICBtX2RlZmVycmVkRm9jdXNlZE5vZGVDaGFuZ2UuY2xlYXIo
KTsKIAotICAgIG1fZGVmZXJyZWRNb2RhbENoYW5nZWRMaXN0LmZvckVhY2goW3RoaXNdIChhdXRv
JiBkZWZlcnJlZE1vZGFsQ2hhbmdlZEVsZW1lbnQpIHsKLSAgICAgICAgaGFuZGxlTW9kYWxDaGFu
Z2UoZGVmZXJyZWRNb2RhbENoYW5nZWRFbGVtZW50KTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdCkgeworICAgICAgICBpZiAoIWlz
PEhUTUxEaWFsb2dFbGVtZW50PihlbGVtZW50KSAmJiAhbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJk
aWFsb2ciX3MpICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImFsZXJ0ZGlhbG9nIl9zKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNob3VsZFJlY29tcHV0ZU1vZGFsID0gdHJ1
ZTsKKyAgICAgICAgaWYgKCFtX21vZGFsTm9kZXNJbml0aWFsaXplZCkKKyAgICAgICAgICAgIGZp
bmRNb2RhbE5vZGVzKCk7CisKKyAgICAgICAgaWYgKGlzTW9kYWxFbGVtZW50KGVsZW1lbnQpKSB7
CisgICAgICAgICAgICAvLyBBZGQgdGhlIG5ld2x5IG1vZGlmaWVkIG5vZGUgdG8gdGhlIG1vZGFs
IG5vZGVzIHNldC4KKyAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVjb21wdXRlIHRoZSBjdXJyZW50
IHZhbGlkIGFyaWEgbW9kYWwgbm9kZSBpbiBtb2RhbE5vZGUoKSB3aGVuIHRoaXMgbm9kZSBpcyBu
b3QgdmlzaWJsZS4KKyAgICAgICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5hZGQoJmVsZW1lbnQp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5yZW1vdmUo
JmVsZW1lbnQpOworICAgIH0KICAgICBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdC5jbGVhcigp
OwogCisgICAgaWYgKHNob3VsZFJlY29tcHV0ZU1vZGFsKSB7CisgICAgICAgIHVwZGF0ZUN1cnJl
bnRNb2RhbE5vZGUoKTsKKyAgICAgICAgLy8gIldoZW4gYSBtb2RhbCBlbGVtZW50IGlzIGRpc3Bs
YXllZCwgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyBTSE9VTEQgbmF2aWdhdGUgdG8gdGhlIGVsZW1l
bnQgdW5sZXNzIGZvY3VzIGhhcyBleHBsaWNpdGx5IGJlZW4gc2V0IGVsc2V3aGVyZS4iCisgICAg
ICAgIC8vIGB1cGRhdGVkRm9jdXNlZEVsZW1lbnRgIGluZGljYXRlcyBmb2N1cyB3YXMgZXhwbGlj
aXRseSBzZXQgZWxzZXdoZXJlLCBzbyBkb24ndCBhdXRvZm9jdXMgaW50byB0aGUgbW9kYWwuCisg
ICAgICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9hcmlhLyNhcmlhLW1vZGFsCisgICAgICAg
IGlmICghdXBkYXRlZEZvY3VzZWRFbGVtZW50KQorICAgICAgICAgICAgZm9jdXNDdXJyZW50TW9k
YWwoKTsKKyAgICB9CisKICAgICBtX2RlZmVycmVkTWVudUxpc3RDaGFuZ2UuZm9yRWFjaChbdGhp
c10gKGF1dG8mIGVsZW1lbnQpIHsKICAgICAgICAgaGFuZGxlTWVudUxpc3RWYWx1ZUNoYW5nZWQo
ZWxlbWVudCk7CiAgICAgfSk7CiAgICAgbV9kZWZlcnJlZE1lbnVMaXN0Q2hhbmdlLmNsZWFyKCk7
CiAKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIGlmIChtX2Rl
ZmVycmVkUmVnZW5lcmF0ZUlzb2xhdGVkVHJlZSAmJiBtX3BhZ2VJRCkgeworICAgICAgICBpZiAo
YXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlEKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIHdlYkFyZWEgPSByb290V2ViQXJlYSgpKSB7CisgICAgICAg
ICAgICAgICAgQVhMT0coIlJlZ2VuZXJhdGluZyBpc29sYXRlZCB0cmVlIGZyb20gQVhPYmplY3RD
YWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKS4iKTsKKyAgICAgICAgICAgICAgICB0
cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKndlYkFyZWEpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIG1fZGVmZXJyZWRSZWdlbmVyYXRlSXNvbGF0ZWRUcmVlID0gZmFsc2U7Cisj
ZW5kaWYKKwogICAgIHBsYXRmb3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBiMmNl
YTY4MDhlZGMuLmFiNmQ0ZDJkZjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKQEAgLTM0Miw3ICszNDIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
b3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBjb25zdCBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIHBvc3RUZXh0
U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIHBvc3RM
aXZlUmVnaW9uQ2hhbmdlTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICB2
b2lkIGZvY3VzTW9kYWxOb2RlKCk7CiAKICAgICBlbnVtIEFYTG9hZGluZ0V2ZW50IHsKICAgICAg
ICAgQVhMb2FkaW5nU3RhcnRlZCwKQEAgLTQ1NSw3ICs0NTQsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBsaXZlUmVnaW9uQ2hhbmdlZE5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCk7CiAgICAg
Ci0gICAgdm9pZCBmb2N1c01vZGFsTm9kZVRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGZvY3VzQ3Vy
cmVudE1vZGFsKCk7CiAgICAgCiAgICAgdm9pZCBwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVk
KCk7CiAKQEAgLTQ4MSwxNSArNDgwLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBY3Rp
dmVEZXNjZW5kYW50Q2hhbmdlZChFbGVtZW50Jik7CiAKICAgICB2b2lkIGhhbmRsZUFyaWFFeHBh
bmRlZENoYW5nZShOb2RlKik7Ci0gICAgdm9pZCBoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdl
ZChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUpOworICAgIGVudW0g
Y2xhc3MgVXBkYXRlTW9kYWwgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgaGFuZGxlRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3Vz
ZWROb2RlLCBVcGRhdGVNb2RhbCA9IFVwZGF0ZU1vZGFsOjpZZXMpOwogICAgIHZvaWQgaGFuZGxl
TWVudUxpc3RWYWx1ZUNoYW5nZWQoRWxlbWVudCYpOwogCiAgICAgLy8gYXJpYS1tb2RhbCBvciBt
b2RhbCA8ZGlhbG9nPiByZWxhdGVkCiAgICAgYm9vbCBpc01vZGFsRWxlbWVudChFbGVtZW50Jikg
Y29uc3Q7CiAgICAgdm9pZCBmaW5kTW9kYWxOb2RlcygpOwotICAgIEVsZW1lbnQqIGN1cnJlbnRN
b2RhbE5vZGUoKTsKKyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRNb2RhbE5vZGUoKTsKKyAgICBFbGVt
ZW50KiB1cGRhdGVDdXJyZW50TW9kYWxOb2RlSW50ZXJuYWwoKTsKICAgICBib29sIGlzTm9kZVZp
c2libGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgaGFuZGxlTW9kYWxDaGFuZ2UoRWxlbWVudCYp
OwogICAgIGJvb2wgbW9kYWxFbGVtZW50SGFzQWNjZXNzaWJsZUNvbnRlbnQoRWxlbWVudCYpOwog
CiAgICAgLy8gUmVsYXRpb25zaGlwcyBiZXR3ZWVuIG9iamVjdHMuCkBAIC01MzIsNyArNTMyLDYg
QEAgcHJpdmF0ZToKICAgICBUaW1lciBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVyOwogICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9saXZlUmVnaW9uT2Jq
ZWN0c1NldDsKIAotICAgIFRpbWVyIG1fZm9jdXNNb2RhbE5vZGVUaW1lcjsKICAgICBXZWFrUHRy
PEVsZW1lbnQ+IG1fY3VycmVudE1vZGFsRWxlbWVudDsKICAgICAvLyBNdWx0aXBsZSBhcmlhLW1v
ZGFscyBiZWhhdmlvciBpcyB1bmRlZmluZWQgYnkgc3BlYy4gV2Uga2VlcCB0aGVtIHNvcnRlZCBi
YXNlZCBvbiBET00gb3JkZXIgaGVyZS4KICAgICAvLyBJZiB0aGF0IGNoYW5nZXMgdG8gcmVxdWly
ZSBvbmx5IG9uZSBhcmlhLW1vZGFsIHdlIGNvdWxkIGNoYW5nZSB0aGlzIHRvIGEgV2Vha0hhc2hT
ZXQsIG9yIGRpc2NhcmQgdGhlIHNldCBjb21wbGV0ZWx5LgpAQCAtNTU0LDYgKzU1Myw5IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgU3RyaW5nPiBtX2RlZmVycmVkVGV4dEZvcm1D
b250cm9sVmFsdWU7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgUXVhbGlmaWVkTmFtZT4gbV9kZWZl
cnJlZEF0dHJpYnV0ZUNoYW5nZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPE5vZGUqLCBOb2RlKj4+
IG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZTsKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQorICAgIGJvb2wgbV9kZWZlcnJlZFJlZ2VuZXJhdGVJc29sYXRlZFRyZWUg
eyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFs
c2UgfTsKICAgICBkb3VibGUgbV9sb2FkaW5nUHJvZ3Jlc3MgeyAwIH07CkBAIC01ODgsNyArNTkw
LDcgQEAgaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQVhDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlOjpnZXRJZ25vcmVkKEEKIGlubGluZSBBY2Nlc3NpYmlsaXR5UmVwbGFj
ZWRUZXh0OjpBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KSB7IH0KIGlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQ6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VOb3RpZmljYXRpb24oQVhPYmplY3RDYWNoZSosIEFYVGV4dEVkaXRUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBWENv
bXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OnNldElnbm9yZWQoQVhJRCwgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbikgeyB9Ci1pbmxpbmUgQVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNo
ZShEb2N1bWVudCYgZG9jdW1lbnQpIDogbV9kb2N1bWVudChkb2N1bWVudCksIG1fbm90aWZpY2F0
aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVy
RmlyZWQpLCBtX3Bhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyKCp0aGlzLCAmQVhPYmplY3RD
YWNoZTo6cGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCksIG1fbGl2ZVJlZ2lvbkNo
YW5nZWRQb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpsaXZlUmVnaW9uQ2hhbmdlZE5v
dGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwgbV9mb2N1c01vZGFsTm9kZVRpbWVyKCp0aGlzLCAm
QVhPYmplY3RDYWNoZTo6Zm9jdXNNb2RhbE5vZGVUaW1lckZpcmVkKSwgbV9wZXJmb3JtQ2FjaGVV
cGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVy
RmlyZWQpIHsgfQoraW5saW5lIEFYT2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQm
IGRvY3VtZW50KSA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpLCBtX25vdGlmaWNhdGlvblBvc3RUaW1l
cigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKSwgbV9w
YXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBhc3N3
b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpLCBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRp
bWVyKCp0aGlzLCAmQVhPYmplY3RDYWNoZTo6bGl2ZVJlZ2lvbkNoYW5nZWROb3RpZmljYXRpb25Q
b3N0VGltZXJGaXJlZCksIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIoKnRoaXMsICZBWE9iamVj
dENhY2hlOjpwZXJmb3JtQ2FjaGVVcGRhdGVUaW1lckZpcmVkKSB7IH0KIGlubGluZSBBWE9iamVj
dENhY2hlOjp+QVhPYmplY3RDYWNoZSgpIHsgfQogaW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFYT2JqZWN0Q2FjaGU6OmdldChSZW5kZXJPYmplY3QqKSB7IHJldHVybiBudWxscHRyOyB9CiBp
bmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KE5vZGUqKSB7IHJl
dHVybiBudWxscHRyOyB9CkBAIC02MjMsMTkgKzYyNSwxOCBAQCBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpkZWZlclRleHRSZXBsYWNlbWVudE5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhU
TUxUZQogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShBVFNQSSkKIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlKSB7IH0KICNlbmRpZgotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6Zm9j
dXNNb2RhbE5vZGVUaW1lckZpcmVkKCkgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpm
b2N1c0N1cnJlbnRNb2RhbCgpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9y
bUNhY2hlVXBkYXRlVGltZXJGaXJlZCgpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRpb24oRnJhbWUqLCBBWExvYWRpbmdFdmVudCkgeyB9
CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWExvYWRpbmdFdmVudCkgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChFbGVt
ZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRD
aGFuZ2UoTm9kZSopIHsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTW9kYWxD
aGFuZ2UoRWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJNb2Rh
bENoYW5nZShFbGVtZW50KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVS
b2xlQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmRlZmVyQXR0cmlidXRlQ2hhbmdlSWZOZWVkZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0
ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRWxlbWVudCopIHsgfQogaW5saW5lIGJvb2wg
QVhPYmplY3RDYWNoZTo6c2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiwgTm9kZSopIHsgfQor
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQo
Tm9kZSosIE5vZGUqLCBVcGRhdGVNb2RhbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpoYW5kbGVTY3JvbGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopIHsgfQogaW5saW5lIHZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKikgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpsaXZlUmVnaW9uQ2hhbmdlZE5vdGlmaWNhdGlvblBvc3RU
aW1lckZpcmVkKCkgeyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Fy
aWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBlY3RlZC50eHQKaW5kZXgg
NDkxYTNjN2Q4MjM1Li5hZmFlOTZjNGQ3ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy1leHBl
Y3RlZC50eHQKQEAgLTEsMjAgKzEsNDYgQEAKIFRoaXMgdGVzdHMgdGhhdCBhcmlhLW1vZGFsIHdv
cmtzIGNvcnJlY3RseSBvbiBtdWx0aXBsZSBkaWFsb2dzCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1QQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQotUEFTUyBiYWNr
Z3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGRpYWxvZzFBY2Nlc3NpYmxlKCkgaXMg
dHJ1ZQotUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCi1QQVNTIGRpYWxvZzFB
Y2Nlc3NpYmxlKCkgaXMgZmFsc2UKLVBBU1MgY2xvc2VCdG4uaXNJZ25vcmVkIGlzIGZhbHNlCi1Q
QVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgZmFsc2UKLVBBU1MgZGlhbG9nMUFjY2Vzc2li
bGUoKSBpcyB0cnVlCi1QQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorCitWZXJp
ZnlpbmcgdGhlIGJhY2tncm91bmQgaXMgYWNjZXNzaWJsZSBvbiBwYWdlIGxvYWQuCisKK1BBU1M6
IGJhY2tncm91bmQgYWNjZXNzaWJsZTogdHJ1ZQorCitDbGlja2luZyB0aGUgZGlzcGxheSBidXR0
b24gdG8gb3BlbiAjZGlhbG9nMS4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxz
ZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTogdHJ1ZQorCitDbGlja2luZyB0aGUgbmV3IGJ1
dHRvbiB0byBvcGVuICNkaWFsb2cyIHdpdGhvdXQgY2xvc2luZyAjZGlhbG9nMS4KKworUEFTUzog
YmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxzZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTog
ZmFsc2UKK1BBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6IHRydWUKKworRm9jdXNpbmcgZmlyc3Qg
ZGVzY2VuZGFudCBvZiAjZGlhbG9nMS4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBm
YWxzZQorUEFTUzogI2RpYWxvZzEgYWNjZXNzaWJsZTogdHJ1ZQorUEFTUzogI2RpYWxvZzIgYWNj
ZXNzaWJsZTogZmFsc2UKKworTW92aW5nIGZvY3VzIGJhY2sgdG8gZmlyc3QgZGVzY2VuZGFudCBv
ZiAjZGlhbG9nMi4KKworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiBmYWxzZQorUEFTUzog
I2RpYWxvZzEgYWNjZXNzaWJsZTogZmFsc2UKK1BBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6IHRy
dWUKKworQ2xvc2luZyBkaWFsb2cyLgorCitQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vzc2libGU6IGZh
bHNlCitQQVNTOiAjZGlhbG9nMSBhY2Nlc3NpYmxlOiB0cnVlCisKK0Nsb3NpbmcgZGlhbG9nMS4K
KworUEFTUzogYmFja2dyb3VuZCBhY2Nlc3NpYmxlOiB0cnVlCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQorCiBPdGhlciBwYWdlIGNvbnRlbnQgd2l0
aCBhIGR1bW15IGZvY3VzYWJsZSBlbGVtZW50CiAKIERpc3BsYXkgYSBkaWFsb2cKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFsb2dz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlh
bG9ncy5odG1sCmluZGV4IDI4MmFhZTRmYjIxNi4uMzQ5OTI5N2ZhMTZiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbW9kYWwtbXVsdGlwbGUtZGlhbG9ncy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tb2RhbC1tdWx0aXBsZS1kaWFs
b2dzLmh0bWwKQEAgLTEsOTQgKzEsMTMzIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxzdHlsZT4KLS5ib3gtaGlk
ZGVuIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotPC9zdHlsZT4KKzxib2R5PgogCi08Ym9keSBp
ZD0iYm9keSI+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHRmaWVsZCIgdmFsdWU9IlRleHQg
ZmllbGQuIj4KKzxwIGlkPSJiZ0NvbnRlbnQiPk90aGVyIHBhZ2UgY29udGVudCB3aXRoIDxhIGlk
PSJiYWNrZ3JvdW5kLWxpbmsiIHRhYmluZGV4PSIwIiBocmVmPSIjIj5hIGR1bW15IGZvY3VzYWJs
ZSBlbGVtZW50PC9hPjwvcD4KKzxwPjxhIG9uY2xpY2s9InRvZ2dsZURpYWxvZyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZGlhbG9nMScpLCAnc2hvdycpOyByZXR1cm4gZmFsc2U7IiBocmVmPSIj
IiByb2xlPSJidXR0b24iIGlkPSJkaXNwbGF5QnRuIj5EaXNwbGF5IGEgZGlhbG9nPC9hPjwvcD4K
IAotPGRpdiBpZD0iYmciPgotPHAgaWQ9ImJnQ29udGVudCI+T3RoZXIgcGFnZSBjb250ZW50IHdp
dGggPGEgaHJlZj0iIyI+YSBkdW1teSBmb2N1c2FibGUgZWxlbWVudDwvYT48L3A+Ci08cD48YSBv
bmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpLCdzaG93
Jyk7IHJldHVybiBmYWxzZTsiIGhyZWY9IiMiIHJvbGU9ImJ1dHRvbiIgaWQ9ImRpc3BsYXlCdG4i
PkRpc3BsYXkgYSBkaWFsb2c8L2E+PC9wPgorPGRpdiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxs
ZWRieT0iZGVzY3JpcHRpb24xIiBpZD0iZGlhbG9nMSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiIHRh
YmluZGV4PSItMSI+CisgICAgPGgzIGlkPSJkZXNjcmlwdGlvbjEiPkp1c3QgYW4gZXhhbXBsZS48
L2gzPgorICAgIDxhIGlkPSJkaWFsb2cxLWxpbmsiIHRhYmluZGV4PSIwIiBocmVmPSIjIj5MaW5r
IHByZXNlbnQgdG8gZW5zdXJlIHdlIGhhdmUgYSBmb2N1c2FibGUgZWxlbWVudDwvYT4KKyAgICA8
YnV0dG9uIGlkPSJvayIgb25jbGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkaWFsb2cxJyksICdoaWRlJyk7Ij5PSzwvYnV0dG9uPgorICAgIDxidXR0b24gb25jbGlj
az0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2cyJyksICdzaG93
Jyk7IiBpZD0ibmV3Ij5OZXc8L2J1dHRvbj4KIDwvZGl2PgogCi08ZGl2IHJvbGU9ImRpYWxvZyIg
YXJpYS1sYWJlbGxlZGJ5PSJteURpYWxvZyIgaWQ9ImJveCIgY2xhc3M9ImJveC1oaWRkZW4iIHRh
YmluZGV4PSItMSI+Ci0gICAgPGgzIGlkPSJteURpYWxvZyI+SnVzdCBhbiBleGFtcGxlLjwvaDM+
Ci0gICAgPGJ1dHRvbiBpZD0ib2siIG9uY2xpY2s9InRvZ2dsZURpYWxvZyhkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYm94JyksJ2hpZGUnKTsiIGNsYXNzPSJjbG9zZS1idXR0b24iPk9LPC9idXR0
b24+Ci0gICAgPGJ1dHRvbiBvbmNsaWNrPSJ0b2dnbGVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2JveDInKSwnc2hvdycpOyIgaWQ9Im5ldyI+TmV3PC9idXR0b24+Cis8ZGl2IHJvbGU9
ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJkZXNjcmlwdGlvbjIiIGlkPSJkaWFsb2cyIiBzdHls
ZT0iZGlzcGxheTogbm9uZSIgdGFiaW5kZXg9Ii0xIj4KKyAgICA8aDMgaWQ9ImRlc2NyaXB0aW9u
MiI+QW5vdGhlciBkaWFsb2cuPC9oMz4KKyAgICA8YSBpZD0iZGlhbG9nMi1saW5rIiB0YWJpbmRl
eD0iMCIgaHJlZj0iIyI+TGluayBwcmVzZW50IHRvIGVuc3VyZSB3ZSBoYXZlIGEgZm9jdXNhYmxl
IGVsZW1lbnQ8L2E+CisgICAgPGJ1dHRvbiBpZD0iY2xvc2UiIG9uY2xpY2s9InRvZ2dsZURpYWxv
Zyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nMicpLCAnaGlkZScpOyI+Q2xvc2U8L2J1
dHRvbj4KIDwvZGl2PgogCi08ZGl2IHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJteURp
YWxvZzIiIGlkPSJib3gyIiBjbGFzcz0iYm94LWhpZGRlbiIgdGFiaW5kZXg9Ii0xIj4KLSAgICA8
aDMgaWQ9Im15RGlhbG9nMiI+QW5vdGhlciBkaWFsb2cuPC9oMz4KLSAgICA8YnV0dG9uIGlkPSJj
bG9zZSIgb25jbGljaz0idG9nZ2xlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gy
JyksJ2hpZGUnKTsiIGNsYXNzPSJjbG9zZS1idXR0b24iPkNsb3NlPC9idXR0b24+Ci08L2Rpdj4K
KzxzY3JpcHQ+CisgICAgdmFyIHRlc3RPdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGF0IGFyaWEtbW9k
YWwgd29ya3MgY29ycmVjdGx5IG9uIG11bHRpcGxlIGRpYWxvZ3NcblxuIjsKIAorICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHsKKyAgICAgICAg
ICAgIHRlc3RPdXRwdXQgKz0gIlxuVmVyaWZ5aW5nIHRoZSBiYWNrZ3JvdW5kIGlzIGFjY2Vzc2li
bGUgb24gcGFnZSBsb2FkLlxuXG4iOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vz
c2libGUodHJ1ZSk7CiAKLTxzY3JpcHQ+CisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJcbkNs
aWNraW5nIHRoZSBkaXNwbGF5IGJ1dHRvbiB0byBvcGVuICNkaWFsb2cxLlxuXG4iOworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc3BsYXlCdG4iKS5jbGljaygpOworICAg
ICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUoZmFsc2UpOworICAgICAgICAgICAg
YXdhaXQgZGlhbG9nMUFjY2Vzc2libGUodHJ1ZSk7CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGFyaWEtbW9kYWwgd29ya3MgY29ycmVjdGx5IG9uIG11bHRpcGxlIGRpYWxvZ3Mi
KTsKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gIlxuQ2xpY2tpbmcgdGhlIG5ldyBidXR0b24g
dG8gb3BlbiAjZGlhbG9nMiB3aXRob3V0IGNsb3NpbmcgI2RpYWxvZzEuXG5cbiI7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3IikuY2xpY2soKTsKKyAgICAgICAgICAg
IGF3YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IGRp
YWxvZzFBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IGRpYWxvZzJBY2Nlc3Np
YmxlKHRydWUpOwogCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewot
ICAgICAgICAvLyBCYWNrZ3JvdW5kIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGFmdGVyIGxvYWRpbmcu
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiYmFja2dyb3VuZEFjY2Vzc2libGUoKSIpOwotICAgICAg
ICAKLSAgICAgICAgLy8gQ2xpY2sgdGhlIGRpc3BsYXkgYnV0dG9uLCBkaWFsb2cxIHNob3dzIGFu
ZCBiYWNrZ3JvdW5kIGJlY29tZXMgdW5hY2Nlc3NpYmxlLgotICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGlzcGxheUJ0biIpLmNsaWNrKCk7Ci0gICAgICAgIHNob3VsZEJlRmFsc2Uo
ImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJkaWFsb2cx
QWNjZXNzaWJsZSgpIik7Ci0gICAgICAgIAotICAgICAgICAvLyBDbGljayB0aGUgbmV3IGJ1dHRv
biwgZGlhbG9nMiBzaG93cyBhbmQgYmFja2dyb3VuZC9kaWFsb2cxIHNob3VsZCBib3RoIGJlIHVu
YWNjZXNzaWJsZS4KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ldyIpLmNsaWNr
KCk7Ci0gICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKLSAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiZGlhbG9nMUFjY2Vzc2libGUoKSIpOwotICAgICAgICB2YXIg
Y2xvc2VCdG4gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNsb3NlIik7Ci0gICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlQnRuLmlzSWdub3JlZCIpOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ2xvc2UgZGlhbG9nMiwgZGlhbG9nMSBzaG91bGQgYmVjb21l
IGFjY2Vzc2libGUgYnV0IG5vdCB0aGUgYmFja2dyb3VuZAotICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2xvc2UiKS5jbGljaygpOwotICAgICAgICBzaG91bGRCZUZhbHNlKCJiYWNr
Z3JvdW5kQWNjZXNzaWJsZSgpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZGlhbG9nMUFjY2Vz
c2libGUoKSIpOwotICAgICAgICAKLSAgICAgICAgLy8gQ2xvc2UgZGlhbG9nMSwgYmFja2dyb3Vu
ZCBzaG91bGQgYmUgYWNjZXNzaWJsZS4KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im9rIikuY2xpY2soKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJiYWNrZ3JvdW5kQWNjZXNzaWJs
ZSgpIik7CisgICAgICAgICAgICAvLyBXaXRoIGJvdGggbW9kYWxzIGFjdGl2ZSwgYW5kIGZvY3Vz
IGN1cnJlbnRseSBpbiAjZGlhbG9nMiwgbW92aW5nIGZvY3VzIHRvICNkaWFsb2cxIHNob3VsZCBj
YXVzZSBpdCB0byBiZWNvbWUgdGhlIGFjdGl2ZSBtb2RhbC4KKyAgICAgICAgICAgIHRlc3RPdXRw
dXQgKz0gIlxuRm9jdXNpbmcgZmlyc3QgZGVzY2VuZGFudCBvZiAjZGlhbG9nMS5cblxuIjsKKyAg
ICAgICAgICAgIGZvY3VzRmlyc3REZXNjZW5kYW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aWFsb2cxIikpOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vzc2libGUoZmFsc2Up
OworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUodHJ1ZSk7CisgICAgICAgICAg
ICBhd2FpdCBkaWFsb2cyQWNjZXNzaWJsZShmYWxzZSk7CisKKyAgICAgICAgICAgIHRlc3RPdXRw
dXQgKz0gIlxuTW92aW5nIGZvY3VzIGJhY2sgdG8gZmlyc3QgZGVzY2VuZGFudCBvZiAjZGlhbG9n
Mi5cblxuIjsKKyAgICAgICAgICAgIGZvY3VzRmlyc3REZXNjZW5kYW50KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkaWFsb2cyIikpOworICAgICAgICAgICAgYXdhaXQgYmFja2dyb3VuZEFjY2Vz
c2libGUoZmFsc2UpOworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMUFjY2Vzc2libGUoZmFsc2Up
OworICAgICAgICAgICAgYXdhaXQgZGlhbG9nMkFjY2Vzc2libGUodHJ1ZSk7CisKKyAgICAgICAg
ICAgIHRlc3RPdXRwdXQgKz0gIlxuQ2xvc2luZyBkaWFsb2cyLlxuXG4iOworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlIikuY2xpY2soKTsKKyAgICAgICAgICAgIGF3
YWl0IGJhY2tncm91bmRBY2Nlc3NpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGF3YWl0IGRpYWxv
ZzFBY2Nlc3NpYmxlKHRydWUpOworCisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJcbkNsb3Np
bmcgZGlhbG9nMS5cblxuIjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
ayIpLmNsaWNrKCk7CisgICAgICAgICAgICBhd2FpdCBiYWNrZ3JvdW5kQWNjZXNzaWJsZSh0cnVl
KTsKKworICAgICAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGZ1bmN0aW9uIGJhY2tncm91
bmRBY2Nlc3NpYmxlKCkgewotICAgICAgICB2YXIgZGlzcGxheUJ0biA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZGlzcGxheUJ0biIpOwotICAgICAgICB2
YXIgYmdDb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJiZ0NvbnRlbnQiKTsKLSAgICAgICAgaWYgKCFkaXNwbGF5QnRuIHx8ICFiZ0NvbnRlbnQp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiAhZGlzcGxheUJ0bi5p
c0lnbm9yZWQgJiYgIWJnQ29udGVudC5pc0lnbm9yZWQ7CisgICAgYXN5bmMgZnVuY3Rpb24gYmFj
a2dyb3VuZEFjY2Vzc2libGUoc2hvdWxkQmVBY2Nlc3NpYmxlKSB7CisgICAgICAgIGF3YWl0IHdh
aXRGb3IoKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGlzcGxheUJ0biA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZGlzcGxheUJ0biIpOworICAgICAg
ICAgICAgY29uc3QgYmdDb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJiZ0NvbnRlbnQiKTsKKyAgICAgICAgICAgIGlmICghZGlzcGxheUJ0biB8
fCAhYmdDb250ZW50KQorICAgICAgICAgICAgICAgIHJldHVybiAhc2hvdWxkQmVBY2Nlc3NpYmxl
OworICAgICAgICAgICAgcmV0dXJuICghZGlzcGxheUJ0bi5pc0lnbm9yZWQgJiYgIWJnQ29udGVu
dC5pc0lnbm9yZWQpID09PSBzaG91bGRCZUFjY2Vzc2libGU7CisgICAgICAgIH0pOworICAgICAg
ICB0ZXN0T3V0cHV0ICs9IGBQQVNTOiBiYWNrZ3JvdW5kIGFjY2Vzc2libGU6ICR7c2hvdWxkQmVB
Y2Nlc3NpYmxlfVxuYAogICAgIH0KICAgICAKLSAgICBmdW5jdGlvbiBkaWFsb2cxQWNjZXNzaWJs
ZSgpIHsKLSAgICAgICAgIHZhciBva0J0biA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgib2siKTsKLSAgICAgICAgIHZhciBuZXdCdG4gPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm5ldyIpOwotICAgICAgICAgaWYg
KCFva0J0biB8fCAhbmV3QnRuKQotICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
IHJldHVybiAhb2tCdG4uaXNJZ25vcmVkICYmICFuZXdCdG4uaXNJZ25vcmVkOworICAgIGFzeW5j
IGZ1bmN0aW9uIGRpYWxvZzFBY2Nlc3NpYmxlKHNob3VsZEJlQWNjZXNzaWJsZSkgeworICAgICAg
ICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IG9rQnRuID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJvayIpOworICAgICAgICAg
ICAgY29uc3QgbmV3QnRuID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJuZXciKTsKKyAgICAgICAgICAgIGlmICghb2tCdG4gfHwgIW5ld0J0bikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gIXNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgICAgIHJldHVy
biAoIW9rQnRuLmlzSWdub3JlZCAmJiAhbmV3QnRuLmlzSWdub3JlZCkgPT09IHNob3VsZEJlQWNj
ZXNzaWJsZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gYFBBU1M6ICNkaWFs
b2cxIGFjY2Vzc2libGU6ICR7c2hvdWxkQmVBY2Nlc3NpYmxlfVxuYAorICAgIH0KKworICAgIGFz
eW5jIGZ1bmN0aW9uIGRpYWxvZzJBY2Nlc3NpYmxlKHNob3VsZEJlQWNjZXNzaWJsZSkgeworICAg
ICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGNsb3NlQnV0dG9u
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjbG9zZSIp
OworICAgICAgICAgICAgaWYgKCFjbG9zZUJ1dHRvbikKKyAgICAgICAgICAgICAgICByZXR1cm4g
IXNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgICAgIHJldHVybiBjbG9zZUJ1dHRvbi5pc0ln
bm9yZWQgIT09IHNob3VsZEJlQWNjZXNzaWJsZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3RP
dXRwdXQgKz0gYFBBU1M6ICNkaWFsb2cyIGFjY2Vzc2libGU6ICR7c2hvdWxkQmVBY2Nlc3NpYmxl
fVxuYAogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiB0b2dnbGVEaWFsb2coZGlhbG9nLCBzaCkg
ewotICAgIGlmIChzaCA9PSAic2hvdyIpIHsKLSAgICAgICAgLy8gc2hvdyB0aGUgZGlhbG9nIAot
ICAgICAgICBkaWFsb2cuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Ci0gICAgICAgIGRpYWxvZy5z
ZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCAidHJ1ZSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGRpYWxvZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICBkaWFsb2cuc2V0QXR0cmli
dXRlKCJhcmlhLW1vZGFsIiwgImZhbHNlIik7IAorICAgICAgICBpZiAoc2ggPT0gInNob3ciKSB7
CisgICAgICAgICAgICBkaWFsb2cuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CisgICAgICAgICAg
ICBkaWFsb2cuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgInRydWUiKTsKKyAgICAgICAgICAg
IC8vIFB1dCBmb2N1cyBpbnNpZGUgdGhlIG5ldyBkaWFsb2cgc28gaXQgdGFrZXMgcHJlY2VkZW5j
ZSBvdmVyIG90aGVyIGRpYWxvZ3MgKGV2ZW4gaWYgdGhleSBjb21lIGxhdGVyIGluIERPTSBvcmRl
cikuCisgICAgICAgICAgICBmb2N1c0ZpcnN0RGVzY2VuZGFudChkaWFsb2cpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZGlhbG9nLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAg
ICAgICAgICBkaWFsb2cuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgImZhbHNlIik7CisgICAg
ICAgIH0KICAgICB9Ci19Ci0KLTwvc2NyaXB0PgogCisgICAgZnVuY3Rpb24gZm9jdXNGaXJzdERl
c2NlbmRhbnQoZWxlbWVudCkgeworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQu
Y2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBlbGVt
ZW50LmNoaWxkTm9kZXNbaV07CisgICAgICAgICAgICBpZiAoIWF0dGVtcHRGb2N1cyhjaGlsZCkp
CisgICAgICAgICAgICAgICAgZm9jdXNGaXJzdERlc2NlbmRhbnQoY2hpbGQpCisgICAgICAgIH0K
KyAgICB9OwogCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisgICAgZnVuY3Rpb24gYXR0ZW1wdEZvY3VzKGVsZW1lbnQpIHsKKyAgICAgICAgdHJ5
IHsgZWxlbWVudC5mb2N1cygpIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIHJldHVybiBkb2N1bWVu
dC5hY3RpdmVFbGVtZW50ID09PSBlbGVtZW50OworICAgIH0KKzwvc2NyaXB0PgogPC9ib2R5Pgot
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZWNvbXB1dGUtY3VycmVudC1tb2RhbC1hZnRl
ci1hcmlhLW1vZGFsLWVsZW1lbnQtYXBwZWFycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxl
bWVudC1hcHBlYXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmQ5YmZmMDg1ZGE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcmVjb21wdXRlLWN1cnJlbnQtbW9kYWwtYWZ0ZXItYXJpYS1tb2RhbC1lbGVt
ZW50LWFwcGVhcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgd2UgdXBkYXRlIHRoZSBwYWdlLXdpZGUgYWN0aXZlIG1vZGFsIHdoZW4gYW4gYXJp
YS1tb2RhbCBlbGVtZW50IGlzIGR5bmFtaWNhbGx5IGFkZGVkIGFuZCByZW1vdmVkLgorCitQQVNT
OiBNb2RhbCBjb250ZW50IGlzIG5vdCBpbml0aWFsbHkgYWNjZXNzaWJsZS4KKworVW4taGlkaW5n
IGFyaWEtbW9kYWwgZWxlbWVudC4KK1BBU1M6IEJhY2tncm91bmQgaXMgaW5hY2Nlc3NpYmxlLCBt
b2RhbCBjb250ZW50IGlzIGFjY2Vzc2libGUuCisKK1JlLWhpZGluZyBhcmlhLW1vZGFsIGVsZW1l
bnQuCitQQVNTOiBCYWNrZ3JvdW5kIGlzIGFjY2Vzc2libGUsIG1vZGFsIGNvbnRlbnQgaXMgaW5h
Y2Nlc3NpYmxlLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0
ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWwgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFy
aWEtbW9kYWwtZWxlbWVudC1hcHBlYXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5iN2E4OWViYjQxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3JlY29tcHV0ZS1jdXJyZW50LW1vZGFsLWFmdGVyLWFyaWEtbW9kYWwt
ZWxlbWVudC1hcHBlYXJzLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorCis8ZGl2IGlkPSJjb250ZW50Ij4KKyAgICA8cCBpZD0icC1iZWZvcmUtbW9kYWwiPlBhZ2Ug
Y29udGVudCBiZWZvcmUgbW9kYWw8L3A+CisKKyAgICA8ZGl2IGlkPSJtb2RhbCIgYXJpYS1tb2Rh
bD0idHJ1ZSIgcm9sZT0iZGlhbG9nIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CisgICAgICAgIDxw
IGlkPSJwLWluc2lkZS1tb2RhbCI+UGFnZSBjb250ZW50IGluc2lkZSBtb2RhbDwvcD4KKyAgICAg
ICAgPGJ1dHRvbiBpZD0iY2xvc2UtYnV0dG9uIj5DbG9zZSBtb2RhbCBidXR0b248L2J1dHRvbj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJuZXctbW9kYWwtY29udGFpbmVyIj48L2Rpdj4KKwor
ICAgIDxwIGlkPSJwLWFmdGVyLW1vZGFsIj5QYWdlIGNvbnRlbnQgYWZ0ZXIgbW9kYWw8L3A+Cis8
L2Rpdj4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdE91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IHdlIHVwZGF0ZSB0aGUgcGFnZS13aWRlIGFjdGl2ZSBtb2RhbCB3aGVuIGFuIGFyaWEt
bW9kYWwgZWxlbWVudCBpcyBkeW5hbWljYWxseSBhZGRlZCBhbmQgcmVtb3ZlZC5cblxuIjsKKwor
ICAgIGZ1bmN0aW9uIGJhY2tncm91bmRJc0FjY2Vzc2libGUoKSB7CisgICAgICAgIHJldHVybiBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInAtYmVmb3JlLW1v
ZGFsIikgJiYKKyAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgicC1hZnRlci1tb2RhbCIpOworICAgIH0KKyAgICBmdW5jdGlvbiBtb2RhbENv
bnRlbnRJc0FjY2Vzc2libGUoKSB7CisgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInAtaW5zaWRlLW1vZGFsIikgJiYKKyAgICAgICAg
ICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xvc2Ut
YnV0dG9uIik7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgaWYg
KGJhY2tncm91bmRJc0FjY2Vzc2libGUoKSAmJiAhbW9kYWxDb250ZW50SXNBY2Nlc3NpYmxlKCkp
CisgICAgICAgICAgICB0ZXN0T3V0cHV0ICs9ICJQQVNTOiBNb2RhbCBjb250ZW50IGlzIG5vdCBp
bml0aWFsbHkgYWNjZXNzaWJsZS5cbiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RP
dXRwdXQgKz0gIkZBSUw6IE1vZGVsIGNvbnRlbnQgaXMgaW5pdGlhbGx5IGFjY2Vzc2libGUuXG4i
OworCisgICAgICAgIHRlc3RPdXRwdXQgKz0gYFxuVW4taGlkaW5nIGFyaWEtbW9kYWwgZWxlbWVu
dC5cbmA7CisgICAgICAgIC8vIE1vdmUgdGhlIG1vZGFsIGluIHRoZSBET00uIFRoaXMgaXMgdGhl
IGtleSB0aGluZyBiZWluZyB0ZXN0ZWQgLS0gZG8gd2UgcHJvcGVybHkgcHJlc2VydmUgbW9kYWwg
YmVoYXZpb3IKKyAgICAgICAgLy8gZm9yIGEgbW9kYWwgdGhhdCBoYXMgYmVlbiBtb3ZlZD8KKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ldy1tb2RhbC1jb250YWluZXIiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9kYWwiKSkKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm1vZGFsIikucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOworICAg
ICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXdhaXQgd2Fp
dEZvcigoKSA9PiB7IHJldHVybiAhYmFja2dyb3VuZElzQWNjZXNzaWJsZSgpICYmIG1vZGFsQ29u
dGVudElzQWNjZXNzaWJsZSgpIH0pOworICAgICAgICAgICAgdGVzdE91dHB1dCArPSAiUEFTUzog
QmFja2dyb3VuZCBpcyBpbmFjY2Vzc2libGUsIG1vZGFsIGNvbnRlbnQgaXMgYWNjZXNzaWJsZS5c
biI7CisKKyAgICAgICAgICAgIHRlc3RPdXRwdXQgKz0gYFxuUmUtaGlkaW5nIGFyaWEtbW9kYWwg
ZWxlbWVudC5cbmA7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9kYWwi
KS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9
PiB7IHJldHVybiBiYWNrZ3JvdW5kSXNBY2Nlc3NpYmxlKCkgfSk7CisgICAgICAgICAgICB0ZXN0
T3V0cHV0ICs9ICJQQVNTOiBCYWNrZ3JvdW5kIGlzIGFjY2Vzc2libGUsIG1vZGFsIGNvbnRlbnQg
aXMgaW5hY2Nlc3NpYmxlLlxuIjsKKworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgICAgICBk
ZWJ1Zyh0ZXN0T3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwotLSAKMi4zMi4wIChB
cHBsZSBHaXQtMTMyKQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>