<?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>200863</bug_id>
          
          <creation_ts>2019-08-17 14:39:37 -0700</creation_ts>
          <short_desc>Crash in JSC::SlotVisitor::visitChildren</short_desc>
          <delta_ts>2022-11-21 08:06:11 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>asumu</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>caitp</cc>
    
    <cc>fpizlo</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>kris</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562509</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-08-17 14:39:37 -0700</bug_when>
    <thetext>Another random crash:

(gdb) bt
#0  0x00007fa6bf7c844b in JSC::SlotVisitor::visitChildren(JSC::JSCell const*)
    (cell=0x7fa59fdb3300, this=0x7fa6b95cc1d0) at ../Source/JavaScriptCore/runtime/Structure.h:495
#1  0x00007fa6bf7c844b in JSC::SlotVisitor::&lt;lambda(JSC::MarkStackArray&amp;)&gt;::operator()
    (__closure=&lt;optimized out&gt;, stack=...) at ../Source/JavaScriptCore/heap/SlotVisitor.cpp:515
#2  0x00007fa6bf7c844b in JSC::SlotVisitor::forEachMarkStack&lt;JSC::SlotVisitor::drain(WTF::MonotonicTime)::&lt;lambda(JSC::MarkStackArray&amp;)&gt; &gt; (func=..., this=0x7fa6b95cc1d0) at ../Source/JavaScriptCore/heap/SlotVisitorInlines.h:190
#3  0x00007fa6bf7c844b in JSC::SlotVisitor::drain(WTF::MonotonicTime) (this=0x7fa6b95cc1d0, timeout=...)
    at ../Source/JavaScriptCore/heap/SlotVisitor.cpp:505
#4  0x00007fa6bf7c8d52 in JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)
    (this=this@entry=0x7fa6b95cc1d0, sharedDrainMode=sharedDrainMode@entry=JSC::SlotVisitor::SlaveDrain, timeout=..., timeout@entry=...) at ../Source/JavaScriptCore/heap/SlotVisitor.cpp:705
#5  0x00007fa6bf7a396d in JSC::Heap::&lt;lambda()&gt;::operator() (__closure=0x7fa59f8956a0)
    at ../Source/JavaScriptCore/heap/Heap.cpp:1319
#6  0x00007fa6bf7a396d in WTF::SharedTaskFunctor&lt;void(), JSC::Heap::runBeginPhase(JSC::GCConductor)::&lt;lambda()&gt; &gt;::run(void) (this=0x7fa59f895690) at DerivedSources/ForwardingHeaders/wtf/SharedTask.h:91
#7  0x00007fa6bfea974b in WTF::ParallelHelperClient::runTask(WTF::RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; const&amp;) (this=0x7fa658400418, task=...) at ../Source/WTF/wtf/ParallelHelperPool.cpp:112
#8  0x00007fa6bfeaa555 in WTF::ParallelHelperPool::Thread::work() (this=0x7fa58ea70168)
    at ../Source/WTF/wtf/ParallelHelperPool.cpp:200
#9  0x00007fa6bfe98882 in WTF::AutomaticThread::&lt;lambda()&gt;::operator() (__closure=&lt;optimized out&gt;)
    at ../Source/WTF/wtf/AutomaticThread.cpp:223
#10 0x00007fa6bfe98882 in WTF::Detail::CallableWrapper&lt;WTF::AutomaticThread::start(const WTF::AbstractLocker&amp;)::&lt;lambda()&gt;, void&gt;::call(void) (this=0x7fa58c9e9990) at ../Source/WTF/wtf/Function.h:52
#11 0x00007fa6bfeaf5b8 in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;)
    at ../Source/WTF/wtf/Function.h:76
#12 0x00007fa6bfeaf5b8 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fa5846fd3f0)
    at ../Source/WTF/wtf/Threading.cpp:148
#13 0x00007fa6bfefb7fd in WTF::wtfThreadEntryPoint(void*) (context=&lt;optimized out&gt;)
    at ../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:200
#14 0x00007fa6be0c45e2 in start_thread (arg=&lt;optimized out&gt;) at pthread_create.c:479
#15 0x00007fa6c14effe3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Truncated full backtrace, this is as much as I can get before gdb crashes:

(gdb) bt full
#0  0x00007fa6bf7c844b in JSC::SlotVisitor::visitChildren(JSC::JSCell const*)
    (cell=0x7fa59fdb3300, this=0x7fa6b95cc1d0) at ../Source/JavaScriptCore/runtime/Structure.h:495
        countdown = 38
        status = &lt;optimized out&gt;
        locker = {&lt;WTF::AbstractLocker&gt; = {&lt;No data fields&gt;}, m_lockable = 0x7fa6b95cc25f}
#1  0x00007fa6bf7c844b in JSC::SlotVisitor::&lt;lambda(JSC::MarkStackArray&amp;)&gt;::operator()
    (__closure=&lt;optimized out&gt;, stack=...) at ../Source/JavaScriptCore/heap/SlotVisitor.cpp:515
        countdown = 38
        status = &lt;optimized out&gt;
        locker = {&lt;WTF::AbstractLocker&gt; = {&lt;No data fields&gt;}, m_lockable = 0x7fa6b95cc25f}
#2  0x00007fa6bf7c844b in JSC::SlotVisitor::forEachMarkStack&lt;JSC::SlotVisitor::drain(WTF::MonotonicTime)::&lt;lambda(JSC::MarkStackArray&amp;)&gt; &gt; (func=..., this=0x7fa6b95cc1d0) at ../Source/JavaScriptCore/heap/SlotVisitorInlines.h:190
        status = &lt;optimized out&gt;
        locker = {&lt;WTF::AbstractLocker&gt; = {&lt;No data fields&gt;}, m_lockable = 0x7fa6b95cc25f}
#3  0x00007fa6bf7c844b in JSC::SlotVisitor::drain(WTF::MonotonicTime) (this=0x7fa6b95cc1d0, timeout=...)
    at ../Source/JavaScriptCore/heap/SlotVisitor.cpp:505
        status = &lt;optimized out&gt;
        locker = {&lt;WTF::AbstractLocker&gt; = {&lt;No data fields&gt;}, m_lockable = 0x7fa6b95cc25f}
#4  0x00007fa6bf7c8d52 in JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)
    (this=this@entry=0x7fa6b95cc1d0, sharedDrainMode=sharedDrainMode@entry=JSC::SlotVisitor::SlaveDrain, timeout=..., timeout@entry=...) at ../Source/JavaScriptCore/heap/SlotVisitor.cpp:705
        bonusTask = &lt;optimized out&gt;
        isActive = &lt;optimized out&gt;
#5  0x00007fa6bf7a396d in JSC::Heap::&lt;lambda()&gt;::operator() (__closure=0x7fa59f8956a0)
    at ../Source/JavaScriptCore/heap/Heap.cpp:1319
        slotVisitor = 0x7fa6b95cc1d0
#6  0x00007fa6bf7a396d in WTF::SharedTaskFunctor&lt;void(), JSC::Heap::runBeginPhase(JSC::GCConductor)::&lt;lambda()&gt; &gt;::run(void) (this=0x7fa59f895690) at DerivedSources/ForwardingHeaders/wtf/SharedTask.h:91
#7  0x00007fa6bfea974b in WTF::ParallelHelperClient::runTask(WTF::RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; const&amp;) (this=0x7fa658400418, task=...) at ../Source/WTF/wtf/ParallelHelperPool.cpp:112
#8  0x00007fa6bfeaa555 in WTF::ParallelHelperPool::Thread::work() (this=0x7fa58ea70168)
    at ../Source/WTF/wtf/ParallelHelperPool.cpp:200
#9  0x00007fa6bfe98882 in WTF::AutomaticThread::&lt;lambda()&gt;::operator() (__closure=&lt;optimized out&gt;)
    at ../Source/WTF/wtf/AutomaticThread.cpp:223
        result = &lt;optimized out&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624628</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-03-02 11:13:20 -0800</bug_when>
    <thetext>Hit this again today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872301</commentid>
    <comment_count>2</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-05-27 04:42:58 -0700</bug_when>
    <thetext>Have you seen it when running any of WebKit tests or the whole thing?

We&apos;re seeing it reproducing quite consistently in our integration (WebKit WPE 2.34.7) although the steps are somewhat awkward for now and it takes a bit of time to hit the crash, so not very useful yet.  Working on steps to make it easier to reproduce.

