<?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>193056</bug_id>
          
          <creation_ts>2018-12-29 05:33:35 -0800</creation_ts>
          <short_desc>Prefer RetainPtr&lt;NSObject&gt; to RetainPtr&lt;NSObject *&gt;</short_desc>
          <delta_ts>2019-01-08 07:28:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Local 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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1490993</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 05:33:35 -0800</bug_when>
    <thetext>Prefer RetainPtr&lt;NSObject&gt; to RetainPtr&lt;NSObject *&gt; because:
- It was the original intent based on Macieij&apos;s comment from r16987.
- The vast majority of RetainPtr&lt;&gt; use in WebKit already omits the &apos;*&apos; operator for NS types.  (Yay consistency!)
- We can write a style checker rule to enforce it.
- We can make adoptNS() and retainPtr() create the correct types using C++ template metaprogramming.

Note that RetainPtr&lt;NSObject *&gt; still works as it did before (and tests have been added to verify that it works with RetainPtr&lt;NSObject&gt;).

This change simply formalizes the preference for RetainPtr&lt;NSObject&gt; over RetainPtr&lt;NSObject *&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490994</commentid>
    <comment_count>1</comment_count>
      <attachid>358136</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 05:49:04 -0800</bug_when>
    <thetext>Created attachment 358136
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490995</commentid>
    <comment_count>2</comment_count>
      <attachid>358136</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 05:51:53 -0800</bug_when>
    <thetext>Comment on attachment 358136
Patch v1

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

&gt; Source/WTF/wtf/RetainPtr.h:60
&gt; +template&lt;typename T&gt; RetainPtr&lt;typename std::conditional&lt;std::is_convertible&lt;T, id&gt;::value &amp;&amp; !std::is_same&lt;T, id&gt;::value, typename std::remove_pointer&lt;T&gt;::type, T&gt;::type&gt; adoptNS(T NS_RELEASES_ARGUMENT) WARN_UNUSED_RETURN;

After posting this patch, I just realized I might be able to do something simpler which matches the way that ValueType is defined:

-template&lt;typename T&gt; RetainPtr&lt;typename std::conditional&lt;std::is_convertible&lt;T, id&gt;::value &amp;&amp; !std::is_same&lt;T, id&gt;::value, typename std::remove_pointer&lt;T&gt;::type, T&gt;::type&gt; adoptNS(T NS_RELEASES_ARGUMENT) WARN_UNUSED_RETURN;
+template&lt;typename T&gt; RetainPtr&lt;typename std::remove_pointer&lt;T&gt;::type&gt; adoptNS(T NS_RELEASES_ARGUMENT) WARN_UNUSED_RETURN;

Testing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490996</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-29 05:52:21 -0800</bug_when>
    <thetext>Attachment 358136 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/style/checkers/cpp.py:3321:  at least two spaces before inline comment  [pep8/E261] [5]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490999</commentid>
    <comment_count>4</comment_count>
      <attachid>358136</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 10:01:15 -0800</bug_when>
    <thetext>Comment on attachment 358136
Patch v1

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

&gt;&gt; Source/WTF/wtf/RetainPtr.h:60
&gt;&gt; +template&lt;typename T&gt; RetainPtr&lt;typename std::conditional&lt;std::is_convertible&lt;T, id&gt;::value &amp;&amp; !std::is_same&lt;T, id&gt;::value, typename std::remove_pointer&lt;T&gt;::type, T&gt;::type&gt; adoptNS(T NS_RELEASES_ARGUMENT) WARN_UNUSED_RETURN;
&gt; 
&gt; After posting this patch, I just realized I might be able to do something simpler which matches the way that ValueType is defined:
&gt; 
&gt; -template&lt;typename T&gt; RetainPtr&lt;typename std::conditional&lt;std::is_convertible&lt;T, id&gt;::value &amp;&amp; !std::is_same&lt;T, id&gt;::value, typename std::remove_pointer&lt;T&gt;::type, T&gt;::type&gt; adoptNS(T NS_RELEASES_ARGUMENT) WARN_UNUSED_RETURN;
&gt; +template&lt;typename T&gt; RetainPtr&lt;typename std::remove_pointer&lt;T&gt;::type&gt; adoptNS(T NS_RELEASES_ARGUMENT) WARN_UNUSED_RETURN;
&gt; 
&gt; Testing now.

Yes this can be simplified.  Making some changes now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491000</commentid>
    <comment_count>5</comment_count>
      <attachid>358136</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 10:02:48 -0800</bug_when>
    <thetext>Comment on attachment 358136
Patch v1

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

&gt; Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp:168
&gt; +    EXPECT_FALSE(optionalObject2.value());

This caused a RELEASE_ASSERT() for `optionalObject2` not having a value.  Needs to be:

    EXPECT_FALSE(optionalObject2);

&gt; Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm:253
&gt; +    EXPECT_FALSE(optionalObject2.value());

This caused a RELEASE_ASSERT() for `optionalObject2` not having a value.  Needs to be:

    EXPECT_FALSE(optionalObject2);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491001</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 10:09:37 -0800</bug_when>
    <thetext>The way std::remove_pointer&lt;T&gt; works is that it only removes explicit pointer operators from type T, even if type T is a pointer beneath a typedef.

That means:

typename std::remove_pointer&lt;NSArray *&gt;::type == NSArray

But that:

typename std::remove_pointer&lt;NSArray&gt;::type == NSArray
typename std::remove_pointer&lt;id&gt;::type == id
typename std::remove_pointer&lt;CFArrayRef&gt;::type == CFArrayRef

This is why ValueType uses an unconditional std::remove_pointer&lt;t&gt; in the RetainPtr class definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491002</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 10:42:47 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; The way std::remove_pointer&lt;T&gt; works is that it only removes explicit
&gt; pointer operators from type T, even if type T is a pointer beneath a typedef.
&gt; 
&gt; That means:
&gt; 
&gt; typename std::remove_pointer&lt;NSArray *&gt;::type == NSArray
&gt; 
&gt; But that:
&gt; 
&gt; typename std::remove_pointer&lt;NSArray&gt;::type == NSArray
&gt; typename std::remove_pointer&lt;id&gt;::type == id
&gt; typename std::remove_pointer&lt;CFArrayRef&gt;::type == CFArrayRef

And I&apos;m wrong (yay tests!):

Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp:141:38: error: no viable conversion from &apos;RetainPtr&lt;typename std::remove_pointer&lt;const __CFNumber *&gt;::type&gt;&apos; (aka &apos;RetainPtr&lt;const __CFNumber&gt;&apos;) to &apos;Optional&lt;RetainPtr&lt;CFNumberRef&gt; &gt;&apos; (aka &apos;Optional&lt;RetainPtr&lt;const __CFNumber *&gt; &gt;&apos;)
    Optional&lt;RetainPtr&lt;CFNumberRef&gt;&gt; optionalObject2 = retainPtr(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType,
 &amp;value));
                                     ^                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~

I think it depends on how the type is defined by the compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491006</commentid>
    <comment_count>8</comment_count>
      <attachid>358140</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 13:40:32 -0800</bug_when>
    <thetext>Created attachment 358140
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491007</commentid>
    <comment_count>9</comment_count>
      <attachid>358140</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-29 13:40:50 -0800</bug_when>
    <thetext>Comment on attachment 358140
Patch v2

- Fix crashing TestWTF.RetainPtr tests.
- Defined shared typedef to clean up RetainPtr.h changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491008</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-29 13:44:12 -0800</bug_when>
    <thetext>Attachment 358140 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/style/checkers/cpp.py:3321:  at least two spaces before inline comment  [pep8/E261] [5]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491449</commentid>
    <comment_count>11</comment_count>
      <attachid>358140</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-03 09:56:14 -0800</bug_when>
    <thetext>Comment on attachment 358140
Patch v2

Was the motivation for doing all this work just style?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491486</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-03 12:09:05 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; Comment on attachment 358140 [details]
&gt; Patch v2
&gt; 
&gt; Was the motivation for doing all this work just style?

Yes, for consistency.  It&apos;s one of the primary reasons we have WebKit style guidelines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491569</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-03 17:32:58 -0800</bug_when>
    <thetext>Thanks for the review, Alex!  Waiting to land this until after the next branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492369</commentid>
    <comment_count>14</comment_count>
      <attachid>358140</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-07 13:33:41 -0800</bug_when>
    <thetext>Comment on attachment 358140
Patch v2

Rejecting attachment 358140 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 358140, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=358140&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=193056&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 358140 from bug 193056.
Fetching: https://bugs.webkit.org/attachment.cgi?id=358140
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Alex Christensen&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 42 diffs from patch file(s).
patching file Source/WTF/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKitLegacy/mac/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WTF/wtf/RetainPtr.h
patching file Source/WTF/wtf/SchedulePair.h
patching file Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm
patching file Source/WebCore/platform/network/cf/AuthenticationChallenge.h
patching file Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm
patching file Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm
patching file Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.mm
patching file Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h
patching file Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
patching file Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h
patching file Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm
patching file Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm
patching file Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginHostProxy.h
patching file Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
patching file Source/WebKitLegacy/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm
patching file Source/WebKitLegacy/mac/Plugins/Hosted/ProxyInstance.mm
patching file Source/WebKitLegacy/mac/WebCoreSupport/WebGeolocationClient.mm
patching file Source/WebKitLegacy/mac/WebView/WebDataSource.mm
patching file Source/WebKitLegacy/mac/WebView/WebView.mm
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/Scripts/webkitpy/style/checker.py
patching file Tools/Scripts/webkitpy/style/checkers/cpp.py
patching file Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
patching file Tools/TestRunnerShared/EventSerialization/mac/EventSerializerMac.h
patching file Tools/TestWebKitAPI/EditingTestHarness.h
patching file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Hunk #1 succeeded at 172 (offset 1 line).
Hunk #2 succeeded at 3806 (offset 24 lines).
patching file Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp
patching file Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/DownloadProgress.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/IconLoadingDelegate.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/JITEnabled.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/VideoControlsManager.mm
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm
Hunk #1 FAILED at 865.
1 out of 1 hunk FAILED -- saving rejects to file Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm.rej
patching file Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm
patching file Tools/WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm
patching file Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundleIOS.mm
patching file Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Alex Christensen&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/10661738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492466</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-07 16:03:32 -0800</bug_when>
    <thetext>Committed r239709: &lt;https://trac.webkit.org/changeset/239709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492594</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-08 07:28:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/47115086&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358136</attachid>
            <date>2018-12-29 05:49:04 -0800</date>
            <delta_ts>2018-12-29 13:40:30 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-193056-20181229054903.patch</filename>
            <type>text/plain</type>
            <size>79723</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4MDNjMjZlOTE1OWFjOTM3NWFjYTU5
OTQxODk2ZTBiMjIzMzE4NDIuLjE1MTg3NTIyZWI1OWIwZGJkMzVjMDE4ZWJiMWYyODA0NjBjZDU4
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTItMjkgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVmZXIgUmV0YWluUHRyPE5TT2JqZWN0PiB0byBS
ZXRhaW5QdHI8TlNPYmplY3QgKj4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzA1
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9SZXRhaW5QdHIuaDoKKyAgICAgICAgKFdURjo6YWRvcHROUyk6CisgICAgICAgIC0gT25seSBt
YWtlIGF2YWlsYWJsZSB3aGVuIGNvbXBpbG5nIHdpdGggT2JqZWN0aXZlLUMuCisgICAgICAgIC0g
Q2hhbmdlIHJldHVybiB0eXBlIG9mIGFkb3B0TlMoKSB0byByZW1vdmUgJyonIGZyb20gTlMgdHlw
ZXMKKyAgICAgICAgICB1c2luZyBDKysgdGVtcGxhdGUgbWV0YXByb2dyYW1taW5nLiAoQSBzZWNv
bmQgdHlwZW5hbWUgY291bGQKKyAgICAgICAgICBub3QgYmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRl
IGFzIGNsYW5nIGNvbXBsYWluZWQgb2YgYmVpbmcKKyAgICAgICAgICB1bmFibGUgdG8gZGV0ZXJt
aW5lIHRoZSB0eXBlLikKKyAgICAgICAgKFdURjo6cmV0YWluUHRyKToKKyAgICAgICAgLSBBZGQg
c3BlY2lhbGl6YXRpb24gd2hlbiBjb21waWxpbmcgd2l0aCBPYmplY3RpdmUtQyB0byBjaGFuZ2UK
KyAgICAgICAgICB0aGUgcmV0dXJuIHR5cGUgdG8gcmVtb3ZlICcqJyBmcm9tIE5TIHR5cGVzLiAg
KEEgc2Vjb25kCisgICAgICAgICAgdHlwZW5hbWUgd2FzIGFibGUgdG8gYmUgdXNlZCBoZXJlLikK
KworICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAgLSBSZW1vdmUgJyonIGZy
b20gUmV0YWluUHRyPD4gdHlwZS4KKwogMjAxOC0xMi0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBNYWMgQ01ha2UgYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwN2MwOTg3NThlY2Y4NGVlZTk5MjZkM2M1ZGUxZmM4NDcwNzE5MGY2
Li5mODI4ZThkNmUzZDk5NDFmZTYwYTMwYTg1YTVjOThjMzc4MDNkNzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTgtMTItMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KKworICAgICAgICBQcmVmZXIgUmV0YWluUHRyPE5TT2JqZWN0PiB0byBSZXRhaW5QdHI8
TlNPYmplY3QgKj4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzA1Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgor
ICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1EYXRhUGFyc2Vy
OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6XSk6CisgICAgICAgICgtW1dlYkFWU3RyZWFtRGF0
YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3Nl
dDp3aXRoRGlzY29udGludWl0eTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6CisgICAgICAgIC0gUmVtb3ZlICcqJyBmcm9tIFJldGFp
blB0cjw+IHR5cGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclVSTCk6
CisgICAgICAgIC0gT25jZSByZXRhaW5QdHIoKSB3YXMgY2hhbmdlZCB0byByZXR1cm4gUmV0YWlu
UHRyPE5TQXJyYXk+CisgICAgICAgICAgaW5zdGVhZCBvZiBSZXRhaW5QdHI8TlNBcnJheSAqPiBo
ZXJlLCB0aGF0IGZvcmNlZCB0aGUgdHlwZSBvZgorICAgICAgICAgIGBjb29raWVzUHRyYCB0byBj
aGFuZ2UgYXMgd2VsbCBzaW5jZQorICAgICAgICAgIE9wdGlvbmFsPFJldGFpblB0cjxOU0FycmF5
Pj4gaXMgbm90IGFzc2lnbmFibGUgdG8KKyAgICAgICAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNB
cnJheSAqPj4gd2l0aG91dCBmdXJ0aGVyIHRlbXBsYXRlCisgICAgICAgICAgc3BlY2lhbGl6YXRp
b24sIHdoaWNoIGRpZG4ndCBzZWVtIHVzZWZ1bCBzaW5jZQorICAgICAgICAgIE9wdGlvbmFsPFJl
dGFpblB0cjw+PiB2YXJpYWJsZSB0eXBlcyBhcmUgcmFyZWx5IHVzZWQuCisKIDIwMTgtMTItMjgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBb
SlNDXSBSZW1vdmUgb25lIGluZGlyZWN0aW9uIGluIEpTT2JqZWN0Ojp0b1N0cmluZ05hbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMzNlOGZkYjE4ZmY0NzE4N2E1NGM1MGJhMWI2ZjBmY2MxNjJiZmNkMC4uY2NkZTQ3
NmM1YzIzZjczMzAyNzJiMGIxNTc2MTA1MjQxODAzYzE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAxOC0xMi0yOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFByZWZlciBSZXRhaW5QdHI8TlNPYmplY3Q+IHRvIFJldGFpblB0cjxOU09iamVjdCAq
PgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTkzMDU2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1i
bmFpbFZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZUhvc3RJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhv
c3Q6OmNyZWF0ZUVtYmVkZGVkVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAg
ICAtIFJlbW92ZSAnKicgZnJvbSBSZXRhaW5QdHI8PiB0eXBlLgorCiAyMDE4LTEyLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgV0tFZGl0
Q29tbWFuZE9iakMgYW5kIFdLRWRpdG9yVW5kb1RhcmdldE9iakMgaW50byBhIHNlcGFyYXRlIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0NDFiYjA5MzBlZDlkOWI2ZjYwODYw
YTczNTQzMTA1OTM2Zjg1ZWVlLi4wMmE0YzY3Y2M5YzRjN2NlODZhMTJjMWI4MzNiYTZjZjdhZjZi
MzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgt
MTItMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVm
ZXIgUmV0YWluUHRyPE5TT2JqZWN0PiB0byBSZXRhaW5QdHI8TlNPYmplY3QgKj4KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzA1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dFByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmVudW1lcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6bWFyc2hhbFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjptYXJzaGFsVmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFsdWVzKToKKyAgICAgICAgKiBQbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNl
OjppbnZva2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBfcmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY2FjaGVkUmVzcG9uc2VGb3JVUkw6XSk6CisgICAgICAg
IC0gUmVtb3ZlICcqJyBmcm9tIFJldGFpblB0cjw+IHR5cGUuCisKIDIwMTgtMTItMjAgIFl1c3Vr
ZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBVc2UgUmVm
PD4gYXMgbXVjaCBhcyBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmV0YWlu
UHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaAppbmRleCBhYTk2ZGVhMWFjOTY3MDMx
YzgwODRhMmJlMTFhNzZiZDcxN2E5Njc1Li43ZTM5NGJjY2QzZDU3Y2QyOGZmZTc0MjlmNDI5NmVk
ZmJhNjNmMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAtNTYsNyArNTYsOSBAQCBuYW1lc3BhY2UgV1RG
IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJldGFpblB0cjsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gUmV0YWluUHRyPFQ+IGFkb3B0Q0YoVCBDRl9SRUxFQVNFU19BUkdVTUVOVCkgV0FS
Tl9VTlVTRURfUkVUVVJOOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmV0YWluUHRyPFQ+IGFkb3B0
TlMoVCBOU19SRUxFQVNFU19BUkdVTUVOVCkgV0FSTl9VTlVTRURfUkVUVVJOOworI2lmZGVmIF9f
T0JKQ19fCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZXRhaW5QdHI8dHlwZW5hbWUgc3RkOjpjb25k
aXRpb25hbDxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIGlkPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2Ft
ZTxULCBpZD46OnZhbHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlLCBU
Pjo6dHlwZT4gYWRvcHROUyhUIE5TX1JFTEVBU0VTX0FSR1VNRU5UKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CisjZW5kaWYKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmV0YWluUHRyIHsKIHB1
YmxpYzoKQEAgLTEwOSw3ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzd2FwKFJldGFpblB0
ciYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIFJldGFpblB0cjxVPiBhZG9w
dENGKFUgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgUmV0YWluUHRyPFU+IGFkb3B0TlMoVSBOU19SRUxFQVNF
U19BUkdVTUVOVCkgV0FSTl9VTlVTRURfUkVUVVJOOworI2lmZGVmIF9fT0JKQ19fCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIFJldGFpblB0cjx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlv
bmFsPHN0ZDo6aXNfY29udmVydGlibGU8VSwgaWQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPFUs
IGlkPjo6dmFsdWUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VT46OnR5cGUsIFU+Ojp0
eXBlPiBhZG9wdE5TKFUgTlNfUkVMRUFTRVNfQVJHVU1FTlQpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
KyNlbmRpZgogCiBwcml2YXRlOgogICAgIGVudW0gQWRvcHRUYWcgeyBBZG9wdCB9OwpAQCAtMTUy
LDcgKzE1NiwxMSBAQCBwcml2YXRlOgogfTsKIAogLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBjcmVh
dGluZyBhIFJldGFpblB0ciB1c2luZyB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1Y3Rpb24uCisjaWZk
ZWYgX19PQkpDX18KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IFJldGFpblB0cjxV
PiByZXRhaW5QdHIoVCkgV0FSTl9VTlVTRURfUkVUVVJOOworI2Vsc2UKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFJldGFpblB0cjxUPiByZXRhaW5QdHIoVCkgV0FSTl9VTlVTRURfUkVUVVJOOworI2Vu
ZGlmCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZXRhaW5QdHI8VD46On5SZXRhaW5Q
dHIoKQogewpAQCAtMzA2LDI0ICszMTQsMzIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IFJldGFpblB0cjxUPiBhZG9wdENGKFQgQ0ZfUkVMRUFTRVNfQVJHVU1FTlQgcHRyKQogfQogCiAj
aWZkZWYgX19PQkpDX18KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZXRhaW5QdHI8VD4g
YWRvcHROUyhUIE5TX1JFTEVBU0VTX0FSR1VNRU5UIHB0cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBSZXRhaW5QdHI8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnZl
cnRpYmxlPFQsIGlkPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxULCBpZD46OnZhbHVlLCB0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlLCBUPjo6dHlwZT4gYWRvcHROUyhUIE5T
X1JFTEVBU0VTX0FSR1VNRU5UIHB0cikKIHsKICNpZiBfX2hhc19mZWF0dXJlKG9iamNfYXJjKQog
ICAgIHJldHVybiBwdHI7CiAjZWxpZiBkZWZpbmVkKE9CSkNfTk9fR0MpCi0gICAgcmV0dXJuIFJl
dGFpblB0cjxUPihwdHIsIFJldGFpblB0cjxUPjo6QWRvcHQpOworICAgIHJldHVybiBSZXRhaW5Q
dHI8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIGlkPjo6
dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxULCBpZD46OnZhbHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9wb2ludGVyPFQ+Ojp0eXBlLCBUPjo6dHlwZT4ocHRyLCBSZXRhaW5QdHI8dHlwZW5hbWUgc3Rk
Ojpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIGlkPjo6dmFsdWUgJiYgIXN0ZDo6
aXNfc2FtZTxULCBpZD46OnZhbHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0
eXBlLCBUPjo6dHlwZT46OkFkb3B0KTsKICNlbHNlCi0gICAgUmV0YWluUHRyPFQ+IHJlc3VsdCA9
IHB0cjsKKyAgICBSZXRhaW5QdHI8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2Nv
bnZlcnRpYmxlPFQsIGlkPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxULCBpZD46OnZhbHVlLCB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlLCBUPjo6dHlwZT4ocHRyLCBSZXRh
aW5QdHI8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIGlk
Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxULCBpZD46OnZhbHVlLCB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9wb2ludGVyPFQ+Ojp0eXBlLCBUPjo6dHlwZT4gcmVzdWx0ID0gcHRyOwogICAgIFtwdHIg
cmVsZWFzZV07CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgogfQogI2VuZGlmCiAKKyNpZmRl
ZiBfX09CSkNfXwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IHR5cGVuYW1lIHN0
ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb252ZXJ0aWJsZTxULCBpZD46OnZhbHVlICYmICFzdGQ6
OmlzX3NhbWU8VCwgaWQ+Ojp2YWx1ZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZSwgVD46OnR5cGU+CitpbmxpbmUgUmV0YWluUHRyPFU+IHJldGFpblB0cihUIHB0cikKK3sK
KyAgICByZXR1cm4gcHRyOworfQorI2Vsc2UKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBS
ZXRhaW5QdHI8VD4gcmV0YWluUHRyKFQgcHRyKQogewogICAgIHJldHVybiBwdHI7CiB9CisjZW5k
aWYKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NtYXJ0UHRyPFJldGFpblB0cjxU
Pj4gewogICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKQEAgLTM3MywxMCArMzg5
LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIGR5bmFtaWNfb2JqY19jYXN0KGlkIG9iamVj
dCkKIAogdXNpbmcgV1RGOjpSZXRhaW5QdHI7CiB1c2luZyBXVEY6OmFkb3B0Q0Y7Ci11c2luZyBX
VEY6OmFkb3B0TlM7CiB1c2luZyBXVEY6OnJldGFpblB0cjsKIAogI2lmZGVmIF9fT0JKQ19fCit1
c2luZyBXVEY6OmFkb3B0TlM7CiB1c2luZyBXVEY6OmR5bmFtaWNfb2JqY19jYXN0OwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oIGIvU291cmNlL1dU
Ri93dGYvU2NoZWR1bGVQYWlyLmgKaW5kZXggYzQxYmNiYmM1MTM0Y2Y5MTI4YjRhYzQ0NjQ1ZWFm
NzdhNDg3OGQxYS4uYTM2ZTAwYzQyYjQ2M2VjZmI3ZDg4NzE4ZmIwMTkzNzU0NjQ2YmE2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmgKKysrIGIvU291cmNlL1dURi93
dGYvU2NoZWR1bGVQYWlyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTY2hlZHVsZVBhaXIoTlNSdW5Mb29w
KiwgQ0ZTdHJpbmdSZWYpOwotICAgIFJldGFpblB0cjxOU1J1bkxvb3AqPiBtX25zUnVuTG9vcDsK
KyAgICBSZXRhaW5QdHI8TlNSdW5Mb29wPiBtX25zUnVuTG9vcDsKICNlbmRpZgogCiAgICAgUmV0
YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAwZWNmNzU1MTAzY2My
MGQwNmU0MzQ3OTA4ZjYwZDZlZThmNmRkZGRhLi5jNDcxN2NlOWI3ZGVjNzJiM2NkMTg3MjFmYjM3
MjYzYTZiZTcwOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTQzLDcgKzE0Myw3IEBAIC0gKHZvaWQpc3RyZWFt
RGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJz
ZVN0cmVhbURhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1E
YXRhUGFyc2VyID09IF9wYXJzZXIpOwogCi0gICAgUmV0YWluUHRyPEFWQXNzZXQqPiBwcm90ZWN0
ZWRBc3NldCA9IGFzc2V0OworICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRBc3NldCA9
IGFzc2V0OwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3Rl
ZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKICAgICAgICAgaWYgKHBhcmVudCkK
ICAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90ZWN0ZWRB
c3NldC5nZXQoKSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEK
ICAgICBVTlVTRURfUEFSQU0oZGlzY29udGludWl0eSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJl
YW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwogCi0gICAgUmV0YWlu
UHRyPEFWQXNzZXQqPiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OworICAgIFJldGFpblB0cjxBVkFz
c2V0PiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVu
dCA9IF9wYXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsK
ICAgICAgICAgaWYgKHBhcmVudCkKICAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1E
YXRhQXNBc3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgK
aW5kZXggMTU3Yjg1MmI2MDg3NWU3MGFmOTE2NWJhYTgyYjU2OTZmMzcxNDEyOC4uM2Y2NDhlMDYw
NDBiNTNhYjc4ZjZlYWFkYTAyMzU0YWZjZjk4YzQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFs
bGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CiAjZWxzZQogICAgIFJldGFpblB0cjxpZD4gbV9zZW5k
ZXI7Ci0gICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKj4gbV9uc0No
YWxsZW5nZTsKKyAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9u
c0NoYWxsZW5nZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KaW5kZXggYjU3OTk3MzI3OWM2MTg0ZDMyMmU3YmNjOTEwYjY1YWQ5ZGMzMzk4ZS4uNDY1
ZjE2MTM2MzRjZTYzNzVkNTI0ZjM5NjljZWYzOTY2NDU4M2IzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IHBvbGljeVByb3BlcnRpZXMoY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8KIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IE9w
dGlvbmFsPFNhbWVTaXRlSW5mbz4mIHNhbWVTaXRlSW5mbywgTlNTdHJpbmcgKnBhcnRpdGlvbiA9
IG51bGxwdHIpCiB7CiAgICAgLy8gVGhlIF9nZXRDb29raWVzRm9yVVJMOiBtZXRob2QgY2FsbHMg
dGhlIGNvbXBsZXRpb25IYW5kbGVyIHN5bmNocm9ub3VzbHkuIFdlIHVzZSBPcHRpb25hbDw+IHRv
IGVuc3VyZSB0aGlzIGludmFyaWFudC4KLSAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheSAq
Pj4gY29va2llc1B0cjsKKyAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvb2tpZXNQ
dHI7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5TQXJyYXkg
KmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0ciA9IHJldGFpblB0cihjb29raWVzKTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KaW5k
ZXggOWZhMDVmY2FiZjEyZDljOWU4YjE0NWI4MjJiZGQ4YTliOTY4ODE1NC4uYTQzZmQ5MDhlNzUz
ZWEwZmExN2IzNTExNTI2ZGZjYzdmYTBkZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgaW50IFhQQ1NlcnZp
Y2VNYWluKGludCwgY29uc3QgY2hhcioqKQogICAgICAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CiAgICAgICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpleGlzdGluZ0FyZ3VtZW50cyA9IFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKICAgICAgICAgICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpu
ZXdBcmd1bWVudHMgPSBbZXhpc3RpbmdBcmd1bWVudHMgbXV0YWJsZUNvcHldOwotICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSAqPiBuZXdMYW5ndWFnZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IG5ld0xhbmd1YWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgICAgIHhwY19hcnJheV9hcHBseShsYW5ndWFn
ZXMsIF4oc2l6ZV90IGluZGV4LCB4cGNfb2JqZWN0X3QgdmFsdWUpIHsKICAgICAgICAgICAgICAg
ICAgICAgW25ld0xhbmd1YWdlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5n
OnhwY19zdHJpbmdfZ2V0X3N0cmluZ19wdHIodmFsdWUpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXV07CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQppbmRl
eCBjOWJiMWI1ZmE1NDc1NDJjM2M0NmM5YzNiOTU0NjhjNmY1YmFiOWUxLi5kNjg1ZGI5ZDE2OGU1
NWE4NTcxMzVhZTMxMjNjNzIxODU2MzIzODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQpAQCAtNTcsNyArNTcsNyBA
QCBAaW1wbGVtZW50YXRpb24gX1dLVGh1bWJuYWlsVmlldyB7CiAgICAgQ0dGbG9hdCBfbGFzdFNu
YXBzaG90U2NhbGU7CiAgICAgQ0dTaXplIF9sYXN0U25hcHNob3RNYXhpbXVtU2l6ZTsKIAotICAg
IFJldGFpblB0cjxOU0NvbG9yICo+IF9vdmVycmlkZUJhY2tncm91bmRDb2xvcjsKKyAgICBSZXRh
aW5QdHI8TlNDb2xvcj4gX292ZXJyaWRlQmFja2dyb3VuZENvbG9yOwogfQogCiBAc3ludGhlc2l6
ZSBzbmFwc2hvdFNpemU9X3NuYXBzaG90U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmlu
ZGV4IDFiMTZlOWY5ZmM3YWIwYzY0NGI5ZTE1MmIxYWU1OTg5MTZmNzZlN2IuLjc0NWM4ZWJhY2Zk
M2EyZjYxMmFmNTkzNDQ4MTFhMWI5MjRjOGExNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHVp
bnQ2NF90IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkIHsgMCB9OwogICAgIFJldGFpblB0cjxO
U1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKLSAgICBSZXRhaW5QdHI8TlNPYmplY3QgKj4gbV9zaGVl
dFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOworICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9zaGVl
dFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOwogI2VuZGlmCiAgICAgCiAjaWYgZGVmaW5lZChXRUJQ
QVlNRU5UQ09PUkRJTkFUT1JQUk9YWV9BRERJVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmlu
ZGV4IDI5N2Y5NjhiMzUyOWUwYzM1NWNkNGRiMWE4OTljMjBlOGNjOTAyNGQuLjNlMjY4Y2U2MjY4
ODYyZGZjOTE3MThjMGViMTQ0NzlmYWZkNzRjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBA
IC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkqIG1fbWFuYWdlcjsKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsOwogICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwotICAgIFJldGFp
blB0cjxQbGF0Zm9ybVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OworICAgIFJldGFpblB0cjxQbGF0
Zm9ybVZpZXc+IG1fbGF5ZXJIb3N0VmlldzsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBt
X3ZpZGVvRGltZW5zaW9uczsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgK
aW5kZXggYzdlOTRhOGQ0N2Y4MzBkNmNlMDRlZWM0NWM5NWRiNTAzMDIwM2E5OS4uNjA5OTk2N2Jk
ZjcwMjkwZTBlOGI4NWJjNzNhODU0NDgzYWVjZmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xNzMsNyArMTcz
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU09i
amVjdD4gbV9hY3RpdmF0aW9uT2JzZXJ2ZXI7Ci0gICAgUmV0YWluUHRyPFdLUGxhY2Vob2xkZXJN
b2RhbFdpbmRvdyAqPiBtX3BsYWNlaG9sZGVyV2luZG93OworICAgIFJldGFpblB0cjxXS1BsYWNl
aG9sZGVyTW9kYWxXaW5kb3c+IG1fcGxhY2Vob2xkZXJXaW5kb3c7CiAgICAgYm9vbCBtX21vZGFs
V2luZG93SXNTaG93aW5nOwogICAgIGJvb2wgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93aW5nOwog
ICAgIHVuc2lnbmVkIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggM2Q1OGFjZjI3MzYyNTA4
ZjI3MWQ2Y2E2YmUzMzI5MDY0ZGEzOWNlNi4uYzFmY2EyYjhjNTg4NGFmN2M4ZjdiOGNiMzU0YmRl
YjBjYWFmNTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpA
QCAtMTI4LDcgKzEyOCw3IEBAIFJldGFpblB0cjxXS0VtYmVkZGVkVmlldz4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlRW1iZWRkZWRWaWV3KGNvbnN0IFJlbW90ZUxhCiAgICAgaWYgKG1faXNE
ZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbVUlWaWV3IGFsbG9j
XSBpbml0XSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fZW1iZWRkZWRWaWV3cy5lbnN1cmUocHJv
cGVydGllcy5lbWJlZGRlZFZpZXdJRCwgWyZdKCkgLT4gUmV0YWluUHRyPFVJVmlldyAqPiB7Cisg
ICAgYXV0byByZXN1bHQgPSBtX2VtYmVkZGVkVmlld3MuZW5zdXJlKHByb3BlcnRpZXMuZW1iZWRk
ZWRWaWV3SUQsIFsmXSgpIC0+IFJldGFpblB0cjxVSVZpZXc+IHsKICAgICAgICAgc3dpdGNoIChw
cm9wZXJ0aWVzLnR5cGUpIHsKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllcjogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggNGNl
MjA3MGVkYmMzNDg4ZDVjOWFmOTEyMWI0ZmJiYTdjMTYzNWI2OS4uNTgzNjE0YTBkMDRjNmVkZTFh
ZTk4YzViMTZmNjNhMzExOGU5MzEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgdWludDMy
X3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpob3N0aW5nQ29udGV4dElEKCkKIAogUmVm
PFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
bG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBjb25zdAogewotICAgIFJldGFpblB0
cjxDQUxheWVyICo+IGNsb25lZExheWVyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBjbG9uZWRM
YXllcjsKICAgICBib29sIGNvcHlDb250ZW50cyA9IHRydWU7CiAKICAgICBpZiAobGF5ZXJUeXBl
KCkgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5LmgKaW5kZXggNzQyZDRjNGM3ZmE5ZDFiN2QyMDhjMDVlNGQxZjIyNzhkYTRlM2UzMy4uOGQw
YmE2ZmQ1MGExNDY2NGY0ZTdiYzFjNTVlYjc3ZGM5Zjk4NDkyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENGTWFjaFBvcnRSZWY+IG1fZGVhZE5hbWVOb3RpZmljYXRpb25Qb3J0OwogICAgIAogICAgIFJl
dGFpblB0cjxpZD4gbV9hY3RpdmF0aW9uT2JzZXJ2ZXI7Ci0gICAgUmV0YWluUHRyPFdlYlBsYWNl
aG9sZGVyTW9kYWxXaW5kb3cgKj4gbV9wbGFjZWhvbGRlcldpbmRvdzsKKyAgICBSZXRhaW5QdHI8
V2ViUGxhY2Vob2xkZXJNb2RhbFdpbmRvdz4gbV9wbGFjZWhvbGRlcldpbmRvdzsKICAgICB1bnNp
Z25lZCBtX2lzTW9kYWw7CiAgICAgYm9vbCBtX21lbnVCYXJJc1Zpc2libGU7CiAgICAgYm9vbCBt
X2Z1bGxzY3JlZW5XaW5kb3dJc1Nob3dpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCmluZGV4IDY1MjA1ZmM0YzdkNmQxZTY4N2E4YWJlYTU0NDdhN2Y2Zjk3ZDQxMDAu
LjEwYTA4ZTk1MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSYgZGVzdFgsIGRvdWJsZSYgZGVzdFksIE5QQ29v
cmRpbmF0ZVNwYWNlIGRlc3RTcGFjZSk7CiAKICAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5z
dGFuY2U+IGNyZWF0ZUJpbmRpbmdzSW5zdGFuY2UoUmVmPEpTQzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3Q+JiYpOwotICAgIFJldGFpblB0cjxOU0RhdGEgKj4gbWFyc2hhbFZhbHVlcyhKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncyk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4g
bWFyc2hhbFZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncyk7
CiAgICAgdm9pZCBtYXJzaGFsVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGRh
dGFfdCYgcmVzdWx0RGF0YSwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCYgcmVzdWx0TGVuZ3RoKTsK
ICAgICBKU0M6OkpTVmFsdWUgZGVtYXJzaGFsVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKiB2YWx1ZURhdGEsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdmFsdWVMZW5ndGgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYzY5Mjg0MTFlYmU5
ODM0ZTNkOGQ2NDNjMWMxZmY2NDFjMzU0NTQzMC4uOTFjNjA1ZTQ4ZGRjYjIzZGI0NWQzYjVjNjVk
NTlmYmQ4M2Y0ZTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQpAQCAtMTAxLDggKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIHVpbnQzMl90
IG1fcmVxdWVzdElEOwotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3QqPiBtX3JlcXVlc3Q7Ci0g
ICAgUmV0YWluUHRyPE5TU3RyaW5nKj4gbV9mcmFtZU5hbWU7CisgICAgUmV0YWluUHRyPE5TVVJM
UmVxdWVzdD4gbV9yZXF1ZXN0OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9mcmFtZU5hbWU7
CiAgICAgYm9vbCBtX2FsbG93UG9wdXBzOwogfTsKIApAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgYm9v
bCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJ
RCwgZGF0YV90JiByZXN1bHREYXQKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVz
KCZ2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1
ZGUpOwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCi0gICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgdWludDY0X3QgbWV0
aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRp
Zmllcihwcm9wZXJ0eU5hbWVzW2ldLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKIApAQCAtMTM0
Niw3ICsxMzQ2LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmFkZFZhbHVl
VG9BcnJheShOU011dGFibGVBcnJheSAqYXJyYXksIEV4ZWNTdGEKIAogdm9pZCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Om1hcnNoYWxWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIGRhdGFfdCYgcmVzdWx0RGF0YSwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCYgcmVzdWx0
TGVuZ3RoKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwog
ICAgIAogICAgIGFkZFZhbHVlVG9BcnJheShhcnJheS5nZXQoKSwgZXhlYywgdmFsdWUpOwogCkBA
IC0xMzU5LDkgKzEzNTksOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bWFy
c2hhbFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgZAogICAgIG1lbWNweShy
ZXN1bHREYXRhLCBkYXRhLmJ5dGVzLCByZXN1bHRMZW5ndGgpOwogfQogCi1SZXRhaW5QdHI8TlNE
YXRhICo+IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bWFyc2hhbFZhbHVlcyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitSZXRhaW5QdHI8TlNEYXRhPiBOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6Om1hcnNoYWxWYWx1ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyBpKysp
CiAgICAgICAgIGFkZFZhbHVlVG9BcnJheShhcnJheS5nZXQoKSwgZXhlYywgYXJncy5hdChpKSk7
CkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZGVtYXJzaGFsVmFsdWVGcm9tQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOU0FycgogCiBKU1ZhbHVl
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBjaGFyKiB2YWx1ZURhdGEsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdmFsdWVM
ZW5ndGgpCiB7Ci0gICAgUmV0YWluUHRyPE5TRGF0YSo+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKil2YWx1ZURhdGEgbGVuZ3RoOnZhbHVl
TGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKil2YWx1ZURh
dGEgbGVuZ3RoOnZhbHVlTGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCiAgICAgTlNBcnJheSAq
YXJyYXkgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRh
OmRhdGEuZ2V0KCkgb3B0aW9uczpOU1Byb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6bnVsbHB0
ciBlcnJvcjpudWxscHRyXTsKIApAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgSlNWYWx1ZSBOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgY2hhcioKIAogdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZh
bHVlcyhFeGVjU3RhdGUqIGV4ZWMsIGRhdGFfdCB2YWx1ZXNEYXRhLCBtYWNoX21zZ190eXBlX251
bWJlcl90IHZhbHVlc0xlbmd0aCwgTWFya2VkQXJndW1lbnRCdWZmZXImIHJlc3VsdCkKIHsKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhKj4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQnl0ZXNOb0NvcHk6dmFsdWVzRGF0YSBsZW5ndGg6dmFsdWVzTGVuZ3RoIGZyZWVXaGVuRG9u
ZTpOT10pOworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OnZhbHVlc0RhdGEgbGVuZ3RoOnZhbHVlc0xlbmd0aCBm
cmVlV2hlbkRvbmU6Tk9dKTsKIAogICAgIE5TQXJyYXkgKmFycmF5ID0gW05TUHJvcGVydHlMaXN0
U2VyaWFsaXphdGlvbiBwcm9wZXJ0eUxpc3RXaXRoRGF0YTpkYXRhLmdldCgpIG9wdGlvbnM6TlNQ
cm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0Om51bGxwdHIgZXJyb3I6bnVsbHB0cl07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCmluZGV4IGZlNTA4ODYwZWM3OTc5ZGQ2ZDAwNjUxMGE1OGQ4MGVkNmU0Y2MxNjku
LjIwMmM2ZGVhZjEzZDA3YzZlM2E1Njk4YjFjZGI1OWExOWI1ZGEwMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5t
bQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBJbnZva2VUeXBlIHR5cGUsIHVpbnQ2NF90IGlkCiAgICAgaWYgKCFt
X2luc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmV0
YWluUHRyPE5TRGF0YSo+IGFyZ3VtZW50cyhtX2luc3RhbmNlUHJveHktPm1hcnNoYWxWYWx1ZXMo
ZXhlYywgYXJncykpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGFyZ3VtZW50cyhtX2luc3RhbmNl
UHJveHktPm1hcnNoYWxWYWx1ZXMoZXhlYywgYXJncykpOwogCiAgICAgdWludDMyX3QgcmVxdWVz
dElEID0gbV9pbnN0YW5jZVByb3h5LT5uZXh0UmVxdWVzdElEKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQubW0KaW5kZXggY2IwODNiZmMxMjBjYzY5YWIyODZhZTI4NDQxNzUzOGQyYWIyYzQ3
Mi4uMmNmNzE1ZTJkOTBkZmU3NjY4NDg4YmMxNzQ1MWIxM2VkYjJlMzBmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQubW0KQEAgLTU2LDcgKzU2LDcgQEAgQGVuZAogQGludGVyZmFjZSBXZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkFsbG93RGVueVBvbGljeUxp
c3RlbmVyPgogewogICAgIFJlZlB0cjxHZW9sb2NhdGlvbj4gX2dlb2xvY2F0aW9uOwotICAgIFJl
dGFpblB0cjxXZWJWaWV3ICo+IF93ZWJWaWV3OworICAgIFJldGFpblB0cjxXZWJWaWV3PiBfd2Vi
VmlldzsKIH0KIC0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2Nh
dGlvbiBmb3JXZWJWaWV3OihXZWJWaWV3Kil3ZWJWaWV3OwogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDY0NWIxYjI0YWEy
NmIwMTY2OGI4ZjE1MmRiN2IxM2M1NzIzOGY2ZmUuLjUxODAyY2MxODBkYzY1YTFhNTMwZmZlZjc3
NjRmNzhiNDBhMmRkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KQEAgLTI0Niw3ICsyNDYsNyBAQCAtICh2b2lkKV9maW5pc2hlZExv
YWRpbmcKIC0gKHZvaWQpX3JlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogewogICAgIC8vIHBy
b3RlY3Qgc2VsZiB0ZW1wb3JhcmlseSwgYXMgdGhlIGJyaWRnZSByZWNlaXZlZERhdGEgY2FsbCBj
b3VsZCByZW1vdmUgb3VyIGxhc3QgcmVmCi0gICAgUmV0YWluUHRyPFdlYkRhdGFTb3VyY2UqPiBw
cm90ZWN0KHNlbGYpOworICAgIFJldGFpblB0cjxXZWJEYXRhU291cmNlPiBwcm90ZWN0KHNlbGYp
OwogICAgIAogICAgIFtbc2VsZiByZXByZXNlbnRhdGlvbl0gcmVjZWl2ZWREYXRhOmRhdGEgd2l0
aERhdGFTb3VyY2U6c2VsZl07CiAgICAgW1tbW3NlbGYgd2ViRnJhbWVdIGZyYW1lVmlld10gZG9j
dW1lbnRWaWV3XSBkYXRhU291cmNlVXBkYXRlZDpzZWxmXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0YjY2MTI3ODQ3MGQzYTRiYzhlNmVlNTViMWNk
MzM1MDA0MGY2ZTlkLi5mMjQ3YjAzMDEyYWY4MzUzYmZjNzllYzIyMDY0OWZjNWE5NTlmMTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zNjYxLDcg
KzM2NjEsNyBAQCAtICh2b2lkKV9kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yOihOU0Vy
cm9yICopZXJyb3IgZm9yRnJhbWU6KFdlYkZyYW1lICopZgogCiAtIChOU0NhY2hlZFVSTFJlc3Bv
bnNlICopX2NhY2hlZFJlc3BvbnNlRm9yVVJMOihOU1VSTCAqKVVSTAogewotICAgIFJldGFpblB0
cjxOU011dGFibGVVUkxSZXF1ZXN0ICo+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJM
UmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZVVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6VVJMXSk7CiAgICAgW3JlcXVlc3QgX3dlYl9zZXRIVFRQVXNlckFnZW50
OltzZWxmIHVzZXJBZ2VudEZvclVSTDpVUkxdXTsKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpj
YWNoZWRSZXNwb25zZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDI4NDJkODAwMTgyYWQ3MWY2YWExMzA4ZTQ1ZTQ3YTZjYjgyNDgxZTMuLjA2
YzVlZmE5OWIwNTcxZmI1ZDFjYTIwNGRiNDVjNGNiNWFiMjQzNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxOC0x
Mi0yOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFByZWZl
ciBSZXRhaW5QdHI8TlNPYmplY3Q+IHRvIFJldGFpblB0cjxOU09iamVjdCAqPgorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTkzMDU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5
OgorICAgICAgICAtIElnbm9yZSB1c2Ugb2YgbmV3IHJ1bnRpbWUvcmV0YWlucHRyIGNoZWNrIGlu
CisgICAgICAgICAgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1t
IHNpbmNlIGl0CisgICAgICAgICAgY29udGFpbnMgdGVzdHMgdG8gZW5zdXJlIFJldGFpblB0cjxO
U09iamVjdCAqPiBpcyBjb21wYXRpYmxlCisgICAgICAgICAgd2l0aCBSZXRhaW5QdHI8TlNPYmpl
Y3Q+LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6
CisgICAgICAgIChjaGVja19sYW5ndWFnZSk6CisgICAgICAgIChDcHBDaGVja2VyKToKKyAgICAg
ICAgLSBBZGQgY2hlY2tlciBmb3IgdXNlIG9mICcqJyBpbiBSZXRhaW5QdHI8PiB0eXBlLiAgQSBm
b3IgbG9vcAorICAgICAgICAgIHdhcyB1c2VkIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVnZXggc28g
dGhhdCBhbmdsZSBicmFja2V0cworICAgICAgICAgIGNvdWxkIGJlIG1hdGNoZWQgdXAgd2hlbiBj
aGVja2luZyB0aGUgdHlwZSBjb250YWluZWQgd2l0aGluCisgICAgICAgICAgdGhlIFJldGFpblB0
cjw+IHR5cGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cF91bml0dGVzdC5weToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6CisgICAgICAgIC0gQWRkIHVu
aXQgdGVzdCBmb3IgbmV3IHJ1bnRpbWUvcmV0YWlucHRyIGNoZWNrLgorCisgICAgICAgICogVGVz
dFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLmg6CisgICAgICAg
IC0gUmVtb3ZlICcqJyBmcm9tIFJldGFpblB0cjw+IHR5cGUuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
LSBBZGQgY2YvUmV0YWluUHRyLmNwcCBiYWNrIHRvIFRlc3RXVEZMaWJyYXJ5IHRhcmdldCEgIFRo
aXMKKyAgICAgICAgICByZWdyZXNzZWQgaW4gcjIwMTkzOC4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgLSBVcGRhdGUgdGVzdHMgdG8gbWF0Y2ggUmV0YWluUHRyLm1tIHRl
c3RzIChleGNlcHQgZm9yIHRoZQorICAgICAgICAgIGAqU2ltaWxhck5TVHlwZWAgdGVzdHMgc2lu
Y2UgdGhlcmUgaXMgbm8gQ0YgZXF1aXZhbGVudCBvZgorICAgICAgICAgIFJldGFpblB0cjxOU1N0
cmluZz4gYW5kIFJldGFpblB0cjxOU1N0cmluZyAqPikuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9ucy9SZXRhaW5QdHIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgLSBVcGRhdGUgdGVzdHMgdG86CisgICAgICAgICAgLSBOb3QgY29uZmxp
Y3QgYnkgbmFtZSB3aXRoIGVxdWl2YWxlbnQgQ0YgdGVzdHMgaW4KKyAgICAgICAgICAgIFJldGFp
blB0ci5jcHAuCisgICAgICAgICAgLSBBZGQgdGVzdCBjYXNlcyBmb3IgUmV0YWluUHRyPE5TT2Jq
ZWN0PiwKKyAgICAgICAgICAgIFJldGFpblB0cjxOU09iamVjdCAqPiBhbmQgUmV0YWluUHRyPGlk
PiB3ZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAgIC0gQWRkIGAqU2ltaWxhck5TVHlwZWAgdGVz
dHMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbgorICAgICAgICAgICAgUmV0YWluUHRyPE5TT2JqZWN0
PiBhbmQgUmV0YWluUHRyPE5TT2JqZWN0ICo+LgorICAgICAgICAgIC0gQ2hhbmdlIGAwYCB0byBg
bmlsYCBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAtIFJlLWFscGhhYmV0aXplIHRoZSB0ZXN0
cyBieSBuYW1lLgorICAgICAgICAgIC0gQWRkIE9wdGlvbmFsPFJldGFpblB0cjw+PiB0ZXN0cy4K
KyAgICAgICAgICAtIEFkZCByZXRhaW5QdHIoKSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1b
RG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAtIFJlbW92ZSAnKicgZnJvbSBSZXRhaW5QdHI8PiB0eXBlLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1t
OgorICAgICAgICAoVEVTVChXZWJLaXQsIEpJVEVuYWJsZWQpKToKKyAgICAgICAgLSBBZGQgbWlz
c2luZyBXVEZNb3ZlKCkuICBBcHBhcmVudGx5IGEgdGVtcG9yYXJ5IHdhcyBiZWluZworICAgICAg
ICAgIGNyZWF0ZWQgYmVmb3JlIGluIHRoZSBhcmd1bWVudCBsaXN0IGR1ZSB0byBtaXNtYXRjaGVk
CisgICAgICAgICAgUmV0YWluUHRyPD4gdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250
cm9sc01hbmFnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW06CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRz
Q29jb2EubW06CisgICAgICAgIChXVFI6OnJlc291cmNlc0RpcmVjdG9yeVVSTCk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1Mu
bW06CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToK
KyAgICAgICAgLSBSZW1vdmUgJyonIGZyb20gUmV0YWluUHRyPD4gdHlwZS4KKwogMjAxOC0xMi0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlc3VycmVjdCBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weQppbmRleCAxNzQyNDkzNGUxODdmZDdkYzMxMThiZjJjNDFkNmRmNmNmMmY5NjBhLi5m
MzA3NjUwMWU1OGNiMzRjNjhiYjgwZWJiZGY1YTVmMmFlMTBlMTE0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0xNDIsNiArMTQyLDkgQEAgX1BBVEhfUlVMRVNf
U1BFQ0lGSUVSID0gWwogICAgICAgb3MucGF0aC5qb2luKCdUb29scycsICdEdW1wUmVuZGVyVHJl
ZScsICdUZXN0TmV0c2NhcGVQbHVnSW4nKV0sCiAgICAgIFsiLWJ1aWxkL2luY2x1ZGUiLAogICAg
ICAgIi1yZWFkYWJpbGl0eS9uYW1pbmciXSksCisgICAgKFsgICMgSWdub3JlIHVzZSBvZiBSZXRh
aW5QdHI8TlNPYmplY3QgKj4gZm9yIHRlc3RzIHRoYXQgZW5zdXJlIGl0cyBjb21wYXRpYmlsaXR5
IHdpdGggUmV0ZWFpblB0cjxOU09iamVjdD4uCisgICAgICBvcy5wYXRoLmpvaW4oJ1Rvb2xzJywg
J1Rlc3RXZWJLaXRBUEknLCAnVGVzdHMnLCAnV1RGJywgJ25zJywgJ1JldGFpblB0ci5tbScpXSwK
KyAgICAgWyItcnVudGltZS9yZXRhaW5wdHIiXSksCiAgICAgKFsgICMgVGhlcmUgaXMgbm8gY2xl
YW4gd2F5IHRvIGF2b2lkICJ5eV8qIiBuYW1lcyB1c2VkIGJ5IGZsZXguCiAgICAgICBvcy5wYXRo
LmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ2NzcycsICdDU1NQYXJzZXIuY3BwJyksCiAgICAg
ICAjIFRlc3RXZWJLaXRBUEkgdXNlcyBmdW5ueSBtYWNyb3MgbGlrZSBFWFBFQ1RfV0tfU1RSRVEu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDhj
ZDJjMDUyNjgyZTNjZTM3ZDQyNzBlODAxOWRmYmQ2NDc3M2VjMWMuLmNlZDk3M2Y4MmVlZDk3ODQ0
OTZiYzI1NWQ0OGYyMjFjOTI1OWE1MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0zMzEzLDYgKzMzMTMsMjUgQEAgZGVmIGNoZWNrX2xhbmd1
YWdlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBp
bmNsdWRlX3MKICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL2Rpc3BhdGNoX3Nl
dF90YXJnZXRfcXVldWUnLCA1LAogICAgICAgICAgICAgICAnTmV2ZXIgdXNlIGRpc3BhdGNoX3Nl
dF90YXJnZXRfcXVldWUuICBVc2UgZGlzcGF0Y2hfcXVldWVfY3JlYXRlX3dpdGhfdGFyZ2V0IGlu
c3RlYWQuJykKIAorICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihSZXRhaW5QdHI8LiopJywgbGlu
ZSkKKyAgICBpZiBtYXRjaGVkOgorICAgICAgICBtYXRjaF9saW5lID0gbWF0Y2hlZC5ncm91cCgx
KQorICAgICAgICBuZXN0ZWRfYW5nbGVfYnJhY2tldF9jb3VudCA9IDEKKyAgICAgICAgcHJldmlv
dXNfY2xvc2luZ19hbmdsZV9icmFja2V0X2luZGV4ID0gLTEKKyAgICAgICAgY2xvc2luZ19hbmds
ZV9icmFja2V0X2luZGV4ID0gOSAjIFVzZWQgaWYgb25seSBvbmUgcGFpciBvZiBhbmdsZSBicmFj
a2V0cy4KKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKDEwLCBsZW4obWF0Y2hfbGluZSkgLSAxKToK
KyAgICAgICAgICAgIGlmIG1hdGNoX2xpbmVbaV0gPT0gJzwnOgorICAgICAgICAgICAgICAgIG5l
c3RlZF9hbmdsZV9icmFja2V0X2NvdW50ICs9IDEKKyAgICAgICAgICAgIGlmIG1hdGNoX2xpbmVb
aV0gPT0gJz4nOgorICAgICAgICAgICAgICAgIG5lc3RlZF9hbmdsZV9icmFja2V0X2NvdW50IC09
IDEKKyAgICAgICAgICAgICAgICBwcmV2aW91c19jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5kZXgg
PSBjbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5kZXgKKyAgICAgICAgICAgICAgICBjbG9zaW5nX2Fu
Z2xlX2JyYWNrZXRfaW5kZXggPSBpCisgICAgICAgICAgICBpZiBuZXN0ZWRfYW5nbGVfYnJhY2tl
dF9jb3VudCA9PSAwOgorICAgICAgICAgICAgICAgIGlmICIqIiBpbiBtYXRjaF9saW5lW3ByZXZp
b3VzX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbmRleDpjbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5k
ZXhdOgorICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvcmV0
YWlucHRyJywgNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNob3Vs
ZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8TlNT
dHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicpCisgICAgICAgICAgICAgICAgYnJlYWsK
KwogICAgICMgQ2hlY2sgZm9yIHN1c3BpY2lvdXMgdXNhZ2Ugb2YgImlmIiBsaWtlCiAgICAgIyB9
IGlmIChhID09IGIpIHsKICAgICBpZiBzZWFyY2gocidcfVxzKmlmXHMqXCgnLCBsaW5lKToKQEAg
LTQwNTIsNiArNDA3MSw3IEBAIGNsYXNzIENwcENoZWNrZXIob2JqZWN0KToKICAgICAgICAgJ3J1
bnRpbWUvcHJpbnRmJywKICAgICAgICAgJ3J1bnRpbWUvcHJpbnRmX2Zvcm1hdCcsCiAgICAgICAg
ICdydW50aW1lL3JlZmVyZW5jZXMnLAorICAgICAgICAncnVudGltZS9yZXRhaW5wdHInLAogICAg
ICAgICAncnVudGltZS9ydHRpJywKICAgICAgICAgJ3J1bnRpbWUvc2l6ZW9mJywKICAgICAgICAg
J3J1bnRpbWUvc29mdC1saW5rZWQtYWxsb2MnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRleCAzMThkMWMzZTdhZDE4
ZDIxNGQ5ZTUwMjAyZDMwOWIyMGYzOWNkZTI5Li5kNmFkM2IyM2Q1M2RkYmM3MGRhNTc2ZDQwNWQx
MzNmMjZmODI5ZDgyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAtMTY2Nyw2ICsxNjY3LDI3IEBAIGNsYXNzIENw
cFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICcgIFtydW50aW1lL2Rp
c3BhdGNoX3NldF90YXJnZXRfcXVldWVdIFs1XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2dsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlX3dpdGhfdGFyZ2V0KCJNeSBTZXJp
YWwgUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVl
dWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfSElHSCwgMCkpOycsICcnKQogCisgICAgZGVmIHRl
c3RfcmV0YWlucHRyX3BvaW50ZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisg
ICAgICAgICAgICAnJydSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmKj4gbV9jZlJ1bkxvb3A7JycnLAor
ICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRo
IFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+LicKKyAgICAgICAgICAgICcgIFtydW50aW1lL3JldGFpbnB0cl0gWzVdJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9jZlJ1bkxvb3A7Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnJydSZXRhaW5QdHI8
TlNSdW5Mb29wKj4gbV9uc1J1bkxvb3A7JycnLAorICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNo
b3VsZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8
TlNTdHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicKKyAgICAgICAgICAgICcgIFtydW50
aW1lL3JldGFpbnB0cl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmV0YWluUHRy
PE5TUnVuTG9vcD4gbV9uc1J1bkxvb3A7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
CisgICAgICAgICAgICAnJydSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNEaWN0aW9uYXJ5ICo+
ICo+IG1fZWRpdG9yU3RhdGVIaXN0b3J5OycnJywKKyAgICAgICAgICAgICdSZXRhaW5QdHI8PiBz
aG91bGQgbmV2ZXIgY29udGFpbiBhIHR5cGUgd2l0aCBcJypcJy4gQ29ycmVjdDogUmV0YWluUHRy
PE5TU3RyaW5nPiwgUmV0YWluUHRyPENGU3RyaW5nUmVmPi4nCisgICAgICAgICAgICAnICBbcnVu
dGltZS9yZXRhaW5wdHJdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICAnJydSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TQXJyYXk8TlNTdHJp
bmcgKj4+ICo+IGRpY3Rpb25hcnk7JycnLAorICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNob3Vs
ZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8TlNT
dHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicKKyAgICAgICAgICAgICcgIFtydW50aW1l
L3JldGFpbnB0cl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnJydSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TQXJyYXk8TlNTdHJpbmcgKj4+PiBkaWN0aW9uYXJ5
OycnJywgJycpCisKICAgICAjIFZhcmlhYmxlLWxlbmd0aCBhcnJheXMgYXJlIG5vdCBwZXJtaXR0
ZWQuCiAgICAgZGVmIHRlc3RfdmFyaWFibGVfbGVuZ3RoX2FycmF5X2RldGVjdGlvbihzZWxmKToK
ICAgICAgICAgZXJybXNnID0gKCdEbyBub3QgdXNlIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMuICBV
c2UgYW4gYXBwcm9wcmlhdGVseSBuYW1lZCAnCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLmggYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVy
TWFjLmgKaW5kZXggMmNkMmQ1NWRmYjVkOWRkZmFlY2MwMWRlYmNkNTU2OWFlZDFjZDdlYS4uOTAy
OGYwMGI4YjU3MzYzMTdlZWViMDU1OGVhOTM4OGRhMzkwNjQ0YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1h
Yy5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9F
dmVudFNlcmlhbGl6ZXJNYWMuaApAQCAtMzgsOCArMzgsOCBAQAogQGVuZAogCiBAaW50ZXJmYWNl
IEV2ZW50U3RyZWFtUGxheWVyIDogTlNPYmplY3QgewotICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheSAqPiBfcmVtYWluaW5nRXZlbnREaWN0aW9uYXJpZXM7Ci0gICAgUmV0YWluUHRyPE5TV2lu
ZG93ICo+IF93aW5kb3c7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfcmVtYWluaW5n
RXZlbnREaWN0aW9uYXJpZXM7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiBfd2luZG93OwogICAg
IEJsb2NrUHRyPHZvaWQgKCk+IF9jb21wbGV0aW9uSGFuZGxlcjsKICAgICB1aW50NjRfdCBfc3Rh
cnRUaW1lOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0aW5nVGVzdEhh
cm5lc3MuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLmgKaW5kZXgg
MzNlMjZjMzYyNDcyMTQwMGU5MDQwMGQ4MjU5ZWE3N2UxZjQ4NDU1ZC4uMjlhZjMyMTYxYzc1MzBm
MjZlYjYxYWIxNzMzMzE3YzFkMWQxM2RlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9FZGl0aW5nVGVzdEhhcm5lc3MuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdU
ZXN0SGFybmVzcy5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oPgogCiBAaW50ZXJmYWNlIEVkaXRpbmdUZXN0SGFybmVzcyA6IE5TT2JqZWN0
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNE
aWN0aW9uYXJ5ICo+ICo+IF9lZGl0b3JTdGF0ZUhpc3Rvcnk7Ci0gICAgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXcgKj4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TRGlj
dGlvbmFyeSAqPj4gX2VkaXRvclN0YXRlSGlzdG9yeTsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2Vi
Vmlldz4gX3dlYlZpZXc7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRl
c3RXS1dlYlZpZXcgKil3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzE0MzI4
ZmVkNGVhMTExOWZlMzVkMWE1OWNmNTRkY2FlZWU5MjI3Li41NGE4OWI4MGMzZWY4ZWNhZmRhMTFj
MjljZTc4M2I4MjQ2YjM4ZDFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcxLDYgKzE3
MSw3IEBACiAJCTQ0MzNBMzk2MjA4MDQ0MTQwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRU
ZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLzsg
fTsKIAkJNDQ4MTdBMkYxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1l
bnRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZv
Lm1tICovOyB9OwogCQk0NDhEN0U0NzFFQTZDNTU1MDBFQ0M3NTYgLyogRW52aXJvbm1lbnRVdGls
aXRpZXNUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0OEQ3RTQ1MUVBNkM1NTUwMEVDQzc1NiAvKiBFbnZpcm9ubWVudFV0aWxpdGllc1Rlc3Qu
Y3BwICovOyB9OworCQk0NEFDOEJDNjIxRDAyNDVBMDBDQUZCMzQgLyogUmV0YWluUHRyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDI5QjE2MTQ4
NkFENjQwMDgxN0RBOSAvKiBSZXRhaW5QdHIuY3BwICovOyB9OwogCQk0NjEyQzJCOTIxMEE2QUNF
MDBCNzg4QTYgLyogTG9hZEZpbGVUaGVuUmVsb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxMkMyQjgyMTBBNkFCRjAwQjc4OEE2IC8qIExvYWRG
aWxlVGhlblJlbG9hZC5tbSAqLzsgfTsKIAkJNDYzOTdCOTUxREMyQzg1MDAwOUE3OEFFIC8qIERP
TU5vZGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjM5N0I5NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLzsgfTsKIAkJNDY0N0IxMjYx
RUJBM0I4NTAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VG
IC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovOyB9OwpAQCAtMzc4MSw2ICszNzgyLDcgQEAK
IAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREVENzFEMEE1OTBDMDBGRUJDRjMgLyogUmVmTG9nZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERjE2MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZQdHIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDRBQzhCQzYyMUQwMjQ1QTAwQ0FGQjM0IC8qIFJldGFpblB0ci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyNDFEMEE1OTBDMDBGRUJDRjMgLyogUmV0YWlu
UHRyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1
bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8q
IFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ci5jcHAKaW5kZXggMDAzM2Yz
YjhiYzY4OWIyNzFlZDA2NGQ0NzhiOGI2YjY3NTI0NzA4NS4uYTRiNTViYTBiMDZmNGM3ZmYwYTM4
Mjc5OWYyMWExN2Y1ZmZkNTRmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvY2YvUmV0YWluUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9jZi9SZXRhaW5QdHIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE0ICsyOSwxNTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3Rz
Q0YuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFJldGFpblB0ciwgQWRv
cHRDRikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZm9vID0gYWRvcHRDRihDRkFycmF5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bGxwdHIpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gYXJyYXkxID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bGxwdHIpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
Q0ZHZXRSZXRhaW5Db3VudChhcnJheTEuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgQ0ZBcnJh
eUdldENvdW50KGFycmF5MS5nZXQoKSkpOwogCi0gICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWlu
Q291bnQoZm9vLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gYXJyYXkyID0gYWRv
cHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bGxw
dHIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChhcnJheTIuZ2V0KCkpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgQ0ZBcnJheUdldENvdW50KGNoZWNrZWRfY2ZfY2FzdDxDRkFycmF5
UmVmPihhcnJheTIuZ2V0KCkpKSk7Cit9CisKK1RFU1QoUmV0YWluUHRyLCBDb25zdHJ1Y3Rpb25G
cm9tTXV0YWJsZUNGVHlwZSkKK3sKKyAgICBDRk11dGFibGVTdHJpbmdSZWYgc3RyaW5nID0gQ0ZT
dHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCBDRlNUUigiZm9v
IikpOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3Ry
dWN0b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2Ug
bW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIENGVHlwZVJlZiB0
aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwdHIgPSBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPihzdHJpbmcpOworCisg
ICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJp
bmdSZWY+IHRlbXAgPSBzdHJpbmc7CisKKyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWlu
UHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHB0cjIo
V1RGTW92ZSh0ZW1wKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIyKTsKKyAgICBFWFBF
Q1RfRVEoKENGU3RyaW5nUmVmKW51bGxwdHIsIHRlbXApOworfQorCitURVNUKFJldGFpblB0ciwg
Q29uc3RydWN0aW9uRnJvbVNhbWVDRlR5cGUpCit7CisgICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0g
Q0ZTVFIoImZvbyIpOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1v
dmUgY29uc3RydWN0b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0
IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIENG
VHlwZVJlZiB0aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwdHIgPSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KHN0cmluZyk7CisK
KyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIpOworCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0ZW1wID0gc3RyaW5nOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidz
IG1vdmUgY29uc3RydWN0b3IuCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwdHIyKFdURk1v
dmUodGVtcCkpOworCisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyMik7CisgICAgRVhQRUNUX0VR
KChDRlN0cmluZ1JlZiludWxscHRyLCB0ZW1wKTsKK30KKworVEVTVChSZXRhaW5QdHIsIE1vdmVB
c3NpZ25tZW50RnJvbU11dGFibGVDRlR5cGUpCit7CisgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHN0
cmluZyA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwg
Q0ZTVFIoImZvbyIpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHB0cjsKKworICAgIC8v
IFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3Iu
CisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQg
dGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIENGVHlwZVJlZiB0aGF0IGxv
Z3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgcHRyID0gUmV0YWluUHRyPENGTXV0
YWJsZVN0cmluZ1JlZj4oc3RyaW5nKTsKKworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7CisK
KyAgICBwdHIgPSBudWxscHRyOworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHRl
bXAgPSBzdHJpbmc7CisKKyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92
ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIHB0ciA9IFdURk1vdmUodGVtcCk7CisKKyAgICBF
WFBFQ1RfRVEoc3RyaW5nLCBwdHIpOworICAgIEVYUEVDVF9FUSgoQ0ZTdHJpbmdSZWYpbnVsbHB0
ciwgdGVtcCk7Cit9CisKK1RFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdubWVudEZyb21TYW1lQ0ZU
eXBlKQoreworICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IENGU1RSKCJmb28iKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHB0cjsKKworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRh
aW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9l
c24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNl
IGEgbW9jaworICAgIC8vIENGVHlwZVJlZiB0aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2Ug
Y2FsbHMuCisgICAgcHRyID0gUmV0YWluUHRyPENGU3RyaW5nUmVmPihzdHJpbmcpOworCisgICAg
RVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKworICAgIHB0ciA9IG51bGxwdHI7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB0ZW1wID0gc3RyaW5nOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52
b2tlIFJldGFpblB0cidzIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICBwdHIgPSBXVEZN
b3ZlKHRlbXApOworCisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKyAgICBFWFBFQ1RfRVEo
KENGU3RyaW5nUmVmKW51bGxwdHIsIHRlbXApOworfQorCitURVNUKFJldGFpblB0ciwgT3B0aW9u
YWxSZXRhaW5QdHJDRikKK3sKKyAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBhZG9wdENGKCku
CisgICAgZmxvYXQgdmFsdWUgPSAzLjE0MTU5MjY1MzU7CisgICAgT3B0aW9uYWw8UmV0YWluUHRy
PENGTnVtYmVyUmVmPj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIEVY
UEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgp
KSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBvYmplY3QxID0gb3B0aW9uYWxPYmplY3Qx
LnZhbHVlKCk7CisgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3Qx
KTsKKworICAgIC8vIFRlc3QgYXNzaWdubWVudCBmcm9tIHJldGFpblB0cigpLgorICAgIE9wdGlv
bmFsPFJldGFpblB0cjxDRk51bWJlclJlZj4+IG9wdGlvbmFsT2JqZWN0MiA9IHJldGFpblB0cihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2
YWx1ZSkpOworICAgIENGUmVsZWFzZShvcHRpb25hbE9iamVjdDIudmFsdWUoKS5nZXQoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQob3B0aW9uYWxPYmplY3QyLnZhbHVlKCku
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG9iamVjdDIgPSBvcHRpb25hbE9i
amVjdDIudmFsdWUoKTsKKyAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3QyLnZhbHVlKCksIG9i
amVjdDIpOworCisgICAgRVhQRUNUX05FKG9iamVjdDEsIG9iamVjdDIpOworCisgICAgLy8gVGVz
dCBhc3NpZ25tZW50IGZyb20gT3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4uCisgICAg
b3B0aW9uYWxPYmplY3QxID0gb3B0aW9uYWxPYmplY3QyOworICAgIEVYUEVDVF9UUlVFKG9wdGlv
bmFsT2JqZWN0MS52YWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDEudmFs
dWUoKS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmpl
Y3QyKTsKKyAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDIudmFsdWUoKSk7CisgICAgRVhQ
RUNUX1RSVUUob3B0aW9uYWxPYmplY3QyLnZhbHVlKCkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShv
cHRpb25hbE9iamVjdDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICAvLyBSZXNldCBhZnRlciBh
c3NpZ25tZW50IHRlc3QuCisgICAgb3B0aW9uYWxPYmplY3QxID0gb2JqZWN0MTsKKyAgICBFWFBF
Q1RfRVEob3B0aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDEpOworICAgIEVYUEVDVF9FUShv
cHRpb25hbE9iamVjdDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICAvLyBUZXN0IG1vdmUgZnJv
bSBPcHRpb25hbDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pi4KKyAgICBvcHRpb25hbE9iamVjdDEg
PSBXVEZNb3ZlKG9wdGlvbmFsT2JqZWN0Mik7CisgICAgRVhQRUNUX1RSVUUob3B0aW9uYWxPYmpl
Y3QxLnZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdl
dCgpKTsKKyAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDIpOwor
ICAgIEVYUEVDVF9GQUxTRShvcHRpb25hbE9iamVjdDIudmFsdWUoKSk7Cit9CisKK1RFU1QoUmV0
YWluUHRyLCBSZXRhaW5QdHJDRikKK3sKKyAgICBmbG9hdCB2YWx1ZSA9IDMuMTQxNTkyNjUzNTsK
KyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG9iamVjdDEgPSByZXRhaW5QdHIoQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsK
KyAgICBDRlJlbGVhc2Uob2JqZWN0MS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0
YWluQ291bnQob2JqZWN0MS5nZXQoKSkpOworCisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gb2Jq
ZWN0MiA9IHJldGFpblB0cihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIENGUmVsZWFzZShvYmplY3QyLmdldCgpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvYmplY3QyLmdldCgpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL25zL1JldGFpblB0ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL25zL1JldGFpblB0ci5tbQppbmRleCBmOTI1Y2U3Y2Y5NTkzNTAxNmQ1M2VhNjMwMTgy
YTFkMTgyMDU5N2ZjLi4yYzZmMGU2MWZmNWJkZjA5NDQxMTI5YmM2MjVkMGU2MmM2NDg3YjUwIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ucy9SZXRhaW5QdHIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDM0ICszNCw5NyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoUmV0YWlu
UHRyLCBBZG9wdE5TKQogewotICAgIFJldGFpblB0cjxOU09iamVjdD4gZm9vID0gYWRvcHROUyhb
W05TT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBvYmplY3Qx
ID0gYWRvcHROUyhbW05TT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgRVhQRUNUX0VRKDEsIENG
R2V0UmV0YWluQ291bnQob2JqZWN0MS5nZXQoKSkpOwogCi0gICAgRVhQRUNUX0VRKDEsIENGR2V0
UmV0YWluQ291bnQoZm9vLmdldCgpKSk7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0ICo+IG9iamVj
dDIgPSBhZG9wdE5TKFtbTlNPYmplY3QgYWxsb2NdIGluaXRdKTsKKyAgICBFWFBFQ1RfRVEoMSwg
Q0ZHZXRSZXRhaW5Db3VudChvYmplY3QyLmdldCgpKSk7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG9i
amVjdDMgPSBhZG9wdE5TKFtbTlNPYmplY3QgYWxsb2NdIGluaXRdKTsKKyAgICBFWFBFQ1RfRVEo
MSwgQ0ZHZXRSZXRhaW5Db3VudChvYmplY3QzLmdldCgpKSk7CiB9CiAKLVRFU1QoUmV0YWluUHRy
LCBNb3ZlQXNzaWdubWVudEZyb21TYW1lVHlwZSkKK1RFU1QoUmV0YWluUHRyLCBDb25zdHJ1Y3Rp
b25Gcm9tTXV0YWJsZU5TVHlwZSkKK3sKKyAgICBOU011dGFibGVTdHJpbmcgKnN0cmluZyA9IFtO
U011dGFibGVTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ImZvbyJdOworCisgICAgLy8gVGhp
cyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3RydWN0b3IuCisgICAgLy8gRklY
TUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBX
ZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIE5TT2JqZWN0IHRoYXQgbG9ncyAtcmV0YWluIGFu
ZCAtcmVsZWFzZSBjYWxscy4KKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0ciA9IFJldGFpblB0
cjxOU011dGFibGVTdHJpbmc+KHN0cmluZyk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIp
OworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0cmluZz4gdGVtcCA9IHN0cmluZzsKKworICAg
IC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgorICAg
IFJldGFpblB0cjxOU1N0cmluZz4gcHRyMihXVEZNb3ZlKHRlbXApKTsKKworICAgIEVYUEVDVF9F
UShzdHJpbmcsIHB0cjIpOworICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcgKiluaWwsIHRlbXApOwor
fQorCitURVNUKFJldGFpblB0ciwgQ29uc3RydWN0aW9uRnJvbVNhbWVOU1R5cGUpCiB7CiAgICAg
TlNTdHJpbmcgKnN0cmluZyA9IEAiZm9vIjsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0cjsK
IAotICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQg
b3BlcmF0b3IuCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29u
c3RydWN0b3IuCiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQg
d2UgbW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jawogICAgIC8vIE5TT2JqZWN0
IHRoYXQgbG9ncyAtcmV0YWluIGFuZCAtcmVsZWFzZSBjYWxscy4KLSAgICBwdHIgPSBSZXRhaW5Q
dHI8TlNTdHJpbmc+KHN0cmluZyk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHIgPSBSZXRh
aW5QdHI8TlNTdHJpbmc+KHN0cmluZyk7CiAKICAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIpOwog
Ci0gICAgcHRyID0gMDsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHRlbXAgPSBzdHJpbmc7CiAK
LSAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50IG9w
ZXJhdG9yLgotICAgIHB0ciA9IFdURk1vdmUodGVtcCk7CisgICAgLy8gVGhpcyBzaG91bGQgaW52
b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3RydWN0b3IuCisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBwdHIyKFdURk1vdmUodGVtcCkpOworCisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyMik7Cisg
ICAgRVhQRUNUX0VRKChOU1N0cmluZyAqKW5pbCwgdGVtcCk7Cit9CisKK1RFU1QoUmV0YWluUHRy
LCBDb25zdHJ1Y3Rpb25Gcm9tU2ltaWxhck5TVHlwZSkKK3sKKyAgICBOU1N0cmluZyAqc3RyaW5n
ID0gQCJmb28iOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUg
Y29uc3RydWN0b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRo
YXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIE5TT2Jq
ZWN0IHRoYXQgbG9ncyAtcmV0YWluIGFuZCAtcmVsZWFzZSBjYWxscy4KKyAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IHB0ciA9IFJldGFpblB0cjxOU1N0cmluZyAqPihzdHJpbmcpOwogCiAgICAgRVhQ
RUNUX0VRKHN0cmluZywgcHRyKTsKLSAgICBFWFBFQ1RfRVEoKE5TU3RyaW5nICopMCwgdGVtcCk7
CisKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmcgKj4gdGVtcCA9IHN0cmluZzsKKworICAgIC8vIFRo
aXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgorICAgIFJldGFp
blB0cjxOU1N0cmluZz4gcHRyMihXVEZNb3ZlKHRlbXApKTsKKworICAgIEVYUEVDVF9FUShzdHJp
bmcsIHB0cjIpOworICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcgKiluaWwsIHRlbXApOwogfQogCi1U
RVNUKFJldGFpblB0ciwgTW92ZUFzc2lnbm1lbnRGcm9tU2ltaWxhclR5cGUpCitURVNUKFJldGFp
blB0ciwgQ29uc3RydWN0aW9uRnJvbVNpbWlsYXJOU1R5cGVSZXZlcnNlZCkKK3sKKyAgICBOU1N0
cmluZyAqc3RyaW5nID0gQCJmb28iOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFp
blB0cidzIG1vdmUgY29uc3RydWN0b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1
YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jawor
ICAgIC8vIE5TT2JqZWN0IHRoYXQgbG9ncyAtcmV0YWluIGFuZCAtcmVsZWFzZSBjYWxscy4KKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmcgKj4gcHRyID0gUmV0YWluUHRyPE5TU3RyaW5nPihzdHJpbmcp
OworCisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gdGVtcCA9IHN0cmluZzsKKworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIn
cyBtb3ZlIGNvbnN0cnVjdG9yLgorICAgIFJldGFpblB0cjxOU1N0cmluZyAqPiBwdHIyKFdURk1v
dmUodGVtcCkpOworCisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyMik7CisgICAgRVhQRUNUX0VR
KChOU1N0cmluZyAqKW5pbCwgdGVtcCk7Cit9CisKK1RFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdu
bWVudEZyb21NdXRhYmxlTlNUeXBlKQogewogICAgIE5TTXV0YWJsZVN0cmluZyAqc3RyaW5nID0g
W05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzoiZm9vIl07CiAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBwdHI7CkBAIC03Myw1NCArMTM2LDE0MiBAQCBURVNUKFJldGFpblB0ciwg
TW92ZUFzc2lnbm1lbnRGcm9tU2ltaWxhclR5cGUpCiAKICAgICBFWFBFQ1RfRVEoc3RyaW5nLCBw
dHIpOwogCi0gICAgcHRyID0gMDsKKyAgICBwdHIgPSBuaWw7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZVN0cmluZz4gdGVtcCA9IHN0cmluZzsKIAogICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBS
ZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCiAgICAgcHRyID0gV1RGTW92ZSh0
ZW1wKTsKIAogICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7Ci0gICAgRVhQRUNUX0VRKChOU1N0
cmluZyAqKTAsIHRlbXApOworICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcgKiluaWwsIHRlbXApOwog
fQogCi1URVNUKFJldGFpblB0ciwgQ29uc3RydWN0aW9uRnJvbVNhbWVUeXBlKQorVEVTVChSZXRh
aW5QdHIsIE1vdmVBc3NpZ25tZW50RnJvbVNhbWVOU1R5cGUpCiB7CiAgICAgTlNTdHJpbmcgKnN0
cmluZyA9IEAiZm9vIjsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0cjsKIAotICAgIC8vIFRo
aXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgorICAgIC8vIFRo
aXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCiAg
ICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhl
IHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jawogICAgIC8vIE5TT2JqZWN0IHRoYXQgbG9ncyAt
cmV0YWluIGFuZCAtcmVsZWFzZSBjYWxscy4KLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0ciA9
IFJldGFpblB0cjxOU1N0cmluZz4oc3RyaW5nKTsKKyAgICBwdHIgPSBSZXRhaW5QdHI8TlNTdHJp
bmc+KHN0cmluZyk7CiAKICAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIpOwogCisgICAgcHRyID0g
bmlsOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gdGVtcCA9IHN0cmluZzsKIAotICAgIC8vIFRo
aXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgotICAgIFJldGFp
blB0cjxOU1N0cmluZz4gcHRyMihXVEZNb3ZlKHRlbXApKTsKKyAgICAvLyBUaGlzIHNob3VsZCBp
bnZva2UgUmV0YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIHB0ciA9IFdU
Rk1vdmUodGVtcCk7CiAKLSAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIyKTsKLSAgICBFWFBFQ1Rf
RVEoKE5TU3RyaW5nICopMCwgdGVtcCk7CisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKyAg
ICBFWFBFQ1RfRVEoKE5TU3RyaW5nICopbmlsLCB0ZW1wKTsKIH0KIAotVEVTVChSZXRhaW5QdHIs
IENvbnN0cnVjdGlvbkZyb21TaW1pbGFyVHlwZSkKK1RFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdu
bWVudEZyb21TaW1pbGFyTlNUeXBlKQogewotICAgIE5TTXV0YWJsZVN0cmluZyAqc3RyaW5nID0g
W05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzoiZm9vIl07CisgICAgTlNTdHJp
bmcgKnN0cmluZyA9IEAiZm9vIjsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0cjsKIAotICAg
IC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgorICAg
IC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0
b3IuCiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92
ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jawogICAgIC8vIE5TT2JqZWN0IHRoYXQg
bG9ncyAtcmV0YWluIGFuZCAtcmVsZWFzZSBjYWxscy4KLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHB0ciA9IFJldGFpblB0cjxOU011dGFibGVTdHJpbmc+KHN0cmluZyk7CisgICAgcHRyID0gUmV0
YWluUHRyPE5TU3RyaW5nICo+KHN0cmluZyk7CiAKICAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIp
OwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0cmluZz4gdGVtcCA9IHN0cmluZzsKKyAgICBw
dHIgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nICo+IHRlbXAgPSBzdHJpbmc7CiAKLSAg
ICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KLSAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0cjIoV1RGTW92ZSh0ZW1wKSk7CisgICAgLy8gVGhpcyBz
aG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICBw
dHIgPSBXVEZNb3ZlKHRlbXApOwogCi0gICAgRVhQRUNUX0VRKHN0cmluZywgcHRyMik7Ci0gICAg
RVhQRUNUX0VRKChOU1N0cmluZyAqKTAsIHRlbXApOworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0
cik7CisgICAgRVhQRUNUX0VRKChOU1N0cmluZyAqKW5pbCwgdGVtcCk7Cit9CisKK1RFU1QoUmV0
YWluUHRyLCBNb3ZlQXNzaWdubWVudEZyb21TaW1pbGFyTlNUeXBlUmV2ZXJzZWQpCit7CisgICAg
TlNTdHJpbmcgKnN0cmluZyA9IEAiZm9vIjsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmcgKj4gcHRy
OworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgYXNzaWdubWVu
dCBvcGVyYXRvci4KKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGFjdHVhbGx5IHRlc3QgdGhh
dCB3ZSBtb3ZlZCB0aGUgdmFsdWUuIFdlIHNob3VsZCB1c2UgYSBtb2NrCisgICAgLy8gTlNPYmpl
Y3QgdGhhdCBsb2dzIC1yZXRhaW4gYW5kIC1yZWxlYXNlIGNhbGxzLgorICAgIHB0ciA9IFJldGFp
blB0cjxOU1N0cmluZz4oc3RyaW5nKTsKKworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7CisK
KyAgICBwdHIgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB0ZW1wID0gc3RyaW5nOwor
CisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgYXNzaWdubWVudCBv
cGVyYXRvci4KKyAgICBwdHIgPSBXVEZNb3ZlKHRlbXApOworCisgICAgRVhQRUNUX0VRKHN0cmlu
ZywgcHRyKTsKKyAgICBFWFBFQ1RfRVEoKE5TU3RyaW5nICopbmlsLCB0ZW1wKTsKK30KKworVEVT
VChSZXRhaW5QdHIsIE9wdGlvbmFsUmV0YWluUHRyTlMpCit7CisgICAgLy8gVGVzdCBhc3NpZ25t
ZW50IGZyb20gYWRvcHROUygpLgorICAgIE9wdGlvbmFsPFJldGFpblB0cjxOU09iamVjdD4+IG9w
dGlvbmFsT2JqZWN0MSA9IGFkb3B0TlMoW05TT2JqZWN0IG5ld10pOworICAgIEVYUEVDVF9FUSgx
LCBDRkdldFJldGFpbkNvdW50KG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKSk7CisgICAg
UmV0YWluUHRyPE5TT2JqZWN0PiBvYmplY3QxID0gb3B0aW9uYWxPYmplY3QxLnZhbHVlKCk7Cisg
ICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3QxKTsKKworICAgIC8v
IFRlc3QgYXNzaWdubWVudCBmcm9tIHJldGFpblB0cigpLgorICAgIE9wdGlvbmFsPFJldGFpblB0
cjxOU09iamVjdD4+IG9wdGlvbmFsT2JqZWN0MjsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAg
ICAgICAgb3B0aW9uYWxPYmplY3QyID0gcmV0YWluUHRyKFtbTlNPYmplY3QgbmV3XSBhdXRvcmVs
ZWFzZV0pOworICAgIH0KKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvcHRpb25h
bE9iamVjdDIudmFsdWUoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxOU09iamVjdD4gb2JqZWN0
MiA9IG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpOworICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVj
dDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICBFWFBFQ1RfTkUob2JqZWN0MSwgb2JqZWN0Mik7
CisKKyAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmpl
Y3Q+Pi4KKyAgICBvcHRpb25hbE9iamVjdDEgPSBvcHRpb25hbE9iamVjdDI7CisgICAgRVhQRUNU
X1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCkpOworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFs
T2JqZWN0MS52YWx1ZSgpLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3QxLnZh
bHVlKCksIG9iamVjdDIpOworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDIudmFsdWUoKS5nZXQoKSk7CisgICAg
RVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpLCBvYmplY3QyKTsKKworICAgIC8vIFJl
c2V0IGFmdGVyIGFzc2lnbm1lbnQgdGVzdC4KKyAgICBvcHRpb25hbE9iamVjdDEgPSBvYmplY3Qx
OworICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDEudmFsdWUoKSwgb2JqZWN0MSk7CisgICAg
RVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpLCBvYmplY3QyKTsKKworICAgIC8vIFRl
c3QgbW92ZSBmcm9tIE9wdGlvbmFsPFJldGFpblB0cjxOU09iamVjdD4+LgorICAgIG9wdGlvbmFs
T2JqZWN0MSA9IFdURk1vdmUob3B0aW9uYWxPYmplY3QyKTsKKyAgICBFWFBFQ1RfVFJVRShvcHRp
b25hbE9iamVjdDEudmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZh
bHVlKCkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVjdDEudmFsdWUoKSwgb2Jq
ZWN0Mik7CisgICAgRVhQRUNUX0ZBTFNFKG9wdGlvbmFsT2JqZWN0Mi52YWx1ZSgpKTsKK30KKwor
VEVTVChSZXRhaW5QdHIsIFJldGFpblB0ck5TKQoreworICAgIFJldGFpblB0cjxOU09iamVjdD4g
b2JqZWN0MTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgb2JqZWN0MSA9IHJldGFp
blB0cihbW05TT2JqZWN0IG5ld10gYXV0b3JlbGVhc2VdKTsKKyAgICB9CisgICAgRVhQRUNUX0VR
KDEsIENGR2V0UmV0YWluQ291bnQob2JqZWN0MS5nZXQoKSkpOworCisgICAgUmV0YWluUHRyPE5T
T2JqZWN0ICo+IG9iamVjdDI7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIG9iamVj
dDIgPSByZXRhaW5QdHIoW1tOU09iamVjdCBuZXddIGF1dG9yZWxlYXNlXSk7CisgICAgfQorICAg
IEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KG9iamVjdDIuZ2V0KCkpKTsKKworICAgIFJl
dGFpblB0cjxpZD4gb2JqZWN0MzsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgb2Jq
ZWN0MyA9IHJldGFpblB0cihbW05TT2JqZWN0IG5ld10gYXV0b3JlbGVhc2VdKTsKKyAgICB9Cisg
ICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQob2JqZWN0My5nZXQoKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjc3MTI0
MzM4M2ZlOTRjNzliYjQ5OTVkNzg0YWQyMzRmZjk4NDUxNC4uZjU2MGRmM2Y0YzQyZTI0ZTY1YjNi
ZjYyODcxYjVmYWRjMTlhNWY2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMzgxLDcgKzM4MSw3
IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lCiAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBtX2Rv
d25sb2FkLmdldCgpKTsKIAogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlSGFuZGxlOwotICAgIFJldGFpblB0cjxOU1N0cmluZyAqPiBwYXRoID0gKE5TU3Ry
aW5nICopV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRB
UEkiLCBmaWxlSGFuZGxlKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBhdGggPSAoTlNTdHJp
bmcgKilXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQ
SSIsIGZpbGVIYW5kbGUpOwogICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0K
aW5kZXggMWY4MjViYjhkYWE0NjljMjJiMGQ5MTA4ZDFjZTkwZTkzYWQ4NGNlMy4uNzFkMjgxMDEx
NDU2ODJhNGQ5OWIwNTBhOWZlOGU2OTIxZjM0NjdiMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bQpAQCAtMjA1LDcgKzIwNSw3IEBAIFRFU1QoSWNvbkxvYWRpbmcsIEFscmVhZHlDYWNoZWRJY29u
KQogICAgIFJldGFpblB0cjxJY29uTG9hZGluZ1NjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9w
dE5TKFtbSWNvbkxvYWRpbmdTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aERhdGE6bWFpbkRh
dGFdKTsKIAogICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0gICAgUmV0YWluUHRyPE5T
RGF0YSAqPiBpY29uRGF0YUZyb21EaXNrID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6
dXJsXTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBpY29uRGF0YUZyb21EaXNrID0gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZVUkw6dXJsXTsKICAgICBbaGFuZGxlci5nZXQoKSBzZXRGYXZpY29u
RGF0YTppY29uRGF0YUZyb21EaXNrLmdldCgpXTsKIAogICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0pJVEVuYWJs
ZWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0pJVEVuYWJsZWQu
bW0KaW5kZXggODA2ODcxOWUxNmUyYjkzZWQwNTJjYTRmZTIxM2M0M2RhMDg1ODBmYS4uYjNhM2Iz
ZDVjYjI5YjljMjRlMDkyYTNkNjc2OGYzNmU1YTY3NmIxYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbQpAQCAtNTMsNyArNTMs
NyBAQCBURVNUKFdlYktpdCwgSklURW5hYmxlZCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIFtjb25maWd1cmF0aW9u
IHNldFByb2Nlc3NQb29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOwogICAg
IGF1dG8gd2ViVmlld05vSklUID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBjaGVja0pJVEVuYWJsZWQod2ViVmlld05vSklULCBOTyk7CisgICAg
Y2hlY2tKSVRFbmFibGVkKFdURk1vdmUod2ViVmlld05vSklUKSwgTk8pOwogICAgIGNoZWNrSklU
RW5hYmxlZChhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSksIFlFUyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDI0MzRiY2VjOGMxZTExYjU0M2JkYjc4ZjhkNWYyZmU1
YmU5N2Y3YTMuLjFjMjVkZThlNDRkYmQyODQ0OWNkODUzZWJjYmE3ODhiZDM5NmY0NjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIEBlbmQKIEBp
bnRlcmZhY2UgUFNPTlNjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKICAg
ICBjb25zdCBjaGFyKiBfYnl0ZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX3JlZGly
ZWN0czsKLSAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TRGF0YSAqPj4gX2RhdGFNYXBw
aW5nczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TRGF0YT4+IF9kYXRhTWFwcGlu
Z3M7CiB9CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXM7
CiAtICh2b2lkKWFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VVUkxT
dHJpbmcgdG9VUkxTdHJpbmc6KE5TU3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmc7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ZpZGVvQ29udHJv
bHNNYW5hZ2VyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRl
b0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCBmNDg5YmJlOGUwNWY2YzljODQ3NWVmYTA2YTFmZTNk
ZDgxNTI2MTBjLi5hYmYyYWE2YjhkMWUyMTdiZWQ2ZjcyOGMyYWU5NmY5MTA1ODRmMzg3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ZpZGVvQ29udHJv
bHNNYW5hZ2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VmlkZW9Db250cm9sc01hbmFnZXIubW0KQEAgLTExNyw3ICsxMTcsNyBAQCBAZW5kCiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVz
dFdlYlZpZXcqPiBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNS
ZWN0IGZyYW1lKQorUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHNl
dFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU1JlY3QgZnJhbWUpCiB7
CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9
IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwpAQCAtMTI2LDcgKzEyNiw3IEBAIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gc2V0VXBXZWJWaWV3Rm9yVGVzdGlu
Z1ZpZGVvQ29udHJvbHNNCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJv
bHNNYW5hZ2VyU2luZ2xlTGFyZ2VWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9s
c01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlk
ZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFp
blB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJW
aWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAx
MDApKTsKIAogICAgIC8vIEEgbGFyZ2UgdmlkZW8gd2l0aCBhdWRpbyBzaG91bGQgaGF2ZSBhIGNv
bnRyb2xzIG1hbmFnZXIgZXZlbiBpZiBpdCBpcyBwbGF5ZWQgdmlhIHNjcmlwdCBsaWtlIHRoaXMg
dmlkZW8uCiAgICAgLy8gU28gdGhlIGV4cGVjdGF0aW9uIGlzIFlFUy4KQEAgLTEzNiw3ICsxMzYs
NyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmds
ZUxhcmdlVmlkZW8pCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyU2luZ2xlU21hbGxWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3
Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDAp
KTsKIAogICAgIC8vIEEgc21hbGwgdmlkZW8gd2lsbCBub3QgaGF2ZSBhIGNvbnRyb2xzIG1hbmFn
ZXIgdW5sZXNzIGl0IHN0YXJ0ZWQgcGxheWluZyBiZWNhdXNlIG9mIGEgdXNlciBnZXN0dXJlLiBT
aW5jZSB0aGlzCiAgICAgLy8gdmlkZW8gaXMgc3RhcnRlZCB3aXRoIGEgc2NyaXB0LCB0aGUgZXhw
ZWN0YXRpb24gaXMgTk8uCkBAIC0xNDYsNyArMTQ2LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFu
YWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbFZpZGVvKQogCiBURVNUKFZpZGVv
Q29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0aEF1
ZGlvKQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4g
d2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5h
Z2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250
cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpbyJdOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JQYWdlVG9Mb2FkV2l0aEF1dG9wbGF5aW5nVmlkZW9zOjBdOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2Vy
TXVsdGlwbGVWaWRlb3NXaXRoQXVkaW8pCiAvLyBGSVhNRTogUmUtZW5hYmxlIHRoaXMgdGVzdCBv
bmNlIDx3ZWJraXQub3JnL2IvMTc1MTQzPiBpcyByZXNvbHZlZC4KIFRFU1QoVmlkZW9Db250cm9s
c01hbmFnZXIsIERJU0FCTEVEX1ZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NXaXRo
QXVkaW9BbmRBdXRvcGxheSkKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJU
ZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9s
c01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFpblB0cjxWaWRl
b0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVz
dGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAog
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8t
YXV0b3BsYXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yUGFnZVRvTG9hZFdpdGhBdXRvcGxheWlu
Z1ZpZGVvczoxXTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2Vy
LCBESVNBQkxFRF9WaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0aEF1ZGlvQQog
CiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxl
VmlkZW9zU2Nyb2xsUGF1c2VkVmlkZW9PdXRPZlZpZXcpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVv
Q29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVz
dGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKKyAg
ICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNl
dFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAs
IDUwMCwgNTAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZp
ZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
UGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczoxXTsKQEAgLTE3OSw3ICsxNzksNyBAQCBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlk
ZW9zU2Nyb2xsUGF1c2VkVmlkZW9PdQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsUGxheWluZ1ZpZGVvV2l0aFNvdW5k
T3V0T2ZWaWV3KQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJW
aWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdl
cihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJv
bHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlk
ZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVw
cy1jb250cm9scyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JQYWdlVG9Mb2FkV2l0aEF1dG9wbGF5
aW5nVmlkZW9zOjFdOwpAQCAtMTkwLDcgKzE5MCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5aW5nVmlkZW9X
CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlw
bGVWaWRlb3NTY3JvbGxQbGF5aW5nTXV0ZWRWaWRlb091dE9mVmlldykKIHsKLSAgICBSZXRhaW5Q
dHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUw
MCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJl
Y3QoMCwgMCwgNTAwLCA1MDApKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
bGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMiXTsKICAgICBb
d2ViVmlldyB3YWl0Rm9yUGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczoxXTsKQEAgLTIw
MSw3ICsyMDEsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFu
YWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsUGxheWluZ011dGVkVgogCiBURVNUKFZpZGVvQ29udHJv
bHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2hvd0NvbnRyb2xz
Rm9yTGFzdEludGVyYWN0ZWRWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOworICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3
Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
KTsKICAgICBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCg0MDAsIDMwMCk7CiAKICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1j
bGljay10by1wYXVzZSJdOwpAQCAtMjI4LDcgKzIyOCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTaG93Q29udHJvbHNGb3JM
YXN0CiAvLyBGSVhNRTogUmUtZW5hYmxlIHRoaXMgdGVzdCBvbmNlIDx3ZWJraXQub3JnL2IvMTc1
OTA5PiBpcyByZXNvbHZlZC4KIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIERJU0FCTEVEX1Zp
ZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTd2l0Y2hDb250cm9sbGVkVmlkZW9XaGVu
U2Nyb2xsaW5nKQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJW
aWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdl
cihOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJv
bHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlk
ZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xs
LXRvLXZpZGVvIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvclBhZ2VUb0xvYWRXaXRoQXV0b3BsYXlp
bmdWaWRlb3M6Ml07CkBAIC0yNDEsNyArMjQxLDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdl
ciwgRElTQUJMRURfVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1N3aXRjaENvbnQK
IAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBs
ZVZpZGVvc1Njcm9sbE9ubHlMYXJnZVZpZGVvT3V0T2ZWaWV3KQogewotICAgIFJldGFpblB0cjxW
aWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0Zv
clRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7
CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCA1MDAsIDUwMCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJn
ZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvclBhZ2VU
b0xvYWRXaXRoQXV0b3BsYXlpbmdWaWRlb3M6MV07CkBAIC0yNTEsNyArMjUxLDcgQEAgVEVTVChW
aWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Nj
cm9sbE9ubHlMYXJnZVZpZGUKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250
cm9sc01hbmFnZXJTaW5nbGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCiB7Ci0gICAgUmV0YWluUHRy
PFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3
Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDAp
KTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImF1
dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yUGFnZVRv
TG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczoxXTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3Bs
YXlpbmdWaWRlbykKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FmdGVyRW5kaW5nKQogewotICAgIFJldGFp
blB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2Vi
Vmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdl
YlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtl
UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZyJdOwogCkBAIC0yNzUsNyArMjc1LDcgQEAg
VEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9w
bGF5aW5nVmlkZW9TZWVrc0FmdGVyRW4KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlk
ZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FuZFBsYXlzQWZ0ZXJF
bmRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcq
PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5T
TWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0Nv
bnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICAvLyBTaW5j
ZSB0aGUgdmlkZW8gaXMgc3RpbGwgcGxheWluZywgdGhlIGV4cGVjdGF0aW9uIGlzIFlFUyBldmVu
IGlmIHRoZSB2aWRlbyBoYXMgZW5kZWQgb25jZS4KICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
ZyJdOwpAQCAtMjg0LDcgKzI4NCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVv
Q29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvU2Vla3NBbmRQbGF5CiAKIFRFU1Qo
VmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWlu
Z1ZpZGVvQWZ0ZXJTZWVraW5nVG9FbmQpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNN
YW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVv
Q29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBSZXRhaW5Q
dHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAw
KSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLWhpZGVz
LWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvclBhZ2VU
b0xvYWRXaXRoQXV0b3BsYXlpbmdWaWRlb3M6MV07CkBAIC0yOTcsNyArMjk3LDcgQEAgVEVTVChW
aWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5n
VmlkZW9BZnRlclNlZWtpbmcKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250
cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvV2l0aG91dEF1ZGlvKQogewotICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAw
KSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZp
ZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQSBsYXJnZSB2aWRlbyB3aXRoIG5vIGF1ZGlv
IHdpbGwgbm90IGhhdmUgYSBjb250cm9scyBtYW5hZ2VyIHVubGVzcyBpdCBzdGFydGVkIHBsYXlp
bmcgYmVjYXVzZSBvZiBhIHVzZXIgZ2VzdHVyZS4gU2luY2UgdGhpcwogICAgIC8vIHZpZGVvIGlz
IHN0YXJ0ZWQgd2l0aCBhIHNjcmlwdCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgpAQCAtMzA3LDcg
KzMwNyw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2Vy
U2luZ2xlTGFyZ2VWaWRlb1dpdGhvdXRBdWRpbykKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdl
ciwgVmlkZW9Db250cm9sc01hbmFnZXJBdWRpb0VsZW1lbnRTdGFydGVkV2l0aFNjcmlwdCkKIHsK
LSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5h
Z2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIC8vIEFuIGF1ZGlvIGVsZW1l
bnQgTVVTVCBiZSBzdGFydGVkIHdpdGggYSB1c2VyIGdlc3R1cmUgaW4gb3JkZXIgdG8gaGF2ZSBh
IGNvbnRyb2xzIG1hbmFnZXIsIHNvIHRoZSBleHBlY3RhdGlvbiBpcyBOTy4KICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAImF1ZGlvLW9ubHkiXTsKQEAgLTMxNiw3ICszMTYsNyBAQCBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckF1ZGlvRWxlbWVu
dFN0YXJ0ZWRXaXRoU2NyaXB0KQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0Nv
bnRyb2xzTWFuYWdlckF1ZGlvRWxlbWVudFN0YXJ0ZWRCeUludGVyYWN0aW9uKQogewotICAgIFJl
dGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVw
V2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJwbGF5LWF1ZGlvLW9uLWNsaWNrIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvclBhZ2VUb0xv
YWRXaXRoQXV0b3BsYXlpbmdWaWRlb3M6MF07CkBAIC0zMjksNyArMzI5LDcgQEAgVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJBdWRpb0VsZW1lbnRTdGFydGVk
QnlJbnRlcmFjdGlvbikKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgRElTQUJMRURfVmlk
ZW9Db250cm9sc01hbmFnZXJBdWRpb0VsZW1lbnRGb2xsb3dpbmdVc2VySW50ZXJhY3Rpb24pCiB7
Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3
ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3Qo
MCwgMCwgNDAwLCA0MDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0
V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFu
YWdlcihOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInBsYXktYXVkaW8tb24tY2xpY2siXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
UGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczowXTsKQEAgLTM1NCw3ICszNTQsNyBAQCBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBESVNBQkxFRF9WaWRlb0NvbnRyb2xzTWFuYWdlckF1
ZGlvRWxlbWVudEZvbGxvd2luZ1VzZQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlclRlYXJzRG93bk1lZGlhQ29udHJvbHNPbkRlYWxsb2MpCiB7Ci0gICAg
UmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0
VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwg
MTAwLCAxMDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmll
dz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihO
U01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBOU1VSTCAqdXJsT2ZWaWRlbyA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ2aWRlby13aXRoLWF1ZGlvIiB3
aXRoRXh0ZW5zaW9uOkAibXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwogICAgIFt3ZWJWaWV3IGxvYWRGaWxlVVJMOnVybE9mVmlkZW8gYWxsb3dpbmdSZWFkQWNj
ZXNzVG9VUkw6W3VybE9mVmlkZW8gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XV07CkBA
IC0zNzQsNyArMzc0LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9s
c01hbmFnZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xzT25EZWFsbG9jKQogCiBURVNUKFZpZGVvQ29u
dHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckRvZXNOb3RTaG93TWVkaWFDb250cm9s
c0Zvck9mZnNjcmVlblZpZGVvKQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMjQsIDc2OCkpOworICAgIFJldGFpblB0cjxW
aWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9y
VGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAyNCwgNzY4KSk7
CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLW9mZnNjcmVl
biJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZWRpYUNvbnRyb2xzVG9IaWRlXTsKQEAgLTM4Miw3
ICszODIsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdl
ckRvZXNOb3RTaG93TWVkaWFDb250cm9sc0Zvck9mZnNjcgogCiBURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlcktlZXBzQ29udHJvbHNTdGFibGVEdXJpbmdTcmND
aGFuZ2VPbkNsaWNrKQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFu
YWdlcihOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29u
dHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOwogCiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNr
Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvclBhZ2VUb0xvYWRXaXRoQXV0b3BsYXlpbmdWaWRlb3M6
MV07CkBAIC0zOTMsNyArMzkzLDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJLZWVwc0NvbnRyb2xzU3RhYmxlRHVyaW5nU3JjQ2hhbmcKIAogVEVTVChW
aWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJLZWVwc0NvbnRyb2xzU3Rh
YmxlRHVyaW5nU3JjQ2hhbmdlT25FbmQpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNN
YW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVv
Q29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApKTsKKyAgICBSZXRhaW5Q
dHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImNoYW5nZS12aWRlby1zb3Vy
Y2Utb24tZW5kIl07CiAgICAgW3dlYlZpZXcgZXhwZWN0Q29udHJvbHNNYW5hZ2VyOllFUyBhZnRl
clJlY2VpdmluZ01lc3NhZ2U6QCJjaGFuZ2VkIl07CkBAIC00MDEsNyArNDAxLDcgQEAgVEVTVChW
aWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJLZWVwc0NvbnRyb2xzU3Rh
YmxlRHVyaW5nU3JjQ2hhbmcKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250
cm9sc01hbmFnZXJTbWFsbFZpZGVvSW5NZWRpYURvY3VtZW50KQogewotICAgIFJldGFpblB0cjxW
aWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0Zv
clRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7
CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkpOwogCiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkTG9hZCA9IGZhbHNl
OwogICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CkBAIC00MTksNyArNDE5LDcg
QEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTbWFsbFZp
ZGVvSW5NZWRpYURvY3VtZW50KQogICAgIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlk
ZW9Db250cm9sc01hbmFnZXJPZmZzY3JlZW5JZnJhbWVNZWRpYURvY3VtZW50KQogewotICAgIFJl
dGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVw
V2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAib2Zmc2NyZWVuLWlmcmFtZS1vZi1tZWRpYS1kb2N1bWVudCJdOwogICAgIAogICAgIC8vIFdl
IGRvIG5vdCBleHBlY3QgYSBjb250cm9scyBtYW5hZ2VyIGJlY3Vhc2UgdGhlIG1lZGlhIGRvY3Vt
ZW50IGlzIGluIGFuIGlmcmFtZS4KQEAgLTQyOCw3ICs0MjgsNyBAQCBURVNUKFZpZGVvQ29udHJv
bHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck9mZnNjcmVlbklmcmFtZU1lZGlhRG9jdW1l
bnQpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTG9u
Z1NraW5ueVZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRy
b2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdW
aWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOworICAgIFJl
dGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBX
ZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTYw
MCwgODAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNraW5ueS1hdXRv
cGxheWluZy12aWRlby13aXRoLWF1ZGlvIl07CiAgICAgW3dlYlZpZXcgZXhwZWN0Q29udHJvbHNN
YW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKQEAgLTQzNiw3ICs0
MzYsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxv
bmdTa2lubnlWaWRlb0luV2lkZU1haW5GcmFtZSkKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdl
ciwgVmlkZW9Db250cm9sc01hbmFnZXJXaWRlTWVkaXVtU2l6ZWRWaWRlb0luV2lkZU1haW5GcmFt
ZSkKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdl
YlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtl
UmVjdCgwLCAwLCAxNjAwLCA4MDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFn
ZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOwogCiAgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJ3aWRlLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iXTsK
ICAgICBbd2ViVmlldyBleHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpAInBsYXlpbmciXTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlcldpZGVNZWRpdW1TaXplZFZpZGVvSW5XaWRlTWFp
bkZyYQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckZ1
bGxTaXplVmlkZW9JbldpZGVNYWluRnJhbWUpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJv
bHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1Zp
ZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTYwMCwgODAwKSk7CisgICAgUmV0
YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdl
YlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxNjAw
LCA4MDApKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZnVsbC1zaXplLWF1
dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iXTsKICAgICBbd2ViVmlldyBleHBlY3RDb250cm9s
c01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKQEAgLTQ1Miw3
ICs0NTIsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdl
ckZ1bGxTaXplVmlkZW9JbldpZGVNYWluRnJhbWUpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyVmlkZW9NdXRlc09uUGxheWluZykKIHsKLSAgICBSZXRh
aW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdl
YlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAs
IDUwMCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3
ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFr
ZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAibGFyZ2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgZXhwZWN0Q29u
dHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKQEAgLTQ2
MCw3ICs0NjAsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFu
YWdlclZpZGVvTXV0ZXNPblBsYXlpbmcpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyUGFnZVdpdGhFbm9ybW91c1ZpZGVvKQogewotICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAw
KSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZp
ZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVj
dCgwLCAwLCA1MDAsIDUwMCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJl
bm9ybW91cy12aWRlby13aXRoLXNvdW5kIl07CiAgICAgW3dlYlZpZXcgZXhwZWN0Q29udHJvbHNN
YW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW0KaW5kZXggNzA4YjA3MjgwNWU3Y2UzNjBlZmY3NWE1ZGY3ZTY1M2Q4M2NlNzBkOS4uMTBhMzU0
ZjlkY2Q1MzAxNjIzY2IxOWRmMTMyNzc2OWI3NmU4ODJmYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAg
LTg2NSw3ICs4NjUsNyBAQCBURVNUKFdlYktpdCwgQ3VzdG9tSGVhZGVyRmllbGRzKQogc3RhdGlj
IHVuc2lnbmVkIGxvYWRDb3VudDsKIAogQGludGVyZmFjZSBEYXRhTWFwcGluZ1NjaGVtZUhhbmRs
ZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcs
IFJldGFpblB0cjxOU0RhdGEgKj4+IF9kYXRhTWFwcGluZ3M7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFJldGFpblB0cjxOU0RhdGE+PiBfZGF0YU1hcHBpbmdzOwogfQogLSAodm9pZClhZGRNYXBwaW5n
RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilk
YXRhOwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERy
b3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNp
bXVsYXRvcklPUy5tbQppbmRleCA0Y2I4NTE4MjdjODliZmM2YThlOGZhZDhkMGQ3ZGI1ZjFmMDhl
NmNmLi4yMGYzMmNhNWExMjQ1M2UxODczYWFjYzcyY2UzNjgyOTA5YzYxNGJiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAt
Mjk3LDggKzI5Nyw4IEBAIEBpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVsYXRvciB7CiAg
ICAgUmV0YWluUHRyPE1vY2tEcm9wU2Vzc2lvbj4gX2Ryb3BTZXNzaW9uOwogICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gX29ic2VydmVkRXZlbnROYW1lczsKICAgICBSZXRhaW5QdHI8TlNB
cnJheT4gX2V4dGVybmFsSXRlbVByb3ZpZGVyczsKLSAgICBSZXRhaW5QdHI8TlNBcnJheSAqPiBf
c291cmNlSXRlbVByb3ZpZGVyczsKLSAgICBSZXRhaW5QdHI8TlNBcnJheSAqPiBfZmluYWxTZWxl
Y3Rpb25SZWN0czsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3NvdXJjZUl0ZW1Qcm92aWRlcnM7
CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9maW5hbFNlbGVjdGlvblJlY3RzOwogICAgIENHUG9p
bnQgX3N0YXJ0TG9jYXRpb247CiAgICAgQ0dQb2ludCBfZW5kTG9jYXRpb247CiAgICAgQ0dSZWN0
IF9sYXN0S25vd25EcmFnQ2FyZXRSZWN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL0FjdGl2YXRlRm9udHNDb2NvYS5t
bQppbmRleCBlYTM2YTBlNTU3MDg1YmZhZDE3YWFiYjE5MzU3MDRjNDJhNWYzNzZhLi4zZmVmMmQ1
ODE4Yzk5NzRkOWNiOWEwZjczNGJjY2FkYzU5OTE5NTY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL0FjdGl2YXRlRm9udHNDb2NvYS5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL0FjdGl2YXRl
Rm9udHNDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV1RSIHsKIAogc3RhdGlj
IE5TVVJMICpyZXNvdXJjZXNEaXJlY3RvcnlVUkwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNVUkwgKj4+IHJlc291cmNlc0RpcmVjdG9yeShbW05TQnVuZGxlIGJ1
bmRsZUZvckNsYXNzOltXS1RSRm9udEFjdGl2YXRvckR1bW15Q2xhc3MgY2xhc3NdXSByZXNvdXJj
ZVVSTF0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNVUkw+PiByZXNv
dXJjZXNEaXJlY3RvcnkoW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV0tUUkZvbnRBY3RpdmF0
b3JEdW1teUNsYXNzIGNsYXNzXV0gcmVzb3VyY2VVUkxdKTsKICAgICByZXR1cm4gcmVzb3VyY2Vz
RGlyZWN0b3J5LmdldCgpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9JbmplY3RlZEJ1bmRsZUlPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCmlu
ZGV4IDNmMmQ3NmM2NWM2NGRmNmI1MTA4MmNkMTA0NWI5YzkzYTg1YjUzOTYuLjQyOTA4YmVmZWY3
YTU4ZjdhZTA0ZjA1ODA1MzE0ZTVhNDVlNGUzZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0luamVjdGVkQnVuZGxlSU9T
Lm1tCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlh
bGl6ZShXS1R5cGVSZWYpCiAgICAgLy8gTGFuZ3VhZ2Ugd2FzIHNldCB1cCBlYXJsaWVyIGluIG1h
aW4oKS4gRG9uJ3QgY2xvYmJlciBpdC4KICAgICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5T
QXJndW1lbnREb21haW5dIHZhbHVlRm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKIAotICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5ICo+IGRpY3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiBkaWN0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
ICAgICBpZiAobGFuZ3VhZ2VzKQogICAgICAgICBbZGljdCBzZXRPYmplY3Q6bGFuZ3VhZ2VzIGZv
cktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQppbmRleCA2Yzc4MDM3NWE5Mjk3OWY3YzRh
ZDk1YTE5ZTNkMmE3NTRlNGUxZmRiLi5mYmZjYTA5ZDhkMzUxZTk0MTdiZWY4MzQwZDJmMTNhMDNj
ZDU1MGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5u
ZXJXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3Lm1tCkBAIC00OCw3ICs0OCw3IEBAIEBlbmQKICNpZiBXS19BUElfRU5BQkxF
RAogCiBAaW50ZXJmYWNlIFRlc3RSdW5uZXJXS1dlYlZpZXcgKCkgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+IHsKLSAgICBSZXRhaW5QdHI8TlNOdW1iZXIgKj4gbV9zdGFibGVTdGF0ZU92ZXJyaWRlOwor
ICAgIFJldGFpblB0cjxOU051bWJlcj4gbV9zdGFibGVTdGF0ZU92ZXJyaWRlOwogICAgIEJPT0wg
bV9pc0ludGVyYWN0aW5nV2l0aEZvcm1Db250cm9sOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358140</attachid>
            <date>2018-12-29 13:40:32 -0800</date>
            <delta_ts>2019-01-07 13:33:41 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-193056-20181229134031.patch</filename>
            <type>text/plain</type>
            <size>79353</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4MDNjMjZlOTE1OWFjOTM3NWFjYTU5