Basically it&apos;s leaving the thing alone in one of our HTML/JS apps.  Any disturbance in concurrency (interaction, logs etc.) make the problem go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872303</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-05-27 05:55:43 -0700</bug_when>
    <thetext>(In reply to Krzysztof Konopko from comment #2)
&gt; Have you seen it when running any of WebKit tests or the whole thing?

Probably saw it when running Epiphany.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872305</commentid>
    <comment_count>4</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-05-27 06:05:23 -0700</bug_when>
    <thetext>OK, thanks for confirming.  Will be trying to chase it down.  BTW, disabling concurrent GC (RipTide) also makes the problem go away so it might be something with that implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912227</commentid>
    <comment_count>5</comment_count>
      <attachid>463515</attachid>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-14 01:33:19 -0800</bug_when>
    <thetext>Created attachment 463515
HTML/JS test which reproduces the crash on a AArch64 platform (WPE)

This is a reduced test case which is a result of cutting down a web application bundled with WebPack.  Therefore a lot of code does not make sense (as it&apos;s mostly WebPack&apos;s polyfill) but it still reproduces a crash in GC on a custom AArch64 platform with additional logging enabled in GC (separate attachement).  It simulates events that the application was originally responding to.

Having the `window` object used as a global &quot;storage&quot; for extensions seems to be essential here.  The crash does not reproduce when run with `jsc` (where `window` is simply replaced with an empty object `{}`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912228</commentid>
    <comment_count>6</comment_count>
      <attachid>463516</attachid>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-14 01:36:01 -0800</bug_when>
    <thetext>Created attachment 463516
A temporary patch which adds/enables extra GC logging

This logging is not essential but helps with reproducing the crash more easily, ie. by subtly changing the timing in GC, it seems to trigger the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912239</commentid>
    <comment_count>7</comment_count>
      <attachid>463518</attachid>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-14 02:01:28 -0800</bug_when>
    <thetext>Created attachment 463518
core dump with concurrent GC disabled

(In reply to Krzysztof Konopko from comment #4)
&gt; OK, thanks for confirming.  Will be trying to chase it down.  BTW, disabling
&gt; concurrent GC (RipTide) also makes the problem go away so it might be
&gt; something with that implementation.

On a custom AArch64 platform I saw a crash with concurrent GC _disabled_.  See the attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912242</commentid>
    <comment_count>8</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-14 02:05:42 -0800</bug_when>
    <thetext>I could not reproduce the crash on RPi3 AArch64 WPE build.  Also failed to reproduce on x86_64.  When running Valgrind though, there are complaints similar to this one which seems to be in the same area where the crash occurs:

==23== Use of uninitialised value of size 8
==23==    at 0xF5A2FCA: JSC::WriteBarrierBase&lt;JSC::SymbolTable, WTF::RawPtrTraits&lt;JSC::SymbolTable&gt; &gt;::cell() const (WriteBarrier.h:153)
==23==    by 0xF5953B8: JSC::WriteBarrierBase&lt;JSC::SymbolTable, WTF::RawPtrTraits&lt;JSC::SymbolTable&gt; &gt;::get() const (WriteBarrier.h:101)
==23==    by 0x10A6A995: void JSC::SlotVisitor::append&lt;JSC::SymbolTable, WTF::RawPtrTraits&lt;JSC::SymbolTable&gt; &gt;(JSC::WriteBarrierBase&lt;JSC::SymbolTable, WTF::RawPtrTraits&lt;JSC::SymbolTable&gt; &gt; const&amp;) (SlotVisitorInlines.h:110)
==23==    by 0x10A1BCBA: void JSC::JSSymbolTableObject::visitChildrenImpl&lt;JSC::SlotVisitor&gt;(JSC::JSCell*, JSC::SlotVisitor&amp;) (JSSymbolTableObject.cpp:45)
==23==    by 0x10A1217E: JSC::JSSymbolTableObject::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;) (JSSymbolTableObject.cpp:48)
==23==    by 0x109AC493: void JSC::JSLexicalEnvironment::visitChildrenImpl&lt;JSC::SlotVisitor&gt;(JSC::JSCell*, JSC::SlotVisitor&amp;) (JSLexicalEnvironment.cpp:44)
==23==    by 0x109A96A6: JSC::JSLexicalEnvironment::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;) (JSLexicalEnvironment.cpp:48)
==23==    by 0x1021A8C6: JSC::MethodTable::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;) const (ClassInfo.h:115)
==23==    by 0x1021B518: JSC::SlotVisitor::visitChildren(JSC::JSCell const*) (SlotVisitor.cpp:394)
==23==    by 0x10216FD7: JSC::SlotVisitor::drain(WTF::MonotonicTime)::{lambda(JSC::MarkStackArray&amp;)#1}::operator()(JSC::MarkStackArray&amp;) const (SlotVisitor.cpp:504)
==23==    by 0x1021A05C: WTF::IterationStatus JSC::SlotVisitor::forEachMarkStack&lt;JSC::SlotVisitor::drain(WTF::MonotonicTime)::{lambda(JSC::MarkStackArray&amp;)#1}&gt;(JSC::SlotVisitor::drain(WTF::MonotonicTime)::{lambda(JSC::MarkStackArray&amp;)#1} const&amp;) (SlotVisitorInlines.h:184)
==23==    by 0x102170EA: JSC::SlotVisitor::drain(WTF::MonotonicTime) (SlotVisitor.cpp:494)

There are loads of these in GC area.  Not sure if they are relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912243</commentid>
    <comment_count>9</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-14 02:08:54 -0800</bug_when>
    <thetext>Most recent crashes on a custom AArch64 platform (WPE build), still not reproducible elsewhere:

Thread 26 &quot;HeapHelper&quot; received signal SIGSEGV, Segmentation fault.
[Switching to Thread 9205.9347]
JSC::MarkedBlock::aboutToMark (markingVersion=3, this=0x572a9c9698db8000) at Source/JavaScriptCore/heap/MarkedBlock.h:571
571         Dependency dependency = Dependency::loadAndFence(&amp;footer().m_markingVersion, version);
(gdb) bt
#0  JSC::MarkedBlock::aboutToMark (markingVersion=3, this=0x572a9c9698db8000) at Source/JavaScriptCore/heap/MarkedBlock.h:571
#1  JSC::Heap::testAndSetMarked (rawCell=0x572a9c9698dbada3, markingVersion=3) at Source/JavaScriptCore/heap/HeapInlines.h:86
#2  JSC::SlotVisitor::markAuxiliary (this=this@entry=0x7fb05cf200, base=0x572a9c9698dbada3) at Source/JavaScriptCore/heap/SlotVisitor.cpp:302
#3  0x0000007fb6c39d60 in JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties&lt;JSC::SlotVisitor&gt; (maxOffset=-1, structure=0x7f8c5fa8b0, butterfly=0x572a9c9698dbadab, visitor=..., this=0x7f27072de0)
    at /data/builds/yvos-buildroot/yvos-master/sagemcom.diw3930-atk-bolt/yvos-buildroot-build/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/bits/string_fortified.h:34
#4  JSC::JSObject::visitButterflyImpl&lt;JSC::SlotVisitor&gt; (visitor=..., this=0x7f27072de0) at Source/JavaScriptCore/runtime/JSObject.cpp:400
#5  JSC::JSObject::visitButterfly&lt;JSC::SlotVisitor&gt; (visitor=..., this=0x7f27072de0) at Source/JavaScriptCore/runtime/JSObject.cpp:108
#6  JSC::JSObject::visitChildrenImpl&lt;JSC::SlotVisitor&gt; (visitor=..., cell=0x7f27072de0) at Source/JavaScriptCore/runtime/JSObject.cpp:423
#7  JSC::JSObject::visitChildren (cell=cell@entry=0x7f27072de0, visitor=...) at Source/JavaScriptCore/runtime/JSObject.cpp:426
#8  0x0000007fb6c3a43c in JSC::JSInternalFieldObjectImpl&lt;2u&gt;::visitChildrenImpl&lt;JSC::SlotVisitor&gt; (visitor=..., cell=0x7f27072de0) at Source/JavaScriptCore/runtime/JSInternalFieldObjectImplInlines.h:42
#9  JSC::JSInternalFieldObjectImpl&lt;2u&gt;::visitChildren (visitor=..., cell=0x7f27072de0) at Source/JavaScriptCore/runtime/JSInternalFieldObjectImplInlines.h:42
#10 JSC::JSPromise::visitChildrenImpl&lt;JSC::SlotVisitor&gt; (visitor=..., cell=0x7f27072de0) at Source/JavaScriptCore/runtime/JSPromise.cpp:75
#11 JSC::JSPromise::visitChildren (cell=0x7f27072de0, visitor=...) at Source/JavaScriptCore/runtime/JSPromise.cpp:78
#12 0x0000007fb6837af8 in JSC::MethodTable::visitChildren (visitor=..., cell=0x7f27072de0, this=&lt;optimized out&gt;) at Source/JavaScriptCore/runtime/ClassInfo.h:111
#13 JSC::SlotVisitor::visitChildren (cell=0x7f27072de0, this=0x7fb05cf200) at Source/JavaScriptCore/heap/SlotVisitor.cpp:396
#14 JSC::SlotVisitor::&lt;lambda(JSC::MarkStackArray&amp;)&gt;::operator() (__closure=&lt;optimized out&gt;, stack=...) at Source/JavaScriptCore/heap/SlotVisitor.cpp:507
#15 JSC::SlotVisitor::forEachMarkStack&lt;JSC::SlotVisitor::drain(WTF::MonotonicTime)::&lt;lambda(JSC::MarkStackArray&amp;)&gt; &gt; (func=..., this=0x7fb05cf200) at Source/JavaScriptCore/heap/SlotVisitorInlines.h:174
#16 JSC::SlotVisitor::drain (this=this@entry=0x7fb05cf200, timeout=...) at Source/JavaScriptCore/heap/SlotVisitor.cpp:497
#17 0x0000007fb6838440 in JSC::SlotVisitor::drainFromShared (this=this@entry=0x7fb05cf200, sharedDrainMode=sharedDrainMode@entry=JSC::SlotVisitor::HelperDrain, timeout=...) at Source/JavaScriptCore/heap/SlotVisitor.cpp:698
--Type &lt;RET&gt; for more, q to quit, c to continue without paging--
#18 0x0000007fb6807b44 in JSC::Heap::&lt;lambda()&gt;::operator() (__closure=0x7f7c81e0e8) at Source/JavaScriptCore/heap/Heap.cpp:1305
#19 WTF::SharedTaskFunctor&lt;void(), JSC::Heap::runBeginPhase(JSC::GCConductor)::&lt;lambda()&gt; &gt;::run(void) (this=0x7f7c81e0d8) at WTF/Headers/wtf/SharedTask.h:91
#20 0x0000007fb7158944 in WTF::ParallelHelperClient::runTask(WTF::RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::RawPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt;, WTF::DefaultRefDerefTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; const&amp;) (this=0x7f8c700448, task=...) at Source/WTF/wtf/ParallelHelperPool.cpp:110
#21 0x0000007fb7159a0c in WTF::ParallelHelperPool::Thread::work (this=0x7f7c8d2480) at Source/WTF/wtf/ParallelHelperPool.cpp:201
#22 0x0000007fb7138ab4 in WTF::AutomaticThread::&lt;lambda()&gt;::operator() (__closure=0x7f7c823c98) at Source/WTF/wtf/AutomaticThread.cpp:229
#23 WTF::Detail::CallableWrapper&lt;WTF::AutomaticThread::start(const WTF::AbstractLocker&amp;)::&lt;lambda()&gt;, void&gt;::call(void) (this=0x7f7c823c90) at Source/WTF/wtf/Function.h:53
#24 0x0000007fb71615d4 in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;) at Source/WTF/wtf/Function.h:79
#25 WTF::Thread::entryPoint (newThreadContext=0x7f7c81b190) at Source/WTF/wtf/Threading.cpp:187
#26 0x0000007fb71c6b8c in WTF::wtfThreadEntryPoint (context=&lt;optimized out&gt;) at Source/WTF/wtf/posix/ThreadingPOSIX.cpp:241
#27 0x0000007fb3007904 in start_thread (arg=0x7fffffda06) at pthread_create.c:479
#28 0x0000007fb3cd6cac in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
(gdb) x/i $pc
=&gt; 0x7fb6836874 &lt;JSC::SlotVisitor::markAuxiliary(void const*)+180&gt;:     ldr     w0, [x0]
(gdb) p/x $x0
$1 = 0x572a9c9698dbbef0

and

Core was generated by `.../libexec/wpe-webkit-1.0/WPEWebProcess 10 22&apos;.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000007fb68367f8 in std::__atomic_base&lt;bool&gt;::load (__m=std::memory_order_relaxed, this=0x221f2b9a494037e9) at .../host/aarch64-buildroot-linux-gnu/include/c++/8.4.0/bits/atomic_base.h:390
390           load(memory_order __m = memory_order_seq_cst) const noexcept
[Current thread is 1 (LWP 19959)]
(gdb) bt
#0  0x0000007fb68367f8 in std::__atomic_base&lt;bool&gt;::load (__m=std::memory_order_relaxed, this=0x221f2b9a494037e9) at .../host/aarch64-buildroot-linux-gnu/include/c++/8.4.0/bits/atomic_base.h:390
#1  std::atomic&lt;bool&gt;::load (__m=std::memory_order_relaxed, this=0x221f2b9a494037e9) at .../host/aarch64-buildroot-linux-gnu/include/c++/8.4.0/atomic:111
#2  WTF::Atomic&lt;bool&gt;::load (order=std::memory_order_relaxed, this=0x221f2b9a494037e9) at WTF/Headers/wtf/Atomics.h:62
#3  JSC::PreciseAllocation::isMarked (this=0x221f2b9a494037d0) at Source/JavaScriptCore/heap/PreciseAllocation.h:87
#4  JSC::PreciseAllocation::testAndSetMarked (this=0x221f2b9a494037d0) at Source/JavaScriptCore/heap/PreciseAllocation.h:133
#5  JSC::Heap::testAndSetMarked (rawCell=0x221f2b9a49403838, markingVersion=2) at Source/JavaScriptCore/heap/HeapInlines.h:84
#6  JSC::SlotVisitor::markAuxiliary (this=this@entry=0x7fb05cf200, base=0x221f2b9a49403838) at Source/JavaScriptCore/heap/SlotVisitor.cpp:302
#7  0x0000007fb6c39c50 in JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties&lt;JSC::SlotVisitor&gt; (maxOffset=-1, structure=0x7f8c5fa8b0, butterfly=0x221f2b9a49403840, visitor=..., this=0x7f7c0681e0)
    at .../host/aarch64-buildroot-linux-gnu/sysroot/usr/include/bits/string_fortified.h:34
#8  JSC::JSObject::visitButterflyImpl&lt;JSC::SlotVisitor&gt; (visitor=..., this=0x7f7c0681e0) at Source/JavaScriptCore/runtime/JSObject.cpp:400
#9  JSC::JSObject::visitButterfly&lt;JSC::SlotVisitor&gt; (visitor=..., this=0x7f7c0681e0) at Source/JavaScriptCore/runtime/JSObject.cpp:108
#10 JSC::JSObject::visitChildrenImpl&lt;JSC::SlotVisitor&gt; (visitor=..., cell=0x7f7c0681e0) at Source/JavaScriptCore/runtime/JSObject.cpp:423
#11 JSC::JSObject::visitChildren (cell=cell@entry=0x7f7c0681e0, visitor=...) at Source/JavaScriptCore/runtime/JSObject.cpp:426
#12 0x0000007fb6c3a32c in JSC::JSInternalFieldObjectImpl&lt;2u&gt;::visitChildrenImpl&lt;JSC::SlotVisitor&gt; (visitor=..., cell=0x7f7c0681e0) at Source/JavaScriptCore/runtime/JSInternalFieldObjectImplInlines.h:42
#13 JSC::JSInternalFieldObjectImpl&lt;2u&gt;::visitChildren (visitor=..., cell=0x7f7c0681e0) at Source/JavaScriptCore/runtime/JSInternalFieldObjectImplInlines.h:42
#14 JSC::JSPromise::visitChildrenImpl&lt;JSC::SlotVisitor&gt; (visitor=..., cell=0x7f7c0681e0) at Source/JavaScriptCore/runtime/JSPromise.cpp:75
#15 JSC::JSPromise::visitChildren (cell=0x7f7c0681e0, visitor=...) at Source/JavaScriptCore/runtime/JSPromise.cpp:78
#16 0x0000007fb6837af8 in JSC::MethodTable::visitChildren (visitor=..., cell=0x7f7c0681e0, this=&lt;optimized out&gt;) at Source/JavaScriptCore/runtime/ClassInfo.h:111
#17 JSC::SlotVisitor::visitChildren (cell=0x7f7c0681e0, this=0x7fb05cf200) at Source/JavaScriptCore/heap/SlotVisitor.cpp:396
--Type &lt;RET&gt; for more, q to quit, c to continue without paging--
#18 JSC::SlotVisitor::&lt;lambda(JSC::MarkStackArray&amp;)&gt;::operator() (__closure=&lt;optimized out&gt;, stack=...) at Source/JavaScriptCore/heap/SlotVisitor.cpp:507
#19 JSC::SlotVisitor::forEachMarkStack&lt;JSC::SlotVisitor::drain(WTF::MonotonicTime)::&lt;lambda(JSC::MarkStackArray&amp;)&gt; &gt; (func=..., this=0x7fb05cf200) at Source/JavaScriptCore/heap/SlotVisitorInlines.h:174
#20 JSC::SlotVisitor::drain (this=this@entry=0x7fb05cf200, timeout=...) at Source/JavaScriptCore/heap/SlotVisitor.cpp:497
#21 0x0000007fb6838440 in JSC::SlotVisitor::drainFromShared (this=this@entry=0x7fb05cf200, sharedDrainMode=sharedDrainMode@entry=JSC::SlotVisitor::HelperDrain, timeout=...) at Source/JavaScriptCore/heap/SlotVisitor.cpp:698
#22 0x0000007fb6807b44 in JSC::Heap::&lt;lambda()&gt;::operator() (__closure=0x7f7c82eee0) at Source/JavaScriptCore/heap/Heap.cpp:1305
#23 WTF::SharedTaskFunctor&lt;void(), JSC::Heap::runBeginPhase(JSC::GCConductor)::&lt;lambda()&gt; &gt;::run(void) (this=0x7f7c82eed0) at WTF/Headers/wtf/SharedTask.h:91
#24 0x0000007fb7158834 in WTF::ParallelHelperClient::runTask(WTF::RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::RawPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt;, WTF::DefaultRefDerefTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; const&amp;) (this=0x7f8c700448, task=...) at Source/WTF/wtf/ParallelHelperPool.cpp:110
#25 0x0000007fb71598fc in WTF::ParallelHelperPool::Thread::work (this=0x7f7c8d0480) at Source/WTF/wtf/ParallelHelperPool.cpp:201
#26 0x0000007fb71389a4 in WTF::AutomaticThread::&lt;lambda()&gt;::operator() (__closure=0x7fb05133c8) at Source/WTF/wtf/AutomaticThread.cpp:229
#27 WTF::Detail::CallableWrapper&lt;WTF::AutomaticThread::start(const WTF::AbstractLocker&amp;)::&lt;lambda()&gt;, void&gt;::call(void) (this=0x7fb05133c0) at Source/WTF/wtf/Function.h:53
#28 0x0000007fb71614c4 in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;) at Source/WTF/wtf/Function.h:79
#29 WTF::Thread::entryPoint (newThreadContext=0x7f7c8a2aa0) at Source/WTF/wtf/Threading.cpp:187
#30 0x0000007fb71c6a7c in WTF::wtfThreadEntryPoint (context=&lt;optimized out&gt;) at Source/WTF/wtf/posix/ThreadingPOSIX.cpp:241
#31 0x0000007fb3007904 in start_thread (arg=0x7fffffc866) at pthread_create.c:479
#32 0x0000007fb3cd6cac in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912244</commentid>
    <comment_count>10</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-14 02:09:34 -0800</bug_when>
    <thetext>Wondering if this one is related:  https://bugs.webkit.org/show_bug.cgi?id=180315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912366</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-11-14 10:50:01 -0800</bug_when>
    <thetext>Thanks. I tried reproducing this with various GC options on Apple Silicon macOS, but I cannot reproduce this issue. This indicates that this is Linux specific issue.
CCing Igalia folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912438</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-14 14:55:37 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #11)
&gt; This indicates that this is Linux specific issue.

Not impossible, but since it&apos;s an uncommon race condition, I would expect it to be tough to reproduce on any platform. I see this crash every once in a while, but I never *expect* to see it. It&apos;s not common.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912549</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-11-15 01:03:57 -0800</bug_when>
    <thetext>Tips for debugging a GC related crash (like this one):

1. Does it reproduce with JSC_useGenerationalGC=0?
2. Does it reproduce with JSC_useConcurrentGC=0?

   These test if you have some sort of missing write barrier issue.

3. Does running with JSC_useZombieMode=1 make it reproduce more easily?

   Rules out incremental sweeping as a factor.
   Plus, helps make GC issues manifest sooner, though it may perturb the timing of the run and hide the issue.

4. Does it reproduce with a Debug build?

   Helps makes things easier to debug.
   Plus enable a lot more assertions to check invariants.

5. Does running with JSC_verifyGC=1 report any errors?

   Helps catch potential concurrent GC and generational GC issue and point to potential where the issue is.
   Note: though rare, may report a false positive.

Some thoughts on your specific issue:
6. This appears to reproduce only on your &quot;custom AArch64 platform&quot;.

   Is this &quot;custom AArch64 platform&quot; stable?
   Have you ruled out silicon or OS kernel bugs?

   From my past experience in the real world (not theoretical), I&apos;ve known new CPUs (from a vendor whom I shall not name but is not Apple) to have either silicon or OS kernel configuration bugs that result in concurrency issues where the hardware itself does not enforce proper memory coherency despite the presence of the needed memory barriers.  Has this been ruled out yet?

7. If you&apos;re running on custom silicon, are you also adding custom code to WebKit e.g. new types of Objects that are JSCells, or new functions that allocate and manipulate JSCells?

    If so, are you sure you have issued write barriers in all the needed places?

    One way to test this is to see if your issue still reproduces with the concurrent and generational GC disabled (see (1) and (2) above).

    If the reproduction stops, the next thing is to turn those back on, and start sprinting write barriers liberally in your code to see if it makes the issue goes away.

    If it does, gradually remove this sprinkling of write barriers, and see which one re-introduces the crash.  If you&apos;ve isolated it, then audit the code around there to figure out why that write barrier is needed, or not.

There are also advanced techniques for debugging GC issues using JSC_verifyHeap=1 that requires writing a lot of custom code carefully: requires knowing what you are doing with GC related code, and understanding the art of bisecting bugs in time (vs in space).  It&apos;s not a turn key solution for debugging such issues, but if you&apos;re the type who can dive in and reason deeply about how the system works, you can use this to help isolate the issue ... assuming it is a software issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912574</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-15 05:06:35 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #13)
&gt; 6. This appears to reproduce only on your &quot;custom AArch64 platform&quot;.
&gt; 
&gt;    Is this &quot;custom AArch64 platform&quot; stable?
&gt;    Have you ruled out silicon or OS kernel bugs?

It&apos;s definitely not an architecture-specific or hardware-specific issue, since I reported this originally, and I use x86_64. I cannot reproduce it, but it definitely happens sometimes.

&gt; 7. If you&apos;re running on custom silicon, are you also adding custom code to
&gt; WebKit e.g. new types of Objects that are JSCells, or new functions that
&gt; allocate and manipulate JSCells?

I think we can discount this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912576</commentid>
    <comment_count>15</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-15 05:14:45 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #13)
&gt; Tips for debugging a GC related crash (like this one):
&gt; 

Thanks!  Very much appreciated!

&gt; 1. Does it reproduce with JSC_useGenerationalGC=0?

Doesn&apos;t seem so.

&gt; 2. Does it reproduce with JSC_useConcurrentGC=0?
&gt;

Less likely.  Initially we had this as a work-around and believed this alleviates the issue, until I recently a crash despite `JSC_useConcurrentGC=0` being set but that was with a full-blown web app.  See this comment:  https://bugs.webkit.org/show_bug.cgi?id=200863#c7

&gt;    These test if you have some sort of missing write barrier issue.
&gt; 

Yup, there seems to be an issue with a barrier.

&gt; 3. Does running with JSC_useZombieMode=1 make it reproduce more easily?
&gt; 
&gt;    Rules out incremental sweeping as a factor.
&gt;    Plus, helps make GC issues manifest sooner, though it may perturb the
&gt; timing of the run and hide the issue.
&gt; 

The reproducibility seems to be the same, ie. it&apos;s stil quite easy to reproduce the crash on &quot;custom AArch64 platform&quot; with the attached example and additionall logging patch.

&gt; 4. Does it reproduce with a Debug build?
&gt; 
&gt;    Helps makes things easier to debug.
&gt;    Plus enable a lot more assertions to check invariants.
&gt; 

Yes, although it&apos;s more difficult to reproduce, and haven&apos;t managed to reproduce it with the simplified example attached.  It was reproducible with a bigger web app though and many other things going on.  The crash looked the same.

I do reproduce it with a release build with debug symbols though using the attached example.  Can try again a debug build.

&gt; 5. Does running with JSC_verifyGC=1 report any errors?
&gt; 
&gt;    Helps catch potential concurrent GC and generational GC issue and point
&gt; to potential where the issue is.
&gt;    Note: though rare, may report a false positive.
&gt; 

Quickly checking it, I don&apos;t see any errors, although with the amount of logging enabled I could be missing something.  Will take a closer look.

&gt; Some thoughts on your specific issue:
&gt; 6. This appears to reproduce only on your &quot;custom AArch64 platform&quot;.
&gt; 
&gt;    Is this &quot;custom AArch64 platform&quot; stable?

It&apos;s supposed to be, but what platform can be considered stable these days?  There&apos;s a chance it&apos;s a platform issue which I do not rule out.

&gt;    Have you ruled out silicon or OS kernel bugs?
&gt; 

These are always possible, aren&apos;t they?

&gt;    From my past experience in the real world (not theoretical), I&apos;ve known
&gt; new CPUs (from a vendor whom I shall not name but is not Apple) to have
&gt; either silicon or OS kernel configuration bugs that result in concurrency
&gt; issues where the hardware itself does not enforce proper memory coherency
&gt; despite the presence of the needed memory barriers.  Has this been ruled out
&gt; yet?
&gt; 

Not ruled out.  See this comment though:  https://bugs.webkit.org/show_bug.cgi?id=200863#c12

This suggests the crash is not necessarily specific to the &quot;custom AArch64 platform&quot; where I can reproduce it.  The original report was for x86_64.

&gt; 7. If you&apos;re running on custom silicon, are you also adding custom code to
&gt; WebKit e.g. new types of Objects that are JSCells, or new functions that
&gt; allocate and manipulate JSCells?
&gt; 

No.

&gt;     If so, are you sure you have issued write barriers in all the needed
&gt; places?
&gt; 

Not applicable.

&gt;     One way to test this is to see if your issue still reproduces with the
&gt; concurrent and generational GC disabled (see (1) and (2) above).
&gt; 

(1) seems not (easily) reproducible, (2) is known to still reproduce the crash although not so easily.

&gt;     If the reproduction stops, the next thing is to turn those back on, and
&gt; start sprinting write barriers liberally in your code to see if it makes the
&gt; issue goes away.
&gt; 
&gt;     If it does, gradually remove this sprinkling of write barriers, and see
&gt; which one re-introduces the crash.  If you&apos;ve isolated it, then audit the
&gt; code around there to figure out why that write barrier is needed, or not.
&gt; 

Not applicable, we don&apos;t have any custom code.  In fact, I ruled this out with a pristine WPE release build for the &quot;custom AArch64 platform&quot; and no patches/modifications.

We do have a custom UI process (launcher) but the crash is in the Web process.
 
&gt; There are also advanced techniques for debugging GC issues using
&gt; JSC_verifyHeap=1 that requires writing a lot of custom code carefully:
&gt; requires knowing what you are doing with GC related code, and understanding
&gt; the art of bisecting bugs in time (vs in space).  It&apos;s not a turn key
&gt; solution for debugging such issues, but if you&apos;re the type who can dive in
&gt; and reason deeply about how the system works, you can use this to help
&gt; isolate the issue ... assuming it is a software issue.

OK, will try to explore this avenue, also look into more detail for any reports from `JSC_verifyGC=1`.

And what do you think of Valgrind warnings, as in this comment: https://bugs.webkit.org/show_bug.cgi?id=200863#c8
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912585</commentid>
    <comment_count>16</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-15 05:56:28 -0800</bug_when>
    <thetext>(In reply to Krzysztof Konopko from comment #15)
&gt; (In reply to Mark Lam from comment #13)
&gt; &gt; 4. Does it reproduce with a Debug build?
&gt; &gt; 
&gt; &gt;    Helps makes things easier to debug.
&gt; &gt;    Plus enable a lot more assertions to check invariants.
&gt; &gt; 
&gt; 
&gt; Yes, although it&apos;s more difficult to reproduce, and haven&apos;t managed to
&gt; reproduce it with the simplified example attached.  It was reproducible with
&gt; a bigger web app though and many other things going on.  The crash looked
&gt; the same.

I take this one back.  I double-checked our issue tracker and this has not been reproduced on a Debug build.  The best we got is a Release build with debug symbols.

Certainly in Debug builds a lot of functions are not inlined therefore stack allocation looks different and all the timings looks different (also incurred by more function calls).

Personally I suspect this might be related to some object(s) (memory) being allocated on the stack and used after that bit of stack is released.  Of course the use of the stack may be intended but with a missing barrier somewhere, the object (memory) goes out of scope while (still_ being processed on another thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912611</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-11-15 07:44:23 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; (In reply to Mark Lam from comment #13)
&gt; &gt; 6. This appears to reproduce only on your &quot;custom AArch64 platform&quot;.
&gt; &gt; 
&gt; &gt;    Is this &quot;custom AArch64 platform&quot; stable?
&gt; &gt;    Have you ruled out silicon or OS kernel bugs?
&gt; 
&gt; It&apos;s definitely not an architecture-specific or hardware-specific issue,
&gt; since I reported this originally, and I use x86_64. I cannot reproduce it,
&gt; but it definitely happens sometimes.

This is a faulty assumption.  A crash in SlotVisitor::visitChildren can mean any number of things, for example:
1. You have 1 missing write barrier.
2. You have 1000 missing different write barriers.
3. You have some random memory corruption bug.
4. Your compiler toolchain had a bug.

If any of these (and some others) go wrong, you can see a crash in SlotVisitor::visitChildren.  Since you initially filed this bug against x86_64 in 2019, there have been some GC bugs that have been fixed.  There has also been a lot of new code that have been added, which may or may not have introduced new GC bugs.  So, the fact that this manifested for you back in 2019 on x86_64 tells you nothing about whether today&apos;s manifestation of this crash is due to the same bug.

Hence, when it comes to GC type crashes like this, we shouldn&apos;t make such assumptions, especially based on a crash manifestation from many years ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912617</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-11-15 08:19:04 -0800</bug_when>
    <thetext>(In reply to Krzysztof Konopko from comment #15)
&gt; (In reply to Mark Lam from comment #13)
&gt; &gt; Tips for debugging a GC related crash (like this one):
&gt; &gt; 
&gt; 
&gt; Thanks!  Very much appreciated!
&gt; 
&gt; &gt; 1. Does it reproduce with JSC_useGenerationalGC=0?
&gt; 
&gt; Doesn&apos;t seem so.

This is interesting if this continues to be true.

&gt; &gt; 2. Does it reproduce with JSC_useConcurrentGC=0?
&gt; 
&gt; See this comment:  https://bugs.webkit.org/show_bug.cgi?id=200863#c7

I saw, but I had to add this case too for the benefit of anyone else seeking to learn about GC debugging by reading these comments.

&gt; Yup, there seems to be an issue with a barrier.

I think this is a good likely scenario ... or something that has the effect of a missing barrier.


&gt; &gt; 3. Does running with JSC_useZombieMode=1 make it reproduce more easily?
&gt; &gt; 
&gt; &gt;    Rules out incremental sweeping as a factor.
&gt; &gt;    Plus, helps make GC issues manifest sooner, though it may perturb the
&gt; &gt; timing of the run and hide the issue.
&gt; &gt; 
&gt; 
&gt; The reproducibility seems to be the same, ie. it&apos;s stil quite easy to
&gt; reproduce the crash on &quot;custom AArch64 platform&quot; with the attached example
&gt; and additionall logging patch.

If the reproducibility is the same, then always run with useZombieMode=1 while you&apos;re still debugging this.  It can only help.

&gt; &gt; 4. Does it reproduce with a Debug build?
&gt; &gt; 
&gt; &gt;    Helps makes things easier to debug.
&gt; &gt;    Plus enable a lot more assertions to check invariants.
&gt; &gt; 
&gt; 
&gt; Yes, although it&apos;s more difficult to reproduce, and haven&apos;t managed to
&gt; reproduce it with the simplified example attached.  It was reproducible with
&gt; a bigger web app though and many other things going on.  The crash looked
&gt; the same.
&gt; 
&gt; I do reproduce it with a release build with debug symbols though using the
&gt; attached example.  Can try again a debug build.

A Release build with debug symbols does not add new info.
A Debug build with optimizations forced to -O3 will add info.

On Mac builds, it&apos;s easy to force the build to use -O3 (see `set-webkit-configuration --force-opt=O3`).  However, that mechanism to force O3 only works with Xcode builds.  You should look into doing the same with your own build system and see it reproduces with the Debug build.

If speed (and therefore timing) is the reason it stops reproducing, then forcing O3 should make it easy to reproduce again.

Using the Debug build is interesting because as I said earlier, it will &quot;enable a lot more assertions to check invariants&quot;.  This help catch the bug earlier.

&gt; &gt; 5. Does running with JSC_verifyGC=1 report any errors?
&gt; &gt; 
&gt; &gt;    Helps catch potential concurrent GC and generational GC issue and point
&gt; &gt; to potential where the issue is.
&gt; &gt;    Note: though rare, may report a false positive.
&gt; &gt; 
&gt; 
&gt; Quickly checking it, I don&apos;t see any errors, although with the amount of
&gt; logging enabled I could be missing something.  Will take a closer look.

You can run with JSC_verifyGC=1 on Release builds too.


&gt; &gt; Some thoughts on your specific issue:
&gt; &gt; 6. This appears to reproduce only on your &quot;custom AArch64 platform&quot;.
&gt; &gt; 
&gt; &gt;    Is this &quot;custom AArch64 platform&quot; stable?
&gt; 
&gt; Not ruled out.  See this comment though: 
&gt; https://bugs.webkit.org/show_bug.cgi?id=200863#c12

If your crash the same as #c12?  There may still be a source of crashes in the code base, but this manifests rarely.  #c12 can be one of those.  In your case, are you just seeing the crash once in a blue moon (to the extent that it&apos;s not reproducible on demand)?  Or can you always reproduce it simply by running some workload for some determined period of time?  It sounded like your scenario is the latter, which implies that you have a different bug here.

Also see https://bugs.webkit.org/show_bug.cgi?id=200863#c17 regarding possible root causes of this crash.

The question to ask is: are you also seeing other types of inexplicable crashes in other parts of the system at about the same rate as the SlotVisitor::visitChildren crash.  The answer to this tells you whether there is something else at play in the core platform below WebKit.

&gt; &gt; There are also advanced techniques for debugging GC issues using
&gt; &gt; JSC_verifyHeap=1 that requires writing a lot of custom code carefully:
&gt; &gt; requires knowing what you are doing with GC related code, and understanding
&gt; &gt; the art of bisecting bugs in time (vs in space).  It&apos;s not a turn key
&gt; &gt; solution for debugging such issues, but if you&apos;re the type who can dive in
&gt; &gt; and reason deeply about how the system works, you can use this to help
&gt; &gt; isolate the issue ... assuming it is a software issue.
&gt; 
&gt; OK, will try to explore this avenue, also look into more detail for any
&gt; reports from `JSC_verifyGC=1`.
&gt; 
&gt; And what do you think of Valgrind warnings, as in this comment:
&gt; https://bugs.webkit.org/show_bug.cgi?id=200863#c8
&gt; ?

As Justin explained in https://webkit.slack.com/archives/CU5LWFM28/p1668090516378259?thread_ts=1668089239.370399&amp;cid=CU5LWFM28, Valgrind makes assumptions about how the code works.  Valgrind is not knowledgeable about how JSC works, and JSC does a lot of advance and tricky algorithms that Valgrind has no way to know about.  As a result, you&apos;ll just be looking at a lot (possibly, all) false positives.  If you want to continue to use it, you&apos;re on your own on deciphering whether the reported error is real or one of the many false positives that Valgrind will report.

Right now, your data suggests that there may be a missing write barrier.  The other possibility is that you have a compiler bug.  Are you using gcc?  Does replacing it with clang change the rate of reproduction significantly?

Anyway, I&apos;ve suggested / implied action items above to follow up on.  You can also try using JSC_verifyHeap=1 if you like, but doing so requires that it is able to detect memory corruption due to the bug.  You can always just try running with JSC_verifyHeap=1 as is and see if the current default configuration will already report an error (in the form of a crash).  FYI, JSC_verifyGC=1 also reports its error with a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912630</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-15 09:11:20 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #18)
&gt; As Justin explained in
&gt; https://webkit.slack.com/archives/CU5LWFM28/
&gt; p1668090516378259?thread_ts=1668089239.370399&amp;cid=CU5LWFM28, Valgrind makes
&gt; assumptions about how the code works.  Valgrind is not knowledgeable about
&gt; how JSC works, and JSC does a lot of advance and tricky algorithms that
&gt; Valgrind has no way to know about.  As a result, you&apos;ll just be looking at a
&gt; lot (possibly, all) false positives.  If you want to continue to use it,
&gt; you&apos;re on your own on deciphering whether the reported error is real or one
&gt; of the many false positives that Valgrind will report.
&gt;
&gt; Right now, your data suggests that there may be a missing write barrier. 

valgrind&apos;s memcheck tool is not prone to false positives, unless you are running leak check. (The leak check likes to complain about one-time leaks that may be intentional. It may also complain if you&apos;re doing something seriously weird.) Except for leak check results, I&apos;d be surprised if memcheck discovers anything that&apos;s not either a real bug or at least non-ideal behavior that&apos;s worth fixing. It&apos;s really not normal for valgrind to report memory errors. The most benign result I ever saw turned out to be WebKit IPC writing uninitialized padding bytes to the IPC socket, which was harmless because the WebKit process on the other end of the pipe would just ignore them, but we still fixed that to ensure that running cleanly with valgrind is possible.

In this case, looking at comment #8, I see that JSC is reading the value of uninitialized memory. That does not look benign. Also, the uninitalized read in the JSC::WriteBarrier class, which is pretty concerning considering your comment above regarding the possibility that there may be a missing write barrier! :) Based on the line numbers, it&apos;s clear that WriteBarrierBase::m_cell is being read by a call to WriteBarrierBase::cell before it is initialized, so the value of the StorageType returned by that call is undefined behavior. I don&apos;t know for certain whether it&apos;s relevant to this crash, but it is being called by JSC::SlotVisitor, so... seems like a pretty decent chance this is related. At the very least, it&apos;s bad.

If WriteBarrierBase::m_cell were initialized to a default value, that would avoid the complaints from valgrind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912646</commentid>
    <comment_count>20</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-15 09:34:58 -0800</bug_when>
    <thetext>Now I have the following set:

JSC_useZombieMode=1
JSC_verifyGC=1
JSC_verifyHeap=1

It&apos;s still Release with debug symbols, &quot;custom AArch64 platform&quot;, attached example with the logging patch.

And it seems to always crash in the same way (although it takes different amount of time between 10-120 seconds):

#0  JSC::JSValue::isHeapBigInt (this=0x7fe6de1a90) at Source/JavaScriptCore/runtime/JSCellInlines.h:227
#1  JSC::JSValue::isBigInt (this=0x7fe6de1a90) at Source/JavaScriptCore/runtime/JSCJSValueInlines.h:675
#2  JSC::JSValue::toBigIntOrInt32 (globalObject=0x7fa0e39068, this=0x7fe6de1a90) at Source/JavaScriptCore/runtime/JSCJSValueInlines.h:868
#3  JSC::bitwiseBinaryOp&lt;JSC::jsBitwiseAnd(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue)::{lambda(int, int)#1}&amp;, JSC::jsBitwiseAnd(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue)::{lambda(JSC::JSGlobalObject*, auto:1, auto:2)#2}&amp;&gt;(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValu
e, JSC::jsBitwiseAnd(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue)::{lambda(int, int)#1}&amp;, JSC::jsBitwiseAnd(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue)::{lambda(int, int)#1}&amp;, char const*) (errorMessage=&lt;optimized out&gt;, bigIntOp=..., int32Op=..., v2=..., v1=...,
    globalObject=0x7fa0e39068) at Source/JavaScriptCore/runtime/Operations.h:823
#4  JSC::jsBitwiseAnd (v2=..., v1=..., globalObject=0x7fa0e39068) at Source/JavaScriptCore/runtime/Operations.h:863
#5  JSC::slow_path_bitand (callFrame=0x7fe6de1b80, pc=0x7fa0ed0c9e) at Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:769
#6  0x0000007f80c0d1e8 in ?? ()
#7  0x0000007f78eeb800 in ?? ()

(gdb) x/i $pc
=&gt; 0x7fa79804cc &lt;JSC::slow_path_bitand(JSC::CallFrame*, JSC::Instruction const*)+236&gt;:  ldrb    w0, [x28, #5]
(gdb) p/x $x28
$2 = 0xbadbeef0

(gdb) x/4xw 0x7fe6de1a90
0x7fe6de1a90:   0xbadbeef0      0x00000000      0x79000000      0x0000007f

Presumabely this originates from the JIT code and crashes on the _first_ call to `JSC::slow_path_bitand()` which is made sooner or later, depending on the timing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912647</commentid>
    <comment_count>21</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-11-15 09:38:07 -0800</bug_when>
    <thetext>
&gt; valgrind&apos;s memcheck tool is not prone to false positives, unless you are
&gt; running leak check.

How does it check? I can&apos;t find any details in the documentation. Our write barrier class is intentionally used to read memory that it did not construct itself, so it doesn&apos;t seem strange to me that it would complain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912650</commentid>
    <comment_count>22</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-11-15 09:40:30 -0800</bug_when>
    <thetext>
&gt; 
&gt; #0  JSC::JSValue::isHeapBigInt (this=0x7fe6de1a90) at
&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:227
&gt; #1  JSC::JSValue::isBigInt (this=0x7fe6de1a90) at
&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:675
&gt; #2  JSC::JSValue::toBigIntOrInt32 (globalObject=0x7fa0e39068,
&gt; this=0x7fe6de1a90) at Source/JavaScriptCore/runtime/JSCJSValueInlines.h:868
&gt; #3  JSC::bitwiseBinaryOp&lt;JSC::jsBitwiseAnd(JSC::JSGlobalObject*,
&gt; JSC::JSValue, JSC::JSValue)::{lambda(int, int)#1}&amp;,
&gt; JSC::jsBitwiseAnd(JSC::JSGlobalObject*, JSC::JSValue,

Your line numbers seem to be pretty off from mine, what build is this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912653</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-15 09:56:46 -0800</bug_when>
    <thetext>(In reply to Justin Michaud from comment #21)
&gt; How does it check? I can&apos;t find any details in the documentation. Our write
&gt; barrier class is intentionally used to read memory that it did not construct
&gt; itself, so it doesn&apos;t seem strange to me that it would complain.

The user-friendly documentation is here: https://valgrind.org/docs/manual/mc-manual.html#mc-manual.uninitvals

If you are smarter than me and really want to know what it&apos;s doing, there are more docs here: https://valgrind.org/docs/manual/mc-manual.html#mc-manual.machine

TL;DR WriteBarrierBase::cell is returning a garbage SymbolTable* pointer.

(In reply to Justin Michaud from comment #22)
&gt; Your line numbers seem to be pretty off from mine, what build is this?

Krzysztof reported WPE WebKit 2.34.7. It would be better to test with a newer version, but the code for 2.34.7 is here:

https://trac.webkit.org/browser#webkit/releases/WPE%20WebKit/webkit-2.34.7

(Can&apos;t wait for this to move to GitHub....)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912654</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-15 09:59:09 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #23)
&gt; Krzysztof reported WPE WebKit 2.34.7. It would be better to test with a
&gt; newer version

BTW the latest 2.38.2 is one year newer than 2.34. Really makes sense to try the latest code before reporting bugs; you never know whether it&apos;s already fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912667</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-11-15 11:03:12 -0800</bug_when>
    <thetext>(In reply to Justin Michaud from comment #21)
&gt; &gt; valgrind&apos;s memcheck tool is not prone to false positives, unless you are
&gt; &gt; running leak check.
&gt; 
&gt; How does it check? I can&apos;t find any details in the documentation. Our write
&gt; barrier class is intentionally used to read memory that it did not construct
&gt; itself, so it doesn&apos;t seem strange to me that it would complain.

Justin, what you claimed here is not entirely accurate.  We have conservative scanning of the stack.  That&apos;s the only place that we would expect to access uninitialized memory.  Everywhere else, we would expect initialized fields.  

In comment #c8, Krzysztof&apos;s crash trace seems to imply that JSSymbolTableObject::m_symbolTable is uninitialized.  Thanks to Michael&apos;s links, I&apos;ve got a refresher on how Valgrind works.  So, if Valgrind is working properly, then this error message is concerning.

However, JSSymbolTableObject::m_symbolTable is a WriteBarrier&lt;SymbolTable&gt;, and all WriteBarriers have a default constructor:
```
    WriteBarrier()
    {
        this-&gt;setWithoutWriteBarrier(nullptr);
    }
```
... which implies that Valgrind is wrong here.

Maybe the line number on Krzysztof&apos;s crash trace is just out of date. Regardless, please do build and test with the latest WebKit.  Reporting on a super old build which has not picked up all the bug fixes is not helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1912680</commentid>
    <comment_count>26</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-15 12:05:10 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #25)
&gt; Maybe the line number on Krzysztof&apos;s crash trace is just out of date.
&gt; Regardless, please do build and test with the latest WebKit.  Reporting on a
&gt; super old build which has not picked up all the bug fixes is not helpful.

Crash call stacks are indeed from WPE 2.34.7.  The latest release where we also reproduced it was 2.36.x.  Will try to build the latest WebKit (WPE) for our platform and recheck.

However, Valgrind complaints are from the latest mainline WebKit run on x86_64 (WPE build).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913171</commentid>
    <comment_count>27</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-17 08:00:00 -0800</bug_when>
    <thetext>Interestingly, in order to try out the latest WebKit code on our AArch64 platform, I had to switch from GCC 8.x to GCC 9.x.  Just by doing that and without changing anything else, I can no longer reproduce the issue in any way, while with GCC 8.x the very same thing makes it fairly easy to reproduce the crash.

It&apos;s conceivable that GCC could have a bug fixed in 9.x, yet I was not able to reproduce the crash on RPi3 AArch64 after I built the same WPE 2.34.7 with the same GCC 8.x.

Also, as indicated in Comment #8, Valgrind warns about using uninitialised values originating on the stack, which comes from the latest WebKit main branch built with GCC 12.x for x86_64.

So yeah, could be that GCC 9.x changes the timings but the issue remains buried even deeper, or maybe it&apos;s the issue with GCC 8.x.  Yet to be found.

Also Michael claimed in Comment #12 that he can &quot;see this crash every once in a while&quot;, presumably on a more recent (?) WebKit and on x86_64 (?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913288</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-17 15:07:13 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #25)
&gt; However, JSSymbolTableObject::m_symbolTable is a WriteBarrier&lt;SymbolTable&gt;,
&gt; and all WriteBarriers have a default constructor:
&gt; ```
&gt;     WriteBarrier()
&gt;     {
&gt;         this-&gt;setWithoutWriteBarrier(nullptr);
&gt;     }
&gt; ```
&gt; ... which implies that Valgrind is wrong here.

That just means that my assumption that m_cell is never initialized was wrong. A bug in WebKit is drastically more likely than a bug in valgrind. So if the m_cell is initially initialized, then it must be overwritten with uninitialized memory from someplace else later on. valgrind should be able to pinpoint where it&apos;s coming from, but not by default: you need to use --track-origins flag (which is slow!) to show that. There&apos;s a good chance that will give us the remaining info we need to fix this. Hopefully.

(In reply to Krzysztof Konopko from comment #27)
&gt; Also Michael claimed in Comment #12 that he can &quot;see this crash every once
&gt; in a while&quot;, presumably on a more recent (?) WebKit and on x86_64 (?)

Unfortunately, I don&apos;t remember when the last time I saw this crash was. That suggests it&apos;s probably not an important top crasher.

Honestly, if the crashes stopped after you upgraded GCC, then my primary concern here would be fixing the errors that valgrind is reporting. That seems likely to be the underlying bug here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913380</commentid>
    <comment_count>29</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-17 23:12:05 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #28)
&gt; (In reply to Mark Lam from comment #25)
&gt; &gt; However, JSSymbolTableObject::m_symbolTable is a WriteBarrier&lt;SymbolTable&gt;,
&gt; &gt; and all WriteBarriers have a default constructor:
&gt; &gt; ```
&gt; &gt;     WriteBarrier()
&gt; &gt;     {
&gt; &gt;         this-&gt;setWithoutWriteBarrier(nullptr);
&gt; &gt;     }
&gt; &gt; ```
&gt; &gt; ... which implies that Valgrind is wrong here.
&gt; 
&gt; That just means that my assumption that m_cell is never initialized was
&gt; wrong. A bug in WebKit is drastically more likely than a bug in valgrind. So
&gt; if the m_cell is initially initialized, then it must be overwritten with
&gt; uninitialized memory from someplace else later on. valgrind should be able
&gt; to pinpoint where it&apos;s coming from, but not by default: you need to use
&gt; --track-origins flag (which is slow!) to show that. There&apos;s a good chance
&gt; that will give us the remaining info we need to fix this. Hopefully.
&gt; 

Well, I was running with `--track-origins` pretty much early on.  I just thought I&apos;ve already presented the results of this option.  Apparently not, my bad!

Anyway, here&apos;s another example I still have lingering in one of the terminals, with the origin pointing to something on the stack:

==116== Use of uninitialised value of size 8
==116==    at 0x313B069: JSC::MarkedBlock::aboutToMarkSlow(unsigned int) (MarkedBlock.cpp:233)
==116==    by 0x1F191A1: JSC::MarkedBlock::aboutToMark(unsigned int) (MarkedBlock.h:573)
==116==    by 0x315BB5A: JSC::Heap::testAndSetMarked(unsigned int, void const*) (HeapInlines.h:86)
==116==    by 0x31579D6: JSC::SlotVisitor::appendJSCellOrAuxiliary(JSC::HeapCell*) (SlotVisitor.cpp:199)
==116==    by 0x3157366: JSC::SlotVisitor::append(JSC::ConservativeRoots const&amp;) (SlotVisitor.cpp:134)
==116==    by 0x30B7E57: auto JSC::Heap::addCoreConstraints()::{lambda(auto:1&amp;)#2}::operator()&lt;JSC::SlotVisitor&gt;(JSC::SlotVisitor&amp;) (Heap.cpp:2788)
==116==    by 0x30B8063: WTF::Detail::CallableWrapper&lt;JSC::Heap::addCoreConstraints()::{lambda(auto:1&amp;)#2}, void, JSC::SlotVisitor&amp;&gt;::call(JSC::SlotVisitor&amp;) (Function.h:53)
==116==    by 0x315CDEE: WTF::Function&lt;void (JSC::SlotVisitor&amp;)&gt;::operator()(JSC::SlotVisitor&amp;) const (Function.h:82)
==116==    by 0x315C0B8: JSC::MarkingConstraintExecutorPair::execute(JSC::SlotVisitor&amp;) (MarkingConstraintExecutorPair.h:45)
==116==    by 0x315CE4A: void JSC::SimpleMarkingConstraint::executeImplImpl&lt;JSC::SlotVisitor&gt;(JSC::SlotVisitor&amp;) (SimpleMarkingConstraint.cpp:48)
==116==    by 0x3156D42: JSC::SimpleMarkingConstraint::executeImpl(JSC::SlotVisitor&amp;) (SimpleMarkingConstraint.cpp:52)
==116==    by 0x313E948: JSC::MarkingConstraint::execute(JSC::SlotVisitor&amp;) (MarkingConstraint.cpp:58)
==116==  Uninitialised value was created by a stack allocation
==116==    at 0x32D2817: JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (Interpreter.cpp:1016)

I looked there but honestly couldn&apos;t figure out what could go wrong here.  This is pretty recent WebKit mainline branch on x86_64.

Note that it&apos;s a Valgring&apos;s limitation when it points at a function in case of the stack origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913386</commentid>
    <comment_count>30</comment_count>
      <attachid>463598</attachid>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-18 00:12:13 -0800</bug_when>
    <thetext>Created attachment 463598
JS-only test

For the avoidance of doubt, attaching a JS-only test which is extracted JS code from the previously attached HTML/JS test.  Note that this JS-only test does not reproduce the crash (inaccessible in JS-only env. global `window` object replaced with an empty one), yet it&apos;s still useful to run experiments, eg. with Valgrind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913390</commentid>
    <comment_count>31</comment_count>
      <attachid>463599</attachid>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-18 00:17:29 -0800</bug_when>
    <thetext>Created attachment 463599
Valgrind output when running JS-only test with `jsc`

* Copy `test.js` to `./WebKitBuild/WPE/Debug/`

* Enter WebKit WPE Flatpack:

  ./Tools/Scripts/webkit-flatpak --wpe --debug

* Run the test with Valgrind

  JSC_forceRAMSize=1G JSC_logGC=2 JSC_numberOfGCMarkers=2 \
  valgrind --read-var-info=yes --track-origins=yes \
    --log-file=./WebKitBuild/WPE/Debug/valgrind-jsc.log \
    ./WebKitBuild/WPE/Debug/bin/jsc ./WebKitBuild/WPE/Debug/test.js

`JSC_forceRAMSize=1G` is unlikely making any difference but I&apos;ve been using it consistently initially hoping to make it a more representative env. of the platform where the crash was originally reproduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913391</commentid>
    <comment_count>32</comment_count>
      <attachid>463600</attachid>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-18 00:23:28 -0800</bug_when>
    <thetext>Created attachment 463600
Valgrind output when running HTML/JS test

This is Valgrind output when running the HTML/JS `test.html` attached earlier.  This is run on a recent WebKit mainline on x86_64 WPE build.

* Copy `test.html` into `./WebKitBuild/WPE/Debug/`

* Run the following

  WEBKIT_MINI_BROWSER_PREFIX=&quot;valgrind --trace-children=yes --trace-children-skip=WPENetworkProcess --read-var-info=yes --track-origins=yes --log-file=/app/webkit/WebKitBuild/Debug/valgrind-html.log &quot; \
  JSC_forceRAMSize=1G JSC_logGC=2 JSC_numberOfGCMarkers=2 \
  ./Tools/Scripts/run-minibrowser --wpe --debug -- \
  --platform=headless --webprocess-failure=exit \
  file:///app/webkit/WebKitBuild/Debug/test.html

Again, `JSC_forceRAMSize=1G` and other flags are unlikely making any difference.  They are preserved though to make it more representative of the platform where the crash is reproduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913458</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-18 08:27:15 -0800</bug_when>
    <thetext>(In reply to Krzysztof Konopko from comment #31)
&gt; Created attachment 463599 [details]
&gt; Valgrind output when running JS-only test with `jsc`

Wow, looks like you&apos;ve just found a lot of problems. :S We should endeavor to keep our valgrind output clean; otherwise, false positives may cause serious confusion when handling bug reports, e.g. see comment 10 in bug #182272 if you have permission to view it, where I incorrectly decided that a bunch of distinct security bugs were all duplicates of each other because the SUPPRESS_ASAN annotation was broken.

I notice the majority of these somehow involve JSC::ConservativeRoots. Does this code intentionally make branching decisions based on uninitialized values? Because that is what is currently happening, in a bunch of different places. But it looks like a human has assessed this and decided that it is OK, because look:

template&lt;typename MarkHook&gt;
SUPPRESS_ASAN
void ConservativeRoots::genericAddSpan(void* begin, void* end, MarkHook&amp; markHook)

it says SUPPRESS_ASAN here. I think we need to (a) understand why this code is OK, (b) figure out how to avoid triggering valgrind by altering behavior using RUNNING_ON_VALGRIND from bmalloc/valgrind.h. We cannot simply tell valgrind to ignore problems that go via this function like we can with asan. (OK, we *can* by using suppression files, but the design of those is pretty broken, so nobody does.) Instead, we can detect valgrind with RUNNING_ON_VALGRIND, then vary behavior somehow to avoid the normally-intentional use of uninitialized memory. But doing that requires clearly understanding what the code is doing, so I won&apos;t be much help there....

Anyway, back to the original bug:

==125== Use of uninitialised value of size 8
==125==    at 0x1EF5EB8: JSC::WriteBarrierBase&lt;JSC::JSGlobalObject, WTF::RawPtrTraits&lt;JSC::JSGlobalObject&gt; &gt;::cell() const (WriteBarrier.h:153)
==125==    by 0x1EE9EC6: JSC::WriteBarrierBase&lt;JSC::JSGlobalObject, WTF::RawPtrTraits&lt;JSC::JSGlobalObject&gt; &gt;::get() const (WriteBarrier.h:101)
==125==    by 0x24FA88D: void JSC::SlotVisitor::append&lt;JSC::JSGlobalObject, WTF::RawPtrTraits&lt;JSC::JSGlobalObject&gt; &gt;(JSC::WriteBarrierBase&lt;JSC::JSGlobalObject, WTF::RawPtrTraits&lt;JSC::JSGlobalObject&gt; &gt; const&amp;) (SlotVisitorInlines.h:110)
==125==    by 0x3ABFAAA: void JSC::Structure::visitChildrenImpl&lt;JSC::SlotVisitor&gt;(JSC::JSCell*, JSC::SlotVisitor&amp;) (Structure.cpp:1275)
==125==    by 0x3AB33B0: JSC::Structure::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;) (Structure.cpp:1303)
==125==    by 0x315BA02: JSC::MethodTable::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;) const (ClassInfo.h:115)
==125==    by 0x315C654: JSC::SlotVisitor::visitChildren(JSC::JSCell const*) (SlotVisitor.cpp:394)
==125==    by 0x31580CB: JSC::SlotVisitor::drain(WTF::MonotonicTime)::{lambda(JSC::MarkStackArray&amp;)#1}::operator()(JSC::MarkStackArray&amp;) const (SlotVisitor.cpp:504)
==125==    by 0x315B150: WTF::IterationStatus JSC::SlotVisitor::forEachMarkStack&lt;JSC::SlotVisitor::drain(WTF::MonotonicTime)::{lambda(JSC::MarkStackArray&amp;)#1}&gt;(JSC::SlotVisitor::drain(WTF::MonotonicTime)::{lambda(JSC::MarkStackArray&amp;)#1} const&amp;) (SlotVisitorInlines.h:184)
==125==    by 0x31581DE: JSC::SlotVisitor::drain(WTF::MonotonicTime) (SlotVisitor.cpp:494)
==125==    by 0x3159373: JSC::SlotVisitor::donateAndDrain(WTF::MonotonicTime) (SlotVisitor.cpp:777)
==125==    by 0x3158E73: JSC::SlotVisitor::drainInParallel(WTF::MonotonicTime) (SlotVisitor.cpp:703)
==125==  Uninitialised value was created by a stack allocation
==125==    at 0x386C00D: JSC::JSGlobalObject::init(JSC::VM&amp;) (JSGlobalObject.cpp:786)

I would have hoped that it would point us to the exact line where the uninitialized value is originating from. :( But knowing that it&apos;s coming from JSGlobalObject::init is still useful. That&apos;s unfortunately a pretty big function, but now we know the bug is probably *somewhere* there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913505</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-11-18 11:09:16 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #33)
&gt; (In reply to Krzysztof Konopko from comment #31)
&gt; &gt; Created attachment 463599 [details]
&gt; &gt; Valgrind output when running JS-only test with `jsc`
&gt; 
&gt; Wow, looks like you&apos;ve just found a lot of problems. :S We should endeavor
&gt; to keep our valgrind output clean; otherwise, false positives may cause
&gt; serious confusion when handling bug reports, e.g. see comment 10 in bug
&gt; #182272 if you have permission to view it, where I incorrectly decided that
&gt; a bunch of distinct security bugs were all duplicates of each other because
&gt; the SUPPRESS_ASAN annotation was broken.
&gt; 
&gt; I notice the majority of these somehow involve JSC::ConservativeRoots. Does
&gt; this code intentionally make branching decisions based on uninitialized
&gt; values? Because that is what is currently happening, in a bunch of different
&gt; places. But it looks like a human has assessed this and decided that it is
&gt; OK, because look:
&gt; 
&gt; template&lt;typename MarkHook&gt;
&gt; SUPPRESS_ASAN
&gt; void ConservativeRoots::genericAddSpan(void* begin, void* end, MarkHook&amp;
&gt; markHook)
&gt; 
&gt; it says SUPPRESS_ASAN here. I think we need to (a) understand why this code
&gt; is OK, (b) figure out how to avoid triggering valgrind by altering behavior
&gt; using RUNNING_ON_VALGRIND from bmalloc/valgrind.h. We cannot simply tell
&gt; valgrind to ignore problems that go via this function like we can with asan.
&gt; (OK, we *can* by using suppression files, but the design of those is pretty
&gt; broken, so nobody does.) Instead, we can detect valgrind with
&gt; RUNNING_ON_VALGRIND, then vary behavior somehow to avoid the
&gt; normally-intentional use of uninitialized memory. But doing that requires
&gt; clearly understanding what the code is doing, so I won&apos;t be much help
&gt; there....

It is conservative GC stack scanning, so valgrind isn&apos;t correctly understanding it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913511</commentid>
    <comment_count>35</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-18 11:42:42 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #34)
&gt; (In reply to Michael Catanzaro from comment #33)
&gt; &gt; (In reply to Krzysztof Konopko from comment #31)
&gt; &gt; &gt; Created attachment 463599 [details]
&gt; &gt; &gt; Valgrind output when running JS-only test with `jsc`
&gt; &gt; 
&gt; &gt; Wow, looks like you&apos;ve just found a lot of problems. :S We should endeavor
&gt; &gt; to keep our valgrind output clean; otherwise, false positives may cause
&gt; &gt; serious confusion when handling bug reports, e.g. see comment 10 in bug
&gt; &gt; #182272 if you have permission to view it, where I incorrectly decided that
&gt; &gt; a bunch of distinct security bugs were all duplicates of each other because
&gt; &gt; the SUPPRESS_ASAN annotation was broken.
&gt; &gt; 
&gt; &gt; I notice the majority of these somehow involve JSC::ConservativeRoots. Does
&gt; &gt; this code intentionally make branching decisions based on uninitialized
&gt; &gt; values? Because that is what is currently happening, in a bunch of different
&gt; &gt; places. But it looks like a human has assessed this and decided that it is
&gt; &gt; OK, because look:
&gt; &gt; 
&gt; &gt; template&lt;typename MarkHook&gt;
&gt; &gt; SUPPRESS_ASAN
&gt; &gt; void ConservativeRoots::genericAddSpan(void* begin, void* end, MarkHook&amp;
&gt; &gt; markHook)
&gt; &gt; 
&gt; &gt; it says SUPPRESS_ASAN here. I think we need to (a) understand why this code
&gt; &gt; is OK, (b) figure out how to avoid triggering valgrind by altering behavior
&gt; &gt; using RUNNING_ON_VALGRIND from bmalloc/valgrind.h. We cannot simply tell
&gt; &gt; valgrind to ignore problems that go via this function like we can with asan.
&gt; &gt; (OK, we *can* by using suppression files, but the design of those is pretty
&gt; &gt; broken, so nobody does.) Instead, we can detect valgrind with
&gt; &gt; RUNNING_ON_VALGRIND, then vary behavior somehow to avoid the
&gt; &gt; normally-intentional use of uninitialized memory. But doing that requires
&gt; &gt; clearly understanding what the code is doing, so I won&apos;t be much help
&gt; &gt; there....
&gt; 
&gt; It is conservative GC stack scanning, so valgrind isn&apos;t correctly
&gt; understanding it.

OK, so if it all can be explained as reasonable and Valgdrind warnings are a red herring, then fair enough.  Nothing to see here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913516</commentid>
    <comment_count>36</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-18 11:55:30 -0800</bug_when>
    <thetext>Well the warning I pasted at the bottom of comment #33 is not a red herring. That&apos;s almost certainly the bug that&apos;s causing your crash.

(Even if the warnings from ConservativeRoots are red herrings, we still need to silence them, because without reading output from valgrind, we won&apos;t be able to fix memory corruption bugs. valgrind and asan are the only two games in town for debugging memory corruption, and asan is often not practical because it requires rebuilding so we can&apos;t tell users to try it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913820</commentid>
    <comment_count>37</comment_count>
    <who name="Krzysztof Konopko">kris</who>
    <bug_when>2022-11-21 01:06:37 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #36)
&gt; Well the warning I pasted at the bottom of comment #33 is not a red herring.
&gt; That&apos;s almost certainly the bug that&apos;s causing your crash.
&gt; 

Oh, missed this one.  Indeed, looks like a genuine problem, unless anyone can tell otherwise?

Not sure if there&apos;s anything else I can do:  it&apos;s already a Debug (WPE) build of the latest WebKit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913861</commentid>
    <comment_count>38</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-11-21 08:06:11 -0800</bug_when>
    <thetext>(In reply to Krzysztof Konopko from comment #37)
&gt; Oh, missed this one.  Indeed, looks like a genuine problem, unless anyone
&gt; can tell otherwise?

It&apos;s hard to imagine that it could possibly not be a bug. It&apos;s the same as in comment #8 except with JSC::JSGlobalObject instead of JSC::SymbolTable: the code is returning a pointer to a JSC::JSGlobalObject but the pointer is uninitialized memory, so it&apos;s garbage. At least, that&apos;s what it looks like to me. (In comment #36 I said it&apos;s &quot;almost certainly&quot; causing your crash, but that was silly of me: I have no clue what&apos;s causing your crash. But clearly the WriteBarrier is guarding a bogus pointer.)

As for the rest of the valgrind warnings caused by the conservative GC: this might sound crazy, but I think we should just completely turn off GC when running under valgrind (unless it&apos;s possible to somehow avoid reading uninitialized memory, but I guess that&apos;s just not how the garbage collector works?) and just accept that will (likely drastically) reduce our ability to check for memory errors. The output isn&apos;t useful at all otherwise: I would never have found the WriteBarrierBase problem in that huge wall of warnings had Krzysztof not initially pointed it out separately in comment #8.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>463515</attachid>
            <date>2022-11-14 01:33:19 -0800</date>
            <delta_ts>2022-11-14 01:33:19 -0800</delta_ts>
            <desc>HTML/JS test which reproduces the crash on a AArch64 platform (WPE)</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>13894</size>
            <attacher name="Krzysztof Konopko">kris</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgIDxzY3JpcHQ+CnZhciBnbG9iYWwgPSB3aW5kb3c7CgpmdW5j
dGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhy
b3csIGtleSwgYXJnKSB7CiAgICB0cnkgewogICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJn
KTsKICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOwogICAgfSBjYXRjaCAoZXJyb3IpIHsK
ICAgICAgICByZWplY3QoZXJyb3IpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaW5m
by5kb25lKSB7CiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIFBy
b21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsKICAgIH0KfQoKZnVuY3Rp
b24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHsKICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzOwogICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgIHZhciBnZW4g
PSBmbi5hcHBseShzZWxmLCBhcmdzKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVl
KSB7CiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWpl
Y3QsIF9uZXh0LCBfdGhyb3csICJuZXh0IiwgdmFsdWUpOwogICAgICAgICAgICB9CgogICAgICAg
ICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7CiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRv
clN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csICJ0aHJvdyIsIGVycik7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIF9uZXh0KHVuZGVmaW5lZCk7CiAgICAgICAgfSk7
CiAgICB9Owp9CgpmdW5jdGlvbiByZWRlZmluZShPLCBrZXksIHZhbCkgewogIHZhciBpc0Z1bmN0
aW9uID0gdHlwZW9mIHZhbCA9PSAnZnVuY3Rpb24nOwogIGlmIChpc0Z1bmN0aW9uKSBoYXModmFs
LCAnbmFtZScpOwogIGlmIChPW2tleV0gPT09IHZhbCkgcmV0dXJuOwogIGlmIChPID09PSBnbG9i
YWwpIHsKICAgIE9ba2V5XSA9IHZhbDsKICB9IGVsc2UgewogICAgZGVsZXRlIE9ba2V5XTsKICB9
Cn0KCnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkgewogIHZhciBJ
U19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HOwogIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBn
bG9iYWwgOiBnbG9iYWxbbmFtZV0gfHwgKGdsb2JhbFtuYW1lXSA9IHt9KTsKICB2YXIga2V5LCBv
d24sIG91dDsKICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lOwogIGZvciAoa2V5IGluIHNv
dXJjZSkgewogICAgLy8gY29udGFpbnMgaW4gbmF0aXZlCiAgICBvd24gPSB0YXJnZXQgJiYgdGFy
Z2V0W2tleV0gIT09IHVuZGVmaW5lZDsKICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkCiAg
ICBvdXQgPSAob3duID8gdGFyZ2V0IDogc291cmNlKVtrZXldOwogICAgaWYgKHRhcmdldCkgcmVk
ZWZpbmUodGFyZ2V0LCBrZXksIG91dCk7CiAgfQp9OwoKLy8gdHlwZSBiaXRtYXAKJGV4cG9ydC5G
ID0gMTsgICAvLyBmb3JjZWQKJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWwKJGV4cG9ydC5TID0g
NDsgICAvLyBzdGF0aWMKJGV4cG9ydC5QID0gODsgICAvLyBwcm90bwokZXhwb3J0LkIgPSAxNjsg
IC8vIGJpbmQKJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwCiRleHBvcnQuVSA9IDY0OyAgLy8gc2Fm
ZQokZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWAKCnZh
ciBydW50aW1lRXhwb3J0cyA9IHt9OwoKIShmdW5jdGlvbihnbG9iYWwpIHsKICB2YXIgT3AgPSBP
YmplY3QucHJvdG90eXBlOwogIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTsKICB2YXIg
dW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC4KICB2YXIgJFN5bWJv
bCA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgPyBTeW1ib2wgOiB7fTsKICB2YXIgaXRl
cmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8ICJAQGl0ZXJhdG9yIjsKICB2YXIgcnVu
dGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWU7CiAgLy8gRGVmaW5lIHRoZSBydW50aW1l
IGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyCiAgLy8g
bW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2Jq
ZWN0LgogIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZUV4cG9y
dHM7CgogIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3Qp
IHsKICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEg
R2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLgog
ICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0
YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7CiAgICB2YXIgZ2VuZXJhdG9y
ID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpOwogICAgdmFyIGNvbnRl
eHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7CgogICAgLy8gVGhlIC5faW52b2tl
IG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LAogICAgLy8g
LnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLgogICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtl
SW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpOwoKICAgIHJldHVybiBnZW5lcmF0
b3I7CiAgfQogIHJ1bnRpbWUud3JhcCA9IHdyYXA7CgogIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8g
bWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvbgogIC8vIHJlY29y
ZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBj
b3VsZAogIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtl
IGEgY2xvc3VyZSB0byBiZQogIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBh
bGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2UKICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3Rp
bmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkCiAgLy8gdG8gY3Jl
YXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1
bWluZwogIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRo
YXQgaGFwcGVucyB0byBiZSB0cnVlCiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2
ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlCiAgLy8gb25seSBhZGRpdGlvbmFs
IGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaAogIC8v
IGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBh
bGxvY2F0ZS4KICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHsKICAgIHRyeSB7CiAg
ICAgIHJldHVybiB7IHR5cGU6ICJub3JtYWwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07CiAg
ICB9IGNhdGNoIChlcnIpIHsKICAgICAgcmV0dXJuIHsgdHlwZTogInRocm93IiwgYXJnOiBlcnIg
fTsKICAgIH0KICB9CgogIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gInN1c3BlbmRlZFN0
YXJ0IjsKICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9ICJzdXNwZW5kZWRZaWVsZCI7CiAg
dmFyIEdlblN0YXRlRXhlY3V0aW5nID0gImV4ZWN1dGluZyI7CiAgdmFyIEdlblN0YXRlQ29tcGxl
dGVkID0gImNvbXBsZXRlZCI7CgogIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBp
bm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMKICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRp
c3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuCiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTsKCiAg
Ly8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3Ry
dWN0b3IgYW5kCiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5j
dGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yCiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBj
b21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXIKICAvLyBtaW5pZmllciBu
b3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLgogIGZ1bmN0aW9u
IEdlbmVyYXRvcigpIHt9CiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fQogIGZ1bmN0
aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge30KCiAgLy8gVGhpcyBpcyBhIHBvbHlm
aWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdAogIC8vIGRv
bid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuCiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307CiAg
SXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgewogICAgcmV0
dXJuIHRoaXM7CiAgfTsKCiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJv
dG90eXBlID0KICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9y
UHJvdG90eXBlKTsKICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3Rv
ciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwogIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247CgogIC8vIEhlbHBlciBmb3IgZGVm
aW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlCiAgLy8g
SXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC4K
ICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7CiAgICBbIm5leHQi
LCAidGhyb3ciLCAicmV0dXJuIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHsKICAgICAgcHJv
dG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHsKICAgICAgICByZXR1cm4gdGhpcy5faW52
b2tlKG1ldGhvZCwgYXJnKTsKICAgICAgfTsKICAgIH0pOwogIH0KCiAgcnVudGltZS5tYXJrID0g
ZnVuY3Rpb24oZ2VuRnVuKSB7CiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7CiAgICAg
IE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
KTsKICAgIH0gZWxzZSB7CiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZTsKICAgIH0KICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdw
KTsKICAgIHJldHVybiBnZW5GdW47CiAgfTsKCiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBm
dW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZgogIC8vIEFzeW5jSXRlcmF0b3Igb2Jq
ZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZgogIC8vIHRo
ZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLgogZnVuY3Rpb24gbWFrZUlu
dm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7CiAgICB2YXIgc3RhdGUgPSBHZW5T
dGF0ZVN1c3BlbmRlZFN0YXJ0OwoKICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBh
cmcpIHsKICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykgewogICAgICAgIHRo
cm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpOwogICAgICB9Cgog
ICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7CiAgICAgICAgaWYgKG1ldGhv
ZCA9PT0gInRocm93IikgewogICAgICAgICAgdGhyb3cgYXJnOwogICAgICAgIH0KCiAgICAgICAg
Ly8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzoKICAgICAgICAvLyBo
dHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMt
Z2VuZXJhdG9ycmVzdW1lCiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTsKICAgICAgfQoKICAg
ICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7CiAgICAgIGNvbnRleHQuYXJnID0gYXJnOwoKICAg
ICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09ICJuZXh0Iikg
ewogICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBv
ZiBCYWJlbCdzCiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLgogICAg
ICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnOwoKICAgICAg
ICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSAicmV0dXJuIikgewogICAgICAgICAgY29u
dGV4dC5hYnJ1cHQoInJldHVybiIsIGNvbnRleHQuYXJnKTsKICAgICAgICB9CgogICAgICAgIHN0
YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7CgogICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChp
bm5lckZuLCBzZWxmLCBjb250ZXh0KTsKICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICJub3Jt
YWwiKSB7CiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJG
biwgd2UgbGVhdmUgc3RhdGUgPT09CiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQg
bG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uCiAgICAgICAgICBzdGF0ZSA9IGNvbnRl
eHQuZG9uZQogICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkCiAgICAgICAgICAgIDogR2Vu
U3RhdGVTdXNwZW5kZWRZaWVsZDsKCiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGlu
dWVTZW50aW5lbCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAg
ICByZXR1cm4gewogICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZywKICAgICAgICAgICAgZG9u
ZTogY29udGV4dC5kb25lCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9
CgogIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4g
dGVybXMgb2YgdGhlCiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLgogIGRlZmlu
ZUl0ZXJhdG9yTWV0aG9kcyhHcCk7CgogIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0
dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlCiAgLy8gQEBpdGVyYXRv
ciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9u
cyBvZiB0aGUKICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVt
ZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvcgogIC8vIG9iamVjdCB0byBub3QgYmUgcmV0
dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLgog
IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3
NCBmb3IgbW9yZSBkZXRhaWxzLgogIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkgewog
ICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHsKICAg
IHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07CgogICAgaWYgKDEgaW4gbG9jcykgewog
ICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07CiAgICB9CgogICAgaWYgKDIgaW4gbG9jcykg
ewogICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTsKICAgICAgZW50cnkuYWZ0ZXJMb2Mg
PSBsb2NzWzNdOwogICAgfQoKICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTsKICB9Cgog
IGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHsKICAgIHZhciByZWNvcmQgPSBlbnRyeS5j
b21wbGV0aW9uIHx8IHt9OwogICAgcmVjb3JkLnR5cGUgPSAibm9ybWFsIjsKICAgIGRlbGV0ZSBy
ZWNvcmQuYXJnOwogICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDsKICB9CgogIGZ1bmN0aW9u
IENvbnRleHQodHJ5TG9jc0xpc3QpIHsKICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZm
ZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaAogICAgLy8gb3IgYSBmaW5h
bGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbQog
ICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50
LgogICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiAicm9vdCIgfV07CiAgICB0cnlMb2Nz
TGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7CiAgICB0aGlzLnJlc2V0KHRydWUpOwog
IH0KCiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHsKICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfTsKICB9CgogIENvbnRleHQucHJvdG90eXBlID0gewogICAgY29uc3Ry
dWN0b3I6IENvbnRleHQsCgogICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHsKICAg
ICAgdGhpcy5wcmV2ID0gMDsKICAgICAgdGhpcy5uZXh0ID0gMDsKICAgICAgLy8gUmVzZXR0aW5n
IGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3MKICAgICAgLy8gZnVu
Y3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi4KICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9
IHVuZGVmaW5lZDsKICAgICAgdGhpcy5kb25lID0gZmFsc2U7CiAgICAgIHRoaXMuZGVsZWdhdGUg
PSBudWxsOwoKICAgICAgdGhpcy5tZXRob2QgPSAibmV4dCI7CiAgICAgIHRoaXMuYXJnID0gdW5k
ZWZpbmVkOwoKICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7Cgog
ICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHsKICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMp
IHsKICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNl
IGNvbmRpdGlvbnM6CiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICJ0IiAmJgogICAg
ICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmCiAgICAgICAgICAgICAgIWlzTmFO
KCtuYW1lLnNsaWNlKDEpKSkgewogICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkOwog
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzdG9wOiBmdW5jdGlvbigp
IHsKICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKCiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRy
eUVudHJpZXNbMF07CiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247
CiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09ICJ0aHJvdyIpIHsKICAgICAgICB0aHJvdyBy
b290UmVjb3JkLmFyZzsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMucnZhbDsKICAgIH0sCgog
ICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHsKICAgICAgZm9yICh2YXIgaSA9IHRoaXMu
dHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9
IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJl
diAmJgogICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgImZpbmFsbHlMb2MiKSAmJgogICAg
ICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7CiAgICAgICAgICB2YXIgZmlu
YWxseUVudHJ5ID0gZW50cnk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KCiAg
ICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6
IHt9OwogICAgICByZWNvcmQudHlwZSA9IHR5cGU7CiAgICAgIHJlY29yZC5hcmcgPSBhcmc7Cgog
ICAgICBpZiAoZmluYWxseUVudHJ5KSB7CiAgICAgICAgdGhpcy5tZXRob2QgPSAibmV4dCI7CiAg
ICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7CiAgICAgICAgcmV0dXJu
IENvbnRpbnVlU2VudGluZWw7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJl
Y29yZCk7CiAgICB9LAoKICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7
CiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gInRocm93IikgewogICAgICAgIHRocm93IHJlY29y
ZC5hcmc7CiAgICAgIH0KCiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gImJyZWFrIiB8fAogICAg
ICAgICAgcmVjb3JkLnR5cGUgPT09ICJjb250aW51ZSIpIHsKICAgICAgICB0aGlzLm5leHQgPSBy
ZWNvcmQuYXJnOwogICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAicmV0dXJuIikgewog
ICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZzsKICAgICAgICB0aGlzLm1l
dGhvZCA9ICJyZXR1cm4iOwogICAgICAgIHRoaXMubmV4dCA9ICJlbmQiOwogICAgICB9IGVsc2Ug
aWYgKHJlY29yZC50eXBlID09PSAibm9ybWFsIiAmJiBhZnRlckxvYykgewogICAgICAgIHRoaXMu
bmV4dCA9IGFmdGVyTG9jOwogICAgICB9CgogICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDsK
ICAgIH0KICB9Owp9KSgKICAgIGdsb2JhbAopOwoKdmFyIGhhc093blByb3BlcnR5ID0ge30uaGFz
T3duUHJvcGVydHk7CmZ1bmN0aW9uIGhhcyhpdCwga2V5KSB7CiAgcmV0dXJuIGhhc093blByb3Bl
cnR5LmNhbGwoaXQsIGtleSk7Cn07CgpmdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7CiAg
dmFyIHJlc29sdmUsIHJlamVjdDsKICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRy
ZXNvbHZlLCAkJHJlamVjdCkgewogICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWpl
Y3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3Rv
cicpOwogICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTsKICAgIHJlamVjdCA9ICQkcmVqZWN0OwogIH0p
OwogIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7CiAgdGhpcy5yZWplY3QgPSByZWplY3Q7Cn0KCmZ1
bmN0aW9uIE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpIHsKICByZXR1cm4gbmV3IFByb21pc2VDYXBh
YmlsaXR5KEMpOwp9OwoKdmFyIFBST01JU0UgPSAnUHJvbWlzZSc7CnZhciAkUHJvbWlzZSA9IGds
b2JhbFtQUk9NSVNFXTsKdmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gTmV3UHJvbWlzZUNhcGFi
aWxpdHk7CgokZXhwb3J0KCRleHBvcnQuRywgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTsKCiRleHBv
cnQoJGV4cG9ydC5TLCBQUk9NSVNFLCB7CiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikgewog
ICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTsKICAgIHZhciAk
JHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0OwogICAgJCRyZWplY3Qocik7CiAgICByZXR1cm4g
Y2FwYWJpbGl0eS5wcm9taXNlOwogIH0KfSk7CgogIGZ1bmN0aW9uIGZvcm1hdEV2ZW50KF94KSB7
CiAgICByZXR1cm4gX2Zvcm1hdEV2ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgfQoKICBm
dW5jdGlvbiBfZm9ybWF0RXZlbnQoKSB7CiAgICBfZm9ybWF0RXZlbnQgPSBfYXN5bmNUb0dlbmVy
YXRvcihnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShldmVu
dCkgewogICAgICByZXR1cm4gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9u
IF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICBvdXRwdXQgPSB7CiAgICAgICAgICB9OwoK
ICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2Nv
bnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQu
bmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIiwg
b3V0cHV0KTsKCiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRl
eHQuYWJydXB0KCJyZXR1cm4iLCBvdXRwdXQpOwoKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAg
ICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwog
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwgX2NhbGxlZSk7CiAgICB9KSk7CiAgICByZXR1
cm4gX2Zvcm1hdEV2ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgfQoKICBmdW5jdGlvbiB1
cGRhdGVFdmVudExvZyhldmVudCkgewogIH0KCiAgZnVuY3Rpb24gbGlzdGVuZXJGbihfeDIpIHsK
ICAgIHJldHVybiBfbGlzdGVuZXJGbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogIH0KCiAgZnVu
Y3Rpb24gX2xpc3RlbmVyRm4oKSB7CiAgICBfbGlzdGVuZXJGbiA9IF9hc3luY1RvR2VuZXJhdG9y
KGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMihlKSB7CiAg
ICAgIHZhciBpOwogICAgICByZXR1cm4gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1
bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAg
ICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAg
IGNhc2UgMDoKICAgICAgICAgICAgICBpID0gMDsKCiAgICAgICAgICAgIGNhc2UgMToKICAgICAg
ICAgICAgICBpZiAoIShpIDwgODAwMCkpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0
ID0gMTA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgIF9jb250ZXh0Mi50MCA9IHVwZGF0ZUV2ZW50TG9nOwogICAgICAgICAgICAgIF9jb250ZXh0
Mi5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RXZlbnQoZSk7CgogICAgICAg
ICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQxID0gX2NvbnRleHQyLnNlbnQ7
CiAgICAgICAgICAgICAgKDAsIF9jb250ZXh0Mi50MCkoX2NvbnRleHQyLnQxKTsKCiAgICAgICAg
ICAgIGNhc2UgNzoKICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5l
eHQgPSAxOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAg
ICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsK
ICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sIF9jYWxsZWUyKTsKICAgIH0pKTsKICAgIHJl
dHVybiBfbGlzdGVuZXJGbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogIH0KCiAgZnVuY3Rpb24g
c2xlZXAobXMpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQo
cmVzb2x2ZSwgbXMpKTsKICB9CgogIGFzeW5jIGZ1bmN0aW9uIGNhbGxMaXN0ZW5lcigpIHsKICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgIGUgPSB7fTsKICAgICAgbGlzdGVuZXJGbihlKTsKICAgICAg
YXdhaXQgc2xlZXAoMTAwMCk7CiAgICB9CiAgfQoKICBjYWxsTGlzdGVuZXIoKTsKICAgIDwvc2Ny
aXB0PjwvaGVhZD4KICAgIDxib2R5PgogICAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463516</attachid>
            <date>2022-11-14 01:36:01 -0800</date>
            <delta_ts>2022-11-14 01:36:01 -0800</delta_ts>
            <desc>A temporary patch which adds/enables extra GC logging</desc>
            <filename>0001-WIP-logging.patch</filename>
            <type>text/plain</type>
            <size>16493</size>
            <attacher name="Krzysztof Konopko">kris</attacher>
            
              <data encoding="base64">RnJvbSBhYTcyN2FlOWRkZTgwMmM2ODIxY2RjY2QyOGNlNjVmYzg5Y2JhMDY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLcnp5c3p0b2YgS29ub3BrbyA8a3Jpc0B5b3V2aWV3LmNvbT4K
RGF0ZTogVHVlLCA4IE5vdiAyMDIyIDEzOjM2OjQyICswMTAwClN1YmplY3Q6IFtQQVRDSF0gW1RN
UF0gQWRkIChlbmFibGUpIEdDIGxvZ2dpbmcKCkxvZ2dpbmcgdGhhdCB3YXMgc3VwcG9zZWQgdG8g
aGVscCB3aXRoIHVuZGVyc3RhbmRpbmcgdGhlIHByb2JsZW0gYW5kCndoaWNoIHNlZW1zIHRvIGJl
IHJlcXVpcmVkIHRvIG1ha2UgdGhlIHByb2JsZW0gbW9yZSBsaWtlbHkgcmVwcm9kdWNpYmxlCihi
eSBjaGFuZ2luZyB0aGUgdGltaW5nKS4KCkNvLWRldmVsb3BlZC1ieTogTWljaGFsIEtvYnlsZWNr
aSA8bWljaGFsLmtvYnlsZWNraUB5b3V2aWV3LmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBLcnp5c3p0
b2YgS29ub3BrbyA8a3Jpc0B5b3V2aWV3LmNvbT4KCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAgICAgICAgICAgIHwgMzYgKysrKysrKysrKystLS0tLS0tLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCAgICAgIHwgIDQgKysrCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgICAgfCAgMyArKwogLi4uL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmggIHwgMTMgKysrLS0tLQogLi4uL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmggIHwgIDQgKysrCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgICAgfCAgOSArKystLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCAgICAgIHwgIDUgKysrCiBTb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmggICAgICAgICAgICAgICAgICAgfCAgMiArLQogOCBmaWxlcyBj
aGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCmluZGV4IGNlZjY1NGIxZDhjNy4uMDkwYmQ2MjRkMDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTIyNiw4ICsxMjI2LDggQEAgYm9vbCBIZWFw
OjpzaG91bGRDb2xsZWN0SW5Db2xsZWN0b3JUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVxdWVzdHMuaXNFbXB0eSgpID09IChtX2xhc3RTZXJ2ZWRU
aWNrZXQgPT0gbV9sYXN0R3JhbnRlZFRpY2tldCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fbGFz
dFNlcnZlZFRpY2tldCA8PSBtX2xhc3RHcmFudGVkVGlja2V0KTsKICAgICAKLSAgICBpZiAoZmFs
c2UpCi0gICAgICAgIGRhdGFMb2coIk11dGF0b3IgaGFzIHRoZSBjb25uID0gIiwgISEobV93b3Js
ZFN0YXRlLmxvYWQoKSAmIG11dGF0b3JIYXNDb25uQml0KSwgIlxuIik7CisgICAgaWYgKHRydWUp
CisgICAgICAgIGRhdGFMb2dMbigiTXV0YXRvciBoYXMgdGhlIGNvbm4gPSAiLCAhIShtX3dvcmxk
U3RhdGUubG9hZCgpICYgbXV0YXRvckhhc0Nvbm5CaXQpLCAiIFRocmVhZDoiLCBUaHJlYWQ6OmN1
cnJlbnRJRCgpLCAiXG4iKTsKICAgICAKICAgICByZXR1cm4gIW1fcmVxdWVzdHMuaXNFbXB0eSgp
ICYmICEobV93b3JsZFN0YXRlLmxvYWQoKSAmIG11dGF0b3JIYXNDb25uQml0KTsKIH0KQEAgLTEy
ODAsNyArMTI4MCw3IEBAIGF1dG8gSGVhcDo6cnVuQ3VycmVudFBoYXNlKEdDQ29uZHVjdG9yIGNv
bm4sIEN1cnJlbnRUaHJlYWRTdGF0ZSogY3VycmVudFRocmVhZFN0CiAgICAgaWYgKCFmaW5pc2hD
aGFuZ2luZ1BoYXNlKGNvbm4pKSB7CiAgICAgICAgIC8vIEEgbWlzY2hldmlvdXMgbXV0YXRvciBj
b3VsZCByZXBlYXRlZGx5IHJlbGlucXVpc2ggdGhlIGNvbm4gYmFjayB0byB1cy4gV2UgdHJ5IHRv
IGF2b2lkIGRvaW5nCiAgICAgICAgIC8vIHRoaXMsIGJ1dCBpdCdzIHByb2JhYmx5IG5vdCB0aGUg
ZW5kIG9mIHRoZSB3b3JsZCBpZiBpdCBkaWQgaGFwcGVuLgotICAgICAgICBpZiAoZmFsc2UpCisg
ICAgICAgIGlmICh0cnVlKQogICAgICAgICAgICAgZGF0YUxvZygiQ29ubiBib3VuY2UtYmFjay5c
biIpOwogICAgICAgICByZXR1cm4gUnVuQ3VycmVudFBoYXNlUmVzdWx0OjpGaW5pc2hlZDsKICAg
ICB9CkBAIC0xNTIzLDYgKzE1MjMsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5Db25j
dXJyZW50UGhhc2UoR0NDb25kdWN0b3IgY29ubikKIHsKICAgICBTbG90VmlzaXRvciYgdmlzaXRv
ciA9ICptX2NvbGxlY3RvclNsb3RWaXNpdG9yOwogCisgICAgZGF0YUxvZ0xuKCItLS1IZWFwOjpy
dW5Db25jdXJyZW50UGhhc2UgQ29sbGVjdG9yOiBUaHJlYWQ6ICIsIFRocmVhZDo6Y3VycmVudElE
KCkpOwogICAgIHN3aXRjaCAoY29ubikgewogICAgIGNhc2UgR0NDb25kdWN0b3I6Ok11dGF0b3I6
IHsKICAgICAgICAgLy8gV2hlbiB0aGUgbXV0YXRvciBoYXMgdGhlIGNvbm4sIHdlIHBvbGwgcnVu
Q29uY3VycmVudFBoYXNlKCkgb24gZXZlcnkgdGltZSBzb21lb25lIHNheXMKQEAgLTE1MzIsNiAr
MTUzMyw3IEBAIE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1bkNvbmN1cnJlbnRQaGFzZShHQ0Nv
bmR1Y3RvciBjb25uKQogICAgICAgICAgICAgfHwgbV9zY2hlZHVsZXItPnNob3VsZFN0b3AoKSkK
ICAgICAgICAgICAgIHJldHVybiBjaGFuZ2VQaGFzZShjb25uLCBDb2xsZWN0b3JQaGFzZTo6UmVs
b29wKTsKICAgICAgICAgCisgICAgICAgIGRhdGFMb2dMbigiLS0tSGVhcDo6cnVuQ29uY3VycmVu
dFBoYXNlIENvbGxlY3RvcjogQkJCQiBUaHJlYWQ6ICIsIFRocmVhZDo6Y3VycmVudElEKCkpOwog
ICAgICAgICAvLyBXZSBjb3VsZCBiZSBjb21pbmcgZnJvbSBhIGNvbGxlY3RvciBwaGFzZSB0aGF0
IHN0dWZmZWQgb3VyIFNsb3RWaXNpdG9yLCBzbyBtYWtlIHN1cmUgd2UgZG9uYXRlCiAgICAgICAg
IC8vIGV2ZXJ5dGhpbmcuIFRoaXMgaXMgc3VwZXIgY2hlYXAgaWYgdGhlIFNsb3RWaXNpdG9yIGlz
IGFscmVhZHkgZW1wdHkuCiAgICAgICAgIHZpc2l0b3IuZG9uYXRlQWxsKCk7CkBAIC0xNTM5LDYg
KzE1NDEsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5Db25jdXJyZW50UGhhc2UoR0ND
b25kdWN0b3IgY29ubikKICAgICB9CiAgICAgY2FzZSBHQ0NvbmR1Y3Rvcjo6Q29sbGVjdG9yOiB7
CiAgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tSGVhcDo6cnVuQ29uY3VycmVu
dFBoYXNlIENvbGxlY3RvcjogVGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKICAgICAg
ICAgICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgZW5hYmxlcih2aXNpdG9yKTsKICAgICAgICAgICAg
IHZpc2l0b3IuZHJhaW5JblBhcmFsbGVsUGFzc2l2ZWx5KG1fc2NoZWR1bGVyLT50aW1lVG9TdG9w
KCkpOwogICAgICAgICB9CkBAIC0xNjMwLDcgKzE2MzMsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBI
ZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIGlmIChtX2N1cnJlbnRSZXF1
ZXN0LmRpZEZpbmlzaEVuZFBoYXNlKQogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0LmRpZEZpbmlz
aEVuZFBoYXNlLT5ydW4oKTsKICAgICAKLSAgICBpZiAoZmFsc2UpIHsKKyAgICBpZiAodHJ1ZSkg
ewogICAgICAgICBkYXRhTG9nKCJIZWFwIHN0YXRlIGFmdGVyIEdDOlxuIik7CiAgICAgICAgIG1f
b2JqZWN0U3BhY2UuZHVtcEJpdHMoKTsKICAgICB9CkBAIC0xNjc2LDggKzE2NzksOCBAQCBORVZF
Ul9JTkxJTkUgYm9vbCBIZWFwOjpmaW5pc2hDaGFuZ2luZ1BoYXNlKEdDQ29uZHVjdG9yIGNvbm4p
CiAgICAgaWYgKG1fbmV4dFBoYXNlID09IG1fY3VycmVudFBoYXNlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxvZyhjb25uLCAiOiBHb2luZyB0
byBwaGFzZTogIiwgbV9uZXh0UGhhc2UsICIgKGZyb20gIiwgbV9jdXJyZW50UGhhc2UsICIpXG4i
KTsKKyAgICBpZiAodHJ1ZSkKKyAgICAgICAgZGF0YUxvZ0xuKCItLS1IZWFwOjpjaGFuZ2VQaGFz
ZTogVGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAiIENvbm46ICIsIGNvbm4sICI6IEdv
aW5nIHRvIHBoYXNlOiAiLCBtX25leHRQaGFzZSwgIiAoZnJvbSAiLCBtX2N1cnJlbnRQaGFzZSwg
IilcbiIpOwogICAgIAogICAgIG1fcGhhc2VWZXJzaW9uKys7CiAgICAgCkBAIC0xNzAwLDcgKzE3
MDMsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpmaW5pc2hDaGFuZ2luZ1BoYXNlKEdDQ29u
ZHVjdG9yIGNvbm4pCiAgICAgICAgICAgICBpZiAoY29ubiA9PSBHQ0NvbmR1Y3Rvcjo6Q29sbGVj
dG9yKSB7CiAgICAgICAgICAgICAgICAgd2FpdFdoaWxlTmVlZEZpbmFsaXplKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzdG9wVGhlTXV0YXRvcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChmYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRydWUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmcgZmFsc2UuXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KQEAgLTE3NDgsMTIgKzE3NTEsMTQg
QEAgdm9pZCBIZWFwOjpzdG9wVGhlUGVyaXBoZXJ5KEdDQ29uZHVjdG9yIGNvbm4pCiAKIE5FVkVS
X0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZVBlcmlwaGVyeSgpCiB7CisgICAgZGF0YUxvZ0xu
KCItLS1IZWFwOjpyZXN1bWVUaGVQZXJpcGhlcnk6IFRocmVhZDogIiwgVGhyZWFkOjpjdXJyZW50
SUQoKSk7CiAgICAgLy8gQ2FsbGluZyByZXN1bWVBbGxvY2F0aW5nIGRvZXMgdGhlIFJpZ2h0IFRo
aW5nIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgdGhlIGVuZCBvZiBhCiAgICAgLy8gY29s
bGVjdGlvbiBjeWNsZSBvciB0aGlzIGlzIGp1c3QgYSBjb25jdXJyZW50IHBoYXNlIHdpdGhpbiBh
IGNvbGxlY3Rpb24gY3ljbGU6CiAgICAgLy8gLSBBdCBlbmQgb2YgY29sbGVjdGlvbiBjeWNsZTog
aXQncyBhIG5vLW9wIGJlY2F1c2UgcHJlcGFyZUZvckFsbG9jYXRpb24gYWxyZWFkeSBjbGVhcmVk
IHRoZQogICAgIC8vICAgbGFzdCBhY3RpdmUgYmxvY2suCiAgICAgLy8gLSBEdXJpbmcgY29sbGVj
dGlvbiBjeWNsZTogaXQgcmVpbnN0YXRlcyB0aGUgbGFzdCBhY3RpdmUgYmxvY2suCiAgICAgbV9v
YmplY3RTcGFjZS5yZXN1bWVBbGxvY2F0aW5nKCk7CisgICAgZGF0YUxvZ0xuKCItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1FTkQtLS1IZWFwOjpyZXN1bWVUaGVQZXJpcGhlcnk6IFRocmVh
ZDogIiwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CiAgICAgCiAgICAgbV9iYXJyaWVyc0V4ZWN1dGVk
ID0gMDsKICAgICAKQEAgLTE4MzIsNyArMTgzNyw3IEBAIGJvb2wgSGVhcDo6c3RvcFRoZU11dGF0
b3IoKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG9sZFN0YXRlICYgc3RvcHBlZEJpdCkpOwog
ICAgICAgICB1bnNpZ25lZCBuZXdTdGF0ZSA9IChvbGRTdGF0ZSB8IG11dGF0b3JIYXNDb25uQml0
KSAmIH5tdXRhdG9yV2FpdGluZ0JpdDsKICAgICAgICAgaWYgKG1fd29ybGRTdGF0ZS5jb21wYXJl
RXhjaGFuZ2VXZWFrKG9sZFN0YXRlLCBuZXdTdGF0ZSkpIHsKLSAgICAgICAgICAgIGlmIChmYWxz
ZSkKKyAgICAgICAgICAgIGlmICh0cnVlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhbmRl
ZCBvZmYgdGhlIGNvbm4uXG4iKTsKICAgICAgICAgICAgIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIt
PnNjaGVkdWxlU29vbigpOwogICAgICAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJrQWxsKCZtX3dv
cmxkU3RhdGUpOwpAQCAtMTg0Myw4ICsxODQ4LDggQEAgYm9vbCBIZWFwOjpzdG9wVGhlTXV0YXRv
cigpCiAKIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IoKQogewotICAg
IGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxvZygiUmVzdW1pbmcgdGhlIG11dGF0b3IuXG4iKTsK
KyAgICBpZiAodHJ1ZSkKKyAgICAgICAgZGF0YUxvZ0xuKCItLS1SZXN1bWluZyB0aGUgbXV0YXRv
cjogVGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKICAgICBmb3IgKDs7KSB7CiAgICAg
ICAgIHVuc2lnbmVkIG9sZFN0YXRlID0gbV93b3JsZFN0YXRlLmxvYWQoKTsKICAgICAgICAgaWYg
KCEhKG9sZFN0YXRlICYgaGFzQWNjZXNzQml0KSAhPSAhKG9sZFN0YXRlICYgc3RvcHBlZEJpdCkp
IHsKQEAgLTE4NTcsMTMgKzE4NjIsMTMgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6cmVzdW1l
VGhlTXV0YXRvcigpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghKG9sZFN0YXRl
ICYgc3RvcHBlZEJpdCkpIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkKKyAgICAgICAgICAgIGlm
ICh0cnVlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlJldHVybmluZyBiZWNhdXNlIG5vdCBz
dG9wcGVkLlxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChtX3dvcmxkU3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhayhvbGRTdGF0ZSwgb2xk
U3RhdGUgJiB+c3RvcHBlZEJpdCkpIHsKLSAgICAgICAgICAgIGlmIChmYWxzZSkKKyAgICAgICAg
ICAgIGlmICh0cnVlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNBU2luZyBhbmQgcmV0dXJu
aW5nLlxuIik7CiAgICAgICAgICAgICBQYXJraW5nTG90Ojp1bnBhcmtBbGwoJm1fd29ybGRTdGF0
ZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYxLDcgKzIwNjYsNyBAQCBib29sIEhlYXA6
OnJlbGlucXVpc2hDb25uKHVuc2lnbmVkIG9sZFN0YXRlKQogCiB2b2lkIEhlYXA6OmZpbmlzaFJl
bGlucXVpc2hpbmdDb25uKCkKIHsKLSAgICBpZiAoZmFsc2UpCisgICAgaWYgKHRydWUpCiAgICAg
ICAgIGRhdGFMb2coIlJlbGlucXVpc2hlZCB0aGUgY29ubi5cbiIpOwogICAgIAogICAgIHNhbml0
aXplU3RhY2tGb3JWTSh2bSgpKTsKQEAgLTIxODYsOCArMjE5MSw4IEBAIEhlYXA6OlRpY2tldCBI
ZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICAvLyBjYXNlcy4K
ICAgICBBU1NFUlQobV9sYXN0U2VydmVkVGlja2V0IDw9IG1fbGFzdEdyYW50ZWRUaWNrZXQpOwog
ICAgIGlmICgobV9sYXN0U2VydmVkVGlja2V0ID09IG1fbGFzdEdyYW50ZWRUaWNrZXQpICYmICFt
X2NvbGxlY3RvclRocmVhZElzUnVubmluZykgewotICAgICAgICBpZiAoZmFsc2UpCi0gICAgICAg
ICAgICBkYXRhTG9nKCJUYWtpbmcgdGhlIGNvbm4uXG4iKTsKKyAgICAgICAgaWYgKHRydWUpCisg
ICAgICAgICAgICBkYXRhTG9nTG4oIlRha2luZyB0aGUgY29ubi4gVGhyZWFkOiAiLCBUaHJlYWQ6
OmN1cnJlbnRJRCgpKTsKICAgICAgICAgbV93b3JsZFN0YXRlLmV4Y2hhbmdlT3IobXV0YXRvckhh
c0Nvbm5CaXQpOwogICAgIH0KICAgICAKQEAgLTMxMDAsNiArMzEwNSw3IEBAIHZvaWQgSGVhcDo6
cGVyZm9ybUluY3JlbWVudChzaXplX3QgYnl0ZXMpCiAgICAgICAgIHJldHVybjsKICAgICB0YXJn
ZXRCeXRlcyA9IHN0ZDo6bWluKHRhcmdldEJ5dGVzLCBPcHRpb25zOjpnY0luY3JlbWVudE1heEJ5
dGVzKCkpOwogCisgICAgZGF0YUxvZ0xuKCItLS1IZWFwOjpwZXJmb3JtSW5jcmVtZW50OiBUaHJl
YWQ6IiwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CiAgICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IgPSAq
bV9tdXRhdG9yU2xvdFZpc2l0b3I7CiAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBwYXJhbGxlbE1v
ZGVFbmFibGVyKHZpc2l0b3IpOwogICAgIHNpemVfdCBieXRlc1Zpc2l0ZWQgPSB2aXNpdG9yLnBl
cmZvcm1JbmNyZW1lbnRPZkRyYWluaW5nKHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0Qnl0ZXMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IDNkZWE0OTVh
YjI3Yi4uODNjOWZjY2FhMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5jcHAKQEAgLTI1LDYgKzI1LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik1hcmtTdGFjay5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CiAKICNpbmNsdWRlICJHQ1Nl
Z21lbnRlZEFycmF5SW5saW5lcy5oIgogCkBAIC0xMDQsNiArMTA3LDcgQEAgdm9pZCBNYXJrU3Rh
Y2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8oTWFya1N0YWNrQXJyYXkmIG90aGVyKQogCiAgICAg
d2hpbGUgKHNlZ21lbnRzVG9Eb25hdGUtLSkgewogICAgICAgICBHQ0FycmF5U2VnbWVudDxjb25z
dCBKU0NlbGwqPiogY3VycmVudCA9IG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOworICAgICAgICBk
YXRhTG9nTG4oIi0tLU1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21lQ2VsbHM6IFRocmVhZDogIiwg
VGhyZWFkOjpjdXJyZW50SUQoKSwgIiBDRUxMOiAiLCBSYXdQb2ludGVyKGN1cnJlbnQtPmRhdGEo
KSkpOwogICAgICAgICBBU1NFUlQoY3VycmVudCk7CiAgICAgICAgIEFTU0VSVChtX251bWJlck9m
U2VnbWVudHMgPiAxKTsKICAgICAgICAgb3RoZXIubV9zZWdtZW50cy5wdXNoKGN1cnJlbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IDVmMGM5ZWI0
YzI0NC4uNjdmMDViZmJjNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suY3BwCkBAIC0xOTMsOSArMTkzLDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
cmVzdW1lQWxsb2NhdGluZyhGcmVlTGlzdCYgZnJlZUxpc3QpCiAgICAgc3dlZXAoJmZyZWVMaXN0
KTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGxvbmcga3JrID0gMDsKKwogdm9pZCBNYXJrZWRCbG9j
azo6YWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewogICAgIEFT
U0VSVCh2bSgpLmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CisgICAgZGF0YUxvZygi
VGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAiIEtSSzogIiwgKytrcmssICIsIHRoaXM6
ICIsIFJhd1BvaW50ZXIoKHZvaWQqKXRoaXMpLCAiLCBmb290ZXI6ICIsIFJhd1BvaW50ZXIoKigo
dm9pZCoqKShhdG9tcygpICsgZW5kQXRvbSkpKSwgIlxuIik7CiAgICAgTG9ja2VyIGxvY2tlciB7
IGhlYWRlcigpLm1fbG9jayB9OwogICAgIAogICAgIGlmICghYXJlTWFya3NTdGFsZShtYXJraW5n
VmVyc2lvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oCmluZGV4IGRlODZhZjI4NTZjNC4uOTI0MGZlNmNhMWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMjQ4LDE0ICsyNDgs
MTUgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKEZyZWVMaXN0
KiBmcmVlTGlzdCwgTWFya2VkQmxvY2s6OkhhbmQKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0
aGlzLT5ibG9jaygpOwogICAgIE1hcmtlZEJsb2NrOjpIZWFkZXImIGhlYWRlciA9IGJsb2NrLmhl
YWRlcigpOwogICAgIAotICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiLyIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZWRTd2VlcCFcbiIpOworICAgIGlmICh0cnVlKQorICAgICAgICBkYXRhTG9nKFJh
d1BvaW50ZXIodGhpcyksICIvIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiOiBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVRocmVhZDogIiwgVGhyZWFkOjpjdXJyZW50SUQoKSwg
IlxuIik7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUgPSB0aGlzLT5jZWxsU2l6ZSgpOwog
ICAgIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgYXV0byBkZXN0cm95ID0gWyZdICh2
b2lkKiBjZWxsKSB7CiAgICAgICAgIEpTQ2VsbCoganNDZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oY2VsbCk7CisgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIi8iLCBSYXdQb2lu
dGVyKCZibG9jayksICIgQ2VsbDogIiwgUmF3UG9pbnRlcihqc0NlbGwpLCAiIERFTEVUSU5HIENF
TEwgLSBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVRocmVhZDogIiwgVGhy
ZWFkOjpjdXJyZW50SUQoKSwgIlxuIik7CiAgICAgICAgIGlmICghanNDZWxsLT5pc1phcHBlZCgp
KSB7CiAgICAgICAgICAgICBkZXN0cm95RnVuYyh2bSwganNDZWxsKTsKICAgICAgICAgICAgIGpz
Q2VsbC0+emFwKEhlYXBDZWxsOjpEZXN0cnVjdGlvbik7CkBAIC0yOTcsOCArMjk4LDggQEAgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwKEZyZWVMaXN0KiBmcmVlTGlz
dCwgTWFya2VkQmxvY2s6OkhhbmQKICAgICAgICAgICAgICAgICBzY3JpYmJsZShwYXlsb2FkQmVn
aW4sIHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwogICAgICAgICAgICAgZnJlZUxpc3QtPmlu
aXRpYWxpemVCdW1wKHBheWxvYWRFbmQsIHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChmYWxzZSkKLSAgICAgICAgICAgIGRhdGFMb2coIlF1aWNrbHkg
c3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxs
U2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHBvaW50ZXJEdW1w
KGZyZWVMaXN0KSwgIlxuIik7CisgICAgICAgIGlmICh0cnVlKQorICAgICAgICAgICAgZGF0YUxv
ZygiUXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBz
aXplICIsIGNlbGxTaXplLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwg
cG9pbnRlckR1bXAoZnJlZUxpc3QpLCAiIFRocmVhZDogIiwgVGhyZWFkOjpjdXJyZW50SUQoKSwg
IlxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1Nyw4ICszNTgsOCBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoRnJlZUxpc3QqIGZyZWVMaXN0
LCBNYXJrZWRCbG9jazo6SGFuZAogICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsKICAgICB9IGVs
c2UgaWYgKGlzRW1wdHkpCiAgICAgICAgIG1fZGlyZWN0b3J5LT5zZXRJc0VtcHR5KE5vTG9ja2lu
Z05lY2Vzc2FyeSwgdGhpcywgdHJ1ZSk7Ci0gICAgaWYgKGZhbHNlKQotICAgICAgICBkYXRhTG9n
KCJTbG93bHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBz
aXplICIsIGNlbGxTaXplLCAiIGFuZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwg
cG9pbnRlckR1bXAoZnJlZUxpc3QpLCAiXG4iKTsKKyAgICBpZiAodHJ1ZSkKKyAgICAgICAgZGF0
YUxvZygiVGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAiIFNsb3dseSBzd2VwdCBibG9j
ayAiLCBSYXdQb2ludGVyKCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUsICIg
YW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCBwb2ludGVyRHVtcChmcmVlTGlz
dCksICJcbiIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXN0cm95RnVuYz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKaW5kZXggZWE4NTE0
NjQ5MzMwLi5mZmQyOWVlNjQ1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlSW5saW5lcy5oCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiTWFya2Vk
QmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKIAorI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCiBuYW1lc3BhY2UgSlND
IHsKIAogQUxXQVlTX0lOTElORSBIZWFwJiBNYXJrZWRTcGFjZTo6aGVhcCgpIGNvbnN0CkBAIC02
Myw2ICs2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVy
YXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRl
cmF0aW5nKCkpOworICAgIGRhdGFMb2dMbigiLS0tRm9yRWFjaERlYWRDZWxsIFRocmVhZDogIiwg
VGhyZWFkOjpjdXJyZW50SUQoKSk7CiAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5z
ZXQoKS5lbmQoKTsKICAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCgqaXQpLT5oYW5kbGUoKS5m
b3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCmluZGV4IDNlZWFiNzA1NmRlNi4u
NjQzZjE5MWY5NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCkBAIC0zNDgsOCArMzQ4LDggQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2
aXNpdENoaWxkcmVuKGNvbnN0IEpTQ2VsbCogY2VsbCkKICAgICAKICAgICBTZXRDdXJyZW50Q2Vs
bFNjb3BlIGN1cnJlbnRDZWxsU2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIAotICAgIGlmIChmYWxz
ZSkgewotICAgICAgICBkYXRhTG9nKCJWaXNpdGluZyAiLCBSYXdQb2ludGVyKGNlbGwpKTsKKyAg
ICBpZiAodHJ1ZSkgeworICAgICAgICBkYXRhTG9nKCJWaXNpdGluZyAiLCBSYXdQb2ludGVyKGNl
bGwpLCAiIFRocmVhZDogIiwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CiAgICAgICAgIGlmICghbV9p
c0ZpcnN0VmlzaXQpCiAgICAgICAgICAgICBkYXRhTG9nKCIgKHN1YnNlcXVlbnQpIik7CiAgICAg
ICAgIGRhdGFMb2coIlxuIik7CkBAIC00MjMsNiArNDIzLDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6
ZG9uYXRlS25vd25QYXJhbGxlbChNYXJrU3RhY2tBcnJheSYgZnJvbSwgTWFya1N0YWNrQXJyYXkm
IHRvKQogICAgIC8vIE5PVEU6IEJlY2F1c2Ugd2UgcmUtdHJ5IG9mdGVuLCB3ZSBjYW4gYWZmb3Jk
IHRvIGJlIGNvbnNlcnZhdGl2ZSwgYW5kCiAgICAgLy8gYXNzdW1lIHRoYXQgZG9uYXRpbmcgaXMg
bm90IHByb2ZpdGFibGUuCiAKKyAgICBkYXRhTG9nTG4oIi0tLVNsb3RWaXNpdG9yOjpkb25hdGVL
bm93blBhcmFsbGVsOiBUaHJlYWQ6ICIsIFRocmVhZDo6Y3VycmVudElEKCkpOwogICAgIC8vIEF2
b2lkIGxvY2tpbmcgd2hlbiBhIHRocmVhZCByZWFjaGVzIGEgZGVhZCBlbmQgaW4gdGhlIG9iamVj
dCBncmFwaC4KICAgICBpZiAoZnJvbS5zaXplKCkgPCAyKQogICAgICAgICByZXR1cm47CkBAIC03
MTAsNiArNzExLDcgQEAgU2xvdFZpc2l0b3I6OlNoYXJlZERyYWluUmVzdWx0IFNsb3RWaXNpdG9y
OjpkcmFpbkluUGFyYWxsZWxQYXNzaXZlbHkoTW9ub3RvbmljVGkKICAgICAKICAgICBBU1NFUlQo
T3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMoKSk7CiAgICAgCisgICAgZGF0YUxvZ0xuKCItLS1T
bG90VmlpdG9yOjpkcmFpbkluUGFyYWxsZWxQYXNzaXZlbHkgQUFBQTogVGhyZWFkOiAiLCBUaHJl
YWQ6OmN1cnJlbnRJRCgpKTsKICAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMoKSA9
PSAxCiAgICAgICAgIHx8IChtX2hlYXAubV93b3JsZFN0YXRlLmxvYWQoKSAmIEhlYXA6Om11dGF0
b3JXYWl0aW5nQml0KQogICAgICAgICB8fCAhbV9oZWFwLmhhc0hlYXBBY2Nlc3MoKQpAQCAtNzE5
LDYgKzcyMSw3IEBAIFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdCBTbG90VmlzaXRvcjo6
ZHJhaW5JblBhcmFsbGVsUGFzc2l2ZWx5KE1vbm90b25pY1RpCiAgICAgICAgIHJldHVybiBkcmFp
bkluUGFyYWxsZWwodGltZW91dCk7CiAgICAgfQogCisgICAgZGF0YUxvZ0xuKCItLS1TbG90Vmlp
dG9yOjpkcmFpbkluUGFyYWxsZWxQYXNzaXZlbHkgQkJCQjogVGhyZWFkOiAiLCBUaHJlYWQ6OmN1
cnJlbnRJRCgpKTsKICAgICBkb25hdGVBbGwoTG9ja2VyIHsgbV9oZWFwLm1fbWFya2luZ011dGV4
IH0pOwogICAgIHJldHVybiB3YWl0Rm9yVGVybWluYXRpb24odGltZW91dCk7CiB9CkBAIC03NDEs
OSArNzQ0LDExIEBAIFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdCBTbG90VmlzaXRvcjo6
d2FpdEZvclRlcm1pbmF0aW9uKE1vbm90b25pY1RpbWUgdGltCiAKIHZvaWQgU2xvdFZpc2l0b3I6
OmRvbmF0ZUFsbCgpCiB7CisgICAgZGF0YUxvZ0xuKCItLS1TbG90VmlzaXRvcjo6ZG9uYXRlQWxs
IEFBQUEgVGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKICAgICBpZiAoaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgZGF0YUxvZ0xuKCItLS1TbG90VmlzaXRvcjo6
ZG9uYXRlQWxsIEJCQkIgVGhyZWFkOiAiLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKICAgICBkb25h
dGVBbGwoTG9ja2VyIHsgbV9oZWFwLm1fbWFya2luZ011dGV4IH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCA1ZTA3ZmM2NWQ1YTQuLmFkMmE5OTM5
NTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0zMSw2
ICszMSwxMCBAQAogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9M
b2NrQWxnb3JpdGhtSW5saW5lcy5oPgogCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Jhd1BvaW50ZXIuaD4KKwogbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTQ2VsbCkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSwgImpzY2VsbCBpcyBlaWdodCBieXRlcyIpOwpAQCAtMzksNiArNDMsNyBAQCBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNDZWxsKTsKIHZvaWQgSlNDZWxs
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsK
KyAgICBkYXRhTG9nTG4oIi0tLUpTQ2VsbDo6ZGVzdHJveTogVGhyZWFkOiAiLCBUaHJlYWQ6OmN1
cnJlbnRJRCgpLCAiIENlbGwgcG9pbnRlcjogIiwgUmF3UG9pbnRlcihjZWxsKSk7CiB9CiAKIHZv
aWQgSlNDZWxsOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5k
ZXggYzM2YmYyM2VkMjFlLi44ZWM2OWJlOWI1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKQEAgLTkyLDcg
KzkyLDcgQEAgZXh0ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVCYXJyaWVyKHZvaWQpOwogI2VuZGlm
CiAKICNpZm5kZWYgTE9HX0RJU0FCTEVECi0jZGVmaW5lIExPR19ESVNBQkxFRCAhQVNTRVJUX0VO
QUJMRUQKKyNkZWZpbmUgTE9HX0RJU0FCTEVEIDAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTEVB
U0VfTE9HKQotLSAKMi4zOC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>463518</attachid>
            <date>2022-11-14 02:01:28 -0800</date>
            <delta_ts>2022-11-14 02:01:28 -0800</delta_ts>
            <desc>core dump with concurrent GC disabled</desc>
            <filename>core-text.WPEWebProcess.disabled-concurrent-gc.txt</filename>
            <type>text/plain</type>
            <size>40965</size>
            <attacher name="Krzysztof Konopko">kris</attacher>
            
              <data encoding="base64">Q29yZSB3YXMgZ2VuZXJhdGVkIGJ5IGAuLi4vbGliZXhlYy93cGUtd2Via2l0LTEuMS9XUEVXZWJQ
cm9jZXNzIDEwIDIyJy4KUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIFNJR1NFR1YsIFNl
Z21lbnRhdGlvbiBmYXVsdC4KCiMwICAweDAwMDAwMDdmOTNmMTNiNDggaW4gSlNDOjpTbG90Vmlz
aXRvcjo6ZHJhaW4oV1RGOjpNb25vdG9uaWNUaW1lKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2Vi
S2l0LTEuMS5zby4wCi4uLgogIElkICAgVGFyZ2V0IElkICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZSAKKiAxICAgIFRocmVhZCAweDdlYmQzZmVhMjAgKExXUCAxMTczMykgMHgwMDAwMDA3Zjkz
ZjEzYjQ4IGluIEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKFdURjo6TW9ub3RvbmljVGltZSkgKCkg
ZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAogIDIgICAgVGhyZWFkIDB4N2Y4ZTEx
ZWEyMCAoTFdQIDIyMDczKSBmdXRleF93YWl0X2NhbmNlbGFibGUgKHByaXZhdGU9MCwgZXhwZWN0
ZWQ9MCwgZnV0ZXhfd29yZD0weDdmOTU2OTdjMDggPGJtYWxsb2M6OlN0YXRpY1BlclByb2Nlc3NT
dG9yYWdlVHJhaXRzPGJtYWxsb2M6OlNjYXZlbmdlcj46OlN0b3JhZ2U6OnNfbWVtb3J5KzcyPikg
YXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvZnV0ZXgtaW50ZXJuYWwuaDo4MAogIDMgICAg
VGhyZWFkIDB4N2Y2N2ZmZWEyMCAoTFdQIDIyMDc2KSAweDAwMDAwMDdmOTEzYzYwY2MgaW4gX19H
SV9fX3BvbGwgKGZkcz0weDdmNWMwMDQ3ZDAsIG5mZHM9MiwgdGltZW91dD08b3B0aW1pemVkIG91
dD4pIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3BvbGwuYzo0MQogIDQgICAgVGhyZWFk
IDB4N2Y4ZTEzMDAxMCAoTFdQIDIyMDYyKSAweDAwMDAwMDdmOTNmMDQwNDggaW4gdm9pZCBKU0M6
OkpJVFN0dWJSb3V0aW5lU2V0Ojp0cmFjZU1hcmtlZFN0dWJSb3V0aW5lczxKU0M6OlNsb3RWaXNp
dG9yPihKU0M6OlNsb3RWaXNpdG9yJikgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEu
c28uMAogIDUgICAgKHJlZGFjdGVkKQogIDYgICAgKHJlZGFjdGVkKQogIDcgICAgKHJlZGFjdGVk
KQogIDggICAgKHJlZGFjdGVkKQogIDkgICAgKHJlZGFjdGVkKQogIDEwICAgKHJlZGFjdGVkKQog
IDExICAgKHJlZGFjdGVkKQogIDEyICAgKHJlZGFjdGVkKQogIDEzICAgVGhyZWFkIDB4N2YwM2Zm
ZWEyMCAoTFdQIDIyMTEwKSAweDAwMDAwMDdmOTEzYzYwY2MgaW4gX19HSV9fX3BvbGwgKGZkcz0w
eDdlZmMwMDFlMzAsIG5mZHM9MSwgdGltZW91dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5c2Rl
cHMvdW5peC9zeXN2L2xpbnV4L3BvbGwuYzo0MQogIDE0ICAgVGhyZWFkIDB4N2YzMzVmZWEyMCAo
TFdQIDIyMDkwKSAweDAwMDAwMDdmOTEzYzYwY2MgaW4gX19HSV9fX3BvbGwgKGZkcz0weDdmMmMw
MGViZDAsIG5mZHM9MSwgdGltZW91dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L3BvbGwuYzo0MQogIDE1ICAgKHJlZGFjdGVkKQogIDE2ICAgKHJlZGFjdGVk
KQogIDE3ICAgKHJlZGFjdGVkKQogIDE4ICAgVGhyZWFkIDB4N2YzM2RmZmEyMCAoTFdQIDIyMDg5
KSAweDAwMDAwMDdmOTEzYzYwY2MgaW4gX19HSV9fX3BvbGwgKGZkcz0weDdmMjQwMDUwMDAsIG5m
ZHM9MiwgdGltZW91dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xp
bnV4L3BvbGwuYzo0MQogIDE5ICAgKHJlZGFjdGVkKQogIDIwICAgVGhyZWFkIDB4N2VkNzNmZWEy
MCAoTFdQIDExNzM1KSBmdXRleF93YWl0X2NhbmNlbGFibGUgKHByaXZhdGU9MCwgZXhwZWN0ZWQ9
MCwgZnV0ZXhfd29yZD0weDdlZDdlYzkyOGMpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2Z1dGV4LWludGVybmFsLmg6ODAKICAyMSAgIChyZWRhY3RlZCkKICAyMiAgIChyZWRhY3RlZCkK
ICAyMyAgIFRocmVhZCAweDdlZjE2ZjlhMjAgKExXUCAxMTczNCkgMHgwMDAwMDA3ZjkzZjEzZDVj
IGluIEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKFdURjo6TW9ub3RvbmljVGltZSkgKCkgZnJvbSAu
Li4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAogIDI0ICAgKHJlZGFjdGVkKQogIDI1ICAgKHJl
ZGFjdGVkKQogIDI2ICAgKHJlZGFjdGVkKQogIDI3ICAgKHJlZGFjdGVkKQogIDI4ICAgKHJlZGFj
dGVkKQogIDI5ICAgKHJlZGFjdGVkKQogIDMwICAgKHJlZGFjdGVkKQogIDMxICAgVGhyZWFkIDB4
N2Y2NGZmZWEyMCAoTFdQIDIyMDg3KSAweDAwMDAwMDdmOTEzYzYwY2MgaW4gX19HSV9fX3BvbGwg
KGZkcz0weGUwN2U4NDAsIG5mZHM9MSwgdGltZW91dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5
c2RlcHMvdW5peC9zeXN2L2xpbnV4L3BvbGwuYzo0MQogIDMyICAgKHJlZGFjdGVkKQogIDMzICAg
VGhyZWFkIDB4N2Y2NzdmZGEyMCAoTFdQIDIyMDgwKSAweDAwMDAwMDdmOTEzYzYwY2MgaW4gX19H
SV9fX3BvbGwgKGZkcz0weDdmNTQwMDRiZDAsIG5mZHM9MiwgdGltZW91dD08b3B0aW1pemVkIG91
dD4pIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3BvbGwuYzo0MQogIDM0ICAgKHJlZGFj
dGVkKQogIDM1ICAgVGhyZWFkIDB4N2Y2Y2RmYmEyMCAoTFdQIDIyMDc1KSAweDAwMDAwMDdmOTEz
YzYwY2MgaW4gX19HSV9fX3BvbGwgKGZkcz0weDdmNjAwMDRiZDAsIG5mZHM9MSwgdGltZW91dD08
b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3BvbGwuYzo0MQog
IDM2ICAgKHJlZGFjdGVkKQogIDM3ICAgVGhyZWFkIDB4N2Y2ZDVmY2EyMCAoTFdQIDIyMDc0KSAw
eDAwMDAwMDdmOTEzYzYwY2MgaW4gX19HSV9fX3BvbGwgKGZkcz0weDdmNjgwMDUwMjAsIG5mZHM9
MSwgdGltZW91dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L3BvbGwuYzo0MQogIDM4ICAgKHJlZGFjdGVkKQogIDM5ICAgKHJlZGFjdGVkKQojMCAgMHgwMDAw
MDA3ZjkzZjEzYjQ4IGluIEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKFdURjo6TW9ub3RvbmljVGlt
ZSkgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojMSAgMHgwMDAwMDA3Zjkz
ZjE0NDIwIGluIEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluRnJvbVNoYXJlZChKU0M6OlNsb3RWaXNp
dG9yOjpTaGFyZWREcmFpbk1vZGUsIFdURjo6TW9ub3RvbmljVGltZSkgKCkgZnJvbSAuLi4vbGli
L2xpYldQRVdlYktpdC0xLjEuc28uMAojMiAgMHgwMDAwMDA3ZjkzZWU1ZWM0IGluIFdURjo6U2hh
cmVkVGFza0Z1bmN0b3I8dm9pZCAoKSwgSlNDOjpIZWFwOjpydW5CZWdpblBoYXNlKEpTQzo6R0ND
b25kdWN0b3IpOjp7bGFtYmRhKCkjMn0+OjpydW4oKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2Vi
S2l0LTEuMS5zby4wCiMzICAweDAwMDAwMDdmOTQ4MzFjZTQgaW4gV1RGOjpQYXJhbGxlbEhlbHBl
ckNsaWVudDo6cnVuVGFzayhXVEY6OlJlZlB0cjxXVEY6OlNoYXJlZFRhc2s8dm9pZCAoKT4sIFdU
Rjo6UmF3UHRyVHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkICgpPiA+LCBXVEY6OkRlZmF1bHRS
ZWZEZXJlZlRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZCAoKT4gPiA+IGNvbnN0JikgKCkgZnJv
bSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNCAgMHgwMDAwMDA3Zjk0ODMyZGFjIGlu
IFdURjo6UGFyYWxsZWxIZWxwZXJQb29sOjpUaHJlYWQ6OndvcmsoKSAoKSBmcm9tIC4uLi9saWIv
bGliV1BFV2ViS2l0LTEuMS5zby4wCiM1ICAweDAwMDAwMDdmOTQ4MTI3ZDQgaW4gV1RGOjpEZXRh
aWw6OkNhbGxhYmxlV3JhcHBlcjxXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3RhcnQoV1RGOjpBYnN0
cmFjdExvY2tlciBjb25zdCYpOjp7bGFtYmRhKCkjMX0sIHZvaWQ+OjpjYWxsKCkgKCkgZnJvbSAu
Li4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNiAgMHgwMDAwMDA3Zjk0ODNhOTc0IGluIFdU
Rjo6VGhyZWFkOjplbnRyeVBvaW50KFdURjo6VGhyZWFkOjpOZXdUaHJlYWRDb250ZXh0KikgKCkg
ZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNyAgMHgwMDAwMDA3Zjk0ODlmZTRj
IGluIFdURjo6d3RmVGhyZWFkRW50cnlQb2ludCh2b2lkKikgKCkgZnJvbSAuLi4vbGliL2xpYldQ
RVdlYktpdC0xLjEuc28uMAojOCAgMHgwMDAwMDA3ZjkwNWE5OTA0IGluIHN0YXJ0X3RocmVhZCAo
YXJnPTB4N2ZkMzY2NjExNikgYXQgcHRocmVhZF9jcmVhdGUuYzo0NzkKIzkgIDB4MDAwMDAwN2Y5
MTNjZWNhYyBpbiB0aHJlYWRfc3RhcnQgKCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
YWFyY2g2NC9jbG9uZS5TOjc4CgpUaHJlYWQgMzkgKFRocmVhZCAweDdmOGQ3NjNhMjAgKExXUCAy
MjA4MSkpOgouLi4KClRocmVhZCAzOCAoVGhyZWFkIDB4N2Y4ZDc0MmEyMCAoTFdQIDIyMDgyKSk6
Ci4uLgoKVGhyZWFkIDM3IChUaHJlYWQgMHg3ZjZkNWZjYTIwIChMV1AgMjIwNzQpKToKIzAgIDB4
MDAwMDAwN2Y5MTNjNjBjYyBpbiBfX0dJX19fcG9sbCAoZmRzPTB4N2Y2ODAwNTAyMCwgbmZkcz0x
LCB0aW1lb3V0PTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
cG9sbC5jOjQxCiMxICAweDAwMDAwMDdmOTExMjY3OGMgaW4gZ19tYWluX2NvbnRleHRfaXRlcmF0
ZS5pc3JhICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIuMC5zby4wCiMyICAweDAwMDAwMDdmOTEx
MjZiMDggaW4gZ19tYWluX2xvb3BfcnVuICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIuMC5zby4w
CiMzICAweDAwMDAwMDdmOTQ4OWRlMTQgaW4gV1RGOjpSdW5Mb29wOjpydW4oKSAoKSBmcm9tIC4u
Li9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM0ICAweDAwMDAwMDdmOTQ4M2E5NzQgaW4gV1RG
OjpUaHJlYWQ6OmVudHJ5UG9pbnQoV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQqKSAoKSBm
cm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM1ICAweDAwMDAwMDdmOTQ4OWZlNGMg
aW4gV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqKSAoKSBmcm9tIC4uLi9saWIvbGliV1BF
V2ViS2l0LTEuMS5zby4wCiM2ICAweDAwMDAwMDdmOTA1YTk5MDQgaW4gc3RhcnRfdGhyZWFkIChh
cmc9MHg3ZmQzNjY3NGI2KSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjQ3OQojNyAgMHgwMDAwMDA3Zjkx
M2NlY2FjIGluIHRocmVhZF9zdGFydCAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9h
YXJjaDY0L2Nsb25lLlM6NzgKClRocmVhZCAzNiAoVGhyZWFkIDB4N2VmMjdmYmEyMCAoTFdQIDIy
MTIyKSk6Ci4uLgoKVGhyZWFkIDM1IChUaHJlYWQgMHg3ZjZjZGZiYTIwIChMV1AgMjIwNzUpKToK
IzAgIDB4MDAwMDAwN2Y5MTNjNjBjYyBpbiBfX0dJX19fcG9sbCAoZmRzPTB4N2Y2MDAwNGJkMCwg
bmZkcz0xLCB0aW1lb3V0PTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vc3lzZGVwcy91bml4L3N5c3Yv
bGludXgvcG9sbC5jOjQxCiMxICAweDAwMDAwMDdmOTExMjY3OGMgaW4gZ19tYWluX2NvbnRleHRf
aXRlcmF0ZS5pc3JhICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIuMC5zby4wCiMyICAweDAwMDAw
MDdmOTExMjZiMDggaW4gZ19tYWluX2xvb3BfcnVuICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIu
MC5zby4wCiMzICAweDAwMDAwMDdmOTQ4OWRlMTQgaW4gV1RGOjpSdW5Mb29wOjpydW4oKSAoKSBm
cm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM0ICAweDAwMDAwMDdmOTQ4M2E5NzQg
aW4gV1RGOjpUaHJlYWQ6OmVudHJ5UG9pbnQoV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQq
KSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM1ICAweDAwMDAwMDdmOTQ4
OWZlNGMgaW4gV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqKSAoKSBmcm9tIC4uLi9saWIv
bGliV1BFV2ViS2l0LTEuMS5zby4wCiM2ICAweDAwMDAwMDdmOTA1YTk5MDQgaW4gc3RhcnRfdGhy
ZWFkIChhcmc9MHg3ZmQzNjY3NGI2KSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjQ3OQojNyAgMHgwMDAw
MDA3ZjkxM2NlY2FjIGluIHRocmVhZF9zdGFydCAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9s
aW51eC9hYXJjaDY0L2Nsb25lLlM6NzgKClRocmVhZCAzNCAoVGhyZWFkIDB4N2VmMmZmY2EyMCAo
TFdQIDIyMTIxKSk6Ci4uLgoKVGhyZWFkIDMzIChUaHJlYWQgMHg3ZjY3N2ZkYTIwIChMV1AgMjIw
ODApKToKIzAgIDB4MDAwMDAwN2Y5MTNjNjBjYyBpbiBfX0dJX19fcG9sbCAoZmRzPTB4N2Y1NDAw
NGJkMCwgbmZkcz0yLCB0aW1lb3V0PTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vc3lzZGVwcy91bml4
L3N5c3YvbGludXgvcG9sbC5jOjQxCiMxICAweDAwMDAwMDdmOTExMjY3OGMgaW4gZ19tYWluX2Nv
bnRleHRfaXRlcmF0ZS5pc3JhICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIuMC5zby4wCiMyICAw
eDAwMDAwMDdmOTExMjZiMDggaW4gZ19tYWluX2xvb3BfcnVuICgpIGZyb20gLi4uL2xpYi9saWJn
bGliLTIuMC5zby4wCiMzICAweDAwMDAwMDdmOTQ4OWRlMTQgaW4gV1RGOjpSdW5Mb29wOjpydW4o
KSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM0ICAweDAwMDAwMDdmOTQ4
M2E5NzQgaW4gV1RGOjpUaHJlYWQ6OmVudHJ5UG9pbnQoV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENv
bnRleHQqKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM1ICAweDAwMDAw
MDdmOTQ4OWZlNGMgaW4gV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqKSAoKSBmcm9tIC4u
Li9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM2ICAweDAwMDAwMDdmOTA1YTk5MDQgaW4gc3Rh
cnRfdGhyZWFkIChhcmc9MHg3ZmQzNjY2NGY2KSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjQ3OQojNyAg
MHgwMDAwMDA3ZjkxM2NlY2FjIGluIHRocmVhZF9zdGFydCAoKSBhdCAuLi9zeXNkZXBzL3VuaXgv
c3lzdi9saW51eC9hYXJjaDY0L2Nsb25lLlM6NzgKClRocmVhZCAzMiAoVGhyZWFkIDB4N2VmMzdm
ZGEyMCAoTFdQIDIyMTIwKSk6Ci4uLgoKVGhyZWFkIDMxIChUaHJlYWQgMHg3ZjY0ZmZlYTIwIChM
V1AgMjIwODcpKToKIzAgIDB4MDAwMDAwN2Y5MTNjNjBjYyBpbiBfX0dJX19fcG9sbCAoZmRzPTB4
ZTA3ZTg0MCwgbmZkcz0xLCB0aW1lb3V0PTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgvcG9sbC5jOjQxCiMxICAweDAwMDAwMDdmOTExMjY3OGMgaW4gZ19tYWlu
X2NvbnRleHRfaXRlcmF0ZS5pc3JhICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIuMC5zby4wCiMy
ICAweDAwMDAwMDdmOTExMjY4YjQgaW4gZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uICgpIGZyb20g
Li4uL2xpYi9saWJnbGliLTIuMC5zby4wCiMzICAweDAwMDAwMDdmOTExMjY5MWMgaW4gZ2xpYl93
b3JrZXJfbWFpbiAoKSBmcm9tIC4uLi9saWIvbGliZ2xpYi0yLjAuc28uMAojNCAgMHgwMDAwMDA3
ZjkxMTRhNzc0IGluIGdfdGhyZWFkX3Byb3h5ICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIuMC5z
by4wCiM1ICAweDAwMDAwMDdmOTA1YTk5MDQgaW4gc3RhcnRfdGhyZWFkIChhcmc9MHg3ZmQzNjY2
MTc2KSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjQ3OQojNiAgMHgwMDAwMDA3ZjkxM2NlY2FjIGluIHRo
cmVhZF9zdGFydCAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L2Nsb25l
LlM6NzgKClRocmVhZCAzMCAoVGhyZWFkIDB4N2VmM2ZmZWEyMCAoTFdQIDIyMTE5KSk6Ci4uLgoK
VGhyZWFkIDI5IChUaHJlYWQgMHg3ZjMyNWZjYTIwIChMV1AgMjIwOTIpKToKLi4uCgpUaHJlYWQg
MjggKFRocmVhZCAweDdmMDE3ZjlhMjAgKExXUCAyMjExNSkpOgouLi4KClRocmVhZCAyNyAoVGhy
ZWFkIDB4N2YzMWRmYmEyMCAoTFdQIDIyMDkzKSk6Ci4uLgoKVGhyZWFkIDI2IChUaHJlYWQgMHg3
ZjAxZmZhYTIwIChMV1AgMjIxMTQpKToKLi4uCgpUaHJlYWQgMjUgKFRocmVhZCAweDdmMDI3ZmJh
MjAgKExXUCAyMjExMykpOgouLi4KClRocmVhZCAyNCAoVGhyZWFkIDB4N2YzMTVmYWEyMCAoTFdQ
IDIyMDk0KSk6Ci4uLgoKVGhyZWFkIDIzIChUaHJlYWQgMHg3ZWYxNmY5YTIwIChMV1AgMTE3MzQp
KToKIzAgIDB4MDAwMDAwN2Y5M2YxM2Q1YyBpbiBKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbihXVEY6
Ok1vbm90b25pY1RpbWUpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzEg
IDB4MDAwMDAwN2Y5M2YxNDQyMCBpbiBKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbkZyb21TaGFyZWQo
SlNDOjpTbG90VmlzaXRvcjo6U2hhcmVkRHJhaW5Nb2RlLCBXVEY6Ok1vbm90b25pY1RpbWUpICgp
IGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzIgIDB4MDAwMDAwN2Y5M2VlNWVj
NCBpbiBXVEY6OlNoYXJlZFRhc2tGdW5jdG9yPHZvaWQgKCksIEpTQzo6SGVhcDo6cnVuQmVnaW5Q
aGFzZShKU0M6OkdDQ29uZHVjdG9yKTo6e2xhbWJkYSgpIzJ9Pjo6cnVuKCkgKCkgZnJvbSAuLi4v
bGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojMyAgMHgwMDAwMDA3Zjk0ODMxY2U0IGluIFdURjo6
UGFyYWxsZWxIZWxwZXJDbGllbnQ6OnJ1blRhc2soV1RGOjpSZWZQdHI8V1RGOjpTaGFyZWRUYXNr
PHZvaWQgKCk+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZCAoKT4gPiwg
V1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQgKCk+ID4gPiBj
b25zdCYpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzQgIDB4MDAwMDAw
N2Y5NDgzMmRhYyBpbiBXVEY6OlBhcmFsbGVsSGVscGVyUG9vbDo6VGhyZWFkOjp3b3JrKCkgKCkg
ZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNSAgMHgwMDAwMDA3Zjk0ODEyN2Q0
IGluIFdURjo6RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8V1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0
YXJ0KFdURjo6QWJzdHJhY3RMb2NrZXIgY29uc3QmKTo6e2xhbWJkYSgpIzF9LCB2b2lkPjo6Y2Fs
bCgpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzYgIDB4MDAwMDAwN2Y5
NDgzYTk3NCBpbiBXVEY6OlRocmVhZDo6ZW50cnlQb2ludChXVEY6OlRocmVhZDo6TmV3VGhyZWFk
Q29udGV4dCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzcgIDB4MDAw
MDAwN2Y5NDg5ZmU0YyBpbiBXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCopICgpIGZyb20g
Li4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzggIDB4MDAwMDAwN2Y5MDVhOTkwNCBpbiBz
dGFydF90aHJlYWQgKGFyZz0weDdmZDM2NjYxMTYpIGF0IHB0aHJlYWRfY3JlYXRlLmM6NDc5CiM5
ICAweDAwMDAwMDdmOTEzY2VjYWMgaW4gdGhyZWFkX3N0YXJ0ICgpIGF0IC4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L2FhcmNoNjQvY2xvbmUuUzo3OAoKVGhyZWFkIDIyIChUaHJlYWQgMHg3ZjAy
ZmZjYTIwIChMV1AgMjIxMTIpKToKLi4uCgpUaHJlYWQgMjEgKFRocmVhZCAweDdmNjY3ZmJhMjAg
KExXUCAyMjA4NikpOgouLi4KClRocmVhZCAyMCAoVGhyZWFkIDB4N2VkNzNmZWEyMCAoTFdQIDEx
NzM1KSk6CiMwICBmdXRleF93YWl0X2NhbmNlbGFibGUgKHByaXZhdGU9MCwgZXhwZWN0ZWQ9MCwg
ZnV0ZXhfd29yZD0weDdlZDdlYzkyOGMpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2Z1
dGV4LWludGVybmFsLmg6ODAKIzEgIF9fcHRocmVhZF9jb25kX3dhaXRfY29tbW9uIChhYnN0aW1l
PTB4MCwgY2xvY2tpZD0wLCBtdXRleD0weDdlZDdlYzkyMzAsIGNvbmQ9MHg3ZWQ3ZWM5MjYwKSBh
dCBwdGhyZWFkX2NvbmRfd2FpdC5jOjUwOAojMiAgX19wdGhyZWFkX2NvbmRfd2FpdCAoY29uZD0w
eDdlZDdlYzkyNjAsIG11dGV4PTB4N2VkN2VjOTIzMCkgYXQgcHRocmVhZF9jb25kX3dhaXQuYzo2
MzgKIzMgIDB4MDAwMDAwN2Y5NDhhMDg2MCBpbiBXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRX
YWl0KFdURjo6TXV0ZXgmLCBXVEY6OldhbGxUaW1lKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2Vi
S2l0LTEuMS5zby4wCiM0ICAweDAwMDAwMDdmOTQ4MzRkNzQgaW4gV1RGOjpQYXJraW5nTG90Ojpw
YXJrQ29uZGl0aW9uYWxseUltcGwodm9pZCBjb25zdCosIFdURjo6U2NvcGVkTGFtYmRhPGJvb2wg
KCk+IGNvbnN0JiwgV1RGOjpTY29wZWRMYW1iZGE8dm9pZCAoKT4gY29uc3QmLCBXVEY6OlRpbWVX
aXRoRHluYW1pY0Nsb2NrVHlwZSBjb25zdCYpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQt
MS4xLnNvLjAKIzUgIDB4MDAwMDAwN2Y5M2YxNDIyYyBpbiBKU0M6OlNsb3RWaXNpdG9yOjpkcmFp
bkZyb21TaGFyZWQoSlNDOjpTbG90VmlzaXRvcjo6U2hhcmVkRHJhaW5Nb2RlLCBXVEY6Ok1vbm90
b25pY1RpbWUpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzYgIDB4MDAw
MDAwN2Y5M2VlNWVjNCBpbiBXVEY6OlNoYXJlZFRhc2tGdW5jdG9yPHZvaWQgKCksIEpTQzo6SGVh
cDo6cnVuQmVnaW5QaGFzZShKU0M6OkdDQ29uZHVjdG9yKTo6e2xhbWJkYSgpIzJ9Pjo6cnVuKCkg
KCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNyAgMHgwMDAwMDA3Zjk0ODMx
Y2U0IGluIFdURjo6UGFyYWxsZWxIZWxwZXJDbGllbnQ6OnJ1blRhc2soV1RGOjpSZWZQdHI8V1RG
OjpTaGFyZWRUYXNrPHZvaWQgKCk+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJlZFRhc2s8
dm9pZCAoKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZv
aWQgKCk+ID4gPiBjb25zdCYpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAK
IzggIDB4MDAwMDAwN2Y5NDgzMmRhYyBpbiBXVEY6OlBhcmFsbGVsSGVscGVyUG9vbDo6VGhyZWFk
Ojp3b3JrKCkgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojOSAgMHgwMDAw
MDA3Zjk0ODEyN2Q0IGluIFdURjo6RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8V1RGOjpBdXRvbWF0
aWNUaHJlYWQ6OnN0YXJ0KFdURjo6QWJzdHJhY3RMb2NrZXIgY29uc3QmKTo6e2xhbWJkYSgpIzF9
LCB2b2lkPjo6Y2FsbCgpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzEw
IDB4MDAwMDAwN2Y5NDgzYTk3NCBpbiBXVEY6OlRocmVhZDo6ZW50cnlQb2ludChXVEY6OlRocmVh
ZDo6TmV3VGhyZWFkQ29udGV4dCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNv
LjAKIzExIDB4MDAwMDAwN2Y5NDg5ZmU0YyBpbiBXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQodm9p
ZCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzEyIDB4MDAwMDAwN2Y5
MDVhOTkwNCBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdmZDM2NjYxMTYpIGF0IHB0aHJlYWRfY3Jl
YXRlLmM6NDc5CiMxMyAweDAwMDAwMDdmOTEzY2VjYWMgaW4gdGhyZWFkX3N0YXJ0ICgpIGF0IC4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvY2xvbmUuUzo3OAoKVGhyZWFkIDE5IChU
aHJlYWQgMHg3ZjAzN2ZkYTIwIChMV1AgMjIxMTEpKToKLi4uCgpUaHJlYWQgMTggKFRocmVhZCAw
eDdmMzNkZmZhMjAgKExXUCAyMjA4OSkpOgojMCAgMHgwMDAwMDA3ZjkxM2M2MGNjIGluIF9fR0lf
X19wb2xsIChmZHM9MHg3ZjI0MDA1MDAwLCBuZmRzPTIsIHRpbWVvdXQ9PG9wdGltaXplZCBvdXQ+
KSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb2xsLmM6NDEKIzEgIDB4MDAwMDAwN2Y5
MTEyNjc4YyBpbiBnX21haW5fY29udGV4dF9pdGVyYXRlLmlzcmEgKCkgZnJvbSAuLi4vbGliL2xp
YmdsaWItMi4wLnNvLjAKIzIgIDB4MDAwMDAwN2Y5MTEyNmIwOCBpbiBnX21haW5fbG9vcF9ydW4g
KCkgZnJvbSAuLi4vbGliL2xpYmdsaWItMi4wLnNvLjAKIzMgIDB4MDAwMDAwN2Y5NDg5ZGUxNCBp
biBXVEY6OlJ1bkxvb3A6OnJ1bigpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNv
LjAKIzQgIDB4MDAwMDAwN2Y5NDgzYTk3NCBpbiBXVEY6OlRocmVhZDo6ZW50cnlQb2ludChXVEY6
OlRocmVhZDo6TmV3VGhyZWFkQ29udGV4dCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQt
MS4xLnNvLjAKIzUgIDB4MDAwMDAwN2Y5NDg5ZmU0YyBpbiBXVEY6Ond0ZlRocmVhZEVudHJ5UG9p
bnQodm9pZCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzYgIDB4MDAw
MDAwN2Y5MDVhOTkwNCBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdmZDM2NjRkMjYpIGF0IHB0aHJl
YWRfY3JlYXRlLmM6NDc5CiM3ICAweDAwMDAwMDdmOTEzY2VjYWMgaW4gdGhyZWFkX3N0YXJ0ICgp
IGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvY2xvbmUuUzo3OAoKVGhyZWFk
IDE3IChUaHJlYWQgMHg3ZjMwZGY5YTIwIChMV1AgMjIwOTUpKToKLi4uCgpUaHJlYWQgMTYgKFRo
cmVhZCAweDdmNjZmZmNhMjAgKExXUCAyMjA4NSkpOgouLi4KClRocmVhZCAxNSAoVGhyZWFkIDB4
N2YxOGVmZGEyMCAoTFdQIDIyMTA4KSk6Ci4uLgoKVGhyZWFkIDE0IChUaHJlYWQgMHg3ZjMzNWZl
YTIwIChMV1AgMjIwOTApKToKIzAgIDB4MDAwMDAwN2Y5MTNjNjBjYyBpbiBfX0dJX19fcG9sbCAo
ZmRzPTB4N2YyYzAwZWJkMCwgbmZkcz0xLCB0aW1lb3V0PTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4v
c3lzZGVwcy91bml4L3N5c3YvbGludXgvcG9sbC5jOjQxCiMxICAweDAwMDAwMDdmOTExMjY3OGMg
aW4gZ19tYWluX2NvbnRleHRfaXRlcmF0ZS5pc3JhICgpIGZyb20gLi4uL2xpYi9saWJnbGliLTIu
MC5zby4wCiMyICAweDAwMDAwMDdmOTExMjZiMDggaW4gZ19tYWluX2xvb3BfcnVuICgpIGZyb20g
Li4uL2xpYi9saWJnbGliLTIuMC5zby4wCiMzICAweDAwMDAwMDdmOGZkZTZlOTQgaW4gZ2RidXNf
c2hhcmVkX3RocmVhZF9mdW5jICgpIGZyb20gLi4uL2xpYi9saWJnaW8tMi4wLnNvLjAKIzQgIDB4
MDAwMDAwN2Y5MTE0YTc3NCBpbiBnX3RocmVhZF9wcm94eSAoKSBmcm9tIC4uLi9saWIvbGliZ2xp
Yi0yLjAuc28uMAojNSAgMHgwMDAwMDA3ZjkwNWE5OTA0IGluIHN0YXJ0X3RocmVhZCAoYXJnPTB4
N2YzNDVmZmYyNikgYXQgcHRocmVhZF9jcmVhdGUuYzo0NzkKIzYgIDB4MDAwMDAwN2Y5MTNjZWNh
YyBpbiB0aHJlYWRfc3RhcnQgKCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2
NC9jbG9uZS5TOjc4CgpUaHJlYWQgMTMgKFRocmVhZCAweDdmMDNmZmVhMjAgKExXUCAyMjExMCkp
OgojMCAgMHgwMDAwMDA3ZjkxM2M2MGNjIGluIF9fR0lfX19wb2xsIChmZHM9MHg3ZWZjMDAxZTMw
LCBuZmRzPTEsIHRpbWVvdXQ9PG9wdGltaXplZCBvdXQ+KSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9wb2xsLmM6NDEKIzEgIDB4MDAwMDAwN2Y5MTEyNjc4YyBpbiBnX21haW5fY29udGV4
dF9pdGVyYXRlLmlzcmEgKCkgZnJvbSAuLi4vbGliL2xpYmdsaWItMi4wLnNvLjAKIzIgIDB4MDAw
MDAwN2Y5MTEyNmIwOCBpbiBnX21haW5fbG9vcF9ydW4gKCkgZnJvbSAuLi4vbGliL2xpYmdsaWIt
Mi4wLnNvLjAKIzMgIDB4MDAwMDAwN2Y5NDg5ZGUxNCBpbiBXVEY6OlJ1bkxvb3A6OnJ1bigpICgp
IGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzQgIDB4MDAwMDAwN2Y5NDgzYTk3
NCBpbiBXVEY6OlRocmVhZDo6ZW50cnlQb2ludChXVEY6OlRocmVhZDo6TmV3VGhyZWFkQ29udGV4
dCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzUgIDB4MDAwMDAwN2Y5
NDg5ZmU0YyBpbiBXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCopICgpIGZyb20gLi4uL2xp
Yi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzYgIDB4MDAwMDAwN2Y5MDVhOTkwNCBpbiBzdGFydF90
aHJlYWQgKGFyZz0weDdmMzNkZmVjOTYpIGF0IHB0aHJlYWRfY3JlYXRlLmM6NDc5CiM3ICAweDAw
MDAwMDdmOTEzY2VjYWMgaW4gdGhyZWFkX3N0YXJ0ICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L2FhcmNoNjQvY2xvbmUuUzo3OAoKVGhyZWFkIDEyIChUaHJlYWQgMHg3ZjZjNWZhYTIw
IChMV1AgMjIwODQpKToKLi4uCgpUaHJlYWQgMTEgKFRocmVhZCAweDdmMWI3ZmRhMjAgKExXUCAy
MjA5OSkpOgouLi4KClRocmVhZCAxMCAoVGhyZWFkIDB4N2YzMmRmZGEyMCAoTFdQIDIyMDkxKSk6
Ci4uLgoKVGhyZWFkIDkgKFRocmVhZCAweDdmMTk2ZmVhMjAgKExXUCAyMjEwNykpOgouLi4KClRo
cmVhZCA4IChUaHJlYWQgMHg3ZjhkNzIxYTIwIChMV1AgMjIwODMpKToKLi4uCgpUaHJlYWQgNyAo
VGhyZWFkIDB4N2YwMGZmOGEyMCAoTFdQIDIyMTE4KSk6Ci4uLgoKVGhyZWFkIDYgKFRocmVhZCAw
eDdlZDUxZmVhMjAgKExXUCAyMjEzNSkpOgouLi4KClRocmVhZCA1IChUaHJlYWQgMHg3ZjFiZmZl
YTIwIChMV1AgMjIxMDYpKToKLi4uCgpUaHJlYWQgNCAoVGhyZWFkIDB4N2Y4ZTEzMDAxMCAoTFdQ
IDIyMDYyKSk6CiMwICAweDAwMDAwMDdmOTNmMDQwNDggaW4gdm9pZCBKU0M6OkpJVFN0dWJSb3V0
aW5lU2V0Ojp0cmFjZU1hcmtlZFN0dWJSb3V0aW5lczxKU0M6OlNsb3RWaXNpdG9yPihKU0M6OlNs
b3RWaXNpdG9yJikgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojMSAgMHgw
MDAwMDA3ZjkzZWU5NDJjIGluIGF1dG8gSlNDOjpIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKTo6
e2xhbWJkYShhdXRvOjEmKSMyfTo6b3BlcmF0b3IoKTxKU0M6OlNsb3RWaXNpdG9yPihKU0M6OlNs
b3RWaXNpdG9yJikgW2Nsb25lIC5pc3JhLjEzNDhdICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJL
aXQtMS4xLnNvLjAKIzIgIDB4MDAwMDAwN2Y5M2YwYTE5OCBpbiBKU0M6Ok1hcmtpbmdDb25zdHJh
aW50OjpleGVjdXRlKEpTQzo6U2xvdFZpc2l0b3ImKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2Vi
S2l0LTEuMS5zby4wCiMzICAweDAwMDAwMDdmOTNmMGUwMGMgaW4gSlNDOjpNYXJraW5nQ29uc3Ry
YWludFNvbHZlcjo6cnVuRXhlY3V0aW9uVGhyZWFkKEpTQzo6U2xvdFZpc2l0b3ImLCBKU0M6Ok1h
cmtpbmdDb25zdHJhaW50U29sdmVyOjpTY2hlZHVsZXJQcmVmZXJlbmNlLCBXVEY6OlNjb3BlZExh
bWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGludD4gKCk+KSAoKSBmcm9tIC4uLi9saWIvbGli
V1BFV2ViS2l0LTEuMS5zby4wCiM0ICAweDAwMDAwMDdmOTNlZTNkYjggaW4gSlNDOjpIZWFwOjpy
dW5UYXNrSW5QYXJhbGxlbChXVEY6OlJlZlB0cjxXVEY6OlNoYXJlZFRhc2s8dm9pZCAoSlNDOjpT
bG90VmlzaXRvciYpPiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQgKEpT
Qzo6U2xvdFZpc2l0b3ImKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM8V1RGOjpTaGFy
ZWRUYXNrPHZvaWQgKEpTQzo6U2xvdFZpc2l0b3ImKT4gPiA+KSAoKSBmcm9tIC4uLi9saWIvbGli
V1BFV2ViS2l0LTEuMS5zby4wCiM1ICAweDAwMDAwMDdmOTNmMGU2OWMgaW4gSlNDOjpNYXJraW5n
Q29uc3RyYWludFNvbHZlcjo6ZXhlY3V0ZShKU0M6Ok1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpT
Y2hlZHVsZXJQcmVmZXJlbmNlLCBXVEY6OlNjb3BlZExhbWJkYTxzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkIGludD4gKCk+KSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM2ICAw
eDAwMDAwMDdmOTNmMGU4YTQgaW4gSlNDOjpNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6ZHJhaW4o
V1RGOjpCaXRWZWN0b3ImKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiM3
ICAweDAwMDAwMDdmOTNmMGVmMTggaW4gSlNDOjpNYXJraW5nQ29uc3RyYWludFNldDo6ZXhlY3V0
ZUNvbnZlcmdlbmNlSW1wbChKU0M6OlNsb3RWaXNpdG9yJikgKCkgZnJvbSAuLi4vbGliL2xpYldQ
RVdlYktpdC0xLjEuc28uMAojOCAgMHgwMDAwMDA3ZjkzZjBlZjYwIGluIEpTQzo6TWFya2luZ0Nv
bnN0cmFpbnRTZXQ6OmV4ZWN1dGVDb252ZXJnZW5jZShKU0M6OlNsb3RWaXNpdG9yJikgKCkgZnJv
bSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojOSAgMHgwMDAwMDA3ZjkzZWU5ZDBjIGlu
IEpTQzo6SGVhcDo6cnVuRml4cG9pbnRQaGFzZShKU0M6OkdDQ29uZHVjdG9yKSAoKSBmcm9tIC4u
Li9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiMxMCAweDAwMDAwMDdmOTNlZWE0ZTQgaW4gSlND
OjpIZWFwOjpydW5DdXJyZW50UGhhc2UoSlNDOjpHQ0NvbmR1Y3RvciwgSlNDOjpDdXJyZW50VGhy
ZWFkU3RhdGUqKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiMxMSAweDAw
MDAwMDdmOTNlZWM3NDQgaW4gV1RGOjpTY29wZWRMYW1iZGFGdW5jdG9yPHZvaWQgKEpTQzo6Q3Vy
cmVudFRocmVhZFN0YXRlJiksIEpTQzo6SGVhcDo6Y29sbGVjdEluTXV0YXRvclRocmVhZCgpOjp7
bGFtYmRhKEpTQzo6Q3VycmVudFRocmVhZFN0YXRlJikjMX0+OjppbXBsRnVuY3Rpb24odm9pZCos
IEpTQzo6Q3VycmVudFRocmVhZFN0YXRlJikgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0x
LjEuc28uMAojMTIgMHgwMDAwMDA3ZjkzZjAxZjA4IGluIEpTQzo6Y2FsbFdpdGhDdXJyZW50VGhy
ZWFkU3RhdGUoV1RGOjpTY29wZWRMYW1iZGE8dm9pZCAoSlNDOjpDdXJyZW50VGhyZWFkU3RhdGUm
KT4gY29uc3QmKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiMxMyAweDAw
MDAwMDdmOTNlZWE1YTQgaW4gSlNDOjpIZWFwOjpjb2xsZWN0SW5NdXRhdG9yVGhyZWFkKCkgKCkg
ZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojMTQgMHgwMDAwMDA3ZjkzZWVhNjIw
IGluIEpTQzo6SGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdyh1bnNpZ25lZCBpbnQpICgpIGZyb20g
Li4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzE1IDB4MDAwMDAwN2Y5M2VlYWJiNCBpbiBK
U0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNsb3coKSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2Vi
S2l0LTEuMS5zby4wCiMxNiAweDAwMDAwMDdmOTNlZWIyMWMgaW4gSlNDOjpIZWFwOjpjb2xsZWN0
SWZOZWNlc3NhcnlPckRlZmVyKEpTQzo6R0NEZWZlcnJhbENvbnRleHQqKSAoKSBmcm9tIC4uLi9s
aWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiMxNyAweDAwMDAwMDdmOTNmMDJmNjggaW4gSlNDOjpM
b2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShKU0M6OkhlYXAmLCBKU0M6OkdDRGVmZXJy
YWxDb250ZXh0KiwgSlNDOjpBbGxvY2F0aW9uRmFpbHVyZU1vZGUpICgpIGZyb20gLi4uL2xpYi9s
aWJXUEVXZWJLaXQtMS4xLnNvLjAKIzE4IDB4MDAwMDAwN2Y5MjgxNWIyMCBpbiBKU0M6OkpTQXJy
YXk6OnRyeUNyZWF0ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBpbnQsIHVu
c2lnbmVkIGludCkgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojMTkgMHgw
MDAwMDA3ZjkzYzRmNzA4IGluIEpTQzo6REZHOjpvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIGludCwgSlNDOjpCdXR0ZXJmbHkq
KSAoKSBmcm9tIC4uLi9saWIvbGliV1BFV2ViS2l0LTEuMS5zby4wCiMyMCAweDAwMDAwMDdmNmQ3
N2RiNmMgaW4gPz8gKCkKIzIxIDB4MDAwMDAwN2VkNWVlNGVjMCBpbiA/PyAoKQpCYWNrdHJhY2Ug
c3RvcHBlZDogcHJldmlvdXMgZnJhbWUgaW5uZXIgdG8gdGhpcyBmcmFtZSAoY29ycnVwdCBzdGFj
az8pCgpUaHJlYWQgMyAoVGhyZWFkIDB4N2Y2N2ZmZWEyMCAoTFdQIDIyMDc2KSk6CiMwICAweDAw
MDAwMDdmOTEzYzYwY2MgaW4gX19HSV9fX3BvbGwgKGZkcz0weDdmNWMwMDQ3ZDAsIG5mZHM9Miwg
dGltZW91dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bv
bGwuYzo0MQojMSAgMHgwMDAwMDA3ZjkxMTI2NzhjIGluIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGUu
aXNyYSAoKSBmcm9tIC4uLi9saWIvbGliZ2xpYi0yLjAuc28uMAojMiAgMHgwMDAwMDA3ZjkxMTI2
YjA4IGluIGdfbWFpbl9sb29wX3J1biAoKSBmcm9tIC4uLi9saWIvbGliZ2xpYi0yLjAuc28uMAoj
MyAgMHgwMDAwMDA3Zjk0ODlkZTE0IGluIFdURjo6UnVuTG9vcDo6cnVuKCkgKCkgZnJvbSAuLi4v
bGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNCAgMHgwMDAwMDA3Zjk0ODNhOTc0IGluIFdURjo6
VGhyZWFkOjplbnRyeVBvaW50KFdURjo6VGhyZWFkOjpOZXdUaHJlYWRDb250ZXh0KikgKCkgZnJv
bSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNSAgMHgwMDAwMDA3Zjk0ODlmZTRjIGlu
IFdURjo6d3RmVGhyZWFkRW50cnlQb2ludCh2b2lkKikgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdl
YktpdC0xLjEuc28uMAojNiAgMHgwMDAwMDA3ZjkwNWE5OTA0IGluIHN0YXJ0X3RocmVhZCAoYXJn
PTB4N2ZkMzY2NzRiNikgYXQgcHRocmVhZF9jcmVhdGUuYzo0NzkKIzcgIDB4MDAwMDAwN2Y5MTNj
ZWNhYyBpbiB0aHJlYWRfc3RhcnQgKCkgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFy
Y2g2NC9jbG9uZS5TOjc4CgpUaHJlYWQgMiAoVGhyZWFkIDB4N2Y4ZTExZWEyMCAoTFdQIDIyMDcz
KSk6CiMwICBmdXRleF93YWl0X2NhbmNlbGFibGUgKHByaXZhdGU9MCwgZXhwZWN0ZWQ9MCwgZnV0
ZXhfd29yZD0weDdmOTU2OTdjMDggPGJtYWxsb2M6OlN0YXRpY1BlclByb2Nlc3NTdG9yYWdlVHJh
aXRzPGJtYWxsb2M6OlNjYXZlbmdlcj46OlN0b3JhZ2U6OnNfbWVtb3J5KzcyPikgYXQgLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvZnV0ZXgtaW50ZXJuYWwuaDo4MAojMSAgX19wdGhyZWFkX2Nv
bmRfd2FpdF9jb21tb24gKGFic3RpbWU9MHgwLCBjbG9ja2lkPTAsIG11dGV4PTB4ZTA0YzY3MCwg
Y29uZD0weDdmOTU2OTdiZTAgPGJtYWxsb2M6OlN0YXRpY1BlclByb2Nlc3NTdG9yYWdlVHJhaXRz
PGJtYWxsb2M6OlNjYXZlbmdlcj46OlN0b3JhZ2U6OnNfbWVtb3J5KzMyPikgYXQgcHRocmVhZF9j
b25kX3dhaXQuYzo1MDgKIzIgIF9fcHRocmVhZF9jb25kX3dhaXQgKGNvbmQ9MHg3Zjk1Njk3YmUw
IDxibWFsbG9jOjpTdGF0aWNQZXJQcm9jZXNzU3RvcmFnZVRyYWl0czxibWFsbG9jOjpTY2F2ZW5n
ZXI+OjpTdG9yYWdlOjpzX21lbW9yeSszMj4sIG11dGV4PTB4ZTA0YzY3MCkgYXQgcHRocmVhZF9j
b25kX3dhaXQuYzo2MzgKIzMgIDB4MDAwMDAwN2Y4ZmExYjg0MCBpbiBfX2d0aHJlYWRfY29uZF93
YWl0IChfX211dGV4PTxvcHRpbWl6ZWQgb3V0PiwgX19jb25kPTxvcHRpbWl6ZWQgb3V0PikgYXQg
L2RhdGEvYnVpbGRzL3l2b3MtYnVpbGRyb290L3l2b3MtbWFzdGVyL3NhZ2VtY29tLmRpdzM5MzAt
YXRrLWJvbHQveXZvcy1idWlsZHJvb3QtYnVpbGQvYnVpbGQvaG9zdC1nY2MtZmluYWwtOC40LjAv
YnVpbGQvYWFyY2g2NC1idWlsZHJvb3QtbGludXgtZ251L2xpYnN0ZGMrKy12My9pbmNsdWRlL2Fh
cmNoNjQtYnVpbGRyb290LWxpbnV4LWdudS9iaXRzL2d0aHItZGVmYXVsdC5oOjg2NAojNCAgc3Rk
Ojpjb25kaXRpb25fdmFyaWFibGU6OndhaXQgKHRoaXM9PG9wdGltaXplZCBvdXQ+LCBfX2xvY2s9
Li4uKSBhdCAuLi8uLi8uLi8uLi8uLi9saWJzdGRjKystdjMvc3JjL2MrKzExL2NvbmRpdGlvbl92
YXJpYWJsZS5jYzo1MwojNSAgMHgwMDAwMDA3Zjk0OGM1MzY4IGluIGJtYWxsb2M6OlNjYXZlbmdl
cjo6dGhyZWFkUnVuTG9vcCgpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAK
IzYgIDB4MDAwMDAwN2Y5NDhjNTY3YyBpbiBibWFsbG9jOjpTY2F2ZW5nZXI6OnRocmVhZEVudHJ5
UG9pbnQoYm1hbGxvYzo6U2NhdmVuZ2VyKikgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0x
LjEuc28uMAojNyAgMHgwMDAwMDA3ZjhmYTIyNWVjIGluIHN0ZDo6ZXhlY3V0ZV9uYXRpdmVfdGhy
ZWFkX3JvdXRpbmUgKF9fcD0weGUwNTIyNzApIGF0IC4uLy4uLy4uLy4uLy4uL2xpYnN0ZGMrKy12
My9zcmMvYysrMTEvdGhyZWFkLmNjOjgwCiM4ICAweDAwMDAwMDdmOTA1YTk5MDQgaW4gc3RhcnRf
dGhyZWFkIChhcmc9MHg3ZmQzNjY3NTI2KSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjQ3OQojOSAgMHgw
MDAwMDA3ZjkxM2NlY2FjIGluIHRocmVhZF9zdGFydCAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9hYXJjaDY0L2Nsb25lLlM6NzgKClRocmVhZCAxIChUaHJlYWQgMHg3ZWJkM2ZlYTIw
IChMV1AgMTE3MzMpKToKIzAgIDB4MDAwMDAwN2Y5M2YxM2I0OCBpbiBKU0M6OlNsb3RWaXNpdG9y
OjpkcmFpbihXVEY6Ok1vbm90b25pY1RpbWUpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQt
MS4xLnNvLjAKIzEgIDB4MDAwMDAwN2Y5M2YxNDQyMCBpbiBKU0M6OlNsb3RWaXNpdG9yOjpkcmFp
bkZyb21TaGFyZWQoSlNDOjpTbG90VmlzaXRvcjo6U2hhcmVkRHJhaW5Nb2RlLCBXVEY6Ok1vbm90
b25pY1RpbWUpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzIgIDB4MDAw
MDAwN2Y5M2VlNWVjNCBpbiBXVEY6OlNoYXJlZFRhc2tGdW5jdG9yPHZvaWQgKCksIEpTQzo6SGVh
cDo6cnVuQmVnaW5QaGFzZShKU0M6OkdDQ29uZHVjdG9yKTo6e2xhbWJkYSgpIzJ9Pjo6cnVuKCkg
KCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojMyAgMHgwMDAwMDA3Zjk0ODMx
Y2U0IGluIFdURjo6UGFyYWxsZWxIZWxwZXJDbGllbnQ6OnJ1blRhc2soV1RGOjpSZWZQdHI8V1RG
OjpTaGFyZWRUYXNrPHZvaWQgKCk+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJlZFRhc2s8
dm9pZCAoKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZv
aWQgKCk+ID4gPiBjb25zdCYpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAK
IzQgIDB4MDAwMDAwN2Y5NDgzMmRhYyBpbiBXVEY6OlBhcmFsbGVsSGVscGVyUG9vbDo6VGhyZWFk
Ojp3b3JrKCkgKCkgZnJvbSAuLi4vbGliL2xpYldQRVdlYktpdC0xLjEuc28uMAojNSAgMHgwMDAw
MDA3Zjk0ODEyN2Q0IGluIFdURjo6RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8V1RGOjpBdXRvbWF0
aWNUaHJlYWQ6OnN0YXJ0KFdURjo6QWJzdHJhY3RMb2NrZXIgY29uc3QmKTo6e2xhbWJkYSgpIzF9
LCB2b2lkPjo6Y2FsbCgpICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzYg
IDB4MDAwMDAwN2Y5NDgzYTk3NCBpbiBXVEY6OlRocmVhZDo6ZW50cnlQb2ludChXVEY6OlRocmVh
ZDo6TmV3VGhyZWFkQ29udGV4dCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNv
LjAKIzcgIDB4MDAwMDAwN2Y5NDg5ZmU0YyBpbiBXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQodm9p
ZCopICgpIGZyb20gLi4uL2xpYi9saWJXUEVXZWJLaXQtMS4xLnNvLjAKIzggIDB4MDAwMDAwN2Y5
MDVhOTkwNCBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdmZDM2NjYxMTYpIGF0IHB0aHJlYWRfY3Jl
YXRlLmM6NDc5CiM5ICAweDAwMDAwMDdmOTEzY2VjYWMgaW4gdGhyZWFkX3N0YXJ0ICgpIGF0IC4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvY2xvbmUuUzo3OAoKRHVtcCBvZiBhc3Nl
bWJsZXIgY29kZSBmb3IgZnVuY3Rpb24gX1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYx
M01vbm90b25pY1RpbWVFOgogICAweDAwMDAwMDdmOTNmMTNhMDAgPCswPjoJc3RwCXgyOSwgeDMw
LCBbc3AsICMtMTYwXSEKICAgMHgwMDAwMDA3ZjkzZjEzYTA0IDwrND46CW1vdgl4MjksIHNwCiAg
IDB4MDAwMDAwN2Y5M2YxM2EwOCA8Kzg+OglzdHAJeDI1LCB4MjYsIFtzcCwgIzY0XQogICAweDAw
MDAwMDdmOTNmMTNhMGMgPCsxMj46CWFkcnAJeDI2LCAweDdmOTU2MTIwMDAKICAgMHgwMDAwMDA3
ZjkzZjEzYTEwIDwrMTY+OglsZHIJeDEsIFt4MjYsICMxNTI4XQogICAweDAwMDAwMDdmOTNmMTNh
MTQgPCsyMD46CXN0cAl4MTksIHgyMCwgW3NwLCAjMTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2ExOCA8
KzI0PjoJbW92CXgxOSwgeDAKICAgMHgwMDAwMDA3ZjkzZjEzYTFjIDwrMjg+OglsZHJiCXcwLCBb
eDAsICMxODddCiAgIDB4MDAwMDAwN2Y5M2YxM2EyMCA8KzMyPjoJbGRyCXgyLCBbeDFdCiAgIDB4
MDAwMDAwN2Y5M2YxM2EyNCA8KzM2PjoJc3RyCXgyLCBbc3AsICMxNTJdCiAgIDB4MDAwMDAwN2Y5
M2YxM2EyOCA8KzQwPjoJbW92CXgyLCAjMHgwICAgICAgICAgICAgICAgICAgIAkvLyAjMAogICAw
eDAwMDAwMDdmOTNmMTNhMmMgPCs0ND46CXN0cAl4MjEsIHgyMiwgW3NwLCAjMzJdCiAgIDB4MDAw
MDAwN2Y5M2YxM2EzMCA8KzQ4PjoJc3RwCXgyMywgeDI0LCBbc3AsICM0OF0KICAgMHgwMDAwMDA3
ZjkzZjEzYTM0IDwrNTI+OglzdHAJeDI3LCB4MjgsIFtzcCwgIzgwXQogICAweDAwMDAwMDdmOTNm
MTNhMzggPCs1Nj46CXN0cglkOCwgW3NwLCAjOTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2EzYyA8KzYw
PjoJY2J6CXcwLCAweDdmOTNmMTNlYTggPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RG
MTNNb25vdG9uaWNUaW1lRSsxMTkyPgogICAweDAwMDAwMDdmOTNmMTNhNDAgPCs2ND46CWFkZAl4
MjEsIHgxOSwgIzB4YmMKICAgMHgwMDAwMDA3ZjkzZjEzYTQ0IDwrNjg+Ogltb3YJdzAsICMweDEg
ICAgICAgICAgICAgICAgICAgCS8vICMxCiAgIDB4MDAwMDAwN2Y5M2YxM2E0OCA8KzcyPjoJZm1v
dglkOCwgZDAKICAgMHgwMDAwMDA3ZjkzZjEzYTRjIDwrNzY+OglzdHIJeDIxLCBbc3AsICMxMjBd
CiAgIDB4MDAwMDAwN2Y5M2YxM2E1MCA8KzgwPjoJc3RyYgl3MCwgW3NwLCAjMTI4XQogICAweDAw
MDAwMDdmOTNmMTNhNTQgPCs4ND46CWxkYXhyYgl3MSwgW3gyMV0KICAgMHgwMDAwMDA3ZjkzZjEz
YTU4IDwrODg+OgljbXAJdzEsICMweDAKICAgMHgwMDAwMDA3ZjkzZjEzYTVjIDwrOTI+OgliLm5l
CTB4N2Y5M2YxM2E2OCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25p
Y1RpbWVFKzEwND4gIC8vIGIuYW55CiAgIDB4MDAwMDAwN2Y5M2YxM2E2MCA8Kzk2PjoJc3R4cmIJ
dzIsIHcwLCBbeDIxXQogICAweDAwMDAwMDdmOTNmMTNhNjQgPCsxMDA+OgljbXAJdzIsICMweDAK
ICAgMHgwMDAwMDA3ZjkzZjEzYTY4IDwrMTA0PjoJYi5uZQkweDdmOTNmMTNlOTggPF9aTjNKU0Mx
MVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSsxMTc2PiAgLy8gYi5hbnkK
ICAgMHgwMDAwMDA3ZjkzZjEzYTZjIDwrMTA4PjoJYWRycAl4MjIsIDB4N2Y5NTYwNTAwMAogICAw
eDAwMDAwMDdmOTNmMTNhNzAgPCsxMTI+OglhZGQJeDIzLCBzcCwgIzB4ODgKICAgMHgwMDAwMDA3
ZjkzZjEzYTc0IDwrMTE2PjoJbW92CXcyMCwgIzB4MSAgICAgICAgICAgICAgICAgICAJLy8gIzEK
ICAgMHgwMDAwMDA3ZjkzZjEzYTc4IDwrMTIwPjoJbW92CXgwLCB4MjMKICAgMHgwMDAwMDA3Zjkz
ZjEzYTdjIDwrMTI0PjoJbGRyCXgyNywgW3gyMiwgIzIwMTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2E4
MCA8KzEyOD46CWFkZAl4MjQsIHNwLCAjMHg3OAogICAweDAwMDAwMDdmOTNmMTNhODQgPCsxMzI+
Ogltb3YJeDI1LCAjMHgxZmUgICAgICAgICAgICAgICAgIAkvLyAjNTEwCiAgIDB4MDAwMDAwN2Y5
M2YxM2E4OCA8KzEzNj46CXN0cglkOCwgW3NwLCAjMTM2XQogICAweDAwMDAwMDdmOTNmMTNhOGMg
PCsxNDA+OglzdHIJdzIwLCBbc3AsICMxNDRdCiAgIDB4MDAwMDAwN2Y5M2YxM2E5MCA8KzE0ND46
CWJsCTB4N2Y5NDgzZDNlMCA8X1pOM1dURjEwaGFzRWxhcHNlZEVSS05TXzI0VGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlRT4KICAgMHgwMDAwMDA3ZjkzZjEzYTk0IDwrMTQ4PjoJdHN0CXcwLCAjMHhm
ZgogICAweDAwMDAwMDdmOTNmMTNhOTggPCsxNTI+OgliLm5lCTB4N2Y5M2YxM2MxNCA8X1pOM0pT
QzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzUzMj4gIC8vIGIuYW55
CiAgIDB4MDAwMDAwN2Y5M2YxM2E5YyA8KzE1Nj46CWFkZAl4MjgsIHgxOSwgIzB4OAogICAweDAw
MDAwMDdmOTNmMTNhYTAgPCsxNjA+Ogltb3YJeDAsIHgxOQogICAweDAwMDAwMDdmOTNmMTNhYTQg
PCsxNjQ+Ogltb3YJeDEsIHgyNAogICAweDAwMDAwMDdmOTNmMTNhYTggPCsxNjg+OglibAkweDdm
OTNmMTI1MjAgPF9aTjNKU0MxMVNsb3RWaXNpdG9yMjJ1cGRhdGVNdXRhdG9ySXNTdG9wcGVkRVJL
TjNXVEYxNEFic3RyYWN0TG9ja2VyRT4KICAgMHgwMDAwMDA3ZjkzZjEzYWFjIDwrMTcyPjoJbGRy
CXgwLCBbeDI4LCAjMTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2FiMCA8KzE3Nj46CWNibnoJeDAsIDB4
N2Y5M2YxM2RkYyA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1Rp
bWVFKzk4OD4KICAgMHgwMDAwMDA3ZjkzZjEzYWI0IDwrMTgwPjoJbGRyCXgwLCBbeDE5LCAjOF0K
ICAgMHgwMDAwMDA3ZjkzZjEzYWI4IDwrMTg0PjoJbGRyCXgxLCBbeDAsICM4XQogICAweDAwMDAw
MDdmOTNmMTNhYmMgPCsxODg+OgljYnoJeDEsIDB4N2Y5M2YxM2M3MCA8X1pOM0pTQzExU2xvdFZp
c2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzYyND4KICAgMHgwMDAwMDA3ZjkzZjEz
YWMwIDwrMTkyPjoJbGRyCXgyLCBbeDBdCiAgIDB4MDAwMDAwN2Y5M2YxM2FjNCA8KzE5Nj46CWNi
egl4MiwgMHg3ZjkzZjEzZTQ4IDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9u
b3RvbmljVGltZUUrMTA5Nj4KICAgMHgwMDAwMDA3ZjkzZjEzYWM4IDwrMjAwPjoJc3RyCXgxLCBb
eDIsICM4XQogICAweDAwMDAwMDdmOTNmMTNhY2MgPCsyMDQ+OglsZHAJeDIsIHgxLCBbeDBdCiAg
IDB4MDAwMDAwN2Y5M2YxM2FkMCA8KzIwOD46CWNiegl4MSwgMHg3ZjkzZjEzZTQwIDxfWk4zSlND
MTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrMTA4OD4KICAgMHgwMDAw
MDA3ZjkzZjEzYWQ0IDwrMjEyPjoJc3RyCXgyLCBbeDFdCiAgIDB4MDAwMDAwN2Y5M2YxM2FkOCA8
KzIxNj46CWJsCTB4N2Y5NDgxOTllMCA8X1pOM1dURjhmYXN0RnJlZUVQdj4KICAgMHgwMDAwMDA3
ZjkzZjEzYWRjIDwrMjIwPjoJbGRyCXgwLCBbeDI4LCAjMjRdCiAgIDB4MDAwMDAwN2Y5M2YxM2Fl
MCA8KzIyND46CW1vdgl3MiwgIzB4MSAgICAgICAgICAgICAgICAgICAJLy8gIzEKICAgMHgwMDAw
MDA3ZjkzZjEzYWU0IDwrMjI4PjoJbGRyCXgxLCBbeDIyLCAjMjAxNl0KICAgMHgwMDAwMDA3Zjkz
ZjEzYWU4IDwrMjMyPjoJc3ViCXgwLCB4MCwgIzB4MQogICAweDAwMDAwMDdmOTNmMTNhZWMgPCsy
MzY+OglzdHIJeDAsIFt4MjgsICMyNF0KICAgMHgwMDAwMDA3ZjkzZjEzYWYwIDwrMjQwPjoJbW92
CXgwLCAjMHgxZmUgICAgICAgICAgICAgICAgIAkvLyAjNTEwCiAgIDB4MDAwMDAwN2Y5M2YxM2Fm
NCA8KzI0ND46CXN0cgl4MjUsIFt4MTksICMyNF0KICAgMHgwMDAwMDA3ZjkzZjEzYWY4IDwrMjQ4
PjoJc3RyYgl3MiwgW3gxOSwgIzE4NF0KICAgMHgwMDAwMDA3ZjkzZjEzYWZjIDwrMjUyPjoJbGRy
CXcxLCBbeDEsICMyODU2XQogICAweDAwMDAwMDdmOTNmMTNiMDAgPCsyNTY+OglzdWIJdzIwLCB3
MSwgIzB4MQogICAweDAwMDAwMDdmOTNmMTNiMDQgPCsyNjA+OgljYm56CXcxLCAweDdmOTNmMTNi
NzQgPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSszNzI+
CiAgIDB4MDAwMDAwN2Y5M2YxM2IwOCA8KzI2ND46CWIJMHg3ZjkzZjEzZGYwIDxfWk4zSlNDMTFT
bG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrMTAwOD4KICAgMHgwMDAwMDA3
ZjkzZjEzYjBjIDwrMjY4PjoJY21wCXcwLCAjMHgxCiAgIDB4MDAwMDAwN2Y5M2YxM2IxMCA8KzI3
Mj46CWIuZXEJMHg3ZjkzZjEzYzYwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEz
TW9ub3RvbmljVGltZUUrNjA4PiAgLy8gYi5ub25lCiAgIDB4MDAwMDAwN2Y5M2YxM2IxNCA8KzI3
Nj46CWxkcgl4MCwgW3gxOSwgIzgwXQogICAweDAwMDAwMDdmOTNmMTNiMTggPCsyODA+OglsZHIJ
dzIsIFt4MjhdCiAgIDB4MDAwMDAwN2Y5M2YxM2IxYyA8KzI4ND46CXN1Ygl4MSwgeDAsICMweDQw
CiAgIDB4MDAwMDAwN2Y5M2YxM2IyMCA8KzI4OD46CWFuZAl3MiwgdzIsICMweDdmZmZmZmZmCiAg
IDB4MDAwMDAwN2Y5M2YxM2IyNCA8KzI5Mj46CWxkcgl4MCwgW3gwLCAjMTg0XQogICAweDAwMDAw
MDdmOTNmMTNiMjggPCsyOTY+Ogl1YmZ4CXgzLCB4MiwgIzUsICMyNgogICAweDAwMDAwMDdmOTNm
MTNiMmMgPCszMDA+OgljbXAJeDMsIHgwCiAgIDB4MDAwMDAwN2Y5M2YxM2IzMCA8KzMwND46CWIu
Y3MJMHg3ZjkzZjEzZWI4IDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3Rv
bmljVGltZUUrMTIwOD4gIC8vIGIuaHMsIGIubmxhc3QKICAgMHgwMDAwMDA3ZjkzZjEzYjM0IDwr
MzA4PjoJbGRyCXg0LCBbeDEsICMyMzJdCiAgIDB4MDAwMDAwN2Y5M2YxM2IzOCA8KzMxMj46CW1v
dgl4MCwgeDI4CiAgIDB4MDAwMDAwN2Y5M2YxM2IzYyA8KzMxNj46CW1vdgl4MSwgeDE5CiAgIDB4
MDAwMDAwN2Y5M2YxM2I0MCA8KzMyMD46CWxkcgl4MywgW3g0LCB4MywgbHNsICMzXQogICAweDAw
MDAwMDdmOTNmMTNiNDQgPCszMjQ+Ogllb3IJeDIsIHgzLCB4MiwgbHNsICM0OAo9PiAweDAwMDAw
MDdmOTNmMTNiNDggPCszMjg+OglsZHIJeDIsIFt4MiwgIzY0XQogICAweDAwMDAwMDdmOTNmMTNi
NGMgPCszMzI+OglsZHIJeDIsIFt4MiwgIzIwOF0KICAgMHgwMDAwMDA3ZjkzZjEzYjUwIDwrMzM2
PjoJYmxyCXgyCiAgIDB4MDAwMDAwN2Y5M2YxM2I1NCA8KzM0MD46CWxkcgl4MCwgW3gxOSwgIzE2
OF0KICAgMHgwMDAwMDA3ZjkzZjEzYjU4IDwrMzQ0PjoJY2Juegl4MCwgMHg3ZjkzZjEzYmJjIDxf
Wk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrNDQ0PgogICAw
eDAwMDAwMDdmOTNmMTNiNWMgPCszNDg+OglsZHIJeDAsIFt4MTksICMyNF0KICAgMHgwMDAwMDA3
ZjkzZjEzYjYwIDwrMzUyPjoJc3RyCXh6ciwgW3gxOSwgIzE3Nl0KICAgMHgwMDAwMDA3ZjkzZjEz
YjY0IDwrMzU2PjoJY2J6CXgwLCAweDdmOTNmMTNiZTAgPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRy
YWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSs0ODA+CiAgIDB4MDAwMDAwN2Y5M2YxM2I2OCA8KzM2
MD46CXN1Ygl3MjAsIHcyMCwgIzB4MQogICAweDAwMDAwMDdmOTNmMTNiNmMgPCszNjQ+OgljbW4J
dzIwLCAjMHgxCiAgIDB4MDAwMDAwN2Y5M2YxM2I3MCA8KzM2OD46CWIuZXEJMHg3ZjkzZjEzYmUw
IDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrNDgwPiAg
Ly8gYi5ub25lCiAgIDB4MDAwMDAwN2Y5M2YxM2I3NCA8KzM3Mj46CWxkcgl4MSwgW3gxOSwgIzhd
CiAgIDB4MDAwMDAwN2Y5M2YxM2I3OCA8KzM3Nj46CXN1Ygl4MCwgeDAsICMweDEKICAgMHgwMDAw
MDA3ZjkzZjEzYjdjIDwrMzgwPjoJc3RyCXgwLCBbeDE5LCAjMjRdCiAgIDB4MDAwMDAwN2Y5M2Yx
M2I4MCA8KzM4ND46CWFkZAl4MCwgeDEsIHgwLCBsc2wgIzMKICAgMHgwMDAwMDA3ZjkzZjEzYjg0
IDwrMzg4PjoJbGRyCXgyOCwgW3gwLCAjMTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2I4OCA8KzM5Mj46
CXN0cgl4MjgsIFt4MTksICMxNzZdCiAgIDB4MDAwMDAwN2Y5M2YxM2I4YyA8KzM5Nj46CXN0cmIJ
d3pyLCBbeDI4LCAjN10KICAgMHgwMDAwMDA3ZjkzZjEzYjkwIDwrNDAwPjoJZG1iCWlzaAogICAw
eDAwMDAwMDdmOTNmMTNiOTQgPCs0MDQ+OglsZHJiCXcwLCBbeDI4LCAjNV0KICAgMHgwMDAwMDA3
ZjkzZjEzYjk4IDwrNDA4PjoJY21wCXcwLCAjMHgxNwogICAweDAwMDAwMDdmOTNmMTNiOWMgPCs0
MTI+OgliLmVxCTB4N2Y5M2YxM2M1MCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYx
M01vbm90b25pY1RpbWVFKzU5Mj4gIC8vIGIubm9uZQogICAweDAwMDAwMDdmOTNmMTNiYTAgPCs0
MTY+OgljbXAJdzAsICMweDIzCiAgIDB4MDAwMDAwN2Y5M2YxM2JhNCA8KzQyMD46CWIubmUJMHg3
ZjkzZjEzYjBjIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGlt
ZUUrMjY4PiAgLy8gYi5hbnkKICAgMHgwMDAwMDA3ZjkzZjEzYmE4IDwrNDI0PjoJbW92CXgwLCB4
MjgKICAgMHgwMDAwMDA3ZjkzZjEzYmFjIDwrNDI4PjoJbW92CXgxLCB4MTkKICAgMHgwMDAwMDA3
ZjkzZjEzYmIwIDwrNDMyPjoJYmwJMHg3Zjk0MzE0MjUwIDxfWk4zSlNDOEpTT2JqZWN0MTN2aXNp
dENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRT4KICAgMHgwMDAwMDA3Zjkz
ZjEzYmI0IDwrNDM2PjoJbGRyCXgwLCBbeDE5LCAjMTY4XQogICAweDAwMDAwMDdmOTNmMTNiYjgg
PCs0NDA+OgljYnoJeDAsIDB4N2Y5M2YxM2I1YyA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5F
TjNXVEYxM01vbm90b25pY1RpbWVFKzM0OD4KICAgMHgwMDAwMDA3ZjkzZjEzYmJjIDwrNDQ0PjoJ
bGRyYgl3MSwgW3gxOSwgIzE4NF0KICAgMHgwMDAwMDA3ZjkzZjEzYmMwIDwrNDQ4PjoJY2J6CXcx
LCAweDdmOTNmMTNiNWMgPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9u
aWNUaW1lRSszNDg+CiAgIDB4MDAwMDAwN2Y5M2YxM2JjNCA8KzQ1Mj46CWxkcgl4MiwgW3gwXQog
ICAweDAwMDAwMDdmOTNmMTNiYzggPCs0NTY+Ogltb3YJeDEsIHgyOAogICAweDAwMDAwMDdmOTNm
MTNiY2MgPCs0NjA+OglsZHIJeDIsIFt4MiwgIzE2XQogICAweDAwMDAwMDdmOTNmMTNiZDAgPCs0
NjQ+OglibHIJeDIKICAgMHgwMDAwMDA3ZjkzZjEzYmQ0IDwrNDY4PjoJc3RyCXh6ciwgW3gxOSwg
IzE3Nl0KICAgMHgwMDAwMDA3ZjkzZjEzYmQ4IDwrNDcyPjoJbGRyCXgwLCBbeDE5LCAjMjRdCiAg
IDB4MDAwMDAwN2Y5M2YxM2JkYyA8KzQ3Nj46CWNibnoJeDAsIDB4N2Y5M2YxM2I2OCA8X1pOM0pT
QzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzM2MD4KICAgMHgwMDAw
MDA3ZjkzZjEzYmUwIDwrNDgwPjoJbGRyYgl3MCwgW3gxOSwgIzE4NF0KICAgMHgwMDAwMDA3Zjkz
ZjEzYmU0IDwrNDg0PjoJY2Juegl3MCwgMHg3ZjkzZjEzZGYwIDxfWk4zSlNDMTFTbG90VmlzaXRv
cjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrMTAwOD4KICAgMHgwMDAwMDA3ZjkzZjEzYmU4
IDwrNDg4PjoJbGRyYgl3MCwgW3gyMV0KICAgMHgwMDAwMDA3ZjkzZjEzYmVjIDwrNDkyPjoJdGJu
egl3MCwgIzEsIDB4N2Y5M2YxM2RkMCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYx
M01vbm90b25pY1RpbWVFKzk3Nj4KICAgMHgwMDAwMDA3ZjkzZjEzYmYwIDwrNDk2PjoJbW92CXgw
LCB4MTkKICAgMHgwMDAwMDA3ZjkzZjEzYmY0IDwrNTAwPjoJYmwJMHg3ZjkzZjEyYTIwIDxfWk4z
SlNDMTFTbG90VmlzaXRvcjE5ZG9uYXRlS25vd25QYXJhbGxlbEV2PgogICAweDAwMDAwMDdmOTNm
MTNiZjggPCs1MDQ+Ogltb3YJdzIwLCAjMHgxICAgICAgICAgICAgICAgICAgIAkvLyAjMQogICAw
eDAwMDAwMDdmOTNmMTNiZmMgPCs1MDg+Ogltb3YJeDAsIHgyMwogICAweDAwMDAwMDdmOTNmMTNj
MDAgPCs1MTI+OglzdHIJZDgsIFtzcCwgIzEzNl0KICAgMHgwMDAwMDA3ZjkzZjEzYzA0IDwrNTE2
PjoJc3RyCXcyMCwgW3NwLCAjMTQ0XQogICAweDAwMDAwMDdmOTNmMTNjMDggPCs1MjA+OglibAkw
eDdmOTQ4M2QzZTAgPF9aTjNXVEYxMGhhc0VsYXBzZWRFUktOU18yNFRpbWVXaXRoRHluYW1pY0Ns
b2NrVHlwZUU+CiAgIDB4MDAwMDAwN2Y5M2YxM2MwYyA8KzUyND46CXRzdAl3MCwgIzB4ZmYKICAg
MHgwMDAwMDA3ZjkzZjEzYzEwIDwrNTI4PjoJYi5lcQkweDdmOTNmMTNhOWMgPF9aTjNKU0MxMVNs
b3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSsxNTY+ICAvLyBiLm5vbmUKICAg
MHgwMDAwMDA3ZjkzZjEzYzE0IDwrNTMyPjoJbGRyYgl3MCwgW3NwLCAjMTI4XQogICAweDAwMDAw
MDdmOTNmMTNjMTggPCs1MzY+OgljYm56CXcwLCAweDdmOTNmMTNlNjQgPF9aTjNKU0MxMVNsb3RW
aXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSsxMTI0PgogICAweDAwMDAwMDdmOTNm
MTNjMWMgPCs1NDA+OglsZHIJeDI2LCBbeDI2LCAjMTUyOF0KICAgMHgwMDAwMDA3ZjkzZjEzYzIw
IDwrNTQ0PjoJbGRyCXgxLCBbc3AsICMxNTJdCiAgIDB4MDAwMDAwN2Y5M2YxM2MyNCA8KzU0OD46
CWxkcgl4MCwgW3gyNl0KICAgMHgwMDAwMDA3ZjkzZjEzYzI4IDwrNTUyPjoJZW9yCXgwLCB4MSwg
eDAKICAgMHgwMDAwMDA3ZjkzZjEzYzJjIDwrNTU2PjoJY2Juegl4MCwgMHg3ZjkzZjEzZWE0IDxf
Wk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrMTE4OD4KICAg
MHgwMDAwMDA3ZjkzZjEzYzMwIDwrNTYwPjoJbGRwCXgxOSwgeDIwLCBbc3AsICMxNl0KICAgMHgw
MDAwMDA3ZjkzZjEzYzM0IDwrNTY0PjoJbGRwCXgyMSwgeDIyLCBbc3AsICMzMl0KICAgMHgwMDAw
MDA3ZjkzZjEzYzM4IDwrNTY4PjoJbGRwCXgyMywgeDI0LCBbc3AsICM0OF0KICAgMHgwMDAwMDA3
ZjkzZjEzYzNjIDwrNTcyPjoJbGRwCXgyNSwgeDI2LCBbc3AsICM2NF0KICAgMHgwMDAwMDA3Zjkz
ZjEzYzQwIDwrNTc2PjoJbGRwCXgyNywgeDI4LCBbc3AsICM4MF0KICAgMHgwMDAwMDA3ZjkzZjEz
YzQ0IDwrNTgwPjoJbGRyCWQ4LCBbc3AsICM5Nl0KICAgMHgwMDAwMDA3ZjkzZjEzYzQ4IDwrNTg0
PjoJbGRwCXgyOSwgeDMwLCBbc3BdLCAjMTYwCiAgIDB4MDAwMDAwN2Y5M2YxM2M0YyA8KzU4OD46
CXJldAogICAweDAwMDAwMDdmOTNmMTNjNTAgPCs1OTI+Ogltb3YJeDEsIHgxOQogICAweDAwMDAw
MDdmOTNmMTNjNTQgPCs1OTY+Ogltb3YJeDAsIHgyOAogICAweDAwMDAwMDdmOTNmMTNjNTggPCs2
MDA+OglibAkweDdmOTQzMTNhZTAgPF9aTjNKU0MxM0pTRmluYWxPYmplY3QxM3Zpc2l0Q2hpbGRy
ZW5FUE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0b3JFPgogICAweDAwMDAwMDdmOTNmMTNjNWMg
PCs2MDQ+OgliCTB4N2Y5M2YxM2I1NCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYx
M01vbm90b25pY1RpbWVFKzM0MD4KICAgMHgwMDAwMDA3ZjkzZjEzYzYwIDwrNjA4PjoJbW92CXgx
LCB4MTkKICAgMHgwMDAwMDA3ZjkzZjEzYzY0IDwrNjEyPjoJbW92CXgwLCB4MjgKICAgMHgwMDAw
MDA3ZjkzZjEzYzY4IDwrNjE2PjoJYmwJMHg3Zjk0MzIwY2IwIDxfWk4zSlNDOEpTU3RyaW5nMTN2
aXNpdENoaWxkcmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRT4KICAgMHgwMDAwMDA3
ZjkzZjEzYzZjIDwrNjIwPjoJYgkweDdmOTNmMTNiNTQgPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRy
YWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSszNDA+CiAgIDB4MDAwMDAwN2Y5M2YxM2M3MCA8KzYy
ND46CWFkZAl4MjAsIHgxOSwgIzB4MjgKICAgMHgwMDAwMDA3ZjkzZjEzYzc0IDwrNjI4PjoJbGRy
CXgwLCBbeDIwLCAjMTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2M3OCA8KzYzMj46CWNibnoJeDAsIDB4
N2Y5M2YxM2UzMCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1Rp
bWVFKzEwNzI+CiAgIDB4MDAwMDAwN2Y5M2YxM2M3YyA8KzYzNj46CWxkcgl4MCwgW3gxOSwgIzQw
XQogICAweDAwMDAwMDdmOTNmMTNjODAgPCs2NDA+OglsZHIJeDEsIFt4MCwgIzhdCiAgIDB4MDAw
MDAwN2Y5M2YxM2M4NCA8KzY0ND46CWNiegl4MSwgMHg3ZjkzZjEzZDljIDxfWk4zSlNDMTFTbG90
VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrOTI0PgogICAweDAwMDAwMDdmOTNm
MTNjODggPCs2NDg+OglsZHIJeDIsIFt4MF0KICAgMHgwMDAwMDA3ZjkzZjEzYzhjIDwrNjUyPjoJ
Y2J6CXgyLCAweDdmOTNmMTNlODggPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNN
b25vdG9uaWNUaW1lRSsxMTYwPgogICAweDAwMDAwMDdmOTNmMTNjOTAgPCs2NTY+OglzdHIJeDEs
IFt4MiwgIzhdCiAgIDB4MDAwMDAwN2Y5M2YxM2M5NCA8KzY2MD46CWxkcAl4MiwgeDEsIFt4MF0K
ICAgMHgwMDAwMDA3ZjkzZjEzYzk4IDwrNjY0PjoJY2J6CXgxLCAweDdmOTNmMTNlNWMgPF9aTjNK
U0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSsxMTE2PgogICAweDAw
MDAwMDdmOTNmMTNjOWMgPCs2Njg+OglzdHIJeDIsIFt4MV0KICAgMHgwMDAwMDA3ZjkzZjEzY2Ew
IDwrNjcyPjoJYmwJMHg3Zjk0ODE5OWUwIDxfWk4zV1RGOGZhc3RGcmVlRVB2PgogICAweDAwMDAw
MDdmOTNmMTNjYTQgPCs2NzY+OglsZHIJeDIsIFt4MjAsICMyNF0KICAgMHgwMDAwMDA3ZjkzZjEz
Y2E4IDwrNjgwPjoJbW92CXgwLCAjMHgxZmUgICAgICAgICAgICAgICAgIAkvLyAjNTEwCiAgIDB4
MDAwMDAwN2Y5M2YxM2NhYyA8KzY4ND46CWxkcgl4MSwgW3gyMiwgIzIwMTZdCiAgIDB4MDAwMDAw
N2Y5M2YxM2NiMCA8KzY4OD46CXN1Ygl4MiwgeDIsICMweDEKICAgMHgwMDAwMDA3ZjkzZjEzY2I0
IDwrNjkyPjoJc3RyCXgyLCBbeDIwLCAjMjRdCiAgIDB4MDAwMDAwN2Y5M2YxM2NiOCA8KzY5Nj46
CXN0cgl4MjUsIFt4MTksICM1Nl0KICAgMHgwMDAwMDA3ZjkzZjEzY2JjIDwrNzAwPjoJc3RyYgl3
enIsIFt4MTksICMxODRdCiAgIDB4MDAwMDAwN2Y5M2YxM2NjMCA8KzcwND46CWxkcgl3MSwgW3gx
LCAjMjg1Nl0KICAgMHgwMDAwMDA3ZjkzZjEzY2M0IDwrNzA4PjoJc3ViCXcyOCwgdzEsICMweDEK
ICAgMHgwMDAwMDA3ZjkzZjEzY2M4IDwrNzEyPjoJY2Juegl3MSwgMHg3ZjkzZjEzZDM4IDxfWk4z
SlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrODI0PgogICAweDAw
MDAwMDdmOTNmMTNjY2MgPCs3MTY+OgliCTB4N2Y5M2YxM2JlOCA8X1pOM0pTQzExU2xvdFZpc2l0
b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzQ4OD4KICAgMHgwMDAwMDA3ZjkzZjEzY2Qw
IDwrNzIwPjoJY21wCXcwLCAjMHgxCiAgIDB4MDAwMDAwN2Y5M2YxM2NkNCA8KzcyND46CWIuZXEJ
MHg3ZjkzZjEzZTIwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3Rvbmlj
VGltZUUrMTA1Nj4gIC8vIGIubm9uZQogICAweDAwMDAwMDdmOTNmMTNjZDggPCs3Mjg+OglsZHIJ
eDAsIFt4MTksICM4MF0KICAgMHgwMDAwMDA3ZjkzZjEzY2RjIDwrNzMyPjoJbGRyCXcyLCBbeDIw
XQogICAweDAwMDAwMDdmOTNmMTNjZTAgPCs3MzY+OglzdWIJeDEsIHgwLCAjMHg0MAogICAweDAw
MDAwMDdmOTNmMTNjZTQgPCs3NDA+OglhbmQJdzIsIHcyLCAjMHg3ZmZmZmZmZgogICAweDAwMDAw
MDdmOTNmMTNjZTggPCs3NDQ+OglsZHIJeDAsIFt4MCwgIzE4NF0KICAgMHgwMDAwMDA3ZjkzZjEz
Y2VjIDwrNzQ4PjoJdWJmeAl4MywgeDIsICM1LCAjMjYKICAgMHgwMDAwMDA3ZjkzZjEzY2YwIDwr
NzUyPjoJY21wCXgzLCB4MAogICAweDAwMDAwMDdmOTNmMTNjZjQgPCs3NTY+OgliLmNzCTB4N2Y5
M2YxM2ViOCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVF
KzEyMDg+ICAvLyBiLmhzLCBiLm5sYXN0CiAgIDB4MDAwMDAwN2Y5M2YxM2NmOCA8Kzc2MD46CWxk
cgl4NCwgW3gxLCAjMjMyXQogICAweDAwMDAwMDdmOTNmMTNjZmMgPCs3NjQ+Ogltb3YJeDAsIHgy
MAogICAweDAwMDAwMDdmOTNmMTNkMDAgPCs3Njg+Ogltb3YJeDEsIHgxOQogICAweDAwMDAwMDdm
OTNmMTNkMDQgPCs3NzI+OglsZHIJeDMsIFt4NCwgeDMsIGxzbCAjM10KICAgMHgwMDAwMDA3Zjkz
ZjEzZDA4IDwrNzc2PjoJZW9yCXgyLCB4MywgeDIsIGxzbCAjNDgKICAgMHgwMDAwMDA3ZjkzZjEz
ZDBjIDwrNzgwPjoJbGRyCXgyLCBbeDIsICM2NF0KICAgMHgwMDAwMDA3ZjkzZjEzZDEwIDwrNzg0
PjoJbGRyCXgyLCBbeDIsICMyMDhdCiAgIDB4MDAwMDAwN2Y5M2YxM2QxNCA8Kzc4OD46CWJscgl4
MgogICAweDAwMDAwMDdmOTNmMTNkMTggPCs3OTI+OglsZHIJeDAsIFt4MTksICMxNjhdCiAgIDB4
MDAwMDAwN2Y5M2YxM2QxYyA8Kzc5Nj46CWNibnoJeDAsIDB4N2Y5M2YxM2Q4MCA8X1pOM0pTQzEx
U2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzg5Nj4KICAgMHgwMDAwMDA3
ZjkzZjEzZDIwIDwrODAwPjoJbGRyCXgwLCBbeDE5LCAjNTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2Qy
NCA8KzgwND46CXN0cgl4enIsIFt4MTksICMxNzZdCiAgIDB4MDAwMDAwN2Y5M2YxM2QyOCA8Kzgw
OD46CWNiegl4MCwgMHg3ZjkzZjEzYmUwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dU
RjEzTW9ub3RvbmljVGltZUUrNDgwPgogICAweDAwMDAwMDdmOTNmMTNkMmMgPCs4MTI+OglzdWIJ
dzI4LCB3MjgsICMweDEKICAgMHgwMDAwMDA3ZjkzZjEzZDMwIDwrODE2PjoJY21uCXcyOCwgIzB4
MQogICAweDAwMDAwMDdmOTNmMTNkMzQgPCs4MjA+OgliLmVxCTB4N2Y5M2YxM2JlMCA8X1pOM0pT
QzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzQ4MD4gIC8vIGIubm9u
ZQogICAweDAwMDAwMDdmOTNmMTNkMzggPCs4MjQ+OglsZHIJeDEsIFt4MTksICM0MF0KICAgMHgw
MDAwMDA3ZjkzZjEzZDNjIDwrODI4PjoJc3ViCXgwLCB4MCwgIzB4MQogICAweDAwMDAwMDdmOTNm
MTNkNDAgPCs4MzI+OglzdHIJeDAsIFt4MTksICM1Nl0KICAgMHgwMDAwMDA3ZjkzZjEzZDQ0IDwr
ODM2PjoJYWRkCXgwLCB4MSwgeDAsIGxzbCAjMwogICAweDAwMDAwMDdmOTNmMTNkNDggPCs4NDA+
OglsZHIJeDIwLCBbeDAsICMxNl0KICAgMHgwMDAwMDA3ZjkzZjEzZDRjIDwrODQ0PjoJc3RyCXgy
MCwgW3gxOSwgIzE3Nl0KICAgMHgwMDAwMDA3ZjkzZjEzZDUwIDwrODQ4PjoJc3RyYgl3enIsIFt4
MjAsICM3XQogICAweDAwMDAwMDdmOTNmMTNkNTQgPCs4NTI+OglkbWIJaXNoCiAgIDB4MDAwMDAw
N2Y5M2YxM2Q1OCA8Kzg1Nj46CWxkcmIJdzAsIFt4MjAsICM1XQogICAweDAwMDAwMDdmOTNmMTNk
NWMgPCs4NjA+OgljbXAJdzAsICMweDE3CiAgIDB4MDAwMDAwN2Y5M2YxM2Q2MCA8Kzg2ND46CWIu
ZXEJMHg3ZjkzZjEzZTEwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3Rv
bmljVGltZUUrMTA0MD4gIC8vIGIubm9uZQogICAweDAwMDAwMDdmOTNmMTNkNjQgPCs4Njg+Oglj
bXAJdzAsICMweDIzCiAgIDB4MDAwMDAwN2Y5M2YxM2Q2OCA8Kzg3Mj46CWIubmUJMHg3ZjkzZjEz
Y2QwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrNzIw
PiAgLy8gYi5hbnkKICAgMHgwMDAwMDA3ZjkzZjEzZDZjIDwrODc2PjoJbW92CXgwLCB4MjAKICAg
MHgwMDAwMDA3ZjkzZjEzZDcwIDwrODgwPjoJbW92CXgxLCB4MTkKICAgMHgwMDAwMDA3ZjkzZjEz
ZDc0IDwrODg0PjoJYmwJMHg3Zjk0MzE0MjUwIDxfWk4zSlNDOEpTT2JqZWN0MTN2aXNpdENoaWxk
cmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRT4KICAgMHgwMDAwMDA3ZjkzZjEzZDc4
IDwrODg4PjoJbGRyCXgwLCBbeDE5LCAjMTY4XQogICAweDAwMDAwMDdmOTNmMTNkN2MgPCs4OTI+
OgljYnoJeDAsIDB4N2Y5M2YxM2QyMCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYx
M01vbm90b25pY1RpbWVFKzgwMD4KICAgMHgwMDAwMDA3ZjkzZjEzZDgwIDwrODk2PjoJbGRyYgl3
MSwgW3gxOSwgIzE4NF0KICAgMHgwMDAwMDA3ZjkzZjEzZDg0IDwrOTAwPjoJY2J6CXcxLCAweDdm
OTNmMTNkMjAgPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1l
RSs4MDA+CiAgIDB4MDAwMDAwN2Y5M2YxM2Q4OCA8KzkwND46CWxkcgl4MiwgW3gwXQogICAweDAw
MDAwMDdmOTNmMTNkOGMgPCs5MDg+Ogltb3YJeDEsIHgyMAogICAweDAwMDAwMDdmOTNmMTNkOTAg
PCs5MTI+OglsZHIJeDIsIFt4MiwgIzE2XQogICAweDAwMDAwMDdmOTNmMTNkOTQgPCs5MTY+Ogli
bHIJeDIKICAgMHgwMDAwMDA3ZjkzZjEzZDk4IDwrOTIwPjoJYgkweDdmOTNmMTNkMjAgPF9aTjNK
U0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSs4MDA+CiAgIDB4MDAw
MDAwN2Y5M2YxM2Q5YyA8KzkyND46CWxkcmIJdzAsIFt4MTksICMxODRdCiAgIDB4MDAwMDAwN2Y5
M2YxM2RhMCA8KzkyOD46CWNiegl3MCwgMHg3ZjkzZjEzYzE0IDxfWk4zSlNDMTFTbG90VmlzaXRv
cjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrNTMyPgogICAweDAwMDAwMDdmOTNmMTNkYTQg
PCs5MzI+OglsZHJiCXcwLCBbeDE5LCAjMTUyXQogICAweDAwMDAwMDdmOTNmMTNkYTggPCs5MzY+
Ogltb3YJdzI4LCAjMHgwICAgICAgICAgICAgICAgICAgIAkvLyAjMAogICAweDAwMDAwMDdmOTNm
MTNkYWMgPCs5NDA+OgljYm56CXcwLCAweDdmOTNmMTNkZmMgPF9aTjNKU0MxMVNsb3RWaXNpdG9y
NWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSsxMDIwPgogICAweDAwMDAwMDdmOTNmMTNkYjAg
PCs5NDQ+OglhZGQJeDIwLCB4MTksICMweDk4CiAgIDB4MDAwMDAwN2Y5M2YxM2RiNCA8Kzk0OD46
CWxkcgl4MSwgW3gyMCwgIzhdCiAgIDB4MDAwMDAwN2Y5M2YxM2RiOCA8Kzk1Mj46CWNibnoJeDEs
IDB4N2Y5M2YxM2U1MCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25p
Y1RpbWVFKzExMDQ+CiAgIDB4MDAwMDAwN2Y5M2YxM2RiYyA8Kzk1Nj46CXN0cmIJd3pyLCBbeDE5
LCAjMTUyXQogICAweDAwMDAwMDdmOTNmMTNkYzAgPCs5NjA+OglzdHIJeHpyLCBbeDIwLCAjOF0K
ICAgMHgwMDAwMDA3ZjkzZjEzZGM0IDwrOTY0PjoJY2J6CXcyOCwgMHg3ZjkzZjEzYzE0IDxfWk4z
SlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrNTMyPgogICAweDAw
MDAwMDdmOTNmMTNkYzggPCs5Njg+OglsZHJiCXcwLCBbeDIxXQogICAweDAwMDAwMDdmOTNmMTNk
Y2MgPCs5NzI+Ogl0YnoJdzAsICMxLCAweDdmOTNmMTNiZjAgPF9aTjNKU0MxMVNsb3RWaXNpdG9y
NWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSs0OTY+CiAgIDB4MDAwMDAwN2Y5M2YxM2RkMCA8
Kzk3Nj46CW1vdgl4MCwgeDIxCiAgIDB4MDAwMDAwN2Y5M2YxM2RkNCA8Kzk4MD46CWJsCTB4N2Y5
NDgyNTcwMCA8X1pOM1dURjRMb2NrMTNzYWZlcG9pbnRTbG93RXY+CiAgIDB4MDAwMDAwN2Y5M2Yx
M2RkOCA8Kzk4ND46CWIJMHg3ZjkzZjEzYmYwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVO
M1dURjEzTW9ub3RvbmljVGltZUUrNDk2PgogICAweDAwMDAwMDdmOTNmMTNkZGMgPCs5ODg+Oglz
dHJiCXcyMCwgW3gxOSwgIzE4NF0KICAgMHgwMDAwMDA3ZjkzZjEzZGUwIDwrOTkyPjoJbGRyCXcx
LCBbeDI3LCAjMjg1Nl0KICAgMHgwMDAwMDA3ZjkzZjEzZGU0IDwrOTk2PjoJc3ViCXcyMCwgdzEs
ICMweDEKICAgMHgwMDAwMDA3ZjkzZjEzZGU4IDwrMTAwMD46CWNibnoJdzEsIDB4N2Y5M2YxM2I3
NCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzM3Mj4K
ICAgMHgwMDAwMDA3ZjkzZjEzZGVjIDwrMTAwND46CW5vcAogICAweDAwMDAwMDdmOTNmMTNkZjAg
PCsxMDA4PjoJbGRyYgl3MCwgW3gxOSwgIzE1Ml0KICAgMHgwMDAwMDA3ZjkzZjEzZGY0IDwrMTAx
Mj46CW1vdgl3MjgsICMweDEgICAgICAgICAgICAgICAgICAgCS8vICMxCiAgIDB4MDAwMDAwN2Y5
M2YxM2RmOCA8KzEwMTY+OgljYnoJdzAsIDB4N2Y5M2YxM2RiMCA8X1pOM0pTQzExU2xvdFZpc2l0
b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzk0ND4KICAgMHgwMDAwMDA3ZjkzZjEzZGZj
IDwrMTAyMD46CWxkcgl4MCwgW3gxOSwgIzgwXQogICAweDAwMDAwMDdmOTNmMTNlMDAgPCsxMDI0
PjoJbW92CXgxLCAjMHhmZmZmZmZmZmZmZmZmZmZmICAgIAkvLyAjLTEKICAgMHgwMDAwMDA3Zjkz
ZjEzZTA0IDwrMTAyOD46CWFkZAl4MjAsIHgxOSwgIzB4OTgKICAgMHgwMDAwMDA3ZjkzZjEzZTA4
IDwrMTAzMj46CWJsCTB4N2Y5M2VlMzE3MCA8X1pOM0pTQzRIZWFwMjRyZXBvcnRFeHRyYU1lbW9y
eVZpc2l0ZWRFbT4KICAgMHgwMDAwMDA3ZjkzZjEzZTBjIDwrMTAzNj46CWIJMHg3ZjkzZjEzZGJj
IDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUrOTU2Pgog
ICAweDAwMDAwMDdmOTNmMTNlMTAgPCsxMDQwPjoJbW92CXgxLCB4MTkKICAgMHgwMDAwMDA3Zjkz
ZjEzZTE0IDwrMTA0ND46CW1vdgl4MCwgeDIwCiAgIDB4MDAwMDAwN2Y5M2YxM2UxOCA8KzEwNDg+
OglibAkweDdmOTQzMTNhZTAgPF9aTjNKU0MxM0pTRmluYWxPYmplY3QxM3Zpc2l0Q2hpbGRyZW5F
UE5TXzZKU0NlbGxFUk5TXzExU2xvdFZpc2l0b3JFPgogICAweDAwMDAwMDdmOTNmMTNlMWMgPCsx
MDUyPjoJYgkweDdmOTNmMTNkMTggPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNN
b25vdG9uaWNUaW1lRSs3OTI+CiAgIDB4MDAwMDAwN2Y5M2YxM2UyMCA8KzEwNTY+Ogltb3YJeDEs
IHgxOQogICAweDAwMDAwMDdmOTNmMTNlMjQgPCsxMDYwPjoJbW92CXgwLCB4MjAKICAgMHgwMDAw
MDA3ZjkzZjEzZTI4IDwrMTA2ND46CWJsCTB4N2Y5NDMyMGNiMCA8X1pOM0pTQzhKU1N0cmluZzEz
dmlzaXRDaGlsZHJlbkVQTlNfNkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckU+CiAgIDB4MDAwMDAw
N2Y5M2YxM2UyYyA8KzEwNjg+OgliCTB4N2Y5M2YxM2QxOCA8X1pOM0pTQzExU2xvdFZpc2l0b3I1
ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzc5Mj4KICAgMHgwMDAwMDA3ZjkzZjEzZTMwIDwr
MTA3Mj46CWxkcgl4MSwgW3gyMiwgIzIwMTZdCiAgIDB4MDAwMDAwN2Y5M2YxM2UzNCA8KzEwNzY+
OglzdHJiCXd6ciwgW3gxOSwgIzE4NF0KICAgMHgwMDAwMDA3ZjkzZjEzZTM4IDwrMTA4MD46CWxk
cgl3MSwgW3gxLCAjMjg1Nl0KICAgMHgwMDAwMDA3ZjkzZjEzZTNjIDwrMTA4ND46CWIJMHg3Zjkz
ZjEzY2M0IDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGltZUUr
NzA4PgogICAweDAwMDAwMDdmOTNmMTNlNDAgPCsxMDg4PjoJc3RyCXgyLCBbeDE5LCAjMTZdCiAg
IDB4MDAwMDAwN2Y5M2YxM2U0NCA8KzEwOTI+OgliCTB4N2Y5M2YxM2FkOCA8X1pOM0pTQzExU2xv
dFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzIxNj4KICAgMHgwMDAwMDA3Zjkz
ZjEzZTQ4IDwrMTA5Nj46CXN0cgl4MSwgW3gxOSwgIzhdCiAgIDB4MDAwMDAwN2Y5M2YxM2U0YyA8
KzExMDA+OgliCTB4N2Y5M2YxM2FjYyA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJhaW5FTjNXVEYx
M01vbm90b25pY1RpbWVFKzIwND4KICAgMHgwMDAwMDA3ZjkzZjEzZTUwIDwrMTEwND46CWxkcgl4
MCwgW3gxOSwgIzgwXQogICAweDAwMDAwMDdmOTNmMTNlNTQgPCsxMTA4PjoJYmwJMHg3ZjkzZWUz
MTcwIDxfWk4zSlNDNEhlYXAyNHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZEVtPgogICAweDAwMDAw
MDdmOTNmMTNlNTggPCsxMTEyPjoJYgkweDdmOTNmMTNkYmMgPF9aTjNKU0MxMVNsb3RWaXNpdG9y
NWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSs5NTY+CiAgIDB4MDAwMDAwN2Y5M2YxM2U1YyA8
KzExMTY+OglzdHIJeDIsIFt4MTksICM0OF0KICAgMHgwMDAwMDA3ZjkzZjEzZTYwIDwrMTEyMD46
CWIJMHg3ZjkzZjEzY2EwIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3Rv
bmljVGltZUUrNjcyPgogICAweDAwMDAwMDdmOTNmMTNlNjQgPCsxMTI0PjoJbGRyCXgwLCBbc3As
ICMxMjBdCiAgIDB4MDAwMDAwN2Y5M2YxM2U2OCA8KzExMjg+OglsZHhyYgl3MSwgW3gwXQogICAw
eDAwMDAwMDdmOTNmMTNlNmMgPCsxMTMyPjoJY21wCXcxLCAjMHgxCiAgIDB4MDAwMDAwN2Y5M2Yx
M2U3MCA8KzExMzY+OgliLm5lCTB4N2Y5M2YxM2U3YyA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJh
aW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzExNDg+ICAvLyBiLmFueQogICAweDAwMDAwMDdmOTNm
MTNlNzQgPCsxMTQwPjoJc3RseHJiCXcyLCB3enIsIFt4MF0KICAgMHgwMDAwMDA3ZjkzZjEzZTc4
IDwrMTE0ND46CWNtcAl3MiwgIzB4MAogICAweDAwMDAwMDdmOTNmMTNlN2MgPCsxMTQ4PjoJYi5l
cQkweDdmOTNmMTNjMWMgPF9aTjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9u
aWNUaW1lRSs1NDA+ICAvLyBiLm5vbmUKICAgMHgwMDAwMDA3ZjkzZjEzZTgwIDwrMTE1Mj46CWJs
CTB4N2Y5NDgyNTZlMCA8X1pOM1dURjRMb2NrMTB1bmxvY2tTbG93RXY+CiAgIDB4MDAwMDAwN2Y5
M2YxM2U4NCA8KzExNTY+OgliCTB4N2Y5M2YxM2MxYyA8X1pOM0pTQzExU2xvdFZpc2l0b3I1ZHJh
aW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzU0MD4KICAgMHgwMDAwMDA3ZjkzZjEzZTg4IDwrMTE2
MD46CXN0cgl4MSwgW3gxOSwgIzQwXQogICAweDAwMDAwMDdmOTNmMTNlOGMgPCsxMTY0PjoJbGRw
CXgyLCB4MSwgW3gwXQogICAweDAwMDAwMDdmOTNmMTNlOTAgPCsxMTY4PjoJY2Juegl4MSwgMHg3
ZjkzZjEzYzljIDxfWk4zSlNDMTFTbG90VmlzaXRvcjVkcmFpbkVOM1dURjEzTW9ub3RvbmljVGlt
ZUUrNjY4PgogICAweDAwMDAwMDdmOTNmMTNlOTQgPCsxMTcyPjoJYgkweDdmOTNmMTNlNWMgPF9a
TjNKU0MxMVNsb3RWaXNpdG9yNWRyYWluRU4zV1RGMTNNb25vdG9uaWNUaW1lRSsxMTE2PgogICAw
eDAwMDAwMDdmOTNmMTNlOTggPCsxMTc2PjoJbW92CXgwLCB4MjEKICAgMHgwMDAwMDA3ZjkzZjEz
ZTljIDwrMTE4MD46CWJsCTB4N2Y5NDgyNTZkMCA8X1pOM1dURjRMb2NrOGxvY2tTbG93RXY+CiAg
IDB4MDAwMDAwN2Y5M2YxM2VhMCA8KzExODQ+OgliCTB4N2Y5M2YxM2E2YyA8X1pOM0pTQzExU2xv
dFZpc2l0b3I1ZHJhaW5FTjNXVEYxM01vbm90b25pY1RpbWVFKzEwOD4KICAgMHgwMDAwMDA3Zjkz
ZjEzZWE0IDwrMTE4OD46CWJsCTB4N2Y5MWFhOWJhMCA8X19zdGFja19jaGtfZmFpbEBwbHQ+CiAg
IDB4MDAwMDAwN2Y5M2YxM2VhOCA8KzExOTI+OglhZHJwCXgwLCAweDdmOTRhZDAwMDAKICAgMHgw
MDAwMDA3ZjkzZjEzZWFjIDwrMTE5Nj46CWFkZAl4MCwgeDAsICMweDQxOAogICAweDAwMDAwMDdm
OTNmMTNlYjAgPCsxMjAwPjoJYmwJMHg3ZjkzYzNlY2QwIDxfWk4zV1RGN2RhdGFMb2dJSkE1NV9j
RUVFdkRwUktUXz4KICAgMHgwMDAwMDA3ZjkzZjEzZWI0IDwrMTIwND46CWJsCTB4N2Y5MWFhOGEx
MCA8YWJvcnRAcGx0PgogICAweDAwMDAwMDdmOTNmMTNlYjggPCsxMjA4PjoJYmwJMHg3ZjkxYWE4
YTEwIDxhYm9ydEBwbHQ+CkVuZCBvZiBhc3NlbWJsZXIgZHVtcC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>463598</attachid>
            <date>2022-11-18 00:12:13 -0800</date>
            <delta_ts>2022-11-18 00:12:13 -0800</delta_ts>
            <desc>JS-only test</desc>
            <filename>test.js</filename>
            <type>text/javascript</type>
            <size>13792</size>
            <attacher name="Krzysztof Konopko">kris</attacher>
            
              <data encoding="base64">dmFyIGdsb2JhbCA9IHt9OwoKZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2
ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykgewogICAgdHJ5IHsKICAgICAgICB2
YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7CiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsK
ICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgICByZXR1
cm47CiAgICB9CgogICAgaWYgKGluZm8uZG9uZSkgewogICAgICAgIHJlc29sdmUodmFsdWUpOwog
ICAgfSBlbHNlIHsKICAgICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90
aHJvdyk7CiAgICB9Cn0KCmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7CiAgICByZXR1
cm4gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50
czsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkg
ewogICAgICAgICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7CgogICAgICAgICAg
ICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgewogICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JT
dGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCAibmV4dCIsIHZhbHVlKTsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikgewogICAgICAg
ICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwg
X3Rocm93LCAidGhyb3ciLCBlcnIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBfbmV4dCh1
bmRlZmluZWQpOwogICAgICAgIH0pOwogICAgfTsKfQoKZnVuY3Rpb24gcmVkZWZpbmUoTywga2V5
LCB2YWwpIHsKICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiB2YWwgPT0gJ2Z1bmN0aW9uJzsKICBp
ZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgJ25hbWUnKTsKICBpZiAoT1trZXldID09PSB2YWwpIHJl
dHVybjsKICBpZiAoTyA9PT0gZ2xvYmFsKSB7CiAgICBPW2tleV0gPSB2YWw7CiAgfSBlbHNlIHsK
ICAgIGRlbGV0ZSBPW2tleV07CiAgfQp9Cgp2YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBu
YW1lLCBzb3VyY2UpIHsKICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRzsKICB2YXIg
dGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogZ2xvYmFsW25hbWVdIHx8IChnbG9iYWxbbmFt
ZV0gPSB7fSk7CiAgdmFyIGtleSwgb3duLCBvdXQ7CiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0g
bmFtZTsKICBmb3IgKGtleSBpbiBzb3VyY2UpIHsKICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZQog
ICAgb3duID0gdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7CiAgICAvLyBleHBv
cnQgbmF0aXZlIG9yIHBhc3NlZAogICAgb3V0ID0gKG93biA/IHRhcmdldCA6IHNvdXJjZSlba2V5
XTsKICAgIGlmICh0YXJnZXQpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQpOwogIH0KfTsKCi8v
IHR5cGUgYml0bWFwCiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkCiRleHBvcnQuRyA9IDI7ICAg
Ly8gZ2xvYmFsCiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljCiRleHBvcnQuUCA9IDg7ICAgLy8g
cHJvdG8KJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kCiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcAok
ZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmUKJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1l
dGhvZCBmb3IgYGxpYnJhcnlgCgp2YXIgcnVudGltZUV4cG9ydHMgPSB7fTsKCiEoZnVuY3Rpb24o
Z2xvYmFsKSB7CiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTsKICB2YXIgaGFzT3duID0gT3Au
aGFzT3duUHJvcGVydHk7CiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhh
biB2b2lkIDAuCiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iID8g
U3ltYm9sIDoge307CiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCAi
QEBpdGVyYXRvciI7CiAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lOwog
IC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVk
IGNvZGUpIGFzIGVpdGhlcgogIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVs
ZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC4KICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9y
UnVudGltZSA9IHJ1bnRpbWVFeHBvcnRzOwoKICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVy
Rm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7CiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBv
dXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBp
bnN0YW5jZW9mIEdlbmVyYXRvci4KICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYg
b3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJh
dG9yOwogICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJv
dG90eXBlKTsKICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10p
OwoKICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25z
IG9mIHRoZSAubmV4dCwKICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy4KICAgIGdl
bmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0
KTsKCiAgICByZXR1cm4gZ2VuZXJhdG9yOwogIH0KICBydW50aW1lLndyYXAgPSB3cmFwOwoKICAv
LyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBh
IGNvbXBsZXRpb24KICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxl
dGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGQKICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlv
dXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmUKICAvLyBpbnZva2VkIHdpdGhv
dXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlCiAgLy8g
YWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJl
J3Mgbm8gbmVlZAogIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBl
dmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmcKICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkg
b25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZQogIC8vIGluIGV2ZXJ5
IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRo
ZQogIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0
aW9uIHJlY29yZCwgd2hpY2gKICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxs
eSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuCiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9i
aiwgYXJnKSB7CiAgICB0cnkgewogICAgICByZXR1cm4geyB0eXBlOiAibm9ybWFsIiwgYXJnOiBm
bi5jYWxsKG9iaiwgYXJnKSB9OwogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIHJldHVybiB7IHR5
cGU6ICJ0aHJvdyIsIGFyZzogZXJyIH07CiAgICB9CiAgfQoKICB2YXIgR2VuU3RhdGVTdXNwZW5k
ZWRTdGFydCA9ICJzdXNwZW5kZWRTdGFydCI7CiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQg
PSAic3VzcGVuZGVkWWllbGQiOwogIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9ICJleGVjdXRpbmci
OwogIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9ICJjb21wbGV0ZWQiOwoKICAvLyBSZXR1cm5pbmcg
dGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCiAgLy8g
YnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LgogIHZhciBDb250
aW51ZVNlbnRpbmVsID0ge307CgogIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0
IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZAogIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5
cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvcgogIC8vIG9i
amVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3Vy
ZSB5b3VyCiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdv
IGZ1bmN0aW9ucy4KICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fQogIGZ1bmN0aW9uIEdlbmVyYXRv
ckZ1bmN0aW9uKCkge30KICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9
CgogIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52
aXJvbm1lbnRzIHRoYXQKICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LgogIHZhciBJdGVy
YXRvclByb3RvdHlwZSA9IHt9OwogIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9
IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH07CgogIHZhciBHcCA9IEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9CiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7CiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJv
dG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKICBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9u
OwoKICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVy
biBtZXRob2RzIG9mIHRoZQogIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNp
bmdsZSAuX2ludm9rZSBtZXRob2QuCiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHBy
b3RvdHlwZSkgewogICAgWyJuZXh0IiwgInRocm93IiwgInJldHVybiJdLmZvckVhY2goZnVuY3Rp
b24obWV0aG9kKSB7CiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7CiAg
ICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7CiAgICAgIH07CiAgICB9KTsK
ICB9CgogIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikgewogICAgaWYgKE9iamVjdC5z
ZXRQcm90b3R5cGVPZikgewogICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICB9IGVsc2UgewogICAgICBnZW5GdW4uX19wcm90
b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiAgICB9CiAgICBnZW5GdW4ucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7CiAgICByZXR1cm4gZ2VuRnVuOwogIH07CgogIC8vIE5v
dGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YK
ICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZv
ciB0aGUgdmFsdWUgb2YKICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVy
YXRvci4KIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkg
ewogICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDsKCiAgICByZXR1cm4gZnVu
Y3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7CiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVF
eGVjdXRpbmcpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5
IHJ1bm5pbmciKTsKICAgICAgfQoKICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRl
ZCkgewogICAgICAgIGlmIChtZXRob2QgPT09ICJ0aHJvdyIpIHsKICAgICAgICAgIHRocm93IGFy
ZzsKICAgICAgICB9CgogICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2Yg
dGhlIHNwZWM6CiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9y
ZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZQogICAgICAgIHJldHVybiBkb25l
UmVzdWx0KCk7CiAgICAgIH0KCiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kOwogICAgICBj
b250ZXh0LmFyZyA9IGFyZzsKCiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgaWYgKGNvbnRl
eHQubWV0aG9kID09PSAibmV4dCIpIHsKICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2Vu
dCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwncwogICAgICAgICAgLy8gZnVuY3Rpb24uc2Vu
dCBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQg
PSBjb250ZXh0LmFyZzsKCiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gInJl
dHVybiIpIHsKICAgICAgICAgIGNvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBjb250ZXh0LmFyZyk7
CiAgICAgICAgfQoKICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nOwoKICAgICAgICB2
YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7CiAgICAgICAgaWYg
KHJlY29yZC50eXBlID09PSAibm9ybWFsIikgewogICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9u
IGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PQogICAgICAgICAgLy8g
R2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLgog
ICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmUKICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBs
ZXRlZAogICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7CgogICAgICAgICAgaWYg
KHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHsKICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgdmFsdWU6IHJlY29y
ZC5hcmcsCiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZQogICAgICAgICAgfTsKICAgICAg
ICB9CiAgICAgIH0KICAgIH07CiAgfQoKICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57
bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZQogIC8vIHVuaWZpZWQgLl9pbnZva2Ug
aGVscGVyIG1ldGhvZC4KICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApOwoKICAvLyBBIEdlbmVy
YXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3
aGVuIHRoZQogIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJy
b3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNo
YWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3IKICAv
LyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMg
dGhhdCBkb2Vzbid0IGhhcHBlbi4KICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy4KICBHcFtpdGVyYXRvclN5
bWJvbF0gPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzOwogIH07CgogIGZ1bmN0aW9uIHB1
c2hUcnlFbnRyeShsb2NzKSB7CiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9OwoK
ICAgIGlmICgxIGluIGxvY3MpIHsKICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdOwogICAg
fQoKICAgIGlmICgyIGluIGxvY3MpIHsKICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07
CiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTsKICAgIH0KCiAgICB0aGlzLnRyeUVudHJp
ZXMucHVzaChlbnRyeSk7CiAgfQoKICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7CiAg
ICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTsKICAgIHJlY29yZC50eXBlID0g
Im5vcm1hbCI7CiAgICBkZWxldGUgcmVjb3JkLmFyZzsKICAgIGVudHJ5LmNvbXBsZXRpb24gPSBy
ZWNvcmQ7CiAgfQoKICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7CiAgICAvLyBUaGUg
cm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEg
Y2F0Y2gKICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9y
ZSB2YWx1ZXMgdGhyb3duIGZyb20KICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBl
bmNsb3NpbmcgdHJ5IHN0YXRlbWVudC4KICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzog
InJvb3QiIH1dOwogICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpOwog
ICAgdGhpcy5yZXNldCh0cnVlKTsKICB9CgogIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7CiAgICBy
ZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07CiAgfQoKICBDb250ZXh0LnBy
b3RvdHlwZSA9IHsKICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LAoKICAgIHJlc2V0OiBmdW5jdGlv
bihza2lwVGVtcFJlc2V0KSB7CiAgICAgIHRoaXMucHJldiA9IDA7CiAgICAgIHRoaXMubmV4dCA9
IDA7CiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBv
ZiBCYWJlbCdzCiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uCiAgICAgIHRo
aXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7CiAgICAgIHRoaXMuZG9uZSA9IGZhbHNl
OwogICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDsKCiAgICAgIHRoaXMubWV0aG9kID0gIm5leHQi
OwogICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDsKCiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JF
YWNoKHJlc2V0VHJ5RW50cnkpOwoKICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7CiAgICAgICAg
Zm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7CiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUg
b3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOgogICAgICAgICAgaWYgKG5hbWUuY2hh
ckF0KDApID09PSAidCIgJiYKICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAm
JgogICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHsKICAgICAgICAgICAgdGhp
c1tuYW1lXSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0s
CgogICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZG9uZSA9IHRydWU7CgogICAgICB2
YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdOwogICAgICB2YXIgcm9vdFJlY29yZCA9
IHJvb3RFbnRyeS5jb21wbGV0aW9uOwogICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSAidGhy
b3ciKSB7CiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7CiAgICAgIH0KCiAgICAgIHJldHVy
biB0aGlzLnJ2YWw7CiAgICB9LAoKICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7CiAg
ICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkp
IHsKICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07CiAgICAgICAgaWYgKGVu
dHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiYKICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnks
ICJmaW5hbGx5TG9jIikgJiYKICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxv
YykgewogICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5OwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmlu
YWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTsKICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlOwogICAg
ICByZWNvcmQuYXJnID0gYXJnOwoKICAgICAgaWYgKGZpbmFsbHlFbnRyeSkgewogICAgICAgIHRo
aXMubWV0aG9kID0gIm5leHQiOwogICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5h
bGx5TG9jOwogICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgICB9CgogICAgICBy
ZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpOwogICAgfSwKCiAgICBjb21wbGV0ZTogZnVuY3Rp
b24ocmVjb3JkLCBhZnRlckxvYykgewogICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICJ0aHJvdyIp
IHsKICAgICAgICB0aHJvdyByZWNvcmQuYXJnOwogICAgICB9CgogICAgICBpZiAocmVjb3JkLnR5
cGUgPT09ICJicmVhayIgfHwKICAgICAgICAgIHJlY29yZC50eXBlID09PSAiY29udGludWUiKSB7
CiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZzsKICAgICAgfSBlbHNlIGlmIChyZWNvcmQu
dHlwZSA9PT0gInJldHVybiIpIHsKICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29y
ZC5hcmc7CiAgICAgICAgdGhpcy5tZXRob2QgPSAicmV0dXJuIjsKICAgICAgICB0aGlzLm5leHQg
PSAiZW5kIjsKICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gIm5vcm1hbCIgJiYgYWZ0
ZXJMb2MpIHsKICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYzsKICAgICAgfQoKICAgICAgcmV0
dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICB9CiAgfTsKfSkoCmdsb2JhbAopOwoKdmFyIGhhc093
blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7CmZ1bmN0aW9uIGhhcyhpdCwga2V5KSB7CiAg
cmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7Cn07CgpmdW5jdGlvbiBQcm9taXNl
Q2FwYWJpbGl0eShDKSB7CiAgdmFyIHJlc29sdmUsIHJlamVjdDsKICB0aGlzLnByb21pc2UgPSBu
ZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkgewogICAgaWYgKHJlc29sdmUgIT09
IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQg
UHJvbWlzZSBjb25zdHJ1Y3RvcicpOwogICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTsKICAgIHJlamVj
dCA9ICQkcmVqZWN0OwogIH0pOwogIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7CiAgdGhpcy5yZWpl
Y3QgPSByZWplY3Q7Cn0KCmZ1bmN0aW9uIE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpIHsKICByZXR1
cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpOwp9OwoKdmFyIFBST01JU0UgPSAnUHJvbWlzZSc7
CnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTsKdmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5
ID0gTmV3UHJvbWlzZUNhcGFiaWxpdHk7CgokZXhwb3J0KCRleHBvcnQuRywgeyBQcm9taXNlOiAk
UHJvbWlzZSB9KTsKCiRleHBvcnQoJGV4cG9ydC5TLCBQUk9NSVNFLCB7CiAgcmVqZWN0OiBmdW5j
dGlvbiByZWplY3QocikgewogICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0
eSh0aGlzKTsKICAgIHZhciAkJHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0OwogICAgJCRyZWpl
Y3Qocik7CiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlOwogIH0KfSk7CgogIGZ1bmN0aW9u
IGZvcm1hdEV2ZW50KF94KSB7CiAgICByZXR1cm4gX2Zvcm1hdEV2ZW50LmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7CiAgfQoKICBmdW5jdGlvbiBfZm9ybWF0RXZlbnQoKSB7CiAgICBfZm9ybWF0RXZl
bnQgPSBfYXN5bmNUb0dlbmVyYXRvcihnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVu
Y3Rpb24gX2NhbGxlZShldmVudCkgewogICAgICByZXR1cm4gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVu
dGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICBvdXRwdXQg
PSB7CiAgICAgICAgICB9OwoKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgc3dpdGNoIChf
Y29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAg
ICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0
LmFicnVwdCgicmV0dXJuIiwgb3V0cHV0KTsKCiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAg
ICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCJyZXR1cm4iLCBvdXRwdXQpOwoKICAgICAgICAg
ICAgY2FzZSAxMDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4g
X2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwgX2NhbGxlZSk7
CiAgICB9KSk7CiAgICByZXR1cm4gX2Zvcm1hdEV2ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
CiAgfQoKICBmdW5jdGlvbiB1cGRhdGVFdmVudExvZyhldmVudCkgewogIH0KCiAgZnVuY3Rpb24g
bGlzdGVuZXJGbihfeDIpIHsKICAgIHJldHVybiBfbGlzdGVuZXJGbi5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOwogIH0KCiAgZnVuY3Rpb24gX2xpc3RlbmVyRm4oKSB7CiAgICBfbGlzdGVuZXJGbiA9
IF9hc3luY1RvR2VuZXJhdG9yKGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlv
biBfY2FsbGVlMihlKSB7CiAgICAgIHZhciBpOwogICAgICByZXR1cm4gZ2xvYmFsLnJlZ2VuZXJh
dG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICB3
aGlsZSAoMSkgewogICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5u
ZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpID0gMDsKCiAgICAgICAg
ICAgIGNhc2UgMToKICAgICAgICAgICAgICBpZiAoIShpIDwgMTAwMCkpIHsKICAgICAgICAgICAg
ICAgIF9jb250ZXh0Mi5uZXh0ID0gMTA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IHVwZGF0ZUV2ZW50TG9nOwogICAg
ICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0
RXZlbnQoZSk7CgogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQx
ID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgKDAsIF9jb250ZXh0Mi50MCkoX2NvbnRl
eHQyLnQxKTsKCiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICArK2k7CiAgICAgICAg
ICAgICAgX2NvbnRleHQyLm5leHQgPSAxOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSAxMDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4g
X2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sIF9jYWxsZWUy
KTsKICAgIH0pKTsKICAgIHJldHVybiBfbGlzdGVuZXJGbi5hcHBseSh0aGlzLCBhcmd1bWVudHMp
OwogIH0KCiAKZnVuY3Rpb24gc2xlZXAobXMpIHsKICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNhbGxMaXN0
ZW5lcigpIHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIGUgPSB7fTsKICAgICAgbGlzdGVuZXJG
bihlKTsKICAgICAgYXdhaXQgc2xlZXAoMTAwKTsKICAgIH0KfQoKY2FsbExpc3RlbmVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>463599</attachid>
            <date>2022-11-18 00:17:29 -0800</date>
            <delta_ts>2022-11-18 00:17:29 -0800</delta_ts>
            <desc>Valgrind output when running JS-only test with `jsc`</desc>
            <filename>valgrind-jsc.log.xz</filename>
            <type>application/x-xz</type>
            <size>25888</size>
            <attacher name="Krzysztof Konopko">kris</attacher>
            
              <data encoding="base64">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
Z/sCAAAAAARZWg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>463600</attachid>
            <date>2022-11-18 00:23:28 -0800</date>
            <delta_ts>2022-11-18 00:23:28 -0800</delta_ts>
            <desc>Valgrind output when running HTML/JS test</desc>
            <filename>valgrind-html.log.xz</filename>
            <type>application/x-xz</type>
            <size>22804</size>
            <attacher name="Krzysztof Konopko">kris</attacher>
            
              <data encoding="base64">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
AARZWg==
</data>

          </attachment>
      

    </bug>

</bugzilla>