OTQxODk2ZTBiMjIzMzE4NDIuLmVhODMxYWIyZTExYTU0MTExM2I5NzgzNGE0MzMzNDI2N2VjZjBm
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMTItMjkgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVmZXIgUmV0YWluUHRyPE5TT2JqZWN0PiB0byBS
ZXRhaW5QdHI8TlNPYmplY3QgKj4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzA1
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9SZXRhaW5QdHIuaDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPFQ+OjpIZWxwZXJQdHJUeXBl
KToKKyAgICAgICAgLSBVc2UgQysrIHRlbXBsYXRlIG1ldGFwcm9ncmFtbWluZyB0byBkZWZpbmUg
YSBzaGFyZWQgcmV0dXJuCisgICAgICAgICAgdHlwZSBmb3IgYWRvcHROUygpIGFuZCByZXRhaW5Q
dHIoKSB0aGF0IHVzZXMKKyAgICAgICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IGluc3RlYWQgb2Yg
UmV0YWluUHRyPE5TT2JqZWN0ICo+LiAgVGhlCisgICAgICAgICAgbm9uLU9iamVjdGl2ZS1DIHR5
cGVkZWYgaXMgdXNlZCB3aXRoIHJldGFpblB0cigpIGZvciBDRlR5cGVSZWYKKyAgICAgICAgICBv
YmplY3RzLgorICAgICAgICAoV1RGOjphZG9wdE5TKToKKyAgICAgICAgLSBPbmx5IG1ha2UgZGVj
bGFyYXRpb25zIGF2YWlsYWJsZSB3aGVuIGNvbXBpbG5nIHdpdGgKKyAgICAgICAgICBPYmplY3Rp
dmUtQy4gIFRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb24gaXMgb25seSBhdmFpbGFibGUgZm9yCisg
ICAgICAgICAgT2JqZWN0aXZlLUMsIHNvIHRoaXMgbWFrZXMgdGhlIGRlY2xhcmF0aW9ucyBjb25z
aXN0ZW50LgorICAgICAgICAtIENoYW5nZSByZXR1cm4gdHlwZSB0byByZW1vdmUgJyonIGZyb20g
TlMgdHlwZXMgdXNpbmcKKyAgICAgICAgICBSZXRhaW5QdHI8VD46OkhlbHBlclB0clR5cGUuCisg
ICAgICAgIChXVEY6OnJldGFpblB0cik6CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIHRv
IHJlbW92ZSAnKicgZnJvbSBOUyB0eXBlcyB1c2luZworICAgICAgICAgIFJldGFpblB0cjxUPjo6
SGVscGVyUHRyVHlwZS4KKworICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAg
LSBSZW1vdmUgJyonIGZyb20gUmV0YWluUHRyPD4gdHlwZS4KKwogMjAxOC0xMi0yNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVj
dCBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwN2MwOTg3NThlY2Y4NGVlZTk5MjZkM2M1
ZGUxZmM4NDcwNzE5MGY2Li5mODI4ZThkNmUzZDk5NDFmZTYwYTMwYTg1YTVjOThjMzc4MDNkNzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMTItMjkgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVmZXIgUmV0YWluUHRyPE5TT2JqZWN0
PiB0byBSZXRhaW5QdHI8TlNPYmplY3QgKj4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE5MzA1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tOgorICAgICAgICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBz
dHJlYW1EYXRhUGFyc2VyOmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQ6XSk6CisgICAgICAgICgt
W1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbURhdGFQYXJzZXI6ZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldDp3aXRoRGlzY29udGludWl0eTpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6CisgICAgICAgIC0gUmVtb3Zl
ICcqJyBmcm9tIFJldGFpblB0cjw+IHR5cGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y29va2llc0ZvclVSTCk6CisgICAgICAgIC0gT25jZSByZXRhaW5QdHIoKSB3YXMgY2hhbmdlZCB0
byByZXR1cm4gUmV0YWluUHRyPE5TQXJyYXk+CisgICAgICAgICAgaW5zdGVhZCBvZiBSZXRhaW5Q
dHI8TlNBcnJheSAqPiBoZXJlLCB0aGF0IGZvcmNlZCB0aGUgdHlwZSBvZgorICAgICAgICAgIGBj
b29raWVzUHRyYCB0byBjaGFuZ2UgYXMgd2VsbCBzaW5jZQorICAgICAgICAgIE9wdGlvbmFsPFJl
dGFpblB0cjxOU0FycmF5Pj4gaXMgbm90IGFzc2lnbmFibGUgdG8KKyAgICAgICAgICBPcHRpb25h
bDxSZXRhaW5QdHI8TlNBcnJheSAqPj4gd2l0aG91dCBmdXJ0aGVyIHRlbXBsYXRlCisgICAgICAg
ICAgc3BlY2lhbGl6YXRpb24sIHdoaWNoIGRpZG4ndCBzZWVtIHVzZWZ1bCBzaW5jZQorICAgICAg
ICAgIE9wdGlvbmFsPFJldGFpblB0cjw+PiB2YXJpYWJsZSB0eXBlcyBhcmUgcmFyZWx5IHVzZWQu
CisKIDIwMTgtMTItMjggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9y
Zz4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgb25lIGluZGlyZWN0aW9uIGluIEpTT2JqZWN0Ojp0
b1N0cmluZ05hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzNlOGZkYjE4ZmY0NzE4N2E1NGM1MGJhMWI2ZjBmY2Mx
NjJiZmNkMC4uY2NkZTQ3NmM1YzIzZjczMzAyNzJiMGIxNTc2MTA1MjQxODAzYzE2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMi0yOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFByZWZlciBSZXRhaW5QdHI8TlNPYmplY3Q+IHRvIFJldGFp
blB0cjxOU09iamVjdCAqPgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTkzMDU2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1RodW1ibmFpbFZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUVtYmVkZGVkVmlldyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
bW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUg
Y29uc3QpOgorICAgICAgICAtIFJlbW92ZSAnKicgZnJvbSBSZXRhaW5QdHI8PiB0eXBlLgorCiAy
MDE4LTEyLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgV0tFZGl0Q29tbWFuZE9iakMgYW5kIFdLRWRpdG9yVW5kb1RhcmdldE9iakMgaW50
byBhIHNlcGFyYXRlIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0NDFiYjA5
MzBlZDlkOWI2ZjYwODYwYTczNTQzMTA1OTM2Zjg1ZWVlLi4wMmE0YzY3Y2M5YzRjN2NlODZhMTJj
MWI4MzNiYTZjZjdhZjZiMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTgtMTItMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBQcmVmZXIgUmV0YWluUHRyPE5TT2JqZWN0PiB0byBSZXRhaW5QdHI8TlNPYmpl
Y3QgKj4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzA1Nj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bWFyc2hhbFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjptYXJzaGFsVmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFsdWVzKToKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm94eUluc3RhbmNlOjppbnZva2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBfcmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY2FjaGVkUmVzcG9uc2VGb3JV
Ukw6XSk6CisgICAgICAgIC0gUmVtb3ZlICcqJyBmcm9tIFJldGFpblB0cjw+IHR5cGUuCisKIDIw
MTgtMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAog
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUmV0YWluUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaAppbmRleCBh
YTk2ZGVhMWFjOTY3MDMxYzgwODRhMmJlMTFhNzZiZDcxN2E5Njc1Li5lMGViYTJkZTlkYmRlMjJl
ZTExY2E5NGZkMDkxMTJiNTQ2NmY4ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZXRh
aW5QdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAtNTYsNyArNTYsOSBA
QCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJldGFpblB0cjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmV0YWluUHRyPFQ+IGFkb3B0Q0YoVCBDRl9SRUxFQVNF
U19BUkdVTUVOVCkgV0FSTl9VTlVTRURfUkVUVVJOOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmV0
YWluUHRyPFQ+IGFkb3B0TlMoVCBOU19SRUxFQVNFU19BUkdVTUVOVCkgV0FSTl9VTlVTRURfUkVU
VVJOOworI2lmZGVmIF9fT0JKQ19fCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZXRhaW5QdHI8dHlw
ZW5hbWUgUmV0YWluUHRyPFQ+OjpIZWxwZXJQdHJUeXBlPiBhZG9wdE5TKFQgTlNfUkVMRUFTRVNf
QVJHVU1FTlQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyNlbmRpZgogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBSZXRhaW5QdHIgewogcHVibGljOgpAQCAtNjQsNiArNjYsMTIgQEAgcHVibGlj
OgogICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQdHJUeXBlOwogICAgIHR5cGVkZWYgQ0ZUeXBlUmVm
IFN0b3JhZ2VUeXBlOwogCisjaWZkZWYgX19PQkpDX18KKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0
ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb252ZXJ0aWJsZTxULCBpZD46OnZhbHVlICYmICFzdGQ6
OmlzX3NhbWU8VCwgaWQ+Ojp2YWx1ZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZSwgVD46OnR5cGUgSGVscGVyUHRyVHlwZTsKKyNlbHNlCisgICAgdHlwZWRlZiBUIEhlbHBl
clB0clR5cGU7CisjZW5kaWYKKwogICAgIFJldGFpblB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9
CiAgICAgUmV0YWluUHRyKFB0clR5cGUgcHRyKSA6IG1fcHRyKHRvU3RvcmFnZVR5cGUocHRyKSkg
eyBpZiAobV9wdHIpIENGUmV0YWluKG1fcHRyKTsgfQogCkBAIC0xMDksNyArMTE3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc3dhcChSZXRhaW5QdHImKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGZyaWVuZCBSZXRhaW5QdHI8VT4gYWRvcHRDRihVIENGX1JFTEVBU0VTX0FSR1VNRU5UKSBX
QVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIFJldGFp
blB0cjxVPiBhZG9wdE5TKFUgTlNfUkVMRUFTRVNfQVJHVU1FTlQpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKKyNpZmRlZiBfX09CSkNfXworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBSZXRh
aW5QdHI8dHlwZW5hbWUgUmV0YWluUHRyPFU+OjpIZWxwZXJQdHJUeXBlPiBhZG9wdE5TKFUgTlNf
UkVMRUFTRVNfQVJHVU1FTlQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyNlbmRpZgogCiBwcml2YXRl
OgogICAgIGVudW0gQWRvcHRUYWcgeyBBZG9wdCB9OwpAQCAtMTUyLDcgKzE2Miw3IEBAIHByaXZh
dGU6CiB9OwogCiAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgUmV0YWluUHRyIHVz
aW5nIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbi4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJl
dGFpblB0cjxUPiByZXRhaW5QdHIoVCkgV0FSTl9VTlVTRURfUkVUVVJOOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gUmV0YWluUHRyPHR5cGVuYW1lIFJldGFpblB0cjxUPjo6SGVscGVyUHRyVHlwZT4g
cmV0YWluUHRyKFQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFJldGFpblB0cjxUPjo6flJldGFpblB0cigpCiB7CkBAIC0zMDYsMjEgKzMxNiwyMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmV0YWluUHRyPFQ+IGFkb3B0Q0YoVCBDRl9S
RUxFQVNFU19BUkdVTUVOVCBwdHIpCiB9CiAKICNpZmRlZiBfX09CSkNfXwotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIFJldGFpblB0cjxUPiBhZG9wdE5TKFQgTlNfUkVMRUFTRVNfQVJHVU1F
TlQgcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJldGFpblB0cjx0eXBlbmFtZSBS
ZXRhaW5QdHI8VD46OkhlbHBlclB0clR5cGU+IGFkb3B0TlMoVCBOU19SRUxFQVNFU19BUkdVTUVO
VCBwdHIpCiB7CiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2FyYykKICAgICByZXR1cm4gcHRyOwog
I2VsaWYgZGVmaW5lZChPQkpDX05PX0dDKQotICAgIHJldHVybiBSZXRhaW5QdHI8VD4ocHRyLCBS
ZXRhaW5QdHI8VD46OkFkb3B0KTsKKyAgICByZXR1cm4gUmV0YWluUHRyPHR5cGVuYW1lIFJldGFp
blB0cjxUPjo6SGVscGVyUHRyVHlwZT4ocHRyLCBSZXRhaW5QdHI8dHlwZW5hbWUgUmV0YWluUHRy
PFQ+OjpIZWxwZXJQdHJUeXBlPjo6QWRvcHQpOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8VD4gcmVz
dWx0ID0gcHRyOworICAgIFJldGFpblB0cjx0eXBlbmFtZSBSZXRhaW5QdHI8VD46OkhlbHBlclB0
clR5cGU+IHJlc3VsdCA9IHB0cjsKICAgICBbcHRyIHJlbGVhc2VdOwogICAgIHJldHVybiByZXN1
bHQ7CiAjZW5kaWYKIH0KICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmV0
YWluUHRyPFQ+IHJldGFpblB0cihUIHB0cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBS
ZXRhaW5QdHI8dHlwZW5hbWUgUmV0YWluUHRyPFQ+OjpIZWxwZXJQdHJUeXBlPiByZXRhaW5QdHIo
VCBwdHIpCiB7CiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTM3MywxMCArMzgzLDEwIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFQqIGR5bmFtaWNfb2JqY19jYXN0KGlkIG9iamVjdCkKIAogdXNpbmcg
V1RGOjpSZXRhaW5QdHI7CiB1c2luZyBXVEY6OmFkb3B0Q0Y7Ci11c2luZyBXVEY6OmFkb3B0TlM7
CiB1c2luZyBXVEY6OnJldGFpblB0cjsKIAogI2lmZGVmIF9fT0JKQ19fCit1c2luZyBXVEY6OmFk
b3B0TlM7CiB1c2luZyBXVEY6OmR5bmFtaWNfb2JqY19jYXN0OwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oIGIvU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmgKaW5kZXggYzQxYmNiYmM1MTM0Y2Y5MTI4YjRhYzQ0NjQ1ZWFmNzdhNDg3OGQxYS4u
YTM2ZTAwYzQyYjQ2M2VjZmI3ZDg4NzE4ZmIwMTkzNzU0NjQ2YmE2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmgKKysrIGIvU291cmNlL1dURi93dGYvU2NoZWR1bGVQ
YWlyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiwgQ0ZTdHJpbmdS
ZWYpOwotICAgIFJldGFpblB0cjxOU1J1bkxvb3AqPiBtX25zUnVuTG9vcDsKKyAgICBSZXRhaW5Q
dHI8TlNSdW5Mb29wPiBtX25zUnVuTG9vcDsKICNlbmRpZgogCiAgICAgUmV0YWluUHRyPENGUnVu
TG9vcFJlZj4gbV9ydW5Mb29wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAwZWNmNzU1MTAzY2MyMGQwNmU0MzQ3OTA4
ZjYwZDZlZThmNmRkZGRhLi5jNDcxN2NlOWI3ZGVjNzJiM2NkMTg3MjFmYjM3MjYzYTZiZTcwOTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQpAQCAtMTQzLDcgKzE0Myw3IEBAIC0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjoo
QVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQYXJzZVN0cmVhbURhCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2VyLCBzdHJlYW1EYXRhUGFyc2VyID09
IF9wYXJzZXIpOwogCi0gICAgUmV0YWluUHRyPEFWQXNzZXQqPiBwcm90ZWN0ZWRBc3NldCA9IGFz
c2V0OworICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OwogICAg
IGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQsIHByb3RlY3RlZEFzc2V0ID0gV1RG
TW92ZShwcm90ZWN0ZWRBc3NldCldIHsKICAgICAgICAgaWYgKHBhcmVudCkKICAgICAgICAgICAg
IHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChwcm90ZWN0ZWRBc3NldC5nZXQoKSk7
CkBAIC0xNTUsNyArMTU1LDcgQEAgLSAodm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURh
dGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyIGRpZFBhcnNlU3RyZWFtRGEKICAgICBVTlVTRURf
UEFSQU0oZGlzY29udGludWl0eSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1EYXRhUGFyc2Vy
LCBzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOwogCi0gICAgUmV0YWluUHRyPEFWQXNzZXQq
PiBwcm90ZWN0ZWRBc3NldCA9IGFzc2V0OworICAgIFJldGFpblB0cjxBVkFzc2V0PiBwcm90ZWN0
ZWRBc3NldCA9IGFzc2V0OwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3BhcmVudCA9IF9wYXJlbnQs
IHByb3RlY3RlZEFzc2V0ID0gV1RGTW92ZShwcm90ZWN0ZWRBc3NldCldIHsKICAgICAgICAgaWYg
KHBhcmVudCkKICAgICAgICAgICAgIHBhcmVudC0+ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChw
cm90ZWN0ZWRBc3NldC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKaW5kZXggMTU3Yjg1
MmI2MDg3NWU3MGFmOTE2NWJhYTgyYjU2OTZmMzcxNDEyOC4uM2Y2NDhlMDYwNDBiNTNhYjc4ZjZl
YWFkYTAyMzU0YWZjZjk4YzQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaApAQCAtNzMsNyAr
NzMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IG1f
Y2ZDaGFsbGVuZ2U7CiAjZWxzZQogICAgIFJldGFpblB0cjxpZD4gbV9zZW5kZXI7Ci0gICAgUmV0
YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKj4gbV9uc0NoYWxsZW5nZTsKKyAg
ICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9uc0NoYWxsZW5nZTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXgg
YjU3OTk3MzI3OWM2MTg0ZDMyMmU3YmNjOTEwYjY1YWQ5ZGMzMzk4ZS4uNDY1ZjE2MTM2MzRjZTYz
NzVkNTI0ZjM5NjljZWYzOTY2NDU4M2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25h
cnk+IHBvbGljeVByb3BlcnRpZXMoY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8KIHN0
YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2Us
IE5TVVJMICp1cmwsIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IE9wdGlvbmFsPFNhbWVT
aXRlSW5mbz4mIHNhbWVTaXRlSW5mbywgTlNTdHJpbmcgKnBhcnRpdGlvbiA9IG51bGxwdHIpCiB7
CiAgICAgLy8gVGhlIF9nZXRDb29raWVzRm9yVVJMOiBtZXRob2QgY2FsbHMgdGhlIGNvbXBsZXRp
b25IYW5kbGVyIHN5bmNocm9ub3VzbHkuIFdlIHVzZSBPcHRpb25hbDw+IHRvIGVuc3VyZSB0aGlz
IGludmFyaWFudC4KLSAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheSAqPj4gY29va2llc1B0
cjsKKyAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvb2tpZXNQdHI7CiAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFsmY29va2llc1B0cl0gKE5TQXJyYXkgKmNvb2tpZXMpIHsK
ICAgICAgICAgY29va2llc1B0ciA9IHJldGFpblB0cihjb29raWVzKTsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KaW5kZXggOWZhMDVmY2Fi
ZjEyZDljOWU4YjE0NWI4MjJiZGQ4YTliOTY4ODE1NC4uYTQzZmQ5MDhlNzUzZWEwZmExN2IzNTEx
NTI2ZGZjYzdmYTBkZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VNYWluLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwg
Y29uc3QgY2hhcioqKQogICAgICAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgICAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpleGlzdGluZ0FyZ3VtZW50cyA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9t
YWluXTsKICAgICAgICAgICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpuZXdBcmd1bWVudHMg
PSBbZXhpc3RpbmdBcmd1bWVudHMgbXV0YWJsZUNvcHldOwotICAgICAgICAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheSAqPiBuZXdMYW5ndWFnZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG5ld0xhbmd1YWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwogICAgICAgICAgICAgICAgIHhwY19hcnJheV9hcHBseShsYW5ndWFnZXMsIF4oc2l6ZV90
IGluZGV4LCB4cGNfb2JqZWN0X3QgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgW25ld0xh
bmd1YWdlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnhwY19zdHJpbmdf
Z2V0X3N0cmluZ19wdHIodmFsdWUpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQppbmRleCBjOWJiMWI1ZmE1
NDc1NDJjM2M0NmM5YzNiOTU0NjhjNmY1YmFiOWUxLi5kNjg1ZGI5ZDE2OGU1NWE4NTcxMzVhZTMx
MjNjNzIxODU2MzIzODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQpAQCAtNTcsNyArNTcsNyBAQCBAaW1wbGVtZW50
YXRpb24gX1dLVGh1bWJuYWlsVmlldyB7CiAgICAgQ0dGbG9hdCBfbGFzdFNuYXBzaG90U2NhbGU7
CiAgICAgQ0dTaXplIF9sYXN0U25hcHNob3RNYXhpbXVtU2l6ZTsKIAotICAgIFJldGFpblB0cjxO
U0NvbG9yICo+IF9vdmVycmlkZUJhY2tncm91bmRDb2xvcjsKKyAgICBSZXRhaW5QdHI8TlNDb2xv
cj4gX292ZXJyaWRlQmFja2dyb3VuZENvbG9yOwogfQogCiBAc3ludGhlc2l6ZSBzbmFwc2hvdFNp
emU9X3NuYXBzaG90U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDFiMTZlOWY5
ZmM3YWIwYzY0NGI5ZTE1MmIxYWU1OTg5MTZmNzZlN2IuLjc0NWM4ZWJhY2ZkM2EyZjYxMmFmNTkz
NDQ4MTFhMWI5MjRjOGExNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMTUxLDcg
KzE1MSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHVpbnQ2NF90IG1fc2hv
d1BheW1lbnRVSVJlcXVlc3RTZWVkIHsgMCB9OwogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gbV9z
aGVldFdpbmRvdzsKLSAgICBSZXRhaW5QdHI8TlNPYmplY3QgKj4gbV9zaGVldFdpbmRvd1dpbGxD
bG9zZU9ic2VydmVyOworICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxD
bG9zZU9ic2VydmVyOwogI2VuZGlmCiAgICAgCiAjaWYgZGVmaW5lZChXRUJQQVlNRU5UQ09PUkRJ
TkFUT1JQUk9YWV9BRERJVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDI5N2Y5Njhi
MzUyOWUwYzM1NWNkNGRiMWE4OTljMjBlOGNjOTAyNGQuLjNlMjY4Y2U2MjY4ODYyZGZjOTE3MThj
MGViMTQ0NzlmYWZkNzRjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0xMTEsNyArMTEx
LDcgQEAgcHJpdmF0ZToKICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqIG1fbWFuYWdl
cjsKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsOwogICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwotICAgIFJldGFpblB0cjxQbGF0Zm9y
bVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OworICAgIFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+IG1f
bGF5ZXJIb3N0VmlldzsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50Kj4gbV9jbGllbnRzOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3ZpZGVvRGltZW5z
aW9uczsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggYzdlOTRh
OGQ0N2Y4MzBkNmNlMDRlZWM0NWM5NWRiNTAzMDIwM2E5OS4uNjA5OTk2N2JkZjcwMjkwZTBlOGI4
NWJjNzNhODU0NDgzYWVjZmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9hY3Rp
dmF0aW9uT2JzZXJ2ZXI7Ci0gICAgUmV0YWluUHRyPFdLUGxhY2Vob2xkZXJNb2RhbFdpbmRvdyAq
PiBtX3BsYWNlaG9sZGVyV2luZG93OworICAgIFJldGFpblB0cjxXS1BsYWNlaG9sZGVyTW9kYWxX
aW5kb3c+IG1fcGxhY2Vob2xkZXJXaW5kb3c7CiAgICAgYm9vbCBtX21vZGFsV2luZG93SXNTaG93
aW5nOwogICAgIGJvb2wgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93aW5nOwogICAgIHVuc2lnbmVk
IG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggM2Q1OGFjZjI3MzYyNTA4ZjI3MWQ2Y2E2YmUz
MzI5MDY0ZGEzOWNlNi4uYzFmY2EyYjhjNTg4NGFmN2M4ZjdiOGNiMzU0YmRlYjBjYWFmNTI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtMTI4LDcgKzEy
OCw3IEBAIFJldGFpblB0cjxXS0VtYmVkZGVkVmlldz4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlRW1iZWRkZWRWaWV3KGNvbnN0IFJlbW90ZUxhCiAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJl
ZUhvc3QpCiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IG1fZW1iZWRkZWRWaWV3cy5lbnN1cmUocHJvcGVydGllcy5lbWJl
ZGRlZFZpZXdJRCwgWyZdKCkgLT4gUmV0YWluUHRyPFVJVmlldyAqPiB7CisgICAgYXV0byByZXN1
bHQgPSBtX2VtYmVkZGVkVmlld3MuZW5zdXJlKHByb3BlcnRpZXMuZW1iZWRkZWRWaWV3SUQsIFsm
XSgpIC0+IFJldGFpblB0cjxVSVZpZXc+IHsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0aWVzLnR5
cGUpIHsKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUVkaXRhYmxlSW1hZ2VMYXllcjogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggNGNlMjA3MGVkYmMzNDg4
ZDVjOWFmOTEyMWI0ZmJiYTdjMTYzNWI2OS4uNTgzNjE0YTBkMDRjNmVkZTFhZTk4YzViMTZmNjNh
MzExOGU5MzEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgdWludDMyX3QgUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tOjpob3N0aW5nQ29udGV4dElEKCkKIAogUmVmPFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyKSBjb25zdAogewotICAgIFJldGFpblB0cjxDQUxheWVyICo+
IGNsb25lZExheWVyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBjbG9uZWRMYXllcjsKICAgICBi
b29sIGNvcHlDb250ZW50cyA9IHRydWU7CiAKICAgICBpZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJU
eXBlQVZQbGF5ZXJMYXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5LmgKaW5kZXgg
NzQyZDRjNGM3ZmE5ZDFiN2QyMDhjMDVlNGQxZjIyNzhkYTRlM2UzMy4uOGQwYmE2ZmQ1MGExNDY2
NGY0ZTdiYzFjNTVlYjc3ZGM5Zjk4NDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94
eS5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENGTWFjaFBvcnRS
ZWY+IG1fZGVhZE5hbWVOb3RpZmljYXRpb25Qb3J0OwogICAgIAogICAgIFJldGFpblB0cjxpZD4g
bV9hY3RpdmF0aW9uT2JzZXJ2ZXI7Ci0gICAgUmV0YWluUHRyPFdlYlBsYWNlaG9sZGVyTW9kYWxX
aW5kb3cgKj4gbV9wbGFjZWhvbGRlcldpbmRvdzsKKyAgICBSZXRhaW5QdHI8V2ViUGxhY2Vob2xk
ZXJNb2RhbFdpbmRvdz4gbV9wbGFjZWhvbGRlcldpbmRvdzsKICAgICB1bnNpZ25lZCBtX2lzTW9k
YWw7CiAgICAgYm9vbCBtX21lbnVCYXJJc1Zpc2libGU7CiAgICAgYm9vbCBtX2Z1bGxzY3JlZW5X
aW5kb3dJc1Nob3dpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCmlu
ZGV4IDY1MjA1ZmM0YzdkNmQxZTY4N2E4YWJlYTU0NDdhN2Y2Zjk3ZDQxMDAuLjEwYTA4ZTk1MGEz
ZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSYgZGVzdFgsIGRvdWJsZSYgZGVzdFksIE5QQ29vcmRpbmF0ZVNwYWNl
IGRlc3RTcGFjZSk7CiAKICAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IGNyZWF0
ZUJpbmRpbmdzSW5zdGFuY2UoUmVmPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+JiYpOwotICAg
IFJldGFpblB0cjxOU0RhdGEgKj4gbWFyc2hhbFZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6QXJnTGlzdCYgYXJncyk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gbWFyc2hhbFZhbHVl
cyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncyk7CiAgICAgdm9pZCBt
YXJzaGFsVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGRhdGFfdCYgcmVzdWx0
RGF0YSwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCYgcmVzdWx0TGVuZ3RoKTsKICAgICBKU0M6OkpT
VmFsdWUgZGVtYXJzaGFsVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiB2YWx1ZURh
dGEsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdmFsdWVMZW5ndGgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYzY5Mjg0MTFlYmU5ODM0ZTNkOGQ2NDNj
MWMxZmY2NDFjMzU0NTQzMC4uOTFjNjA1ZTQ4ZGRjYjIzZGI0NWQzYjVjNjVkNTlmYmQ4M2Y0ZTkz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTAxLDgg
KzEwMSw4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIHVpbnQzMl90IG1fcmVxdWVzdElE
OwotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3QqPiBtX3JlcXVlc3Q7Ci0gICAgUmV0YWluUHRy
PE5TU3RyaW5nKj4gbV9mcmFtZU5hbWU7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9y
ZXF1ZXN0OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9mcmFtZU5hbWU7CiAgICAgYm9vbCBt
X2FsbG93UG9wdXBzOwogfTsKIApAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiBy
ZXN1bHREYXQKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKCZ2bSwgUHJvcGVy
dHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwogICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5Kj4gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
KyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3Bl
cnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgdWludDY0X3QgbWV0aG9kTmFtZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihwcm9wZXJ0
eU5hbWVzW2ldLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKIApAQCAtMTM0Niw3ICsxMzQ2LDcg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheShOU011
dGFibGVBcnJheSAqYXJyYXksIEV4ZWNTdGEKIAogdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6Om1hcnNoYWxWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIGRhdGFf
dCYgcmVzdWx0RGF0YSwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCYgcmVzdWx0TGVuZ3RoKQogewot
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBhcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIAogICAgIGFk
ZFZhbHVlVG9BcnJheShhcnJheS5nZXQoKSwgZXhlYywgdmFsdWUpOwogCkBAIC0xMzU5LDkgKzEz
NTksOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bWFyc2hhbFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgZAogICAgIG1lbWNweShyZXN1bHREYXRhLCBk
YXRhLmJ5dGVzLCByZXN1bHRMZW5ndGgpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhICo+IE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bWFyc2hhbFZhbHVlcyhFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCitSZXRhaW5QdHI8TlNEYXRhPiBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6Om1hcnNoYWxWYWx1ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyBpKyspCiAgICAgICAgIGFk
ZFZhbHVlVG9BcnJheShhcnJheS5nZXQoKSwgZXhlYywgYXJncy5hdChpKSk7CkBAIC0xNDI2LDcg
KzE0MjYsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFs
dWVGcm9tQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOU0FycgogCiBKU1ZhbHVlIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6ZGVtYXJzaGFsVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBj
aGFyKiB2YWx1ZURhdGEsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdmFsdWVMZW5ndGgpCiB7Ci0g
ICAgUmV0YWluUHRyPE5TRGF0YSo+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKil2YWx1ZURhdGEgbGVuZ3RoOnZhbHVlTGVuZ3RoIGZyZWVX
aGVuRG9uZTpOT10pOworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKil2YWx1ZURhdGEgbGVuZ3RoOnZh
bHVlTGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOwogCiAgICAgTlNBcnJheSAqYXJyYXkgPSBbTlNQ
cm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOmRhdGEuZ2V0KCkg
b3B0aW9uczpOU1Byb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxs
cHRyXTsKIApAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgSlNWYWx1ZSBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhcioKIAog
dm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlcyhFeGVjU3Rh
dGUqIGV4ZWMsIGRhdGFfdCB2YWx1ZXNEYXRhLCBtYWNoX21zZ190eXBlX251bWJlcl90IHZhbHVl
c0xlbmd0aCwgTWFya2VkQXJndW1lbnRCdWZmZXImIHJlc3VsdCkKIHsKLSAgICBSZXRhaW5QdHI8
TlNEYXRhKj4gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0Nv
cHk6dmFsdWVzRGF0YSBsZW5ndGg6dmFsdWVzTGVuZ3RoIGZyZWVXaGVuRG9uZTpOT10pOworICAg
IFJldGFpblB0cjxOU0RhdGE+IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzTm9Db3B5OnZhbHVlc0RhdGEgbGVuZ3RoOnZhbHVlc0xlbmd0aCBmcmVlV2hlbkRvbmU6
Tk9dKTsKIAogICAgIE5TQXJyYXkgKmFycmF5ID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlv
biBwcm9wZXJ0eUxpc3RXaXRoRGF0YTpkYXRhLmdldCgpIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJ
bW11dGFibGUgZm9ybWF0Om51bGxwdHIgZXJyb3I6bnVsbHB0cl07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmlu
ZGV4IGZlNTA4ODYwZWM3OTc5ZGQ2ZDAwNjUxMGE1OGQ4MGVkNmU0Y2MxNjkuLjIwMmM2ZGVhZjEz
ZDA3YzZlM2E1Njk4YjFjZGI1OWExOWI1ZGEwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBJbnZva2VUeXBlIHR5cGUsIHVpbnQ2NF90IGlkCiAgICAgaWYgKCFtX2luc3RhbmNlUHJv
eHkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0
YSo+IGFyZ3VtZW50cyhtX2luc3RhbmNlUHJveHktPm1hcnNoYWxWYWx1ZXMoZXhlYywgYXJncykp
OworICAgIFJldGFpblB0cjxOU0RhdGE+IGFyZ3VtZW50cyhtX2luc3RhbmNlUHJveHktPm1hcnNo
YWxWYWx1ZXMoZXhlYywgYXJncykpOwogCiAgICAgdWludDMyX3QgcmVxdWVzdElEID0gbV9pbnN0
YW5jZVByb3h5LT5uZXh0UmVxdWVzdElEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0K
aW5kZXggY2IwODNiZmMxMjBjYzY5YWIyODZhZTI4NDQxNzUzOGQyYWIyYzQ3Mi4uMmNmNzE1ZTJk
OTBkZmU3NjY4NDg4YmMxNzQ1MWIxM2VkYjJlMzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQubW0KQEAgLTU2LDcgKzU2LDcgQEAgQGVuZAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgogewog
ICAgIFJlZlB0cjxHZW9sb2NhdGlvbj4gX2dlb2xvY2F0aW9uOwotICAgIFJldGFpblB0cjxXZWJW
aWV3ICo+IF93ZWJWaWV3OworICAgIFJldGFpblB0cjxXZWJWaWV3PiBfd2ViVmlldzsKIH0KIC0g
KGlkKWluaXRXaXRoR2VvbG9jYXRpb246KEdlb2xvY2F0aW9uKilnZW9sb2NhdGlvbiBmb3JXZWJW
aWV3OihXZWJWaWV3Kil3ZWJWaWV3OwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDY0NWIxYjI0YWEyNmIwMTY2OGI4ZjE1
MmRiN2IxM2M1NzIzOGY2ZmUuLjUxODAyY2MxODBkYzY1YTFhNTMwZmZlZjc3NjRmNzhiNDBhMmRk
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KQEAgLTI0Niw3ICsyNDYsNyBAQCAtICh2b2lkKV9maW5pc2hlZExvYWRpbmcKIC0gKHZv
aWQpX3JlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YQogewogICAgIC8vIHByb3RlY3Qgc2VsZiB0
ZW1wb3JhcmlseSwgYXMgdGhlIGJyaWRnZSByZWNlaXZlZERhdGEgY2FsbCBjb3VsZCByZW1vdmUg
b3VyIGxhc3QgcmVmCi0gICAgUmV0YWluUHRyPFdlYkRhdGFTb3VyY2UqPiBwcm90ZWN0KHNlbGYp
OworICAgIFJldGFpblB0cjxXZWJEYXRhU291cmNlPiBwcm90ZWN0KHNlbGYpOwogICAgIAogICAg
IFtbc2VsZiByZXByZXNlbnRhdGlvbl0gcmVjZWl2ZWREYXRhOmRhdGEgd2l0aERhdGFTb3VyY2U6
c2VsZl07CiAgICAgW1tbW3NlbGYgd2ViRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBk
YXRhU291cmNlVXBkYXRlZDpzZWxmXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCA0YjY2MTI3ODQ3MGQzYTRiYzhlNmVlNTViMWNkMzM1MDA0MGY2ZTlk
Li5mMjQ3YjAzMDEyYWY4MzUzYmZjNzllYzIyMDY0OWZjNWE5NTlmMTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zNjYxLDcgKzM2NjEsNyBAQCAt
ICh2b2lkKV9kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3Ig
Zm9yRnJhbWU6KFdlYkZyYW1lICopZgogCiAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopX2NhY2hl
ZFJlc3BvbnNlRm9yVVJMOihOU1VSTCAqKVVSTAogewotICAgIFJldGFpblB0cjxOU011dGFibGVV
UkxSZXF1ZXN0ICo+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6VVJMXSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+
IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhV
Ukw6VVJMXSk7CiAgICAgW3JlcXVlc3QgX3dlYl9zZXRIVFRQVXNlckFnZW50OltzZWxmIHVzZXJB
Z2VudEZvclVSTDpVUkxdXTsKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25z
ZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDI4NDJkODAwMTgyYWQ3MWY2YWExMzA4ZTQ1ZTQ3YTZjYjgyNDgxZTMuLjA2YzVlZmE5OWIwNTcx
ZmI1ZDFjYTIwNGRiNDVjNGNiNWFiMjQzNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxOC0xMi0yOSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFByZWZlciBSZXRhaW5QdHI8
TlNPYmplY3Q+IHRvIFJldGFpblB0cjxOU09iamVjdCAqPgorICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTkzMDU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAt
IElnbm9yZSB1c2Ugb2YgbmV3IHJ1bnRpbWUvcmV0YWlucHRyIGNoZWNrIGluCisgICAgICAgICAg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tIHNpbmNlIGl0Cisg
ICAgICAgICAgY29udGFpbnMgdGVzdHMgdG8gZW5zdXJlIFJldGFpblB0cjxOU09iamVjdCAqPiBp
cyBjb21wYXRpYmxlCisgICAgICAgICAgd2l0aCBSZXRhaW5QdHI8TlNPYmplY3Q+LgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgIChj
aGVja19sYW5ndWFnZSk6CisgICAgICAgIChDcHBDaGVja2VyKToKKyAgICAgICAgLSBBZGQgY2hl
Y2tlciBmb3IgdXNlIG9mICcqJyBpbiBSZXRhaW5QdHI8PiB0eXBlLiAgQSBmb3IgbG9vcAorICAg
ICAgICAgIHdhcyB1c2VkIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVnZXggc28gdGhhdCBhbmdsZSBi
cmFja2V0cworICAgICAgICAgIGNvdWxkIGJlIG1hdGNoZWQgdXAgd2hlbiBjaGVja2luZyB0aGUg
dHlwZSBjb250YWluZWQgd2l0aGluCisgICAgICAgICAgdGhlIFJldGFpblB0cjw+IHR5cGUuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5w
eToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6CisgICAgICAgIC0gQWRkIHVuaXQgdGVzdCBmb3Ig
bmV3IHJ1bnRpbWUvcmV0YWlucHRyIGNoZWNrLgorCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLmg6CisgICAgICAgIC0gUmVtb3ZlICcq
JyBmcm9tIFJldGFpblB0cjw+IHR5cGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgY2YvUmV0
YWluUHRyLmNwcCBiYWNrIHRvIFRlc3RXVEZMaWJyYXJ5IHRhcmdldCEgIFRoaXMKKyAgICAgICAg
ICByZWdyZXNzZWQgaW4gcjIwMTkzOC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL2NmL1JldGFpblB0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgLSBVcGRhdGUgdGVzdHMgdG8gbWF0Y2ggUmV0YWluUHRyLm1tIHRlc3RzIChleGNlcHQg
Zm9yIHRoZQorICAgICAgICAgIGAqU2ltaWxhck5TVHlwZWAgdGVzdHMgc2luY2UgdGhlcmUgaXMg
bm8gQ0YgZXF1aXZhbGVudCBvZgorICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gYW5kIFJl
dGFpblB0cjxOU1N0cmluZyAqPikuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9ucy9SZXRhaW5QdHIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgLSBVcGRhdGUgdGVzdHMgdG86CisgICAgICAgICAgLSBOb3QgY29uZmxpY3QgYnkgbmFtZSB3
aXRoIGVxdWl2YWxlbnQgQ0YgdGVzdHMgaW4KKyAgICAgICAgICAgIFJldGFpblB0ci5jcHAuCisg
ICAgICAgICAgLSBBZGQgdGVzdCBjYXNlcyBmb3IgUmV0YWluUHRyPE5TT2JqZWN0PiwKKyAgICAg
ICAgICAgIFJldGFpblB0cjxOU09iamVjdCAqPiBhbmQgUmV0YWluUHRyPGlkPiB3ZXJlIGFwcHJv
cHJpYXRlLgorICAgICAgICAgIC0gQWRkIGAqU2ltaWxhck5TVHlwZWAgdGVzdHMgZm9yIGNvbnZl
cnRpbmcgYmV0d2VlbgorICAgICAgICAgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBhbmQgUmV0YWlu
UHRyPE5TT2JqZWN0ICo+LgorICAgICAgICAgIC0gQ2hhbmdlIGAwYCB0byBgbmlsYCBhcyBhcHBy
b3ByaWF0ZS4KKyAgICAgICAgICAtIFJlLWFscGhhYmV0aXplIHRoZSB0ZXN0cyBieSBuYW1lLgor
ICAgICAgICAgIC0gQWRkIE9wdGlvbmFsPFJldGFpblB0cjw+PiB0ZXN0cy4KKyAgICAgICAgICAt
IEFkZCByZXRhaW5QdHIoKSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9n
cmVzc1Rlc3RSdW5uZXIgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAtIFJlbW92ZSAnKicgZnJvbSBSZXRhaW5QdHI8PiB0eXBlLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tOgorICAgICAgICAo
VEVTVChXZWJLaXQsIEpJVEVuYWJsZWQpKToKKyAgICAgICAgLSBBZGQgbWlzc2luZyBXVEZNb3Zl
KCkuICBBcHBhcmVudGx5IGEgdGVtcG9yYXJ5IHdhcyBiZWluZworICAgICAgICAgIGNyZWF0ZWQg
YmVmb3JlIGluIHRoZSBhcmd1bWVudCBsaXN0IGR1ZSB0byBtaXNtYXRjaGVkCisgICAgICAgICAg
UmV0YWluUHRyPD4gdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW06CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9BY3RpdmF0ZUZvbnRzQ29jb2EubW06Cisg
ICAgICAgIChXVFI6OnJlc291cmNlc0RpcmVjdG9yeVVSTCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW06CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToKKyAgICAgICAgLSBS
ZW1vdmUgJyonIGZyb20gUmV0YWluUHRyPD4gdHlwZS4KKwogMjAxOC0xMi0yNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBN
YWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRl
eCAxNzQyNDkzNGUxODdmZDdkYzMxMThiZjJjNDFkNmRmNmNmMmY5NjBhLi5mMzA3NjUwMWU1OGNi
MzRjNjhiYjgwZWJiZGY1YTVmMmFlMTBlMTE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5CkBAIC0xNDIsNiArMTQyLDkgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0g
WwogICAgICAgb3MucGF0aC5qb2luKCdUb29scycsICdEdW1wUmVuZGVyVHJlZScsICdUZXN0TmV0
c2NhcGVQbHVnSW4nKV0sCiAgICAgIFsiLWJ1aWxkL2luY2x1ZGUiLAogICAgICAgIi1yZWFkYWJp
bGl0eS9uYW1pbmciXSksCisgICAgKFsgICMgSWdub3JlIHVzZSBvZiBSZXRhaW5QdHI8TlNPYmpl
Y3QgKj4gZm9yIHRlc3RzIHRoYXQgZW5zdXJlIGl0cyBjb21wYXRpYmlsaXR5IHdpdGggUmV0ZWFp
blB0cjxOU09iamVjdD4uCisgICAgICBvcy5wYXRoLmpvaW4oJ1Rvb2xzJywgJ1Rlc3RXZWJLaXRB
UEknLCAnVGVzdHMnLCAnV1RGJywgJ25zJywgJ1JldGFpblB0ci5tbScpXSwKKyAgICAgWyItcnVu
dGltZS9yZXRhaW5wdHIiXSksCiAgICAgKFsgICMgVGhlcmUgaXMgbm8gY2xlYW4gd2F5IHRvIGF2
b2lkICJ5eV8qIiBuYW1lcyB1c2VkIGJ5IGZsZXguCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJj
ZScsICdXZWJDb3JlJywgJ2NzcycsICdDU1NQYXJzZXIuY3BwJyksCiAgICAgICAjIFRlc3RXZWJL
aXRBUEkgdXNlcyBmdW5ueSBtYWNyb3MgbGlrZSBFWFBFQ1RfV0tfU1RSRVEuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDhjZDJjMDUyNjgyZTNj
ZTM3ZDQyNzBlODAxOWRmYmQ2NDc3M2VjMWMuLmNlZDk3M2Y4MmVlZDk3ODQ0OTZiYzI1NWQ0OGYy
MjFjOTI1OWE1MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwLnB5CkBAIC0zMzEzLDYgKzMzMTMsMjUgQEAgZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1l
LCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3MKICAg
ICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL2Rpc3BhdGNoX3NldF90YXJnZXRfcXVl
dWUnLCA1LAogICAgICAgICAgICAgICAnTmV2ZXIgdXNlIGRpc3BhdGNoX3NldF90YXJnZXRfcXVl
dWUuICBVc2UgZGlzcGF0Y2hfcXVldWVfY3JlYXRlX3dpdGhfdGFyZ2V0IGluc3RlYWQuJykKIAor
ICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihSZXRhaW5QdHI8LiopJywgbGluZSkKKyAgICBpZiBt
YXRjaGVkOgorICAgICAgICBtYXRjaF9saW5lID0gbWF0Y2hlZC5ncm91cCgxKQorICAgICAgICBu
ZXN0ZWRfYW5nbGVfYnJhY2tldF9jb3VudCA9IDEKKyAgICAgICAgcHJldmlvdXNfY2xvc2luZ19h
bmdsZV9icmFja2V0X2luZGV4ID0gLTEKKyAgICAgICAgY2xvc2luZ19hbmdsZV9icmFja2V0X2lu
ZGV4ID0gOSAjIFVzZWQgaWYgb25seSBvbmUgcGFpciBvZiBhbmdsZSBicmFja2V0cy4KKyAgICAg
ICAgZm9yIGkgaW4geHJhbmdlKDEwLCBsZW4obWF0Y2hfbGluZSkgLSAxKToKKyAgICAgICAgICAg
IGlmIG1hdGNoX2xpbmVbaV0gPT0gJzwnOgorICAgICAgICAgICAgICAgIG5lc3RlZF9hbmdsZV9i
cmFja2V0X2NvdW50ICs9IDEKKyAgICAgICAgICAgIGlmIG1hdGNoX2xpbmVbaV0gPT0gJz4nOgor
ICAgICAgICAgICAgICAgIG5lc3RlZF9hbmdsZV9icmFja2V0X2NvdW50IC09IDEKKyAgICAgICAg
ICAgICAgICBwcmV2aW91c19jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5kZXggPSBjbG9zaW5nX2Fu
Z2xlX2JyYWNrZXRfaW5kZXgKKyAgICAgICAgICAgICAgICBjbG9zaW5nX2FuZ2xlX2JyYWNrZXRf
aW5kZXggPSBpCisgICAgICAgICAgICBpZiBuZXN0ZWRfYW5nbGVfYnJhY2tldF9jb3VudCA9PSAw
OgorICAgICAgICAgICAgICAgIGlmICIqIiBpbiBtYXRjaF9saW5lW3ByZXZpb3VzX2Nsb3Npbmdf
YW5nbGVfYnJhY2tldF9pbmRleDpjbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5kZXhdOgorICAgICAg
ICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvcmV0YWlucHRyJywgNSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBjb250
YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+LicpCisgICAgICAgICAgICAgICAgYnJlYWsKKwogICAgICMgQ2hl
Y2sgZm9yIHN1c3BpY2lvdXMgdXNhZ2Ugb2YgImlmIiBsaWtlCiAgICAgIyB9IGlmIChhID09IGIp
IHsKICAgICBpZiBzZWFyY2gocidcfVxzKmlmXHMqXCgnLCBsaW5lKToKQEAgLTQwNTIsNiArNDA3
MSw3IEBAIGNsYXNzIENwcENoZWNrZXIob2JqZWN0KToKICAgICAgICAgJ3J1bnRpbWUvcHJpbnRm
JywKICAgICAgICAgJ3J1bnRpbWUvcHJpbnRmX2Zvcm1hdCcsCiAgICAgICAgICdydW50aW1lL3Jl
ZmVyZW5jZXMnLAorICAgICAgICAncnVudGltZS9yZXRhaW5wdHInLAogICAgICAgICAncnVudGlt
ZS9ydHRpJywKICAgICAgICAgJ3J1bnRpbWUvc2l6ZW9mJywKICAgICAgICAgJ3J1bnRpbWUvc29m
dC1saW5rZWQtYWxsb2MnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRleCAzMThkMWMzZTdhZDE4ZDIxNGQ5ZTUwMjAy
ZDMwOWIyMGYzOWNkZTI5Li5kNmFkM2IyM2Q1M2RkYmM3MGRhNTc2ZDQwNWQxMzNmMjZmODI5ZDgy
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cF91bml0dGVzdC5weQpAQCAtMTY2Nyw2ICsxNjY3LDI3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChD
cHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICcgIFtydW50aW1lL2Rpc3BhdGNoX3NldF90
YXJnZXRfcXVldWVdIFs1XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2dsb2JhbFF1ZXVl
ID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlX3dpdGhfdGFyZ2V0KCJNeSBTZXJpYWwgUXVldWUiLCBE
SVNQQVRDSF9RVUVVRV9TRVJJQUwsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hf
UVVFVUVfUFJJT1JJVFlfSElHSCwgMCkpOycsICcnKQogCisgICAgZGVmIHRlc3RfcmV0YWlucHRy
X3BvaW50ZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAn
JydSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmKj4gbV9jZlJ1bkxvb3A7JycnLAorICAgICAgICAgICAg
J1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3Jy
ZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicKKyAgICAg
ICAgICAgICcgIFtydW50aW1lL3JldGFpbnB0cl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9jZlJ1bkxvb3A7JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnJydSZXRhaW5QdHI8TlNSdW5Mb29wKj4g
bV9uc1J1bkxvb3A7JycnLAorICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBj
b250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicKKyAgICAgICAgICAgICcgIFtydW50aW1lL3JldGFpbnB0
cl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmV0YWluUHRyPE5TUnVuTG9vcD4g
bV9uc1J1bkxvb3A7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAg
ICAnJydSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICo+IG1fZWRpdG9y
U3RhdGVIaXN0b3J5OycnJywKKyAgICAgICAgICAgICdSZXRhaW5QdHI8PiBzaG91bGQgbmV2ZXIg
Y29udGFpbiBhIHR5cGUgd2l0aCBcJypcJy4gQ29ycmVjdDogUmV0YWluUHRyPE5TU3RyaW5nPiwg
UmV0YWluUHRyPENGU3RyaW5nUmVmPi4nCisgICAgICAgICAgICAnICBbcnVudGltZS9yZXRhaW5w
dHJdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnJydSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TQXJyYXk8TlNTdHJpbmcgKj4+ICo+IGRp
Y3Rpb25hcnk7JycnLAorICAgICAgICAgICAgJ1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBjb250
YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBDb3JyZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+LicKKyAgICAgICAgICAgICcgIFtydW50aW1lL3JldGFpbnB0cl0g
WzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnJydSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
PE5TU3RyaW5nICosIE5TQXJyYXk8TlNTdHJpbmcgKj4+PiBkaWN0aW9uYXJ5OycnJywgJycpCisK
ICAgICAjIFZhcmlhYmxlLWxlbmd0aCBhcnJheXMgYXJlIG5vdCBwZXJtaXR0ZWQuCiAgICAgZGVm
IHRlc3RfdmFyaWFibGVfbGVuZ3RoX2FycmF5X2RldGVjdGlvbihzZWxmKToKICAgICAgICAgZXJy
bXNnID0gKCdEbyBub3QgdXNlIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMuICBVc2UgYW4gYXBwcm9w
cmlhdGVseSBuYW1lZCAnCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0V2ZW50
U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLmggYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL0V2ZW50U2VyaWFsaXphdGlvbi9tYWMvRXZlbnRTZXJpYWxpemVyTWFjLmgKaW5kZXgg
MmNkMmQ1NWRmYjVkOWRkZmFlY2MwMWRlYmNkNTU2OWFlZDFjZDdlYS4uOTAyOGYwMGI4YjU3MzYz
MTdlZWViMDU1OGVhOTM4OGRhMzkwNjQ0YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9FdmVudFNlcmlhbGl6YXRpb24vbWFjL0V2ZW50U2VyaWFsaXplck1hYy5oCisrKyBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvRXZlbnRTZXJpYWxpemF0aW9uL21hYy9FdmVudFNlcmlhbGl6
ZXJNYWMuaApAQCAtMzgsOCArMzgsOCBAQAogQGVuZAogCiBAaW50ZXJmYWNlIEV2ZW50U3RyZWFt
UGxheWVyIDogTlNPYmplY3QgewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSAqPiBfcmVt
YWluaW5nRXZlbnREaWN0aW9uYXJpZXM7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93ICo+IF93aW5k
b3c7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfcmVtYWluaW5nRXZlbnREaWN0aW9u
YXJpZXM7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiBfd2luZG93OwogICAgIEJsb2NrUHRyPHZv
aWQgKCk+IF9jb21wbGV0aW9uSGFuZGxlcjsKICAgICB1aW50NjRfdCBfc3RhcnRUaW1lOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0aW5nVGVzdEhhcm5lc3MuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLmgKaW5kZXggMzNlMjZjMzYyNDcy
MTQwMGU5MDQwMGQ4MjU5ZWE3N2UxZjQ4NDU1ZC4uMjlhZjMyMTYxYzc1MzBmMjZlYjYxYWIxNzMz
MzE3YzFkMWQxM2RlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0aW5nVGVz
dEhhcm5lc3MuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVzcy5o
CkBAIC0zMSw4ICszMSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
PgogCiBAaW50ZXJmYWNlIEVkaXRpbmdUZXN0SGFybmVzcyA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0
ZVByaXZhdGU+IHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNEaWN0aW9uYXJ5ICo+
ICo+IF9lZGl0b3JTdGF0ZUhpc3Rvcnk7Ci0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXcgKj4g
X3dlYlZpZXc7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TRGljdGlvbmFyeSAqPj4g
X2VkaXRvclN0YXRlSGlzdG9yeTsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZp
ZXc7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcg
Kil3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzE0MzI4ZmVkNGVhMTExOWZl
MzVkMWE1OWNmNTRkY2FlZWU5MjI3Li41NGE4OWI4MGMzZWY4ZWNhZmRhMTFjMjljZTc4M2I4MjQ2
YjM4ZDFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcxLDYgKzE3MSw3IEBACiAJCTQ0
MzNBMzk2MjA4MDQ0MTQwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzNBMzk1MjA4MDQ0
MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLzsgfTsKIAkJNDQ4MTdB
MkYxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4MTdBMkUxRjA0
ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovOyB9Owog
CQk0NDhEN0U0NzFFQTZDNTU1MDBFQ0M3NTYgLyogRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEQ3RTQ1
MUVBNkM1NTUwMEVDQzc1NiAvKiBFbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwICovOyB9Owor
CQk0NEFDOEJDNjIxRDAyNDVBMDBDQUZCMzQgLyogUmV0YWluUHRyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDI5QjE2MTQ4NkFENjQwMDgxN0RB
OSAvKiBSZXRhaW5QdHIuY3BwICovOyB9OwogCQk0NjEyQzJCOTIxMEE2QUNFMDBCNzg4QTYgLyog
TG9hZEZpbGVUaGVuUmVsb2FkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYxMkMyQjgyMTBBNkFCRjAwQjc4OEE2IC8qIExvYWRGaWxlVGhlblJlbG9h
ZC5tbSAqLzsgfTsKIAkJNDYzOTdCOTUxREMyQzg1MDAwOUE3OEFFIC8qIERPTU5vZGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM5N0I5NDFEQzJD
ODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLzsgfTsKIAkJNDY0N0IxMjYxRUJBM0I4NTAwNDFE
N0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NE
aWRUZXJtaW5hdGUuY3BwICovOyB9OwpAQCAtMzc4MSw2ICszNzgyLDcgQEAKIAkJCQk3QzgzREYx
NTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREVENzFEMEE1OTBDMDBGRUJDRjMgLyogUmVmTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNERjE2MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDRBQzhCQzYyMUQwMjQ1QTAwQ0FGQjM0IC8qIFJldGFpblB0ci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREYyNDFEMEE1OTBDMDBGRUJDRjMgLyogUmV0YWluUHRyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RGMDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0YWluUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL2NmL1JldGFpblB0ci5jcHAKaW5kZXggMDAzM2YzYjhiYzY4OWIyNzFl
ZDA2NGQ0NzhiOGI2YjY3NTI0NzA4NS4uYzljZmVmMTljM2I3YzVlMTY4MGU2YjgzZjIzOWVlNjhj
OGE2NGI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY2YvUmV0
YWluUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9jZi9SZXRhaW5Q
dHIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5LDE0ICsyOSwxNTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFJldGFpblB0ciwgQWRvcHRDRikKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZm9vID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bGxwdHIpKTsKKyAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gYXJyYXkxID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG51bGxwdHIsIDAsIG51bGxwdHIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5D
b3VudChhcnJheTEuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfRVEoMCwgQ0ZBcnJheUdldENvdW50KGFy
cmF5MS5nZXQoKSkpOwogCi0gICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQoZm9vLmdl
dCgpKSk7CisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gYXJyYXkyID0gYWRvcHRDRihDRkFycmF5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG51bGxwdHIpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChhcnJheTIuZ2V0KCkpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgQ0ZBcnJheUdldENvdW50KGNoZWNrZWRfY2ZfY2FzdDxDRkFycmF5UmVmPihhcnJheTIu
Z2V0KCkpKSk7Cit9CisKK1RFU1QoUmV0YWluUHRyLCBDb25zdHJ1Y3Rpb25Gcm9tTXV0YWJsZUNG
VHlwZSkKK3sKKyAgICBDRk11dGFibGVTdHJpbmdSZWYgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVN
dXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCBDRlNUUigiZm9vIikpOworCisgICAg
Ly8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3RydWN0b3IuCisgICAg
Ly8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZh
bHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIENGVHlwZVJlZiB0aGF0IGxvZ3MgLXJl
dGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwdHIg
PSBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPihzdHJpbmcpOworCisgICAgRVhQRUNUX0VR
KHN0cmluZywgcHRyKTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHRlbXAg
PSBzdHJpbmc7CisKKyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBj
b25zdHJ1Y3Rvci4KKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHB0cjIoV1RGTW92ZSh0ZW1w
KSk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIyKTsKKyAgICBFWFBFQ1RfRVEoKENGU3Ry
aW5nUmVmKW51bGxwdHIsIHRlbXApOworfQorCitURVNUKFJldGFpblB0ciwgQ29uc3RydWN0aW9u
RnJvbVNhbWVDRlR5cGUpCit7CisgICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZTVFIoImZvbyIp
OworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3RydWN0
b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92
ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIENGVHlwZVJlZiB0aGF0
IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwdHIgPSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KHN0cmluZyk7CisKKyAgICBFWFBFQ1Rf
RVEoc3RyaW5nLCBwdHIpOworCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZW1wID0gc3Ry
aW5nOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3Ry
dWN0b3IuCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwdHIyKFdURk1vdmUodGVtcCkpOwor
CisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyMik7CisgICAgRVhQRUNUX0VRKChDRlN0cmluZ1Jl
ZiludWxscHRyLCB0ZW1wKTsKK30KKworVEVTVChSZXRhaW5QdHIsIE1vdmVBc3NpZ25tZW50RnJv
bU11dGFibGVDRlR5cGUpCit7CisgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHN0cmluZyA9IENGU3Ry
aW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgQ0ZTVFIoImZvbyIp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHB0cjsKKworICAgIC8vIFRoaXMgc2hvdWxk
IGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgLy8gRklY
TUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBX
ZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIENGVHlwZVJlZiB0aGF0IGxvZ3MgLXJldGFpbiBh
bmQgLXJlbGVhc2UgY2FsbHMuCisgICAgcHRyID0gUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1Jl
Zj4oc3RyaW5nKTsKKworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7CisKKyAgICBwdHIgPSBu
dWxscHRyOworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHRlbXAgPSBzdHJpbmc7
CisKKyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9yLgorICAgIHB0ciA9IFdURk1vdmUodGVtcCk7CisKKyAgICBFWFBFQ1RfRVEoc3Ry
aW5nLCBwdHIpOworICAgIEVYUEVDVF9FUSgoQ0ZTdHJpbmdSZWYpbnVsbHB0ciwgdGVtcCk7Cit9
CisKK1RFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdubWVudEZyb21TYW1lQ0ZUeXBlKQoreworICAg
IENGU3RyaW5nUmVmIHN0cmluZyA9IENGU1RSKCJmb28iKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHB0cjsKKworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3Zl
IGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxs
eSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVlLiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAg
IC8vIENGVHlwZVJlZiB0aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAg
cHRyID0gUmV0YWluUHRyPENGU3RyaW5nUmVmPihzdHJpbmcpOworCisgICAgRVhQRUNUX0VRKHN0
cmluZywgcHRyKTsKKworICAgIHB0ciA9IG51bGxwdHI7CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB0ZW1wID0gc3RyaW5nOworCisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0
cidzIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICBwdHIgPSBXVEZNb3ZlKHRlbXApOwor
CisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKyAgICBFWFBFQ1RfRVEoKENGU3RyaW5nUmVm
KW51bGxwdHIsIHRlbXApOworfQorCitURVNUKFJldGFpblB0ciwgT3B0aW9uYWxSZXRhaW5QdHJD
RikKK3sKKyAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBhZG9wdENGKCkuCisgICAgZmxvYXQg
dmFsdWUgPSAzLjE0MTU5MjY1MzU7CisgICAgT3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVm
Pj4gb3B0aW9uYWxPYmplY3QxID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIEVYUEVDVF9FUSgxLCBD
RkdldFJldGFpbkNvdW50KG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKSk7CisgICAgUmV0
YWluUHRyPENGTnVtYmVyUmVmPiBvYmplY3QxID0gb3B0aW9uYWxPYmplY3QxLnZhbHVlKCk7Cisg
ICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3QxKTsKKworICAgIC8v
IFRlc3QgYXNzaWdubWVudCBmcm9tIHJldGFpblB0cigpLgorICAgIE9wdGlvbmFsPFJldGFpblB0
cjxDRk51bWJlclJlZj4+IG9wdGlvbmFsT2JqZWN0MiA9IHJldGFpblB0cihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAg
IENGUmVsZWFzZShvcHRpb25hbE9iamVjdDIudmFsdWUoKS5nZXQoKSk7CisgICAgRVhQRUNUX0VR
KDEsIENGR2V0UmV0YWluQ291bnQob3B0aW9uYWxPYmplY3QyLnZhbHVlKCkuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG9iamVjdDIgPSBvcHRpb25hbE9iamVjdDIudmFsdWUo
KTsKKyAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3QyLnZhbHVlKCksIG9iamVjdDIpOworCisg
ICAgRVhQRUNUX05FKG9iamVjdDEsIG9iamVjdDIpOworCisgICAgLy8gVGVzdCBhc3NpZ25tZW50
IGZyb20gT3B0aW9uYWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4uCisgICAgb3B0aW9uYWxPYmpl
Y3QxID0gb3B0aW9uYWxPYmplY3QyOworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0MS52
YWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDEudmFsdWUoKS5nZXQoKSk7
CisgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3QyKTsKKyAgICBF
WFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDIudmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUob3B0
aW9uYWxPYmplY3QyLnZhbHVlKCkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVj
dDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICAvLyBSZXNldCBhZnRlciBhc3NpZ25tZW50IHRl
c3QuCisgICAgb3B0aW9uYWxPYmplY3QxID0gb2JqZWN0MTsKKyAgICBFWFBFQ1RfRVEob3B0aW9u
YWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDEpOworICAgIEVYUEVDVF9FUShvcHRpb25hbE9iamVj
dDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICAvLyBUZXN0IG1vdmUgZnJvbSBPcHRpb25hbDxS
ZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pi4KKyAgICBvcHRpb25hbE9iamVjdDEgPSBXVEZNb3ZlKG9w
dGlvbmFsT2JqZWN0Mik7CisgICAgRVhQRUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCkp
OworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKTsKKyAgICBF
WFBFQ1RfRVEob3B0aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDIpOworICAgIEVYUEVDVF9G
QUxTRShvcHRpb25hbE9iamVjdDIpOworfQorCitURVNUKFJldGFpblB0ciwgUmV0YWluUHRyQ0Yp
Cit7CisgICAgZmxvYXQgdmFsdWUgPSAzLjE0MTU5MjY1MzU7CisgICAgUmV0YWluUHRyPENGTnVt
YmVyUmVmPiBvYmplY3QxID0gcmV0YWluUHRyKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CisgICAgQ0ZSZWxlYXNlKG9iamVj
dDEuZ2V0KCkpOworICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KG9iamVjdDEuZ2V0
KCkpKTsKKworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IG9iamVjdDIgPSByZXRhaW5QdHIoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFs
dWUpKTsKKyAgICBDRlJlbGVhc2Uob2JqZWN0Mi5nZXQoKSk7CisgICAgRVhQRUNUX0VRKDEsIENG
R2V0UmV0YWluQ291bnQob2JqZWN0Mi5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ucy9S
ZXRhaW5QdHIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ucy9SZXRhaW5QdHIu
bW0KaW5kZXggZjkyNWNlN2NmOTU5MzUwMTZkNTNlYTYzMDE4MmExZDE4MjA1OTdmYy4uMDllMDNm
ZjAwNDk0NDVkYTM5ZWVlM2JlMzBkZmFlZWEwMzJlZThmYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL25zL1JldGFpblB0ci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwzNCArMzQsOTcgQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFJldGFpblB0ciwgQWRvcHROUykKIHsKLSAg
ICBSZXRhaW5QdHI8TlNPYmplY3Q+IGZvbyA9IGFkb3B0TlMoW1tOU09iamVjdCBhbGxvY10gaW5p
dF0pOworICAgIFJldGFpblB0cjxOU09iamVjdD4gb2JqZWN0MSA9IGFkb3B0TlMoW1tOU09iamVj
dCBhbGxvY10gaW5pdF0pOworICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KG9iamVj
dDEuZ2V0KCkpKTsKIAotICAgIEVYUEVDVF9FUSgxLCBDRkdldFJldGFpbkNvdW50KGZvby5nZXQo
KSkpOworICAgIFJldGFpblB0cjxOU09iamVjdCAqPiBvYmplY3QyID0gYWRvcHROUyhbW05TT2Jq
ZWN0IGFsbG9jXSBpbml0XSk7CisgICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQob2Jq
ZWN0Mi5nZXQoKSkpOworCisgICAgUmV0YWluUHRyPGlkPiBvYmplY3QzID0gYWRvcHROUyhbW05T
T2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQo
b2JqZWN0My5nZXQoKSkpOwogfQogCi1URVNUKFJldGFpblB0ciwgTW92ZUFzc2lnbm1lbnRGcm9t
U2FtZVR5cGUpCitURVNUKFJldGFpblB0ciwgQ29uc3RydWN0aW9uRnJvbU11dGFibGVOU1R5cGUp
Cit7CisgICAgTlNNdXRhYmxlU3RyaW5nICpzdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmlu
Z1dpdGhVVEY4U3RyaW5nOiJmb28iXTsKKworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRh
aW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0
dWFsbHkgdGVzdCB0aGF0IHdlIG1vdmVkIHRoZSB2YWx1ZS4gV2Ugc2hvdWxkIHVzZSBhIG1vY2sK
KyAgICAvLyBOU09iamVjdCB0aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHIgPSBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5nPihz
dHJpbmcpOworCisgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKKworICAgIFJldGFpblB0cjxO
U011dGFibGVTdHJpbmc+IHRlbXAgPSBzdHJpbmc7CisKKyAgICAvLyBUaGlzIHNob3VsZCBpbnZv
a2UgUmV0YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHB0cjIoV1RGTW92ZSh0ZW1wKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIyKTsKKyAg
ICBFWFBFQ1RfRVEoKE5TU3RyaW5nICopbmlsLCB0ZW1wKTsKK30KKworVEVTVChSZXRhaW5QdHIs
IENvbnN0cnVjdGlvbkZyb21TYW1lTlNUeXBlKQogewogICAgIE5TU3RyaW5nICpzdHJpbmcgPSBA
ImZvbyI7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHI7CiAKLSAgICAvLyBUaGlzIHNob3Vs
ZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIC8vIFRo
aXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgogICAgIC8vIEZJ
WE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IHdlIG1vdmVkIHRoZSB2YWx1ZS4g
V2Ugc2hvdWxkIHVzZSBhIG1vY2sKICAgICAvLyBOU09iamVjdCB0aGF0IGxvZ3MgLXJldGFpbiBh
bmQgLXJlbGVhc2UgY2FsbHMuCi0gICAgcHRyID0gUmV0YWluUHRyPE5TU3RyaW5nPihzdHJpbmcp
OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHRyID0gUmV0YWluUHRyPE5TU3RyaW5nPihzdHJp
bmcpOwogCiAgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKIAotICAgIHB0ciA9IDA7CiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiB0ZW1wID0gc3RyaW5nOwogCi0gICAgLy8gVGhpcyBzaG91bGQg
aW52b2tlIFJldGFpblB0cidzIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBwdHIgPSBX
VEZNb3ZlKHRlbXApOworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3Zl
IGNvbnN0cnVjdG9yLgorICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHRyMihXVEZNb3ZlKHRlbXAp
KTsKKworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cjIpOworICAgIEVYUEVDVF9FUSgoTlNTdHJp
bmcgKiluaWwsIHRlbXApOworfQorCitURVNUKFJldGFpblB0ciwgQ29uc3RydWN0aW9uRnJvbVNp
bWlsYXJOU1R5cGUpCit7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9IEAiZm9vIjsKKworICAgIC8v
IFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgorICAgIC8v
IEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IHdlIG1vdmVkIHRoZSB2YWx1
ZS4gV2Ugc2hvdWxkIHVzZSBhIG1vY2sKKyAgICAvLyBOU09iamVjdCB0aGF0IGxvZ3MgLXJldGFp
biBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHIgPSBSZXRh
aW5QdHI8TlNTdHJpbmcgKj4oc3RyaW5nKTsKIAogICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7
Ci0gICAgRVhQRUNUX0VRKChOU1N0cmluZyAqKTAsIHRlbXApOworCisgICAgUmV0YWluUHRyPE5T
U3RyaW5nICo+IHRlbXAgPSBzdHJpbmc7CisKKyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0
YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0cjIo
V1RGTW92ZSh0ZW1wKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIyKTsKKyAgICBFWFBF
Q1RfRVEoKE5TU3RyaW5nICopbmlsLCB0ZW1wKTsKIH0KIAotVEVTVChSZXRhaW5QdHIsIE1vdmVB
c3NpZ25tZW50RnJvbVNpbWlsYXJUeXBlKQorVEVTVChSZXRhaW5QdHIsIENvbnN0cnVjdGlvbkZy
b21TaW1pbGFyTlNUeXBlUmV2ZXJzZWQpCit7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9IEAiZm9v
IjsKKworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVj
dG9yLgorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IHdlIG1v
dmVkIHRoZSB2YWx1ZS4gV2Ugc2hvdWxkIHVzZSBhIG1vY2sKKyAgICAvLyBOU09iamVjdCB0aGF0
IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2UgY2FsbHMuCisgICAgUmV0YWluUHRyPE5TU3RyaW5n
ICo+IHB0ciA9IFJldGFpblB0cjxOU1N0cmluZz4oc3RyaW5nKTsKKworICAgIEVYUEVDVF9FUShz
dHJpbmcsIHB0cik7CisKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHRlbXAgPSBzdHJpbmc7CisK
KyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4K
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmcgKj4gcHRyMihXVEZNb3ZlKHRlbXApKTsKKworICAgIEVY
UEVDVF9FUShzdHJpbmcsIHB0cjIpOworICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcgKiluaWwsIHRl
bXApOworfQorCitURVNUKFJldGFpblB0ciwgTW92ZUFzc2lnbm1lbnRGcm9tTXV0YWJsZU5TVHlw
ZSkKIHsKICAgICBOU011dGFibGVTdHJpbmcgKnN0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6ImZvbyJdOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHRyOwpA
QCAtNzMsNTQgKzEzNiwxNDIgQEAgVEVTVChSZXRhaW5QdHIsIE1vdmVBc3NpZ25tZW50RnJvbVNp
bWlsYXJUeXBlKQogCiAgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKIAotICAgIHB0ciA9IDA7
CisgICAgcHRyID0gbmlsOwogICAgIFJldGFpblB0cjxOU011dGFibGVTdHJpbmc+IHRlbXAgPSBz
dHJpbmc7CiAKICAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0YWluUHRyJ3MgbW92ZSBhc3Np
Z25tZW50IG9wZXJhdG9yLgogICAgIHB0ciA9IFdURk1vdmUodGVtcCk7CiAKICAgICBFWFBFQ1Rf
RVEoc3RyaW5nLCBwdHIpOwotICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcgKikwLCB0ZW1wKTsKKyAg
ICBFWFBFQ1RfRVEoKE5TU3RyaW5nICopbmlsLCB0ZW1wKTsKIH0KIAotVEVTVChSZXRhaW5QdHIs
IENvbnN0cnVjdGlvbkZyb21TYW1lVHlwZSkKK1RFU1QoUmV0YWluUHRyLCBNb3ZlQXNzaWdubWVu
dEZyb21TYW1lTlNUeXBlKQogewogICAgIE5TU3RyaW5nICpzdHJpbmcgPSBAImZvbyI7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBwdHI7CiAKLSAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0
YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KKyAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0
YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgogICAgIC8vIEZJWE1FOiBUaGlzIGRv
ZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IHdlIG1vdmVkIHRoZSB2YWx1ZS4gV2Ugc2hvdWxkIHVz
ZSBhIG1vY2sKICAgICAvLyBOU09iamVjdCB0aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJlbGVhc2Ug
Y2FsbHMuCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHIgPSBSZXRhaW5QdHI8TlNTdHJpbmc+
KHN0cmluZyk7CisgICAgcHRyID0gUmV0YWluUHRyPE5TU3RyaW5nPihzdHJpbmcpOwogCiAgICAg
RVhQRUNUX0VRKHN0cmluZywgcHRyKTsKIAorICAgIHB0ciA9IG5pbDsKICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IHRlbXAgPSBzdHJpbmc7CiAKLSAgICAvLyBUaGlzIHNob3VsZCBpbnZva2UgUmV0
YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHB0cjIo
V1RGTW92ZSh0ZW1wKSk7CisgICAgLy8gVGhpcyBzaG91bGQgaW52b2tlIFJldGFpblB0cidzIG1v
dmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICBwdHIgPSBXVEZNb3ZlKHRlbXApOwogCi0gICAg
RVhQRUNUX0VRKHN0cmluZywgcHRyMik7Ci0gICAgRVhQRUNUX0VRKChOU1N0cmluZyAqKTAsIHRl
bXApOworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7CisgICAgRVhQRUNUX0VRKChOU1N0cmlu
ZyAqKW5pbCwgdGVtcCk7CiB9CiAKLVRFU1QoUmV0YWluUHRyLCBDb25zdHJ1Y3Rpb25Gcm9tU2lt
aWxhclR5cGUpCitURVNUKFJldGFpblB0ciwgTW92ZUFzc2lnbm1lbnRGcm9tU2ltaWxhck5TVHlw
ZSkKIHsKLSAgICBOU011dGFibGVTdHJpbmcgKnN0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6ImZvbyJdOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBAImZvbyI7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHI7CiAKLSAgICAvLyBUaGlzIHNob3VsZCBpbnZv
a2UgUmV0YWluUHRyJ3MgbW92ZSBjb25zdHJ1Y3Rvci4KKyAgICAvLyBUaGlzIHNob3VsZCBpbnZv
a2UgUmV0YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgogICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IHdlIG1vdmVkIHRoZSB2YWx1ZS4gV2Ugc2hv
dWxkIHVzZSBhIG1vY2sKICAgICAvLyBOU09iamVjdCB0aGF0IGxvZ3MgLXJldGFpbiBhbmQgLXJl
bGVhc2UgY2FsbHMuCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwdHIgPSBSZXRhaW5QdHI8TlNN
dXRhYmxlU3RyaW5nPihzdHJpbmcpOworICAgIHB0ciA9IFJldGFpblB0cjxOU1N0cmluZyAqPihz
dHJpbmcpOwogCiAgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyKTsKIAotICAgIFJldGFpblB0cjxO
U011dGFibGVTdHJpbmc+IHRlbXAgPSBzdHJpbmc7CisgICAgcHRyID0gbmlsOworICAgIFJldGFp
blB0cjxOU1N0cmluZyAqPiB0ZW1wID0gc3RyaW5nOwogCi0gICAgLy8gVGhpcyBzaG91bGQgaW52
b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3RydWN0b3IuCi0gICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBwdHIyKFdURk1vdmUodGVtcCkpOworICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5Q
dHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgcHRyID0gV1RGTW92ZSh0ZW1wKTsK
IAotICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cjIpOwotICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcg
KikwLCB0ZW1wKTsKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIpOworICAgIEVYUEVDVF9FUSgo
TlNTdHJpbmcgKiluaWwsIHRlbXApOworfQorCitURVNUKFJldGFpblB0ciwgTW92ZUFzc2lnbm1l
bnRGcm9tU2ltaWxhck5TVHlwZVJldmVyc2VkKQoreworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBA
ImZvbyI7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nICo+IHB0cjsKKworICAgIC8vIFRoaXMgc2hv
dWxkIGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgLy8g
RklYTUU6IFRoaXMgZG9lc24ndCBhY3R1YWxseSB0ZXN0IHRoYXQgd2UgbW92ZWQgdGhlIHZhbHVl
LiBXZSBzaG91bGQgdXNlIGEgbW9jaworICAgIC8vIE5TT2JqZWN0IHRoYXQgbG9ncyAtcmV0YWlu
IGFuZCAtcmVsZWFzZSBjYWxscy4KKyAgICBwdHIgPSBSZXRhaW5QdHI8TlNTdHJpbmc+KHN0cmlu
Zyk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIpOworCisgICAgcHRyID0gbmlsOworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gdGVtcCA9IHN0cmluZzsKKworICAgIC8vIFRoaXMgc2hvdWxk
IGludm9rZSBSZXRhaW5QdHIncyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgcHRyID0g
V1RGTW92ZSh0ZW1wKTsKKworICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cik7CisgICAgRVhQRUNU
X0VRKChOU1N0cmluZyAqKW5pbCwgdGVtcCk7Cit9CisKK1RFU1QoUmV0YWluUHRyLCBPcHRpb25h
bFJldGFpblB0ck5TKQoreworICAgIC8vIFRlc3QgYXNzaWdubWVudCBmcm9tIGFkb3B0TlMoKS4K
KyAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRpb25hbE9iamVjdDEgPSBhZG9w
dE5TKFtOU09iamVjdCBuZXddKTsKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChv
cHRpb25hbE9iamVjdDEudmFsdWUoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxOU09iamVjdD4g
b2JqZWN0MSA9IG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpOworICAgIEVYUEVDVF9FUShvcHRpb25h
bE9iamVjdDEudmFsdWUoKSwgb2JqZWN0MSk7CisKKyAgICAvLyBUZXN0IGFzc2lnbm1lbnQgZnJv
bSByZXRhaW5QdHIoKS4KKyAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNPYmplY3Q+PiBvcHRpb25h
bE9iamVjdDI7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIG9wdGlvbmFsT2JqZWN0
MiA9IHJldGFpblB0cihbW05TT2JqZWN0IG5ld10gYXV0b3JlbGVhc2VdKTsKKyAgICB9CisgICAg
RVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291bnQob3B0aW9uYWxPYmplY3QyLnZhbHVlKCkuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG9iamVjdDIgPSBvcHRpb25hbE9iamVjdDIu
dmFsdWUoKTsKKyAgICBFWFBFQ1RfRVEob3B0aW9uYWxPYmplY3QyLnZhbHVlKCksIG9iamVjdDIp
OworCisgICAgRVhQRUNUX05FKG9iamVjdDEsIG9iamVjdDIpOworCisgICAgLy8gVGVzdCBhc3Np
Z25tZW50IGZyb20gT3B0aW9uYWw8UmV0YWluUHRyPE5TT2JqZWN0Pj4uCisgICAgb3B0aW9uYWxP
YmplY3QxID0gb3B0aW9uYWxPYmplY3QyOworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0
MS52YWx1ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDEudmFsdWUoKS5nZXQo
KSk7CisgICAgRVhQRUNUX0VRKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLCBvYmplY3QyKTsKKyAg
ICBFWFBFQ1RfVFJVRShvcHRpb25hbE9iamVjdDIudmFsdWUoKSk7CisgICAgRVhQRUNUX1RSVUUo
b3B0aW9uYWxPYmplY3QyLnZhbHVlKCkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShvcHRpb25hbE9i
amVjdDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICAvLyBSZXNldCBhZnRlciBhc3NpZ25tZW50
IHRlc3QuCisgICAgb3B0aW9uYWxPYmplY3QxID0gb2JqZWN0MTsKKyAgICBFWFBFQ1RfRVEob3B0
aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDEpOworICAgIEVYUEVDVF9FUShvcHRpb25hbE9i
amVjdDIudmFsdWUoKSwgb2JqZWN0Mik7CisKKyAgICAvLyBUZXN0IG1vdmUgZnJvbSBPcHRpb25h
bDxSZXRhaW5QdHI8TlNPYmplY3Q+Pi4KKyAgICBvcHRpb25hbE9iamVjdDEgPSBXVEZNb3ZlKG9w
dGlvbmFsT2JqZWN0Mik7CisgICAgRVhQRUNUX1RSVUUob3B0aW9uYWxPYmplY3QxLnZhbHVlKCkp
OworICAgIEVYUEVDVF9UUlVFKG9wdGlvbmFsT2JqZWN0MS52YWx1ZSgpLmdldCgpKTsKKyAgICBF
WFBFQ1RfRVEob3B0aW9uYWxPYmplY3QxLnZhbHVlKCksIG9iamVjdDIpOworICAgIEVYUEVDVF9G
QUxTRShvcHRpb25hbE9iamVjdDIpOworfQorCitURVNUKFJldGFpblB0ciwgUmV0YWluUHRyTlMp
Cit7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBvYmplY3QxOworICAgIEBhdXRvcmVsZWFzZXBv
b2wgeworICAgICAgICBvYmplY3QxID0gcmV0YWluUHRyKFtbTlNPYmplY3QgbmV3XSBhdXRvcmVs
ZWFzZV0pOworICAgIH0KKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5Db3VudChvYmplY3Qx
LmdldCgpKSk7CisKKyAgICBSZXRhaW5QdHI8TlNPYmplY3QgKj4gb2JqZWN0MjsKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgb2JqZWN0MiA9IHJldGFpblB0cihbW05TT2JqZWN0IG5l
d10gYXV0b3JlbGVhc2VdKTsKKyAgICB9CisgICAgRVhQRUNUX0VRKDEsIENGR2V0UmV0YWluQ291
bnQob2JqZWN0Mi5nZXQoKSkpOworCisgICAgUmV0YWluUHRyPGlkPiBvYmplY3QzOworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBvYmplY3QzID0gcmV0YWluUHRyKFtbTlNPYmplY3Qg
bmV3XSBhdXRvcmVsZWFzZV0pOworICAgIH0KKyAgICBFWFBFQ1RfRVEoMSwgQ0ZHZXRSZXRhaW5D
b3VudChvYmplY3QzLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmNzcxMjQzMzgzZmU5NGM3OWJiNDk5NWQ3ODRhZDIzNGZm
OTg0NTE0Li5mNTYwZGYzZjRjNDJlMjRlNjViM2JmNjI4NzFiNWZhZGMxOWE1ZjY1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jl
c3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZFByb2dyZXNzLm1tCkBAIC0zODEsNyArMzgxLDcgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUK
ICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIG1fZG93bmxvYWQuZ2V0KCkpOwogCiAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgUmV0YWlu
UHRyPE5TU3RyaW5nICo+IHBhdGggPSAoTlNTdHJpbmcgKilXZWJDb3JlOjpGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gcGF0aCA9IChOU1N0cmluZyAqKVdlYkNvcmU6OkZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CiAgICAgRVhQRUNU
X1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCAxZjgyNWJiOGRhYTQ2OWMyMmIwZDkx
MDhkMWNlOTBlOTNhZDg0Y2UzLi43MWQyODEwMTE0NTY4MmE0ZDk5YjA1MGE5ZmU4ZTY5MjFmMzQ2
N2IyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lj
b25Mb2FkaW5nRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC0yMDUsNyArMjA1LDcgQEAgVEVTVChJ
Y29uTG9hZGluZywgQWxyZWFkeUNhY2hlZEljb24pCiAgICAgUmV0YWluUHRyPEljb25Mb2FkaW5n
U2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tJY29uTG9hZGluZ1NjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoRGF0YTptYWluRGF0YV0pOwogCiAgICAgTlNVUkwgKnVybCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS1yZWQtc3F1YXJlLWlt
YWdlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhICo+IGljb25EYXRhRnJvbURpc2sgPSBb
TlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1cmxdOworICAgIFJldGFpblB0cjxOU0RhdGE+
IGljb25EYXRhRnJvbURpc2sgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1cmxdOwog
ICAgIFtoYW5kbGVyLmdldCgpIHNldEZhdmljb25EYXRhOmljb25EYXRhRnJvbURpc2suZ2V0KCld
OwogCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgp
IGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbQppbmRleCA4MDY4NzE5ZTE2ZTJiOTNlZDA1
MmNhNGZlMjEzYzQzZGEwODU4MGZhLi5iM2EzYjNkNWNiMjliOWMyNGUwOTJhM2Q2NzY4ZjM2ZTVh
Njc2YjFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0pJVEVuYWJsZWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9KSVRFbmFibGVkLm1tCkBAIC01Myw3ICs1Myw3IEBAIFRFU1QoV2ViS2l0LCBKSVRFbmFibGVk
KQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gbmV3XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6W1tbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldIGF1dG9yZWxlYXNlXV07CiAgICAgYXV0byB3ZWJWaWV3Tm9KSVQgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIGNoZWNrSklURW5h
YmxlZCh3ZWJWaWV3Tm9KSVQsIE5PKTsKKyAgICBjaGVja0pJVEVuYWJsZWQoV1RGTW92ZSh3ZWJW
aWV3Tm9KSVQpLCBOTyk7CiAgICAgY2hlY2tKSVRFbmFibGVkKGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKSwgWUVTKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggMjQz
NGJjZWM4YzFlMTFiNTQzYmRiNzhmOGQ1ZjJmZTViZTk3ZjdhMy4uMWMyNWRlOGU0NGRiZDI4NDQ5
Y2Q4NTNlYmNiYTc4OGJkMzk2ZjQ2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
CkBAIC0xODgsNyArMTg4LDcgQEAgQGVuZAogQGludGVyZmFjZSBQU09OU2NoZW1lIDogTlNPYmpl
Y3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4gewogICAgIGNvbnN0IGNoYXIqIF9ieXRlczsKICAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBfcmVkaXJlY3RzOwotICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZXRhaW5QdHI8TlNEYXRhICo+PiBfZGF0YU1hcHBpbmdzOworICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZXRhaW5QdHI8TlNEYXRhPj4gX2RhdGFNYXBwaW5nczsKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJM
U3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcg
KilkZXN0aW5hdGlvblVSTFN0cmluZzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tCmluZGV4IGY0
ODliYmU4ZTA1ZjZjOWM4NDc1ZWZhMDZhMWZlM2RkODE1MjYxMGMuLmFiZjJhYTZiOGQxZTIxN2Jl
ZDZmNzI4YzJhZTk2ZjkxMDU4NGYzODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQpAQCAt
MTE3LDcgKzExNyw3IEBAIEBlbmQKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1SZXRh
aW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHNldFVwV2ViVmlld0ZvclRl
c3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU1JlY3QgZnJhbWUpCitSZXRhaW5QdHI8VmlkZW9D
b250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29u
dHJvbHNNYW5hZ2VyKE5TUmVjdCBmcmFtZSkKIHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVx
dWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdl
YlZpZXcqPiBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc00KIAogVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvKQog
ewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVz
dFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01h
bmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQSBsYXJnZSB2aWRl
byB3aXRoIGF1ZGlvIHNob3VsZCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciBldmVuIGlmIGl0IGlz
IHBsYXllZCB2aWEgc2NyaXB0IGxpa2UgdGhpcyB2aWRlby4KICAgICAvLyBTbyB0aGUgZXhwZWN0
YXRpb24gaXMgWUVTLgpAQCAtMTM2LDcgKzEzNiw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlTGFyZ2VWaWRlbykKIAogVEVTVChWaWRlb0Nv
bnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbFZpZGVvKQogewot
ICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9
IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAs
IDAsIDEwMCwgMTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdl
YlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFn
ZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQSBzbWFsbCB2aWRlbyB3
aWxsIG5vdCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciB1bmxlc3MgaXQgc3RhcnRlZCBwbGF5aW5n
IGJlY2F1c2Ugb2YgYSB1c2VyIGdlc3R1cmUuIFNpbmNlIHRoaXMKICAgICAvLyB2aWRlbyBpcyBz
dGFydGVkIHdpdGggYSBzY3JpcHQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTy4KQEAgLTE0Niw3ICsx
NDYsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNp
bmdsZVNtYWxsVmlkZW8pCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJv
bHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NXaXRoQXVkaW8pCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVv
Q29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVz
dGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAg
ICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNl
dFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAs
IDEwMCwgMTAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZp
ZGVvcy13aXRoLWF1ZGlvIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvclBhZ2VUb0xvYWRXaXRoQXV0
b3BsYXlpbmdWaWRlb3M6MF07CkBAIC0xNTcsNyArMTU3LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xz
TWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1dpdGhBdWRpbykKIC8v
IEZJWE1FOiBSZS1lbmFibGUgdGhpcyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUxNDM+IGlz
IHJlc29sdmVkLgogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgRElTQUJMRURfVmlkZW9Db250
cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1dpdGhBdWRpb0FuZEF1dG9wbGF5KQogewotICAgIFJl
dGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVw
V2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheSJdOwogICAgIFt3ZWJWaWV3IHdh
aXRGb3JQYWdlVG9Mb2FkV2l0aEF1dG9wbGF5aW5nVmlkZW9zOjFdOwpAQCAtMTY4LDcgKzE2OCw3
IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIERJU0FCTEVEX1ZpZGVvQ29udHJvbHNNYW5h
Z2VyTXVsdGlwbGVWaWRlb3NXaXRoQXVkaW9BCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQYXVzZWRWaWRlb091dE9m
VmlldykKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFu
YWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29u
dHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKIAogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250
cm9scyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JQYWdlVG9Mb2FkV2l0aEF1dG9wbGF5aW5nVmlk
ZW9zOjFdOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQYXVzZWRWaWRlb091CiAKIFRF
U1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRl
b3NTY3JvbGxQbGF5aW5nVmlkZW9XaXRoU291bmRPdXRPZlZpZXcpCiB7Ci0gICAgUmV0YWluUHRy
PFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3
Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDAp
KTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0
KDAsIDAsIDUwMCwgNTAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxh
cmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzIl07CiAgICAgW3dlYlZpZXcg
d2FpdEZvclBhZ2VUb0xvYWRXaXRoQXV0b3BsYXlpbmdWaWRlb3M6MV07CkBAIC0xOTAsNyArMTkw
LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0
aXBsZVZpZGVvc1Njcm9sbFBsYXlpbmdWaWRlb1cKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdl
ciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Njcm9sbFBsYXlpbmdNdXRlZFZp
ZGVvT3V0T2ZWaWV3KQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFu
YWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29u
dHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOwogCiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12
aWRlby1oaWRlcy1jb250cm9scyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JQYWdlVG9Mb2FkV2l0
aEF1dG9wbGF5aW5nVmlkZW9zOjFdOwpAQCAtMjAxLDcgKzIwMSw3IEBAIFRFU1QoVmlkZW9Db250
cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5
aW5nTXV0ZWRWCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5h
Z2VyTXVsdGlwbGVWaWRlb3NTaG93Q29udHJvbHNGb3JMYXN0SW50ZXJhY3RlZFZpZGVvKQogewot
ICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9
IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdl
YlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFn
ZXIoTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOwogICAgIE5TUG9pbnQgY2xpY2tQb2ludCA9
IE5TTWFrZVBvaW50KDQwMCwgMzAwKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAibGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlIl07CkBAIC0yMjgsNyAr
MjI4LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJN
dWx0aXBsZVZpZGVvc1Nob3dDb250cm9sc0Zvckxhc3QKIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhp
cyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzU5MDk+IGlzIHJlc29sdmVkLgogVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgRElTQUJMRURfVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZp
ZGVvc1N3aXRjaENvbnRyb2xsZWRWaWRlb1doZW5TY3JvbGxpbmcpCiB7Ci0gICAgUmV0YWluUHRy
PFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3
Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
KTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxh
cmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8iXTsKICAgICBbd2ViVmlldyB3
YWl0Rm9yUGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczoyXTsKQEAgLTI0MSw3ICsyNDEs
NyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBESVNBQkxFRF9WaWRlb0NvbnRyb2xzTWFu
YWdlck11bHRpcGxlVmlkZW9zU3dpdGNoQ29udAogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2Vy
LCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsT25seUxhcmdlVmlkZW9P
dXRPZlZpZXcpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
KE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9s
c01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRl
b0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CiAKICAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXki
XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yUGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczox
XTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0Nv
bnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsT25seUxhcmdlVmlkZQogCiBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3Bs
YXlpbmdWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2Vi
Vmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFn
ZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRy
b2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1Zp
ZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyJd
OwogICAgIFt3ZWJWaWV3IHdhaXRGb3JQYWdlVG9Mb2FkV2l0aEF1dG9wbGF5aW5nVmlkZW9zOjFd
OwpAQCAtMjYyLDcgKzI2Miw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQogCiBURVNUKFZpZGVvQ29u
dHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1Nl
ZWtzQWZ0ZXJFbmRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVz
dFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNN
YW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9D
b250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3Rp
bmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5k
aW5nIl07CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBW
aWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtzQWZ0ZXJFbgogCiBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3Bs
YXlpbmdWaWRlb1NlZWtzQW5kUGxheXNBZnRlckVuZGluZykKIHsKLSAgICBSZXRhaW5QdHI8Vmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JU
ZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwor
ICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0g
c2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKIAogICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBpcyBzdGlsbCBwbGF5aW5n
LCB0aGUgZXhwZWN0YXRpb24gaXMgWUVTIGV2ZW4gaWYgdGhlIHZpZGVvIGhhcyBlbmRlZCBvbmNl
LgogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tc2Vlay10by1i
ZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nIl07CkBAIC0yODQsNyArMjg0LDcgQEAgVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5
aW5nVmlkZW9TZWVrc0FuZFBsYXkKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9BZnRlclNlZWtpbmdUb0VuZCkKIHsK
LSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5h
Z2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQi
XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yUGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczox
XTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0Nv
bnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb0FmdGVyU2Vla2luZwogCiBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlkZW9X
aXRob3V0QXVkaW8pCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdl
YlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5h
Z2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdW
aWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICAv
LyBBIGxhcmdlIHZpZGVvIHdpdGggbm8gYXVkaW8gd2lsbCBub3QgaGF2ZSBhIGNvbnRyb2xzIG1h
bmFnZXIgdW5sZXNzIGl0IHN0YXJ0ZWQgcGxheWluZyBiZWNhdXNlIG9mIGEgdXNlciBnZXN0dXJl
LiBTaW5jZSB0aGlzCiAgICAgLy8gdmlkZW8gaXMgc3RhcnRlZCB3aXRoIGEgc2NyaXB0LCB0aGUg
ZXhwZWN0YXRpb24gaXMgTk8uCkBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xz
TWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvV2l0aG91dEF1ZGlv
KQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckF1ZGlv
RWxlbWVudFN0YXJ0ZWRXaXRoU2NyaXB0KQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xz
TWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRl
b0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgUmV0YWlu
UHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEw
MCkpOwogCiAgICAgLy8gQW4gYXVkaW8gZWxlbWVudCBNVVNUIGJlIHN0YXJ0ZWQgd2l0aCBhIHVz
ZXIgZ2VzdHVyZSBpbiBvcmRlciB0byBoYXZlIGEgY29udHJvbHMgbWFuYWdlciwgc28gdGhlIGV4
cGVjdGF0aW9uIGlzIE5PLgogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiYXVkaW8t
b25seSJdOwpAQCAtMzE2LDcgKzMxNiw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiAKIFRFU1Qo
VmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50U3Rh
cnRlZEJ5SW50ZXJhY3Rpb24pCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2Vy
VGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJv
bHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApKTsKKyAgICBSZXRhaW5QdHI8Vmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRl
c3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSk7CiAK
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInBsYXktYXVkaW8tb24tY2xpY2siXTsK
ICAgICBbd2ViVmlldyB3YWl0Rm9yUGFnZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczowXTsK
QEAgLTMyOSw3ICszMjksNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlckF1ZGlvRWxlbWVudFN0YXJ0ZWRCeUludGVyYWN0aW9uKQogCiBURVNUKFZpZGVv
Q29udHJvbHNNYW5hZ2VyLCBESVNBQkxFRF9WaWRlb0NvbnRyb2xzTWFuYWdlckF1ZGlvRWxlbWVu
dEZvbGxvd2luZ1VzZXJJbnRlcmFjdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9s
c01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlk
ZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkpOworICAgIFJldGFp
blB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJW
aWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0
MDApKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAicGxheS1hdWRpby1vbi1j
bGljayJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JQYWdlVG9Mb2FkV2l0aEF1dG9wbGF5aW5nVmlk
ZW9zOjBdOwpAQCAtMzU0LDcgKzM1NCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIERJ
U0FCTEVEX1ZpZGVvQ29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50Rm9sbG93aW5nVXNlCiAKIFRF
U1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVhcnNEb3duTWVk
aWFDb250cm9sc09uRGVhbGxvYykKIHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFn
ZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250
cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIFJldGFpblB0cjxW
aWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9y
VGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsK
IAogICAgIE5TVVJMICp1cmxPZlZpZGVvID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246QCJtcDQiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgW3dlYlZpZXcgbG9hZEZpbGVV
Ukw6dXJsT2ZWaWRlbyBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpbdXJsT2ZWaWRlbyBVUkxCeURl
bGV0aW5nTGFzdFBhdGhDb21wb25lbnRdXTsKQEAgLTM3NCw3ICszNzQsNyBAQCBURVNUKFZpZGVv
Q29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclRlYXJzRG93bk1lZGlhQ29udHJv
bHNPbkRlYWxsb2MpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyRG9lc05vdFNob3dNZWRpYUNvbnRyb2xzRm9yT2Zmc2NyZWVuVmlkZW8pCiB7Ci0gICAg
UmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0
VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwg
MTAyNCwgNzY4KSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIo
TlNNYWtlUmVjdCgwLCAwLCAxMDI0LCA3NjgpKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAibGFyZ2UtdmlkZW8tb2Zmc2NyZWVuIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1l
ZGlhQ29udHJvbHNUb0hpZGVdOwpAQCAtMzgyLDcgKzM4Miw3IEBAIFRFU1QoVmlkZW9Db250cm9s
c01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyRG9lc05vdFNob3dNZWRpYUNvbnRyb2xzRm9y
T2Zmc2NyCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2Vy
S2VlcHNDb250cm9sc1N0YWJsZUR1cmluZ1NyY0NoYW5nZU9uQ2xpY2spCiB7Ci0gICAgUmV0YWlu
UHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJW
aWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2Vi
VmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
ImNoYW5nZS12aWRlby1zb3VyY2Utb24tY2xpY2siXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yUGFn
ZVRvTG9hZFdpdGhBdXRvcGxheWluZ1ZpZGVvczoxXTsKQEAgLTM5Myw3ICszOTMsNyBAQCBURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlcktlZXBzQ29udHJvbHNT
dGFibGVEdXJpbmdTcmNDaGFuZwogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0Nv
bnRyb2xzTWFuYWdlcktlZXBzQ29udHJvbHNTdGFibGVEdXJpbmdTcmNDaGFuZ2VPbkVuZCkKIHsK
LSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkpOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5h
Z2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAiY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1lbmQiXTsKICAgICBbd2ViVmlldyBl
eHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImNoYW5nZWQi
XTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0Nv
bnRyb2xzTWFuYWdlcktlZXBzQ29udHJvbHNTdGFibGVEdXJpbmdTcmNDaGFuZwogCiBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNtYWxsVmlkZW9Jbk1lZGlh
RG9jdW1lbnQpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
KE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9s
c01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRl
b0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBfX2Js
b2NrIGJvb2wgZmluaXNoZWRMb2FkID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVy
TG9hZGluZzpeIHsKQEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2Vy
LCBWaWRlb0NvbnRyb2xzTWFuYWdlclNtYWxsVmlkZW9Jbk1lZGlhRG9jdW1lbnQpCiAgICAgCiBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck9mZnNjcmVlbklm
cmFtZU1lZGlhRG9jdW1lbnQpCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2Vy
VGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJv
bHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApKTsKKyAgICBSZXRhaW5QdHI8Vmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRl
c3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSk7CiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJvZmZzY3JlZW4taWZyYW1lLW9mLW1lZGlh
LWRvY3VtZW50Il07CiAgICAgCiAgICAgLy8gV2UgZG8gbm90IGV4cGVjdCBhIGNvbnRyb2xzIG1h
bmFnZXIgYmVjdWFzZSB0aGUgbWVkaWEgZG9jdW1lbnQgaXMgaW4gYW4gaWZyYW1lLgpAQCAtNDI4
LDcgKzQyOCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5h
Z2VyT2Zmc2NyZWVuSWZyYW1lTWVkaWFEb2N1bWVudCkKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFu
YWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMb25nU2tpbm55VmlkZW9JbldpZGVNYWluRnJhbWUp
CiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJl
Y3QoMCwgMCwgMTYwMCwgODAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2Vy
VGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9s
c01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxNjAwLCA4MDApKTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iXTsK
ICAgICBbd2ViVmlldyBleHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAicGxheWluZyJdOwpAQCAtNDM2LDcgKzQzNiw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTG9uZ1NraW5ueVZpZGVvSW5XaWRlTWFpbkZyYW1l
KQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlcldpZGVN
ZWRpdW1TaXplZFZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAgIFJldGFpblB0cjxWaWRlb0Nv
bnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3Rp
bmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOworICAg
IFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gc2V0
VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwg
MTYwMCwgODAwKSk7CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAIndpZGUtYXV0
b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyJdOwogICAgIFt3ZWJWaWV3IGV4cGVjdENvbnRyb2xz
TWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJdOwpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2Vy
V2lkZU1lZGl1bVNpemVkVmlkZW9JbldpZGVNYWluRnJhCiAKIFRFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyRnVsbFNpemVWaWRlb0luV2lkZU1haW5GcmFtZSkK
IHsKLSAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZp
ZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVj
dCgwLCAwLCAxNjAwLCA4MDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJU
ZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xz
TWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOwogCiAgICAgW3dlYlZpZXcgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyJd
OwogICAgIFt3ZWJWaWV3IGV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGxheWluZyJdOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIFRFU1QoVmlkZW9Db250cm9s
c01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyRnVsbFNpemVWaWRlb0luV2lkZU1haW5GcmFt
ZSkKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJWaWRl
b011dGVzT25QbGF5aW5nKQogewotICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRl
c3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xz
TWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CisgICAgUmV0YWluUHRyPFZpZGVv
Q29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0
aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOwogCiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlp
bmciXTsKICAgICBbd2ViVmlldyBleHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOkAicGxheWluZyJdOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIFRFU1QoVmlkZW9Db250
cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyVmlkZW9NdXRlc09uUGxheWluZykKIAog
VEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJQYWdlV2l0aEVu
b3Jtb3VzVmlkZW8pCiB7Ci0gICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdl
YlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5h
Z2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdW
aWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CiAKICAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQiXTsK
ICAgICBbd2ViVmlldyBleHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAicGxheWluZyJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQppbmRleCA3MDhiMDcyODA1ZTdjZTM2MGVm
Zjc1YTVkZjdlNjUzZDgzY2U3MGQ5Li4xMGEzNTRmOWRjZDUzMDE2MjNjYjE5ZGYxMzI3NzY5Yjc2
ZTg4MmZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVQb2xpY2llcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtODY1LDcgKzg2NSw3IEBAIFRFU1QoV2ViS2l0
LCBDdXN0b21IZWFkZXJGaWVsZHMpCiBzdGF0aWMgdW5zaWduZWQgbG9hZENvdW50OwogCiBAaW50
ZXJmYWNlIERhdGFNYXBwaW5nU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhh
bmRsZXI+IHsKLSAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TRGF0YSAqPj4gX2RhdGFN
YXBwaW5nczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TRGF0YT4+IF9kYXRhTWFw
cGluZ3M7CiB9CiAtICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVy
bFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGE7CiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCmluZGV4IDRjYjg1MTgy
N2M4OWJmYzZhOGU4ZmFkOGQwZDdkYjVmMWYwOGU2Y2YuLjIwZjMyY2E1YTEyNDUzZTE4NzNhYWNj
NzJjZTM2ODI5MDljNjE0YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCkBAIC0yOTcsOCArMjk3LDggQEAgQGltcGxlbWVudGF0
aW9uIERyYWdBbmREcm9wU2ltdWxhdG9yIHsKICAgICBSZXRhaW5QdHI8TW9ja0Ryb3BTZXNzaW9u
PiBfZHJvcFNlc3Npb247CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfb2JzZXJ2ZWRF
dmVudE5hbWVzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfZXh0ZXJuYWxJdGVtUHJvdmlkZXJz
OwotICAgIFJldGFpblB0cjxOU0FycmF5ICo+IF9zb3VyY2VJdGVtUHJvdmlkZXJzOwotICAgIFJl
dGFpblB0cjxOU0FycmF5ICo+IF9maW5hbFNlbGVjdGlvblJlY3RzOworICAgIFJldGFpblB0cjxO
U0FycmF5PiBfc291cmNlSXRlbVByb3ZpZGVyczsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2Zp
bmFsU2VsZWN0aW9uUmVjdHM7CiAgICAgQ0dQb2ludCBfc3RhcnRMb2NhdGlvbjsKICAgICBDR1Bv
aW50IF9lbmRMb2NhdGlvbjsKICAgICBDR1JlY3QgX2xhc3RLbm93bkRyYWdDYXJldFJlY3Q7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL0Fj
dGl2YXRlRm9udHNDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCmluZGV4IGVhMzZhMGU1NTcwODViZmFkMTdh
YWJiMTkzNTcwNGM0MmE1ZjM3NmEuLjNmZWYyZDU4MThjOTk3NGQ5Y2I5YTBmNzM0YmNjYWRjNTk5
MTk1NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
Y29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvY29jb2EvQWN0aXZhdGVGb250c0NvY29hLm1tCkBAIC00Nyw3ICs0Nyw3
IEBAIG5hbWVzcGFjZSBXVFIgewogCiBzdGF0aWMgTlNVUkwgKnJlc291cmNlc0RpcmVjdG9yeVVS
TCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU1VSTCAqPj4gcmVz
b3VyY2VzRGlyZWN0b3J5KFtbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dLVFJGb250QWN0aXZh
dG9yRHVtbXlDbGFzcyBjbGFzc11dIHJlc291cmNlVVJMXSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU1VSTD4+IHJlc291cmNlc0RpcmVjdG9yeShbW05TQnVuZGxlIGJ1
bmRsZUZvckNsYXNzOltXS1RSRm9udEFjdGl2YXRvckR1bW15Q2xhc3MgY2xhc3NdXSByZXNvdXJj
ZVVSTF0pOwogICAgIHJldHVybiByZXNvdXJjZXNEaXJlY3RvcnkuZ2V0KCkuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0lu
amVjdGVkQnVuZGxlSU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KaW5kZXggM2YyZDc2YzY1YzY0ZGY2YjUxMDgyY2Qx
MDQ1YjljOTNhODViNTM5Ni4uNDI5MDhiZWZlZjdhNThmN2FlMDRmMDU4MDUzMTRlNWE0NWU0ZTNl
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3Mv
SW5qZWN0ZWRCdW5kbGVJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvSW5qZWN0ZWRCdW5kbGVJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKFdLVHlwZVJlZikKICAgICAvLyBMYW5n
dWFnZSB3YXMgc2V0IHVwIGVhcmxpZXIgaW4gbWFpbigpLiBEb24ndCBjbG9iYmVyIGl0LgogICAg
IE5TQXJyYXkgKmxhbmd1YWdlcyA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gdmFsdWVGb3JLZXk6
QCJBcHBsZUxhbmd1YWdlcyJdOwogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnkg
Kj4gZGljdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGRpY3QgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIGlmIChsYW5ndWFnZXMpCiAgICAgICAg
IFtkaWN0IHNldE9iamVjdDpsYW5ndWFnZXMgZm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tCmluZGV4IDZjNzgwMzc1YTkyOTc5ZjdjNGFkOTVhMTllM2QyYTc1NGU0ZTFmZGIuLmZiZmNh
MDlkOGQzNTFlOTQxN2JlZjgzNDBkMmYxM2EwM2NkNTUwZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KQEAgLTQ4LDcgKzQ4
LDcgQEAgQGVuZAogI2lmIFdLX0FQSV9FTkFCTEVECiAKIEBpbnRlcmZhY2UgVGVzdFJ1bm5lcldL
V2ViVmlldyAoKSA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gewotICAgIFJldGFpblB0cjxOU051bWJl
ciAqPiBtX3N0YWJsZVN0YXRlT3ZlcnJpZGU7CisgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBtX3N0
YWJsZVN0YXRlT3ZlcnJpZGU7CiAgICAgQk9PTCBtX2lzSW50ZXJhY3RpbmdXaXRoRm9ybUNvbnRy
b2w7CiB9CiAK
</data>
<flag name="review"
          id="374994"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="374995"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>