<?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>169611</bug_id>
          
          <creation_ts>2017-03-14 10:20:32 -0700</creation_ts>
          <short_desc>WebAssembly: store state in TLS instead of on VM</short_desc>
          <delta_ts>2017-03-28 17:47:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169483</dependson>
          <blocked>168264</blocked>
    
    <blocked>169773</blocked>
    
    <blocked>169815</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287650</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-14 10:20:32 -0700</bug_when>
    <thetext>As part of bug #168264 to make WebAssembly position independent, we should migrate all state currently stored on VM to TLS instead. We have 4 slots to use so it could be a speedup to do this.

I&apos;ll start off simply moving the state, and afterwards we should be able to experiment with which fields should pointer-chase through TLS-&gt;instance-&gt;field, which should be in a TLS slot, and which should be in pinned registers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288376</commentid>
    <comment_count>1</comment_count>
      <attachid>304587</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-15 17:32:18 -0700</bug_when>
    <thetext>Created attachment 304587
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288378</commentid>
    <comment_count>2</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-15 17:33:26 -0700</bug_when>
    <thetext>FWIW I tested this on x86-64 and ARM64. This will break platforms which build WebAssemnbly but don&apos;t support fast TLS (e.g. Linux). Fixing it should be easy with access to a Linux box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288384</commentid>
    <comment_count>3</comment_count>
      <attachid>304589</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-15 17:38:42 -0700</bug_when>
    <thetext>Created attachment 304589
patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288385</commentid>
    <comment_count>4</comment_count>
      <attachid>304590</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-15 17:41:17 -0700</bug_when>
    <thetext>Created attachment 304590
patch

Improve changelog as suggested by Keith.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288571</commentid>
    <comment_count>5</comment_count>
      <attachid>304590</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-16 09:17:17 -0700</bug_when>
    <thetext>Comment on attachment 304590
patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        WebAssembly: store state in TLS instead of on VM

This has nothing to do with Transport Layer Security.  Do we really need another thing associated with web technology named &quot;TLS&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288576</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 09:30:33 -0700</bug_when>
    <thetext>I believe WasmTop:: slot should be counted as one of GC root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288579</commentid>
    <comment_count>7</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-16 09:35:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I believe WasmTop:: slot should be counted as one of GC root.

I don&apos;t think so: WasmTop is only set when there&apos;s a wasm instance on the call stack. That instance therefore has to already be live somehow, otherwise it couldn&apos;t be on the call stack. Calling into wasm sets it, calling out resets the previous value (it can be nested).


(In reply to comment #5)
&gt; Comment on attachment 304590 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304590&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt; +        WebAssembly: store state in TLS instead of on VM
&gt; 
&gt; This has nothing to do with Transport Layer Security.  Do we really need
&gt; another thing associated with web technology named &quot;TLS&quot;?

That&apos;s the term of art. One predates the other :)



For reference, the Linux handling of TLS seems very similar to what we do:
https://www.akkadia.org/drepper/tls.pdf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288617</commentid>
    <comment_count>8</comment_count>
      <attachid>304590</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-16 10:48:05 -0700</bug_when>
    <thetext>Comment on attachment 304590
patch

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

Functionally, I think it looks pretty good, but there are some style issues.

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt;&gt; +        WebAssembly: store state in TLS instead of on VM
&gt;&gt; 
&gt;&gt; This has nothing to do with Transport Layer Security.  Do we really need another thing associated with web technology named &quot;TLS&quot;?
&gt; 
&gt; That&apos;s the term of art. One predates the other :)
&gt; 
&gt; 
&gt; 
&gt; For reference, the Linux handling of TLS seems very similar to what we do:
&gt; https://www.akkadia.org/drepper/tls.pdf

TLS is a term of art for thread-local storage. In the OS literature, it&apos;s common to use the term TLS particularly when referring to the low-level machinery. The high-level APIs use other terms, like ThreadSpecific (and pthread_set/getspecific). This makes the term TLS particularly appropriate here, since we&apos;re using the OS&apos;s low-level TLS ABI rather than some high-level API function.

&gt; Source/JavaScriptCore/ChangeLog:67
&gt; +        (JSC::WasmTop::load):
&gt; +        (JSC::WasmTop::store):

Really don&apos;t like the name WasmTop. It tells me nothing about what it is. It&apos;s a particularly risky term because we use the term &quot;Top&quot; in our system to refer to the tautology, or the set of all things. We will probably at some point have a Wasm concept of Top in some static analysis.

I would call this WasmContext.  That tells me everything I need to know about what it does.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:596
&gt; +    return WasmTop::load()-&gt;module();

WasmContext::get()

And it should return WasmContext&amp;

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:274
&gt; +    m_instanceValue = WasmTop::load(m_proc, m_currentBlock);

Don&apos;t put B3 code generation things outside the lowering code.  This code should emit the IR for getting the WasmContext.  If you need a helper for this, then put the helper in B3IRGenerator.

Also, can we get rid of m_instanceValue and just load this lazily?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:286
&gt; +    static_assert(sizeof(decltype(WasmTop::load()-&gt;memory()-&gt;memory().memory())) == sizeof(void*), &quot;codegen relies on this size&quot;);

memory memory memory

Can we do something about that?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:297
&gt; +    WasmTop::store(proc, block, instance);

Inline the IR, or put the helper in B3IRGenerator

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1168
&gt; +        WasmTop::load(jit, baseMemory);

Put this helper in Assemblyhelpers.

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:49
&gt; +    WasmTop::load(jit, result);

Put this helper in AssemblyHelpers.

&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:69
&gt; +    {

Unindent.

&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:88
&gt; +#if ENABLE(FAST_TLS_JIT)
&gt; +    jit.loadFromTLSPtr(fastTLSOffsetForKey(WTF_WEBASSEMBLY_KEY), dst);
&gt; +#else
&gt; +#error WebAssembly without fast TLS isn&apos;t implemented yet.
&gt; +#endif

This is super risky.  We would be undoing the work to enable Wasm on Linux.  I thought that Yusuke had done that.  If he has done it, then I think we should come up with a way to do this patch that doesn&apos;t disable wasm on Linux.

&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:109
&gt; +    PatchpointValue* patchpoint = block-&gt;appendNew&lt;PatchpointValue&gt;(proc, pointerType(), Origin());
&gt; +    patchpoint-&gt;clobber(RegisterSet::macroScratchRegisters());
&gt; +    patchpoint-&gt;setGenerator(
&gt; +        [&amp;] (CCallHelpers&amp; jit, const StackmapGenerationParams&amp; params) {
&gt; +            AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +            WasmTop::load(jit, params[0].gpr());
&gt; +        });

You could be clever.  We don&apos;t need scratch on x86.  So, I would conditionalize that part of the patch.

&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:123
&gt; +    PatchpointValue* patchpoint = block-&gt;appendNew&lt;PatchpointValue&gt;(proc, Void, Origin());
&gt; +    patchpoint-&gt;clobber(RegisterSet::macroScratchRegisters());
&gt; +    patchpoint-&gt;append(ConstrainedValue(arg, ValueRep::SomeRegister));
&gt; +    patchpoint-&gt;setGenerator(
&gt; +        [&amp;] (CCallHelpers&amp; jit, const StackmapGenerationParams&amp; params) {
&gt; +            AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +            WasmTop::store(jit, params[0].gpr());
&gt; +        });

Ditto.

&gt; Source/JavaScriptCore/wasm/WasmTop.h:43
&gt; +class WasmTop {

Should be called WasmContext.

&gt; Source/JavaScriptCore/wasm/WasmTop.h:53
&gt; +    static void load(CCallHelpers&amp;, GPRReg);
&gt; +    static void store(CCallHelpers&amp;, GPRReg);
&gt; +

Put this in AssemblyHelpers or inline it.

&gt; Source/JavaScriptCore/wasm/WasmTop.h:55
&gt; +    static B3::Value* load(B3::Procedure&amp;, B3::BasicBlock*);
&gt; +    static void store(B3::Procedure&amp;, B3::BasicBlock*, B3::Value*);

Put this in B3IRGenerator or inline it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288626</commentid>
    <comment_count>9</comment_count>
      <attachid>304590</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 11:28:56 -0700</bug_when>
    <thetext>Comment on attachment 304590
patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:88
&gt;&gt; +#endif
&gt; 
&gt; This is super risky.  We would be undoing the work to enable Wasm on Linux.  I thought that Yusuke had done that.  If he has done it, then I think we should come up with a way to do this patch that doesn&apos;t disable wasm on Linux.

In Linux, we don&apos;t have any system reserved TLS... That&apos;s super unfortunate!
If we use &quot;initial-exec&quot; TLS model in Linux binary, it means that we cannot dlopen the shared library (or introducing additional restrictions).

I think we have several options in Linux,

1. Implement TLS just like &quot;dynamic-global&quot; model

Let&apos;s call the function, and returns the value with pthread_getspecific. It&apos;s simple.
WasmTop::load in B3 should be implemented in Patchpoint, it calls pthread_getspecific one.
WasmTop::load(CCallHelpers&amp; jit, GPRReg dst) becomes a bit complicated: We need to store all the registers! That&apos;s not good.......

2. Copy B3 code when passing it to the other thread, and fill the patchable value for that

I think it is not so good. We need to have multiple copies of Wasm code in multiple threads.

What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288628</commentid>
    <comment_count>10</comment_count>
      <attachid>304590</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 11:32:36 -0700</bug_when>
    <thetext>Comment on attachment 304590
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:88
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; This is super risky.  We would be undoing the work to enable Wasm on Linux.  I thought that Yusuke had done that.  If he has done it, then I think we should come up with a way to do this patch that doesn&apos;t disable wasm on Linux.
&gt; 
&gt; In Linux, we don&apos;t have any system reserved TLS... That&apos;s super unfortunate!
&gt; If we use &quot;initial-exec&quot; TLS model in Linux binary, it means that we cannot dlopen the shared library (or introducing additional restrictions).
&gt; 
&gt; I think we have several options in Linux,
&gt; 
&gt; 1. Implement TLS just like &quot;dynamic-global&quot; model
&gt; 
&gt; Let&apos;s call the function, and returns the value with pthread_getspecific. It&apos;s simple.
&gt; WasmTop::load in B3 should be implemented in Patchpoint, it calls pthread_getspecific one.
&gt; WasmTop::load(CCallHelpers&amp; jit, GPRReg dst) becomes a bit complicated: We need to store all the registers! That&apos;s not good.......
&gt; 
&gt; 2. Copy B3 code when passing it to the other thread, and fill the patchable value for that
&gt; 
&gt; I think it is not so good. We need to have multiple copies of Wasm code in multiple threads.
&gt; 
&gt; What do you think of?

Oh, wait. In WebKit2 model, we don&apos;t have any case like dlopening the library which includes JSC, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288630</commentid>
    <comment_count>11</comment_count>
      <attachid>304590</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 11:34:25 -0700</bug_when>
    <thetext>Comment on attachment 304590
patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:88
&gt;&gt;&gt;&gt; +#endif
&gt;&gt;&gt; 
&gt;&gt;&gt; This is super risky.  We would be undoing the work to enable Wasm on Linux.  I thought that Yusuke had done that.  If he has done it, then I think we should come up with a way to do this patch that doesn&apos;t disable wasm on Linux.
&gt;&gt; 
&gt;&gt; In Linux, we don&apos;t have any system reserved TLS... That&apos;s super unfortunate!
&gt;&gt; If we use &quot;initial-exec&quot; TLS model in Linux binary, it means that we cannot dlopen the shared library (or introducing additional restrictions).
&gt;&gt; 
&gt;&gt; I think we have several options in Linux,
&gt;&gt; 
&gt;&gt; 1. Implement TLS just like &quot;dynamic-global&quot; model
&gt;&gt; 
&gt;&gt; Let&apos;s call the function, and returns the value with pthread_getspecific. It&apos;s simple.
&gt;&gt; WasmTop::load in B3 should be implemented in Patchpoint, it calls pthread_getspecific one.
&gt;&gt; WasmTop::load(CCallHelpers&amp; jit, GPRReg dst) becomes a bit complicated: We need to store all the registers! That&apos;s not good.......
&gt;&gt; 
&gt;&gt; 2. Copy B3 code when passing it to the other thread, and fill the patchable value for that
&gt;&gt; 
&gt;&gt; I think it is not so good. We need to have multiple copies of Wasm code in multiple threads.
&gt;&gt; 
&gt;&gt; What do you think of?
&gt; 
&gt; Oh, wait. In WebKit2 model, we don&apos;t have any case like dlopening the library which includes JSC, right?

Ah, but maybe, it is still broken when using libjavascriptcoregtk.so. So I think we should have a fallback way.
I think the (1) one should be simple enough for the first implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288633</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-16 11:38:41 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 304590 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304590&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:88
&gt; &gt;&gt;&gt;&gt; +#endif
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; This is super risky.  We would be undoing the work to enable Wasm on Linux.  I thought that Yusuke had done that.  If he has done it, then I think we should come up with a way to do this patch that doesn&apos;t disable wasm on Linux.
&gt; &gt;&gt; 
&gt; &gt;&gt; In Linux, we don&apos;t have any system reserved TLS... That&apos;s super unfortunate!
&gt; &gt;&gt; If we use &quot;initial-exec&quot; TLS model in Linux binary, it means that we cannot dlopen the shared library (or introducing additional restrictions).
&gt; &gt;&gt; 
&gt; &gt;&gt; I think we have several options in Linux,
&gt; &gt;&gt; 
&gt; &gt;&gt; 1. Implement TLS just like &quot;dynamic-global&quot; model
&gt; &gt;&gt; 
&gt; &gt;&gt; Let&apos;s call the function, and returns the value with pthread_getspecific. It&apos;s simple.
&gt; &gt;&gt; WasmTop::load in B3 should be implemented in Patchpoint, it calls pthread_getspecific one.
&gt; &gt;&gt; WasmTop::load(CCallHelpers&amp; jit, GPRReg dst) becomes a bit complicated: We need to store all the registers! That&apos;s not good.......
&gt; &gt;&gt; 
&gt; &gt;&gt; 2. Copy B3 code when passing it to the other thread, and fill the patchable value for that
&gt; &gt;&gt; 
&gt; &gt;&gt; I think it is not so good. We need to have multiple copies of Wasm code in multiple threads.
&gt; &gt;&gt; 
&gt; &gt;&gt; What do you think of?
&gt; &gt; 
&gt; &gt; Oh, wait. In WebKit2 model, we don&apos;t have any case like dlopening the library which includes JSC, right?
&gt; 
&gt; Ah, but maybe, it is still broken when using libjavascriptcoregtk.so. So I
&gt; think we should have a fallback way.
&gt; I think the (1) one should be simple enough for the first implementation.

I have an idea: we should pin a register for the wasm TLS on Linux. This is what I always did before I worked on WebKit. Jikes RVM did it this way, and it worked great.

I think that it would be best for this patch to fall back to a global variable on Linux for now, with a giant FIXME - and then we should add support for the pinned register.

We may then find that the pinned register outperforms the TLS slot. I suspect that it might on ARM64, since we have so many registers there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288636</commentid>
    <comment_count>13</comment_count>
      <attachid>304590</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 11:45:02 -0700</bug_when>
    <thetext>Comment on attachment 304590
patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmTop.cpp:88
&gt;&gt;&gt;&gt;&gt;&gt; +#endif
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; This is super risky.  We would be undoing the work to enable Wasm on Linux.  I thought that Yusuke had done that.  If he has done it, then I think we should come up with a way to do this patch that doesn&apos;t disable wasm on Linux.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; In Linux, we don&apos;t have any system reserved TLS... That&apos;s super unfortunate!
&gt;&gt;&gt;&gt; If we use &quot;initial-exec&quot; TLS model in Linux binary, it means that we cannot dlopen the shared library (or introducing additional restrictions).
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think we have several options in Linux,
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; 1. Implement TLS just like &quot;dynamic-global&quot; model
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Let&apos;s call the function, and returns the value with pthread_getspecific. It&apos;s simple.
&gt;&gt;&gt;&gt; WasmTop::load in B3 should be implemented in Patchpoint, it calls pthread_getspecific one.
&gt;&gt;&gt;&gt; WasmTop::load(CCallHelpers&amp; jit, GPRReg dst) becomes a bit complicated: We need to store all the registers! That&apos;s not good.......
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; 2. Copy B3 code when passing it to the other thread, and fill the patchable value for that
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think it is not so good. We need to have multiple copies of Wasm code in multiple threads.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; What do you think of?
&gt;&gt;&gt; 
&gt;&gt;&gt; Oh, wait. In WebKit2 model, we don&apos;t have any case like dlopening the library which includes JSC, right?
&gt;&gt; 
&gt;&gt; Ah, but maybe, it is still broken when using libjavascriptcoregtk.so. So I think we should have a fallback way.
&gt;&gt; I think the (1) one should be simple enough for the first implementation.
&gt; 
&gt; I have an idea: we should pin a register for the wasm TLS on Linux. This is what I always did before I worked on WebKit. Jikes RVM did it this way, and it worked great.
&gt; 
&gt; I think that it would be best for this patch to fall back to a global variable on Linux for now, with a giant FIXME - and then we should add support for the pinned register.
&gt; 
&gt; We may then find that the pinned register outperforms the TLS slot. I suspect that it might on ARM64, since we have so many registers there.

Using pinned register sounds fine! Until we start sharing Wasm code in multiple threads, global variable just works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288642</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 11:49:13 -0700</bug_when>
    <thetext>I&apos;ll update the uploaded patch with FIXME.
Since now I have a Linux box, it should be easier than repeating &quot;attempt to fix&quot; in EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288652</commentid>
    <comment_count>15</comment_count>
      <attachid>304665</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 12:05:13 -0700</bug_when>
    <thetext>Created attachment 304665
Update for Linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288673</commentid>
    <comment_count>16</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-16 12:44:46 -0700</bug_when>
    <thetext>I don&apos;t think the global works because wasm can be used with workers. I&apos;ll revert back to VM.topJSWebAssemblyInstance if there&apos;s no fast TLS, and later we can address the FIXME to use a pinned register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289057</commentid>
    <comment_count>17</comment_count>
      <attachid>304795</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-17 11:02:27 -0700</bug_when>
    <thetext>Created attachment 304795
patch

Address all comments (or punt and file bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289160</commentid>
    <comment_count>18</comment_count>
      <attachid>304825</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-17 14:40:19 -0700</bug_when>
    <thetext>Created attachment 304825
patch

Fix build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289169</commentid>
    <comment_count>19</comment_count>
      <attachid>304825</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-17 15:22:34 -0700</bug_when>
    <thetext>Comment on attachment 304825
patch

Attachment 304825 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/3352050

New failing tests:
wasm.yaml/wasm/spec-tests/left-to-right.wast.js.default-wasm
wasm.yaml/wasm/function-tests/table-basic.js.default-wasm
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.default-wasm
wasm.yaml/wasm/function-tests/grow-memory.js.default-wasm
wasm.yaml/wasm/spec-tests/resizing.wast.js.default-wasm
wasm.yaml/wasm/function-tests/exceptions.js.default-wasm
wasm.yaml/wasm/function-tests/many-arguments-to-function.js.default-wasm
wasm.yaml/wasm/function-tests/function-import-return-value.js.default-wasm
wasm.yaml/wasm/spec-tests/names.wast.js.default-wasm
wasm.yaml/wasm/function-tests/trap-store-2.js.default-wasm
wasm.yaml/wasm/js-api/test_Instance.js.default-wasm
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.default-wasm
wasm.yaml/wasm/fuzz/export-function.js.default-wasm
wasm.yaml/wasm/js-api/call-indirect.js.default-wasm
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/start.wast.js.default-wasm
wasm.yaml/wasm/js-api/wrapper-function.js.default-wasm
wasm.yaml/wasm/function-tests/trap-load-2.js.default-wasm
wasm.yaml/wasm/js-api/wasm-to-wasm.js.default-wasm
wasm.yaml/wasm/spec-tests/imports.wast.js.default-wasm
wasm.yaml/wasm/function-tests/table-basic-2.js.default-wasm
wasm.yaml/wasm/js-api/unique-signature.js.default-wasm
wasm.yaml/wasm/function-tests/i64-from-js-exceptions.js.default-wasm
wasm.yaml/wasm/spec-tests/func.wast.js.default-wasm
wasm.yaml/wasm/js-api/test_Start.js.default-wasm
wasm.yaml/wasm/spec-tests/address.wast.js.default-wasm
wasm.yaml/wasm/js-api/export-arity.js.default-wasm
wasm.yaml/wasm/function-tests/grow-memory-2.js.default-wasm
wasm.yaml/wasm/spec-tests/nop.wast.js.default-wasm
wasm.yaml/wasm/js-api/test_Data.js.default-wasm
wasm.yaml/wasm/function-tests/grow-memory-4.js.default-wasm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289201</commentid>
    <comment_count>20</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-17 16:48:19 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Comment on attachment 304825 [details]
&gt; patch
&gt; 
&gt; Attachment 304825 [details] did not pass jsc-ews (mac):
&gt; Output: http://webkit-queues.webkit.org/results/3352050

Hmm, these failures are weird. I can&apos;t repro them locally with:
  make release &amp;&amp;  ./Tools/Scripts/run-javascriptcore-tests --filter wasm --no-build --no-testapi --root=./WebKitBuild/Release/

I&apos;ll figure out why...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289501</commentid>
    <comment_count>21</comment_count>
      <attachid>304931</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-20 10:40:17 -0700</bug_when>
    <thetext>Created attachment 304931
patch

Still can&apos;t repro locally after rebase, rebuild, and: ./Tools/Scripts/run-javascriptcore-tests --no-fail-fast --release --filter wasm

Shot in the dark re-run on the bots. If it doesn&apos;t work i&apos;ll need to add logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289514</commentid>
    <comment_count>22</comment_count>
      <attachid>304931</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-20 11:22:53 -0700</bug_when>
    <thetext>Comment on attachment 304931
patch

Attachment 304931 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/3369762

New failing tests:
wasm.yaml/wasm/spec-tests/left-to-right.wast.js.default-wasm
wasm.yaml/wasm/function-tests/table-basic.js.default-wasm
wasm.yaml/wasm/spec-tests/call_indirect.wast.js.default-wasm
wasm.yaml/wasm/function-tests/grow-memory.js.default-wasm
wasm.yaml/wasm/spec-tests/resizing.wast.js.default-wasm
wasm.yaml/wasm/function-tests/exceptions.js.default-wasm
wasm.yaml/wasm/function-tests/many-arguments-to-function.js.default-wasm
wasm.yaml/wasm/function-tests/function-import-return-value.js.default-wasm
wasm.yaml/wasm/spec-tests/names.wast.js.default-wasm
wasm.yaml/wasm/function-tests/trap-store-2.js.default-wasm
wasm.yaml/wasm/js-api/test_Instance.js.default-wasm
wasm.yaml/wasm/spec-tests/func_ptrs.wast.js.default-wasm
wasm.yaml/wasm/fuzz/export-function.js.default-wasm
wasm.yaml/wasm/js-api/call-indirect.js.default-wasm
wasm.yaml/wasm/spec-tests/memory_trap.wast.js.default-wasm
wasm.yaml/wasm/spec-tests/start.wast.js.default-wasm
wasm.yaml/wasm/js-api/wrapper-function.js.default-wasm
wasm.yaml/wasm/function-tests/trap-load-2.js.default-wasm
wasm.yaml/wasm/js-api/wasm-to-wasm.js.default-wasm
wasm.yaml/wasm/spec-tests/imports.wast.js.default-wasm
wasm.yaml/wasm/function-tests/table-basic-2.js.default-wasm
wasm.yaml/wasm/js-api/unique-signature.js.default-wasm
wasm.yaml/wasm/function-tests/i64-from-js-exceptions.js.default-wasm
wasm.yaml/wasm/spec-tests/func.wast.js.default-wasm
wasm.yaml/wasm/js-api/test_Start.js.default-wasm
wasm.yaml/wasm/spec-tests/address.wast.js.default-wasm
wasm.yaml/wasm/js-api/export-arity.js.default-wasm
wasm.yaml/wasm/function-tests/grow-memory-2.js.default-wasm
wasm.yaml/wasm/spec-tests/nop.wast.js.default-wasm
wasm.yaml/wasm/js-api/test_Data.js.default-wasm
wasm.yaml/wasm/function-tests/grow-memory-4.js.default-wasm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289606</commentid>
    <comment_count>23</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-20 16:03:34 -0700</bug_when>
    <thetext>The crash only occurs on a bot with an older OS release (Michael also can&apos;t reproduce, I can&apos;t on x86-64 debug/release, neither can I on A64).

ap@ sent me the full log and crash for this (below). It looks like we assert out in a patchpoint. I&apos;ll look at the code, and I&apos;m also installing that OS version on a random machine in case I don&apos;t get enlightened by the code.

Exception Type:        EXC_BREAKPOINT (SIGTRAP)
Exception Codes:       0x0000000000000002, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Thread 7 Crashed:: jsc.wasm-b3-compilation.thread
0   com.apple.JavaScriptCore      	0x000000010b61b3e9 0x10b335000 + 3040233
1   com.apple.JavaScriptCore      	0x000000010b694dbb JSC::B3::PatchpointSpecial::generate(JSC::B3::Air::Inst&amp;, JSC::CCallHelpers&amp;, JSC::B3::Air::GenerationContext&amp;) + 1371 (Vector.h:316)
2   com.apple.JavaScriptCore      	0x000000010b4888f3 JSC::B3::Air::generate(JSC::B3::Air::Code&amp;, JSC::CCallHelpers&amp;) + 1955 (AirGenerate.cpp:220)
3   com.apple.JavaScriptCore      	0x000000010bf374a8 JSC::Wasm::parseAndCompile(JSC::VM&amp;, JSC::Wasm::CompilationContext&amp;, unsigned char const*, unsigned long, JSC::Wasm::Signature const*, WTF::Vector&lt;JSC::Wasm::UnlinkedWasmToWasmCall, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;, JSC::Wasm::ModuleInformation const&amp;, WTF::Vector&lt;unsigned int, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, unsigned int) + 1384 (memory:2705)
4   com.apple.JavaScriptCore      	0x000000010bf99a59 JSC::Wasm::Plan::run(std::optional&lt;JSC::Wasm::Memory::Mode&gt;)::$_1::operator()() const + 377 (WasmPlan.cpp:182)
5   com.apple.JavaScriptCore      	0x000000010c1e06c2 WTF::threadEntryPoint(void*) + 178 (functional:1766)
6   com.apple.JavaScriptCore      	0x000000010c1e0b1f WTF::wtfThreadEntryPoint(void*) + 15 (memory:2714)
7   libsystem_pthread.dylib       	0x00007fff8ac1f99d _pthread_body + 131
8   libsystem_pthread.dylib       	0x00007fff8ac1f91a _pthread_start + 168
9   libsystem_pthread.dylib       	0x00007fff8ac1d351 thread_start + 13

Thread 7 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x00007ff3d1f00710  rcx: 0x000000000000000d  rdx: 0x000000010ce06630
  rdi: 0x00007ff3d1f00710  rsi: 0x000000000000000d  rbp: 0x0000700000322900  rsp: 0x00007000003228e0
   r8: 0x0000000000000000   r9: 0x0000000000000010  r10: 0x000000010ccaf800  r11: 0x000000010cc57e80
  r12: 0x0000700000322a70  r13: 0x00000001103add68  r14: 0x000000000000000d  r15: 0x000000010ce06630
  rip: 0x000000010b61b3e9  rfl: 0x0000000000000297  cr2: 0x000000010b78e060

Binary Images:
       0x10b335000 -        0x10c287ff7  com.apple.JavaScriptCore (604+ - 604.1.13+) &lt;03220EF9-A29C-3F87-A21B-3127998F140F&gt; /Volumes/VOLUME/*/JavaScriptCore.framework/Versions/A/JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289801</commentid>
    <comment_count>24</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-21 12:44:47 -0700</bug_when>
    <thetext>The repro I tried on a machine with a similar OS version didn&apos;t work. I&apos;ll look more with ap@ this afternoon. Maybe it&apos;s related to specific hardware.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290640</commentid>
    <comment_count>25</comment_count>
      <attachid>304931</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-23 16:17:08 -0700</bug_when>
    <thetext>Comment on attachment 304931
patch

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

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1664
&gt; +        return false;

This needs a scratch register.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1673
&gt; +        return false;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290679</commentid>
    <comment_count>26</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-23 17:30:05 -0700</bug_when>
    <thetext>Saam&apos;s psychic debugging found the issue!

Here&apos;s Platform.h:

#if __has_include(&lt;System/pthread_machdep.h&gt;)
#define HAVE_FAST_TLS 1
#endif

#if (CPU(X86_64) || CPU(ARM64)) &amp;&amp; HAVE(FAST_TLS)
#define ENABLE_FAST_TLS_JIT 1
#endif


The bot uses ye olden version of MacOS for which __has_include(&lt;System/pthread_machdep.h&gt;) is false. It then fails here:

   48  	    X86Registers::RegisterID scratchRegister()
   49  	    {
-&gt; 50  	        RELEASE_ASSERT(m_allowScratchRegister);
   51  	        return s_scratchRegister;
   52  	    }

It&apos;s a silly bug, easy fix as Saam suggested... but!!! I&apos;m now worried that the bots aren&apos;t exercising the codepath I&apos;m adding. Do we even build this new code that I added?

I&apos;ll ask around, I don&apos;t understand our build.

Also, I&apos;ll add a runtime option: if ENABLE(FAST_TLS_JIT) then it should be possible at runtime to &quot;downgrade&quot; back to no fast TLS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290681</commentid>
    <comment_count>27</comment_count>
      <attachid>305251</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-23 17:47:30 -0700</bug_when>
    <thetext>Created attachment 305251
patch

Speculatively, this should work, let&apos;s see if the bot is happy. I need to answer the above questions though. And update ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290746</commentid>
    <comment_count>28</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-23 23:27:24 -0700</bug_when>
    <thetext>It looks like _pthread_setspecific_direct is actually declared and defined in libpthread&apos;s tsd_private.h, not pthread_machdep.h. However, pthread_machdep.h is just a symlink to tsd_private.h.

Other files have been relying on pthread_machdep.h since 2014:
 - https://bugs.webkit.org/show_bug.cgi?id=130320
 - https://bugs.webkit.org/show_bug.cgi?id=131170
I assume these worked back then.

I can&apos;t find any evidence that the symlink wasn&apos;t followed by clang...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290852</commentid>
    <comment_count>29</comment_count>
      <attachid>305293</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-24 10:31:30 -0700</bug_when>
    <thetext>Created attachment 305293
experiment

Let&apos;s try something out: #error out if __has_include(&lt;System/pthread_machdep.h&gt;) is false. Obviously this isn&apos;t to be committed, I just want to check that my understanding of the bot behavior is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290854</commentid>
    <comment_count>30</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-24 10:35:16 -0700</bug_when>
    <thetext>Attachment 305293 did not pass style-queue:


ERROR: Source/WTF/wtf/Platform.h:768:  Extra space for operator !   [whitespace/operators] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290858</commentid>
    <comment_count>31</comment_count>
      <attachid>305296</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-24 10:38:14 -0700</bug_when>
    <thetext>Created attachment 305296
experiment (fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290990</commentid>
    <comment_count>32</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-24 13:56:56 -0700</bug_when>
    <thetext>My experiment gives a troubling result: fast TLS isn&apos;t supported on any of our EWS test builds. I can just commit this patch, it works locally on x86 and A64, but I&apos;m very uncomfortable with how untested this is.

As mentioned above, other files have been relying on pthread_machdep.h since 2014:
 - https://bugs.webkit.org/show_bug.cgi?id=130320
 - https://bugs.webkit.org/show_bug.cgi?id=131170
Their codepath is also untested AFAICT.

In a hallway chat ap@ mentioned another way to detect that the build has the required headers. I&apos;ll ping him again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291018</commentid>
    <comment_count>33</comment_count>
      <attachid>305326</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-24 15:43:39 -0700</bug_when>
    <thetext>Created attachment 305326
patch

I talked with ggaren@ since bmalloc has the same issue. This is an acceptable limitation of EWS because we also have internal bots which perform the build and tests with the machdep.h header available.

The downside is that this code isn&apos;t tested by EWS and isn&apos;t available to open source contributors. They exercise a different, slower, code path.

We do have options to &quot;fix&quot; the EWS situation:
 - Use the internal SDK on EWS. This means anyone with bot access can leak the content, we can then restrict it but... eh.
 - Copy the relevant bits to a fallback header in WebKit. This could diverge, and copying code is ew.
 - Copy the entire header from libc releases such as [0]. This is tricky because the license is different and we&apos;d need to talk to a lawyer.

I&apos;m not sure either option is worth it. For now ggaren@ agreed to just go with the status quo that we already have.

[0]: https://opensource.apple.com/source/Libc/Libc-583/pthreads/pthread_machdep.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291022</commentid>
    <comment_count>34</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-24 15:49:56 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #33)
&gt; Created attachment 305326 [details]
&gt; patch
&gt; 
&gt; I talked with ggaren@ since bmalloc has the same issue. This is an
&gt; acceptable limitation of EWS because we also have internal bots which
&gt; perform the build and tests with the machdep.h header available.
&gt; 
&gt; The downside is that this code isn&apos;t tested by EWS and isn&apos;t available to
&gt; open source contributors. They exercise a different, slower, code path.
&gt; 
&gt; We do have options to &quot;fix&quot; the EWS situation:
&gt;  - Use the internal SDK on EWS. This means anyone with bot access can leak
&gt; the content, we can then restrict it but... eh.
&gt;  - Copy the relevant bits to a fallback header in WebKit. This could
&gt; diverge, and copying code is ew.
&gt;  - Copy the entire header from libc releases such as [0]. This is tricky
&gt; because the license is different and we&apos;d need to talk to a lawyer.
&gt; 
&gt; I&apos;m not sure either option is worth it. For now ggaren@ agreed to just go
&gt; with the status quo that we already have.
&gt; 
&gt; [0]:
&gt; https://opensource.apple.com/source/Libc/Libc-583/pthreads/

Please don&apos;t block landing this on EWS. Please land this soon since we have other things blocked on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291024</commentid>
    <comment_count>35</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-24 15:52:35 -0700</bug_when>
    <thetext>&gt; Please don&apos;t block landing this on EWS. Please land this soon since we have
&gt; other things blocked on it.

Right: we&apos;re going with status quo. As soon as I have r+ I&apos;ll land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291041</commentid>
    <comment_count>36</comment_count>
      <attachid>305326</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-24 16:18:15 -0700</bug_when>
    <thetext>Comment on attachment 305326
patch

LGTM too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291052</commentid>
    <comment_count>37</comment_count>
      <attachid>305326</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-24 16:25:20 -0700</bug_when>
    <thetext>Comment on attachment 305326
patch

Clearing flags on attachment: 305326

Committed r214384: &lt;http://trac.webkit.org/changeset/214384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291053</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-24 16:25:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291236</commentid>
    <comment_count>39</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-25 12:06:17 -0700</bug_when>
    <thetext>This causes crashes in WasmBench when JSC is built with build-jsc --release.

JF: how did you build and test this patch?

(lldb) bt
* thread #1: tid = 0x707a420, 0x00000001002c81b8 JavaScriptCore`JSC::MacroAssemblerX86_64::store64(JSC::X86Registers::RegisterID, void*) [inlined] JSC::MacroAssemblerX86Common::scratchRegister() at MacroAssemblerX86Common.h:50, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
  * frame #0: 0x00000001002c81b8 JavaScriptCore`JSC::MacroAssemblerX86_64::store64(JSC::X86Registers::RegisterID, void*) [inlined] JSC::MacroAssemblerX86Common::scratchRegister() at MacroAssemblerX86Common.h:50 [opt]
    frame #1: 0x00000001002c81b8 JavaScriptCore`JSC::MacroAssemblerX86_64::store64(this=&lt;unavailable&gt;, src=&lt;unavailable&gt;, address=&lt;unavailable&gt;) + 328 at MacroAssemblerX86_64.h:852 [opt]
    frame #2: 0x000000030835a300
    frame #3: 0x0000000100ba77ef JavaScriptCore`WTF::SharedTaskFunctor&lt;void (JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;), JSC::Wasm::storeWasmContext(JSC::B3::Procedure&amp;, JSC::B3::BasicBlock*, JSC::B3::Value*)::$_43&gt;::run(JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;) [inlined] JSC::MacroAssembler::storePtr(address=&lt;unavailable&gt;) + 271 at MacroAssembler.h:1007 [opt]
    frame #4: 0x0000000100ba77e4 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;), JSC::Wasm::storeWasmContext(JSC::B3::Procedure&amp;, JSC::B3::BasicBlock*, JSC::B3::Value*)::$_43&gt;::run(JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;) [inlined] JSC::AssemblyHelpers::storeWasmContext(JSC::X86Registers::RegisterID) + 189 at AssemblyHelpers.h:1658 [opt]
    frame #5: 0x0000000100ba7727 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;), JSC::Wasm::storeWasmContext(JSC::B3::Procedure&amp;, JSC::B3::BasicBlock*, JSC::B3::Value*)::$_43&gt;::run(JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;) [inlined] JSC::Wasm::storeWasmContext(JSC::B3::Procedure&amp;, JSC::B3::BasicBlock*, JSC::B3::Value*)::$_43::operator()(JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;) const + 47 at WasmB3IRGenerator.cpp:257 [opt]
    frame #6: 0x0000000100ba76f8 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (JSC::CCallHelpers&amp;, JSC::B3::StackmapGenerationParams const&amp;), JSC::Wasm::storeWasmContext(JSC::B3::Procedure&amp;, JSC::B3::BasicBlock*, JSC::B3::Value*)::$_43&gt;::run(this=&lt;unavailable&gt;, arguments=&lt;unavailable&gt;, arguments=&lt;unavailable&gt;) + 24 at SharedTask.h:90 [opt]
    frame #7: 0x000000010033facb JavaScriptCore`JSC::B3::PatchpointSpecial::generate(this=&lt;unavailable&gt;, inst=&lt;unavailable&gt;, jit=&lt;unavailable&gt;, context=&lt;unavailable&gt;) + 1355 at B3PatchpointSpecial.cpp:153 [opt]
    frame #8: 0x00000001001d7353 JavaScriptCore`JSC::B3::Air::generate(code=&lt;unavailable&gt;, jit=0x000000010150adf0) + 1955 at AirGenerate.cpp:225 [opt]
    frame #9: 0x0000000100ba06e7 JavaScriptCore`JSC::Wasm::parseAndCompile(vm=&lt;unavailable&gt;, compilationContext=0x00000001041fa540, functionStart=&quot;\x02\x03\x7f\x01|\x02\x7f#\x06!\x01#\x06A\x10j$\x06 \x01!\x03 \x01A\bj\&quot;\x02A&quot;, functionLength=159, signature=0x00000001021f9cd8, unlinkedWasmToWasmCalls=&lt;unavailable&gt;, info=&lt;unavailable&gt;, moduleSignatureIndicesToUniquedSignatureIndices=&lt;unavailable&gt;, optLevel=1) + 1415 at WasmB3IRGenerator.cpp:1253 [opt]
    frame #10: 0x0000000100bf8559 JavaScriptCore`JSC::Wasm::Plan::run(this=&lt;unavailable&gt;)::$_1::operator()() const + 377 at WasmPlan.cpp:180 [opt]
    frame #11: 0x0000000100bf751a JavaScriptCore`JSC::Wasm::Plan::run(this=&lt;unavailable&gt;, recompileMode=&lt;unavailable&gt;) + 2170 at WasmPlan.cpp:209 [opt]
    frame #12: 0x00000001009550f2 JavaScriptCore`JSC::JSWebAssemblyModule::buildCodeBlock(this=0x0000000103513f60, vm=0x0000000102200000, exec=0x00007fff5fbfe320, plan=0x00007fff5fbfe108, mode=&lt;unavailable&gt;) + 82 at JSWebAssemblyModule.cpp:49 [opt]
    frame #13: 0x0000000100955392 JavaScriptCore`JSC::JSWebAssemblyModule::finishCreation(this=0x0000000103513f60, vm=0x0000000102200000, exec=&lt;unavailable&gt;, source=&quot;&quot;, byteSize=217177) + 98 at JSWebAssemblyModule.cpp:122 [opt]
    frame #14: 0x0000000100955309 JavaScriptCore`JSC::JSWebAssemblyModule::create(vm=0x0000000102200000, exec=0x00007fff5fbfe320, structure=0x00000001035440a0, source=&quot;&quot;, byteSize=217177) + 185 at JSWebAssemblyModule.cpp:72 [opt]
    frame #15: 0x0000000100c19b06 JavaScriptCore`JSC::WebAssemblyModuleConstructor::createModule(exec=&lt;unavailable&gt;, buffer=&lt;unavailable&gt;, structure=0x00000001035440a0) + 646 at WebAssemblyModuleConstructor.cpp:84 [opt]
    frame #16: 0x000000010095329a JavaScriptCore`JSC::webAssemblyInstantiateFunc(exec=&lt;unavailable&gt;) + 442 at JSWebAssembly.cpp:102 [opt]
    frame #17: 0x0000453f1aa01028
    frame #18: 0x00000001009bc9bb JavaScriptCore`llint_entry + 26701 at LowLevelInterpreter.asm:795
    frame #19: 0x00000001009bc9bb JavaScriptCore`llint_entry + 26701 at LowLevelInterpreter.asm:795
    frame #20: 0x00000001009bc9bb JavaScriptCore`llint_entry + 26701 at LowLevelInterpreter.asm:795
    frame #21: 0x00000001009b5f8b JavaScriptCore`llintPCRangeStart + 299 at LowLevelInterpreter64.asm:254
    frame #22: 0x0000000100817b3f JavaScriptCore`JSC::JITCode::execute(this=&lt;unavailable&gt;, vm=&lt;unavailable&gt;, protoCallFrame=&lt;unavailable&gt;) + 127 at JITCode.cpp:81 [opt]
    frame #23: 0x00000001007ddbb0 JavaScriptCore`JSC::Interpreter::executeProgram(this=&lt;unavailable&gt;, source=&lt;unavailable&gt;, callFrame=0x00000001035d8b78, thisObj=0x00000001035c86e0) + 13888 at Interpreter.cpp:888 [opt]
    frame #24: 0x00000001004175ce JavaScriptCore`JSC::evaluate(exec=0x00000001035d8b78, source=0x00007fff5fbff048, thisValue=&lt;unavailable&gt;, returnedException=0x00007fff5fbff060) + 302 at Completion.cpp:102 [opt]
    frame #25: 0x000000010000beb6 jsc`functionLoad(exec=0x00007fff5fbff0e0) + 630 at jsc.cpp:2169 [opt]
    frame #26: 0x0000453f1aa01028
    frame #27: 0x00000001009bc9bb JavaScriptCore`llint_entry + 26701 at LowLevelInterpreter.asm:795
    frame #28: 0x00000001009bc9bb JavaScriptCore`llint_entry + 26701 at LowLevelInterpreter.asm:795
    frame #29: 0x00000001009bc9bb JavaScriptCore`llint_entry + 26701 at LowLevelInterpreter.asm:795
    frame #30: 0x00000001009b5f8b JavaScriptCore`llintPCRangeStart + 299 at LowLevelInterpreter64.asm:254
    frame #31: 0x0000000100817b3f JavaScriptCore`JSC::JITCode::execute(this=&lt;unavailable&gt;, vm=&lt;unavailable&gt;, protoCallFrame=&lt;unavailable&gt;) + 127 at JITCode.cpp:81 [opt]
    frame #32: 0x00000001007ddf86 JavaScriptCore`JSC::Interpreter::executeCall(this=&lt;unavailable&gt;, callFrame=&lt;unavailable&gt;, function=&lt;unavailable&gt;, callType=69167880, callData=&lt;unavailable&gt;, thisValue=JSValue @ 0x00007fff5fbff370, args=&lt;unavailable&gt;) + 470 at Interpreter.cpp:947 [opt]
    frame #33: 0x00000001003b8b32 JavaScriptCore`JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) [inlined] JSC::call(functionObject=&lt;unavailable&gt;, callType=JS, callData=0x00007fff5fbff4f0, thisValue=JSValue @ 0x00007fff5fbff430, args=&lt;unavailable&gt;) + 54 at CallData.cpp:39 [opt]
    frame #34: 0x00000001003b8afc JavaScriptCore`JSC::profiledCall(exec=0x00000001035d80e8, reason=Microtask, functionObject=JSValue @ r14, callType=JS, callData=0x00007fff5fbff4f0, thisValue=JSValue @ 0x00007fff5fbff430, args=&lt;unavailable&gt;) + 124 at CallData.cpp:59 [opt]
    frame #35: 0x00000001008bfa16 JavaScriptCore`JSC::JSJobMicrotask::run(this=&lt;unavailable&gt;, exec=&lt;unavailable&gt;) + 438 at JSJob.cpp:75 [opt]
    frame #36: 0x0000000100b96b15 JavaScriptCore`JSC::VM::drainMicrotasks() [inlined] JSC::QueuedTask::run(this=0x00000001021f6eb0) + 277 at VM.cpp:876 [opt]
    frame #37: 0x0000000100b96aec JavaScriptCore`JSC::VM::drainMicrotasks(this=&lt;unavailable&gt;) + 236 at VM.cpp:871 [opt]
    frame #38: 0x000000010000414f jsc`jscmain(int, char**) [inlined] int runJSC&lt;jscmain(int, char**)::$_9&gt;(options=&lt;unavailable&gt;)::$_9 const&amp;) + 109 at jsc.cpp:3753 [opt]
    frame #39: 0x00000001000040e2 jsc`jscmain(argc=&lt;unavailable&gt;, argv=&lt;unavailable&gt;) + 4738 at jsc.cpp:3824 [opt]
    frame #40: 0x0000000100002e4b jsc`main(argc=&lt;unavailable&gt;, argv=&lt;unavailable&gt;) + 27 at jsc.cpp:3306 [opt]
    frame #41: 0x00007fff9e7f8255 libdyld.dylib`start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291237</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-25 12:08:40 -0700</bug_when>
    <thetext>The bug is trivially fixable.  The problem was this code:

    void storeWasmContext(GPRReg src)
    {
#if ENABLE(FAST_TLS_JIT)
        if (Options::useWebAssemblyFastTLS())
            storeToTLSPtr(src, fastTLSOffsetForKey(WTF_WASM_CONTEXT_KEY));
#endif
        // FIXME: Save this state elsewhere to allow PIC. https://bugs.webkit.org/show_bug.cgi?id=169773
        storePtr(src, &amp;m_vm-&gt;wasmContext);
    }


Since there was no return after storeToTLSPtr, we always fall through, and then barf because of scratch register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291245</commentid>
    <comment_count>41</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-25 12:43:58 -0700</bug_when>
    <thetext>Fixed in r214402.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291248</commentid>
    <comment_count>42</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-25 13:08:09 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #39)
&gt; This causes crashes in WasmBench when JSC is built with build-jsc --release.
&gt; 
&gt; JF: how did you build and test this patch?

Ugh apologies! I thought I&apos;d re-run the tests in debug on x86, but evidently that&apos;s not what I did. I had run x86 debug+release as well as A64 prior to the breaking change. I must have run the tests in one of the other workspaces I had going :(

Thanks for fixing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292235</commentid>
    <comment_count>43</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-28 17:47:25 -0700</bug_when>
    <thetext>To be clear, the issue is not just EWS, it&apos;s all open source builds, either on bots or one&apos;s local machine.

&gt;  - Copy the relevant bits to a fallback header in WebKit. This could diverge, and copying code is ew.

We have some techniques that mitigate the risk (see any *SPI.h headers).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304587</attachid>
            <date>2017-03-15 17:32:18 -0700</date>
            <delta_ts>2017-03-15 17:38:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>42733</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlOGU2YzNkZDZhODMxMGFiYmFlNWViNWYyZDE3NDJhZGIzMDlkY2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCAgNjcgKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qICAgICAgIHwgIDEyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmggICB8ICAgOCArKwogLi4uL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggfCAgMjAgKysrLQogLi4uL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oICAgICAgICAgICAgfCAgIDUgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oICAgICAgICAgICAgICAgfCAgIDcgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggICAgIHwgIDEwICsrCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCAgICAgICAgICAgICAgICB8ICAzMSArKysrLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCAgICAgICAgICAgICAgfCAgIDkg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwg
ICAzICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgICAg
ICB8ICAgMSAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAg
ICAgICB8ICAgMiAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAgICB8ICAzMiArKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5k
aW5nLmNwcCAgICAgICAgIHwgIDE3ICstLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVRvcC5jcHAgICAgICAgICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmggICAgICAgICAgICAgICB8ICA2MCArKysrKysr
KysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8
ICAgOCArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggICAg
ICAgfCAgIDEgKwogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMTEgKysKIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDM5ICstLS0tLS0KIDIxIGZpbGVzIGNoYW5nZWQsIDM5NSBpbnNlcnRpb25z
KCspLCA3NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVG9wLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Ub3AuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBmNGJmODgxLi40ZjFmN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC05MzksNiArOTM5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNt
L1dhc21QYWdlQ291bnQuY3BwCiAgICAgd2FzbS9XYXNtUGxhbi5jcHAKICAgICB3YXNtL1dhc21T
aWduYXR1cmUuY3BwCisgICAgd2FzbS9XYXNtVG9wLmNwcAogICAgIHdhc20vV2FzbVZhbGlkYXRl
LmNwcAogCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggODhmYTgxZC4uZGFkYjI2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzAgQEAKKzIwMTctMDMtMTUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5zdGVh
ZCBvZiBvbiBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNpbmcgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgaW5zdGVhZCBvZiBWTSBtYWtlcyBjb2RlIG1v
cmUgcG9zaXRpb24KKyAgICAgICAgaW5kZXBlbmRlbnQuIFRoaXMgbWVhbnMgd2UnbGwgYmUgYWJs
ZSB0byBwb3N0TWVzc2FnZSBhbmQKKyAgICAgICAgc3RydWN0dXJlZCBjbG9uZSBpbnRvIElEQiB3
aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUgdGhlCisgICAgICAgIGNvZGUuIFRoaXMgd2Fzbid0
IHBvc3NpYmxlIGJlZm9yZSBiZWNhdXNlIHdlIGhhcmQtY29kZWQgdGhlCisgICAgICAgIGFkZHJl
c3Mgb2YgVk0gYXQgY29tcGlsYXRpb24gdGltZS4gVGhhdCBkb2Vzbid0IHdvcmsgYmV0d2Vlbgor
ICAgICAgICB3b3JrZXJzLCBhbmQgZG9lc24ndCB3b3JrIGFjcm9zcyByZWxvYWRzICh3aGljaCBJ
REIgaXMgaW50ZW5kZWQgdG8KKyAgICAgICAgZG8pLgorCisgICAgICAgIEl0J2xsIGFsc28gcG90
ZW50aWFsbHkgbWFrZSBjb2RlIGZhc3RlciBvbmNlIHdlIHN0YXJ0IHR1bmluZworICAgICAgICB3
aGF0J3MgaW4gVExTLCB3aGF0J3MgaW4gd2hpY2ggb2YgdGhlIDQgZnJlZSBzbG90cywgYW5kIHdo
YXQncyBpbgorICAgICAgICBwaW5uZWQgcmVnaXN0ZXJzLiBJJ20gbGVhdmluZyB0aGlzIHR1bmlu
ZyBmb3IgbGF0ZXIgYmVjYXVzZQorICAgICAgICB0aGVyZSdzIGxvd2VyIGx5aW5nIGZydWl0IGZv
ciB1cyB0byBwaWNrLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0b3Jl
VG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRoZSBjb2RlIHJl
cXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVUb1RMUzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlVG9UTFMzMik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzIt
Yml0IGluc3RlYWQgb2YgNjQtYml0CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0
OjpzdG9yZVRvVExTNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjptb3ZxX3JtKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEZhc3RUTFNMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3Rv
cmUpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgorICAgICAgICAoSlNDOjpsaW5rRm9y
KToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbVdhc21U
aHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHdhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lS
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAg
ICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldh
c206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKyAg
ICAgICAgKiB3YXNtL1dhc21Ub3AuY3BwOiBBZGRlZC4gSGFuZGxlIGFsbCAiVG9wIiB3YXNtIHN0
YXRlIGhlcmUgZm9yIGNvbnNpc3RlbmN5LgorICAgICAgICAoSlNDOjpXYXNtVG9wOjpsb2FkKToK
KyAgICAgICAgKEpTQzo6V2FzbVRvcDo6c3RvcmUpOgorICAgICAgICAqIHdhc20vV2FzbVRvcC5o
OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xMSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0cnVjdHVyZTo6d2lsbFN0b3JlVmFs
dWVTbG93IG5lZWRzIHRvIGtlZXAgdGhlIHByb3BlcnR5IHRhYmxlIGFsaXZlIHVudGlsIHRoZSBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDkyMDBiYS4uZDYwYzlmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNzksNiArMjA3OSw4IEBACiAJCUFEMkZD
QzMwMURCODNENDkwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07
CiAJCUFEMkZDQzMzMURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIz
RTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMkUxRTc4NjUzRjAwOEFGMTU3
IC8qIFdhc21Ub3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQ0MTJCMkMxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3AuY3BwICovOyB9OworCQlB
RDQxMkIyRjFFNzg2NTQyMDA4QUYxNTcgLyogV2FzbVRvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMkQxRTc4NjUyMzAwOEFGMTU3IC8qIFdh
c21Ub3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlE
MkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJB
OTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2lu
LmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxl
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87
IH07CkBAIC00NjQ0LDYgKzQ2NDYsOCBAQAogCQlBRDJGQ0MyRTFEQjgzOUY3MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYkFzc2VtYmx5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMkYx
REI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUQ0MTJCMkMxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3AuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVRvcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjJEMUU3ODY1MjMwMDhBRjE1NyAvKiBXYXNtVG9w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Ub3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2Rl
T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2lu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5
NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
NDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjQ1LDYgKzYyNDksOCBAQAogCQkJCTUz
RkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAog
CQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAq
LywKIAkJCQk3OURBRTI3OTFFMDNDODIyMDBCNTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCAq
LywKKwkJCQk1MzgxQjkzNjFFNjBFOTY2MDA5MEY3OTQgLyogV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHAgKi8sCisJCQkJNTM4MUI5MzgxRTYwRTk3RDAwOTBGNzk0IC8qIFdhc21GYXVsdFNpZ25h
bEhhbmRsZXIuaCAqLywKIAkJCQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1h
dC5jcHAgKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCAq
LywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmgg
Ki8sCkBAIC02MjU1LDggKzYyNjEsNiBAQAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAv
KiBXYXNtTW9kdWxlUGFyc2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYg
LyogV2FzbU1vZHVsZVBhcnNlci5oICovLAogCQkJCUFEQjZGNjdDMUUxNUQ3NTAwMDgyRjM4NCAv
KiBXYXNtUGFnZUNvdW50LmNwcCAqLywKLQkJCQk1MzgxQjkzNjFFNjBFOTY2MDA5MEY3OTQgLyog
V2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgKi8sCi0JCQkJNTM4MUI5MzgxRTYwRTk3RDAwOTBG
Nzk0IC8qIFdhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCAqLywKIAkJCQk3OUI3NTk3MzFERkE0QzYw
MDA1MjE3NEMgLyogV2FzbVBhZ2VDb3VudC5oICovLAogCQkJCTUzRjQwRThDMUQ1OTAxRjIwMDk5
QTFCNiAvKiBXYXNtUGFyc2VyLmggKi8sCiAJCQkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8q
IFdhc21QbGFuLmNwcCAqLywKQEAgLTYyNjQsNiArNjI2OCw4IEBACiAJCQkJNTNGNDBFODQxRDU4
Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovLAogCQkJCUFENzQzOEJFMUUwNDU3OTIw
MEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCAqLywKIAkJCQlBRDc0MzhCRjFFMDQ1NzkyMDBG
RDBDMkEgLyogV2FzbVNpZ25hdHVyZS5oICovLAorCQkJCUFENDEyQjJDMUU3ODY1MjMwMDhBRjE1
NyAvKiBXYXNtVG9wLmNwcCAqLywKKwkJCQlBRDQxMkIyRDFFNzg2NTIzMDA4QUYxNTcgLyogV2Fz
bVRvcC5oICovLAogCQkJCTUzRkY3RjlBMURCRkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUu
Y3BwICovLAogCQkJCTUzRkY3Rjk4MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAq
LywKIAkJCSk7CkBAIC05MjcyLDYgKzkyNzgsNyBAQAogCQkJCUE3QThBRjNGMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUY0MDE3QURCNUYz
MDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUYw
OENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBRDQxMkIyRjFFNzg2NTQyMDA4QUYxNTcgLyogV2FzbVRvcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEyNDFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5r
ZWRFdmFsQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEyMzFEQ0E5RkE0MDAx
NEY5RkUgLyogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDE5NSw2ICsxMDIwMiw3IEBACiAJCQkJMEY4OTNCREIxOTM2RTIzQzAwMTIxMUY0IC8qIERGR1N0
cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkUxOEE2
MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZD
MDk3QTExNDZCMjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBRDQxMkIyRTFFNzg2NTNGMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkQ4QTMyNzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyOTE3RDUxRjU3MDBDQTJDNDAgLyog
REZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZEOEEzMkIxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZGRmYzkyOC4uYTIx
NTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaApAQCAtNjMyLDYgKzYzMiwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBsb2Fk
RnJvbVRMUzMyKG9mZnNldCwgZHN0KTsKICAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJl
Z2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExT
MzIoc3JjLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0
cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CkBAIC05NDYsNiArOTUwLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExT
NjQob2Zmc2V0LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJ
RCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMs
IG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggN2Y4YjY1ZC4uMTZjMDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2MDAsNyArMzYwMCw3
IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMg
d2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCi0g
ICAgCisKICAgICB2b2lkIGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOwpA
QCAtMzYxNCw2ICszNjE0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMy
KH43KSwgZHN0KTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOwog
ICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQo
VHJ1c3RlZEltbTMyKH43KSwgdG1wKTsKKyAgICAgICAgc3RvcmUzMihzcmMsIEFkZHJlc3ModG1w
LCBvZmZzZXQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVRvVExTNjQoUmVnaXN0ZXJJ
RCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0g
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICBBU1NF
UlQoc3JjICE9IHRtcCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMCh0bXAp
OworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjcpLCB0bXApOworICAgICAgICBzdG9yZTY0
KHNyYywgQWRkcmVzcyh0bXAsIG9mZnNldCkpOworICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoRkFT
VF9UTFNfSklUKQogICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAppbmRleCAxNWIyMjBjLi4wMzBkODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0z
ODY0LDYgKzM4NjQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ncygpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yKG9mZnNldCwgZHN0KTsKICAgICB9CisgICAgdm9pZCBz
dG9yZVRvVExTMzIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmdzKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfcm0oc3JjLCBv
ZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVh
a3BvaW50KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5k
ZXggYmMzNGEwZC4uYTkxZjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTcwNSw3ICsxNzA1LDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWRGcm9tVExTNjQodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxfbXIob2Zmc2V0LCBkc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21y
KG9mZnNldCwgZHN0KTsKKyAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTNjQoUmVnaXN0ZXJJRCBz
cmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfcm0oc3JjLCBvZmZzZXQpOwogICAgIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRl
eCBhNGM4ZTMyLi4zNDMwMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTIzNjAsNiArMjM2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0d2RXYsIGRzdCwgYWRkcik7CiAgICAg
fQogCisgICAgdm9pZCBtb3ZsX3JtKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBhZGRyKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9NT1ZfRXZHdiwgc3JjLCBh
ZGRyKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbW92cV9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMjM4MSw2ICsyMzg2LDExIEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0V2R3YsIHNyYywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbW92cV9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0QWRkcihPUF9NT1ZfRXZHdiwgc3JjLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZv
aWQgbW92cV9tRUFYKGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9NT1ZfRUFYT3YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAppbmRleCBjNGNiZTE4Li41YTU1YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cApAQCAtMTUyMTEsNyArMTUyMTEsNyBAQCB2b2lkIHRlc3RXYXNtQWRkcmVzcygpCiAgICAgICAg
IENIRUNLX0VRKG51bVRvU3RvcmUsIHZhbHVlKTsKIH0KIAotdm9pZCB0ZXN0RmFzdFRMUygpCit2
b2lkIHRlc3RGYXN0VExTTG9hZCgpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICBf
cHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZLCBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSkpOwpAQCAtMTUyMjYsMTMgKzE1
MjI2LDM3IEBAIHZvaWQgdGVzdEZhc3RUTFMoKQogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgaml0LmxvYWRG
cm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1RFU1RJTkdfS0VZKSwgcGFyYW1zWzBd
LmdwcigpKTsKICAgICAgICAgfSk7Ci0gICAgCisKICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOwogICAgIAogICAgIENIRUNLX0VR
KGNvbXBpbGVBbmRSdW48dWludHB0cl90Pihwcm9jKSwgc3RhdGljX2Nhc3Q8dWludHB0cl90Pigw
eGJlZWYpKTsKICNlbmRpZgogfQogCit2b2lkIHRlc3RGYXN0VExTU3RvcmUoKQoreworI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRlYWQpLCBzY3JhdGNoKTsK
KyAgICAgICAgICAgIGppdC5zdG9yZVRvVExTUHRyKHNjcmF0Y2gsIGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1RFU1RJTkdfS0VZKSk7CisgICAgICAgIH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZUFuZFJ1
bjx2b2lkPihwcm9jKTsKKyAgICBDSEVDS19FUShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihfcHRo
cmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZKSksIHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMHhkZWFkKSk7CisjZW5kaWYKK30KKwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxl
ciBkb2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRv
dWJsZSB6ZXJvKCkKIHsKQEAgLTE2NzYwLDcgKzE2Nzg0LDggQEAgdm9pZCBydW4oY29uc3QgY2hh
ciogZmlsdGVyKQogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSAtIDUpKTsKICAgICBSVU4odGVzdFdhc21BZGRyZXNzKCkpOwog
ICAgIAotICAgIFJVTih0ZXN0RmFzdFRMUygpKTsKKyAgICBSVU4odGVzdEZhc3RUTFNMb2FkKCkp
OworICAgIFJVTih0ZXN0RmFzdFRMU1N0b3JlKCkpOwogCiAgICAgaWYgKGlzWDg2KCkpIHsKICAg
ICAgICAgUlVOKHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAxLCBB
aXI6OkJyYW5jaFRlc3QzMiwgQWlyOjpBcmc6OlRtcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKaW5kZXggNTYwMWI2NS4uYWY1OWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAj
aW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCisjaW5jbHVkZSAiV2FzbVRvcC5oIgogI2luY2x1
ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTU4OCwxMSArNTg5LDExIEBAIHN0YXRp
YyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogfQogCi1zdGF0aWMgSlNDZWxsKiB3ZWJBc3Nl
bWJseU93bmVyKFZNJiB2bSkKK3N0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoKQogewog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNl
IHNoYXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFy
ZSB0aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiB2bS50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2UtPm1vZHVsZSgpOworICAgIHJldHVybiBXYXNtVG9wOjpsb2FkKCkt
Pm1vZHVsZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC02MTEsNyArNjEyLDcgQEAgdm9pZCBsaW5rRm9yKAogICAg
IENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwog
CiAgICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVC
bG9jay4KLSAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNh
bGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVC
bG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNh
bGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKCkgOiBjYWxsZXJDb2RlQmxv
Y2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlu
a2VkKCkpOwpAQCAtNzM0LDcgKzczNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAg
ICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVy
RnJhbWUtPmNhbGxlZSgpKTsKIAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0
IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1i
bHkgPyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwq
IG93bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIoKSA6IGNhbGxlckNvZGVC
bG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQ2FsbFZhcmlhbnRMaXN0IGxpc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggOWE2
NTUwNi4uY2M1ZmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCiAjaW5jbHVkZSAi
V2FzbUV4Y2VwdGlvblR5cGUuaCIKKyNpbmNsdWRlICJXYXNtVG9wLmgiCiAjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KQEAgLTExNTYsNyArMTE1Nyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBXYXNtVG9wOjpsb2FkKCktPmdsb2Jh
bE9iamVjdCgpOwogCiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJv
ciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9i
amVjdC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNz
YWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggMDY0ZGIyMC4uODUxMTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMTc3LDcgKzE3Nyw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKICAgICAsIHRvcFZNRW50cnlGcmFtZShudWxscHRy
KQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKLSAgICAsIHRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZShudWxscHRyKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2
bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDog
bmV3IEF0b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAg
ICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMTQ0MDg2ZC4uNTQ3NDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0x
MDMsNyArMTAzLDYgQEAgY2xhc3MgSW50ZXJwcmV0ZXI7CiBjbGFzcyBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKLWNs
YXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTMxNSw3ICsz
MTQsNiBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJl
Y2F1c2UgaXQgbWlnaHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRv
cENhbGxGcmFtZSB7IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDBhMmU1Y2MuLjU0NTBmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIldhc21F
eGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgIldhc21Ub3AuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KIAogdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqIHB0cikKQEAgLTI3MCw4ICsyNzEs
NyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5m
b3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9u
KCkuc2V0dXBGcmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0
aW9uLCBtX3Byb2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNl
VmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksICZtX3ZtLnRvcEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSkpOworICAgIG1faW5zdGFuY2VWYWx1ZSA9IFdhc21Ub3A6OmxvYWQobV9w
cm9jLCBtX2N1cnJlbnRCbG9jayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBA
IC0yNzksMTIgKzI3OSwxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZhbHVl
KiBzaXplOwogfTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRT
aXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrKQorc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZh
bHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAg
ICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
ZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCku
bWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXpl
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJs
eUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90
KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGRlY2x0eXBlKFdhc21Ub3A6OmxvYWQoKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgp
KSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKFdhc21Ub3A6OmxvYWQoKS0+bWVtb3J5KCkt
Pm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBv
biB0aGlzIHNpemUiKTsKICAgICBNZW1vcnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0
LmJhc2UgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZz
ZXRPZk1lbW9yeSgpKTsKICAgICByZXN1bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFz
c2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNpemUoKSk7CkBAIC0yOTIsOSArMjkyLDkgQEAgc3RhdGlj
IE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUqIGlu
c3RhbmNlLCBQcm9jZWR1cmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCBy
ZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShWTSYgdm0sIGNvbnN0IE1lbW9yeUluZm9ybWF0
aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2Nr
KiBibG9jaykKK3N0YXRpYyB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0
IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBw
cm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIGluc3RhbmNlLCBibG9jay0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
KSk7CisgICAgV2FzbVRvcDo6c3RvcmUocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlm
ICghIW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJl
Z3MgPSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwor
ICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gV2FzbVRvcDo6bG9hZCgp
OwogICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1l
bW9yeSgpOwogCiAgICAgICAgIGlmIChkZWx0YSA8IDApCkBAIC00MTQsMTQgKzQxNCwxNCBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93
TWVtb3J5KSksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOwogCi0gICAgcmVzdG9y
ZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZh
bHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9i
YWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50
QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRD
dXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
LSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0
YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVl
ID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAg
c3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRo
aXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtOTAx
LDcgKzkwMSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3Rh
bmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFu
Y2VWYWx1ZSwgbV9wcm9jLCBjb250aW51YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1i
bHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29u
dGludWF0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0Nv
bnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFy
Z3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQpIHsKQEAgLTk5NSw3ICs5OTUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgU2lnbmF0dXJlSW5k
ZXggcwogICAgICAgICB9KTsKIAogICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBh
bm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVk
IG91ciBNZW1vcnkuCi0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9p
bmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAg
ICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNl
VmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAg
LTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8
Q29udHJvbEVudHJ5PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzCiAgICAgZGF0YUxvZ0xu
KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYgdm0sIENvbXBp
bGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW50ZXJuYWxGdW5jdGlvbiYg
ZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1h
dGlvbiYgaW5mbykKK3N0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0
aW9uLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8pCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250ZXh0Lmpz
RW50cnlwb2ludEpJVDsKIApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRl
SlNUb1dhc21XcmFwcGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNv
bnRleHQKIAogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVt
b3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRQdHIo
JnZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgYmFzZU1lbW9yeSk7CisgICAgICAgIFdhc21U
b3A6OmxvYWQoaml0LCBiYXNlTWVtb3J5KTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyczsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+
PSAxKTsKQEAgLTEyMjcsNyArMTIyNyw3IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxXYXNt
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwKICAgICAg
ICAgcmVzdWx0LT53YXNtRW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gcHJvY2VkdXJl
LmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICB9CiAKLSAgICBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIodm0sIGNvbXBpbGF0aW9uQ29udGV4dCwgKnJlc3VsdCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAg
ICBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoY29tcGlsYXRpb25Db250ZXh0LCAqcmVzdWx0LCBzaWdu
YXR1cmUsIGluZm8pOwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBjYmIzZjk5Li5kZmNjMzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC0zNywx
NSArMzcsMTYgQEAKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUu
aCIKKyNpbmNsdWRlICJXYXNtVG9wLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2Fz
bSB7CiAKIHR5cGVkZWYgQ0NhbGxIZWxwZXJzIEpJVDsKIAotc3RhdGljIHZvaWQgbWF0ZXJpYWxp
emVJbXBvcnRKU0NlbGwoVk0qIHZtLCBKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQ
UlJlZyByZXN1bHQpCitzdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChKSVQmIGpp
dCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAgLy8gV2UncmUg
Y2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UsIHdoaWNoIGlz
IGlkZW50aWZpZWQgb24gVk0uIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBhbGwgaXRzIGlt
cG9ydCBmdW5jdGlvbnMuCi0gICAgaml0LmxvYWRQdHIoJnZtLT50b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2UsIHJlc3VsdCk7CisgICAgLy8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQg
V2ViQXNzZW1ibHkuSW5zdGFuY2UuIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBhbGwgaXRz
IGltcG9ydCBmdW5jdGlvbnMuCisgICAgV2FzbVRvcDo6bG9hZChqaXQsIHJlc3VsdCk7CiAgICAg
aml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7CiB9CiAKQEAgLTEw
MSw3ICsxMDIsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2
bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoKnZtKTsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgICAg
ICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gV2FzbVRvcDo6bG9h
ZCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogZXJyb3IgPSBF
cnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNv
bnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgiaTY0IG5vdCBhbGxv
d2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVkIGZ1bmN0aW9uIikp
OwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBl
cnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0LDcgKzI1NSw3IEBAIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2Fs
bExpbmtJbmZvcywKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVn
VDA7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93Lgog
ICAgIEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoaW1wb3J0SlNDZWxs
R1BSUmVnKSk7CiAKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJ
bmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChq
aXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAgICAgaml0LnN0b3JlNjQo
aW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICBqaXQu
c3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMpLCBjYWxsZWVGcmFt
ZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwpAQCAtNDI2LDEzICs0Mjcs
MTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9XYXNtKFZNKiB2bSwgdW5z
aWduZWQgaW1wb3J0SW5kZXgpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJbmZvOjpub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUjsKIAogICAgIC8vIEIzJ3MgY2FsbCBjb2RlZ2VuIGVuc3VyZXMg
dGhhdCB0aGUgSlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4KLSAgICBtYXRlcmlhbGl6
ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7CisgICAgbWF0ZXJp
YWxpemVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7CiAKLSAgICAvLyBH
ZXQgdGhlIGNhbGxlZSdzIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQgaXQgYXMgdm0udG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlc3Rv
cmluZyBpdHMgb3duIEluc3RhbmNlLgorICAgIC8vIEdldCB0aGUgY2FsbGVlJ3MgV2ViQXNzZW1i
bHkuSW5zdGFuY2UgYW5kIHNldCBpdCBhcyBXYXNtVG9wLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBj
YXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgogICAgIEdQUlJlZyBiYXNlTWVtb3J5
ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAh
PSBzY3JhdGNoKTsKICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Moc2NyYXRjaCwgV2ViQXNz
ZW1ibHlGdW5jdGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgYmFzZU1lbW9yeSk7IC8vIEluc3Rh
bmNlKi4KLSAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgJnZtLT50b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2UpOworICAgIFdhc21Ub3A6OnN0b3JlKGppdCwgYmFzZU1lbW9yeSk7CiAKICAgICAv
LyBGSVhNRSB0aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXZWJBc3NlbWJseS5J
bnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdz
IGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRvcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kZTZlNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVRvcC5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2FzbVRvcC5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVk
ZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzUGF0Y2hQb2ludFZhbHVlLmgiCisjaW5jbHVkZSAi
QjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUg
PHd0Zi9GYXN0VExTLmg+CisKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitU
IGdldFdlYkFzc2VtYmx5VExTU2xvdCgpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihf
cHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dFQkFTU0VNQkxZX0tFWSkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBzZXRXZWJBc3NlbWJseVRMU1Nsb3QoVCB2YWx1ZSkK
K3sKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dFQkFTU0VNQkxZX0tFWSwg
Yml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworfQorCit2b2lkIGluaXRpYWxpemVXYXNtVG9w
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlLCBbXSB7CisgICAgICAgIHNldFdlYkFzc2VtYmx5VExTU2xvdChudWxscHRyKTsKKyAg
ICB9KTsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBKU0Mgewor
Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogV2FzbVRvcDo6
bG9hZCgpCisgICAgeworICAgIGluaXRpYWxpemVXYXNtVG9wKCk7CisgICAgcmV0dXJuIGdldFdl
YkFzc2VtYmx5VExTU2xvdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPigpOworfQorCit2b2lkIFdh
c21Ub3A6OnN0b3JlKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisgICAgaW5p
dGlhbGl6ZVdhc21Ub3AoKTsKKyAgICBzZXRXZWJBc3NlbWJseVRMU1Nsb3QoaW5zdGFuY2UpOwor
fQorCisKK3ZvaWQgV2FzbVRvcDo6bG9hZChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGRzdCkK
K3sKKyAgICBpbml0aWFsaXplV2FzbVRvcCgpOworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisg
ICAgaml0LmxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dFQkFTU0VNQkxZ
X0tFWSksIGRzdCk7CisjZWxzZQorI2Vycm9yIFdlYkFzc2VtYmx5IHdpdGhvdXQgZmFzdCBUTFMg
aXNuJ3QgaW1wbGVtZW50ZWQgeWV0LgorI2VuZGlmCit9CisKK3ZvaWQgV2FzbVRvcDo6c3RvcmUo
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBzcmMpCit7CisgICAgaW5pdGlhbGl6ZVdhc21Ub3Ao
KTsKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGppdC5zdG9yZVRvVExTUHRyKHNyYywg
ZmFzdFRMU09mZnNldEZvcktleShXVEZfV0VCQVNTRU1CTFlfS0VZKSk7CisjZWxzZQorI2Vycm9y
IFdlYkFzc2VtYmx5IHdpdGhvdXQgZmFzdCBUTFMgaXNuJ3QgaW1wbGVtZW50ZWQgeWV0LgorI2Vu
ZGlmCit9CisKK1ZhbHVlKiBXYXNtVG9wOjpsb2FkKFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9j
ayogYmxvY2spCit7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFw
cGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpKTsK
KyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworICAgICAgICAgICAgV2FzbVRvcDo6bG9hZChqaXQsIHBhcmFtc1swXS5ncHIoKSk7Cisg
ICAgICAgIH0pOworCisgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElk
ZW50aXR5LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Cit9CisKK3ZvaWQgV2FzbVRvcDo6c3RvcmUo
UHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKK3sKKyAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAg
ICAgICBXYXNtVG9wOjpzdG9yZShqaXQsIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Ub3AuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Ub3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43YzM5OGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVRvcC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIENDYWxsSGVscGVyczsKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKworbmFtZXNw
YWNlIEIzIHsKK2NsYXNzIFZhbHVlOworY2xhc3MgUHJvY2VkdXJlOworY2xhc3MgQmFzaWNCbG9j
azsKK30KKworY2xhc3MgV2FzbVRvcCB7CisgICAgV2FzbVRvcCgpOworICAgIFdhc21Ub3AoY29u
c3QgV2FzbVRvcCYpID0gZGVsZXRlOworCitwdWJsaWM6CisgICAgc3RhdGljIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogbG9hZCgpOworICAgIHN0YXRpYyB2b2lkIHN0b3JlKEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSopOworCisgICAgc3RhdGljIHZvaWQgbG9hZChDQ2FsbEhlbHBlcnMmLCBHUFJSZWcp
OworICAgIHN0YXRpYyB2b2lkIHN0b3JlKENDYWxsSGVscGVycyYsIEdQUlJlZyk7CisKKyAgICBz
dGF0aWMgQjM6OlZhbHVlKiBsb2FkKEIzOjpQcm9jZWR1cmUmLCBCMzo6QmFzaWNCbG9jayopOwor
ICAgIHN0YXRpYyB2b2lkIHN0b3JlKEIzOjpQcm9jZWR1cmUmLCBCMzo6QmFzaWNCbG9jayosIEIz
OjpWYWx1ZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDA0ZWQ2NjYuLjE3MzM1ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0
LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgIldhc21Ub3AuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTExNywxMSArMTE4LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1
bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3
aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2Vu
ZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
NDg2Ci0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNl
ID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBXYXNtVG9wOjpsb2FkKCk7CisgICAg
V2FzbVRvcDo6c3RvcmUod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NFUlQod2Fz
bUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKKyAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5j
ZSgpID09IFdhc21Ub3A6OmxvYWQoKSk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0g
dm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgpLCAmdm0sICZwcm90b0Nh
bGxGcmFtZSk7Ci0gICAgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlID0gcHJldkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTsKKyAgICBXYXNtVG9wOjpzdG9yZShwcmV2SlNXZWJBc3NlbWJseUluc3Rh
bmNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3dpdGNo
IChzaWduYXR1cmUtPnJldHVyblR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaApp
bmRleCAxYjIxNGNlLi4zYTM3NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaApAQCAt
MzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOwogY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKIGNsYXNzIFdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTQ3ODc1ZC4uYmI0ZjI1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxNy0wMy0xNSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViQXNzZW1ibHk6IHN0b3JlIHN0YXRlIGluIFRMUyBpbnN0ZWFkIG9mIG9uIFZNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0
VExTLmg6IHJlc2VydmUgb25lIGtleSBmb3IgV2ViQXNzZW1ibHksIGRlbGV0ZSBhIGJ1bmNoCisg
ICAgICAgIG9mIGRlYWQgY29kZSB3aGljaCBjbGFuZyBjb3VsZG4ndCBjb21waWxlIChpdCdzIHZh
bGlkIEdDQyBhc3NlbWJseQorICAgICAgICB3aGljaCBMTFZNIGRpc2xpa2VzKS4KKwogMjAxNy0w
My0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE9u
bHkgcmVwb3J0IGJhY2tncm91bmQgV2ViUHJvY2Vzc2VzIGFzIHVucmVzcG9uc2l2ZSBpbiB0aGUg
YmFja2dyb3VuZCBhZnRlciA5MCBzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
YXN0VExTLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgKaW5kZXggNjNmODgzOS4uMzJkYmMx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Zhc3RUTFMuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgog
I2luY2x1ZGUgPFN5c3RlbS9wdGhyZWFkX21hY2hkZXAuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQ0LDUyICs0NSwyMCBAQCBuYW1lc3BhY2Ug
V1RGIHsKIC8vIGFjY2lkZW50YWxseSB1c2UgdGhlIHNhbWUga2V5IGZvciBtb3JlIHRoYW4gb25l
IHRoaW5nLgogCiAjZGVmaW5lIFdURl9USFJFQURfREFUQV9LRVkgV1RGX0ZBU1RfVExTX0tFWTAK
KyNkZWZpbmUgV1RGX1dFQkFTU0VNQkxZX0tFWSBXVEZfRkFTVF9UTFNfS0VZMQogI2RlZmluZSBX
VEZfVEVTVElOR19LRVkgV1RGX0ZBU1RfVExTX0tFWTMKIAogI2lmIEVOQUJMRShGQVNUX1RMU19K
SVQpCi0vLyBCZWxvdyBpcyB0aGUgY29kZSB0aGF0IHRoZSBKSVQgd2lsbCBlbWl0LgotCi0jaWYg
Q1BVKFg4Nl82NCkKLWlubGluZSB1aW50cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgb2Zmc2V0
KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAi
bW92cSAlJWdzOiUxLCAlMCIKLSAgICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAgOiAiciIo
b2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2Vs
aWYgQ1BVKEFSTTY0KQotaW5saW5lIHVpbnRwdHJfdCBsb2FkRmFzdFRMUyh1bnNpZ25lZCBwYXNz
ZWRPZmZzZXQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDsKLSAgICB1aW50cHRyX3Qgb2Zmc2V0
ID0gcGFzc2VkT2Zmc2V0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1ycyAlMCwgVFBJ
RFJST19FTDBcblx0IgotICAgICAgICAiYW5kICUwLCAlMCwgIzB4ZmZmZmZmZmZmZmZmZmZmOFxu
XHQiCi0gICAgICAgICJsZHIgJTAsIFslMCwgJTFdIgotICAgICAgICA6ICI9ciIocmVzdWx0KQot
ICAgICAgICA6ICJyIihvZmZzZXQpCi0gICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0jZWxzZQotI2Vycm9yICJCYWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0jZW5k
aWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKLQogaW5saW5lIHVuc2lnbmVkIGZhc3RUTFNPZmZz
ZXRGb3JLZXkodW5zaWduZWQgbG9uZyBzbG90KQogewogICAgIHJldHVybiBzbG90ICogc2l6ZW9m
KHZvaWQqKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpm
YXN0VExTT2Zmc2V0Rm9yS2V5OwotCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLXVzaW5nIFdU
Rjo6bG9hZEZhc3RUTFM7Cit1c2luZyBXVEY6OmZhc3RUTFNPZmZzZXRGb3JLZXk7CiAjZW5kaWYK
IAogI2VuZGlmIC8vIEhBVkUoRkFTVF9UTFMpCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304589</attachid>
            <date>2017-03-15 17:38:42 -0700</date>
            <delta_ts>2017-03-15 17:41:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>41686</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlOTExMjc3NzFlZTAzYjkwNTE0MmY1NTUwNTlhMGNkNDM4MzQ2ZTUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCAgNjcgKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qICAgICAgIHwgICA4ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmggICB8ICAgOCArKwogLi4uL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggfCAgMjAgKysrLQogLi4uL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oICAgICAgICAgICAgfCAgIDUgKwogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oICAgICAgICAgICAgICAgfCAgIDcgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggICAgIHwgIDEwICsrCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCAgICAgICAgICAgICAgICB8ICAzMSArKysrLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCAgICAgICAgICAgICAgfCAgIDkg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwg
ICAzICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgICAg
ICB8ICAgMSAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAg
ICAgICB8ICAgMiAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAgICB8ICAzMiArKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5k
aW5nLmNwcCAgICAgICAgIHwgIDE3ICstLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVRvcC5jcHAgICAgICAgICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmggICAgICAgICAgICAgICB8ICA2MCArKysrKysr
KysrCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8
ICAgOCArLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggICAg
ICAgfCAgIDEgKwogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMTEgKysKIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDM5ICstLS0tLS0KIDIxIGZpbGVzIGNoYW5nZWQsIDM5MyBpbnNlcnRpb25z
KCspLCA3NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVG9wLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Ub3AuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBmNGJmODgxLi40ZjFmN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC05MzksNiArOTM5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNt
L1dhc21QYWdlQ291bnQuY3BwCiAgICAgd2FzbS9XYXNtUGxhbi5jcHAKICAgICB3YXNtL1dhc21T
aWduYXR1cmUuY3BwCisgICAgd2FzbS9XYXNtVG9wLmNwcAogICAgIHdhc20vV2FzbVZhbGlkYXRl
LmNwcAogCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggYjVlY2IxNC4uNzdkYmQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNzAgQEAKKzIwMTctMDMtMTUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5zdGVh
ZCBvZiBvbiBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNpbmcgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgaW5zdGVhZCBvZiBWTSBtYWtlcyBjb2RlIG1v
cmUgcG9zaXRpb24KKyAgICAgICAgaW5kZXBlbmRlbnQuIFRoaXMgbWVhbnMgd2UnbGwgYmUgYWJs
ZSB0byBwb3N0TWVzc2FnZSBhbmQKKyAgICAgICAgc3RydWN0dXJlZCBjbG9uZSBpbnRvIElEQiB3
aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUgdGhlCisgICAgICAgIGNvZGUuIFRoaXMgd2Fzbid0
IHBvc3NpYmxlIGJlZm9yZSBiZWNhdXNlIHdlIGhhcmQtY29kZWQgdGhlCisgICAgICAgIGFkZHJl
c3Mgb2YgVk0gYXQgY29tcGlsYXRpb24gdGltZS4gVGhhdCBkb2Vzbid0IHdvcmsgYmV0d2Vlbgor
ICAgICAgICB3b3JrZXJzLCBhbmQgZG9lc24ndCB3b3JrIGFjcm9zcyByZWxvYWRzICh3aGljaCBJ
REIgaXMgaW50ZW5kZWQgdG8KKyAgICAgICAgZG8pLgorCisgICAgICAgIEl0J2xsIGFsc28gcG90
ZW50aWFsbHkgbWFrZSBjb2RlIGZhc3RlciBvbmNlIHdlIHN0YXJ0IHR1bmluZworICAgICAgICB3
aGF0J3MgaW4gVExTLCB3aGF0J3MgaW4gd2hpY2ggb2YgdGhlIDQgZnJlZSBzbG90cywgYW5kIHdo
YXQncyBpbgorICAgICAgICBwaW5uZWQgcmVnaXN0ZXJzLiBJJ20gbGVhdmluZyB0aGlzIHR1bmlu
ZyBmb3IgbGF0ZXIgYmVjYXVzZQorICAgICAgICB0aGVyZSdzIGxvd2VyIGx5aW5nIGZydWl0IGZv
ciB1cyB0byBwaWNrLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0b3Jl
VG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRoZSBjb2RlIHJl
cXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVUb1RMUzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlVG9UTFMzMik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzIt
Yml0IGluc3RlYWQgb2YgNjQtYml0CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0
OjpzdG9yZVRvVExTNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjptb3ZxX3JtKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEZhc3RUTFNMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3Rv
cmUpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgorICAgICAgICAoSlNDOjpsaW5rRm9y
KToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbVdhc21U
aHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHdhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lS
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAg
ICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldh
c206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKyAg
ICAgICAgKiB3YXNtL1dhc21Ub3AuY3BwOiBBZGRlZC4gSGFuZGxlIGFsbCAiVG9wIiB3YXNtIHN0
YXRlIGhlcmUgZm9yIGNvbnNpc3RlbmN5LgorICAgICAgICAoSlNDOjpXYXNtVG9wOjpsb2FkKToK
KyAgICAgICAgKEpTQzo6V2FzbVRvcDo6c3RvcmUpOgorICAgICAgICAqIHdhc20vV2FzbVRvcC5o
OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xNSAgRGFuaWVsIEVo
cmVuYmVyZyAgPGxpdHRsZWRhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIGJhY2sg
dG8gSVNPIDQyMTcgZm9yIEludGwgQ3VycmVuY3lEaWdpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2YTBhZDJlLi45MGI5NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA3OSw2ICsyMDc5LDggQEAKIAkJQUQyRkNDMzAxREI4M0Q0OTAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3Bw
ICovOyB9OwogCQlBRDJGQ0MzMTFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkYxREI4
MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgfTsKIAkJQUQyRkNDMzMxREM0MDQ1
NDAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQu
Y3BwICovOyB9OworCQlBRDQxMkIyRTFFNzg2NTNGMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIyQzFFNzg2
NTIzMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgKi87IH07CisJCUFENDEyQjJGMUU3ODY1NDIwMDhB
RjE1NyAvKiBXYXNtVG9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRDQxMkIyRDFFNzg2NTIzMDA4QUYxNTcgLyogV2FzbVRvcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFENDI1MjUxMUU1RDBFMTQw
MDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3Jp
Z2luLmggKi87IH07CiAJCUFENDI1MjUzMUU1RDBGNDcwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdp
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQy
NTI1MjFFNUQwRjIyMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwICovOyB9OwogCQlBRDQ5
MzdDMzFEREJFNjE0MDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0OTM3QzExRERCRTYwQTAw
NzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQ2NDQsNiArNDY0
Niw4IEBACiAJCUFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDJGQ0MyRjFEQjgzOUY3MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkFz
c2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzMyMURDNDA0NTMw
MEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdhc21Gb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDQx
MkIyQzFFNzg2NTIzMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtVG9wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUQ0MTJCMkQxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3AuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbVRvcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBRDQyNTI1MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbENvZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2lu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2lu
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0OTM3QzExRERCRTYwQTAwNzdD
ODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYyNjMsNiArNjI2Nyw4IEBACiAJCQkJNTNGNDBFODQxRDU4Rjk3NzAwOTlB
MUI2IC8qIFdhc21TZWN0aW9ucy5oICovLAogCQkJCUFENzQzOEJFMUUwNDU3OTIwMEZEMEMyQSAv
KiBXYXNtU2lnbmF0dXJlLmNwcCAqLywKIAkJCQlBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyog
V2FzbVNpZ25hdHVyZS5oICovLAorCQkJCUFENDEyQjJDMUU3ODY1MjMwMDhBRjE1NyAvKiBXYXNt
VG9wLmNwcCAqLywKKwkJCQlBRDQxMkIyRDFFNzg2NTIzMDA4QUYxNTcgLyogV2FzbVRvcC5oICov
LAogCQkJCTUzRkY3RjlBMURCRkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuY3BwICovLAog
CQkJCTUzRkY3Rjk4MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLywKIAkJCSk7
CkBAIC05MjcyLDYgKzkyNzgsNyBAQAogCQkJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBV
aW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQg
LyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUYwOENGMTQ2Qzc2
MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBRDQxMkIyRjFFNzg2NTQyMDA4QUYxNTcgLyogV2FzbVRvcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNEFEOTEyNDFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRFdmFsQ29k
ZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEyMzFEQ0E5RkE0MDAxNEY5RkUgLyog
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIwMyw2ICsx
MDIxMCw3IEBACiAJCQkJMEY4OTNCREIxOTM2RTIzQzAwMTIxMUY0IC8qIERGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkUxOEE2MDA3MDAwMUEy
N0Y4IC8qIERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3QTExNDZC
MjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRDQxMkIy
RTFFNzg2NTNGMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4
QTMyNzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyOTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEz
MkIxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggZGRmYzkyOC4uYTIxNTgyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApA
QCAtNjMyLDYgKzYzMiwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBsb2FkRnJvbVRMUzMy
KG9mZnNldCwgZHN0KTsKICAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJlZ2lzdGVySUQg
c3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExTMzIoc3JjLCBv
ZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRy
ZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NDYs
NiArOTUwLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTNjQob2Zmc2V0
LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJRCBzcmMsIHVp
bnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMsIG9mZnNldCk7
CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXgg
N2Y4YjY1ZC4uMTZjMDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHB1Ymxp
YzoKICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ug
c2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCi0gICAgCisKICAg
ICB2b2lkIGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOwpAQCAtMzYxNCw2
ICszNjE0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgZHN0
KTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOwogICAgIH0KKwor
ICAgIHZvaWQgc3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOworICAgICAgICBt
X2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZElt
bTMyKH43KSwgdG1wKTsKKyAgICAgICAgc3RvcmUzMihzcmMsIEFkZHJlc3ModG1wLCBvZmZzZXQp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVRvVExTNjQoUmVnaXN0ZXJJRCBzcmMsIHVp
bnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICBBU1NFUlQoc3JjICE9
IHRtcCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMCh0bXApOworICAgICAg
ICBhbmQ2NChUcnVzdGVkSW1tMzIofjcpLCB0bXApOworICAgICAgICBzdG9yZTY0KHNyYywgQWRk
cmVzcyh0bXAsIG9mZnNldCkpOworICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoRkFTVF9UTFNfSklU
KQogICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApp
bmRleCAxNWIyMjBjLi4wMzBkODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zODY0LDYgKzM4
NjQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ncygpOwogICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsX21yKG9mZnNldCwgZHN0KTsKICAgICB9CisgICAgdm9pZCBzdG9yZVRvVExT
MzIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmdzKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfcm0oc3JjLCBvZmZzZXQpOwor
ICAgIH0KICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYmMzNGEw
ZC4uYTkxZjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTcwNSw3ICsxNzA1LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWRGcm9tVExTNjQodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxfbXIob2Zmc2V0LCBkc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKG9mZnNldCwg
ZHN0KTsKKyAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTNjQoUmVnaXN0ZXJJRCBzcmMsIHVpbnQz
Ml90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdnFfcm0oc3JjLCBvZmZzZXQpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBhNGM4ZTMy
Li4zNDMwMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKQEAgLTIzNjAsNiArMjM2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0d2RXYsIGRzdCwgYWRkcik7CiAgICAgfQogCisgICAg
dm9pZCBtb3ZsX3JtKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBhZGRyKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9NT1ZfRXZHdiwgc3JjLCBhZGRyKTsKKyAg
ICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbW92cV9ycihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMjM4MSw2ICsyMzg2LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbW92cV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
QWRkcihPUF9NT1ZfRXZHdiwgc3JjLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgbW92cV9t
RUFYKGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9NT1ZfRUFYT3YpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCBj
NGNiZTE4Li41YTU1YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtMTUy
MTEsNyArMTUyMTEsNyBAQCB2b2lkIHRlc3RXYXNtQWRkcmVzcygpCiAgICAgICAgIENIRUNLX0VR
KG51bVRvU3RvcmUsIHZhbHVlKTsKIH0KIAotdm9pZCB0ZXN0RmFzdFRMUygpCit2b2lkIHRlc3RG
YXN0VExTTG9hZCgpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICBfcHRocmVhZF9z
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSkpOwpAQCAtMTUyMjYsMTMgKzE1MjI2LDM3IEBA
IHZvaWQgdGVzdEZhc3RUTFMoKQogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgaml0LmxvYWRGcm9tVExTUHRy
KGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1RFU1RJTkdfS0VZKSwgcGFyYW1zWzBdLmdwcigpKTsK
ICAgICAgICAgfSk7Ci0gICAgCisKICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOwogICAgIAogICAgIENIRUNLX0VRKGNvbXBpbGVB
bmRSdW48dWludHB0cl90Pihwcm9jKSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGJlZWYpKTsK
ICNlbmRpZgogfQogCit2b2lkIHRlc3RGYXN0VExTU3RvcmUoKQoreworI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3Qt
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CisgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGRlYWQpLCBzY3JhdGNoKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVRvVExTUHRyKHNjcmF0Y2gsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1RF
U1RJTkdfS0VZKSk7CisgICAgICAgIH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworCisgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihw
cm9jKTsKKyAgICBDSEVDS19FUShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihfcHRocmVhZF9nZXRz
cGVjaWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZKSksIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHhkZWFkKSk7CisjZW5kaWYKK30KKwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5v
dCB0cnkgdG8gb3B0aW1pemUgYW55dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJv
KCkKIHsKQEAgLTE2NzYwLDcgKzE2Nzg0LDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVy
KQogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSAtIDUpKTsKICAgICBSVU4odGVzdFdhc21BZGRyZXNzKCkpOwogICAgIAotICAg
IFJVTih0ZXN0RmFzdFRMUygpKTsKKyAgICBSVU4odGVzdEZhc3RUTFNMb2FkKCkpOworICAgIFJV
Tih0ZXN0RmFzdFRMU1N0b3JlKCkpOwogCiAgICAgaWYgKGlzWDg2KCkpIHsKICAgICAgICAgUlVO
KHRlc3RCcmFuY2hCaXRBbmRJbW1GdXNpb24oSWRlbnRpdHksIEludDY0LCAxLCBBaXI6OkJyYW5j
aFRlc3QzMiwgQWlyOjpBcmc6OlRtcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggNTYwMWI2NS4uYWY1OWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAi
VGh1bmtHZW5lcmF0b3JzLmgiCisjaW5jbHVkZSAiV2FzbVRvcC5oIgogI2luY2x1ZGUgPHd0Zi9D
b21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTU4OCwxMSArNTg5LDExIEBAIHN0YXRpYyBib29sIGlz
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQogfQogCi1zdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVy
KFZNJiB2bSkKK3N0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoKQogewogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0
aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0aGVyZWZv
cmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiB2bS50b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2UtPm1vZHVsZSgpOworICAgIHJldHVybiBXYXNtVG9wOjpsb2FkKCktPm1vZHVsZSgp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC02MTEsNyArNjEyLDcgQEAgdm9pZCBsaW5rRm9yKAogICAgIENvZGVCbG9j
ayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCiAgICAgLy8g
V2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAg
ICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1l
LT5jYWxsZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAg
ICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1l
LT5jYWxsZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKCkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAg
QVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwpA
QCAtNzM0LDcgKzczNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBib29sIGlz
V2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNh
bGxlZSgpKTsKIAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2
YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJB
c3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0g
aXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIoKSA6IGNhbGxlckNvZGVCbG9jazsKICAg
ICBBU1NFUlQob3duZXIpOwogCiAgICAgQ2FsbFZhcmlhbnRMaXN0IGxpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggOWE2NTUwNi4uY2M1
ZmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iu
aCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2Vw
dGlvblR5cGUuaCIKKyNpbmNsdWRlICJXYXNtVG9wLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFT
TS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KQEAgLTExNTYsNyArMTE1Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
KnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS0+dG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBXYXNtVG9wOjpsb2FkKCktPmdsb2JhbE9iamVjdCgp
OwogCiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhj
ZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDY0
ZGIyMC4uODUxMTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTc3
LDcgKzE3Nyw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICAsIGNsaWVudERhdGEoMCkKICAgICAsIHRvcFZNRW50cnlGcmFtZShudWxscHRyKQogICAgICwg
dG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKLSAgICAsIHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZShudWxscHRyKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0g
RGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21p
Y1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlM
aXN0KG5ldyBBcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMTQ0MDg2
ZC4uNTQ3NDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMDMsNyArMTAz
LDYgQEAgY2xhc3MgSW50ZXJwcmV0ZXI7CiBjbGFzcyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKLWNsYXNzIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE5h
dGl2ZUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTMxNSw3ICszMTQsNiBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQg
bWlnaHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFt
ZSB7IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBh
MmU1Y2MuLjU0NTBmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIldhc21FeGNlcHRpb25U
eXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbU1l
bW9yeS5oIgorI2luY2x1ZGUgIldhc21Ub3AuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
IAogdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqIHB0cikKQEAgLTI3MCw4ICsyNzEsNyBAQCBCM0lS
R2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBG
cmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0aW9uLCBtX3By
b2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNlVmFsdWUgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksICZtX3ZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSkpOworICAgIG1faW5zdGFuY2VWYWx1ZSA9IFdhc21Ub3A6OmxvYWQobV9wcm9jLCBtX2N1
cnJlbnRCbG9jayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBAIC0yNzksMTIg
KzI3OSwxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZhbHVlKiBzaXplOwog
fTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2
bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQor
c3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBWYWx1ZSog
bWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
cG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
dm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkp
KSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAg
c3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
LT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVn
ZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0
eXBlKFdhc21Ub3A6OmxvYWQoKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6
ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKFdhc21Ub3A6OmxvYWQoKS0+bWVtb3J5KCktPm1lbW9yeSgp
LnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNp
emUiKTsKICAgICBNZW1vcnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0LmJhc2UgPSBi
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZk1lbW9y
eSgpKTsKICAgICByZXN1bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVt
b3J5OjpvZmZzZXRPZlNpemUoKSk7CkBAIC0yOTIsOSArMjkyLDkgQEAgc3RhdGljIE1lbW9yeUJh
c2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQ
cm9jZWR1cmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCByZXN0b3JlV2Vi
QXNzZW1ibHlHbG9iYWxTdGF0ZShWTSYgdm0sIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1v
cnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
K3N0YXRpYyB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUlu
Zm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNp
Y0Jsb2NrKiBibG9jaykKIHsKLSAgICBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZSwgT3JpZ2luKCksIGluc3RhbmNlLCBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAmdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7CisgICAg
V2FzbVRvcDo6c3RvcmUocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlmICghIW1lbW9y
eSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBhdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOworICAgICAgICBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gV2FzbVRvcDo6bG9hZCgpOwogICAgICAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1lbW9yeSgpOwog
CiAgICAgICAgIGlmIChkZWx0YSA8IDApCkBAIC00MTQsMTQgKzQxNCwxNCBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSks
CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOwogCi0gICAgcmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3By
b2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSht
X2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVt
b3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRv
IG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVl
LCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVt
b3J5QmFzZUFuZFNpemUobV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsK
IAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fz
c2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBo
b2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtOTAxLDcgKzkwMSw3
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBj
b25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBj
YWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQg
LyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJB
c3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwg
bV9wcm9jLCBjb250aW51YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxT
dGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9u
KTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24o
KS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNU
eXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQpIHsKQEAgLTk5NSw3ICs5OTUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgU2lnbmF0dXJlSW5kZXggcwogICAg
ICAgICB9KTsKIAogICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdl
YkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1v
cnkuCi0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9y
eSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICByZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1f
cHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEwMzcsNyAr
MTAzNyw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVu
dHJ5PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzCiAgICAgZGF0YUxvZ0xuKCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYgdm0sIENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW50ZXJuYWxGdW5jdGlvbiYgZnVuY3Rpb24s
IGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5m
bykKK3N0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQm
IGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25z
dCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCiB7
CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250ZXh0LmpzRW50cnlwb2lu
dEpJVDsKIApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21X
cmFwcGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQKIAog
ICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlu
bmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRQdHIoJnZtLnRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSwgYmFzZU1lbW9yeSk7CisgICAgICAgIFdhc21Ub3A6OmxvYWQo
aml0LCBiYXNlTWVtb3J5KTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSks
IGJhc2VNZW1vcnkpOwogICAgICAgICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVyczsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKQEAg
LTEyMjcsNyArMTIyNyw3IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50ZXJuYWxG
dW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwKICAgICAgICAgcmVzdWx0
LT53YXNtRW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gcHJvY2VkdXJlLmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKICAgICB9CiAKLSAgICBjcmVhdGVKU1RvV2FzbVdyYXBwZXIodm0sIGNv
bXBpbGF0aW9uQ29udGV4dCwgKnJlc3VsdCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAgICBjcmVhdGVK
U1RvV2FzbVdyYXBwZXIoY29tcGlsYXRpb25Db250ZXh0LCAqcmVzdWx0LCBzaWduYXR1cmUsIGlu
Zm8pOwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBjYmIzZjk5Li5kZmNjMzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC0zNywxNSArMzcsMTYg
QEAKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKKyNpbmNs
dWRlICJXYXNtVG9wLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIHR5
cGVkZWYgQ0NhbGxIZWxwZXJzIEpJVDsKIAotc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJbXBvcnRK
U0NlbGwoVk0qIHZtLCBKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1
bHQpCitzdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChKSVQmIGppdCwgdW5zaWdu
ZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAgLy8gV2UncmUgY2FsbGluZyBv
dXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UsIHdoaWNoIGlzIGlkZW50aWZp
ZWQgb24gVk0uIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBhbGwgaXRzIGltcG9ydCBmdW5j
dGlvbnMuCi0gICAgaml0LmxvYWRQdHIoJnZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIHJl
c3VsdCk7CisgICAgLy8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1i
bHkuSW5zdGFuY2UuIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBhbGwgaXRzIGltcG9ydCBm
dW5jdGlvbnMuCisgICAgV2FzbVRvcDo6bG9hZChqaXQsIHJlc3VsdCk7CiAgICAgaml0LmxvYWRQ
dHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZklt
cG9ydEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7CiB9CiAKQEAgLTEwMSw3ICsxMDIs
NyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENh
bGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsK
LSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLT50
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gV2FzbVRvcDo6bG9hZCgpLT5nbG9i
YWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3Rh
bmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9y
KCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJl
dHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAg
ICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjU0LDcgKzI1NSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZv
cywKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVnVDA7IC8vIENh
bGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93LgogICAgIEFTU0VS
VCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoaW1wb3J0SlNDZWxsR1BSUmVnKSk7
CiAKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgaW1w
b3J0SlNDZWxsR1BSUmVnKTsKKyAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChqaXQsIGltcG9y
dEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAgICAgaml0LnN0b3JlNjQoaW1wb3J0SlND
ZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICBqaXQuc3RvcmUzMihK
SVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMpLCBjYWxsZWVGcmFtZS53aXRoT2Zm
c2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwpAQCAtNDI2LDEzICs0MjcsMTMgQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9XYXNtKFZNKiB2bSwgdW5zaWduZWQgaW1w
b3J0SW5kZXgpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25B
cmd1bWVudEdQUjsKIAogICAgIC8vIEIzJ3MgY2FsbCBjb2RlZ2VuIGVuc3VyZXMgdGhhdCB0aGUg
SlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4KLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpT
Q2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7CisgICAgbWF0ZXJpYWxpemVJbXBv
cnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7CiAKLSAgICAvLyBHZXQgdGhlIGNh
bGxlZSdzIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQgaXQgYXMgdm0udG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlc3RvcmluZyBpdHMg
b3duIEluc3RhbmNlLgorICAgIC8vIEdldCB0aGUgY2FsbGVlJ3MgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UgYW5kIHNldCBpdCBhcyBXYXNtVG9wLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJl
c3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgogICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVk
UmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBzY3JhdGNo
KTsKICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Moc2NyYXRjaCwgV2ViQXNzZW1ibHlGdW5j
dGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgYmFzZU1lbW9yeSk7IC8vIEluc3RhbmNlKi4KLSAg
ICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgJnZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2Up
OworICAgIFdhc21Ub3A6OnN0b3JlKGppdCwgYmFzZU1lbW9yeSk7CiAKICAgICAvLyBGSVhNRSB0
aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXZWJBc3NlbWJseS5JbnN0YW5jZSBo
YXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdzIGJhc2VNZW1v
cnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRvcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kZTZlNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRvcC5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2FzbVRvcC5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5l
cy5oIgorI2luY2x1ZGUgIkIzUGF0Y2hQb2ludFZhbHVlLmgiCisjaW5jbHVkZSAiQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9GYXN0
VExTLmg+CisKK25hbWVzcGFjZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUIGdldFdlYkFz
c2VtYmx5VExTU2xvdCgpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihfcHRocmVhZF9n
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dFQkFTU0VNQkxZX0tFWSkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgordm9pZCBzZXRXZWJBc3NlbWJseVRMU1Nsb3QoVCB2YWx1ZSkKK3sKKyAgICBf
cHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dFQkFTU0VNQkxZX0tFWSwgYml0d2lzZV9j
YXN0PHZvaWQqPih2YWx1ZSkpOworfQorCit2b2lkIGluaXRpYWxpemVXYXNtVG9wKCkKK3sKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBb
XSB7CisgICAgICAgIHNldFdlYkFzc2VtYmx5VExTU2xvdChudWxscHRyKTsKKyAgICB9KTsKK30K
KworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBKU0MgeworCit1c2luZyBu
YW1lc3BhY2UgQjM7CisKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogV2FzbVRvcDo6bG9hZCgpCisg
ICAgeworICAgIGluaXRpYWxpemVXYXNtVG9wKCk7CisgICAgcmV0dXJuIGdldFdlYkFzc2VtYmx5
VExTU2xvdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPigpOworfQorCit2b2lkIFdhc21Ub3A6OnN0
b3JlKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisgICAgaW5pdGlhbGl6ZVdh
c21Ub3AoKTsKKyAgICBzZXRXZWJBc3NlbWJseVRMU1Nsb3QoaW5zdGFuY2UpOworfQorCisKK3Zv
aWQgV2FzbVRvcDo6bG9hZChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGRzdCkKK3sKKyAgICBp
bml0aWFsaXplV2FzbVRvcCgpOworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaml0Lmxv
YWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dFQkFTU0VNQkxZX0tFWSksIGRz
dCk7CisjZWxzZQorI2Vycm9yIFdlYkFzc2VtYmx5IHdpdGhvdXQgZmFzdCBUTFMgaXNuJ3QgaW1w
bGVtZW50ZWQgeWV0LgorI2VuZGlmCit9CisKK3ZvaWQgV2FzbVRvcDo6c3RvcmUoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBzcmMpCit7CisgICAgaW5pdGlhbGl6ZVdhc21Ub3AoKTsKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGppdC5zdG9yZVRvVExTUHRyKHNyYywgZmFzdFRMU09m
ZnNldEZvcktleShXVEZfV0VCQVNTRU1CTFlfS0VZKSk7CisjZWxzZQorI2Vycm9yIFdlYkFzc2Vt
Ymx5IHdpdGhvdXQgZmFzdCBUTFMgaXNuJ3QgaW1wbGVtZW50ZWQgeWV0LgorI2VuZGlmCit9CisK
K1ZhbHVlKiBXYXNtVG9wOjpsb2FkKFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2sp
Cit7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpKTsKKyAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Cisg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAg
ICAgICAgICAgV2FzbVRvcDo6bG9hZChqaXQsIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0p
OworCisgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElkZW50aXR5LCBP
cmlnaW4oKSwgcGF0Y2hwb2ludCk7Cit9CisKK3ZvaWQgV2FzbVRvcDo6c3RvcmUoUHJvY2VkdXJl
JiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKK3sKKyAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgVm9pZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBXYXNt
VG9wOjpzdG9yZShqaXQsIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Ub3AuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Ub3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43YzM5OGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVRvcC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
KworI2luY2x1ZGUgIkdQUkluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENDYWxs
SGVscGVyczsKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKworbmFtZXNwYWNlIEIzIHsK
K2NsYXNzIFZhbHVlOworY2xhc3MgUHJvY2VkdXJlOworY2xhc3MgQmFzaWNCbG9jazsKK30KKwor
Y2xhc3MgV2FzbVRvcCB7CisgICAgV2FzbVRvcCgpOworICAgIFdhc21Ub3AoY29uc3QgV2FzbVRv
cCYpID0gZGVsZXRlOworCitwdWJsaWM6CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogbG9hZCgpOworICAgIHN0YXRpYyB2b2lkIHN0b3JlKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSop
OworCisgICAgc3RhdGljIHZvaWQgbG9hZChDQ2FsbEhlbHBlcnMmLCBHUFJSZWcpOworICAgIHN0
YXRpYyB2b2lkIHN0b3JlKENDYWxsSGVscGVycyYsIEdQUlJlZyk7CisKKyAgICBzdGF0aWMgQjM6
OlZhbHVlKiBsb2FkKEIzOjpQcm9jZWR1cmUmLCBCMzo6QmFzaWNCbG9jayopOworICAgIHN0YXRp
YyB2b2lkIHN0b3JlKEIzOjpQcm9jZWR1cmUmLCBCMzo6QmFzaWNCbG9jayosIEIzOjpWYWx1ZSop
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwCmluZGV4IDA0ZWQ2NjYuLjE3MzM1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5j
bHVkZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgIldhc21Ub3AuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTExNywxMSArMTE4LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJn
Q291bnQsIHJlbWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMg
ZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5
IEIzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0gICAg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gdm0udG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9
IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHBy
ZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBXYXNtVG9wOjpsb2FkKCk7CisgICAgV2FzbVRvcDo6
c3RvcmUod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9u
LT5pbnN0YW5jZSgpKTsKKyAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpID09IFdh
c21Ub3A6OmxvYWQoKSk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRv
V2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7
Ci0gICAgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlID0gcHJldkpTV2ViQXNzZW1ibHlJbnN0
YW5jZTsKKyAgICBXYXNtVG9wOjpzdG9yZShwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3dpdGNoIChzaWduYXR1
cmUtPnJldHVyblR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaAppbmRleCAxYjIx
NGNlLi4zYTM3NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaApAQCAtMzIsNiArMzIs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOwog
Y2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKIGNsYXNzIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggNTgyYTY3MC4uMGI1ZDg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Ny0wMy0xNSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
QXNzZW1ibHk6IHN0b3JlIHN0YXRlIGluIFRMUyBpbnN0ZWFkIG9mIG9uIFZNCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0VExTLmg6IHJl
c2VydmUgb25lIGtleSBmb3IgV2ViQXNzZW1ibHksIGRlbGV0ZSBhIGJ1bmNoCisgICAgICAgIG9m
IGRlYWQgY29kZSB3aGljaCBjbGFuZyBjb3VsZG4ndCBjb21waWxlIChpdCdzIHZhbGlkIEdDQyBh
c3NlbWJseQorICAgICAgICB3aGljaCBMTFZNIGRpc2xpa2VzKS4KKwogMjAxNy0wMy0xNSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBYY29kZSBwcm9qZWN0
IGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0VExTLmgKaW5kZXggNjNmODgzOS4uMzJkYmMxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmFzdFRMUy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUgPFN5c3RlbS9wdGhy
ZWFkX21hY2hkZXAuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiAKQEAgLTQ0LDUyICs0NSwyMCBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIGFjY2lkZW50YWxs
eSB1c2UgdGhlIHNhbWUga2V5IGZvciBtb3JlIHRoYW4gb25lIHRoaW5nLgogCiAjZGVmaW5lIFdU
Rl9USFJFQURfREFUQV9LRVkgV1RGX0ZBU1RfVExTX0tFWTAKKyNkZWZpbmUgV1RGX1dFQkFTU0VN
QkxZX0tFWSBXVEZfRkFTVF9UTFNfS0VZMQogI2RlZmluZSBXVEZfVEVTVElOR19LRVkgV1RGX0ZB
U1RfVExTX0tFWTMKIAogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0vLyBCZWxvdyBpcyB0aGUg
Y29kZSB0aGF0IHRoZSBKSVQgd2lsbCBlbWl0LgotCi0jaWYgQ1BVKFg4Nl82NCkKLWlubGluZSB1
aW50cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgb2Zmc2V0KQotewotICAgIHVpbnRwdHJfdCBy
ZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAibW92cSAlJWdzOiUxLCAlMCIKLSAg
ICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAgOiAiciIob2Zmc2V0KQotICAgICAgICA6ICJt
ZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VsaWYgQ1BVKEFSTTY0KQotaW5saW5l
IHVpbnRwdHJfdCBsb2FkRmFzdFRMUyh1bnNpZ25lZCBwYXNzZWRPZmZzZXQpCi17Ci0gICAgdWlu
dHB0cl90IHJlc3VsdDsKLSAgICB1aW50cHRyX3Qgb2Zmc2V0ID0gcGFzc2VkT2Zmc2V0OwotICAg
IGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1ycyAlMCwgVFBJRFJST19FTDBcblx0IgotICAgICAg
ICAiYW5kICUwLCAlMCwgIzB4ZmZmZmZmZmZmZmZmZmZmOFxuXHQiCi0gICAgICAgICJsZHIgJTAs
IFslMCwgJTFdIgotICAgICAgICA6ICI9ciIocmVzdWx0KQotICAgICAgICA6ICJyIihvZmZzZXQp
Ci0gICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxzZQotI2Vy
cm9yICJCYWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExT
X0pJVCkKLQogaW5saW5lIHVuc2lnbmVkIGZhc3RUTFNPZmZzZXRGb3JLZXkodW5zaWduZWQgbG9u
ZyBzbG90KQogewogICAgIHJldHVybiBzbG90ICogc2l6ZW9mKHZvaWQqKTsKIH0KKyNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5Owot
CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLXVzaW5nIFdURjo6bG9hZEZhc3RUTFM7Cit1c2lu
ZyBXVEY6OmZhc3RUTFNPZmZzZXRGb3JLZXk7CiAjZW5kaWYKIAogI2VuZGlmIC8vIEhBVkUoRkFT
VF9UTFMpCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304590</attachid>
            <date>2017-03-15 17:41:17 -0700</date>
            <delta_ts>2017-03-17 11:02:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>41990</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlZjcwYzBiZmEyZGZjNzM5NDhhMDY3MGZhNzk4MThjZDQxMGFhZWRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCAgNzIgKysrKysrKysrKysrCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiAgICAgICB8ICAgOCArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgIDggKysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwgIDIwICsrKy0KIC4uLi9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAgICAgICAgIHwgICA1ICsKIC4uLi9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAgICAgICAgICAgICAgIHwgICA3ICstCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oICAgICB8ICAxMCArKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgICAgICAgICAgICAgICAgfCAgMzEgKysrKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgICAgICAgICAgICAgIHwgICA5
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgICAgICB8
ICAgMyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwICAgICAgICAgICAg
ICAgfCAgIDEgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCAgICAgICAgICAg
ICAgICAgfCAgIDIgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwICAgfCAgMzIgKysrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmlu
ZGluZy5jcHAgICAgICAgICB8ICAxNyArLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Ub3AuY3BwICAgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRvcC5oICAgICAgICAgICAgICAgfCAgNjAgKysrKysr
KysrKwogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAg
fCAgIDggKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICAg
ICAgIHwgICAxICsKIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIDExICsrCiBTb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmggICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAzOSArLS0tLS0tCiAyMSBmaWxlcyBjaGFuZ2VkLCAzOTggaW5zZXJ0aW9u
cygrKSwgNzUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVRvcC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVG9wLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggZjRiZjg4MS4uNGYxZjdjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtOTM5LDYgKzkzOSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2Fz
bS9XYXNtUGFnZUNvdW50LmNwcAogICAgIHdhc20vV2FzbVBsYW4uY3BwCiAgICAgd2FzbS9XYXNt
U2lnbmF0dXJlLmNwcAorICAgIHdhc20vV2FzbVRvcC5jcHAKICAgICB3YXNtL1dhc21WYWxpZGF0
ZS5jcHAKIAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUNhbGxlZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IGI1ZWNiMTQuLjM3MGI5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDc1IEBACisyMDE3LTAzLTE1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3RhdGUgaW4gVExTIGluc3Rl
YWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzaW5nIHRocmVhZC1sb2NhbCBzdG9yYWdlIGluc3RlYWQgb2YgVk0gbWFrZXMgY29kZSBt
b3JlIHBvc2l0aW9uCisgICAgICAgIGluZGVwZW5kZW50LiBXZSB1c2VkIHRvIHN0b3JlIHRoZSBX
ZWJBc3NlbWJseSB0b3AgSW5zdGFuY2UgKHRoZQorICAgICAgICBsYXRlc3Qgb25lIGluIHRoZSBj
YWxsIHN0YWNrKSBvbiBWTSwgbm93IHdlIGluc3RlYWQgc3RvcmUgaXQgaW4KKyAgICAgICAgVExT
LiBUaGlzIHRvcCBJbnN0YW5jZSBpcyB1c2VkIHRvIGFjY2VzcyBhIGJ1bmNoIG9mIHN0YXRlIHN1
Y2ggYXMKKyAgICAgICAgTWVtb3J5IGxvY2F0aW9uLCBzaXplLCB0YWJsZSAoZm9yIGNhbGxfaW5k
aXJlY3QpLCBldGMuCisKKyAgICAgICAgTWFraW5nIHRoZSBjb2RlIFBJQyBtZWFucyBmdXR1cmUg
cGF0Y2hlcyB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgcG9zdE1lc3NhZ2UgYW5kIHN0cnVjdHVy
ZWQgY2xvbmUgaW50byBJREIgd2l0aG91dCBoYXZpbmcgdG8KKyAgICAgICAgcmVjb21waWxlIHRo
ZSBjb2RlLiBUaGlzIHdhc24ndCBwb3NzaWJsZSBiZWZvcmUgYmVjYXVzZSB3ZQorICAgICAgICBo
YXJkLWNvZGVkIHRoZSBhZGRyZXNzIG9mIFZNIGF0IGNvbXBpbGF0aW9uIHRpbWUuIFRoYXQgZG9l
c24ndAorICAgICAgICB3b3JrIGJldHdlZW4gd29ya2VycywgYW5kIGRvZXNuJ3Qgd29yayBhY3Jv
c3MgcmVsb2FkcyAod2hpY2ggSURCCisgICAgICAgIGlzIGludGVuZGVkIHRvIGRvKS4KKworICAg
ICAgICBJdCdsbCBhbHNvIHBvdGVudGlhbGx5IG1ha2UgY29kZSBmYXN0ZXIgb25jZSB3ZSBzdGFy
dCB0dW5pbmcKKyAgICAgICAgd2hhdCdzIGluIFRMUywgd2hhdCdzIGluIHdoaWNoIG9mIHRoZSA0
IGZyZWUgc2xvdHMsIGFuZCB3aGF0J3MgaW4KKyAgICAgICAgcGlubmVkIHJlZ2lzdGVycy4gSSdt
IGxlYXZpbmcgdGhpcyB0dW5pbmcgZm9yIGxhdGVyIGJlY2F1c2UKKyAgICAgICAgdGhlcmUncyBs
b3dlciBseWluZyBmcnVpdCBmb3IgdXMgdG8gcGljay4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyOjpzdG9yZVRvVExTUHRyKTogd2UgcHJldmlvdXNseSBkaWRuJ3QgaGF2ZQor
ICAgICAgICB0aGUgY29kZSByZXF1aXJlZCB0byBzdG9yZSB0byBUTFMsIG9ubHkgdG8gbG9hZAor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVG9UTFMzMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnN0b3JlVG9UTFM2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpzdG9yZVRvVExTMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bG9hZEZyb21UTFM2
NCk6IHdhcyBsb2FkaW5nIDMyLWJpdCBpbnN0ZWFkIG9mIDY0LWJpdAorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmVUb1RMUzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9ybSk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9ybSk6CisgICAgICAgICogYjMvdGVzdGIz
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTTG9hZCk6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0RmFzdFRMU1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisgICAgICAg
ICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU93bmVyKToKKyAg
ICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwp
OgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJv
d0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAg
ICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OmdldE1l
bW9yeUJhc2VBbmRTaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIp
OgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20v
V2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjptYXRlcmlhbGl6ZUltcG9ydEpT
Q2VsbCk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6d2FzbVRvV2FzbSk6CisgICAgICAgICogd2FzbS9XYXNtVG9wLmNwcDogQWRkZWQuIEhhbmRs
ZSBhbGwgIlRvcCIgd2FzbSBzdGF0ZSBoZXJlIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgKEpT
Qzo6V2FzbVRvcDo6bG9hZCk6CisgICAgICAgIChKU0M6Oldhc21Ub3A6OnN0b3JlKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Ub3AuaDogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmg6CisKIDIw
MTctMDMtMTUgIERhbmllbCBFaHJlbmJlcmcgIDxsaXR0bGVkYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFN3aXRjaCBiYWNrIHRvIElTTyA0MjE3IGZvciBJbnRsIEN1cnJlbmN5RGlnaXRzIGRh
dGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmEwYWQyZS4uOTBiOTQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNzksNiArMjA3OSw4IEBACiAJCUFEMkZD
QzMwMURCODNENDkwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07
CiAJCUFEMkZDQzMzMURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIz
RTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMkUxRTc4NjUzRjAwOEFGMTU3
IC8qIFdhc21Ub3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQ0MTJCMkMxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3AuY3BwICovOyB9OworCQlB
RDQxMkIyRjFFNzg2NTQyMDA4QUYxNTcgLyogV2FzbVRvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMkQxRTc4NjUyMzAwOEFGMTU3IC8qIFdh
c21Ub3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlE
MkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJB
OTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2lu
LmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxl
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87
IH07CkBAIC00NjQ0LDYgKzQ2NDYsOCBAQAogCQlBRDJGQ0MyRTFEQjgzOUY3MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYkFzc2VtYmx5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMkYx
REI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUQ0MTJCMkMxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3AuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVRvcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjJEMUU3ODY1MjMwMDhBRjE1NyAvKiBXYXNtVG9w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Ub3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2Rl
T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2lu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5
NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
NDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjYzLDYgKzYyNjcsOCBAQAogCQkJCTUz
RjQwRTg0MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCAqLywKIAkJCQlBRDc0MzhC
RTFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5jcHAgKi8sCiAJCQkJQUQ3NDM4QkYx
RTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCAqLywKKwkJCQlBRDQxMkIyQzFFNzg2
NTIzMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgKi8sCisJCQkJQUQ0MTJCMkQxRTc4NjUyMzAwOEFG
MTU3IC8qIFdhc21Ub3AuaCAqLywKIAkJCQk1M0ZGN0Y5QTFEQkZEMkI5MDBBMjZDQ0MgLyogV2Fz
bVZhbGlkYXRlLmNwcCAqLywKIAkJCQk1M0ZGN0Y5ODFEQkZDRDkwMDBBMjZDQ0MgLyogV2FzbVZh
bGlkYXRlLmggKi8sCiAJCQkpOwpAQCAtOTI3Miw2ICs5Mjc4LDcgQEAKIAkJCQlBN0E4QUYzRjE3
QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFG
NDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUQ0MTJCMkYxRTc4NjU0MjAwOEFGMTU3IC8qIFdhc21Ub3Au
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtl
ZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMjQxRENBOUZBNDAwMTRGOUZF
IC8qIFVubGlua2VkRXZhbENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMjMx
RENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAyMDMsNiArMTAyMTAsNyBAQAogCQkJCTBGODkzQkRCMTkzNkUyM0MwMDEyMTFG
NCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkZDQ0ZFMThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzA5N0ExMTQ2QjI4Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQUQ0MTJCMkUxRTc4NjUzRjAwOEFGMTU3IC8qIFdhc21Ub3AuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEOEEzMjcxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMjkxN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRDhBMzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVu
dHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGRk
ZmM5MjguLmEyMTU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKQEAgLTYzMiw2ICs2MzIsMTAgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbG9hZEZyb21UTFMzMihvZmZzZXQsIGRzdCk7CiAgICAgfQorICAgIHZvaWQgc3RvcmVU
b1RMU1B0cihSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
c3RvcmVUb1RMUzMyKHNyYywgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIERhdGFMYWJl
bDMyIGxvYWRQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQpAQCAtOTQ2LDYgKzk1MCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBs
b2FkRnJvbVRMUzY0KG9mZnNldCwgZHN0KTsKICAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTUHRy
KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRv
VExTNjQoc3JjLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9h
ZFB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDdmOGI2NWQuLjE2YzAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zNjAw
LDcgKzM2MDAsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAg
ICAvLyBUaGlzIHdpbGwgdXNlIHNjcmF0Y2ggcmVnaXN0ZXJzIGlmIHRoZSBvZmZzZXQgaXMgbm90
IGxlZ2FsLgotICAgIAorCiAgICAgdm9pZCBsb2FkRnJvbVRMUzMyKHVpbnQzMl90IG9mZnNldCwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJST19F
TDAoZHN0KTsKQEAgLTM2MTQsNiArMzYxNCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIGFuZDY0KFRy
dXN0ZWRJbW0zMih+NyksIGRzdCk7CiAgICAgICAgIGxvYWQ2NChBZGRyZXNzKGRzdCwgb2Zmc2V0
KSwgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIHN0b3JlVG9UTFMzMihSZWdpc3RlcklEIHNyYywg
dWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVChzcmMg
IT0gdG1wKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKHRtcCk7CisgICAg
ICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIHRtcCk7CisgICAgICAgIHN0b3JlMzIoc3JjLCBB
ZGRyZXNzKHRtcCwgb2Zmc2V0KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVUb1RMUzY0
KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBSZWdpc3Rl
cklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAg
ICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOworICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJS
T19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgdG1wKTsKKyAgICAg
ICAgc3RvcmU2NChzcmMsIEFkZHJlc3ModG1wLCBvZmZzZXQpKTsKKyAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMTViMjIwYy4uMDMwZDgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaApAQCAtMzg2NCw2ICszODY0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
Z3MoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CiAgICAgfQor
ICAgIHZvaWQgc3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zs
X3JtKHNyYywgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCmluZGV4IGJjMzRhMGQuLmE5MWY2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTE3MDUsNyAr
MTcwNSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRnJvbVRMUzY0KHVpbnQzMl90IG9mZnNl
dCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ncygpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yKG9mZnNldCwgZHN0KTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9tcihvZmZzZXQsIGRzdCk7CisgICAgfQorICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJl
Z2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNyYywgb2Zmc2V0KTsKICAgICB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgKaW5kZXggYTRjOGUzMi4uMzQzMDIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yMzYwLDYgKzIzNjAsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFk
ZHIpOwogICAgIH0KIAorICAgIHZvaWQgbW92bF9ybShSZWdpc3RlcklEIHNyYywgdWludDMyX3Qg
YWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2
R3YsIHNyYywgYWRkcik7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnFf
cnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTIzODEsNiArMjM4
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IG1vdnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0VBWE92KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKaW5kZXggYzRjYmUxOC4uNWE1NWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKQEAgLTE1MjExLDcgKzE1MjExLDcgQEAgdm9pZCB0ZXN0V2FzbUFkZHJlc3Mo
KQogICAgICAgICBDSEVDS19FUShudW1Ub1N0b3JlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgdGVzdEZh
c3RUTFMoKQordm9pZCB0ZXN0RmFzdFRMU0xvYWQoKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19K
SVQpCiAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKQEAgLTE1
MjI2LDEzICsxNTIyNiwzNyBAQCB2b2lkIHRlc3RGYXN0VExTKCkKICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAg
IGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSks
IHBhcmFtc1swXS5ncHIoKSk7CiAgICAgICAgIH0pOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKICAgICAKICAg
ICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRwdHJfdD4ocHJvYyksIHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMHhiZWVmKSk7CiAjZW5kaWYKIH0KIAordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCkK
K3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lk
LCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IDE7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwor
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkZWFkKSwg
c2NyYXRjaCk7CisgICAgICAgICAgICBqaXQuc3RvcmVUb1RMU1B0cihzY3JhdGNoLCBmYXN0VExT
T2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkpOworICAgICAgICB9KTsKKworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIGNv
bXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7CisgICAgQ0hFQ0tfRVEoYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSkpLCBzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOworI2VuZGlmCit9CisKIC8vIE1ha2Ugc3VyZSB0
aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVS
X0lOTElORSBkb3VibGUgemVybygpCiB7CkBAIC0xNjc2MCw3ICsxNjc4NCw4IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRk
cmVzcygpKTsKICAgICAKLSAgICBSVU4odGVzdEZhc3RUTFMoKSk7CisgICAgUlVOKHRlc3RGYXN0
VExTTG9hZCgpKTsKKyAgICBSVU4odGVzdEZhc3RUTFNTdG9yZSgpKTsKIAogICAgIGlmIChpc1g4
NigpKSB7CiAgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJ
bnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDU2MDFiNjUuLmFmNTlhOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHVi
SW5mby5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgIldhc21Ub3Au
aCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1w
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC01ODgsMTEgKzU4OSwx
MSBAQCBzdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCog
Y2FsbGVlKQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIH0KIAotc3RhdGljIEpTQ2Vs
bCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0pCitzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93
bmVyKCkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJBc3NlbWJs
eS5JbnN0YW5jZSBzaGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHkuTW9kdWxl
LCB3aGljaCBhcmUgdGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICByZXR1cm4g
dm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tb2R1bGUoKTsKKyAgICByZXR1cm4gV2FzbVRv
cDo6bG9hZCgpLT5tb2R1bGUoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjExLDcgKzYxMiw3IEBAIHZvaWQgbGlu
a0ZvcigKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2Rl
QmxvY2soKTsKIAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2
YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBj
YWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcigpIDogY2Fs
bGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5r
SW5mby5pc0xpbmtlZCgpKTsKQEAgLTczNCw3ICs3MzUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUo
dm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBz
dHVicyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBp
c1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7Cisg
ICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKCkgOiBj
YWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIENhbGxWYXJpYW50TGlz
dCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CmluZGV4IDlhNjU1MDYuLmNjNWZjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgog
I2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2FzbVRvcC5oIgogI2lu
Y2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CkBAIC0xMTU2LDcgKzExNTcsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdm0tPnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gV2FzbVRvcDo6bG9h
ZCgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZt
LCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206
OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUodHlwZSkpOwogICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IDA2NGRiMjAuLjg1MTE1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTE3Nyw3ICsxNzcsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0b3BWTUVudHJ5RnJh
bWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0g
ICAgLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UobnVsbHB0cikKICAgICAsIG1fYXRvbWljU3Ry
aW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVs
bHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDE0NDA4NmQuLjU0NzQwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtMTAzLDcgKzEwMyw2IEBAIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNP
YmplY3Q7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CiBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhwQ2FjaGU7CkBA
IC0zMTUsNyArMzE0LDYgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBh
IHZvaWQqLCBiZWNhdXNlIGl0IG1pZ2h0IG5vdCBwb2ludCB0byBhIENhbGxGcmFtZS4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDQxCiAgICAgRXhl
Y1N0YXRlKiB0b3BDYWxsRnJhbWUgeyBudWxscHRyIH07Ci0gICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVJhcmVEYXRh
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
clN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCAwYTJlNWNjLi41NDUwZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNs
dWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5o
IgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlICJXYXNtVG9wLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAKIHZvaWQgZHVtcFByb2NlZHVyZSh2b2lkKiBwdHIpCkBAIC0y
NzAsOCArMjcxLDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKIAogICAgIHdhc21DYWxsaW5n
Q29udmVudGlvbigpLnNldHVwRnJhbWVJblByb2xvZ3VlKCZjb21waWxhdGlvbi0+d2FzbUNhbGxl
ZU1vdmVMb2NhdGlvbiwgbV9wcm9jLCBPcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOwogCi0gICAg
bV9pbnN0YW5jZVZhbHVlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
bV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCAmbV92bS50
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKTsKKyAgICBtX2luc3RhbmNlVmFsdWUgPSBXYXNtVG9w
Ojpsb2FkKG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogfQogCiBzdHJ1Y3QgTWVtb3J5QmFzZUFu
ZFNpemUgewpAQCAtMjc5LDEyICsyNzksMTIgQEAgc3RydWN0IE1lbW9yeUJhc2VBbmRTaXplIHsK
ICAgICBWYWx1ZSogc2l6ZTsKIH07CiAKLXN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1v
cnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBC
YXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNl
QW5kU2l6ZShWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxv
Y2spCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBpbnN0YW5jZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKTsKIAotICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKGRlY2x0eXBlKHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+bWVtb3J5KCkt
Pm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9u
IHRoaXMgc2l6ZSIpOwotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHZtLnRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVv
Zih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihkZWNsdHlwZShXYXNtVG9wOjpsb2FkKCktPm1lbW9yeSgpLT5tZW1vcnko
KS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNp
emUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShXYXNtVG9wOjpsb2FkKCkt
Pm1lbW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdl
biByZWxpZXMgb24gdGhpcyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0Owog
ICAgIHJlc3VsdC5iYXNlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1l
bW9yeTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVj
dCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtMjkyLDkgKzI5Miw5
IEBAIHN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0s
IFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rh
dGljIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoVk0mIHZtLCBjb25zdCBNZW1v
cnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywg
QmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxT
dGF0ZShjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFBy
b2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBpbnN0YW5jZSwgYmxvY2stPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZtLnRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSkpOworICAgIFdhc21Ub3A6OnN0b3JlKHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7
CiAKICAgICBpZiAoISFtZW1vcnkpIHsKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZv
KiBwaW5uZWRSZWdzID0gJlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CkBAIC0zOTUsNyArMzk1
LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRl
bHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTsKKyAgICAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IFdhc21U
b3A6OmxvYWQoKTsKICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGlu
c3RhbmNlLT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQpAQCAtNDE0LDE0ICs0
MTQsMTQgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBl
IGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2
b2lkKj4oZ3Jvd01lbW9yeSkpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSksIGRlbHRhKTsKIAot
ICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1f
aW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgcmVzdG9yZVdlYkFz
c2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2Ms
IG1fY3VycmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7Ci0gICAgYXV0byBtZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1f
dm0sIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgYXV0byBt
ZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9j
LCBtX2N1cnJlbnRCbG9jayk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9
IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxIDw8IHNoaWZ0
VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4i
KTsKQEAgLTkwMSw3ICs5MDEsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3Nl
bWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5Lgot
ICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5
LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9uKTsKKyAgICAgICAgcmVzdG9y
ZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBt
X3Byb2MsIGNvbnRpbnVhdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gd2Fz
bUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgbV9jdXJyZW50QmxvY2ssIE9y
aWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAgICAgICAgIFsmXSAoUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CkBAIC05OTUsNyArOTk1LDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFNp
Z25hdHVyZUluZGV4IHMKICAgICAgICAgfSk7CiAKICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZl
IGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2
ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRl
KG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRC
bG9jayk7CisgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwg
bV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7
IH07CiB9CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXAoY29u
c3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzcwogICAg
IGRhdGFMb2dMbigpOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0m
IHZtLCBDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFs
RnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGluZm8pCitzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIo
Q29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbnRlcm5hbEZ1bmN0
aW9uJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBpbmZvKQogewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9u
Q29udGV4dC5qc0VudHJ5cG9pbnRKSVQ7CiAKQEAgLTExNjUsNyArMTE2NSw3IEBAIHN0YXRpYyB2
b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYgdm0sIENvbXBpbGF0aW9uQ29udGV4dCYgY29t
cGlsYXRpb25Db250ZXh0CiAKICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAgICAgICBHUFJS
ZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIGpp
dC5sb2FkUHRyKCZ2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIGJhc2VNZW1vcnkpOworICAg
ICAgICBXYXNtVG9wOjpsb2FkKGppdCwgYmFzZU1lbW9yeSk7CiAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKICAgICAgICAgY29uc3QgYXV0byYgc2l6
ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VSVChzaXplUmVn
cy5zaXplKCkgPj0gMSk7CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1
ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShWTSYg
dm0sCiAgICAgICAgIHJlc3VsdC0+d2FzbUVudHJ5cG9pbnQuY2FsbGVlU2F2ZVJlZ2lzdGVycyA9
IHByb2NlZHVyZS5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgfQogCi0gICAgY3JlYXRlSlNU
b1dhc21XcmFwcGVyKHZtLCBjb21waWxhdGlvbkNvbnRleHQsICpyZXN1bHQsIHNpZ25hdHVyZSwg
aW5mbyk7CisgICAgY3JlYXRlSlNUb1dhc21XcmFwcGVyKGNvbXBpbGF0aW9uQ29udGV4dCwgKnJl
c3VsdCwgc2lnbmF0dXJlLCBpbmZvKTsKICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggY2JiM2Y5
OS4uZGZjYzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJp
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNw
cApAQCAtMzcsMTUgKzM3LDE2IEBACiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUgIldhc21FeGNl
cHRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2FzbVRvcC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewogCiB0eXBlZGVmIENDYWxsSGVscGVycyBKSVQ7CiAKLXN0YXRpYyB2b2lk
IG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKFZNKiB2bSwgSklUJiBqaXQsIHVuc2lnbmVkIGltcG9y
dEluZGV4LCBHUFJSZWcgcmVzdWx0KQorc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJbXBvcnRKU0Nl
bGwoSklUJiBqaXQsIHVuc2lnbmVkIGltcG9ydEluZGV4LCBHUFJSZWcgcmVzdWx0KQogewotICAg
IC8vIFdlJ3JlIGNhbGxpbmcgb3V0IG9mIHRoZSBjdXJyZW50IFdlYkFzc2VtYmx5Lkluc3RhbmNl
LCB3aGljaCBpcyBpZGVudGlmaWVkIG9uIFZNLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qgb2Yg
YWxsIGl0cyBpbXBvcnQgZnVuY3Rpb25zLgotICAgIGppdC5sb2FkUHRyKCZ2bS0+dG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlLCByZXN1bHQpOworICAgIC8vIFdlJ3JlIGNhbGxpbmcgb3V0IG9mIHRo
ZSBjdXJyZW50IFdlYkFzc2VtYmx5Lkluc3RhbmNlLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qg
b2YgYWxsIGl0cyBpbXBvcnQgZnVuY3Rpb25zLgorICAgIFdhc21Ub3A6OmxvYWQoaml0LCByZXN1
bHQpOwogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhyZXN1bHQsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihpbXBvcnRJbmRleCkpLCByZXN1bHQpOwog
fQogCkBAIC0xMDEsNyArMTAyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNt
VG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IFdh
c21Ub3A6OmxvYWQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50
eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2
NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBm
dW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgZXJyb3IpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1NCw3ICsyNTUsNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5r
SW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgR1BSUmVnIGltcG9ydEpTQ2VsbEdQUlJlZyA9IEdQ
UkluZm86OnJlZ1QwOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAgZm9yIHNsb3cgcGF0
aCBiZWxvdy4KICAgICBBU1NFUlQoIXdhc21DQy5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KGlt
cG9ydEpTQ2VsbEdQUlJlZykpOwogCi0gICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwodm0sIGpp
dCwgaW1wb3J0SW5kZXgsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CisgICAgbWF0ZXJpYWxpemVJbXBv
cnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKIAogICAgIGpp
dC5zdG9yZTY0KGltcG9ydEpTQ2VsbEdQUlJlZywgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxs
RnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7
CiAgICAgaml0LnN0b3JlMzIoSklUOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwg
Y2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKQEAgLTQy
NiwxMyArNDI3LDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvV2FzbShW
TSogdm0sIHVuc2lnbmVkIGltcG9ydEluZGV4KQogICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5m
bzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFI7CiAKICAgICAvLyBCMydzIGNhbGwgY29kZWdl
biBlbnN1cmVzIHRoYXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCi0gICAg
bWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwodm0sIGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOwor
ICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOwog
Ci0gICAgLy8gR2V0IHRoZSBjYWxsZWUncyBXZWJBc3NlbWJseS5JbnN0YW5jZSBhbmQgc2V0IGl0
IGFzIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS4gVGhlIGNhbGxlciB3aWxsIHRha2UgY2Fy
ZSBvZiByZXN0b3JpbmcgaXRzIG93biBJbnN0YW5jZS4KKyAgICAvLyBHZXQgdGhlIGNhbGxlZSdz
IFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQgaXQgYXMgV2FzbVRvcC4gVGhlIGNhbGxlciB3
aWxsIHRha2UgY2FyZSBvZiByZXN0b3JpbmcgaXRzIG93biBJbnN0YW5jZS4KICAgICBHUFJSZWcg
YmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNTRVJUKGJh
c2VNZW1vcnkgIT0gc2NyYXRjaCk7CiAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHNjcmF0
Y2gsIFdlYkFzc2VtYmx5RnVuY3Rpb246Om9mZnNldE9mSW5zdGFuY2UoKSksIGJhc2VNZW1vcnkp
OyAvLyBJbnN0YW5jZSouCi0gICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksICZ2bS0+dG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlKTsKKyAgICBXYXNtVG9wOjpzdG9yZShqaXQsIGJhc2VNZW1vcnkp
OwogCiAgICAgLy8gRklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UgaGF2ZSB0aGUgc2FtZSBwaW5uZWQgcmVnaXN0ZXJzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgLy8gU2V0IHVwIHRo
ZSBjYWxsZWUncyBiYXNlTWVtb3J5IHJlZ2lzdGVyIGFzIHdlbGwgYXMgdGhlIG1lbW9yeSBzaXpl
IHJlZ2lzdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21U
b3AuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRvcC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2ZTVkNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Ub3AuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldhc21Ub3AuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
KworI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgorI2luY2x1ZGUg
IkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM1BhdGNoUG9pbnRWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCisjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDxtdXRleD4K
KyNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorVCBnZXRXZWJBc3NlbWJseVRMU1Nsb3QoKQoreworICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8VD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XRUJBU1NFTUJMWV9LRVkp
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgc2V0V2ViQXNzZW1ibHlUTFNTbG90
KFQgdmFsdWUpCit7CisgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XRUJBU1NF
TUJMWV9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKTsKK30KKwordm9pZCBpbml0aWFs
aXplV2FzbVRvcCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZSwgW10geworICAgICAgICBzZXRXZWJBc3NlbWJseVRMU1Nsb3QobnVs
bHB0cik7CisgICAgfSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3Bh
Y2UgSlNDIHsKKwordXNpbmcgbmFtZXNwYWNlIEIzOworCitKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IFdhc21Ub3A6OmxvYWQoKQorICAgIHsKKyAgICBpbml0aWFsaXplV2FzbVRvcCgpOworICAgIHJl
dHVybiBnZXRXZWJBc3NlbWJseVRMU1Nsb3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oKTsKK30K
Kwordm9pZCBXYXNtVG9wOjpzdG9yZShKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQor
eworICAgIGluaXRpYWxpemVXYXNtVG9wKCk7CisgICAgc2V0V2ViQXNzZW1ibHlUTFNTbG90KGlu
c3RhbmNlKTsKK30KKworCit2b2lkIFdhc21Ub3A6OmxvYWQoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQ
UlJlZyBkc3QpCit7CisgICAgaW5pdGlhbGl6ZVdhc21Ub3AoKTsKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9X
RUJBU1NFTUJMWV9LRVkpLCBkc3QpOworI2Vsc2UKKyNlcnJvciBXZWJBc3NlbWJseSB3aXRob3V0
IGZhc3QgVExTIGlzbid0IGltcGxlbWVudGVkIHlldC4KKyNlbmRpZgorfQorCit2b2lkIFdhc21U
b3A6OnN0b3JlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgc3JjKQoreworICAgIGluaXRpYWxp
emVXYXNtVG9wKCk7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBqaXQuc3RvcmVUb1RM
U1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dFQkFTU0VNQkxZX0tFWSkpOworI2Vs
c2UKKyNlcnJvciBXZWJBc3NlbWJseSB3aXRob3V0IGZhc3QgVExTIGlzbid0IGltcGxlbWVudGVk
IHlldC4KKyNlbmRpZgorfQorCitWYWx1ZSogV2FzbVRvcDo6bG9hZChQcm9jZWR1cmUmIHByb2Ms
IEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAg
WyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIFdhc21Ub3A6OmxvYWQoaml0LCBwYXJhbXNbMF0u
Z3ByKCkpOworICAgICAgICB9KTsKKworICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworfQorCit2b2lkIFdhc21U
b3A6OnN0b3JlKFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ssIFZhbHVlKiBhcmcp
Cit7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OworICAgICAgICAgICAgV2FzbVRvcDo6c3RvcmUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
QVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9w
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2MzOThhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Ub3AuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDQ2FsbEhlbHBlcnM7CitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7
CisKK25hbWVzcGFjZSBCMyB7CitjbGFzcyBWYWx1ZTsKK2NsYXNzIFByb2NlZHVyZTsKK2NsYXNz
IEJhc2ljQmxvY2s7Cit9CisKK2NsYXNzIFdhc21Ub3AgeworICAgIFdhc21Ub3AoKTsKKyAgICBX
YXNtVG9wKGNvbnN0IFdhc21Ub3AmKSA9IGRlbGV0ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGxvYWQoKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqKTsKKworICAgIHN0YXRpYyB2b2lkIGxvYWQoQ0NhbGxIZWxwZXJz
JiwgR1BSUmVnKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShDQ2FsbEhlbHBlcnMmLCBHUFJSZWcp
OworCisgICAgc3RhdGljIEIzOjpWYWx1ZSogbG9hZChCMzo6UHJvY2VkdXJlJiwgQjM6OkJhc2lj
QmxvY2sqKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShCMzo6UHJvY2VkdXJlJiwgQjM6OkJhc2lj
QmxvY2sqLCBCMzo6VmFsdWUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCAwNGVkNjY2Li4xNzMzNWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAi
V2FzbUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlICJXYXNtVG9w
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMTcsMTEgKzExOCwxMiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVuY3Rpb24s
IGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKIAogICAgIC8vIEZJWE1F
IERvIGF3YXkgd2l0aCB0aGlzIGVudGlyZSBmdW5jdGlvbiwgYW5kIG9ubHkgdXNlIHRoZSBlbnRy
eXBvaW50IGdlbmVyYXRlZCBieSBCMy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NjQ4NgotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1i
bHlJbnN0YW5jZSA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKLSAgICB2bS50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2UgPSB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCk7CisgICAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gV2FzbVRvcDo6bG9h
ZCgpOworICAgIFdhc21Ub3A6OnN0b3JlKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAg
QVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlv
bi0+aW5zdGFuY2UoKSA9PSBXYXNtVG9wOjpsb2FkKCkpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJh
d1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHBy
ZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgV2FzbVRvcDo6c3RvcmUocHJldkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yLmgKaW5kZXggMWIyMTRjZS4uM2EzNzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CiBjbGFzcyBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4MmE2NzAuLjBiNWQ4OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMTUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5zdGVhZCBv
ZiBvbiBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmFzdFRMUy5oOiByZXNlcnZlIG9uZSBrZXkgZm9yIFdlYkFzc2VtYmx5LCBkZWxldGUg
YSBidW5jaAorICAgICAgICBvZiBkZWFkIGNvZGUgd2hpY2ggY2xhbmcgY291bGRuJ3QgY29tcGls
ZSAoaXQncyB2YWxpZCBHQ0MgYXNzZW1ibHkKKyAgICAgICAgd2hpY2ggTExWTSBkaXNsaWtlcyku
CisKIDIwMTctMDMtMTUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFNvcnQgWGNvZGUgcHJvamVjdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFz
dFRMUy5oIGIvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCmluZGV4IDYzZjg4MzkuLjMyZGJjMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GYXN0VExTLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNp
bmNsdWRlIDxTeXN0ZW0vcHRocmVhZF9tYWNoZGVwLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00NCw1MiArNDUsMjAgQEAgbmFtZXNwYWNlIFdU
RiB7CiAvLyBhY2NpZGVudGFsbHkgdXNlIHRoZSBzYW1lIGtleSBmb3IgbW9yZSB0aGFuIG9uZSB0
aGluZy4KIAogI2RlZmluZSBXVEZfVEhSRUFEX0RBVEFfS0VZIFdURl9GQVNUX1RMU19LRVkwCisj
ZGVmaW5lIFdURl9XRUJBU1NFTUJMWV9LRVkgV1RGX0ZBU1RfVExTX0tFWTEKICNkZWZpbmUgV1RG
X1RFU1RJTkdfS0VZIFdURl9GQVNUX1RMU19LRVkzCiAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQotLy8gQmVsb3cgaXMgdGhlIGNvZGUgdGhhdCB0aGUgSklUIHdpbGwgZW1pdC4KLQotI2lmIENQ
VShYODZfNjQpCi1pbmxpbmUgdWludHB0cl90IGxvYWRGYXN0VExTKHVuc2lnbmVkIG9mZnNldCkK
LXsKLSAgICB1aW50cHRyX3QgcmVzdWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1v
dnEgJSVnczolMSwgJTAiCi0gICAgICAgIDogIj1yIihyZXN1bHQpCi0gICAgICAgIDogInIiKG9m
ZnNldCkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbGlm
IENQVShBUk02NCkKLWlubGluZSB1aW50cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgcGFzc2Vk
T2Zmc2V0KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAgdWludHB0cl90IG9mZnNldCA9
IHBhc3NlZE9mZnNldDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJtcnMgJTAsIFRQSURS
Uk9fRUwwXG5cdCIKLSAgICAgICAgImFuZCAlMCwgJTAsICMweGZmZmZmZmZmZmZmZmZmZjhcblx0
IgotICAgICAgICAibGRyICUwLCBbJTAsICUxXSIKLSAgICAgICAgOiAiPXIiKHJlc3VsdCkKLSAg
ICAgICAgOiAiciIob2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotI2Vsc2UKLSNlcnJvciAiQmFkIGFyY2hpdGVjdHVyZSIKLSNlbmRpZgotI2VuZGlm
IC8vIEVOQUJMRShGQVNUX1RMU19KSVQpCi0KIGlubGluZSB1bnNpZ25lZCBmYXN0VExTT2Zmc2V0
Rm9yS2V5KHVuc2lnbmVkIGxvbmcgc2xvdCkKIHsKICAgICByZXR1cm4gc2xvdCAqIHNpemVvZih2
b2lkKik7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6ZmFz
dFRMU09mZnNldEZvcktleTsKLQogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi11c2luZyBXVEY6
OmxvYWRGYXN0VExTOwordXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5OwogI2VuZGlmCiAK
ICNlbmRpZiAvLyBIQVZFKEZBU1RfVExTKQotLSAKMi4xMC4xCgo=
</data>
<flag name="review"
          id="326115"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304665</attachid>
            <date>2017-03-16 12:05:13 -0700</date>
            <delta_ts>2017-03-17 11:02:27 -0700</delta_ts>
            <desc>Update for Linux</desc>
            <filename>bug-169611-20170317040511.patch</filename>
            <type>text/plain</type>
            <size>43009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTkzZWMyZDNiY2Y1MGI1YWNkYzVmNDQ2OTg3MTczNjNhMWUwZjNlLi43NTZkYjE1MzI5ODgwZDI4
NzU0OTA2MDIwZGViMWRkOWVkYTY4ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMy0xNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IHN0b3JlIHN0YXRlIGluIFRMUyBpbnN0ZWFkIG9mIG9u
IFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2lu
ZyB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpbnN0ZWFkIG9mIFZNIG1ha2VzIGNvZGUgbW9yZSBwb3Np
dGlvbgorICAgICAgICBpbmRlcGVuZGVudC4gV2UgdXNlZCB0byBzdG9yZSB0aGUgV2ViQXNzZW1i
bHkgdG9wIEluc3RhbmNlICh0aGUKKyAgICAgICAgbGF0ZXN0IG9uZSBpbiB0aGUgY2FsbCBzdGFj
aykgb24gVk0sIG5vdyB3ZSBpbnN0ZWFkIHN0b3JlIGl0IGluCisgICAgICAgIFRMUy4gVGhpcyB0
b3AgSW5zdGFuY2UgaXMgdXNlZCB0byBhY2Nlc3MgYSBidW5jaCBvZiBzdGF0ZSBzdWNoIGFzCisg
ICAgICAgIE1lbW9yeSBsb2NhdGlvbiwgc2l6ZSwgdGFibGUgKGZvciBjYWxsX2luZGlyZWN0KSwg
ZXRjLgorCisgICAgICAgIE1ha2luZyB0aGUgY29kZSBQSUMgbWVhbnMgZnV0dXJlIHBhdGNoZXMg
d2lsbCBiZSBhYmxlIHRvCisgICAgICAgIHBvc3RNZXNzYWdlIGFuZCBzdHJ1Y3R1cmVkIGNsb25l
IGludG8gSURCIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgICAgIHJlY29tcGlsZSB0aGUgY29kZS4g
VGhpcyB3YXNuJ3QgcG9zc2libGUgYmVmb3JlIGJlY2F1c2Ugd2UKKyAgICAgICAgaGFyZC1jb2Rl
ZCB0aGUgYWRkcmVzcyBvZiBWTSBhdCBjb21waWxhdGlvbiB0aW1lLiBUaGF0IGRvZXNuJ3QKKyAg
ICAgICAgd29yayBiZXR3ZWVuIHdvcmtlcnMsIGFuZCBkb2Vzbid0IHdvcmsgYWNyb3NzIHJlbG9h
ZHMgKHdoaWNoIElEQgorICAgICAgICBpcyBpbnRlbmRlZCB0byBkbykuCisKKyAgICAgICAgSXQn
bGwgYWxzbyBwb3RlbnRpYWxseSBtYWtlIGNvZGUgZmFzdGVyIG9uY2Ugd2Ugc3RhcnQgdHVuaW5n
CisgICAgICAgIHdoYXQncyBpbiBUTFMsIHdoYXQncyBpbiB3aGljaCBvZiB0aGUgNCBmcmVlIHNs
b3RzLCBhbmQgd2hhdCdzIGluCisgICAgICAgIHBpbm5lZCByZWdpc3RlcnMuIEknbSBsZWF2aW5n
IHRoaXMgdHVuaW5nIGZvciBsYXRlciBiZWNhdXNlCisgICAgICAgIHRoZXJlJ3MgbG93ZXIgbHlp
bmcgZnJ1aXQgZm9yIHVzIHRvIHBpY2suCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6c3RvcmVUb1RMU1B0cik6IHdlIHByZXZpb3VzbHkgZGlkbid0IGhhdmUKKyAgICAgICAg
dGhlIGNvZGUgcmVxdWlyZWQgdG8gc3RvcmUgdG8gVExTLCBvbmx5IHRvIGxvYWQKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzdG9yZVRvVExTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVRvVExTNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3Rv
cmVUb1RMUzMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmxvYWRGcm9tVExTNjQpOiB3YXMg
bG9hZGluZyAzMi1iaXQgaW5zdGVhZCBvZiA2NC1iaXQKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0b3JlVG9UTFM2NCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdmxfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6Om1vdnFfcm0pOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0RmFzdFRMU0xvYWQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dEZhc3RUTFNTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorICAgICAgICAqIGppdC9S
ZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6CisgICAgICAgIChK
U0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxsKToKKyAgICAg
ICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRp
b25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNl
QW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0
YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CaW5k
aW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwpOgor
ICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAgIChKU0M6Oldhc206Ondhc21U
b1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbVRvcC5jcHA6IEFkZGVkLiBIYW5kbGUgYWxsICJU
b3AiIHdhc20gc3RhdGUgaGVyZSBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgIChKU0M6Oldhc21U
b3A6OmxvYWQpOgorICAgICAgICAoSlNDOjpXYXNtVG9wOjpzdG9yZSk6CisgICAgICAgICogd2Fz
bS9XYXNtVG9wLmg6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oOgorCiAyMDE3LTAzLTE2
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGNvcHkgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA5OWNhOWY2ZGNlODll
NGNjM2YzNzVlNjI3MTQyYWExN2VjMGM0NzU3Li45NjMwOTViMDc0ZjU1YTQ0OTIxYTViODYxOTY4
MWI2ZjY0NDVmMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTE2ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3Rh
dGUgaW4gVExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RUTFMuaDogcmVzZXJ2ZSBvbmUga2V5IGZvciBX
ZWJBc3NlbWJseSwgZGVsZXRlIGEgYnVuY2gKKyAgICAgICAgb2YgZGVhZCBjb2RlIHdoaWNoIGNs
YW5nIGNvdWxkbid0IGNvbXBpbGUgKGl0J3MgdmFsaWQgR0NDIGFzc2VtYmx5CisgICAgICAgIHdo
aWNoIExMVk0gZGlzbGlrZXMpLgorICAgICAgICAoV1RGOjpsb2FkRmFzdFRMUyk6IERlbGV0ZWQu
CisKIDIwMTctMDMtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtVTklYXSBJbXBsZW1lbnQgY3VycmVudFNlYXJjaExvY2FsZUlEKCkgYW5k
IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggZjRiZjg4MWE2ODFkODJhZGEzYTFjMjlmMTRmYTc3MTgzY2Y4ZTU4Yi4uNGYxZjdj
ZmNlOWNhOWIzYzE0ODQ4NGVlYjcyNTdlNjE1ODJmYjExMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtOTM5LDYgKzkzOSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgd2FzbS9XYXNtUGFnZUNvdW50LmNwcAogICAgIHdhc20vV2FzbVBsYW4uY3BwCiAg
ICAgd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorICAgIHdhc20vV2FzbVRvcC5jcHAKICAgICB3YXNt
L1dhc21WYWxpZGF0ZS5jcHAKIAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUNhbGxlZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmU2YmM4ZWQyODhmY2M5M2NjYzgwYzM5
NzVlZTRkOWUyZjQ3MTUzZi4uNjFlYmIwOWRlMzkxNWNlNzE1ZDEyZmI2NDFkNWMzMTlhZDBmMDU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNzksNiArMjA3OSw4IEBACiAJ
CUFEMkZDQzMwMURCODNENDkwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Lmgg
Ki87IH07CiAJCUFEMkZDQzMzMURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0
NTMwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMkUxRTc4NjUzRjAw
OEFGMTU3IC8qIFdhc21Ub3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQ0MTJCMkMxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3AuY3BwICovOyB9
OworCQlBRDQxMkIyRjFFNzg2NTQyMDA4QUYxNTcgLyogV2FzbVRvcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMkQxRTc4NjUyMzAwOEFGMTU3
IC8qIFdhc21Ub3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBE
RUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3
MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2Rl
T3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0
TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5j
cHAgKi87IH07CkBAIC00NjQ0LDYgKzQ2NDYsOCBAQAogCQlBRDJGQ0MyRTFEQjgzOUY3MDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dlYkFzc2VtYmx5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQy
RkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtRm9ybWF0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ0MTJCMkMxRTc4NjUyMzAwOEFGMTU3IC8qIFdhc21Ub3Au
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVRvcC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjJEMUU3ODY1MjMwMDhBRjE1NyAvKiBX
YXNtVG9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Ub3AuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1
bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2Rl
T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIw
MDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29y
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjYzLDYgKzYyNjcsOCBAQAog
CQkJCTUzRjQwRTg0MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCAqLywKIAkJCQlB
RDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5jcHAgKi8sCiAJCQkJQUQ3
NDM4QkYxRTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCAqLywKKwkJCQlBRDQxMkIy
QzFFNzg2NTIzMDA4QUYxNTcgLyogV2FzbVRvcC5jcHAgKi8sCisJCQkJQUQ0MTJCMkQxRTc4NjUy
MzAwOEFGMTU3IC8qIFdhc21Ub3AuaCAqLywKIAkJCQk1M0ZGN0Y5QTFEQkZEMkI5MDBBMjZDQ0Mg
LyogV2FzbVZhbGlkYXRlLmNwcCAqLywKIAkJCQk1M0ZGN0Y5ODFEQkZDRDkwMDBBMjZDQ0MgLyog
V2FzbVZhbGlkYXRlLmggKi8sCiAJCQkpOwpAQCAtOTI3MSw2ICs5Mjc3LDcgQEAKIAkJCQlBN0E4
QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGNDAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQ0MTJCMkYxRTc4NjU0MjAwOEFGMTU3IC8qIFdh
c21Ub3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBV
bmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMjQxRENBOUZBNDAw
MTRGOUZFIC8qIFVubGlua2VkRXZhbENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRB
RDkxMjMxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAxOTUsNiArMTAyMDIsNyBAQAogCQkJCTBGODkzQkRCMTkzNkUyM0Mw
MDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkZDQ0ZFMThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQzA5N0ExMTQ2QjI4Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQUQ0MTJCMkUxRTc4NjUzRjAwOEFGMTU3IC8qIFdhc21Ub3AuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMjcxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMjkxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDhBMzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZv
ck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmlu
ZGV4IGRkZmM5MjgyOTM1MTM4ZjcwOTAxYmFmNWI3NTQxZDkxYmFmMjY5ZWUuLmEyMTU4MmQyMjBk
MWJkYzkzNjFhNmE3MzM4ZjJhNGViMjA4NGIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTYzMiw2ICs2MzIsMTAgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICB7CiAg
ICAgICAgIGxvYWRGcm9tVExTMzIob2Zmc2V0LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3Jl
VG9UTFNQdHIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAg
IHN0b3JlVG9UTFMzMihzcmMsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFi
ZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKQEAgLTk0Niw2ICs5NTAsMTAgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBw
dWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTNjQo
b2Zmc2V0LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJRCBz
cmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMsIG9m
ZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgK
aW5kZXggN2Y4YjY1ZDYyN2Q1NmNjMmIzYmE4ZjAxOThkMWZiZDgyNzY2ZGE0My4uMTZjMDJlOTE4
OTkzMzA4MzZiNWQzZmQ3ODJhOTU1NzcyNjU5MTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2MDAsNyAr
MzYwMCw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgCiAjaWYgRU5BQkxFKEZBU1Rf
VExTX0pJVCkKICAgICAvLyBUaGlzIHdpbGwgdXNlIHNjcmF0Y2ggcmVnaXN0ZXJzIGlmIHRoZSBv
ZmZzZXQgaXMgbm90IGxlZ2FsLgotICAgIAorCiAgICAgdm9pZCBsb2FkRnJvbVRMUzMyKHVpbnQz
Ml90IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5t
cnNfVFBJRFJST19FTDAoZHN0KTsKQEAgLTM2MTQsNiArMzYxNCwyNCBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJs
ZXIsIE1hY3JvQQogICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjcpLCBkc3QpOwogICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhkc3QsIG9mZnNldCksIGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBz
dG9yZVRvVExTMzIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpOworICAgICAgICBBU1NFUlQoc3JjICE9IHRtcCk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1yc19UUElEUlJPX0VMMCh0bXApOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjcpLCB0
bXApOworICAgICAgICBzdG9yZTMyKHNyYywgQWRkcmVzcyh0bXAsIG9mZnNldCkpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlVG9UTFM2NChSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRy
dXN0ZWRJbW0zMih+NyksIHRtcCk7CisgICAgICAgIHN0b3JlNjQoc3JjLCBBZGRyZXNzKHRtcCwg
b2Zmc2V0KSk7CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShGQVNUX1RMU19KSVQpCiAgICAgCiAg
ICAgLy8gTWlzYyBoZWxwZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDE1YjIy
MGMzYWJjNTk2Nzk3ZGZkOWEwOGRkNDRmYTU0ODc1NzZjZTIuLjAzMGQ4MDk0YzM5NzNlMDJhYjEz
NzM4ODU3MDY4Mzk3ODc0NzM4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTM4NjQsNiArMzg2
NCwxMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPFg4NkFzc2VtYmxlciwgTWFjcgogICAgICAgICBtX2Fzc2VtYmxlci5ncygp
OwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yKG9mZnNldCwgZHN0KTsKICAgICB9CisgICAg
dm9pZCBzdG9yZVRvVExTMzIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfcm0o
c3JjLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdp
dGhCcmVha3BvaW50KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgKaW5kZXggYmMzNGEwZGZmNWZjMDc1OThkMzU2NGM2YmNjOWFkOTNlNmNlOGI5OS4uYTkxZjYw
OGNmZmY3NDliMzk4ZDZhYTU5NThiODBmNDlmZmExYzNkMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTcw
NSw3ICsxNzA1LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICB2b2lkIGxvYWRGcm9tVExTNjQodWludDMyX3Qgb2Zm
c2V0LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIob2Zmc2V0LCBkc3QpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX21yKG9mZnNldCwgZHN0KTsKKyAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTNjQo
UmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmdzKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfcm0oc3JjLCBvZmZzZXQpOwogICAg
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAppbmRleCBhNGM4ZTMyNzE4MWNhMmRlZTNlNTY0NDc3MTQ1YmQxZjRlYWI4N2U3Li4z
NDMwMjJlNDMwYjYxMjk4ZGRjN2Y0NDY0Y2RlMjcwMTMxYWM3YThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTIzNjAsNiArMjM2MCwx
MSBAQCBjbGFzcyBYODZBc3NlbWJsZXIgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BB
ZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOwogICAgIH0KIAorICAgIHZvaWQgbW92bF9ybShS
ZWdpc3RlcklEIHNyYywgdWludDMyX3QgYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CisgICAgfQorCiAjaWYgQ1BV
KFg4Nl82NCkKICAgICB2b2lkIG1vdnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0
KQogICAgIHsKQEAgLTIzODEsNiArMjM4NiwxMSBAQCBjbGFzcyBYODZBc3NlbWJsZXIgewogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjRB
ZGRyKE9QX01PVl9Fdkd2LCBzcmMsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX21F
QVgoY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX01PVl9FQVhPdik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGM0
Y2JlMTgzOThmOThhYjFhMzdjMDA5YzY4OGNiZTBkZDA1ZWM1NWQuLjVhNTViNGRmYjY3ZjI0NTk3
N2Y3MmExOWFhZGRjMzhhZjYyMjRmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CkBAIC0xNTIxMSw3ICsxNTIxMSw3IEBAIHZvaWQgdGVzdFdhc21BZGRyZXNzKCkKICAgICAgICAg
Q0hFQ0tfRVEobnVtVG9TdG9yZSwgdmFsdWUpOwogfQogCi12b2lkIHRlc3RGYXN0VExTKCkKK3Zv
aWQgdGVzdEZhc3RUTFNMb2FkKCkKIHsKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIF9w
dGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEVTVElOR19LRVksIGJpdHdpc2VfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGJlZWYpKSk7CkBAIC0xNTIyNiwxMyArMTUy
MjYsMzcgQEAgdm9pZCB0ZXN0RmFzdFRMUygpCiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBqaXQubG9hZEZy
b21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShXVEZfVEVTVElOR19LRVkpLCBwYXJhbXNbMF0u
Z3ByKCkpOwogICAgICAgICB9KTsKLSAgICAKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CiAgICAgCiAgICAgQ0hFQ0tfRVEo
Y29tcGlsZUFuZFJ1bjx1aW50cHRyX3Q+KHByb2MpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4
YmVlZikpOwogI2VuZGlmCiB9CiAKK3ZvaWQgdGVzdEZhc3RUTFNTdG9yZSgpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkp
OworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZGVhZCksIHNjcmF0Y2gpOwor
ICAgICAgICAgICAgaml0LnN0b3JlVG9UTFNQdHIoc2NyYXRjaCwgZmFzdFRMU09mZnNldEZvcktl
eShXVEZfVEVTVElOR19LRVkpKTsKKyAgICAgICAgfSk7CisKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisKKyAgICBjb21waWxlQW5kUnVu
PHZvaWQ+KHByb2MpOworICAgIENIRUNLX0VRKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KF9wdGhy
ZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfVEVTVElOR19LRVkpKSwgc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigweGRlYWQpKTsKKyNlbmRpZgorfQorCiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVy
IGRvZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91
YmxlIHplcm8oKQogewpAQCAtMTY3NjAsNyArMTY3ODQsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFy
KiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC0gNSkpOwogICAgIFJVTih0ZXN0V2FzbUFkZHJlc3MoKSk7CiAg
ICAgCi0gICAgUlVOKHRlc3RGYXN0VExTKCkpOworICAgIFJVTih0ZXN0RmFzdFRMU0xvYWQoKSk7
CisgICAgUlVOKHRlc3RGYXN0VExTU3RvcmUoKSk7CiAKICAgICBpZiAoaXNYODYoKSkgewogICAg
ICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwgSW50NjQsIDEsIEFp
cjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCA1NjAxYjY1NDU0NGNkN2UyNTU1OTQwYWE4MmQ2OGMxNmM1ZjlmMjgz
Li5hZjU5YTk4ODlmMjgyZjUyODQ4YjU1Njk3ZjFkMGQ0N2YzMmM3YWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKKyNpbmNsdWRlICJXYXNtVG9wLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTg4LDExICs1ODksMTEg
QEAgc3RhdGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNh
bGxlZSkKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiB9CiAKLXN0YXRpYyBKU0NlbGwq
IHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25l
cigpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIEVhY2ggV2ViQXNzZW1ibHku
SW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwg
d2hpY2ggYXJlIHRoZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCi0gICAgcmV0dXJuIHZt
LnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIFdhc21Ub3A6
OmxvYWQoKS0+bW9kdWxlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTYxMSw3ICs2MTIsNyBAQCB2b2lkIGxpbmtG
b3IoCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJs
b2NrKCk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFs
aWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2Fs
bGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIoKSA6IGNhbGxl
ckNvZGVCbG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0lu
Zm8uaXNMaW5rZWQoKSk7CkBAIC03MzQsNyArNzM1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKAogICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZt
LCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMgc3R1
YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93bmVyID0gaXNX
ZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJsb2NrOworICAg
IEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25lcigpIDogY2Fs
bGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBDYWxsVmFyaWFudExpc3Qg
bGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApp
bmRleCA5YTY1NTA2YjM4YTc3NjVhZDZiMTNmNjMzOWY0MGRkNGE5YWEzNzA1Li5jYzVmYzMzZDJi
NjRjZDc3NjgyNmI5NDMxMDk2NTkyMmU5M2YyMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtK
SVQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldhc21Ub3Au
aCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpAQCAtMTE1Niw3ICsx
MTU3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVu
a0dlbmVyYXRvcihWTSogdm0pCiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9i
amVjdCgpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IFdhc21U
b3A6OmxvYWQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4
ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgp
LCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwNjRkYjIwNjI2MzljZmYyNjk5ZGVmMzE0MDJmYTc3NWI3
ZmZhNzQwLi44NTExNTQyYjc3ZGZjOGU2ZjJiZWFiZjFmODkzYzc3MzlhYjc0YjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNzcsNyArMTc3LDYgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAg
ICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1l
Ojpub0NhbGxlcigpKQotICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKG51bGxwdHIpCiAg
ICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0
YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBw
cm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAxNDQwODZkOTc0MDE5NzBiYWU2MWMyMWRmMzdl
N2MxZmU3YmY1NmZlLi41NDc0MDkwNTFlMzY3NmI5MDZiYzk4MDNkZWE3NDljZDA2ZjliMzM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwMyw3ICsxMDMsNiBAQCBjbGFzcyBJ
bnRlcnByZXRlcjsKIGNsYXNzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb247CiBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwotY2xhc3MgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZTsKIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMzE1LDcgKzMxNCw2IEBAIGNsYXNzIFZNIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFZNPiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQg
bWlnaHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFt
ZSB7IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBh
MmU1Y2NjOGM0YjI1OWIyMjc5YjQwMDBhYTJiNGJhM2M1NTI2YzMuLjU0NTBmNTkzZGUxNmY0NjJk
MTJiODU4NjJiOWE5NTc0MGM5MWE3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIldhc21F
eGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgIldhc21Ub3AuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KIAogdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqIHB0cikKQEAgLTI3MCw4ICsyNzEs
NyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5m
b3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9u
KCkuc2V0dXBGcmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0
aW9uLCBtX3Byb2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNl
VmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksICZtX3ZtLnRvcEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSkpOworICAgIG1faW5zdGFuY2VWYWx1ZSA9IFdhc21Ub3A6OmxvYWQobV9w
cm9jLCBtX2N1cnJlbnRCbG9jayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBA
IC0yNzksMTIgKzI3OSwxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZhbHVl
KiBzaXplOwogfTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRT
aXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrKQorc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZh
bHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAg
ICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
ZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCku
bWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXpl
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJs
eUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90
KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGRlY2x0eXBlKFdhc21Ub3A6OmxvYWQoKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgp
KSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKFdhc21Ub3A6OmxvYWQoKS0+bWVtb3J5KCkt
Pm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBv
biB0aGlzIHNpemUiKTsKICAgICBNZW1vcnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0
LmJhc2UgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZz
ZXRPZk1lbW9yeSgpKTsKICAgICByZXN1bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFz
c2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNpemUoKSk7CkBAIC0yOTIsOSArMjkyLDkgQEAgc3RhdGlj
IE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUqIGlu
c3RhbmNlLCBQcm9jZWR1cmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCBy
ZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShWTSYgdm0sIGNvbnN0IE1lbW9yeUluZm9ybWF0
aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2Nr
KiBibG9jaykKK3N0YXRpYyB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0
IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBw
cm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIGluc3RhbmNlLCBibG9jay0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
KSk7CisgICAgV2FzbVRvcDo6c3RvcmUocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlm
ICghIW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJl
Z3MgPSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwor
ICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gV2FzbVRvcDo6bG9hZCgp
OwogICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1l
bW9yeSgpOwogCiAgICAgICAgIGlmIChkZWx0YSA8IDApCkBAIC00MTQsMTQgKzQxNCwxNCBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93
TWVtb3J5KSksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOwogCi0gICAgcmVzdG9y
ZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZh
bHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9i
YWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50
QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRD
dXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
LSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0
YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVl
ID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAg
c3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRo
aXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtOTAx
LDcgKzkwMSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3Rh
bmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFu
Y2VWYWx1ZSwgbV9wcm9jLCBjb250aW51YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1i
bHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29u
dGludWF0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0Nv
bnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFy
Z3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQpIHsKQEAgLTk5NSw3ICs5OTUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgU2lnbmF0dXJlSW5k
ZXggcwogICAgICAgICB9KTsKIAogICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBh
bm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVk
IG91ciBNZW1vcnkuCi0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9p
bmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAg
ICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNl
VmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAg
LTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8
Q29udHJvbEVudHJ5PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzCiAgICAgZGF0YUxvZ0xu
KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYgdm0sIENvbXBp
bGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW50ZXJuYWxGdW5jdGlvbiYg
ZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1h
dGlvbiYgaW5mbykKK3N0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0
aW9uLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8pCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250ZXh0Lmpz
RW50cnlwb2ludEpJVDsKIApAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRl
SlNUb1dhc21XcmFwcGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNv
bnRleHQKIAogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVt
b3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRQdHIo
JnZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgYmFzZU1lbW9yeSk7CisgICAgICAgIFdhc21U
b3A6OmxvYWQoaml0LCBiYXNlTWVtb3J5KTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyczsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+
PSAxKTsKQEAgLTEyMjcsNyArMTIyNyw3IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxXYXNt
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwKICAgICAg
ICAgcmVzdWx0LT53YXNtRW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gcHJvY2VkdXJl
LmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICB9CiAKLSAgICBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIodm0sIGNvbXBpbGF0aW9uQ29udGV4dCwgKnJlc3VsdCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAg
ICBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoY29tcGlsYXRpb25Db250ZXh0LCAqcmVzdWx0LCBzaWdu
YXR1cmUsIGluZm8pOwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBjYmIzZjk5ZWE4ZmQ4MDE3
YTZiOTkwYWE4M2RkYmM2YjlhNmQyYmJjLi5kZmNjMzI2N2RhZTdmNTI4NzhkNGMxMzg4MDdlN2Qx
MjJhYTU3MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3Bw
CkBAIC0zNywxNSArMzcsMTYgQEAKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2Vw
dGlvblR5cGUuaCIKKyNpbmNsdWRlICJXYXNtVG9wLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiAKIHR5cGVkZWYgQ0NhbGxIZWxwZXJzIEpJVDsKIAotc3RhdGljIHZvaWQg
bWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoVk0qIHZtLCBKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0
SW5kZXgsIEdQUlJlZyByZXN1bHQpCitzdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2Vs
bChKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAg
Ly8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2Us
IHdoaWNoIGlzIGlkZW50aWZpZWQgb24gVk0uIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBh
bGwgaXRzIGltcG9ydCBmdW5jdGlvbnMuCi0gICAgaml0LmxvYWRQdHIoJnZtLT50b3BKU1dlYkFz
c2VtYmx5SW5zdGFuY2UsIHJlc3VsdCk7CisgICAgLy8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhl
IGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UuIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBv
ZiBhbGwgaXRzIGltcG9ydCBmdW5jdGlvbnMuCisgICAgV2FzbVRvcDo6bG9hZChqaXQsIHJlc3Vs
dCk7CiAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7CiB9
CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21U
b0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgp
OworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gV2Fz
bVRvcDo6bG9hZCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byog
ZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPnR5
cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgiaTY0
IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVkIGZ1
bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJv
d1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0LDcgKzI1NSw3IEBAIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJ
bmZvPiYgY2FsbExpbmtJbmZvcywKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BS
SW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRo
IGJlbG93LgogICAgIEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoaW1w
b3J0SlNDZWxsR1BSUmVnKSk7CiAKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0
LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAgICBtYXRlcmlhbGl6ZUltcG9y
dEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAgICAgaml0
LnN0b3JlNjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsK
ICAgICBqaXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMpLCBj
YWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwpAQCAtNDI2
LDEzICs0MjcsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9XYXNtKFZN
KiB2bSwgdW5zaWduZWQgaW1wb3J0SW5kZXgpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJbmZv
Ojpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjsKIAogICAgIC8vIEIzJ3MgY2FsbCBjb2RlZ2Vu
IGVuc3VyZXMgdGhhdCB0aGUgSlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4KLSAgICBt
YXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7Cisg
ICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7CiAK
LSAgICAvLyBHZXQgdGhlIGNhbGxlZSdzIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQgaXQg
YXMgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBjYXJl
IG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgorICAgIC8vIEdldCB0aGUgY2FsbGVlJ3Mg
V2ViQXNzZW1ibHkuSW5zdGFuY2UgYW5kIHNldCBpdCBhcyBXYXNtVG9wLiBUaGUgY2FsbGVyIHdp
bGwgdGFrZSBjYXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgogICAgIEdQUlJlZyBi
YXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAgICBBU1NFUlQoYmFz
ZU1lbW9yeSAhPSBzY3JhdGNoKTsKICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Moc2NyYXRj
aCwgV2ViQXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgYmFzZU1lbW9yeSk7
IC8vIEluc3RhbmNlKi4KLSAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgJnZtLT50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpOworICAgIFdhc21Ub3A6OnN0b3JlKGppdCwgYmFzZU1lbW9yeSk7
CiAKICAgICAvLyBGSVhNRSB0aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXZWJB
c3NlbWJseS5JbnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQgdXAgdGhl
IGNhbGxlZSdzIGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IHNpemUg
cmVnaXN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRv
cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZmJhNmUyZjc3YzMwYzgzMjkwYmU0MDk0YzhlMTIxMTUzOTUzYWFhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRvcC5jcHAKQEAgLTAsMCArMSwx
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2FzbVRvcC5oIgorCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisj
aW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZh
bHVlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKKyNpbmNsdWRl
ICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CisKK25hbWVzcGFjZSB7CisKKyNpZiAh
RU5BQkxFKEZBU1RfVExTX0pJVCkKKy8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisvLyBJbiBEYXJ3aW4sIHdlIGhhdmUgc3lzdGVtIHJlc2Vy
dmVkIFRMUyBzbG90cyBmb3IgSlNDLiBUaHVzLCB3ZSBoYXZlIGEgZmFzdCB3YXkgdG8gYWNjZXNz
CisvLyB0aGVzZSBwcmUtYWxsb2NhdGVkIHNsb3RzIGZyb20gSklUIGNvZGUgYnkgdXNpbmcgZ3Mg
c2VnbWVudCBpbiB4ODZfNjQuIEhvd2V2ZXIsIGluIHRoZQorLy8gb3RoZXIgcGxhdGZvcm1zIChs
aWtlIExpbnV4KSwgd2UgZG8gbm90IGhhdmUgc3VjaCByZXNlcnZlZCBzbG90cyBmb3IgSlNDLiBJ
biB0aGF0IGNhc2UsCisvLyB3ZSBzaG91bGQgdXNlIHBpbm5lZCByZWdzdGVyIGFzIGEgZmFsbGJh
Y2suIFNpbmNlIHdlIGRvIG5vdCBpbXBsZW1lbnQgaXQgeWV0LCB3ZSBqdXN0IHVzZQorLy8gYSBn
bG9iYWwgdmFyaWFibGUgYXMgYSBzdG9yYWdlIGZvciB0aGUgV2FzbSBzdGF0ZS4gVGhpcyBpcyBz
YWZlIHVudGlsIHdlIHN0YXJ0IGV4ZWN1dGluZworLy8gV2FzbSBjb2RlIGluIG11bHRpcGxlIHRo
cmVhZHMuCitzdGF0aWMgdm9pZCogV2ViQXNzZW1ibHlLZXk7CisjZW5kaWYKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK1QgZ2V0V2ViQXNzZW1ibHlUTFNTbG90KCkKK3sKKyNpZiBFTkFCTEUoRkFT
VF9UTFNfSklUKQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oX3B0aHJlYWRfZ2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9XRUJBU1NFTUJMWV9LRVkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxUPihXZWJBc3NlbWJseUtleSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3ZvaWQgc2V0V2ViQXNzZW1ibHlUTFNTbG90KFQgdmFsdWUpCit7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dFQkFT
U0VNQkxZX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpOworI2Vsc2UKKyAgICBXZWJB
c3NlbWJseUtleSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpOworI2VuZGlmCit9CisKK3Zv
aWQgaW5pdGlhbGl6ZVdhc21Ub3AoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFtdIHsKKyAgICAgICAgc2V0V2ViQXNzZW1ibHlU
TFNTbG90KG51bGxwdHIpOworICAgIH0pOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UK
KworbmFtZXNwYWNlIEpTQyB7CisKK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBXYXNtVG9wOjpsb2FkKCkKK3sKKyAgICBpbml0aWFsaXplV2FzbVRvcCgpOwor
ICAgIHJldHVybiBnZXRXZWJBc3NlbWJseVRMU1Nsb3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4o
KTsKK30KKwordm9pZCBXYXNtVG9wOjpzdG9yZShKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3Rh
bmNlKQoreworICAgIGluaXRpYWxpemVXYXNtVG9wKCk7CisgICAgc2V0V2ViQXNzZW1ibHlUTFNT
bG90KGluc3RhbmNlKTsKK30KKworCit2b2lkIFdhc21Ub3A6OmxvYWQoQ0NhbGxIZWxwZXJzJiBq
aXQsIEdQUlJlZyBkc3QpCit7CisgICAgaW5pdGlhbGl6ZVdhc21Ub3AoKTsKKyNpZiBFTkFCTEUo
RkFTVF9UTFNfSklUKQorICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5
KFdURl9XRUJBU1NFTUJMWV9LRVkpLCBkc3QpOworI2Vsc2UKKyAgICBqaXQubG9hZFB0cigmV2Vi
QXNzZW1ibHlLZXksIGRzdCk7CisjZW5kaWYKK30KKwordm9pZCBXYXNtVG9wOjpzdG9yZShDQ2Fs
bEhlbHBlcnMmIGppdCwgR1BSUmVnIHNyYykKK3sKKyAgICBpbml0aWFsaXplV2FzbVRvcCgpOwor
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaml0LnN0b3JlVG9UTFNQdHIoc3JjLCBmYXN0
VExTT2Zmc2V0Rm9yS2V5KFdURl9XRUJBU1NFTUJMWV9LRVkpKTsKKyNlbHNlCisgICAgaml0LnN0
b3JlUHRyKHNyYywgJldlYkFzc2VtYmx5S2V5KTsKKyNlbmRpZgorfQorCitWYWx1ZSogV2FzbVRv
cDo6bG9hZChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
Pihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIFdhc21U
b3A6OmxvYWQoaml0LCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKworICAgIHJldHVy
biBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNo
cG9pbnQpOworfQorCit2b2lkIFdhc21Ub3A6OnN0b3JlKFByb2NlZHVyZSYgcHJvYywgQmFzaWNC
bG9jayogYmxvY2ssIFZhbHVlKiBhcmcpCit7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdp
bigpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJn
LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgV2FzbVRvcDo6c3RvcmUoaml0
LCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVG9wLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVG9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2MzOThhMTA4Y2EwMGMwMzI0NWY1MjNhZDE4MmUyYjMwMTYz
MzMxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21U
b3AuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNp
bmNsdWRlICJHUFJJbmZvLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDQ2FsbEhlbHBl
cnM7CitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisKK25hbWVzcGFjZSBCMyB7CitjbGFz
cyBWYWx1ZTsKK2NsYXNzIFByb2NlZHVyZTsKK2NsYXNzIEJhc2ljQmxvY2s7Cit9CisKK2NsYXNz
IFdhc21Ub3AgeworICAgIFdhc21Ub3AoKTsKKyAgICBXYXNtVG9wKGNvbnN0IFdhc21Ub3AmKSA9
IGRlbGV0ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGxv
YWQoKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKKwor
ICAgIHN0YXRpYyB2b2lkIGxvYWQoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnKTsKKyAgICBzdGF0aWMg
dm9pZCBzdG9yZShDQ2FsbEhlbHBlcnMmLCBHUFJSZWcpOworCisgICAgc3RhdGljIEIzOjpWYWx1
ZSogbG9hZChCMzo6UHJvY2VkdXJlJiwgQjM6OkJhc2ljQmxvY2sqKTsKKyAgICBzdGF0aWMgdm9p
ZCBzdG9yZShCMzo6UHJvY2VkdXJlJiwgQjM6OkJhc2ljQmxvY2sqLCBCMzo6VmFsdWUqKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAppbmRleCAwNGVkNjY2MGVlMWVkMzczMWRkZWNlZGVjOTk0MGQzMTAzMGY5MWQxLi4x
NzMzNWRjMmNlOTM1MGU3OWEwOWJhZjZkMzcxNDFmMWYxMjZlOTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgog
I2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlICJXYXNtVG9wLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xMTcsMTEgKzExOCwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVuY3Rpb24sIGZpcnN0QXJndW1lbnQs
IGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKIAogICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0
aGlzIGVudGlyZSBmdW5jdGlvbiwgYW5kIG9ubHkgdXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRl
ZCBieSBCMy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4Ngot
ICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHZt
LnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKLSAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UgPSB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCk7CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gV2FzbVRvcDo6bG9hZCgpOworICAgIFdhc21U
b3A6OnN0b3JlKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5j
dGlvbi0+aW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSA9
PSBXYXNtVG9wOjpsb2FkKCkpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50
cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZtLCAmcHJvdG9DYWxsRnJh
bWUpOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHByZXZKU1dlYkFzc2VtYmx5
SW5zdGFuY2U7CisgICAgV2FzbVRvcDo6c3RvcmUocHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIHN3aXRjaCAoc2ln
bmF0dXJlLT5yZXR1cm5UeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgKaW5kZXgg
MWIyMTRjZTE1ZWVlMzFhY2JhOTJkNjM1ZTVjNTEwYzM0MWRhMTI5ZS4uM2EzNzU0MDM4NmY3NDFk
ODM1MDU3Y2FjNmY4MWM2NDNiOTdhZDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgK
QEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CiBjbGFzcyBXZWJBc3NlbWJs
eUluc3RhbmNlUHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExT
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgKaW5kZXggNjNmODgzOTBkNTZiOGViMWY5ODBk
OWM0N2RiODViYjliMDJiYzBmYy4uMzJkYmMxZGE0ZjE0YmE5ODA0MDc0YWQxMzE3MTBlMzdmYzg5
YWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RUTFMuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8cHRocmVhZC5o
PgogI2luY2x1ZGUgPFN5c3RlbS9wdGhyZWFkX21hY2hkZXAuaD4KKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQ0LDUyICs0NSwyMCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIC8vIGFjY2lkZW50YWxseSB1c2UgdGhlIHNhbWUga2V5IGZvciBtb3JlIHRoYW4g
b25lIHRoaW5nLgogCiAjZGVmaW5lIFdURl9USFJFQURfREFUQV9LRVkgV1RGX0ZBU1RfVExTX0tF
WTAKKyNkZWZpbmUgV1RGX1dFQkFTU0VNQkxZX0tFWSBXVEZfRkFTVF9UTFNfS0VZMQogI2RlZmlu
ZSBXVEZfVEVTVElOR19LRVkgV1RGX0ZBU1RfVExTX0tFWTMKIAogI2lmIEVOQUJMRShGQVNUX1RM
U19KSVQpCi0vLyBCZWxvdyBpcyB0aGUgY29kZSB0aGF0IHRoZSBKSVQgd2lsbCBlbWl0LgotCi0j
aWYgQ1BVKFg4Nl82NCkKLWlubGluZSB1aW50cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgb2Zm
c2V0KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAg
ICAibW92cSAlJWdzOiUxLCAlMCIKLSAgICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAgOiAi
ciIob2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
I2VsaWYgQ1BVKEFSTTY0KQotaW5saW5lIHVpbnRwdHJfdCBsb2FkRmFzdFRMUyh1bnNpZ25lZCBw
YXNzZWRPZmZzZXQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDsKLSAgICB1aW50cHRyX3Qgb2Zm
c2V0ID0gcGFzc2VkT2Zmc2V0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1ycyAlMCwg
VFBJRFJST19FTDBcblx0IgotICAgICAgICAiYW5kICUwLCAlMCwgIzB4ZmZmZmZmZmZmZmZmZmZm
OFxuXHQiCi0gICAgICAgICJsZHIgJTAsIFslMCwgJTFdIgotICAgICAgICA6ICI9ciIocmVzdWx0
KQotICAgICAgICA6ICJyIihvZmZzZXQpCi0gICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0jZWxzZQotI2Vycm9yICJCYWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0j
ZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKLQogaW5saW5lIHVuc2lnbmVkIGZhc3RUTFNP
ZmZzZXRGb3JLZXkodW5zaWduZWQgbG9uZyBzbG90KQogewogICAgIHJldHVybiBzbG90ICogc2l6
ZW9mKHZvaWQqKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RG
OjpmYXN0VExTT2Zmc2V0Rm9yS2V5OwotCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLXVzaW5n
IFdURjo6bG9hZEZhc3RUTFM7Cit1c2luZyBXVEY6OmZhc3RUTFNPZmZzZXRGb3JLZXk7CiAjZW5k
aWYKIAogI2VuZGlmIC8vIEhBVkUoRkFTVF9UTFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304795</attachid>
            <date>2017-03-17 11:02:27 -0700</date>
            <delta_ts>2017-03-17 14:40:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>55089</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAyODE5ODE2ZGU0YzZlMTJhYTgyYWNjMzQ4MTRmMGQ1Y2MwYWQyMzFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgOSAr
KysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwg
MzAgKysrKysrKy0KIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAg
ICAgICAgIHwgMTcgKysrKysKIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAg
ICAgICAgICAgICAgIHwgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggICAgIHwgMTAgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCAgICAgICAgICAgICAgICB8IDMxICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oICAgICAgICB8IDQxICsrKysrKysrKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgICAgICAgICAgICAgIHwgIDUgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwgIDkgKystCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgICAgICB8ICAxIC0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICAgICAgIHwgIDUgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCAgIHwgNTgg
KysrKysrKysrKy0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNw
cCAgICAgICAgIHwgMTkgKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmNwcCAgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5oICAgICAgICAgICB8IDQwICsrKysrKysrKysKIC4uLi9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgMTAgKystCiAuLi4v
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCAgICAgICB8ICAzICstCiBT
b3VyY2UvV1RGL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExICsr
KwogU291cmNlL1dURi93dGYvRmFzdFRMUy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz
OSArLS0tLS0tLS0tCiAyNCBmaWxlcyBjaGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKSwgODEgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmNGJmODgxLi42MTVjMzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzEsNiArOTMxLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdh
c20vV2FzbUJpbmRpbmcuY3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCisg
ICAgd2FzbS9XYXNtQ29udGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIu
Y3BwCiAgICAgd2FzbS9XYXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJjZGNjODIuLjVmMDY3MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE3LTAzLTE3ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3RhdGUgaW4g
VExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzaW5nIHRocmVhZC1sb2NhbCBzdG9yYWdlIGluc3RlYWQgb2YgVk0gbWFr
ZXMgY29kZSBtb3JlIHBvc2l0aW9uCisgICAgICAgIGluZGVwZW5kZW50LiBXZSB1c2VkIHRvIHN0
b3JlIHRoZSBXZWJBc3NlbWJseSB0b3AgSW5zdGFuY2UgKHRoZQorICAgICAgICBsYXRlc3Qgb25l
IGluIHRoZSBjYWxsIHN0YWNrKSBvbiBWTSwgbm93IHdlIGluc3RlYWQgc3RvcmUgaXQgaW4KKyAg
ICAgICAgVExTLiBUaGlzIHRvcCBJbnN0YW5jZSBpcyB1c2VkIHRvIGFjY2VzcyBhIGJ1bmNoIG9m
IHN0YXRlIHN1Y2ggYXMKKyAgICAgICAgTWVtb3J5IGxvY2F0aW9uLCBzaXplLCB0YWJsZSAoZm9y
IGNhbGxfaW5kaXJlY3QpLCBldGMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsaW5nIGl0ICJ0
b3AiLCB3aGljaCBpcyBjb25mdXNpbmcsIHdlIG5vdyBqdXN0IGNhbGwKKyAgICAgICAgaXQgV2Fz
bUNvbnRleHQuCisKKyAgICAgICAgTWFraW5nIHRoZSBjb2RlIFBJQyBtZWFucyBmdXR1cmUgcGF0
Y2hlcyB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgcG9zdE1lc3NhZ2UgYW5kIHN0cnVjdHVyZWQg
Y2xvbmUgaW50byBJREIgd2l0aG91dCBoYXZpbmcgdG8KKyAgICAgICAgcmVjb21waWxlIHRoZSBj
b2RlLiBUaGlzIHdhc24ndCBwb3NzaWJsZSBiZWZvcmUgYmVjYXVzZSB3ZQorICAgICAgICBoYXJk
LWNvZGVkIHRoZSBhZGRyZXNzIG9mIFZNIGF0IGNvbXBpbGF0aW9uIHRpbWUuIFRoYXQgZG9lc24n
dAorICAgICAgICB3b3JrIGJldHdlZW4gd29ya2VycywgYW5kIGRvZXNuJ3Qgd29yayBhY3Jvc3Mg
cmVsb2FkcyAod2hpY2ggSURCCisgICAgICAgIGlzIGludGVuZGVkIHRvIGRvKS4KKworICAgICAg
ICBJdCdsbCBhbHNvIHBvdGVudGlhbGx5IG1ha2UgY29kZSBmYXN0ZXIgb25jZSB3ZSBzdGFydCB0
dW5pbmcKKyAgICAgICAgd2hhdCdzIGluIFRMUywgd2hhdCdzIGluIHdoaWNoIG9mIHRoZSA0IGZy
ZWUgc2xvdHMsIGFuZCB3aGF0J3MgaW4KKyAgICAgICAgcGlubmVkIHJlZ2lzdGVycy4gSSdtIGxl
YXZpbmcgdGhpcyB0dW5pbmcgZm9yIGxhdGVyIGJlY2F1c2UKKyAgICAgICAgdGhlcmUncyBsb3dl
ciBseWluZyBmcnVpdCBmb3IgdXMgdG8gcGljay4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDogQ29waWVkIGZyb20g
YXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oLgorICAgICAgICAoSlND
OjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZjo6QWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYpOgorICAgICAgICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2VJZjo6fkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0
b3JlVG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRoZSBjb2Rl
IHJlcXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0
b3JlVG9UTFMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9y
ZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzItYml0IGluc3RlYWQgb2YgNjQtYml0
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVRvVExTNjQpOgorICAg
ICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX3JtKToKKyAg
ICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZhc3RUTFNMb2Fk
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3RvcmUpOgorICAgICAgICAoSlNDOjpC
Mzo6cnVuKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3Rlcik6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseU93bmVyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OnN0b3Jl
V2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAg
IChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldhc206
OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmxvYWRXYXNt
Q29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAqIHdh
c20vV2FzbUNvbnRleHQuaDogQWRkZWQuIFJlcGxhY2VzICJ0b3AiIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xNiAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGV4Y2VwdGlvbiBzY29wZSB2ZXJpZmlj
YXRpb24gZmFpbHVyZXMgaW4gR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMmU2YmM4ZS4uYTE3YjA5YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM0OSw3ICszNDksNyBAQAogCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJC
RkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjM3MzA4QTFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5j
cHAgKi87IH07CiAJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QjFD
MEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5oICovOyB9OwogCQkwRjM3MzA4RjFDMENE
Njg1MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4RTFDMENENjg1
MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07Ci0J
CTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzcz
MDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAq
LzsgfTsKKwkJMEYzNzMwOTExQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMzczMDkzMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzczMDkyMUMwRDY3RUUwMDA1MkJG
QSAvKiBBaXJVc2VDb3VudHMuaCAqLzsgfTsKIAkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8q
IExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjM4QjAwRjE3Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNw
cCAqLzsgfTsKIAkJMEYzOEIwMTIxN0NGMDc4MzAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTAx
N0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjM2LDYgKzE2MzYsNyBAQAogCQk5NjlB
MDc5QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2Rl
LmggKi87IH07CiAJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIyMTQ3
MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLzsgfTsKIAkJOTc4ODAxNDExNDcxQUQ5
MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4
MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyog
TWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8q
IGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4
RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA3OSw2
ICsyMDgwLDggQEAKIAkJQUQyRkNDMzAxREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkND
MkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovOyB9OwogCQlBRDJGQ0Mz
MTFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHkuaCAqLzsgfTsKIAkJQUQyRkNDMzMxREM0MDQ1NDAwQjNFNzM2IC8qIFdhc21G
b3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovOyB9OworCQlBRDQx
MkIzMzFFN0IyRTk5MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8q
IFdhc21Db250ZXh0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdh
c21Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5
RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdp
bi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUy
NTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3
QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3
QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87IH07CkBAIC0yNDM5LDcgKzI0NDIs
NiBAQAogCQlGRUU0M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQx
NDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21w
YXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5j
cHAgKi87IH07CiAJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1
MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUg
LyogTWFjaGluZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI4ODA2RTIxMTU1RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KQEAgLTM3MjgsNiArMzczMCw3IEBACiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERC
MiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIz
L2Fpci9BaXJPcGNvZGUub3Bjb2Rlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY4
NEQ0MzcxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckxpdmVuZXNzLmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY5RDYzNkQxQkZCRTVEMDAwMTAxQjFE
IC8qIEZUTE91dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRw
dXQuaDsgcGF0aCA9IGZ0bC9GVExPdXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThE
IC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDY0NCw2ICs0NjQ3LDkgQEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzJGMURC
ODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBX
YXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDQxMkIzNTFFN0I1N0MwMDA4QUYx
NTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1
bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2Rl
T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIw
MDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29y
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM1LDcgKzUwNDEsNiBAQAog
CQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7
IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2Fw
VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRl
c3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAy
IC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1h
Y2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02MjQzLDYgKzYyNDgsOCBA
QAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJ
CTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICov
LAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24u
aCAqLywKKwkJCQlBRDQxMkIzMTFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICov
LAorCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJ
CTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAvKiBXYXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJ
CUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1
NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1hdC5oICovLApAQCAtNzM4NSw2ICs3Mzky
LDcgQEAKIAkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCisJCQkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFG
MTU3IC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggKi8sCiAJCQkJODY0MDky
M0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1
NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovLApAQCAtODU1Niw2ICs4NTY0LDcgQEAK
IAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBG
VExFeGNlcHRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFENDEyQjM0MUU3QjJFOUUw
MDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVy
dHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY4NSw2ICsxMDY5NCw3IEBACiAJCQkJQkNE
RTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21D
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAv
KiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5Mjcw
QjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2
RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA4N2FlNjk4Li5jOThhYTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTEwOCw2ICsxMTA4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0K
IAogICAgIGZyaWVuZCBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CisgICAg
ZnJpZW5kIGNsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmOwogICAgIGZyaWVu
ZCBjbGFzcyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiAgICAgdW5zaWduZWQg
bV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzOwogICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3Rl
ciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzhkOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2VJZi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIHsKK3B1YmxpYzoKKyAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZihNYWNyb0Fzc2VtYmxlciYgbWFzbSwgYm9vbCBhbGxvd0lm
VHJ1ZSkKKyAgICAgICAgOiBtX21hc20obWFzbSkKKyAgICAgICAgLCBtX2FsbG93SWZUcnVlKGFs
bG93SWZUcnVlKQorICAgICAgICAsIG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyKG1h
c20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlcikKKyAgICB7CisgICAgICAgIGlmIChtX2FsbG93SWZU
cnVlKQorICAgICAgICAgICAgbWFzbS5tX2FsbG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICB+QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fYWxsb3dJZlRydWUpCisgICAgICAgICAgICBtX21hc20ubV9hbGxvd1NjcmF0
Y2hSZWdpc3RlciA9IG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlciYgbV9tYXNtOworICAgIGJvb2wgbV9hbGxvd0lm
VHJ1ZTsKKyAgICBib29sIG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGRk
ZmM5MjguLjgxMWE4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKQEAgLTYzMiw2ICs2MzIsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbG9hZEZyb21UTFMzMihvZmZzZXQsIGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBzdG9y
ZVRvVExTUHRyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICBzdG9yZVRvVExTMzIoc3JjLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxh
YmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCkBAIC05NDYsNiArOTUxLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IGxvYWRGcm9tVExTNjQob2Zmc2V0LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQ
dHIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3Jl
VG9UTFM2NChzcmMsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBs
b2FkUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggN2Y4YjY1ZC4uODIzNTEwZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2
MDAsNyArMzYwMCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQog
ICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBu
b3QgbGVnYWwuCi0gICAgCisKICAgICB2b2lkIGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0
LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJP
X0VMMChkc3QpOwpAQCAtMzYxNCw2ICszNjE0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQo
VHJ1c3RlZEltbTMyKH43KSwgZHN0KTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZz
ZXQpLCBkc3QpOwogICAgIH0KKworICAgIHN0YXRpYyBib29sIGxvYWRGcm9tVExTUHRyTmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICB2b2lkIHN0b3JlVG9UTFMzMihSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRydXN0
ZWRJbW0zMih+NyksIHRtcCk7CisgICAgICAgIHN0b3JlMzIoc3JjLCBBZGRyZXNzKHRtcCwgb2Zm
c2V0KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3Jj
LCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNy
YyAhPSB0bXApOworICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAg
ICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgdG1wKTsKKyAgICAgICAgc3RvcmU2NChzcmMs
IEFkZHJlc3ModG1wLCBvZmZzZXQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRv
VExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICAKICAgICAv
LyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMTViMjIwYy4u
Yjg2YzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzg2NCw2ICszODY0LDIzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9t
cihvZmZzZXQsIGRzdCk7CiAgICAgfQorCisKKyAgICBzdGF0aWMgYm9vbCBsb2FkRnJvbVRMU1B0
ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJf
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsX3JtKHNyYywgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBz
dG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAppbmRleCBiYzM0YTBkLi4yMzQzZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xNzA1LDcgKzE3MDUs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfbXIob2Zmc2V0LCBkc3QpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lz
dGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5n
cygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNyYywgb2Zmc2V0KTsKICAgICB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKaW5kZXggYTRjOGUzMi4uMzQzMDIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yMzYwLDYgKzIzNjAsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIp
OwogICAgIH0KIAorICAgIHZvaWQgbW92bF9ybShSZWdpc3RlcklEIHNyYywgdWludDMyX3QgYWRk
cikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2R3Ys
IHNyYywgYWRkcik7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTIzODEsNiArMjM4Niwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1v
dnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0VBWE92KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKaW5kZXggYzRjYmUxOC4uNWE1NWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKQEAgLTE1MjExLDcgKzE1MjExLDcgQEAgdm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQog
ICAgICAgICBDSEVDS19FUShudW1Ub1N0b3JlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgdGVzdEZhc3RU
TFMoKQordm9pZCB0ZXN0RmFzdFRMU0xvYWQoKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQp
CiAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKQEAgLTE1MjI2
LDEzICsxNTIyNiwzNyBAQCB2b2lkIHRlc3RGYXN0VExTKCkKICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIGpp
dC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSksIHBh
cmFtc1swXS5ncHIoKSk7CiAgICAgICAgIH0pOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKICAgICAKICAgICBD
SEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRwdHJfdD4ocHJvYyksIHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMHhiZWVmKSk7CiAjZW5kaWYKIH0KIAordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCkKK3sK
KyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9
IDE7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkZWFkKSwgc2Ny
YXRjaCk7CisgICAgICAgICAgICBqaXQuc3RvcmVUb1RMU1B0cihzY3JhdGNoLCBmYXN0VExTT2Zm
c2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkpOworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIGNvbXBp
bGVBbmRSdW48dm9pZD4ocHJvYyk7CisgICAgQ0hFQ0tfRVEoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSkpLCBzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOworI2VuZGlmCit9CisKIC8vIE1ha2Ugc3VyZSB0aGUg
Y29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lO
TElORSBkb3VibGUgemVybygpCiB7CkBAIC0xNjc2MCw3ICsxNjc4NCw4IEBAIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRkcmVz
cygpKTsKICAgICAKLSAgICBSVU4odGVzdEZhc3RUTFMoKSk7CisgICAgUlVOKHRlc3RGYXN0VExT
TG9hZCgpKTsKKyAgICBSVU4odGVzdEZhc3RUTFNTdG9yZSgpKTsKIAogICAgIGlmIChpc1g4Nigp
KSB7CiAgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2
NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDQ5YzdmOWMuLjU3NDhiN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlR5cGVvZlR5cGUu
aCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xNjM0LDcgKzE2MzUsNDUgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKTsKICNlbmRpZgotICAgIAorCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BS
UmVnIGRzdCkKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgbG9hZEZy
b21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7
CisjZWxzZQorICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBh
bGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMK
KyAgICAgICAgbG9hZFB0cigmdm0ud2FzbUNvbnRleHQsIGRzdCk7CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKKyAgICB7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRG
b3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbHNlCisgICAgICAgIC8vIEZJWE1FOiBT
YXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworICAgICAgICBzdG9yZVB0cihzcmMsICZ2bS0+
d2FzbUNvbnRleHQpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIGJvb2wgbG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0K
KworICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCkKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgcmV0dXJuIHN0
b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZWxzZQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBWTSogbV92bTsK
ICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKaW5kZXggNTYwMWI2NS4uN2RkYzZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTkyLDcgKzU5Myw3IEBAIHN0YXRpYyBK
U0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQogewogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0aGUgc3R1YnMgZnJv
bSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0aGVyZWZvcmUgdGhlIGFwcHJv
cHJpYXRlIG93bmVyLgotICAgIHJldHVybiB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPm1v
ZHVsZSgpOworICAgIHJldHVybiBsb2FkV2FzbUNvbnRleHQodm0pLT5tb2R1bGUoKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4
IDlhNjU1MDYuLjA4NTdlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDEyLTIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEyICsz
MiwxMyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiTWF0aENvbW1vbi5oIgot
I2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisj
aW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTcGVj
aWFsaXplZFRodW5rSklULmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJX
YXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTExNTYsNyArMTE1Nyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+
Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Iq
IGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xv
YmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJv
ck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCAwNjRkYjIwLi44NTExNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC0xNzcsNyArMTc3LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51
bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQotICAgICwg
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKG51bGxwdHIpCiAgICAgLCBtX2F0b21pY1N0cmluZ1Rh
YmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIp
CiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCAxNDQwODZkLi5hNGQwOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxNSw3ICszMTUsMTAgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBhIHZvaWQqLCBiZWNhdXNlIGl0IG1pZ2h0IG5vdCBwb2ludCB0byBhIENhbGxGcmFtZS4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDQxCiAgICAg
RXhlY1N0YXRlKiB0b3BDYWxsRnJhbWUgeyBudWxscHRyIH07Ci0gICAgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisjaWYgIUVOQUJMRShGQVNUX1RMU19K
SVQpCisgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElD
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCB7IG51bGxwdHIgfTsKKyNlbmRpZgogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0
ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGEyZTVjYy4uNjU1N2Y2YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9j
a0lubGluZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBp
bGUuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxp
bmdDb252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNt
RXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5oIgogI2luY2x1
ZGUgIldhc21NZW1vcnkuaCIKQEAgLTIyNiw5ICsyMjgsMzYgQEAgcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CiAgICAgVmFs
dWUqIG1femVyb1ZhbHVlc1tudW1UeXBlc107Ci0gICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsK
KyAgICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0aGlzIGxhenkgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5MgogfTsKIAorc3RhdGlj
IFZhbHVlKiBsb2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9j
aykKK3sKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOworICAgIGlm
IChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KSkKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93
U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0
Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKK30KKworc3RhdGljIHZv
aWQgc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBW
YWx1ZSogYXJnKQoreworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOworICAg
IGlmIChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCkpCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNv
bnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgaml0LnN0b3Jl
V2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7Cit9CisKIEIzSVJHZW5l
cmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5m
bywgUHJvY2VkdXJlJiBwcm9jZWR1cmUsIFdhc21JbnRlcm5hbEZ1bmN0aW9uKiBjb21waWxhdGlv
biwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxs
cykKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2luZm8oaW5mbykKQEAgLTI3MCw4ICsyOTksNyBA
QCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3Jt
YXRpb24mIGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9uKCku
c2V0dXBGcmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0aW9u
LCBtX3Byb2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNlVmFs
dWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQs
IHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksICZtX3ZtLnRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSkpOworICAgIG1faW5zdGFuY2VWYWx1ZSA9IGxvYWRXYXNtQ29udGV4dChtX3By
b2MsIG1fY3VycmVudEJsb2NrKTsKIH0KIAogc3RydWN0IE1lbW9yeUJhc2VBbmRTaXplIHsKQEAg
LTI4Myw4ICszMTEsOCBAQCBzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFu
ZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZQogewogICAgIFZhbHVlKiBt
ZW1vcnlPYmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBw
b2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
b2Zmc2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZSh2
bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkp
ID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZSh2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2Ut
Pm1lbW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdl
biByZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5
cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0g
c2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5t
ZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24g
dGhpcyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0OwogICAgIHJlc3VsdC5i
YXNlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0
T2ZNZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3Nl
bWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtMjkyLDkgKzMyMCw5IEBAIHN0YXRpYyBN
ZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgcmVz
dG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoVk0mIHZtLCBjb25zdCBNZW1vcnlJbmZvcm1hdGlv
biYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayog
YmxvY2spCitzdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShjb25zdCBN
ZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJv
YywgQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBpbnN0YW5jZSwgYmxvY2stPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkp
OworICAgIHN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlm
ICghIW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJl
Z3MgPSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5NSw3ICs0MjMsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwor
ICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0
KHZtKTsKICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNl
LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQpAQCAtNDE0LDcgKzQ0Miw3IEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdy
b3dNZW1vcnkpKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBkZWx0YSk7CiAKLSAgICByZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNl
VmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJl
bnRCbG9jayk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtOTAxLDcgKzkyOSw3IEBAIGF1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWdu
YXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBjYWxsIGNvdWxk
IGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3Vs
ZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBj
b250aW51YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2lu
Zm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9uKTsKICAgICB9
IGVsc2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENh
bGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVy
blR5cGUpLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsK
QEAgLTk5NSw3ICsxMDIzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3Qo
Y29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFNpZ25hdHVyZUluZGV4IHMKICAgICAgICAgfSk7
CiAKICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJs
eSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAg
IHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5z
dGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgcmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1f
Y3VycmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMDM3LDcgKzEwNjUsNyBA
QCB2b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNv
bnRyb2xTdGFjaywgY29uc3QgRXhwcmVzcwogICAgIGRhdGFMb2dMbigpOwogfQogCi1zdGF0aWMg
dm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZtLCBDb21waWxhdGlvbkNvbnRleHQmIGNv
bXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCitzdGF0
aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxh
dGlvbkNvbnRleHQsIFdhc21JbnRlcm5hbEZ1bmN0aW9uJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0
dXJlKiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogewogICAgIEND
YWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5qc0VudHJ5cG9pbnRKSVQ7CiAK
QEAgLTExNjUsNyArMTE5Myw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihW
TSYgdm0sIENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0CiAKICAgICBpZiAo
ISFpbmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3Mu
YmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UsIGJhc2VNZW1vcnkpOworICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJh
c2VNZW1vcnkpOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1l
bW9yeSk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVn
aXN0ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwpAQCAtMTIyNyw3
ICsxMjU1LDcgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLAogICAgICAgICByZXN1bHQtPndhc21F
bnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMgPSBwcm9jZWR1cmUuY2FsbGVlU2F2ZVJlZ2lz
dGVycygpOwogICAgIH0KIAotICAgIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcih2bSwgY29tcGlsYXRp
b25Db250ZXh0LCAqcmVzdWx0LCBzaWduYXR1cmUsIGluZm8pOworICAgIGNyZWF0ZUpTVG9XYXNt
V3JhcHBlcihjb21waWxhdGlvbkNvbnRleHQsICpyZXN1bHQsIHNpZ25hdHVyZSwgaW5mbyk7CiAg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IGNiYjNmOTkuLmZiNjc2NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTYgKzM2LDE3IEBACiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5o
IgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiAKIHR5cGVkZWYgQ0NhbGxIZWxwZXJzIEpJVDsKIAotc3RhdGljIHZvaWQg
bWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoVk0qIHZtLCBKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0
SW5kZXgsIEdQUlJlZyByZXN1bHQpCitzdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2Vs
bChKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAg
Ly8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2Us
IHdoaWNoIGlzIGlkZW50aWZpZWQgb24gVk0uIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBh
bGwgaXRzIGltcG9ydCBmdW5jdGlvbnMuCi0gICAgaml0LmxvYWRQdHIoJnZtLT50b3BKU1dlYkFz
c2VtYmx5SW5zdGFuY2UsIHJlc3VsdCk7CisgICAgLy8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhl
IGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UuIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBv
ZiBhbGwgaXRzIGltcG9ydCBmdW5jdGlvbnMuCisgICAgaml0LmxvYWRXYXNtQ29udGV4dChyZXN1
bHQpOwogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhyZXN1bHQsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihpbXBvcnRJbmRleCkpLCByZXN1bHQpOwog
fQogCkBAIC0xMDEsNyArMTAyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNt
VG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxv
YWRXYXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAg
YXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmpl
Y3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJh
bCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9y
dGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0LDcgKzI1NSw3
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2Fs
bExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVn
ID0gR1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xv
dyBwYXRoIGJlbG93LgogICAgIEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5n
ZXQoaW1wb3J0SlNDZWxsR1BSUmVnKSk7CiAKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2
bSwgaml0LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAgICBtYXRlcmlhbGl6
ZUltcG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAg
ICAgaml0LnN0b3JlNjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkpKTsKICAgICBqaXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRl
cnMpLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwpA
QCAtNDI2LDEzICs0MjcsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9X
YXNtKFZNKiB2bSwgdW5zaWduZWQgaW1wb3J0SW5kZXgpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBH
UFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjsKIAogICAgIC8vIEIzJ3MgY2FsbCBj
b2RlZ2VuIGVuc3VyZXMgdGhhdCB0aGUgSlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4K
LSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgc2NyYXRj
aCk7CisgICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgc2NyYXRj
aCk7CiAKLSAgICAvLyBHZXQgdGhlIGNhbGxlZSdzIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBz
ZXQgaXQgYXMgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLiBUaGUgY2FsbGVyIHdpbGwgdGFr
ZSBjYXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgorICAgIC8vIEdldCB0aGUgY2Fs
bGVlJ3MgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYW5kIHNldCBpdCBhcyBXYXNtQ29udGV4dC4gVGhl
IGNhbGxlciB3aWxsIHRha2UgY2FyZSBvZiByZXN0b3JpbmcgaXRzIG93biBJbnN0YW5jZS4KICAg
ICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAg
QVNTRVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7CiAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRy
ZXNzKHNjcmF0Y2gsIFdlYkFzc2VtYmx5RnVuY3Rpb246Om9mZnNldE9mSW5zdGFuY2UoKSksIGJh
c2VNZW1vcnkpOyAvLyBJbnN0YW5jZSouCi0gICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksICZ2
bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKTsKKyAgICBqaXQuc3RvcmVXYXNtQ29udGV4dChi
YXNlTWVtb3J5KTsKIAogICAgIC8vIEZJWE1FIHRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHRo
YXQgYWxsIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGhhdmUgdGhlIHNhbWUgcGlubmVkIHJlZ2lzdGVy
cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgIC8v
IFNldCB1cCB0aGUgY2FsbGVlJ3MgYmFzZU1lbW9yeSByZWdpc3RlciBhcyB3ZWxsIGFzIHRoZSBt
ZW1vcnkgc2l6ZSByZWdpc3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjYWE0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNw
cApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCisK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCit7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0
KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMg
c3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTc3MworICAgIHJldHVybiB2bS53YXNtQ29udGV4dDsKKyNlbmRpZgor
fQorCit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IGluc3RhbmNlKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgVU5VU0VEX1BBUkFN
KHZtKTsKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9L
RVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2UpKTsKKyNlbHNlCisgICAgLy8gRklYTUU6
IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0
YW5jZTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNWU4YTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKK2NsYXNzIFZNOworCitKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYpOwordm9pZCBzdG9yZVdhc21Db250ZXh0KFZN
JiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCA1MDJiYjEyLi5kMWE4MDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNp
bmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiV2Fz
bUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9y
eS5oIgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC0xMjAsMTEgKzEyMSwxMiBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3
YXNtRnVuY3Rpb24sIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKIAog
ICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0aGlzIGVudGlyZSBmdW5jdGlvbiwgYW5kIG9ubHkg
dXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRlZCBieSBCMy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4NgotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogcHJl
dkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKLSAg
ICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCk7
CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0g
bG9hZFdhc21Db250ZXh0KHZtKTsKKyAgICBzdG9yZVdhc21Db250ZXh0KHZtLCB3YXNtRnVuY3Rp
b24tPmluc3RhbmNlKCkpOwogICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOwor
ICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkgPT0gbG9hZFdhc21Db250ZXh0KHZt
KSk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVu
Y3Rpb24tPmpzRW50cnlwb2ludCgpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgdm0udG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlID0gcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKyAgICBz
dG9yZVdhc21Db250ZXh0KHZtLCBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3dpdGNoIChzaWduYXR1cmUtPnJl
dHVyblR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaAppbmRleCAxYjIxNGNlLi4w
MTVmY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUluc3RhbmNlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CiBjbGFzcyBKU1dl
YkFzc2VtYmx5TW9kdWxlOwogY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCA4MTUyYmU5Li43YTczZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTE3ICBK
RiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTog
c3RvcmUgc3RhdGUgaW4gVExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RUTFMuaDogcmVzZXJ2ZSBvbmUg
a2V5IGZvciBXZWJBc3NlbWJseSwgZGVsZXRlIGEgYnVuY2gKKyAgICAgICAgb2YgZGVhZCBjb2Rl
IHdoaWNoIGNsYW5nIGNvdWxkbid0IGNvbXBpbGUgKGl0J3MgdmFsaWQgR0NDIGFzc2VtYmx5Cisg
ICAgICAgIHdoaWNoIExMVk0gZGlzbGlrZXMpLgorCiAyMDE3LTAzLTE2ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgdGhlIHN5c3RlbSB0
cmFjaW5nIHBvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdFRMUy5oIGIvU291
cmNlL1dURi93dGYvRmFzdFRMUy5oCmluZGV4IDYzZjg4MzkuLmI0NDMyOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlIDxTeXN0
ZW0vcHRocmVhZF9tYWNoZGVwLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewogCkBAIC00NCw1MiArNDUsMjAgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBhY2Np
ZGVudGFsbHkgdXNlIHRoZSBzYW1lIGtleSBmb3IgbW9yZSB0aGFuIG9uZSB0aGluZy4KIAogI2Rl
ZmluZSBXVEZfVEhSRUFEX0RBVEFfS0VZIFdURl9GQVNUX1RMU19LRVkwCisjZGVmaW5lIFdURl9X
QVNNX0NPTlRFWFRfS0VZIFdURl9GQVNUX1RMU19LRVkxCiAjZGVmaW5lIFdURl9URVNUSU5HX0tF
WSBXVEZfRkFTVF9UTFNfS0VZMwogCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLS8vIEJlbG93
IGlzIHRoZSBjb2RlIHRoYXQgdGhlIEpJVCB3aWxsIGVtaXQuCi0KLSNpZiBDUFUoWDg2XzY0KQot
aW5saW5lIHVpbnRwdHJfdCBsb2FkRmFzdFRMUyh1bnNpZ25lZCBvZmZzZXQpCi17Ci0gICAgdWlu
dHB0cl90IHJlc3VsdDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJtb3ZxICUlZ3M6JTEs
ICUwIgotICAgICAgICA6ICI9ciIocmVzdWx0KQotICAgICAgICA6ICJyIihvZmZzZXQpCi0gICAg
ICAgIDogIm1lbW9yeSIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxpZiBDUFUoQVJNNjQp
Ci1pbmxpbmUgdWludHB0cl90IGxvYWRGYXN0VExTKHVuc2lnbmVkIHBhc3NlZE9mZnNldCkKLXsK
LSAgICB1aW50cHRyX3QgcmVzdWx0OwotICAgIHVpbnRwdHJfdCBvZmZzZXQgPSBwYXNzZWRPZmZz
ZXQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAibXJzICUwLCBUUElEUlJPX0VMMFxuXHQi
Ci0gICAgICAgICJhbmQgJTAsICUwLCAjMHhmZmZmZmZmZmZmZmZmZmY4XG5cdCIKLSAgICAgICAg
ImxkciAlMCwgWyUwLCAlMV0iCi0gICAgICAgIDogIj1yIihyZXN1bHQpCi0gICAgICAgIDogInIi
KG9mZnNldCkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNl
bHNlCi0jZXJyb3IgIkJhZCBhcmNoaXRlY3R1cmUiCi0jZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUo
RkFTVF9UTFNfSklUKQotCiBpbmxpbmUgdW5zaWduZWQgZmFzdFRMU09mZnNldEZvcktleSh1bnNp
Z25lZCBsb25nIHNsb3QpCiB7CiAgICAgcmV0dXJuIHNsb3QgKiBzaXplb2Yodm9pZCopOwogfQor
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OmZhc3RUTFNPZmZzZXRG
b3JLZXk7Ci0KICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotdXNpbmcgV1RGOjpsb2FkRmFzdFRM
UzsKK3VzaW5nIFdURjo6ZmFzdFRMU09mZnNldEZvcktleTsKICNlbmRpZgogCiAjZW5kaWYgLy8g
SEFWRShGQVNUX1RMUykKLS0gCjIuMTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304825</attachid>
            <date>2017-03-17 14:40:19 -0700</date>
            <delta_ts>2017-03-20 10:40:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>55094</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlMjEzYjEyOGVkNjA0MGQyNWIzZGJmZGVmOTI3YjhiMTU0ODkwMTRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgOSAr
KysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwg
MzAgKysrKysrKy0KIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAg
ICAgICAgIHwgMTcgKysrKysKIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAg
ICAgICAgICAgICAgIHwgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggICAgIHwgMTAgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCAgICAgICAgICAgICAgICB8IDMxICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oICAgICAgICB8IDQxICsrKysrKysrKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgICAgICAgICAgICAgIHwgIDUgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwgIDkgKystCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgICAgICB8ICAxIC0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICAgICAgIHwgIDUgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCAgIHwgNTgg
KysrKysrKysrKy0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNw
cCAgICAgICAgIHwgMTkgKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmNwcCAgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5oICAgICAgICAgICB8IDQwICsrKysrKysrKysKIC4uLi9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgMTAgKystCiAuLi4v
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCAgICAgICB8ICAzICstCiBT
b3VyY2UvV1RGL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExICsr
KwogU291cmNlL1dURi93dGYvRmFzdFRMUy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz
OSArLS0tLS0tLS0tCiAyNCBmaWxlcyBjaGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKSwgODEgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmNGJmODgxLi42MTVjMzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzEsNiArOTMxLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdh
c20vV2FzbUJpbmRpbmcuY3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCisg
ICAgd2FzbS9XYXNtQ29udGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIu
Y3BwCiAgICAgd2FzbS9XYXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJjZGNjODIuLjVmMDY3MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE3LTAzLTE3ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3RhdGUgaW4g
VExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzaW5nIHRocmVhZC1sb2NhbCBzdG9yYWdlIGluc3RlYWQgb2YgVk0gbWFr
ZXMgY29kZSBtb3JlIHBvc2l0aW9uCisgICAgICAgIGluZGVwZW5kZW50LiBXZSB1c2VkIHRvIHN0
b3JlIHRoZSBXZWJBc3NlbWJseSB0b3AgSW5zdGFuY2UgKHRoZQorICAgICAgICBsYXRlc3Qgb25l
IGluIHRoZSBjYWxsIHN0YWNrKSBvbiBWTSwgbm93IHdlIGluc3RlYWQgc3RvcmUgaXQgaW4KKyAg
ICAgICAgVExTLiBUaGlzIHRvcCBJbnN0YW5jZSBpcyB1c2VkIHRvIGFjY2VzcyBhIGJ1bmNoIG9m
IHN0YXRlIHN1Y2ggYXMKKyAgICAgICAgTWVtb3J5IGxvY2F0aW9uLCBzaXplLCB0YWJsZSAoZm9y
IGNhbGxfaW5kaXJlY3QpLCBldGMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsaW5nIGl0ICJ0
b3AiLCB3aGljaCBpcyBjb25mdXNpbmcsIHdlIG5vdyBqdXN0IGNhbGwKKyAgICAgICAgaXQgV2Fz
bUNvbnRleHQuCisKKyAgICAgICAgTWFraW5nIHRoZSBjb2RlIFBJQyBtZWFucyBmdXR1cmUgcGF0
Y2hlcyB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgcG9zdE1lc3NhZ2UgYW5kIHN0cnVjdHVyZWQg
Y2xvbmUgaW50byBJREIgd2l0aG91dCBoYXZpbmcgdG8KKyAgICAgICAgcmVjb21waWxlIHRoZSBj
b2RlLiBUaGlzIHdhc24ndCBwb3NzaWJsZSBiZWZvcmUgYmVjYXVzZSB3ZQorICAgICAgICBoYXJk
LWNvZGVkIHRoZSBhZGRyZXNzIG9mIFZNIGF0IGNvbXBpbGF0aW9uIHRpbWUuIFRoYXQgZG9lc24n
dAorICAgICAgICB3b3JrIGJldHdlZW4gd29ya2VycywgYW5kIGRvZXNuJ3Qgd29yayBhY3Jvc3Mg
cmVsb2FkcyAod2hpY2ggSURCCisgICAgICAgIGlzIGludGVuZGVkIHRvIGRvKS4KKworICAgICAg
ICBJdCdsbCBhbHNvIHBvdGVudGlhbGx5IG1ha2UgY29kZSBmYXN0ZXIgb25jZSB3ZSBzdGFydCB0
dW5pbmcKKyAgICAgICAgd2hhdCdzIGluIFRMUywgd2hhdCdzIGluIHdoaWNoIG9mIHRoZSA0IGZy
ZWUgc2xvdHMsIGFuZCB3aGF0J3MgaW4KKyAgICAgICAgcGlubmVkIHJlZ2lzdGVycy4gSSdtIGxl
YXZpbmcgdGhpcyB0dW5pbmcgZm9yIGxhdGVyIGJlY2F1c2UKKyAgICAgICAgdGhlcmUncyBsb3dl
ciBseWluZyBmcnVpdCBmb3IgdXMgdG8gcGljay4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDogQ29waWVkIGZyb20g
YXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oLgorICAgICAgICAoSlND
OjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZjo6QWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYpOgorICAgICAgICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2VJZjo6fkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0
b3JlVG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRoZSBjb2Rl
IHJlcXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0
b3JlVG9UTFMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9y
ZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzItYml0IGluc3RlYWQgb2YgNjQtYml0
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVRvVExTNjQpOgorICAg
ICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX3JtKToKKyAg
ICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZhc3RUTFNMb2Fk
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3RvcmUpOgorICAgICAgICAoSlNDOjpC
Mzo6cnVuKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3Rlcik6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseU93bmVyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OnN0b3Jl
V2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAg
IChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldhc206
OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmxvYWRXYXNt
Q29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAqIHdh
c20vV2FzbUNvbnRleHQuaDogQWRkZWQuIFJlcGxhY2VzICJ0b3AiIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xNiAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGV4Y2VwdGlvbiBzY29wZSB2ZXJpZmlj
YXRpb24gZmFpbHVyZXMgaW4gR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMmU2YmM4ZS4uYTE3YjA5YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM0OSw3ICszNDksNyBAQAogCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJC
RkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjM3MzA4QTFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5j
cHAgKi87IH07CiAJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QjFD
MEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5oICovOyB9OwogCQkwRjM3MzA4RjFDMENE
Njg1MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4RTFDMENENjg1
MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07Ci0J
CTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzcz
MDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAq
LzsgfTsKKwkJMEYzNzMwOTExQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMzczMDkzMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzczMDkyMUMwRDY3RUUwMDA1MkJG
QSAvKiBBaXJVc2VDb3VudHMuaCAqLzsgfTsKIAkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8q
IExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjM4QjAwRjE3Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNw
cCAqLzsgfTsKIAkJMEYzOEIwMTIxN0NGMDc4MzAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTAx
N0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjM2LDYgKzE2MzYsNyBAQAogCQk5NjlB
MDc5QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2Rl
LmggKi87IH07CiAJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIyMTQ3
MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLzsgfTsKIAkJOTc4ODAxNDExNDcxQUQ5
MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4
MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyog
TWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8q
IGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4
RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA3OSw2
ICsyMDgwLDggQEAKIAkJQUQyRkNDMzAxREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkND
MkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovOyB9OwogCQlBRDJGQ0Mz
MTFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHkuaCAqLzsgfTsKIAkJQUQyRkNDMzMxREM0MDQ1NDAwQjNFNzM2IC8qIFdhc21G
b3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovOyB9OworCQlBRDQx
MkIzMzFFN0IyRTk5MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8q
IFdhc21Db250ZXh0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdh
c21Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5
RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdp
bi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUy
NTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3
QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3
QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87IH07CkBAIC0yNDM5LDcgKzI0NDIs
NiBAQAogCQlGRUU0M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQx
NDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21w
YXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5j
cHAgKi87IH07CiAJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1
MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUg
LyogTWFjaGluZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI4ODA2RTIxMTU1RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KQEAgLTM3MjgsNiArMzczMCw3IEBACiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERC
MiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIz
L2Fpci9BaXJPcGNvZGUub3Bjb2Rlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY4
NEQ0MzcxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckxpdmVuZXNzLmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY5RDYzNkQxQkZCRTVEMDAwMTAxQjFE
IC8qIEZUTE91dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRw
dXQuaDsgcGF0aCA9IGZ0bC9GVExPdXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThE
IC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDY0NCw2ICs0NjQ3LDkgQEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzJGMURC
ODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBX
YXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDQxMkIzNTFFN0I1N0MwMDA4QUYx
NTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1
bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2Rl
T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIw
MDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29y
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM1LDcgKzUwNDEsNiBAQAog
CQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7
IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2Fw
VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRl
c3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAy
IC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1h
Y2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02MjQzLDYgKzYyNDgsOCBA
QAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJ
CTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICov
LAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24u
aCAqLywKKwkJCQlBRDQxMkIzMTFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICov
LAorCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJ
CTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAvKiBXYXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJ
CUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1
NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1hdC5oICovLApAQCAtNzM4NSw2ICs3Mzky
LDcgQEAKIAkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCisJCQkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFG
MTU3IC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggKi8sCiAJCQkJODY0MDky
M0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1
NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovLApAQCAtODU1Niw2ICs4NTY0LDcgQEAK
IAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBG
VExFeGNlcHRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFENDEyQjM0MUU3QjJFOUUw
MDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVy
dHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY4NSw2ICsxMDY5NCw3IEBACiAJCQkJQkNE
RTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21D
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAv
KiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5Mjcw
QjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2
RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA4N2FlNjk4Li5jOThhYTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTEwOCw2ICsxMTA4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0K
IAogICAgIGZyaWVuZCBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CisgICAg
ZnJpZW5kIGNsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmOwogICAgIGZyaWVu
ZCBjbGFzcyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiAgICAgdW5zaWduZWQg
bV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzOwogICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3Rl
ciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzhkOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2VJZi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIHsKK3B1YmxpYzoKKyAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZihNYWNyb0Fzc2VtYmxlciYgbWFzbSwgYm9vbCBhbGxvd0lm
VHJ1ZSkKKyAgICAgICAgOiBtX21hc20obWFzbSkKKyAgICAgICAgLCBtX2FsbG93SWZUcnVlKGFs
bG93SWZUcnVlKQorICAgICAgICAsIG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyKG1h
c20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlcikKKyAgICB7CisgICAgICAgIGlmIChtX2FsbG93SWZU
cnVlKQorICAgICAgICAgICAgbWFzbS5tX2FsbG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICB+QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fYWxsb3dJZlRydWUpCisgICAgICAgICAgICBtX21hc20ubV9hbGxvd1NjcmF0
Y2hSZWdpc3RlciA9IG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlciYgbV9tYXNtOworICAgIGJvb2wgbV9hbGxvd0lm
VHJ1ZTsKKyAgICBib29sIG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGRk
ZmM5MjguLjgxMWE4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKQEAgLTYzMiw2ICs2MzIsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbG9hZEZyb21UTFMzMihvZmZzZXQsIGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBzdG9y
ZVRvVExTUHRyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICBzdG9yZVRvVExTMzIoc3JjLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxh
YmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCkBAIC05NDYsNiArOTUxLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IGxvYWRGcm9tVExTNjQob2Zmc2V0LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQ
dHIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3Jl
VG9UTFM2NChzcmMsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBs
b2FkUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggN2Y4YjY1ZC4uODIzNTEwZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2
MDAsNyArMzYwMCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQog
ICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBu
b3QgbGVnYWwuCi0gICAgCisKICAgICB2b2lkIGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0
LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJP
X0VMMChkc3QpOwpAQCAtMzYxNCw2ICszNjE0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQo
VHJ1c3RlZEltbTMyKH43KSwgZHN0KTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZz
ZXQpLCBkc3QpOwogICAgIH0KKworICAgIHN0YXRpYyBib29sIGxvYWRGcm9tVExTUHRyTmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICB2b2lkIHN0b3JlVG9UTFMzMihSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRydXN0
ZWRJbW0zMih+NyksIHRtcCk7CisgICAgICAgIHN0b3JlMzIoc3JjLCBBZGRyZXNzKHRtcCwgb2Zm
c2V0KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3Jj
LCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNy
YyAhPSB0bXApOworICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAg
ICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgdG1wKTsKKyAgICAgICAgc3RvcmU2NChzcmMs
IEFkZHJlc3ModG1wLCBvZmZzZXQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRv
VExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICAKICAgICAv
LyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMTViMjIwYy4u
Yjg2YzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzg2NCw2ICszODY0LDIzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9t
cihvZmZzZXQsIGRzdCk7CiAgICAgfQorCisKKyAgICBzdGF0aWMgYm9vbCBsb2FkRnJvbVRMU1B0
ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJf
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZsX3JtKHNyYywgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBz
dG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAppbmRleCBiYzM0YTBkLi4yMzQzZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xNzA1LDcgKzE3MDUs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfbXIob2Zmc2V0LCBkc3QpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lz
dGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5n
cygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNyYywgb2Zmc2V0KTsKICAgICB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKaW5kZXggYTRjOGUzMi4uMzQzMDIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yMzYwLDYgKzIzNjAsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIp
OwogICAgIH0KIAorICAgIHZvaWQgbW92bF9ybShSZWdpc3RlcklEIHNyYywgdWludDMyX3QgYWRk
cikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2R3Ys
IHNyYywgYWRkcik7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTIzODEsNiArMjM4Niwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1v
dnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0VBWE92KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKaW5kZXggYzRjYmUxOC4uNWE1NWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKQEAgLTE1MjExLDcgKzE1MjExLDcgQEAgdm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQog
ICAgICAgICBDSEVDS19FUShudW1Ub1N0b3JlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgdGVzdEZhc3RU
TFMoKQordm9pZCB0ZXN0RmFzdFRMU0xvYWQoKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQp
CiAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKQEAgLTE1MjI2
LDEzICsxNTIyNiwzNyBAQCB2b2lkIHRlc3RGYXN0VExTKCkKICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIGpp
dC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSksIHBh
cmFtc1swXS5ncHIoKSk7CiAgICAgICAgIH0pOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKICAgICAKICAgICBD
SEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRwdHJfdD4ocHJvYyksIHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMHhiZWVmKSk7CiAjZW5kaWYKIH0KIAordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCkKK3sK
KyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9
IDE7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkZWFkKSwgc2Ny
YXRjaCk7CisgICAgICAgICAgICBqaXQuc3RvcmVUb1RMU1B0cihzY3JhdGNoLCBmYXN0VExTT2Zm
c2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkpOworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIGNvbXBp
bGVBbmRSdW48dm9pZD4ocHJvYyk7CisgICAgQ0hFQ0tfRVEoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSkpLCBzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOworI2VuZGlmCit9CisKIC8vIE1ha2Ugc3VyZSB0aGUg
Y29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lO
TElORSBkb3VibGUgemVybygpCiB7CkBAIC0xNjc2MCw3ICsxNjc4NCw4IEBAIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRkcmVz
cygpKTsKICAgICAKLSAgICBSVU4odGVzdEZhc3RUTFMoKSk7CisgICAgUlVOKHRlc3RGYXN0VExT
TG9hZCgpKTsKKyAgICBSVU4odGVzdEZhc3RUTFNTdG9yZSgpKTsKIAogICAgIGlmIChpc1g4Nigp
KSB7CiAgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2
NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDQ5YzdmOWMuLjMzMWZiZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlR5cGVvZlR5cGUu
aCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xNjM0LDcgKzE2MzUsNDUgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKTsKICNlbmRpZgotICAgIAorCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BS
UmVnIGRzdCkKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgbG9hZEZy
b21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7
CisjZWxzZQorICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBh
bGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMK
KyAgICAgICAgbG9hZFB0cigmbV92bS0+d2FzbUNvbnRleHQsIGRzdCk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKKyAgICB7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZz
ZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbHNlCisgICAgICAgIC8vIEZJWE1F
OiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworICAgICAgICBzdG9yZVB0cihzcmMsICZt
X3ZtLT53YXNtQ29udGV4dCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBsb2Fk
V2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKKyAgICB7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICAgICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3RlcigpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgICAgICByZXR1
cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbHNlCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFZNKiBt
X3ZtOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCA1NjAxYjY1Li43ZGRjNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAj
aW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC01OTIsNyArNTkzLDcgQEAgc3Rh
dGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0pCiB7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVi
cyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwgd2hpY2ggYXJlIHRoZXJlZm9yZSB0aGUg
YXBwcm9wcmlhdGUgb3duZXIuCi0gICAgcmV0dXJuIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGxvYWRXYXNtQ29udGV4dCh2bSktPm1vZHVsZSgpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
aW5kZXggOWE2NTUwNi4uMDg1N2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTItMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTItMjAxNCwgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
MTIgKzMyLDEzIEBACiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJNYXRoQ29tbW9u
LmgiCi0jaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24u
aCIKKyNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUg
IlNwZWNpYWxpemVkVGh1bmtKSVQuaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1
ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtMTE1Niw3ICsxMTU3LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcihW
TSogdm0pCiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSgqdm0pOwotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgq
dm0pLT5nbG9iYWxPYmplY3QoKTsKIAogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZt
LCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206
OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUodHlwZSkpOwogICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IDA2NGRiMjAuLjg1MTE1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTE3Nyw3ICsxNzcsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0b3BWTUVudHJ5RnJh
bWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0g
ICAgLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UobnVsbHB0cikKICAgICAsIG1fYXRvbWljU3Ry
aW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVs
bHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDE0NDA4NmQuLmE0ZDA4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtMzE1LDcgKzMxNSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQgbWlnaHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1l
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEK
ICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZSB7IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKyNpZiAhRU5BQkxFKEZBU1Rf
VExTX0pJVCkKKyAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAg
ICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0IHsgbnVsbHB0ciB9OworI2VuZGlm
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwYTJlNWNjLi42NTU3
ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1
ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmgiCiAjaW5jbHVkZSAiQjNCYXNp
Y0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIz
Q29tcGlsZS5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUg
Ildhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAj
aW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtMjI2LDkgKzIyOCwzNiBAQCBwcml2YXRlOgogICAg
IEdQUlJlZyBtX21lbW9yeUJhc2VHUFI7CiAgICAgR1BSUmVnIG1fbWVtb3J5U2l6ZUdQUjsKICAg
ICBWYWx1ZSogbV96ZXJvVmFsdWVzW251bVR5cGVzXTsKLSAgICBWYWx1ZSogbV9pbnN0YW5jZVZh
bHVlOworICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRoaXMgbGF6
eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9OwogCitz
dGF0aWMgVmFsdWUqIGxvYWRXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrKQoreworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7Cisg
ICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdp
c3RlcigpKQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYg
YWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3Jv
U2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJh
bXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKworICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworfQorCitzdGF0
aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxv
Y2ssIFZhbHVlKiBhcmcpCit7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxv
Y2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7
CisgICAgaWYgKENDYWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKSkKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6c3RvcmVX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBqaXQu
c3RvcmVXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKK30KKwogQjNJ
UkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgV2FzbUludGVybmFsRnVuY3Rpb24qIGNvbXBp
bGF0aW9uLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzKQogICAgIDogbV92bSh2bSkKICAgICAsIG1faW5mbyhpbmZvKQpAQCAtMjcwLDggKzI5
OSw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwCiAKICAgICB3YXNtQ2FsbGluZ0NvbnZlbnRp
b24oKS5zZXR1cEZyYW1lSW5Qcm9sb2d1ZSgmY29tcGlsYXRpb24tPndhc21DYWxsZWVNb3ZlTG9j
YXRpb24sIG1fcHJvYywgT3JpZ2luKCksIG1fY3VycmVudEJsb2NrKTsKIAotICAgIG1faW5zdGFu
Y2VWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgJm1fdm0udG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlKSk7CisgICAgbV9pbnN0YW5jZVZhbHVlID0gbG9hZFdhc21Db250ZXh0
KG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogfQogCiBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUg
ewpAQCAtMjgzLDggKzMxMSw4IEBAIHN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlC
YXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlCiB7CiAgICAgVmFs
dWUqIG1lbW9yeU9iamVjdCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpvZmZzZXRPZk1lbW9yeSgpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0
eXBlKHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9y
eSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwot
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJj
b2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihk
ZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkp
KSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5
KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGll
cyBvbiB0aGlzIHNpemUiKTsKICAgICBNZW1vcnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVz
dWx0LmJhc2UgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojpv
ZmZzZXRPZk1lbW9yeSgpKTsKICAgICByZXN1bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dl
YkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNpemUoKSk7CkBAIC0yOTIsOSArMzIwLDkgQEAgc3Rh
dGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUq
IGluc3RhbmNlLCBQcm9jZWR1cmUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9p
ZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShWTSYgdm0sIGNvbnN0IE1lbW9yeUluZm9y
bWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Js
b2NrKiBibG9jaykKK3N0YXRpYyB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNv
bnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJl
JiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBibG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIGluc3RhbmNlLCBibG9jay0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdm0udG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlKSk7CisgICAgc3RvcmVXYXNtQ29udGV4dChwcm9jLCBibG9jaywgaW5zdGFuY2UpOwogCiAg
ICAgaWYgKCEhbWVtb3J5KSB7CiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlu
bmVkUmVncyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwpAQCAtMzk1LDcgKzQyMyw3IEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U7CisgICAgICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBsb2FkV2FzbUNv
bnRleHQodm0pOwogICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5z
dGFuY2UtPm1lbW9yeSgpOwogCiAgICAgICAgIGlmIChkZWx0YSA8IDApCkBAIC00MTQsNyArNDQy
LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRl
bHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oZ3Jvd01lbW9yeSkpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSksIGRlbHRhKTsKIAotICAg
IHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5z
dGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgcmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1f
Y3VycmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC05MDEsNyArOTI5LDcgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSogc2lnbmF0dXJlLAogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGNhbGwg
Y291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9y
IGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KLSAgICAgICAgcmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3By
b2MsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRl
KG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBjb250aW51YXRpb24pOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNl
dHVwQ2FsbChtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBPcmlnaW4oKSwgYXJncywgdG9CM1R5cGUo
cmV0dXJuVHlwZSksCiAgICAgICAgICAgICBbJl0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCkgewpAQCAtOTk1LDcgKzEwMjMsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRp
cmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgU2lnbmF0dXJlSW5kZXggcwogICAgICAg
ICB9KTsKIAogICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFz
c2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnku
Ci0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwg
bV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2Vi
QXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJv
YywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEwMzcsNyArMTA2
NSw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5
PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzCiAgICAgZGF0YUxvZ0xuKCk7CiB9CiAKLXN0
YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYgdm0sIENvbXBpbGF0aW9uQ29udGV4
dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW50ZXJuYWxGdW5jdGlvbiYgZnVuY3Rpb24sIGNv
bnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbykK
K3N0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNv
bXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCiB7CiAg
ICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250ZXh0LmpzRW50cnlwb2ludEpJ
VDsKIApAQCAtMTE2NSw3ICsxMTkzLDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFw
cGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQKIAogICAg
IGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVk
UmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRQdHIoJnZtLnRvcEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSwgYmFzZU1lbW9yeSk7CisgICAgICAgIGppdC5sb2FkV2FzbUNvbnRl
eHQoYmFzZU1lbW9yeSk7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBi
YXNlTWVtb3J5KTsKICAgICAgICAgY29uc3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNp
emVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CkBAIC0x
MjI3LDcgKzEyNTUsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVu
Y3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sCiAgICAgICAgIHJlc3VsdC0+
d2FzbUVudHJ5cG9pbnQuY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHByb2NlZHVyZS5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CiAgICAgfQogCi0gICAgY3JlYXRlSlNUb1dhc21XcmFwcGVyKHZtLCBjb21w
aWxhdGlvbkNvbnRleHQsICpyZXN1bHQsIHNpZ25hdHVyZSwgaW5mbyk7CisgICAgY3JlYXRlSlNU
b1dhc21XcmFwcGVyKGNvbXBpbGF0aW9uQ29udGV4dCwgKnJlc3VsdCwgc2lnbmF0dXJlLCBpbmZv
KTsKICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggY2JiM2Y5OS4uZmI2NzY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNiArMzYsMTcgQEAKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgorI2luY2x1ZGUgIldhc21Db250
ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIAogdHlwZWRlZiBDQ2FsbEhlbHBlcnMgSklUOwogCi1zdGF0aWMg
dm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChWTSogdm0sIEpJVCYgaml0LCB1bnNpZ25lZCBp
bXBvcnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKK3N0YXRpYyB2b2lkIG1hdGVyaWFsaXplSW1wb3J0
SlNDZWxsKEpJVCYgaml0LCB1bnNpZ25lZCBpbXBvcnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsK
LSAgICAvLyBXZSdyZSBjYWxsaW5nIG91dCBvZiB0aGUgY3VycmVudCBXZWJBc3NlbWJseS5JbnN0
YW5jZSwgd2hpY2ggaXMgaWRlbnRpZmllZCBvbiBWTS4gVGhhdCBJbnN0YW5jZSBoYXMgYSBsaXN0
IG9mIGFsbCBpdHMgaW1wb3J0IGZ1bmN0aW9ucy4KLSAgICBqaXQubG9hZFB0cigmdm0tPnRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSwgcmVzdWx0KTsKKyAgICAvLyBXZSdyZSBjYWxsaW5nIG91dCBv
ZiB0aGUgY3VycmVudCBXZWJBc3NlbWJseS5JbnN0YW5jZS4gVGhhdCBJbnN0YW5jZSBoYXMgYSBs
aXN0IG9mIGFsbCBpdHMgaW1wb3J0IGZ1bmN0aW9ucy4KKyAgICBqaXQubG9hZFdhc21Db250ZXh0
KHJlc3VsdCk7CiAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3Vs
dCk7CiB9CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9i
amVjdCgpOworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2Jh
bE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgQVNDSUlM
aXRlcmFsKCJpNjQgbm90IGFsbG93ZWQgYXMgcmV0dXJuIHR5cGUgb3IgYXJndW1lbnQgdG8gYW4g
aW1wb3J0ZWQgZnVuY3Rpb24iKSk7CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgICAgICB9CkBAIC0yNTQsNyAr
MjU1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJh
ZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgIEdQUlJlZyBpbXBvcnRKU0NlbGxH
UFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwIGZv
ciBzbG93IHBhdGggYmVsb3cuCiAgICAgQVNTRVJUKCF3YXNtQ0MubV9jYWxsZWVTYXZlUmVnaXN0
ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsKIAotICAgIG1hdGVyaWFsaXplSW1wb3J0SlND
ZWxsKHZtLCBqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOworICAgIG1hdGVy
aWFsaXplSW1wb3J0SlNDZWxsKGppdCwgaW1wb3J0SW5kZXgsIGltcG9ydEpTQ2VsbEdQUlJlZyk7
CiAKICAgICBqaXQuc3RvcmU2NChpbXBvcnRKU0NlbGxHUFJSZWcsIGNhbGxlZUZyYW1lLndpdGhP
ZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSkpOwogICAgIGppdC5zdG9yZTMyKEpJVDo6VHJ1c3RlZEltbTMyKG51bWJlck9mUGFy
YW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0
KSk7CkBAIC00MjYsMTMgKzQyNywxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdh
c21Ub1dhc20oVk0qIHZtLCB1bnNpZ25lZCBpbXBvcnRJbmRleCkKICAgICBHUFJSZWcgc2NyYXRj
aCA9IEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSOwogCiAgICAgLy8gQjMncyBj
YWxsIGNvZGVnZW4gZW5zdXJlcyB0aGF0IHRoZSBKU0NlbGwgaXMgYSBXZWJBc3NlbWJseUZ1bmN0
aW9uLgotICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKHZtLCBqaXQsIGltcG9ydEluZGV4LCBz
Y3JhdGNoKTsKKyAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBz
Y3JhdGNoKTsKIAotICAgIC8vIEdldCB0aGUgY2FsbGVlJ3MgV2ViQXNzZW1ibHkuSW5zdGFuY2Ug
YW5kIHNldCBpdCBhcyB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UuIFRoZSBjYWxsZXIgd2ls
bCB0YWtlIGNhcmUgb2YgcmVzdG9yaW5nIGl0cyBvd24gSW5zdGFuY2UuCisgICAgLy8gR2V0IHRo
ZSBjYWxsZWUncyBXZWJBc3NlbWJseS5JbnN0YW5jZSBhbmQgc2V0IGl0IGFzIFdhc21Db250ZXh0
LiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNl
LgogICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsK
ICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBzY3JhdGNoKTsKICAgICBqaXQubG9hZFB0cihKSVQ6
OkFkZHJlc3Moc2NyYXRjaCwgV2ViQXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSgp
KSwgYmFzZU1lbW9yeSk7IC8vIEluc3RhbmNlKi4KLSAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9y
eSwgJnZtLT50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOworICAgIGppdC5zdG9yZVdhc21Db250
ZXh0KGJhc2VNZW1vcnkpOwogCiAgICAgLy8gRklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3Vt
ZXMgdGhhdCBhbGwgV2ViQXNzZW1ibHkuSW5zdGFuY2UgaGF2ZSB0aGUgc2FtZSBwaW5uZWQgcmVn
aXN0ZXJzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAg
ICAgLy8gU2V0IHVwIHRoZSBjYWxsZWUncyBiYXNlTWVtb3J5IHJlZ2lzdGVyIGFzIHdlbGwgYXMg
dGhlIG1lbW9yeSBzaXplIHJlZ2lzdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Db250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWNhYTQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRl
eHQuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQu
aCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVk
ZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJiB2bSkKK3sKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9nZXRzcGVjaWZpY19k
aXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IFNhdmUg
dGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAgcmV0dXJuIHZtLndhc21Db250ZXh0OworI2Vu
ZGlmCit9CisKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogaW5zdGFuY2UpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBVTlVTRURf
UEFSQU0odm0pOworICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05U
RVhUX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihpbnN0YW5jZSkpOworI2Vsc2UKKyAgICAvLyBG
SVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICB2bS53YXNtQ29udGV4dCA9
IGluc3RhbmNlOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1ZThhMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOworY2xhc3MgVk07CisKK0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJik7Cit2b2lkIHN0b3JlV2FzbUNvbnRl
eHQoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDUwMmJiMTIuLmQx
YTgwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5o
IgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRl
ICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNt
TWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAgLTEyMCwxMSArMTIx
LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJs
eUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxw
dHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3Mp
OwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQg
b25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
OwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFu
Y2UoKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOworICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHdhc21G
dW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2Uo
KSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSA9PSBsb2FkV2FzbUNvbnRl
eHQodm0pKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdh
c21GdW5jdGlvbi0+anNFbnRyeXBvaW50KCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICB2
bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlOwor
ICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBzd2l0Y2ggKHNpZ25hdHVy
ZS0+cmV0dXJuVHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCmluZGV4IDFiMjE0
Y2UuLjAxNWZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKIGNsYXNz
IEpTV2ViQXNzZW1ibHlNb2R1bGU7CiBjbGFzcyBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDgxNTJiZTkuLjdhNzNmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDMt
MTcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2Vt
Ymx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5zdGVhZCBvZiBvbiBWTQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjExCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmFzdFRMUy5oOiByZXNlcnZl
IG9uZSBrZXkgZm9yIFdlYkFzc2VtYmx5LCBkZWxldGUgYSBidW5jaAorICAgICAgICBvZiBkZWFk
IGNvZGUgd2hpY2ggY2xhbmcgY291bGRuJ3QgY29tcGlsZSAoaXQncyB2YWxpZCBHQ0MgYXNzZW1i
bHkKKyAgICAgICAgd2hpY2ggTExWTSBkaXNsaWtlcykuCisKIDIwMTctMDMtMTYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSB0aGUgc3lz
dGVtIHRyYWNpbmcgcG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgKaW5kZXggNjNmODgzOS4uYjQ0MzI5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RU
TFMuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUg
PFN5c3RlbS9wdGhyZWFkX21hY2hkZXAuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKQEAgLTQ0LDUyICs0NSwyMCBAQCBuYW1lc3BhY2UgV1RGIHsKIC8v
IGFjY2lkZW50YWxseSB1c2UgdGhlIHNhbWUga2V5IGZvciBtb3JlIHRoYW4gb25lIHRoaW5nLgog
CiAjZGVmaW5lIFdURl9USFJFQURfREFUQV9LRVkgV1RGX0ZBU1RfVExTX0tFWTAKKyNkZWZpbmUg
V1RGX1dBU01fQ09OVEVYVF9LRVkgV1RGX0ZBU1RfVExTX0tFWTEKICNkZWZpbmUgV1RGX1RFU1RJ
TkdfS0VZIFdURl9GQVNUX1RMU19LRVkzCiAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotLy8g
QmVsb3cgaXMgdGhlIGNvZGUgdGhhdCB0aGUgSklUIHdpbGwgZW1pdC4KLQotI2lmIENQVShYODZf
NjQpCi1pbmxpbmUgdWludHB0cl90IGxvYWRGYXN0VExTKHVuc2lnbmVkIG9mZnNldCkKLXsKLSAg
ICB1aW50cHRyX3QgcmVzdWx0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1vdnEgJSVn
czolMSwgJTAiCi0gICAgICAgIDogIj1yIihyZXN1bHQpCi0gICAgICAgIDogInIiKG9mZnNldCkK
LSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbGlmIENQVShB
Uk02NCkKLWlubGluZSB1aW50cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgcGFzc2VkT2Zmc2V0
KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAgdWludHB0cl90IG9mZnNldCA9IHBhc3Nl
ZE9mZnNldDsKLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAgICJtcnMgJTAsIFRQSURSUk9fRUww
XG5cdCIKLSAgICAgICAgImFuZCAlMCwgJTAsICMweGZmZmZmZmZmZmZmZmZmZjhcblx0IgotICAg
ICAgICAibGRyICUwLCBbJTAsICUxXSIKLSAgICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAg
OiAiciIob2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotI2Vsc2UKLSNlcnJvciAiQmFkIGFyY2hpdGVjdHVyZSIKLSNlbmRpZgotI2VuZGlmIC8vIEVO
QUJMRShGQVNUX1RMU19KSVQpCi0KIGlubGluZSB1bnNpZ25lZCBmYXN0VExTT2Zmc2V0Rm9yS2V5
KHVuc2lnbmVkIGxvbmcgc2xvdCkKIHsKICAgICByZXR1cm4gc2xvdCAqIHNpemVvZih2b2lkKik7
CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6ZmFzdFRMU09m
ZnNldEZvcktleTsKLQogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi11c2luZyBXVEY6OmxvYWRG
YXN0VExTOwordXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5OwogI2VuZGlmCiAKICNlbmRp
ZiAvLyBIQVZFKEZBU1RfVExTKQotLSAKMi4xMC4xCgo=
</data>
<flag name="commit-queue"
          id="326319"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304931</attachid>
            <date>2017-03-20 10:40:17 -0700</date>
            <delta_ts>2017-03-23 17:47:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>55073</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA2NjEyZTRmNTVlYjQxMzFjMmFjODQzNzMyNDM1MDcyNzgyZjA3OTY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgOSAr
KysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwg
MzAgKysrKysrKy0KIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAg
ICAgICAgIHwgMTcgKysrKysKIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAg
ICAgICAgICAgICAgIHwgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggICAgIHwgMTAgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCAgICAgICAgICAgICAgICB8IDMxICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oICAgICAgICB8IDQxICsrKysrKysrKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgICAgICAgICAgICAgIHwgIDUgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwgIDkgKystCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgICAgICB8ICAxIC0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICAgICAgIHwgIDUgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCAgIHwgNTgg
KysrKysrKysrKy0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNw
cCAgICAgICAgIHwgMTkgKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmNwcCAgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5oICAgICAgICAgICB8IDQwICsrKysrKysrKysKIC4uLi9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgMTAgKystCiAuLi4v
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCAgICAgICB8ICAzICstCiBT
b3VyY2UvV1RGL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExICsr
KwogU291cmNlL1dURi93dGYvRmFzdFRMUy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz
OSArLS0tLS0tLS0tCiAyNCBmaWxlcyBjaGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKSwgODEgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MjI2NGFjLi44MjY3ZDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzIsNiArOTMyLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdh
c20vV2FzbUJpbmRpbmcuY3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCisg
ICAgd2FzbS9XYXNtQ29udGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIu
Y3BwCiAgICAgd2FzbS9XYXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFlMTM5ZDMuLjlhNTUxMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE3LTAzLTE3ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3RhdGUgaW4g
VExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzaW5nIHRocmVhZC1sb2NhbCBzdG9yYWdlIGluc3RlYWQgb2YgVk0gbWFr
ZXMgY29kZSBtb3JlIHBvc2l0aW9uCisgICAgICAgIGluZGVwZW5kZW50LiBXZSB1c2VkIHRvIHN0
b3JlIHRoZSBXZWJBc3NlbWJseSB0b3AgSW5zdGFuY2UgKHRoZQorICAgICAgICBsYXRlc3Qgb25l
IGluIHRoZSBjYWxsIHN0YWNrKSBvbiBWTSwgbm93IHdlIGluc3RlYWQgc3RvcmUgaXQgaW4KKyAg
ICAgICAgVExTLiBUaGlzIHRvcCBJbnN0YW5jZSBpcyB1c2VkIHRvIGFjY2VzcyBhIGJ1bmNoIG9m
IHN0YXRlIHN1Y2ggYXMKKyAgICAgICAgTWVtb3J5IGxvY2F0aW9uLCBzaXplLCB0YWJsZSAoZm9y
IGNhbGxfaW5kaXJlY3QpLCBldGMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsaW5nIGl0ICJ0
b3AiLCB3aGljaCBpcyBjb25mdXNpbmcsIHdlIG5vdyBqdXN0IGNhbGwKKyAgICAgICAgaXQgV2Fz
bUNvbnRleHQuCisKKyAgICAgICAgTWFraW5nIHRoZSBjb2RlIFBJQyBtZWFucyBmdXR1cmUgcGF0
Y2hlcyB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgcG9zdE1lc3NhZ2UgYW5kIHN0cnVjdHVyZWQg
Y2xvbmUgaW50byBJREIgd2l0aG91dCBoYXZpbmcgdG8KKyAgICAgICAgcmVjb21waWxlIHRoZSBj
b2RlLiBUaGlzIHdhc24ndCBwb3NzaWJsZSBiZWZvcmUgYmVjYXVzZSB3ZQorICAgICAgICBoYXJk
LWNvZGVkIHRoZSBhZGRyZXNzIG9mIFZNIGF0IGNvbXBpbGF0aW9uIHRpbWUuIFRoYXQgZG9lc24n
dAorICAgICAgICB3b3JrIGJldHdlZW4gd29ya2VycywgYW5kIGRvZXNuJ3Qgd29yayBhY3Jvc3Mg
cmVsb2FkcyAod2hpY2ggSURCCisgICAgICAgIGlzIGludGVuZGVkIHRvIGRvKS4KKworICAgICAg
ICBJdCdsbCBhbHNvIHBvdGVudGlhbGx5IG1ha2UgY29kZSBmYXN0ZXIgb25jZSB3ZSBzdGFydCB0
dW5pbmcKKyAgICAgICAgd2hhdCdzIGluIFRMUywgd2hhdCdzIGluIHdoaWNoIG9mIHRoZSA0IGZy
ZWUgc2xvdHMsIGFuZCB3aGF0J3MgaW4KKyAgICAgICAgcGlubmVkIHJlZ2lzdGVycy4gSSdtIGxl
YXZpbmcgdGhpcyB0dW5pbmcgZm9yIGxhdGVyIGJlY2F1c2UKKyAgICAgICAgdGhlcmUncyBsb3dl
ciBseWluZyBmcnVpdCBmb3IgdXMgdG8gcGljay4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDogQ29waWVkIGZyb20g
YXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oLgorICAgICAgICAoSlND
OjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZjo6QWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYpOgorICAgICAgICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2VJZjo6fkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0
b3JlVG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRoZSBjb2Rl
IHJlcXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0
b3JlVG9UTFMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9y
ZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzItYml0IGluc3RlYWQgb2YgNjQtYml0
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVRvVExTNjQpOgorICAg
ICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX3JtKToKKyAg
ICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZhc3RUTFNMb2Fk
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3RvcmUpOgorICAgICAgICAoSlNDOjpC
Mzo6cnVuKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3Rlcik6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseU93bmVyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OnN0b3Jl
V2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAg
IChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldhc206
OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmxvYWRXYXNt
Q29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAqIHdh
c20vV2FzbUNvbnRleHQuaDogQWRkZWQuIFJlcGxhY2VzICJ0b3AiIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGBjb25zdCBsb2NhdGlvbiA9ICJmb28iYCB0
aHJvd3MgaW4gYSB3b3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODVlMThk
NS4uNjAwMzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw3ICszNDks
NyBAQAogCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QTFDMEJE
MjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgKi87IH07CiAJCTBGMzczMDhEMUMwQkQy
OTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QjFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGls
ZHJlbi5oICovOyB9OwogCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjM3MzA4RTFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07Ci0JCTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLzsgfTsKKwkJMEYzNzMwOTExQzBDRDcwQzAw
MDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZB
IC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMzczMDkzMUMwRDY3RUUwMDA1MkJGQSAv
KiBBaXJVc2VDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMzczMDkyMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAqLzsgfTsK
IAkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAwRjE3Q0YwNzdG
MDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCAqLzsgfTsKIAkJMEYzOEIwMTIxN0NGMDc4
MzAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTAxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50
cnlwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xNjM4LDYgKzE2MzgsNyBAQAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bj
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlB
MDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IH07CiAJCTk3ODgwMTQwMTQ3MUFE
OTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRo
LmNwcCAqLzsgfTsKIAkJOTc4ODAxNDExNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIzMTQ3
MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hp
bmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTBEQTY3RjFDOEUzMTZB
MDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxl
bWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlw
ZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNS
ZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsg
fTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVD
MDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA4MSw2ICsyMDgyLDggQEAKIAkJQUQyRkNDMzAxREI4
M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHkuY3BwICovOyB9OwogCQlBRDJGQ0MzMTFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgfTsKIAkJQUQy
RkNDMzMxREM0MDQ1NDAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8q
IFdhc21Gb3JtYXQuY3BwICovOyB9OworCQlBRDQxMkIzMzFFN0IyRTk5MDA4QUYxNTcgLyogV2Fz
bUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLzsgfTsKKwkJ
QUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcg
LyogV2FzbUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1
RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQw
RjQ3MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxD
b2RlT3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3Ry
YWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29y
ZC5jcHAgKi87IH07CkBAIC0yNDQxLDcgKzI0NDQsNiBAQAogCQlGRUU0M0ZDRTFFNjY0MTcxMDA3
N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRocmVh
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
RjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAw
QkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJCUZFRkQ2RkM2MUQ1RTc5
OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmlu
Z0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUgLyogTWFjaGluZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI4ODA2RTIxMTU1RTQ3OEE5
M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTM3MzIsNiArMzczNCw3
IEBACiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY4NEQ0MzcxQzAwMTYxQzAwODFENjYzIC8qIEFp
ckxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxpdmVuZXNz
Lmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjY5RDYzNkQxQkZCRTVEMDAwMTAxQjFEIC8qIEZUTE91dHB1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRwdXQuaDsgcGF0aCA9IGZ0bC9GVExPdXRwdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAy
IC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
Y2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBMDVBQkQzMTk2
MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8q
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0OCw2ICs0NjUxLDkgQEAKIAkJ
QUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8q
IFdhc21Gb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMxMUU3QjJF
OEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBRDQxMkIzNTFFN0I1N0MwMDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDkzN0MxMUREQkU2MEEwMDc3Qzgw
NyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MDM5LDcgKzUwNDUsNiBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAg
LyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFu
ZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFF
QzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUx
RDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNo
aW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVS
ZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCkBAIC02MjQ5LDYgKzYyNTQsOCBAQAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcx
QUUzMiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAv
KiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMy
ODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKKwkJCQlBRDQxMkIzMTFFN0IyRThB
MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAorCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhB
RjE1NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAv
KiBXYXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAv
KiBXYXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2Fz
bUZvcm1hdC5oICovLApAQCAtNzM5MSw2ICs3Mzk4LDcgQEAKIAkJCQkwRjJDNjNCRjFFNjYwRUE1
MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYw
RjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3
MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgg
Ki8sCisJCQkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZUlmLmggKi8sCiAJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0
QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2Vt
Ymxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5oICovLApAQCAtODU2Miw2ICs4NTcwLDcgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2NDRBODAw
NkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1MTlE
MEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDY5Myw2ICsxMDcwMiw3IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0
cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQ0
MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAppbmRleCA4N2FlNjk4Li5jOThhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTEwOCw2
ICsxMTA4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CisgICAgZnJpZW5kIGNsYXNzIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZUlmOwogICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2U7CiAgICAgdW5zaWduZWQgbV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzOwog
ICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlSWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlSWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i
NzhkOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZUlmIHsKK3B1YmxpYzoKKyAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZihNYWNy
b0Fzc2VtYmxlciYgbWFzbSwgYm9vbCBhbGxvd0lmVHJ1ZSkKKyAgICAgICAgOiBtX21hc20obWFz
bSkKKyAgICAgICAgLCBtX2FsbG93SWZUcnVlKGFsbG93SWZUcnVlKQorICAgICAgICAsIG1fb2xk
VmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyKG1hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlcikK
KyAgICB7CisgICAgICAgIGlmIChtX2FsbG93SWZUcnVlKQorICAgICAgICAgICAgbWFzbS5tX2Fs
bG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1ZTsKKyAgICB9CisKKyAgICB+QWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlSWYoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYWxsb3dJZlRydWUpCisg
ICAgICAgICAgICBtX21hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlciA9IG1fb2xkVmFsdWVPZkFs
bG93U2NyYXRjaFJlZ2lzdGVyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxl
ciYgbV9tYXNtOworICAgIGJvb2wgbV9hbGxvd0lmVHJ1ZTsKKyAgICBib29sIG1fb2xkVmFsdWVP
ZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGRkZmM5MjguLjgxMWE4MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTYzMiw2
ICs2MzIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbG9hZEZyb21UTFMzMihvZmZzZXQs
IGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJlZ2lzdGVySUQgc3JjLCB1
aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExTMzIoc3JjLCBvZmZzZXQp
OworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zm
c2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NDYsNiArOTUx
LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTNjQob2Zmc2V0LCBkc3Qp
OwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90
IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMsIG9mZnNldCk7CisgICAg
fQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRj
aChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggN2Y4YjY1
ZC4uODIzNTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHB1YmxpYzoKICAg
ICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRj
aCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCi0gICAgCisKICAgICB2b2lk
IGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOwpAQCAtMzYxNCw2ICszNjE0
LDM0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgZHN0KTsKICAg
ICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOwogICAgIH0KKworICAgIHN0
YXRpYyBib29sIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVG9UTFMzMihS
ZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJ
RCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAg
ICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9f
RUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIHRtcCk7CisgICAgICAg
IHN0b3JlMzIoc3JjLCBBZGRyZXNzKHRtcCwgb2Zmc2V0KSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43
KSwgdG1wKTsKKyAgICAgICAgc3RvcmU2NChzcmMsIEFkZHJlc3ModG1wLCBvZmZzZXQpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdp
c3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYgLy8gRU5B
QkxFKEZBU1RfVExTX0pJVCkKICAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKaW5kZXggMTViMjIwYy4uYjg2YzdkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aApAQCAtMzg2NCw2ICszODY0LDIzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZ3Mo
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CiAgICAgfQorCisK
KyAgICBzdGF0aWMgYm9vbCBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgc3RvcmVU
b1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywgb2Zmc2V0
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0
Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogI2VuZGlm
CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiYzM0YTBkLi4yMzQzZTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCkBAIC0xNzA1LDcgKzE3MDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgbG9h
ZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuZ3MoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQs
IGRzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIob2Zmc2V0LCBkc3QpOworICAgIH0K
KworICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZxX3JtKHNyYywgb2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTRjOGUzMi4uMzQzMDIyZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBA
IC0yMzYwLDYgKzIzNjAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOwogICAgIH0KIAorICAgIHZvaWQgbW92bF9y
bShSZWdpc3RlcklEIHNyYywgdWludDMyX3QgYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CisgICAgfQorCiAjaWYg
Q1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZHN0KQogICAgIHsKQEAgLTIzODEsNiArMjM4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9W
X0V2R3YsIHNyYywgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2
b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9W
X0VBWE92KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggYzRjYmUxOC4uNWE1
NWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTE1MjExLDcgKzE1MjEx
LDcgQEAgdm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQogICAgICAgICBDSEVDS19FUShudW1Ub1N0b3Jl
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgdGVzdEZhc3RUTFMoKQordm9pZCB0ZXN0RmFzdFRMU0xvYWQo
KQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCiAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNf
ZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDB4YmVlZikpKTsKQEAgLTE1MjI2LDEzICsxNTIyNiwzNyBAQCB2b2lkIHRlc3RG
YXN0VExTKCkKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zm
c2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7CiAgICAgICAgIH0p
OwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBwYXRjaHBvaW50KTsKICAgICAKICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRw
dHJfdD4ocHJvYyksIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSk7CiAjZW5kaWYKIH0K
IAordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNo
cG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMHhkZWFkKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmVUb1RMU1B0cihzY3JhdGNoLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkp
OworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKKworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7CisgICAg
Q0hFQ0tfRVEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGly
ZWN0KFdURl9URVNUSU5HX0tFWSkpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOwor
I2VuZGlmCit9CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9w
dGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7CkBAIC0x
Njc2MCw3ICsxNjc4NCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRkcmVzcygpKTsKICAgICAKLSAgICBSVU4odGVzdEZh
c3RUTFMoKSk7CisgICAgUlVOKHRlc3RGYXN0VExTTG9hZCgpKTsKKyAgICBSVU4odGVzdEZhc3RU
TFNTdG9yZSgpKTsKIAogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAgIFJVTih0ZXN0QnJhbmNo
Qml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFp
cjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCmluZGV4IDQ5YzdmOWMuLjMzMWZiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgogI2luY2x1ZGUgIlR5cGVvZlR5cGUuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1
ZGUgPHd0Zi9GYXN0VExTLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjM0LDcgKzE2MzUs
NDUgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3YW5nc0ludDY0SGFz
aChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNlbmRpZgotICAgIAor
CisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKKyAgICB7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktl
eShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisjZWxzZQorICAgICAgICAvLyBGSVhNRTog
U2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICAgICAgbG9hZFB0cigmbV92bS0+d2Fz
bUNvbnRleHQsIGRzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRl
eHQoR1BSUmVnIHNyYykKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAg
c3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9L
RVkpKTsKKyNlbHNlCisgICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJl
IHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTc3MworICAgICAgICBzdG9yZVB0cihzcmMsICZtX3ZtLT53YXNtQ29udGV4dCk7CisjZW5kaWYK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRj
aFJlZ2lzdGVyKCkKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgcmV0
dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2Vsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Rv
cmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQorICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwogICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA1NjAxYjY1Li43
ZGRjNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1
OSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgi
CisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CkBAIC01OTIsNyArNTkzLDcgQEAgc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25l
cihWTSYgdm0pCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIEVhY2ggV2ViQXNz
ZW1ibHkuSW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1v
ZHVsZSwgd2hpY2ggYXJlIHRoZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCi0gICAgcmV0
dXJuIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGxv
YWRXYXNtQ29udGV4dCh2bSktPm1vZHVsZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggOWE2NTUwNi4uMDg1N2UzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTItMjAxNCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIt
MjAxNCwgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTIgKzMyLDEzIEBACiAjaW5jbHVkZSAiSklU
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKLSNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCi0jaW5jbHVkZSAiTWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKKyNpbmNsdWRlICJNYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtKSVQuaCIKKyNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAj
aW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgpAQCAtMTE1Niw3ICsxMTU3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhj
ZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLT50b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKIAogICAg
ICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5
UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5
cGUodHlwZSkpOwogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
ZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDA2NGRiMjAuLjg1
MTE1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE3Nyw3ICsxNzcs
NiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBjbGll
bnREYXRhKDApCiAgICAgLCB0b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxG
cmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCi0gICAgLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UobnVsbHB0cikKICAgICAsIG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQg
PyB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdU
YWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcg
QXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDE0NDA4NmQuLmE0ZDA4
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE1LDcgKzMxNSwxMCBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQg
bWlnaHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFt
ZSB7IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTsKKyNpZiAhRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAvLyBGSVhNRTogU2F2
ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdh
c21Db250ZXh0IHsgbnVsbHB0ciB9OworI2VuZGlmCiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVJhcmVEYXRh
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
clN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCAwYTJlNWNjLi42NTU3ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZUlmLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUg
IkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29tcGlsZS5oIgpAQCAtNDgsNiArNDksNyBA
QAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKICNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNs
dWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5j
bHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAt
MjI2LDkgKzIyOCwzNiBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX21lbW9yeUJhc2VHUFI7CiAg
ICAgR1BSUmVnIG1fbWVtb3J5U2l6ZUdQUjsKICAgICBWYWx1ZSogbV96ZXJvVmFsdWVzW251bVR5
cGVzXTsKLSAgICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOworICAgIFZhbHVlKiBtX2luc3RhbmNl
VmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRoaXMgbGF6eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9OwogCitzdGF0aWMgVmFsdWUqIGxvYWRXYXNtQ29udGV4
dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7CisgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdh
c21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQorICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxw
ZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsK
KworICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3Jp
Z2luKCksIHBhdGNocG9pbnQpOworfQorCitzdGF0aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFBy
b2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ssIFZhbHVlKiBhcmcpCit7CisgICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7CisgICAgaWYgKENDYWxsSGVscGVyczo6c3Rv
cmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKKyAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAg
IHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVS
ZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2Ny
YXRjaChqaXQsIENDYWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dChwYXJhbXNbMF0u
Z3ByKCkpOworICAgICAgICB9KTsKK30KKwogQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihW
TSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVy
ZSwgV2FzbUludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5rZWRXYXNt
VG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQogICAgIDogbV92bSh2bSkKICAg
ICAsIG1faW5mbyhpbmZvKQpAQCAtMjcwLDggKzI5OSw3IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJH
ZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJl
JiBwCiAKICAgICB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cEZyYW1lSW5Qcm9sb2d1ZSgm
Y29tcGlsYXRpb24tPndhc21DYWxsZWVNb3ZlTG9jYXRpb24sIG1fcHJvYywgT3JpZ2luKCksIG1f
Y3VycmVudEJsb2NrKTsKIAotICAgIG1faW5zdGFuY2VWYWx1ZSA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9w
cm9jLCBPcmlnaW4oKSwgJm1fdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7CisgICAgbV9p
bnN0YW5jZVZhbHVlID0gbG9hZFdhc21Db250ZXh0KG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwog
fQogCiBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewpAQCAtMjgzLDggKzMxMSw4IEBAIHN0YXRp
YyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBp
bnN0YW5jZSwgUHJvY2VkdXJlCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9IGJsb2NrLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
LCBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKTsKIAot
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNv
ZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRl
Y2x0eXBlKHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+bWVtb3J5KCktPm1lbW9yeSgpLnNp
emUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0p
LT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdl
biByZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5
cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNp
emVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKICAgICBNZW1v
cnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0LmJhc2UgPSBibG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgbWVtb3J5
T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSgpKTsKICAgICByZXN1
bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNp
emUoKSk7CkBAIC0yOTIsOSArMzIwLDkgQEAgc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1l
bW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxT
dGF0ZShWTSYgdm0sIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyB2b2lkIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1v
cnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
IHsKLSAgICBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksIGluc3RhbmNlLCBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7CisgICAgc3RvcmVXYXNtQ29udGV4
dChwcm9jLCBibG9jaywgaW5zdGFuY2UpOwogCiAgICAgaWYgKCEhbWVtb3J5KSB7CiAgICAgICAg
IGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3Rlcklu
Zm86OmdldCgpOwpAQCAtMzk1LDcgKzQyMyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UgPSB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwogICAgICAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1lbW9yeSgpOwogCiAgICAgICAg
IGlmIChkZWx0YSA8IDApCkBAIC00MTQsNyArNDQyLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
YywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4oZ3Jvd01lbW9yeSkpLAogICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2lu
dGVyLCBPcmlnaW4oKSksIGRlbHRhKTsKIAotICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0
YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJl
bnRCbG9jayk7CisgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9y
eSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIHJldHVy
biB7IH07CiB9CkBAIC05MDEsNyArOTI5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxs
KHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLAogICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIg
V2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1l
bW9yeS4KLSAgICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZv
Lm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIGNvbnRpbnVhdGlvbik7CisgICAgICAg
IHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VW
YWx1ZSwgbV9wcm9jLCBjb250aW51YXRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3Vs
dCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIG1fY3VycmVudEJs
b2NrLCBPcmlnaW4oKSwgYXJncywgdG9CM1R5cGUocmV0dXJuVHlwZSksCiAgICAgICAgICAgICBb
Jl0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgewpAQCAtOTk1LDcgKzEwMjMsNyBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25h
dHVyZSwgU2lnbmF0dXJlSW5kZXggcwogICAgICAgICB9KTsKIAogICAgIC8vIFRoZSBjYWxsIGNv
dWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBj
b3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xv
YmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1f
Y3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8u
bWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KQEAgLTEwMzcsNyArMTA2NSw3IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6
ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHBy
ZXNzCiAgICAgZGF0YUxvZ0xuKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3Jh
cHBlcihWTSYgdm0sIENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNt
SW50ZXJuYWxGdW5jdGlvbiYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbykKK3N0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNt
V3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUludGVy
bmFsRnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3Qg
TW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29t
cGlsYXRpb25Db250ZXh0LmpzRW50cnlwb2ludEpJVDsKIApAQCAtMTE2NSw3ICsxMTkzLDcgQEAg
c3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250
ZXh0JiBjb21waWxhdGlvbkNvbnRleHQKIAogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAg
ICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAg
ICAgICAgaml0LmxvYWRQdHIoJnZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgYmFzZU1lbW9y
eSk7CisgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CiAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKICAgICAgICAgY29uc3Qg
YXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VS
VChzaXplUmVncy5zaXplKCkgPj0gMSk7CkBAIC0xMjI3LDcgKzEyNTUsNyBAQCBFeHBlY3RlZDxz
dGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29t
cGlsZShWTSYgdm0sCiAgICAgICAgIHJlc3VsdC0+d2FzbUVudHJ5cG9pbnQuY2FsbGVlU2F2ZVJl
Z2lzdGVycyA9IHByb2NlZHVyZS5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgfQogCi0gICAg
Y3JlYXRlSlNUb1dhc21XcmFwcGVyKHZtLCBjb21waWxhdGlvbkNvbnRleHQsICpyZXN1bHQsIHNp
Z25hdHVyZSwgaW5mbyk7CisgICAgY3JlYXRlSlNUb1dhc21XcmFwcGVyKGNvbXBpbGF0aW9uQ29u
dGV4dCwgKnJlc3VsdCwgc2lnbmF0dXJlLCBpbmZvKTsKICAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmlu
ZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5k
ZXggY2JiM2Y5OS4uZmI2NzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
aW5kaW5nLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiwxNiArMzYsMTcgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29u
dmVudGlvbi5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2Vw
dGlvblR5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogdHlwZWRl
ZiBDQ2FsbEhlbHBlcnMgSklUOwogCi1zdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2Vs
bChWTSogdm0sIEpJVCYgaml0LCB1bnNpZ25lZCBpbXBvcnRJbmRleCwgR1BSUmVnIHJlc3VsdCkK
K3N0YXRpYyB2b2lkIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKEpJVCYgaml0LCB1bnNpZ25lZCBp
bXBvcnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsKLSAgICAvLyBXZSdyZSBjYWxsaW5nIG91dCBv
ZiB0aGUgY3VycmVudCBXZWJBc3NlbWJseS5JbnN0YW5jZSwgd2hpY2ggaXMgaWRlbnRpZmllZCBv
biBWTS4gVGhhdCBJbnN0YW5jZSBoYXMgYSBsaXN0IG9mIGFsbCBpdHMgaW1wb3J0IGZ1bmN0aW9u
cy4KLSAgICBqaXQubG9hZFB0cigmdm0tPnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgcmVzdWx0
KTsKKyAgICAvLyBXZSdyZSBjYWxsaW5nIG91dCBvZiB0aGUgY3VycmVudCBXZWJBc3NlbWJseS5J
bnN0YW5jZS4gVGhhdCBJbnN0YW5jZSBoYXMgYSBsaXN0IG9mIGFsbCBpdHMgaW1wb3J0IGZ1bmN0
aW9ucy4KKyAgICBqaXQubG9hZFdhc21Db250ZXh0KHJlc3VsdCk7CiAgICAgaml0LmxvYWRQdHIo
SklUOjpBZGRyZXNzKHJlc3VsdCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9y
dEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7CiB9CiAKQEAgLTEwMSw3ICsxMDIsNyBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxM
aW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAg
ICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLT50b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmds
b2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0
b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgQVNDSUlMaXRlcmFsKCJpNjQgbm90IGFsbG93ZWQgYXMg
cmV0dXJuIHR5cGUgb3IgYXJndW1lbnQgdG8gYW4gaW1wb3J0ZWQgZnVuY3Rpb24iKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0yNTQsNyArMjU1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0lu
Zm9zLAogICAgIEdQUlJlZyBpbXBvcnRKU0NlbGxHUFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8g
Q2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwIGZvciBzbG93IHBhdGggYmVsb3cuCiAgICAgQVNT
RVJUKCF3YXNtQ0MubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcp
KTsKIAotICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKHZtLCBqaXQsIGltcG9ydEluZGV4LCBp
bXBvcnRKU0NlbGxHUFJSZWcpOworICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKGppdCwgaW1w
b3J0SW5kZXgsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CiAKICAgICBqaXQuc3RvcmU2NChpbXBvcnRK
U0NlbGxHUFJSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIGppdC5zdG9yZTMy
KEpJVDo6VHJ1c3RlZEltbTMyKG51bWJlck9mUGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhP
ZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CkBAIC00MjYsMTMgKzQyNywxMyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub1dhc20oVk0qIHZtLCB1bnNpZ25lZCBp
bXBvcnRJbmRleCkKICAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86Om5vblByZXNlcnZlZE5v
bkFyZ3VtZW50R1BSOwogCiAgICAgLy8gQjMncyBjYWxsIGNvZGVnZW4gZW5zdXJlcyB0aGF0IHRo
ZSBKU0NlbGwgaXMgYSBXZWJBc3NlbWJseUZ1bmN0aW9uLgotICAgIG1hdGVyaWFsaXplSW1wb3J0
SlNDZWxsKHZtLCBqaXQsIGltcG9ydEluZGV4LCBzY3JhdGNoKTsKKyAgICBtYXRlcmlhbGl6ZUlt
cG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBzY3JhdGNoKTsKIAotICAgIC8vIEdldCB0aGUg
Y2FsbGVlJ3MgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYW5kIHNldCBpdCBhcyB2bS50b3BKU1dlYkFz
c2VtYmx5SW5zdGFuY2UuIFRoZSBjYWxsZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVzdG9yaW5nIGl0
cyBvd24gSW5zdGFuY2UuCisgICAgLy8gR2V0IHRoZSBjYWxsZWUncyBXZWJBc3NlbWJseS5JbnN0
YW5jZSBhbmQgc2V0IGl0IGFzIFdhc21Db250ZXh0LiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBjYXJl
IG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgogICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0g
cGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAgICBBU1NFUlQoYmFzZU1lbW9yeSAhPSBz
Y3JhdGNoKTsKICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Moc2NyYXRjaCwgV2ViQXNzZW1i
bHlGdW5jdGlvbjo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgYmFzZU1lbW9yeSk7IC8vIEluc3RhbmNl
Ki4KLSAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgJnZtLT50b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpOworICAgIGppdC5zdG9yZVdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwogCiAgICAgLy8g
RklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgV2ViQXNzZW1ibHkuSW5z
dGFuY2UgaGF2ZSB0aGUgc2FtZSBwaW5uZWQgcmVnaXN0ZXJzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsZWUncyBi
YXNlTWVtb3J5IHJlZ2lzdGVyIGFzIHdlbGwgYXMgdGhlIG1lbW9yeSBzaXplIHJlZ2lzdGVycy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWNhYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKworI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0Zh
c3RUTFMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9h
ZFdhc21Db250ZXh0KFZNJiB2bSkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIFVO
VVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkp
KTsKKyNlbHNlCisgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxs
b3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisg
ICAgcmV0dXJuIHZtLndhc21Db250ZXh0OworI2VuZGlmCit9CisKK3ZvaWQgc3RvcmVXYXNtQ29u
dGV4dChWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIF9wdGhyZWFkX3Nl
dHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQq
PihpbnN0YW5jZSkpOworI2Vsc2UKKyAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3
aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3NzMKKyAgICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNlOworI2VuZGlmCit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMWM1ZThhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Db250ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOworY2xhc3MgVk07CisKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250
ZXh0KFZNJik7Cit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwCmluZGV4IDUwMmJiMTIuLmQxYTgwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUg
Ildhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL1N5
c3RlbVRyYWNpbmcuaD4KQEAgLTEyMCwxMSArMTIxLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1
bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3
aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2Vu
ZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
NDg2Ci0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNl
ID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwor
ICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAg
QVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlv
bi0+aW5zdGFuY2UoKSA9PSBsb2FkV2FzbUNvbnRleHQodm0pKTsKICAgICBFbmNvZGVkSlNWYWx1
ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+anNFbnRyeXBvaW50KCks
ICZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2Ug
PSBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlOworICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHBy
ZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5oCmluZGV4IDFiMjE0Y2UuLjAxNWZjY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CiBjbGFz
cyBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5YTljNjkuLjdmYzgyODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMTcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5z
dGVhZCBvZiBvbiBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvRmFzdFRMUy5oOiByZXNlcnZlIG9uZSBrZXkgZm9yIFdlYkFzc2VtYmx5LCBk
ZWxldGUgYSBidW5jaAorICAgICAgICBvZiBkZWFkIGNvZGUgd2hpY2ggY2xhbmcgY291bGRuJ3Qg
Y29tcGlsZSAoaXQncyB2YWxpZCBHQ0MgYXNzZW1ibHkKKyAgICAgICAgd2hpY2ggTExWTSBkaXNs
aWtlcykuCisKIDIwMTctMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KIAogICAgICAgICBUaW1lIGNoYW5uZWwgYXR0YWNrIG9uIFNWRyBGaWx0ZXJzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
VExTLmgKaW5kZXggNjNmODgzOS4uYjQ0MzI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmFzdFRMUy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUgPFN5c3RlbS9wdGhyZWFkX21hY2hk
ZXAuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAg
LTQ0LDUyICs0NSwyMCBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIGFjY2lkZW50YWxseSB1c2UgdGhl
IHNhbWUga2V5IGZvciBtb3JlIHRoYW4gb25lIHRoaW5nLgogCiAjZGVmaW5lIFdURl9USFJFQURf
REFUQV9LRVkgV1RGX0ZBU1RfVExTX0tFWTAKKyNkZWZpbmUgV1RGX1dBU01fQ09OVEVYVF9LRVkg
V1RGX0ZBU1RfVExTX0tFWTEKICNkZWZpbmUgV1RGX1RFU1RJTkdfS0VZIFdURl9GQVNUX1RMU19L
RVkzCiAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotLy8gQmVsb3cgaXMgdGhlIGNvZGUgdGhh
dCB0aGUgSklUIHdpbGwgZW1pdC4KLQotI2lmIENQVShYODZfNjQpCi1pbmxpbmUgdWludHB0cl90
IGxvYWRGYXN0VExTKHVuc2lnbmVkIG9mZnNldCkKLXsKLSAgICB1aW50cHRyX3QgcmVzdWx0Owot
ICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1vdnEgJSVnczolMSwgJTAiCi0gICAgICAgIDog
Ij1yIihyZXN1bHQpCi0gICAgICAgIDogInIiKG9mZnNldCkKLSAgICAgICAgOiAibWVtb3J5Iik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbGlmIENQVShBUk02NCkKLWlubGluZSB1aW50cHRy
X3QgbG9hZEZhc3RUTFModW5zaWduZWQgcGFzc2VkT2Zmc2V0KQotewotICAgIHVpbnRwdHJfdCBy
ZXN1bHQ7Ci0gICAgdWludHB0cl90IG9mZnNldCA9IHBhc3NlZE9mZnNldDsKLSAgICBhc20gdm9s
YXRpbGUoCi0gICAgICAgICJtcnMgJTAsIFRQSURSUk9fRUwwXG5cdCIKLSAgICAgICAgImFuZCAl
MCwgJTAsICMweGZmZmZmZmZmZmZmZmZmZjhcblx0IgotICAgICAgICAibGRyICUwLCBbJTAsICUx
XSIKLSAgICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAgOiAiciIob2Zmc2V0KQotICAgICAg
ICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2Vsc2UKLSNlcnJvciAiQmFk
IGFyY2hpdGVjdHVyZSIKLSNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShGQVNUX1RMU19KSVQpCi0K
IGlubGluZSB1bnNpZ25lZCBmYXN0VExTT2Zmc2V0Rm9yS2V5KHVuc2lnbmVkIGxvbmcgc2xvdCkK
IHsKICAgICByZXR1cm4gc2xvdCAqIHNpemVvZih2b2lkKik7CiB9CisjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6ZmFzdFRMU09mZnNldEZvcktleTsKLQogI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCi11c2luZyBXVEY6OmxvYWRGYXN0VExTOwordXNpbmcgV1RGOjpm
YXN0VExTT2Zmc2V0Rm9yS2V5OwogI2VuZGlmCiAKICNlbmRpZiAvLyBIQVZFKEZBU1RfVExTKQot
LSAKMi4xMC4xCgo=
</data>
<flag name="commit-queue"
          id="326415"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305251</attachid>
            <date>2017-03-23 17:47:30 -0700</date>
            <delta_ts>2017-03-24 10:31:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>56378</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA2ZjhjN2JmODU5MTI1YTI3NWZlMjE2ZmNlOTRlZTUyNTIxOTE0MThmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgOSAr
KysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwg
MzAgKysrKysrKy0KIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAg
ICAgICAgIHwgMTcgKysrKysKIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAg
ICAgICAgICAgICAgIHwgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggICAgIHwgMTAgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCAgICAgICAgICAgICAgICB8IDMxICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oICAgICAgICB8IDQzICsrKysrKysrKystCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwICAgICAgICAgICAgICB8ICA1ICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgICAgICB8ICA5ICsrLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oICAgICAgICAgICAgfCAgMyArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwICAgICAgICAgICAgICAgfCAgMSAt
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAgICAgICB8ICAz
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgICB8
IDU4ICsrKysrKysrKystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAgICAgICAgICB8IDE5ICsrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29udGV4dC5jcHAgICAgICAgICB8IDU5ICsrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCAgICAgICAgICAgfCA0MCArKysrKysrKysrCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8IDEwICsrLQog
Li4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggICAgICAgfCAgMyAr
LQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx
MSArKysKIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMzkgKy0tLS0tLS0tLQogMjUgZmlsZXMgY2hhbmdlZCwgNDkxIGluc2VydGlvbnMoKyksIDgy
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTIyNjRhYy4uODI2N2QwMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTMyLDYgKzkzMiw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKICAg
ICB3YXNtL1dhc21CaW5kaW5nLmNwcAogICAgIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmNw
cAorICAgIHdhc20vV2FzbUNvbnRleHQuY3BwCiAgICAgd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcAogICAgIHdhc20vV2FzbUZvcm1hdC5jcHAKICAgICB3YXNtL1dhc21NZW1vcnkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxZTEzOWQzLi45YTU1MTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MSBAQAorMjAxNy0wMy0xNyAgSkYgQmFzdGllbiAg
PGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IHN0b3JlIHN0YXRl
IGluIFRMUyBpbnN0ZWFkIG9mIG9uIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2luZyB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpbnN0ZWFkIG9mIFZN
IG1ha2VzIGNvZGUgbW9yZSBwb3NpdGlvbgorICAgICAgICBpbmRlcGVuZGVudC4gV2UgdXNlZCB0
byBzdG9yZSB0aGUgV2ViQXNzZW1ibHkgdG9wIEluc3RhbmNlICh0aGUKKyAgICAgICAgbGF0ZXN0
IG9uZSBpbiB0aGUgY2FsbCBzdGFjaykgb24gVk0sIG5vdyB3ZSBpbnN0ZWFkIHN0b3JlIGl0IGlu
CisgICAgICAgIFRMUy4gVGhpcyB0b3AgSW5zdGFuY2UgaXMgdXNlZCB0byBhY2Nlc3MgYSBidW5j
aCBvZiBzdGF0ZSBzdWNoIGFzCisgICAgICAgIE1lbW9yeSBsb2NhdGlvbiwgc2l6ZSwgdGFibGUg
KGZvciBjYWxsX2luZGlyZWN0KSwgZXRjLgorCisgICAgICAgIEluc3RlYWQgb2YgY2FsbGluZyBp
dCAidG9wIiwgd2hpY2ggaXMgY29uZnVzaW5nLCB3ZSBub3cganVzdCBjYWxsCisgICAgICAgIGl0
IFdhc21Db250ZXh0LgorCisgICAgICAgIE1ha2luZyB0aGUgY29kZSBQSUMgbWVhbnMgZnV0dXJl
IHBhdGNoZXMgd2lsbCBiZSBhYmxlIHRvCisgICAgICAgIHBvc3RNZXNzYWdlIGFuZCBzdHJ1Y3R1
cmVkIGNsb25lIGludG8gSURCIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgICAgIHJlY29tcGlsZSB0
aGUgY29kZS4gVGhpcyB3YXNuJ3QgcG9zc2libGUgYmVmb3JlIGJlY2F1c2Ugd2UKKyAgICAgICAg
aGFyZC1jb2RlZCB0aGUgYWRkcmVzcyBvZiBWTSBhdCBjb21waWxhdGlvbiB0aW1lLiBUaGF0IGRv
ZXNuJ3QKKyAgICAgICAgd29yayBiZXR3ZWVuIHdvcmtlcnMsIGFuZCBkb2Vzbid0IHdvcmsgYWNy
b3NzIHJlbG9hZHMgKHdoaWNoIElEQgorICAgICAgICBpcyBpbnRlbmRlZCB0byBkbykuCisKKyAg
ICAgICAgSXQnbGwgYWxzbyBwb3RlbnRpYWxseSBtYWtlIGNvZGUgZmFzdGVyIG9uY2Ugd2Ugc3Rh
cnQgdHVuaW5nCisgICAgICAgIHdoYXQncyBpbiBUTFMsIHdoYXQncyBpbiB3aGljaCBvZiB0aGUg
NCBmcmVlIHNsb3RzLCBhbmQgd2hhdCdzIGluCisgICAgICAgIHBpbm5lZCByZWdpc3RlcnMuIEkn
bSBsZWF2aW5nIHRoaXMgdHVuaW5nIGZvciBsYXRlciBiZWNhdXNlCisgICAgICAgIHRoZXJlJ3Mg
bG93ZXIgbHlpbmcgZnJ1aXQgZm9yIHVzIHRvIHBpY2suCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
ICogYXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmg6IENvcGllZCBm
cm9tIGFzc2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaC4KKyAgICAgICAg
KEpTQzo6QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWY6OkFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZUlmKToKKyAgICAgICAgKEpTQzo6QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlSWY6On5BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZik6CisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjpzdG9yZVRvVExTUHRyKTogd2UgcHJldmlvdXNseSBkaWRuJ3QgaGF2ZQorICAgICAgICB0aGUg
Y29kZSByZXF1aXJlZCB0byBzdG9yZSB0byBUTFMsIG9ubHkgdG8gbG9hZAorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OmxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVG9UTFMzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVG9UTFM2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRGcm9tVExTUHRyTmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdG9yZVRvVExTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4Nl82NDo6bG9hZEZyb21UTFM2NCk6IHdhcyBsb2FkaW5nIDMyLWJpdCBpbnN0ZWFkIG9mIDY0
LWJpdAorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmVUb1RMUzY0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6bW92bF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9ybSk6
CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExT
TG9hZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0RmFzdFRMU1N0b3JlKToKKyAgICAgICAgKEpT
Qzo6QjM6OnJ1bik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3Jh
dGNoUmVnaXN0ZXIpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
d2ViQXNzZW1ibHlPd25lcik6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6Cisg
ICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpz
dG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJ
UkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OmdldE1lbW9yeUJhc2VBbmRTaXplKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpX
YXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjptYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCk6CisgICAgICAgIChK
U0M6Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvV2FzbSk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpsb2Fk
V2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAg
KiB3YXNtL1dhc21Db250ZXh0Lmg6IEFkZGVkLiBSZXBsYWNlcyAidG9wIiBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmg6CisKIDIwMTctMDMtMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBgY29uc3QgbG9jYXRpb24gPSAiZm9v
ImAgdGhyb3dzIGluIGEgd29ya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg1
ZTE4ZDUuLjYwMDMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDksNyAr
MzQ5LDcgQEAKIAkJMEYzNzMwOEMxQzBCRDI5MTAwMDUyQkZBIC8qIEIzUGhpQ2hpbGRyZW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOEEx
QzBCRDI5MTAwMDUyQkZBIC8qIEIzUGhpQ2hpbGRyZW4uY3BwICovOyB9OwogCQkwRjM3MzA4RDFD
MEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOEIxQzBCRDI5MTAwMDUyQkZBIC8qIEIzUGhp
Q2hpbGRyZW4uaCAqLzsgfTsKIAkJMEYzNzMwOEYxQzBDRDY4NTAwMDUyQkZBIC8qIERpc2FsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOEUxQzBDRDY4NTAwMDUyQkZBIC8qIERpc2FsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovOyB9OwotCQkwRjM3MzA5MTFDMENENzBDMDAwNTJC
RkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyog
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07CisJCTBGMzczMDkxMUMwQ0Q3
MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzczMDkwMUMwQ0Q3MEMwMDA1
MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjM3MzA5MzFDMEQ2N0VFMDAwNTJC
RkEgLyogQWlyVXNlQ291bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjM3MzA5MjFDMEQ2N0VFMDAwNTJCRkEgLyogQWlyVXNlQ291bnRzLmggKi87
IH07CiAJCTBGMzhCMDExMTdDRjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMEYxN0NG
MDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgKi87IH07CiAJCTBGMzhCMDEyMTdD
RjA3ODMwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzhCMDEwMTdDRjA3N0YwMEIxNDREMyAvKiBMTElu
dEVudHJ5cG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTYzOCw2ICsxNjM4LDcgQEAKIAkJOTY5QTA3OUIwRUQxRDNBRTAwRjFGNjgxIC8q
IE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oICovOyB9OwogCQk5Nzg4MDE0MDE0
NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRl
TWF0aC5jcHAgKi87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMy
MzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBN
YWNoaW5lQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTkwREE2N0YxQzhF
MzE2QTAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19p
bXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5MERBNjdFMUM4RTMxMUQwMDI5NTE1OSAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTkyOEZGM0IxOEFDNEFFQzAwQjhDRjEyIC8q
IEpTUmVwbGF5SW5wdXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5MjhGRjM5MThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAg
Ki87IH07CiAJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyOEZGM0ExOEFD
NEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIwODEsNiArMjA4Miw4IEBACiAJCUFEMkZDQzMw
MURCODNENDkwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07CiAJ
CUFEMkZDQzMzMURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIzRTcz
NiAvKiBXYXNtRm9ybWF0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8q
IFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi87IH07
CisJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzIxRTdCMkU4QTAwOEFG
MTU3IC8qIFdhc21Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQUQ0MjUyNTExRTVEMEUxNDAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2lu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQyNTI1
MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLzsgfTsKIAkJQUQ0MjUyNTMx
RTVEMEY0NzAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBG
dWxsQ29kZU9yaWdpbi5jcHAgKi87IH07CiAJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBB
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRDQ5MzdDMTFEREJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVS
ZWNvcmQuY3BwICovOyB9OwpAQCAtMjQ0MSw3ICsyNDQ0LDYgQEAKIAkJRkVFNDNGQ0UxRTY2NDE3
MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEgLyogUGxhdGZvcm1U
aHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2
MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwogCQlGRUZENkZDNjFE
NUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNT
dHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyODgwNkUyMTE1NUU0
NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zNzMyLDYgKzM3
MzQsNyBAQAogCQkyNjQwOTFGQTFCRTJGRDQxMDA2ODREQjIgLyogQWlyT3Bjb2RlLm9wY29kZXMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gQWlyT3Bjb2RlLm9wY29kZXM7IHBhdGggPSBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2ODRENDM3MUMwMDE2MUMwMDgxRDY2MyAv
KiBBaXJMaXZlbmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMaXZl
bmVzcy5oOyBwYXRoID0gYjMvYWlyL0FpckxpdmVuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI2OUQ2MzZEMUJGQkU1RDAwMDEwMUIxRCAvKiBGVExPdXRwdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT3V0cHV0Lmg7IHBhdGggPSBmdGwvRlRMT3V0
cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI4ODA2RTIxMTU1RTQ3OEE5M0ZB
N0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYWNoaW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTA1QUJE
MzE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBMDVBQkQ0MTk2MURGMjQwMDM0MTc1
MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJBMTExMjQzMTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tR2V0dGVyU2V0
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDgsNiArNDY1MSw5IEBA
CiAJCUFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBRDJGQ0MyRjFEQjgzOUY3MDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkFzc2VtYmx5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTcz
NiAvKiBXYXNtRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21Gb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDQxMkIzMTFF
N0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2FzbUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZUlmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRDQyNTI1MjFFNUQwRjIyMDA5RDJBOTcgLyogRnVsbENvZGVPcmln
aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVsbENvZGVPcmln
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDQ5MzdDMTFEREJFNjBBMDA3
N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTAzOSw3ICs1MDQ1LDYgQEAKIAkJRkVGMDQwNTAxQUFFNjYyRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBh
cmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjA0MDUy
MUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMv
Q29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRkQ2
RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTI4ODA2RTIxMTU1RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNYWNoaW5lQ29udGV4dC5oOyBwYXRoID0g
TWFjaGluZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNjI0OSw2ICs2MjU0LDggQEAKIAkJCQlBRDRCMURGODFERjI0NEQ3
MDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCAqLywKIAkJCQk1M0ZEMDREMTFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQk1M0ZEMDREMjFEN0FCMTg3
MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8sCisJCQkJQUQ0MTJCMzExRTdC
MkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLywKKwkJCQlBRDQxMkIzMjFFN0IyRThB
MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLywKIAkJCQk3OURBRTI3OTFFMDNDODIyMDBCNTI2
QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCAqLywKIAkJCQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3
MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8q
IFdhc21Gb3JtYXQuaCAqLywKQEAgLTczOTEsNiArNzM5OCw3IEBACiAJCQkJMEYyQzYzQkYxRTY2
MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovLAogCQkJCTg2MDE2
MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi8sCiAJCQkJ
MEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZS5oICovLAorCQkJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZi5oICovLAogCQkJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBB
Uk02NEFzc2VtYmxlci5oICovLAogCQkJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuY3BwICovLAogCQkJCTg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3Nl
bWJsZXIuaCAqLywKQEAgLTg1NjIsNiArODU3MCw3IEBACiAJCQkJMEZFQTBBMEMxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjJFNUE3MURBNjQ0
QTgwMDZFNzcwOSAvKiBGVExET01KSVRQYXRjaHBvaW50UGFyYW1zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlENEMwRDFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0
QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNG
NTE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICov
LApAQCAtMTA2OTMsNiArMTA3MDIsNyBAQAogCQkJCUJDREUzQjQzMEU2QzgzMkQwMDE0NTNBNyAv
KiBTdHJ1Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0RUU3MEYwRUJCN0E1QjAwNTkz
NEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBRjczODJDMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUFENDEyQjMzMUU3QjJFOTkwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDMkYwRjJEMTE2QkFFRUU5MDAxODdDMTkgLyogU3RydWN0dXJlUmFyZURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNDM4QTMxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVy
ZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyog
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgKaW5kZXggODdhZTY5OC4uYzk4YWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTEx
MDgsNiArMTEwOCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICBmcmllbmQgY2xhc3MgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOworICAgIGZyaWVuZCBjbGFzcyBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZjsKICAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlOwogICAgIHVuc2lnbmVkIG1fdGVtcFJlZ2lzdGVyc1ZhbGlkQml0
czsKICAgICBib29sIG1fYWxsb3dTY3JhdGNoUmVnaXN0ZXIgeyB0cnVlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZUlmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjc4ZDhmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaApAQCAtMCwwICsxLDU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2VJZiB7CitwdWJsaWM6CisgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYo
TWFjcm9Bc3NlbWJsZXImIG1hc20sIGJvb2wgYWxsb3dJZlRydWUpCisgICAgICAgIDogbV9tYXNt
KG1hc20pCisgICAgICAgICwgbV9hbGxvd0lmVHJ1ZShhbGxvd0lmVHJ1ZSkKKyAgICAgICAgLCBt
X29sZFZhbHVlT2ZBbGxvd1NjcmF0Y2hSZWdpc3RlcihtYXNtLm1fYWxsb3dTY3JhdGNoUmVnaXN0
ZXIpCisgICAgeworICAgICAgICBpZiAobV9hbGxvd0lmVHJ1ZSkKKyAgICAgICAgICAgIG1hc20u
bV9hbGxvd1NjcmF0Y2hSZWdpc3RlciA9IHRydWU7CisgICAgfQorCisgICAgfkFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZUlmKCkKKyAgICB7CisgICAgICAgIGlmIChtX2FsbG93SWZUcnVl
KQorICAgICAgICAgICAgbV9tYXNtLm1fYWxsb3dTY3JhdGNoUmVnaXN0ZXIgPSBtX29sZFZhbHVl
T2ZBbGxvd1NjcmF0Y2hSZWdpc3RlcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3Nl
bWJsZXImIG1fbWFzbTsKKyAgICBib29sIG1fYWxsb3dJZlRydWU7CisgICAgYm9vbCBtX29sZFZh
bHVlT2ZBbGxvd1NjcmF0Y2hSZWdpc3RlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkZGZjOTI4Li44MTFhODA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC02
MzIsNiArNjMyLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTMzIob2Zm
c2V0LCBkc3QpOwogICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMU1B0cihSZWdpc3RlcklEIHNy
YywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgc3RvcmVUb1RMUzMyKHNyYywgb2Zm
c2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIERhdGFMYWJlbDMyIGxvYWRQdHJXaXRoQWRkcmVz
c09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtOTQ2LDYg
Kzk1MSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBsb2FkRnJvbVRMUzY0KG9mZnNldCwg
ZHN0KTsKICAgICB9CisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJlZ2lzdGVySUQgc3JjLCB1aW50
MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExTNjQoc3JjLCBvZmZzZXQpOwor
ICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zmc2V0
UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDdm
OGI2NWQuLjgyMzUxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zNjAwLDcgKzM2MDAsNyBAQCBwdWJsaWM6
CiAgICAgCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICAvLyBUaGlzIHdpbGwgdXNlIHNj
cmF0Y2ggcmVnaXN0ZXJzIGlmIHRoZSBvZmZzZXQgaXMgbm90IGxlZ2FsLgotICAgIAorCiAgICAg
dm9pZCBsb2FkRnJvbVRMUzMyKHVpbnQzMl90IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAoZHN0KTsKQEAgLTM2MTQsNiAr
MzYxNCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIGRzdCk7
CiAgICAgICAgIGxvYWQ2NChBZGRyZXNzKGRzdCwgb2Zmc2V0KSwgZHN0KTsKICAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVRvVExT
MzIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIFJlZ2lz
dGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwor
ICAgICAgICBBU1NFUlQoc3JjICE9IHRtcCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElE
UlJPX0VMMCh0bXApOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjcpLCB0bXApOworICAg
ICAgICBzdG9yZTMyKHNyYywgQWRkcmVzcyh0bXAsIG9mZnNldCkpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlVG9UTFM2NChSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0z
Mih+NyksIHRtcCk7CisgICAgICAgIHN0b3JlNjQoc3JjLCBBZGRyZXNzKHRtcCwgb2Zmc2V0KSk7
CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShGQVNUX1RMU19KSVQpCiAgICAgCiAgICAgLy8gTWlzYyBoZWxwZXIgZnVuY3Rpb25z
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDE1YjIyMGMuLmI4NmM3ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmgKQEAgLTM4NjQsNiArMzg2NCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmdzKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIob2Zmc2V0LCBkc3QpOwogICAgIH0K
KworCisgICAgc3RhdGljIGJvb2wgbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHN0
b3JlVG9UTFMzMihSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuZ3MoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bF9ybShzcmMsIG9m
ZnNldCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICNl
bmRpZgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhCcmVha3BvaW50KENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYmMzNGEwZC4uMjM0M2U5
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaApAQCAtMTcwNSw3ICsxNzA1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IGxvYWRGcm9tVExTNjQodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIob2Zm
c2V0LCBkc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKG9mZnNldCwgZHN0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHN0b3JlVG9UTFM2NChSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9ybShzcmMsIG9mZnNldCk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IGE0YzhlMzIuLjM0MzAy
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aApAQCAtMjM2MCw2ICsyMzYwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wQWRkcihPUF9NT1ZfR3ZFdiwgZHN0LCBhZGRyKTsKICAgICB9CiAKKyAgICB2b2lkIG1v
dmxfcm0oUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IGFkZHIpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9Fdkd2LCBzcmMsIGFkZHIpOworICAgIH0KKwog
I2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBtb3ZxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CkBAIC0yMzgxLDYgKzIzODYsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjRBZGRyKE9Q
X01PVl9Fdkd2LCBzcmMsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX21FQVgoY29u
c3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X01PVl9FQVhPdik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGM0Y2JlMTgu
LjVhNTViNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xNTIxMSw3ICsx
NTIxMSw3IEBAIHZvaWQgdGVzdFdhc21BZGRyZXNzKCkKICAgICAgICAgQ0hFQ0tfRVEobnVtVG9T
dG9yZSwgdmFsdWUpOwogfQogCi12b2lkIHRlc3RGYXN0VExTKCkKK3ZvaWQgdGVzdEZhc3RUTFNM
b2FkKCkKIHsKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIF9wdGhyZWFkX3NldHNwZWNp
ZmljX2RpcmVjdChXVEZfVEVTVElOR19LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigweGJlZWYpKSk7CkBAIC0xNTIyNiwxMyArMTUyMjYsMzcgQEAgdm9pZCB0
ZXN0RmFzdFRMUygpCiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBqaXQubG9hZEZyb21UTFNQdHIoZmFzdFRM
U09mZnNldEZvcktleShXVEZfVEVTVElOR19LRVkpLCBwYXJhbXNbMF0uZ3ByKCkpOwogICAgICAg
ICB9KTsKLSAgICAKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcGF0Y2hwb2ludCk7CiAgICAgCiAgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjx1
aW50cHRyX3Q+KHByb2MpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpOwogI2VuZGlm
CiB9CiAKK3ZvaWQgdGVzdEZhc3RUTFNTdG9yZSgpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBw
YXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDB4ZGVhZCksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0
LnN0b3JlVG9UTFNQdHIoc2NyYXRjaCwgZmFzdFRMU09mZnNldEZvcktleShXVEZfVEVTVElOR19L
RVkpKTsKKyAgICAgICAgfSk7CisKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSk7CisKKyAgICBjb21waWxlQW5kUnVuPHZvaWQ+KHByb2MpOwor
ICAgIENIRUNLX0VRKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KF9wdGhyZWFkX2dldHNwZWNpZmlj
X2RpcmVjdChXVEZfVEVTVElOR19LRVkpKSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGRlYWQp
KTsKKyNlbmRpZgorfQorCiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0
byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91YmxlIHplcm8oKQogewpA
QCAtMTY3NjAsNyArMTY3ODQsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIC0gNSkpOwogICAgIFJVTih0ZXN0V2FzbUFkZHJlc3MoKSk7CiAgICAgCi0gICAgUlVOKHRl
c3RGYXN0VExTKCkpOworICAgIFJVTih0ZXN0RmFzdFRMU0xvYWQoKSk7CisgICAgUlVOKHRlc3RG
YXN0VExTU3RvcmUoKSk7CiAKICAgICBpZiAoaXNYODYoKSkgewogICAgICAgICBSVU4odGVzdEJy
YW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwgSW50NjQsIDEsIEFpcjo6QnJhbmNoVGVzdDMy
LCBBaXI6OkFyZzo6VG1wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAppbmRleCA0OWM3ZjljLi42YjNhNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTdXBl
clNhbXBsZXIuaCIKICNpbmNsdWRlICJUeXBlb2ZUeXBlLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTYzNCw3ICsx
NjM1LDQ3IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgd2FuZ3NJbnQ2
NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYKLSAg
ICAKKworICAgIHZvaWQgbG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCisgICAgeworI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RUTFMoKSkgeworICAgICAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktl
eShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyNlbmRpZgorICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVy
ZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk3NzMKKyAgICAgICAgbG9hZFB0cigmbV92bS0+d2FzbUNvbnRleHQsIGRzdCk7CisgICAgfQor
CisgICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCisgICAgeworI2lmIEVOQUJM
RShGQVNUX1RMU19KSVQpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKSkKKyAgICAgICAgICAgIHN0b3JlVG9UTFNQdHIoc3JjLCBmYXN0VExTT2Zmc2V0Rm9yS2V5
KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisjZW5kaWYKKyAgICAgICAgLy8gRklYTUU6IFNhdmUg
dGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAgICAgIHN0b3JlUHRyKHNyYywgJm1fdm0tPndh
c21Db250ZXh0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBsb2FkV2FzbUNvbnRleHROZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2Vu
ZGlmCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN0b3Jl
V2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKKyAgICB7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRM
UygpKQorICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJl
Z2lzdGVyKCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgVk0qIG1fdm07CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDU2MDFiNjUuLjdkZGM2YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
U3R1YkluZm8uaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKKyNpbmNsdWRlICJXYXNt
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTU5Miw3
ICs1OTMsNyBAQCBzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKFZNJiB2bSkKIHsKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJBc3NlbWJseS5JbnN0YW5jZSBz
aGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHkuTW9kdWxlLCB3aGljaCBhcmUg
dGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICByZXR1cm4gdm0udG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlLT5tb2R1bGUoKTsKKyAgICByZXR1cm4gbG9hZFdhc21Db250ZXh0KHZt
KS0+bW9kdWxlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAppbmRleCA5YTY1NTA2Li4wODU3ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMi0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMi0yMDE0LCAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiwxMiArMzIsMTMgQEAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCisjaW5jbHVk
ZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
LmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgorI2luY2x1ZGUgIldhc21Db250
ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSW5s
aW5lQVNNLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0xMTU2LDcg
KzExNTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdm0tPnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbG9h
ZFdhc21Db250ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgpOwogCiAgICAgICAgICAgICBKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNy
ZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1
Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggYjNjMjBhNC4uZmJmZDcyNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDI2LDcgKzQyNiw4IEBA
IHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIFwKICAgICB2KGJvb2wsIHVz
ZVdlYkFzc2VtYmx5LCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYkFzc2VtYmx5IGdsb2Jh
bCBvYmplY3QuIikgXAogICAgIHYoYm9vbCwgc2ltdWxhdGVXZWJBc3NlbWJseUxvd01lbW9yeSwg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBNZW1vcnkgb2JqZWN0IHdvbid0IG1tYXAgdGhl
IGZ1bGwgJ21heGltdW0nIHJhbmdlIGFuZCBpbnN0ZWFkIHdpbGwgYWxsb2NhdGUgdGhlIG1pbmlt
dW0gcmVxdWlyZWQgYW1vdW50LiIpIFwKLSAgICB2KGJvb2wsIHVzZVdlYkFzc2VtYmx5RmFzdE1l
bW9yeSwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB0cnkgdG8gdXNlIGEgMzItYml0
IGFkZHJlc3Mgc3BhY2Ugd2l0aCBhIHNpZ25hbCBoYW5kbGVyIHRvIGJvdW5kcyBjaGVjayB3YXNt
IG1lbW9yeS4iKQorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5LCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgYSAzMi1iaXQgYWRkcmVzcyBzcGFj
ZSB3aXRoIGEgc2lnbmFsIGhhbmRsZXIgdG8gYm91bmRzIGNoZWNrIHdhc20gbWVtb3J5LiIpIFwK
KyAgICB2KGJvb2wsIHVzZVdlYkFzc2VtYmx5RmFzdFRMUywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgd2Ugd2lsbCB0cnkgdG8gdXNlIGZhc3QgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgaWYgYXZhaWxh
YmxlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiIpCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5j
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDY0ZGIyMC4uODUxMTU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTc3LDcgKzE3Nyw2IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGNsaWVudERh
dGEoMCkKICAgICAsIHRvcFZNRW50cnlGcmFtZShudWxscHRyKQogICAgICwgdG9wQ2FsbEZyYW1l
KENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKLSAgICAsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZShu
dWxscHRyKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0
ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxl
KQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdM
aXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMTQ0MDg2ZC4uOWQ4NmFhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTUsNyArMzE1LDggQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHZvaWQqLCBiZWNhdXNlIGl0IG1pZ2h0
IG5vdCBwb2ludCB0byBhIENhbGxGcmFtZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDQxCiAgICAgRXhlY1N0YXRlKiB0b3BDYWxsRnJhbWUgeyBu
dWxscHRyIH07Ci0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2U7CisgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cg
UElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCB7IG51bGxwdHIgfTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
c3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVybWlu
YXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDBhMmU1Y2MuLjY1NTdmNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb21waWxlLmgi
CkBAIC00OCw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29u
dmVudGlvbi5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2Vw
dGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCkBAIC0yMjYsOSArMjI4LDM2IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1f
bWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOwogICAgIFZhbHVlKiBt
X3plcm9WYWx1ZXNbbnVtVHlwZXNdOwotICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7CisgICAg
VmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CiAKK3N0YXRpYyBWYWx1
ZSogbG9hZFdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCit7
CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpKTsKKyAgICBpZiAoQ0Nh
bGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCisg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0
Y2goaml0LCBDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKSk7CisgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIo
KSk7CisgICAgICAgIH0pOworCisgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIElkZW50aXR5LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Cit9CisKK3N0YXRpYyB2b2lkIHN0
b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgVmFsdWUq
IGFyZykKK3sKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKKyAgICBpZiAo
Q0NhbGxIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
KQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJn
LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21D
b250ZXh0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgIH0pOworfQorCiBCM0lSR2VuZXJhdG9y
OjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFBy
b2NlZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlvbiogY29tcGlsYXRpb24sIFZl
Y3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpCiAg
ICAgOiBtX3ZtKHZtKQogICAgICwgbV9pbmZvKGluZm8pCkBAIC0yNzAsOCArMjk5LDcgQEAgQjNJ
UkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBQcm9jZWR1cmUmIHAKIAogICAgIHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVw
RnJhbWVJblByb2xvZ3VlKCZjb21waWxhdGlvbi0+d2FzbUNhbGxlZU1vdmVMb2NhdGlvbiwgbV9w
cm9jLCBPcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOwogCi0gICAgbV9pbnN0YW5jZVZhbHVlID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCAmbV92bS50b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpKTsKKyAgICBtX2luc3RhbmNlVmFsdWUgPSBsb2FkV2FzbUNvbnRleHQobV9wcm9jLCBt
X2N1cnJlbnRCbG9jayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBAIC0yODMs
OCArMzExLDggQEAgc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXpl
KFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUKIHsKICAgICBWYWx1ZSogbWVtb3J5
T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNl
dE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUodm0udG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBz
aXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tZW1v
cnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVs
aWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxv
YWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkpID09IHNpemVv
Zih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5
KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMg
c2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsKICAgICByZXN1bHQuYmFzZSA9
IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mTWVt
b3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlN
ZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTI5Miw5ICszMjAsOSBAQCBzdGF0aWMgTWVtb3J5
QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2Us
IFByb2NlZHVyZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKFZNJiB2bSwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mIG1l
bW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2Nr
KQorc3RhdGljIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3QgTWVtb3J5
SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJh
c2ljQmxvY2sqIGJsb2NrKQogewotICAgIGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIFN0b3JlLCBPcmlnaW4oKSwgaW5zdGFuY2UsIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZ2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKTsKKyAg
ICBzdG9yZVdhc21Db250ZXh0KHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CiAKICAgICBpZiAoISFt
ZW1vcnkpIHsKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0g
JlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CkBAIC0zOTUsNyArNDIzLDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KQogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBpbnN0YW5jZSA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKyAgICAg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7
CiAgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHdhc21NZW1vcnkgPSBpbnN0YW5jZS0+bWVt
b3J5KCk7CiAKICAgICAgICAgaWYgKGRlbHRhIDwgMCkKQEAgLTQxNCw3ICs0NDIsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVt
b3J5KSksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOwogCi0gICAgcmVzdG9yZVdl
YkFzc2VtYmx5R2xvYmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVl
LCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxT
dGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50Qmxv
Y2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTkwMSw3ICs5MjksNyBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJl
KiBzaWduYXR1cmUsCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZl
IGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2
ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxT
dGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGlu
dWF0aW9uKTsKKyAgICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1l
bW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIGNvbnRpbnVhdGlvbik7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgcmVzdWx0ID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKG1f
cHJvYywgbV9jdXJyZW50QmxvY2ssIE9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBl
KSwKICAgICAgICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CkBAIC05
OTUsNyArMTAyMyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0
IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBTaWduYXR1cmVJbmRleCBzCiAgICAgICAgIH0pOwogCiAg
ICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5z
dGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KLSAgICByZXN0
b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNl
VmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJl
bnRCbG9jayk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTAzNyw3ICsxMDY1LDcgQEAgdm9p
ZCBCM0lSR2VuZXJhdG9yOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiBjb250cm9s
U3RhY2ssIGNvbnN0IEV4cHJlc3MKICAgICBkYXRhTG9nTG4oKTsKIH0KIAotc3RhdGljIHZvaWQg
Y3JlYXRlSlNUb1dhc21XcmFwcGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxh
dGlvbkNvbnRleHQsIFdhc21JbnRlcm5hbEZ1bmN0aW9uJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0
dXJlKiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQorc3RhdGljIHZv
aWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25D
b250ZXh0LCBXYXNtSW50ZXJuYWxGdW5jdGlvbiYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSog
c2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbykKIHsKICAgICBDQ2FsbEhl
bHBlcnMmIGppdCA9ICpjb21waWxhdGlvbkNvbnRleHQuanNFbnRyeXBvaW50SklUOwogCkBAIC0x
MTY1LDcgKzExOTMsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZt
LCBDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dAogCiAgICAgaWYgKCEhaW5m
by5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VN
ZW1vcnlQb2ludGVyOwotICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wSlNXZWJBc3NlbWJseUlu
c3RhbmNlLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNlTWVt
b3J5KTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1v
cnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkp
OwogICAgICAgICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
czsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKQEAgLTEyMjcsNyArMTI1
NSw3IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50ZXJuYWxGdW5jdGlvbj4sIFN0
cmluZz4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwKICAgICAgICAgcmVzdWx0LT53YXNtRW50cnlw
b2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gcHJvY2VkdXJlLmNhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKICAgICB9CiAKLSAgICBjcmVhdGVKU1RvV2FzbVdyYXBwZXIodm0sIGNvbXBpbGF0aW9uQ29u
dGV4dCwgKnJlc3VsdCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAgICBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoY29tcGlsYXRpb25Db250ZXh0LCAqcmVzdWx0LCBzaWduYXR1cmUsIGluZm8pOwogICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CaW5kaW5nLmNwcAppbmRleCBjYmIzZjk5Li5mYjY3NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDE2ICszNiwxNyBAQAogI2luY2x1ZGUgIkxp
bmtCdWZmZXIuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNp
bmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCiB0eXBlZGVmIENDYWxsSGVscGVycyBKSVQ7CiAKLXN0YXRpYyB2b2lkIG1hdGVy
aWFsaXplSW1wb3J0SlNDZWxsKFZNKiB2bSwgSklUJiBqaXQsIHVuc2lnbmVkIGltcG9ydEluZGV4
LCBHUFJSZWcgcmVzdWx0KQorc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoSklU
JiBqaXQsIHVuc2lnbmVkIGltcG9ydEluZGV4LCBHUFJSZWcgcmVzdWx0KQogewotICAgIC8vIFdl
J3JlIGNhbGxpbmcgb3V0IG9mIHRoZSBjdXJyZW50IFdlYkFzc2VtYmx5Lkluc3RhbmNlLCB3aGlj
aCBpcyBpZGVudGlmaWVkIG9uIFZNLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qgb2YgYWxsIGl0
cyBpbXBvcnQgZnVuY3Rpb25zLgotICAgIGppdC5sb2FkUHRyKCZ2bS0+dG9wSlNXZWJBc3NlbWJs
eUluc3RhbmNlLCByZXN1bHQpOworICAgIC8vIFdlJ3JlIGNhbGxpbmcgb3V0IG9mIHRoZSBjdXJy
ZW50IFdlYkFzc2VtYmx5Lkluc3RhbmNlLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qgb2YgYWxs
IGl0cyBpbXBvcnQgZnVuY3Rpb25zLgorICAgIGppdC5sb2FkV2FzbUNvbnRleHQocmVzdWx0KTsK
ICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3MocmVzdWx0LCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mSW1wb3J0RnVuY3Rpb24oaW1wb3J0SW5kZXgpKSwgcmVzdWx0KTsKIH0KIApA
QCAtMTAxLDcgKzEwMiw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMo
Vk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKIAogICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSgqdm0pOwotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdm0tPnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2Fz
bUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50
eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2
NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBm
dW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgZXJyb3IpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1NCw3ICsyNTUsNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5r
SW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgR1BSUmVnIGltcG9ydEpTQ2VsbEdQUlJlZyA9IEdQ
UkluZm86OnJlZ1QwOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAgZm9yIHNsb3cgcGF0
aCBiZWxvdy4KICAgICBBU1NFUlQoIXdhc21DQy5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KGlt
cG9ydEpTQ2VsbEdQUlJlZykpOwogCi0gICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwodm0sIGpp
dCwgaW1wb3J0SW5kZXgsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CisgICAgbWF0ZXJpYWxpemVJbXBv
cnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKIAogICAgIGpp
dC5zdG9yZTY0KGltcG9ydEpTQ2VsbEdQUlJlZywgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxs
RnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7
CiAgICAgaml0LnN0b3JlMzIoSklUOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwg
Y2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKQEAgLTQy
NiwxMyArNDI3LDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvV2FzbShW
TSogdm0sIHVuc2lnbmVkIGltcG9ydEluZGV4KQogICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5m
bzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFI7CiAKICAgICAvLyBCMydzIGNhbGwgY29kZWdl
biBlbnN1cmVzIHRoYXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCi0gICAg
bWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwodm0sIGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOwor
ICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOwog
Ci0gICAgLy8gR2V0IHRoZSBjYWxsZWUncyBXZWJBc3NlbWJseS5JbnN0YW5jZSBhbmQgc2V0IGl0
IGFzIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS4gVGhlIGNhbGxlciB3aWxsIHRha2UgY2Fy
ZSBvZiByZXN0b3JpbmcgaXRzIG93biBJbnN0YW5jZS4KKyAgICAvLyBHZXQgdGhlIGNhbGxlZSdz
IFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQgaXQgYXMgV2FzbUNvbnRleHQuIFRoZSBjYWxs
ZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVzdG9yaW5nIGl0cyBvd24gSW5zdGFuY2UuCiAgICAgR1BS
UmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwogICAgIEFTU0VS
VChiYXNlTWVtb3J5ICE9IHNjcmF0Y2gpOwogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhz
Y3JhdGNoLCBXZWJBc3NlbWJseUZ1bmN0aW9uOjpvZmZzZXRPZkluc3RhbmNlKCkpLCBiYXNlTWVt
b3J5KTsgLy8gSW5zdGFuY2UqLgotICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCAmdm0tPnRv
cEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk7CisgICAgaml0LnN0b3JlV2FzbUNvbnRleHQoYmFzZU1l
bW9yeSk7CiAKICAgICAvLyBGSVhNRSB0aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFs
bCBXZWJBc3NlbWJseS5JbnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQg
dXAgdGhlIGNhbGxlZSdzIGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5
IHNpemUgcmVnaXN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ODRjZDQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgorCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDxtdXRleD4K
KyNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQoreworI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFk
X2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworI2VuZGlmCisgICAg
Ly8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAgcmV0dXJuIHZtLndh
c21Db250ZXh0OworfQorCit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAg
aWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICBfcHRocmVhZF9z
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oaW5zdGFuY2UpKTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxz
ZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTc3MworICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMWM1ZThhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Db250ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNl
OworY2xhc3MgVk07CisKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZN
Jik7Cit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwCmluZGV4IDUwMmJiMTIuLmQxYTgwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21G
b3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRy
YWNpbmcuaD4KQEAgLTEyMCwxMSArMTIxLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBw
cm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwg
YXJnQ291bnQsIHJlbWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRo
aXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVk
IGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0g
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gdm0u
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOworICAgIHN0
b3JlV2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAgQVNTRVJU
KHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5z
dGFuY2UoKSA9PSBsb2FkV2FzbUNvbnRleHQodm0pKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByYXdS
ZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+anNFbnRyeXBvaW50KCksICZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKLSAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBwcmV2
SlNXZWJBc3NlbWJseUluc3RhbmNlOworICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHByZXZKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VD
b25zdHJ1Y3Rvci5oCmluZGV4IDFiMjE0Y2UuLjAxNWZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CiBjbGFzcyBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5YTljNjkuLjdmYzgyODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMTcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5zdGVhZCBv
ZiBvbiBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmFzdFRMUy5oOiByZXNlcnZlIG9uZSBrZXkgZm9yIFdlYkFzc2VtYmx5LCBkZWxldGUg
YSBidW5jaAorICAgICAgICBvZiBkZWFkIGNvZGUgd2hpY2ggY2xhbmcgY291bGRuJ3QgY29tcGls
ZSAoaXQncyB2YWxpZCBHQ0MgYXNzZW1ibHkKKyAgICAgICAgd2hpY2ggTExWTSBkaXNsaWtlcyku
CisKIDIwMTctMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaW1lIGNoYW5uZWwgYXR0YWNrIG9uIFNWRyBGaWx0ZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgK
aW5kZXggNjNmODgzOS4uYjQ0MzI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdFRM
Uy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUgPFN5c3RlbS9wdGhyZWFkX21hY2hkZXAuaD4K
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQ0LDUy
ICs0NSwyMCBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIGFjY2lkZW50YWxseSB1c2UgdGhlIHNhbWUg
a2V5IGZvciBtb3JlIHRoYW4gb25lIHRoaW5nLgogCiAjZGVmaW5lIFdURl9USFJFQURfREFUQV9L
RVkgV1RGX0ZBU1RfVExTX0tFWTAKKyNkZWZpbmUgV1RGX1dBU01fQ09OVEVYVF9LRVkgV1RGX0ZB
U1RfVExTX0tFWTEKICNkZWZpbmUgV1RGX1RFU1RJTkdfS0VZIFdURl9GQVNUX1RMU19LRVkzCiAK
ICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotLy8gQmVsb3cgaXMgdGhlIGNvZGUgdGhhdCB0aGUg
SklUIHdpbGwgZW1pdC4KLQotI2lmIENQVShYODZfNjQpCi1pbmxpbmUgdWludHB0cl90IGxvYWRG
YXN0VExTKHVuc2lnbmVkIG9mZnNldCkKLXsKLSAgICB1aW50cHRyX3QgcmVzdWx0OwotICAgIGFz
bSB2b2xhdGlsZSgKLSAgICAgICAgIm1vdnEgJSVnczolMSwgJTAiCi0gICAgICAgIDogIj1yIihy
ZXN1bHQpCi0gICAgICAgIDogInIiKG9mZnNldCkKLSAgICAgICAgOiAibWVtb3J5Iik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLSNlbGlmIENQVShBUk02NCkKLWlubGluZSB1aW50cHRyX3QgbG9h
ZEZhc3RUTFModW5zaWduZWQgcGFzc2VkT2Zmc2V0KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7
Ci0gICAgdWludHB0cl90IG9mZnNldCA9IHBhc3NlZE9mZnNldDsKLSAgICBhc20gdm9sYXRpbGUo
Ci0gICAgICAgICJtcnMgJTAsIFRQSURSUk9fRUwwXG5cdCIKLSAgICAgICAgImFuZCAlMCwgJTAs
ICMweGZmZmZmZmZmZmZmZmZmZjhcblx0IgotICAgICAgICAibGRyICUwLCBbJTAsICUxXSIKLSAg
ICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAgOiAiciIob2Zmc2V0KQotICAgICAgICA6ICJt
ZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2Vsc2UKLSNlcnJvciAiQmFkIGFyY2hp
dGVjdHVyZSIKLSNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShGQVNUX1RMU19KSVQpCi0KIGlubGlu
ZSB1bnNpZ25lZCBmYXN0VExTT2Zmc2V0Rm9yS2V5KHVuc2lnbmVkIGxvbmcgc2xvdCkKIHsKICAg
ICByZXR1cm4gc2xvdCAqIHNpemVvZih2b2lkKik7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKLXVzaW5nIFdURjo6ZmFzdFRMU09mZnNldEZvcktleTsKLQogI2lmIEVOQUJMRShG
QVNUX1RMU19KSVQpCi11c2luZyBXVEY6OmxvYWRGYXN0VExTOwordXNpbmcgV1RGOjpmYXN0VExT
T2Zmc2V0Rm9yS2V5OwogI2VuZGlmCiAKICNlbmRpZiAvLyBIQVZFKEZBU1RfVExTKQotLSAKMi4x
MC4xCgo=
</data>
<flag name="commit-queue"
          id="326702"
          type_id="3"
          status="-"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305293</attachid>
            <date>2017-03-24 10:31:30 -0700</date>
            <delta_ts>2017-03-24 10:38:14 -0700</delta_ts>
            <desc>experiment</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>56825</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAyODQ4ZWQ2MDhmNWMyNmYyNjM1ZmM0MjQwMGY3Y2ViZjBlNzE1MmRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgOSAr
KysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwg
MzAgKysrKysrKy0KIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAg
ICAgICAgIHwgMTcgKysrKysKIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAg
ICAgICAgICAgICAgIHwgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggICAgIHwgMTAgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCAgICAgICAgICAgICAgICB8IDMxICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oICAgICAgICB8IDQzICsrKysrKysrKystCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwICAgICAgICAgICAgICB8ICA1ICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgICAgICB8ICA5ICsrLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oICAgICAgICAgICAgfCAgMyArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwICAgICAgICAgICAgICAgfCAgMSAt
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAgICAgICB8ICAz
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgICB8
IDU4ICsrKysrKysrKystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAgICAgICAgICB8IDE5ICsrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29udGV4dC5jcHAgICAgICAgICB8IDU5ICsrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCAgICAgICAgICAgfCA0MCArKysrKysrKysrCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8IDEwICsrLQog
Li4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggICAgICAgfCAgMyAr
LQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx
MSArKysKIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMzkgKy0tLS0tLS0tLQogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgMiArCiAyNiBmaWxlcyBjaGFuZ2VkLCA0OTMgaW5zZXJ0aW9ucygrKSwg
ODIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MjI2NGFjLi44MjY3ZDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzIsNiArOTMyLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAog
ICAgIHdhc20vV2FzbUJpbmRpbmcuY3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwCisgICAgd2FzbS9XYXNtQ29udGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCiAgICAgd2FzbS9XYXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFlMTM5ZDMuLjlhNTUxMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE3LTAzLTE3ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3Rh
dGUgaW4gVExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzaW5nIHRocmVhZC1sb2NhbCBzdG9yYWdlIGluc3RlYWQgb2Yg
Vk0gbWFrZXMgY29kZSBtb3JlIHBvc2l0aW9uCisgICAgICAgIGluZGVwZW5kZW50LiBXZSB1c2Vk
IHRvIHN0b3JlIHRoZSBXZWJBc3NlbWJseSB0b3AgSW5zdGFuY2UgKHRoZQorICAgICAgICBsYXRl
c3Qgb25lIGluIHRoZSBjYWxsIHN0YWNrKSBvbiBWTSwgbm93IHdlIGluc3RlYWQgc3RvcmUgaXQg
aW4KKyAgICAgICAgVExTLiBUaGlzIHRvcCBJbnN0YW5jZSBpcyB1c2VkIHRvIGFjY2VzcyBhIGJ1
bmNoIG9mIHN0YXRlIHN1Y2ggYXMKKyAgICAgICAgTWVtb3J5IGxvY2F0aW9uLCBzaXplLCB0YWJs
ZSAoZm9yIGNhbGxfaW5kaXJlY3QpLCBldGMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsaW5n
IGl0ICJ0b3AiLCB3aGljaCBpcyBjb25mdXNpbmcsIHdlIG5vdyBqdXN0IGNhbGwKKyAgICAgICAg
aXQgV2FzbUNvbnRleHQuCisKKyAgICAgICAgTWFraW5nIHRoZSBjb2RlIFBJQyBtZWFucyBmdXR1
cmUgcGF0Y2hlcyB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgcG9zdE1lc3NhZ2UgYW5kIHN0cnVj
dHVyZWQgY2xvbmUgaW50byBJREIgd2l0aG91dCBoYXZpbmcgdG8KKyAgICAgICAgcmVjb21waWxl
IHRoZSBjb2RlLiBUaGlzIHdhc24ndCBwb3NzaWJsZSBiZWZvcmUgYmVjYXVzZSB3ZQorICAgICAg
ICBoYXJkLWNvZGVkIHRoZSBhZGRyZXNzIG9mIFZNIGF0IGNvbXBpbGF0aW9uIHRpbWUuIFRoYXQg
ZG9lc24ndAorICAgICAgICB3b3JrIGJldHdlZW4gd29ya2VycywgYW5kIGRvZXNuJ3Qgd29yayBh
Y3Jvc3MgcmVsb2FkcyAod2hpY2ggSURCCisgICAgICAgIGlzIGludGVuZGVkIHRvIGRvKS4KKwor
ICAgICAgICBJdCdsbCBhbHNvIHBvdGVudGlhbGx5IG1ha2UgY29kZSBmYXN0ZXIgb25jZSB3ZSBz
dGFydCB0dW5pbmcKKyAgICAgICAgd2hhdCdzIGluIFRMUywgd2hhdCdzIGluIHdoaWNoIG9mIHRo
ZSA0IGZyZWUgc2xvdHMsIGFuZCB3aGF0J3MgaW4KKyAgICAgICAgcGlubmVkIHJlZ2lzdGVycy4g
SSdtIGxlYXZpbmcgdGhpcyB0dW5pbmcgZm9yIGxhdGVyIGJlY2F1c2UKKyAgICAgICAgdGhlcmUn
cyBsb3dlciBseWluZyBmcnVpdCBmb3IgdXMgdG8gcGljay4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDogQ29waWVk
IGZyb20gYXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oLgorICAgICAg
ICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZjo6QWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlSWYpOgorICAgICAgICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2VJZjo6fkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlVG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRo
ZSBjb2RlIHJlcXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZyb21UTFNQdHJOZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OnN0b3JlVG9UTFMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzItYml0IGluc3RlYWQgb2Yg
NjQtYml0CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVRvVExTNjQp
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX3Jt
KToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZhc3RU
TFNMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3RvcmUpOgorICAgICAgICAo
SlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
Ojp3ZWJBc3NlbWJseU93bmVyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoK
KyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206
OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpC
M0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6
Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6
CisgICAgICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToK
KyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Omxv
YWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAqIHdhc20vV2FzbUNvbnRleHQuaDogQWRkZWQuIFJlcGxhY2VzICJ0b3AiIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZS4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGBjb25zdCBsb2NhdGlvbiA9ICJm
b28iYCB0aHJvd3MgaW4gYSB3b3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ODVlMThkNS4uNjAwMzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw3
ICszNDksNyBAQAogCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4
QTFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgKi87IH07CiAJCTBGMzczMDhE
MUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QjFDMEJEMjkxMDAwNTJCRkEgLyogQjNQ
aGlDaGlsZHJlbi5oICovOyB9OwogCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4RTFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07Ci0JCTBGMzczMDkxMUMwQ0Q3MEMwMDA1
MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLzsgfTsKKwkJMEYzNzMwOTExQzBD
RDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOTAxQzBDRDcwQzAw
MDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMzczMDkzMUMwRDY3RUUwMDA1
MkJGQSAvKiBBaXJVc2VDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMzczMDkyMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAq
LzsgfTsKIAkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAwRjE3
Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCAqLzsgfTsKIAkJMEYzOEIwMTIx
N0NGMDc4MzAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTAxN0NGMDc3RjAwQjE0NEQzIC8qIExM
SW50RW50cnlwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xNjM4LDYgKzE2MzgsNyBAQAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEg
LyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IH07CiAJCTk3ODgwMTQw
MTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0Rh
dGVNYXRoLmNwcCAqLzsgfTsKIAkJOTc4ODAxNDExNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1h
dGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhG
QzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8q
IE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTBEQTY3RjFD
OEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIg
LyogSlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNw
cCAqLzsgfTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4
QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA4MSw2ICsyMDgyLDggQEAKIAkJQUQyRkND
MzAxREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHkuY3BwICovOyB9OwogCQlBRDJGQ0MzMTFEQjgzRDQ5MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgfTsK
IAkJQUQyRkNDMzMxREM0MDQ1NDAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMzIxREM0MDQ1MzAwQjNF
NzM2IC8qIFdhc21Gb3JtYXQuY3BwICovOyB9OworCQlBRDQxMkIzMzFFN0IyRTk5MDA4QUYxNTcg
LyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLzsg
fTsKKwkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIzMjFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmln
aW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1
MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1
MzFFNUQwRjQ3MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8q
IEZ1bGxDb2RlT3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8q
IEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAgKi87IH07CkBAIC0yNDQxLDcgKzI0NDQsNiBAQAogCQlGRUU0M0ZDRTFFNjY0
MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9y
bVRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFF
NjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJCUZFRkQ2RkM2
MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBK
U1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUgLyogTWFjaGluZUNvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI4ODA2RTIxMTU1
RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTM3MzIsNiAr
MzczNCw3IEBACiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2Rl
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY4NEQ0MzcxQzAwMTYxQzAwODFENjYz
IC8qIEFpckxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxp
dmVuZXNzLmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjY5RDYzNkQxQkZCRTVEMDAwMTAxQjFEIC8qIEZUTE91dHB1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRwdXQuaDsgcGF0aCA9IGZ0bC9GVExP
dXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4MDZFMjExNTVFNDc4QTkz
RkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBMDVB
QkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEwNUFCRDQxOTYxREYyNDAwMzQx
NzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJT
ZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0OCw2ICs0NjUxLDkg
QEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1i
bHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNF
NzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMx
MUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBRDQxMkIzNTFFN0I1N0MwMDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9y
aWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9y
aWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDkzN0MxMUREQkU2MEEw
MDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MDM5LDcgKzUwNDUsNiBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBC
RDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQw
NTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0
cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVG
RDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGgg
PSBNYWNoaW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC02MjQ5LDYgKzYyNTQsOCBAQAogCQkJCUFENEIxREY4MURGMjQ0
RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMy
ODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKKwkJCQlBRDQxMkIzMTFF
N0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAorCQkJCUFENDEyQjMyMUU3QjJF
OEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1
MjZBQSAvKiBXYXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIz
RTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTgg
LyogV2FzbUZvcm1hdC5oICovLApAQCAtNzM5MSw2ICs3Mzk4LDcgQEAKIAkJCQkwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYw
MTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJ
CQkwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlLmggKi8sCisJCQkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZUlmLmggKi8sCiAJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8q
IEFSTTY0QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFz
c2VtYmxlci5oICovLApAQCAtODU2Miw2ICs4NTcwLDcgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2
NDRBODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4
aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5
Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDY5Myw2ICsxMDcwMiw3IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3
IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0
dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaAppbmRleCA4N2FlNjk4Li5jOThhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAt
MTEwOCw2ICsxMTA4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CisgICAgZnJpZW5kIGNsYXNzIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmOwogICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiAgICAgdW5zaWduZWQgbV90ZW1wUmVnaXN0ZXJzVmFsaWRC
aXRzOwogICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB7IHRydWUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iNzhkOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZUlmIHsKK3B1YmxpYzoKKyAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJ
ZihNYWNyb0Fzc2VtYmxlciYgbWFzbSwgYm9vbCBhbGxvd0lmVHJ1ZSkKKyAgICAgICAgOiBtX21h
c20obWFzbSkKKyAgICAgICAgLCBtX2FsbG93SWZUcnVlKGFsbG93SWZUcnVlKQorICAgICAgICAs
IG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyKG1hc20ubV9hbGxvd1NjcmF0Y2hSZWdp
c3RlcikKKyAgICB7CisgICAgICAgIGlmIChtX2FsbG93SWZUcnVlKQorICAgICAgICAgICAgbWFz
bS5tX2FsbG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1ZTsKKyAgICB9CisKKyAgICB+QWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYWxsb3dJZlRy
dWUpCisgICAgICAgICAgICBtX21hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlciA9IG1fb2xkVmFs
dWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYWNyb0Fz
c2VtYmxlciYgbV9tYXNtOworICAgIGJvb2wgbV9hbGxvd0lmVHJ1ZTsKKyAgICBib29sIG1fb2xk
VmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGRkZmM5MjguLjgxMWE4MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAg
LTYzMiw2ICs2MzIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbG9hZEZyb21UTFMzMihv
ZmZzZXQsIGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJlZ2lzdGVySUQg
c3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExTMzIoc3JjLCBv
ZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRy
ZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NDYs
NiArOTUxLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTNjQob2Zmc2V0
LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJRCBzcmMsIHVp
bnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMsIG9mZnNldCk7
CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXgg
N2Y4YjY1ZC4uODIzNTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHB1Ymxp
YzoKICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ug
c2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCi0gICAgCisKICAg
ICB2b2lkIGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOwpAQCAtMzYxNCw2
ICszNjE0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgZHN0
KTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOwogICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVG9U
TFMzMihSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgUmVn
aXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7
CisgICAgICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQ
SURSUk9fRUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIHRtcCk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjLCBBZGRyZXNzKHRtcCwgb2Zmc2V0KSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOworICAgICAgICBt
X2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZElt
bTMyKH43KSwgdG1wKTsKKyAgICAgICAgc3RvcmU2NChzcmMsIEFkZHJlc3ModG1wLCBvZmZzZXQp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0
Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlv
bnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMTViMjIwYy4uYjg2YzdkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaApAQCAtMzg2NCw2ICszODY0LDIzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIuZ3MoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CiAgICAg
fQorCisKKyAgICBzdGF0aWMgYm9vbCBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQg
c3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
I2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0
aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiYzM0YTBkLi4yMzQz
ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xNzA1LDcgKzE3MDUsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihv
ZmZzZXQsIGRzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIob2Zmc2V0LCBkc3QpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX3JtKHNyYywgb2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTRjOGUzMi4uMzQz
MDIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0yMzYwLDYgKzIzNjAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOwogICAgIH0KIAorICAgIHZvaWQg
bW92bF9ybShSZWdpc3RlcklEIHNyYywgdWludDMyX3QgYWRkcikKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CisgICAgfQor
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKQEAgLTIzODEsNiArMjM4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NEFkZHIo
T1BfTU9WX0V2R3YsIHNyYywgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfbUVBWChj
b25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfTU9WX0VBWE92KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggYzRjYmUx
OC4uNWE1NWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTE1MjExLDcg
KzE1MjExLDcgQEAgdm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQogICAgICAgICBDSEVDS19FUShudW1U
b1N0b3JlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgdGVzdEZhc3RUTFMoKQordm9pZCB0ZXN0RmFzdFRM
U0xvYWQoKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCiAgICAgX3B0aHJlYWRfc2V0c3Bl
Y2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKQEAgLTE1MjI2LDEzICsxNTIyNiwzNyBAQCB2b2lk
IHRlc3RGYXN0VExTKCkKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0
VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7CiAgICAg
ICAgIH0pOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBwYXRjaHBvaW50KTsKICAgICAKICAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PHVpbnRwdHJfdD4ocHJvYyksIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSk7CiAjZW5k
aWYKIH0KIAordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkZWFkKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBq
aXQuc3RvcmVUb1RMU1B0cihzY3JhdGNoLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5H
X0tFWSkpOworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7
CisgICAgQ0hFQ0tfRVEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSkpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVh
ZCkpOworI2VuZGlmCit9CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5
IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7
CkBAIC0xNjc2MCw3ICsxNjc4NCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAg
ICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRkcmVzcygpKTsKICAgICAKLSAgICBSVU4o
dGVzdEZhc3RUTFMoKSk7CisgICAgUlVOKHRlc3RGYXN0VExTTG9hZCgpKTsKKyAgICBSVU4odGVz
dEZhc3RUTFNTdG9yZSgpKTsKIAogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAgIFJVTih0ZXN0
QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0
MzIsIEFpcjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDQ5YzdmOWMuLjZiM2E2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlN1
cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlR5cGVvZlR5cGUuaCIKICNpbmNsdWRlICJWTS5oIgor
I2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjM0LDcg
KzE2MzUsNDcgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3YW5nc0lu
dDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNlbmRpZgot
ICAgIAorCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKKyAgICB7CisjaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKSB7CisgICAgICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9y
S2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdo
ZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2OTc3MworICAgICAgICBsb2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4dCwgZHN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKKyAgICB7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFz
dFRMUygpKQorICAgICAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbmRpZgorICAgICAgICAvLyBGSVhNRTogU2F2
ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+
d2FzbUNvbnRleHQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAg
ICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Rv
cmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
VExTKCkpCisgICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKIHByb3Rl
Y3RlZDoKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNTYwMWI2NS4uN2RkYzZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVTdHViSW5mby5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgIldh
c21Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTky
LDcgKzU5Myw3IEBAIHN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQogewog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNl
IHNoYXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFy
ZSB0aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiB2bS50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2UtPm1vZHVsZSgpOworICAgIHJldHVybiBsb2FkV2FzbUNvbnRleHQo
dm0pLT5tb2R1bGUoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCmluZGV4IDlhNjU1MDYuLjA4NTdlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDEyICszMiwxMyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5j
bHVkZSAiTWF0aENvbW1vbi5oIgotI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKKyNpbmNs
dWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCisjaW5jbHVkZSAiV2FzbUNv
bnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9J
bmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTExNTYs
NyArMTE1Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNt
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBs
b2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6
Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0
cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCBiM2MyMGE0Li5mYmZkNzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjYsNyArNDI2LDgg
QEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgXAogICAgIHYoYm9vbCwg
dXNlV2ViQXNzZW1ibHksIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2ViQXNzZW1ibHkgZ2xv
YmFsIG9iamVjdC4iKSBcCiAgICAgdihib29sLCBzaW11bGF0ZVdlYkFzc2VtYmx5TG93TWVtb3J5
LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIE1lbW9yeSBvYmplY3Qgd29uJ3QgbW1hcCB0
aGUgZnVsbCAnbWF4aW11bScgcmFuZ2UgYW5kIGluc3RlYWQgd2lsbCBhbGxvY2F0ZSB0aGUgbWlu
aW11bSByZXF1aXJlZCBhbW91bnQuIikgXAotICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgYSAzMi1i
aXQgYWRkcmVzcyBzcGFjZSB3aXRoIGEgc2lnbmFsIGhhbmRsZXIgdG8gYm91bmRzIGNoZWNrIHdh
c20gbWVtb3J5LiIpCisgICAgdihib29sLCB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnksIHRydWUs
IE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdHJ5IHRvIHVzZSBhIDMyLWJpdCBhZGRyZXNzIHNw
YWNlIHdpdGggYSBzaWduYWwgaGFuZGxlciB0byBib3VuZHMgY2hlY2sgd2FzbSBtZW1vcnkuIikg
XAorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHlGYXN0VExTLCB0cnVlLCBOb3JtYWwsICJJZiB0
cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgZmFzdCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpZiBhdmFp
bGFibGUgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uIikKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxl
bmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwNjRkYjIwLi44NTEx
NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNzcsNyArMTc3LDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgY2xpZW50
RGF0YSgwKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJh
bWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQotICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
KG51bGxwdHIpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFi
bGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFy
Z0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAxNDQwODZkLi45ZDg2YWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNSw3ICszMTUsOCBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQgbWln
aHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZSB7
IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTsKKyAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAg
ICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0IHsgbnVsbHB0ciB9OwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZXJt
aW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGEyZTVjYy4uNjU1N2Y2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lu
bGluZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBpbGUu
aCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdD
b252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhj
ZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5oIgogI2luY2x1ZGUg
Ildhc21NZW1vcnkuaCIKQEAgLTIyNiw5ICsyMjgsMzYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcg
bV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CiAgICAgVmFsdWUq
IG1femVyb1ZhbHVlc1tudW1UeXBlc107Ci0gICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsKKyAg
ICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0aGlzIGxhenkgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5MgogfTsKIAorc3RhdGljIFZh
bHVlKiBsb2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
K3sKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOworICAgIGlmIChD
Q2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkK
KyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2Ny
YXRjaChqaXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdw
cigpKTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKK30KKworc3RhdGljIHZvaWQg
c3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBWYWx1
ZSogYXJnKQoreworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOworICAgIGlm
IChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkpCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShh
cmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgaml0LnN0b3JlV2Fz
bUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7Cit9CisKIEIzSVJHZW5lcmF0
b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywg
UHJvY2VkdXJlJiBwcm9jZWR1cmUsIFdhc21JbnRlcm5hbEZ1bmN0aW9uKiBjb21waWxhdGlvbiwg
VmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscykK
ICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2luZm8oaW5mbykKQEAgLTI3MCw4ICsyOTksNyBAQCBC
M0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0
dXBGcmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0aW9uLCBt
X3Byb2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNlVmFsdWUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksICZtX3ZtLnRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSkpOworICAgIG1faW5zdGFuY2VWYWx1ZSA9IGxvYWRXYXNtQ29udGV4dChtX3Byb2Ms
IG1fY3VycmVudEJsb2NrKTsKIH0KIAogc3RydWN0IE1lbW9yeUJhc2VBbmRTaXplIHsKQEAgLTI4
Myw4ICszMTEsOCBAQCBzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNp
emUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZQogewogICAgIFZhbHVlKiBtZW1v
cnlPYmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zm
c2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZSh2bS50
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkpID09
IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZSh2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPm1l
bW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiBy
ZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
bG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6
ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1v
cnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0OwogICAgIHJlc3VsdC5iYXNl
ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUo
KSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZN
ZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJs
eU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtMjkyLDkgKzMyMCw5IEBAIHN0YXRpYyBNZW1v
cnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5j
ZSwgUHJvY2VkdXJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgcmVzdG9y
ZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoVk0mIHZtLCBjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYg
bWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxv
Y2spCitzdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShjb25zdCBNZW1v
cnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywg
QmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCBpbnN0YW5jZSwgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkpOwor
ICAgIHN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlmICgh
IW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3Mg
PSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5NSw3ICs0MjMsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOworICAg
ICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZt
KTsKICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5t
ZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQpAQCAtNDE0LDcgKzQ0Miw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dN
ZW1vcnkpKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBkZWx0YSk7CiAKLSAgICByZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFs
dWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2Jh
bFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRC
bG9jayk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtOTAxLDcgKzkyOSw3IEBAIGF1dG8gQjNJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1
cmUqIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhh
dmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBo
YXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2Jh
bFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBjb250
aW51YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8u
bWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9uKTsKICAgICB9IGVs
c2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwo
bV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5
cGUpLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKQEAg
LTk5NSw3ICsxMDIzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29u
c3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFNpZ25hdHVyZUluZGV4IHMKICAgICAgICAgfSk7CiAK
ICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBp
bnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFu
Y2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgcmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3Vy
cmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMDM3LDcgKzEwNjUsNyBAQCB2
b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRy
b2xTdGFjaywgY29uc3QgRXhwcmVzcwogICAgIGRhdGFMb2dMbigpOwogfQogCi1zdGF0aWMgdm9p
ZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZtLCBDb21waWxhdGlvbkNvbnRleHQmIGNvbXBp
bGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25zdCBTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCitzdGF0aWMg
dm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIFdhc21JbnRlcm5hbEZ1bmN0aW9uJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJl
KiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogewogICAgIENDYWxs
SGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5qc0VudHJ5cG9pbnRKSVQ7CiAKQEAg
LTExNjUsNyArMTE5Myw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYg
dm0sIENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0CiAKICAgICBpZiAoISFp
bmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFz
ZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2UsIGJhc2VNZW1vcnkpOworICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VN
ZW1vcnkpOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1l
bW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9y
eSk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVnaXN0
ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwpAQCAtMTIyNyw3ICsx
MjU1LDcgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiwg
U3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLAogICAgICAgICByZXN1bHQtPndhc21FbnRy
eXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMgPSBwcm9jZWR1cmUuY2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOwogICAgIH0KIAotICAgIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcih2bSwgY29tcGlsYXRpb25D
b250ZXh0LCAqcmVzdWx0LCBzaWduYXR1cmUsIGluZm8pOworICAgIGNyZWF0ZUpTVG9XYXNtV3Jh
cHBlcihjb21waWxhdGlvbkNvbnRleHQsICpyZXN1bHQsIHNpZ25hdHVyZSwgaW5mbyk7CiAgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwCmluZGV4IGNiYjNmOTkuLmZiNjc2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTYgKzM2LDE3IEBACiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgog
I2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKIHR5cGVkZWYgQ0NhbGxIZWxwZXJzIEpJVDsKIAotc3RhdGljIHZvaWQgbWF0
ZXJpYWxpemVJbXBvcnRKU0NlbGwoVk0qIHZtLCBKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5k
ZXgsIEdQUlJlZyByZXN1bHQpCitzdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChK
SVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAgLy8g
V2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UsIHdo
aWNoIGlzIGlkZW50aWZpZWQgb24gVk0uIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBhbGwg
aXRzIGltcG9ydCBmdW5jdGlvbnMuCi0gICAgaml0LmxvYWRQdHIoJnZtLT50b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UsIHJlc3VsdCk7CisgICAgLy8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1
cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UuIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBh
bGwgaXRzIGltcG9ydCBmdW5jdGlvbnMuCisgICAgaml0LmxvYWRXYXNtQ29udGV4dChyZXN1bHQp
OwogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhyZXN1bHQsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihpbXBvcnRJbmRleCkpLCByZXN1bHQpOwogfQog
CkBAIC0xMDEsNyArMTAyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9K
cyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRX
YXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0
byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3Qt
PnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgi
aTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVk
IGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0LDcgKzI1NSw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExp
bmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0g
R1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBw
YXRoIGJlbG93LgogICAgIEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQo
aW1wb3J0SlNDZWxsR1BSUmVnKSk7CiAKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwg
aml0LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAgICBtYXRlcmlhbGl6ZUlt
cG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAgICAg
aml0LnN0b3JlNjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
KTsKICAgICBqaXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMp
LCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwpAQCAt
NDI2LDEzICs0MjcsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9XYXNt
KFZNKiB2bSwgdW5zaWduZWQgaW1wb3J0SW5kZXgpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjsKIAogICAgIC8vIEIzJ3MgY2FsbCBjb2Rl
Z2VuIGVuc3VyZXMgdGhhdCB0aGUgSlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4KLSAg
ICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7
CisgICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7
CiAKLSAgICAvLyBHZXQgdGhlIGNhbGxlZSdzIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQg
aXQgYXMgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBj
YXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgorICAgIC8vIEdldCB0aGUgY2FsbGVl
J3MgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYW5kIHNldCBpdCBhcyBXYXNtQ29udGV4dC4gVGhlIGNh
bGxlciB3aWxsIHRha2UgY2FyZSBvZiByZXN0b3JpbmcgaXRzIG93biBJbnN0YW5jZS4KICAgICBH
UFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNT
RVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7CiAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNz
KHNjcmF0Y2gsIFdlYkFzc2VtYmx5RnVuY3Rpb246Om9mZnNldE9mSW5zdGFuY2UoKSksIGJhc2VN
ZW1vcnkpOyAvLyBJbnN0YW5jZSouCi0gICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksICZ2bS0+
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKTsKKyAgICBqaXQuc3RvcmVXYXNtQ29udGV4dChiYXNl
TWVtb3J5KTsKIAogICAgIC8vIEZJWE1FIHRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHRoYXQg
YWxsIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGhhdmUgdGhlIHNhbWUgcGlubmVkIHJlZ2lzdGVycy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgIC8vIFNl
dCB1cCB0aGUgY2FsbGVlJ3MgYmFzZU1lbW9yeSByZWdpc3RlciBhcyB3ZWxsIGFzIHRoZSBtZW1v
cnkgc2l6ZSByZWdpc3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ4NGNkNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCisKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPG11dGV4
PgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCit7CisjaWYgRU5BQkxFKEZB
U1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJl
YWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisjZW5kaWYKKyAg
ICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICByZXR1cm4gdm0u
d2FzbUNvbnRleHQ7Cit9CisKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIF9wdGhyZWFk
X3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZv
aWQqPihpbnN0YW5jZSkpOworI2VuZGlmCisgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBl
bHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NzczCisgICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYzVlOGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U7CitjbGFzcyBWTTsKKworSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQo
Vk0mKTsKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSop
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKaW5kZXggNTAyYmIxMi4uZDFhODAxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2Fz
bUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVt
VHJhY2luZy5oPgpAQCAtMTIwLDExICsxMjEsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50
LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGgg
dGhpcyBlbnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0
ZWQgYnkgQjMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYK
LSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSB2
bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci0gICAgdm0udG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlID0gd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7CisgICAg
c3RvcmVXYXNtQ29udGV4dCh2bSwgd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NF
UlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKKyAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpID09IGxvYWRXYXNtQ29udGV4dCh2bSkpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJh
d1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHBy
ZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgc3RvcmVXYXNtQ29udGV4dCh2bSwgcHJldkpT
V2ViQXNzZW1ibHlJbnN0YW5jZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yLmgKaW5kZXggMWIyMTRjZS4uMDE1ZmNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOwogY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKIGNsYXNzIFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTlhOWM2OS4uN2ZjODI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0xNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IHN0b3JlIHN0YXRlIGluIFRMUyBpbnN0ZWFk
IG9mIG9uIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9GYXN0VExTLmg6IHJlc2VydmUgb25lIGtleSBmb3IgV2ViQXNzZW1ibHksIGRlbGV0
ZSBhIGJ1bmNoCisgICAgICAgIG9mIGRlYWQgY29kZSB3aGljaCBjbGFuZyBjb3VsZG4ndCBjb21w
aWxlIChpdCdzIHZhbGlkIEdDQyBhc3NlbWJseQorICAgICAgICB3aGljaCBMTFZNIGRpc2xpa2Vz
KS4KKwogMjAxNy0wMy0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRpbWUgY2hhbm5lbCBhdHRhY2sgb24gU1ZHIEZpbHRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMu
aAppbmRleCA2M2Y4ODM5Li5iNDQzMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
VExTLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5o
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDQs
NTIgKzQ1LDIwIEBAIG5hbWVzcGFjZSBXVEYgewogLy8gYWNjaWRlbnRhbGx5IHVzZSB0aGUgc2Ft
ZSBrZXkgZm9yIG1vcmUgdGhhbiBvbmUgdGhpbmcuCiAKICNkZWZpbmUgV1RGX1RIUkVBRF9EQVRB
X0tFWSBXVEZfRkFTVF9UTFNfS0VZMAorI2RlZmluZSBXVEZfV0FTTV9DT05URVhUX0tFWSBXVEZf
RkFTVF9UTFNfS0VZMQogI2RlZmluZSBXVEZfVEVTVElOR19LRVkgV1RGX0ZBU1RfVExTX0tFWTMK
IAogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0vLyBCZWxvdyBpcyB0aGUgY29kZSB0aGF0IHRo
ZSBKSVQgd2lsbCBlbWl0LgotCi0jaWYgQ1BVKFg4Nl82NCkKLWlubGluZSB1aW50cHRyX3QgbG9h
ZEZhc3RUTFModW5zaWduZWQgb2Zmc2V0KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAg
YXNtIHZvbGF0aWxlKAotICAgICAgICAibW92cSAlJWdzOiUxLCAlMCIKLSAgICAgICAgOiAiPXIi
KHJlc3VsdCkKLSAgICAgICAgOiAiciIob2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotI2VsaWYgQ1BVKEFSTTY0KQotaW5saW5lIHVpbnRwdHJfdCBs
b2FkRmFzdFRMUyh1bnNpZ25lZCBwYXNzZWRPZmZzZXQpCi17Ci0gICAgdWludHB0cl90IHJlc3Vs
dDsKLSAgICB1aW50cHRyX3Qgb2Zmc2V0ID0gcGFzc2VkT2Zmc2V0OwotICAgIGFzbSB2b2xhdGls
ZSgKLSAgICAgICAgIm1ycyAlMCwgVFBJRFJST19FTDBcblx0IgotICAgICAgICAiYW5kICUwLCAl
MCwgIzB4ZmZmZmZmZmZmZmZmZmZmOFxuXHQiCi0gICAgICAgICJsZHIgJTAsIFslMCwgJTFdIgot
ICAgICAgICA6ICI9ciIocmVzdWx0KQotICAgICAgICA6ICJyIihvZmZzZXQpCi0gICAgICAgIDog
Im1lbW9yeSIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxzZQotI2Vycm9yICJCYWQgYXJj
aGl0ZWN0dXJlIgotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKLQogaW5s
aW5lIHVuc2lnbmVkIGZhc3RUTFNPZmZzZXRGb3JLZXkodW5zaWduZWQgbG9uZyBzbG90KQogewog
ICAgIHJldHVybiBzbG90ICogc2l6ZW9mKHZvaWQqKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAotdXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5OwotCiAjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKLXVzaW5nIFdURjo6bG9hZEZhc3RUTFM7Cit1c2luZyBXVEY6OmZhc3RU
TFNPZmZzZXRGb3JLZXk7CiAjZW5kaWYKIAogI2VuZGlmIC8vIEhBVkUoRkFTVF9UTFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAppbmRleCBkZjBkN2ZmLi5lMWZhYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTc2NCw2ICs3NjQs
OCBAQAogCiAjaWYgX19oYXNfaW5jbHVkZSg8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5oPikKICNk
ZWZpbmUgSEFWRV9GQVNUX1RMUyAxCisjZWxzZQorI2Vycm9yIEpGQiB0ZXN0aW5nIHRoaW5ncyBv
dXQ6IGZhc3QgVExTIHVuc3VwcG9ydGVkIGhlcmUhIE9vcHMuCiAjZW5kaWYKIAogI2lmIChDUFUo
WDg2XzY0KSB8fCBDUFUoQVJNNjQpKSAmJiBIQVZFKEZBU1RfVExTKQotLSAKMi4xMC4xCgo=
</data>
<flag name="commit-queue"
          id="326745"
          type_id="3"
          status="-"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305296</attachid>
            <date>2017-03-24 10:38:14 -0700</date>
            <delta_ts>2017-03-24 15:43:39 -0700</delta_ts>
            <desc>experiment (fixed)</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>56827</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4MDVkNDZkNGQ5YWQ1OGUzMGMxM2QyOTgwZDU2YmQwZmZkNGE1YTlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oICAgfCAgOSAr
KysKIC4uLi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIHwg
MzAgKysrKysrKy0KIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAgICAg
ICAgICAgIHwgMTcgKysrKysKIC4uLi9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAg
ICAgICAgICAgICAgIHwgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmggICAgIHwgMTAgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcCAgICAgICAgICAgICAgICB8IDMxICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oICAgICAgICB8IDQzICsrKysrKysrKystCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwICAgICAgICAgICAgICB8ICA1ICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgICAgICB8ICA5ICsrLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oICAgICAgICAgICAgfCAgMyArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwICAgICAgICAgICAgICAgfCAgMSAt
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oICAgICAgICAgICAgICAgICB8ICAz
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgICB8
IDU4ICsrKysrKysrKystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAgICAgICAgICB8IDE5ICsrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29udGV4dC5jcHAgICAgICAgICB8IDU5ICsrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCAgICAgICAgICAgfCA0MCArKysrKysrKysrCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8IDEwICsrLQog
Li4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggICAgICAgfCAgMyAr
LQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx
MSArKysKIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMzkgKy0tLS0tLS0tLQogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgMiArCiAyNiBmaWxlcyBjaGFuZ2VkLCA0OTMgaW5zZXJ0aW9ucygrKSwg
ODIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MjI2NGFjLi44MjY3ZDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzIsNiArOTMyLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAog
ICAgIHdhc20vV2FzbUJpbmRpbmcuY3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwCisgICAgd2FzbS9XYXNtQ29udGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCiAgICAgd2FzbS9XYXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFlMTM5ZDMuLjlhNTUxMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE3LTAzLTE3ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogc3RvcmUgc3Rh
dGUgaW4gVExTIGluc3RlYWQgb2Ygb24gVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTYxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzaW5nIHRocmVhZC1sb2NhbCBzdG9yYWdlIGluc3RlYWQgb2Yg
Vk0gbWFrZXMgY29kZSBtb3JlIHBvc2l0aW9uCisgICAgICAgIGluZGVwZW5kZW50LiBXZSB1c2Vk
IHRvIHN0b3JlIHRoZSBXZWJBc3NlbWJseSB0b3AgSW5zdGFuY2UgKHRoZQorICAgICAgICBsYXRl
c3Qgb25lIGluIHRoZSBjYWxsIHN0YWNrKSBvbiBWTSwgbm93IHdlIGluc3RlYWQgc3RvcmUgaXQg
aW4KKyAgICAgICAgVExTLiBUaGlzIHRvcCBJbnN0YW5jZSBpcyB1c2VkIHRvIGFjY2VzcyBhIGJ1
bmNoIG9mIHN0YXRlIHN1Y2ggYXMKKyAgICAgICAgTWVtb3J5IGxvY2F0aW9uLCBzaXplLCB0YWJs
ZSAoZm9yIGNhbGxfaW5kaXJlY3QpLCBldGMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjYWxsaW5n
IGl0ICJ0b3AiLCB3aGljaCBpcyBjb25mdXNpbmcsIHdlIG5vdyBqdXN0IGNhbGwKKyAgICAgICAg
aXQgV2FzbUNvbnRleHQuCisKKyAgICAgICAgTWFraW5nIHRoZSBjb2RlIFBJQyBtZWFucyBmdXR1
cmUgcGF0Y2hlcyB3aWxsIGJlIGFibGUgdG8KKyAgICAgICAgcG9zdE1lc3NhZ2UgYW5kIHN0cnVj
dHVyZWQgY2xvbmUgaW50byBJREIgd2l0aG91dCBoYXZpbmcgdG8KKyAgICAgICAgcmVjb21waWxl
IHRoZSBjb2RlLiBUaGlzIHdhc24ndCBwb3NzaWJsZSBiZWZvcmUgYmVjYXVzZSB3ZQorICAgICAg
ICBoYXJkLWNvZGVkIHRoZSBhZGRyZXNzIG9mIFZNIGF0IGNvbXBpbGF0aW9uIHRpbWUuIFRoYXQg
ZG9lc24ndAorICAgICAgICB3b3JrIGJldHdlZW4gd29ya2VycywgYW5kIGRvZXNuJ3Qgd29yayBh
Y3Jvc3MgcmVsb2FkcyAod2hpY2ggSURCCisgICAgICAgIGlzIGludGVuZGVkIHRvIGRvKS4KKwor
ICAgICAgICBJdCdsbCBhbHNvIHBvdGVudGlhbGx5IG1ha2UgY29kZSBmYXN0ZXIgb25jZSB3ZSBz
dGFydCB0dW5pbmcKKyAgICAgICAgd2hhdCdzIGluIFRMUywgd2hhdCdzIGluIHdoaWNoIG9mIHRo
ZSA0IGZyZWUgc2xvdHMsIGFuZCB3aGF0J3MgaW4KKyAgICAgICAgcGlubmVkIHJlZ2lzdGVycy4g
SSdtIGxlYXZpbmcgdGhpcyB0dW5pbmcgZm9yIGxhdGVyIGJlY2F1c2UKKyAgICAgICAgdGhlcmUn
cyBsb3dlciBseWluZyBmcnVpdCBmb3IgdXMgdG8gcGljay4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDogQ29waWVk
IGZyb20gYXNzZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oLgorICAgICAg
ICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZjo6QWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlSWYpOgorICAgICAgICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2VJZjo6fkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0b3JlVG9UTFNQdHIpOiB3ZSBwcmV2aW91c2x5IGRpZG4ndCBoYXZlCisgICAgICAgIHRo
ZSBjb2RlIHJlcXVpcmVkIHRvIHN0b3JlIHRvIFRMUywgb25seSB0byBsb2FkCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6bG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMUzY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZyb21UTFNQdHJOZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OnN0b3JlVG9UTFMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0Ojpsb2FkRnJvbVRMUzY0KTogd2FzIGxvYWRpbmcgMzItYml0IGluc3RlYWQgb2Yg
NjQtYml0CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZVRvVExTNjQp
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZxX3Jt
KToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZhc3RU
TFNMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGYXN0VExTU3RvcmUpOgorICAgICAgICAo
SlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
Ojp3ZWJBc3NlbWJseU93bmVyKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoK
KyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206
OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpC
M0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6
Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6
CisgICAgICAgIChKU0M6Oldhc206Om1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToK
KyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Omxv
YWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAqIHdhc20vV2FzbUNvbnRleHQuaDogQWRkZWQuIFJlcGxhY2VzICJ0b3AiIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZS4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDoKKwogMjAxNy0wMy0xOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGBjb25zdCBsb2NhdGlvbiA9ICJm
b28iYCB0aHJvd3MgaW4gYSB3b3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ODVlMThkNS4uNjAwMzEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw3
ICszNDksNyBAQAogCQkwRjM3MzA4QzFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4
QTFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgKi87IH07CiAJCTBGMzczMDhE
MUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QjFDMEJEMjkxMDAwNTJCRkEgLyogQjNQ
aGlDaGlsZHJlbi5oICovOyB9OwogCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4RTFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07Ci0JCTBGMzczMDkxMUMwQ0Q3MEMwMDA1
MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLzsgfTsKKwkJMEYzNzMwOTExQzBD
RDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOTAxQzBDRDcwQzAw
MDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMzczMDkzMUMwRDY3RUUwMDA1
MkJGQSAvKiBBaXJVc2VDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMzczMDkyMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAq
LzsgfTsKIAkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAwRjE3
Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCAqLzsgfTsKIAkJMEYzOEIwMTIx
N0NGMDc4MzAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTAxN0NGMDc3RjAwQjE0NEQzIC8qIExM
SW50RW50cnlwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xNjM4LDYgKzE2MzgsNyBAQAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEg
LyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IH07CiAJCTk3ODgwMTQw
MTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0Rh
dGVNYXRoLmNwcCAqLzsgfTsKIAkJOTc4ODAxNDExNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1h
dGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhG
QzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8q
IE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTBEQTY3RjFD
OEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIg
LyogSlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNw
cCAqLzsgfTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4
QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA4MSw2ICsyMDgyLDggQEAKIAkJQUQyRkND
MzAxREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHkuY3BwICovOyB9OwogCQlBRDJGQ0MzMTFEQjgzRDQ5MDBCM0U3MzYgLyog
SlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgfTsK
IAkJQUQyRkNDMzMxREM0MDQ1NDAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMzIxREM0MDQ1MzAwQjNF
NzM2IC8qIFdhc21Gb3JtYXQuY3BwICovOyB9OworCQlBRDQxMkIzMzFFN0IyRTk5MDA4QUYxNTcg
LyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLzsg
fTsKKwkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIzMjFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmln
aW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1
MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1
MzFFNUQwRjQ3MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8q
IEZ1bGxDb2RlT3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8q
IEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAgKi87IH07CkBAIC0yNDQxLDcgKzI0NDQsNiBAQAogCQlGRUU0M0ZDRTFFNjY0
MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9y
bVRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFF
NjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJCUZFRkQ2RkM2
MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBK
U1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUgLyogTWFjaGluZUNvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI4ODA2RTIxMTU1
RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTM3MzIsNiAr
MzczNCw3IEBACiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2Rl
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY4NEQ0MzcxQzAwMTYxQzAwODFENjYz
IC8qIEFpckxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxp
dmVuZXNzLmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjY5RDYzNkQxQkZCRTVEMDAwMTAxQjFEIC8qIEZUTE91dHB1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRwdXQuaDsgcGF0aCA9IGZ0bC9GVExP
dXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4MDZFMjExNTVFNDc4QTkz
RkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBMDVB
QkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEwNUFCRDQxOTYxREYyNDAwMzQx
NzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJT
ZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0OCw2ICs0NjUxLDkg
QEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1i
bHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNF
NzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMx
MUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBRDQxMkIzNTFFN0I1N0MwMDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9y
aWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9y
aWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDkzN0MxMUREQkU2MEEw
MDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MDM5LDcgKzUwNDUsNiBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBC
RDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQw
NTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0
cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVG
RDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGgg
PSBNYWNoaW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC02MjQ5LDYgKzYyNTQsOCBAQAogCQkJCUFENEIxREY4MURGMjQ0
RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMy
ODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKKwkJCQlBRDQxMkIzMTFF
N0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAorCQkJCUFENDEyQjMyMUU3QjJF
OEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1
MjZBQSAvKiBXYXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIz
RTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTgg
LyogV2FzbUZvcm1hdC5oICovLApAQCAtNzM5MSw2ICs3Mzk4LDcgQEAKIAkJCQkwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYw
MTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJ
CQkwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlLmggKi8sCisJCQkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZUlmLmggKi8sCiAJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8q
IEFSTTY0QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFz
c2VtYmxlci5oICovLApAQCAtODU2Miw2ICs4NTcwLDcgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2
NDRBODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4
aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5
Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDY5Myw2ICsxMDcwMiw3IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3
IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0
dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaAppbmRleCA4N2FlNjk4Li5jOThhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAt
MTEwOCw2ICsxMTA4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CisgICAgZnJpZW5kIGNsYXNzIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmOwogICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiAgICAgdW5zaWduZWQgbV90ZW1wUmVnaXN0ZXJzVmFsaWRC
aXRzOwogICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB7IHRydWUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iNzhkOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZUlmIHsKK3B1YmxpYzoKKyAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJ
ZihNYWNyb0Fzc2VtYmxlciYgbWFzbSwgYm9vbCBhbGxvd0lmVHJ1ZSkKKyAgICAgICAgOiBtX21h
c20obWFzbSkKKyAgICAgICAgLCBtX2FsbG93SWZUcnVlKGFsbG93SWZUcnVlKQorICAgICAgICAs
IG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyKG1hc20ubV9hbGxvd1NjcmF0Y2hSZWdp
c3RlcikKKyAgICB7CisgICAgICAgIGlmIChtX2FsbG93SWZUcnVlKQorICAgICAgICAgICAgbWFz
bS5tX2FsbG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1ZTsKKyAgICB9CisKKyAgICB+QWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYWxsb3dJZlRy
dWUpCisgICAgICAgICAgICBtX21hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlciA9IG1fb2xkVmFs
dWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYWNyb0Fz
c2VtYmxlciYgbV9tYXNtOworICAgIGJvb2wgbV9hbGxvd0lmVHJ1ZTsKKyAgICBib29sIG1fb2xk
VmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGRkZmM5MjguLjgxMWE4MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAg
LTYzMiw2ICs2MzIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbG9hZEZyb21UTFMzMihv
ZmZzZXQsIGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJlZ2lzdGVySUQg
c3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExTMzIoc3JjLCBv
ZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRy
ZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NDYs
NiArOTUxLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTNjQob2Zmc2V0
LCBkc3QpOwogICAgIH0KKyAgICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJRCBzcmMsIHVp
bnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMsIG9mZnNldCk7
CisgICAgfQogI2VuZGlmCiAKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXgg
N2Y4YjY1ZC4uODIzNTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHB1Ymxp
YzoKICAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ug
c2NyYXRjaCByZWdpc3RlcnMgaWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCi0gICAgCisKICAg
ICB2b2lkIGxvYWRGcm9tVExTMzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOwpAQCAtMzYxNCw2
ICszNjE0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgZHN0
KTsKICAgICAgICAgbG9hZDY0KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOwogICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVG9U
TFMzMihSZWdpc3RlcklEIHNyYywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgUmVn
aXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7
CisgICAgICAgIEFTU0VSVChzcmMgIT0gdG1wKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQ
SURSUk9fRUwwKHRtcCk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIHRtcCk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjLCBBZGRyZXNzKHRtcCwgb2Zmc2V0KSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOworICAgICAgICBt
X2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZElt
bTMyKH43KSwgdG1wKTsKKyAgICAgICAgc3RvcmU2NChzcmMsIEFkZHJlc3ModG1wLCBvZmZzZXQp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0
Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlv
bnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMTViMjIwYy4uYjg2YzdkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaApAQCAtMzg2NCw2ICszODY0LDIzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIuZ3MoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CiAgICAg
fQorCisKKyAgICBzdGF0aWMgYm9vbCBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQg
c3RvcmVUb1RMUzMyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
I2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0
aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiYzM0YTBkLi4yMzQz
ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xNzA1LDcgKzE3MDUsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihv
ZmZzZXQsIGRzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIob2Zmc2V0LCBkc3QpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX3JtKHNyYywgb2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTRjOGUzMi4uMzQz
MDIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0yMzYwLDYgKzIzNjAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOwogICAgIH0KIAorICAgIHZvaWQg
bW92bF9ybShSZWdpc3RlcklEIHNyYywgdWludDMyX3QgYWRkcikKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CisgICAgfQor
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKQEAgLTIzODEsNiArMjM4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NEFkZHIo
T1BfTU9WX0V2R3YsIHNyYywgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfbUVBWChj
b25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfTU9WX0VBWE92KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggYzRjYmUx
OC4uNWE1NWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTE1MjExLDcg
KzE1MjExLDcgQEAgdm9pZCB0ZXN0V2FzbUFkZHJlc3MoKQogICAgICAgICBDSEVDS19FUShudW1U
b1N0b3JlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgdGVzdEZhc3RUTFMoKQordm9pZCB0ZXN0RmFzdFRM
U0xvYWQoKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCiAgICAgX3B0aHJlYWRfc2V0c3Bl
Y2lmaWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpKTsKQEAgLTE1MjI2LDEzICsxNTIyNiwzNyBAQCB2b2lk
IHRlc3RGYXN0VExTKCkKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0
VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7CiAgICAg
ICAgIH0pOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBwYXRjaHBvaW50KTsKICAgICAKICAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PHVpbnRwdHJfdD4ocHJvYyksIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSk7CiAjZW5k
aWYKIH0KIAordm9pZCB0ZXN0RmFzdFRMU1N0b3JlKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhkZWFkKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBq
aXQuc3RvcmVUb1RMU1B0cihzY3JhdGNoLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5H
X0tFWSkpOworICAgICAgICB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7
CisgICAgQ0hFQ0tfRVEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9URVNUSU5HX0tFWSkpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVh
ZCkpOworI2VuZGlmCit9CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5
IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7
CkBAIC0xNjc2MCw3ICsxNjc4NCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAg
ICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRkcmVzcygpKTsKICAgICAKLSAgICBSVU4o
dGVzdEZhc3RUTFMoKSk7CisgICAgUlVOKHRlc3RGYXN0VExTTG9hZCgpKTsKKyAgICBSVU4odGVz
dEZhc3RUTFNTdG9yZSgpKTsKIAogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAgIFJVTih0ZXN0
QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0
MzIsIEFpcjo6QXJnOjpUbXApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDQ5YzdmOWMuLjZiM2E2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlN1
cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlR5cGVvZlR5cGUuaCIKICNpbmNsdWRlICJWTS5oIgor
I2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjM0LDcg
KzE2MzUsNDcgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3YW5nc0lu
dDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNlbmRpZgot
ICAgIAorCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKKyAgICB7CisjaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKSB7CisgICAgICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9y
S2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdo
ZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2OTc3MworICAgICAgICBsb2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4dCwgZHN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKKyAgICB7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFz
dFRMUygpKQorICAgICAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbmRpZgorICAgICAgICAvLyBGSVhNRTogU2F2
ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+
d2FzbUNvbnRleHQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAg
ICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Rv
cmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
VExTKCkpCisgICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKIHByb3Rl
Y3RlZDoKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNTYwMWI2NS4uN2RkYzZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVTdHViSW5mby5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgIldh
c21Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTky
LDcgKzU5Myw3IEBAIHN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQogewog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNl
IHNoYXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFy
ZSB0aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiB2bS50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2UtPm1vZHVsZSgpOworICAgIHJldHVybiBsb2FkV2FzbUNvbnRleHQo
dm0pLT5tb2R1bGUoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCmluZGV4IDlhNjU1MDYuLjA4NTdlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDEyICszMiwxMyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5j
bHVkZSAiTWF0aENvbW1vbi5oIgotI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKKyNpbmNs
dWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCisjaW5jbHVkZSAiV2FzbUNv
bnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9J
bmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTExNTYs
NyArMTE1Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNt
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBs
b2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6
Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0
cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCBiM2MyMGE0Li5mYmZkNzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjYsNyArNDI2LDgg
QEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgXAogICAgIHYoYm9vbCwg
dXNlV2ViQXNzZW1ibHksIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2ViQXNzZW1ibHkgZ2xv
YmFsIG9iamVjdC4iKSBcCiAgICAgdihib29sLCBzaW11bGF0ZVdlYkFzc2VtYmx5TG93TWVtb3J5
LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIE1lbW9yeSBvYmplY3Qgd29uJ3QgbW1hcCB0
aGUgZnVsbCAnbWF4aW11bScgcmFuZ2UgYW5kIGluc3RlYWQgd2lsbCBhbGxvY2F0ZSB0aGUgbWlu
aW11bSByZXF1aXJlZCBhbW91bnQuIikgXAotICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgYSAzMi1i
aXQgYWRkcmVzcyBzcGFjZSB3aXRoIGEgc2lnbmFsIGhhbmRsZXIgdG8gYm91bmRzIGNoZWNrIHdh
c20gbWVtb3J5LiIpCisgICAgdihib29sLCB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnksIHRydWUs
IE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdHJ5IHRvIHVzZSBhIDMyLWJpdCBhZGRyZXNzIHNw
YWNlIHdpdGggYSBzaWduYWwgaGFuZGxlciB0byBib3VuZHMgY2hlY2sgd2FzbSBtZW1vcnkuIikg
XAorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHlGYXN0VExTLCB0cnVlLCBOb3JtYWwsICJJZiB0
cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgZmFzdCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpZiBhdmFp
bGFibGUgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uIikKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxl
bmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwNjRkYjIwLi44NTEx
NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNzcsNyArMTc3LDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgY2xpZW50
RGF0YSgwKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJh
bWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQotICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
KG51bGxwdHIpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFi
bGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFy
Z0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAxNDQwODZkLi45ZDg2YWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNSw3ICszMTUsOCBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQgbWln
aHQgbm90IHBvaW50IHRvIGEgQ2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZSB7
IG51bGxwdHIgfTsKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTsKKyAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAg
ICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0IHsgbnVsbHB0ciB9OwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZXJt
aW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGEyZTVjYy4uNjU1N2Y2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lu
bGluZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBpbGUu
aCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9y
LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdD
b252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhj
ZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5oIgogI2luY2x1ZGUg
Ildhc21NZW1vcnkuaCIKQEAgLTIyNiw5ICsyMjgsMzYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcg
bV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CiAgICAgVmFsdWUq
IG1femVyb1ZhbHVlc1tudW1UeXBlc107Ci0gICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsKKyAg
ICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0aGlzIGxhenkgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5MgogfTsKIAorc3RhdGljIFZh
bHVlKiBsb2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
K3sKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOworICAgIGlmIChD
Q2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkK
KyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2Ny
YXRjaChqaXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdw
cigpKTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKK30KKworc3RhdGljIHZvaWQg
c3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBWYWx1
ZSogYXJnKQoreworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOworICAgIGlm
IChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkpCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShh
cmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgaml0LnN0b3JlV2Fz
bUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7Cit9CisKIEIzSVJHZW5lcmF0
b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywg
UHJvY2VkdXJlJiBwcm9jZWR1cmUsIFdhc21JbnRlcm5hbEZ1bmN0aW9uKiBjb21waWxhdGlvbiwg
VmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscykK
ICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2luZm8oaW5mbykKQEAgLTI3MCw4ICsyOTksNyBAQCBC
M0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0
dXBGcmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0aW9uLCBt
X3Byb2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNlVmFsdWUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksICZtX3ZtLnRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSkpOworICAgIG1faW5zdGFuY2VWYWx1ZSA9IGxvYWRXYXNtQ29udGV4dChtX3Byb2Ms
IG1fY3VycmVudEJsb2NrKTsKIH0KIAogc3RydWN0IE1lbW9yeUJhc2VBbmRTaXplIHsKQEAgLTI4
Myw4ICszMTEsOCBAQCBzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNp
emUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZQogewogICAgIFZhbHVlKiBtZW1v
cnlPYmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zm
c2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZSh2bS50
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkpID09
IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZSh2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UtPm1l
bW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiBy
ZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
bG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6
ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1v
cnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0OwogICAgIHJlc3VsdC5iYXNl
ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUo
KSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZN
ZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJs
eU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtMjkyLDkgKzMyMCw5IEBAIHN0YXRpYyBNZW1v
cnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5j
ZSwgUHJvY2VkdXJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgcmVzdG9y
ZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoVk0mIHZtLCBjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYg
bWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxv
Y2spCitzdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShjb25zdCBNZW1v
cnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywg
QmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCBpbnN0YW5jZSwgYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkpOwor
ICAgIHN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlmICgh
IW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3Mg
PSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5NSw3ICs0MjMsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOworICAg
ICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZt
KTsKICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5t
ZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQpAQCAtNDE0LDcgKzQ0Miw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dN
ZW1vcnkpKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBkZWx0YSk7CiAKLSAgICByZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFs
dWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2Jh
bFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRC
bG9jayk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtOTAxLDcgKzkyOSw3IEBAIGF1dG8gQjNJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1
cmUqIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhh
dmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBo
YXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2Jh
bFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBjb250
aW51YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8u
bWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9uKTsKICAgICB9IGVs
c2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwo
bV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5
cGUpLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKQEAg
LTk5NSw3ICsxMDIzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29u
c3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFNpZ25hdHVyZUluZGV4IHMKICAgICAgICAgfSk7CiAK
ICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBp
bnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1fdm0sIG1faW5mby5tZW1vcnksIG1faW5zdGFu
Y2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgcmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3Vy
cmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMDM3LDcgKzEwNjUsNyBAQCB2
b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRy
b2xTdGFjaywgY29uc3QgRXhwcmVzcwogICAgIGRhdGFMb2dMbigpOwogfQogCi1zdGF0aWMgdm9p
ZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZtLCBDb21waWxhdGlvbkNvbnRleHQmIGNvbXBp
bGF0aW9uQ29udGV4dCwgV2FzbUludGVybmFsRnVuY3Rpb24mIGZ1bmN0aW9uLCBjb25zdCBTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCitzdGF0aWMg
dm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIFdhc21JbnRlcm5hbEZ1bmN0aW9uJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJl
KiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogewogICAgIENDYWxs
SGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5qc0VudHJ5cG9pbnRKSVQ7CiAKQEAg
LTExNjUsNyArMTE5Myw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYg
dm0sIENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0CiAKICAgICBpZiAoISFp
bmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFz
ZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2UsIGJhc2VNZW1vcnkpOworICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VN
ZW1vcnkpOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1l
bW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9y
eSk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVnaXN0
ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwpAQCAtMTIyNyw3ICsx
MjU1LDcgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiwg
U3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLAogICAgICAgICByZXN1bHQtPndhc21FbnRy
eXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMgPSBwcm9jZWR1cmUuY2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOwogICAgIH0KIAotICAgIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcih2bSwgY29tcGlsYXRpb25D
b250ZXh0LCAqcmVzdWx0LCBzaWduYXR1cmUsIGluZm8pOworICAgIGNyZWF0ZUpTVG9XYXNtV3Jh
cHBlcihjb21waWxhdGlvbkNvbnRleHQsICpyZXN1bHQsIHNpZ25hdHVyZSwgaW5mbyk7CiAgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwCmluZGV4IGNiYjNmOTkuLmZiNjc2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTYgKzM2LDE3IEBACiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgog
I2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKIHR5cGVkZWYgQ0NhbGxIZWxwZXJzIEpJVDsKIAotc3RhdGljIHZvaWQgbWF0
ZXJpYWxpemVJbXBvcnRKU0NlbGwoVk0qIHZtLCBKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5k
ZXgsIEdQUlJlZyByZXN1bHQpCitzdGF0aWMgdm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChK
SVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAgLy8g
V2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UsIHdo
aWNoIGlzIGlkZW50aWZpZWQgb24gVk0uIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBhbGwg
aXRzIGltcG9ydCBmdW5jdGlvbnMuCi0gICAgaml0LmxvYWRQdHIoJnZtLT50b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UsIHJlc3VsdCk7CisgICAgLy8gV2UncmUgY2FsbGluZyBvdXQgb2YgdGhlIGN1
cnJlbnQgV2ViQXNzZW1ibHkuSW5zdGFuY2UuIFRoYXQgSW5zdGFuY2UgaGFzIGEgbGlzdCBvZiBh
bGwgaXRzIGltcG9ydCBmdW5jdGlvbnMuCisgICAgaml0LmxvYWRXYXNtQ29udGV4dChyZXN1bHQp
OwogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhyZXN1bHQsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihpbXBvcnRJbmRleCkpLCByZXN1bHQpOwogfQog
CkBAIC0xMDEsNyArMTAyLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9K
cyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRX
YXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0
byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3Qt
PnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgi
aTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVk
IGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0LDcgKzI1NSw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExp
bmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0g
R1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBw
YXRoIGJlbG93LgogICAgIEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQo
aW1wb3J0SlNDZWxsR1BSUmVnKSk7CiAKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwg
aml0LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKKyAgICBtYXRlcmlhbGl6ZUlt
cG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAgICAg
aml0LnN0b3JlNjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
KTsKICAgICBqaXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMp
LCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwpAQCAt
NDI2LDEzICs0MjcsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9XYXNt
KFZNKiB2bSwgdW5zaWduZWQgaW1wb3J0SW5kZXgpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjsKIAogICAgIC8vIEIzJ3MgY2FsbCBjb2Rl
Z2VuIGVuc3VyZXMgdGhhdCB0aGUgSlNDZWxsIGlzIGEgV2ViQXNzZW1ibHlGdW5jdGlvbi4KLSAg
ICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbCh2bSwgaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7
CisgICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgc2NyYXRjaCk7
CiAKLSAgICAvLyBHZXQgdGhlIGNhbGxlZSdzIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGFuZCBzZXQg
aXQgYXMgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLiBUaGUgY2FsbGVyIHdpbGwgdGFrZSBj
YXJlIG9mIHJlc3RvcmluZyBpdHMgb3duIEluc3RhbmNlLgorICAgIC8vIEdldCB0aGUgY2FsbGVl
J3MgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYW5kIHNldCBpdCBhcyBXYXNtQ29udGV4dC4gVGhlIGNh
bGxlciB3aWxsIHRha2UgY2FyZSBvZiByZXN0b3JpbmcgaXRzIG93biBJbnN0YW5jZS4KICAgICBH
UFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNT
RVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRjaCk7CiAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNz
KHNjcmF0Y2gsIFdlYkFzc2VtYmx5RnVuY3Rpb246Om9mZnNldE9mSW5zdGFuY2UoKSksIGJhc2VN
ZW1vcnkpOyAvLyBJbnN0YW5jZSouCi0gICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksICZ2bS0+
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKTsKKyAgICBqaXQuc3RvcmVXYXNtQ29udGV4dChiYXNl
TWVtb3J5KTsKIAogICAgIC8vIEZJWE1FIHRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHRoYXQg
YWxsIFdlYkFzc2VtYmx5Lkluc3RhbmNlIGhhdmUgdGhlIHNhbWUgcGlubmVkIHJlZ2lzdGVycy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgIC8vIFNl
dCB1cCB0aGUgY2FsbGVlJ3MgYmFzZU1lbW9yeSByZWdpc3RlciBhcyB3ZWxsIGFzIHRoZSBtZW1v
cnkgc2l6ZSByZWdpc3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ4NGNkNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCisKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPG11dGV4
PgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCit7CisjaWYgRU5BQkxFKEZB
U1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJl
YWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisjZW5kaWYKKyAg
ICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICByZXR1cm4gdm0u
d2FzbUNvbnRleHQ7Cit9CisKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIF9wdGhyZWFk
X3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZv
aWQqPihpbnN0YW5jZSkpOworI2VuZGlmCisgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBl
bHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NzczCisgICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYzVlOGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U7CitjbGFzcyBWTTsKKworSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQo
Vk0mKTsKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSop
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKaW5kZXggNTAyYmIxMi4uZDFhODAxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2Fz
bUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVt
VHJhY2luZy5oPgpAQCAtMTIwLDExICsxMjEsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50
LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGgg
dGhpcyBlbnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0
ZWQgYnkgQjMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYK
LSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSB2
bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci0gICAgdm0udG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlID0gd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7CisgICAg
c3RvcmVXYXNtQ29udGV4dCh2bSwgd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NF
UlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKKyAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpID09IGxvYWRXYXNtQ29udGV4dCh2bSkpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJh
d1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHBy
ZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisgICAgc3RvcmVXYXNtQ29udGV4dCh2bSwgcHJldkpT
V2ViQXNzZW1ibHlJbnN0YW5jZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yLmgKaW5kZXggMWIyMTRjZS4uMDE1ZmNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOwogY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKIGNsYXNzIFdl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTlhOWM2OS4uN2ZjODI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0xNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IHN0b3JlIHN0YXRlIGluIFRMUyBpbnN0ZWFk
IG9mIG9uIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk2MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9GYXN0VExTLmg6IHJlc2VydmUgb25lIGtleSBmb3IgV2ViQXNzZW1ibHksIGRlbGV0
ZSBhIGJ1bmNoCisgICAgICAgIG9mIGRlYWQgY29kZSB3aGljaCBjbGFuZyBjb3VsZG4ndCBjb21w
aWxlIChpdCdzIHZhbGlkIEdDQyBhc3NlbWJseQorICAgICAgICB3aGljaCBMTFZNIGRpc2xpa2Vz
KS4KKwogMjAxNy0wMy0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRpbWUgY2hhbm5lbCBhdHRhY2sgb24gU1ZHIEZpbHRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMu
aAppbmRleCA2M2Y4ODM5Li5iNDQzMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
VExTLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdFRMUy5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5o
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDQs
NTIgKzQ1LDIwIEBAIG5hbWVzcGFjZSBXVEYgewogLy8gYWNjaWRlbnRhbGx5IHVzZSB0aGUgc2Ft
ZSBrZXkgZm9yIG1vcmUgdGhhbiBvbmUgdGhpbmcuCiAKICNkZWZpbmUgV1RGX1RIUkVBRF9EQVRB
X0tFWSBXVEZfRkFTVF9UTFNfS0VZMAorI2RlZmluZSBXVEZfV0FTTV9DT05URVhUX0tFWSBXVEZf
RkFTVF9UTFNfS0VZMQogI2RlZmluZSBXVEZfVEVTVElOR19LRVkgV1RGX0ZBU1RfVExTX0tFWTMK
IAogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0vLyBCZWxvdyBpcyB0aGUgY29kZSB0aGF0IHRo
ZSBKSVQgd2lsbCBlbWl0LgotCi0jaWYgQ1BVKFg4Nl82NCkKLWlubGluZSB1aW50cHRyX3QgbG9h
ZEZhc3RUTFModW5zaWduZWQgb2Zmc2V0KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAg
YXNtIHZvbGF0aWxlKAotICAgICAgICAibW92cSAlJWdzOiUxLCAlMCIKLSAgICAgICAgOiAiPXIi
KHJlc3VsdCkKLSAgICAgICAgOiAiciIob2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotI2VsaWYgQ1BVKEFSTTY0KQotaW5saW5lIHVpbnRwdHJfdCBs
b2FkRmFzdFRMUyh1bnNpZ25lZCBwYXNzZWRPZmZzZXQpCi17Ci0gICAgdWludHB0cl90IHJlc3Vs
dDsKLSAgICB1aW50cHRyX3Qgb2Zmc2V0ID0gcGFzc2VkT2Zmc2V0OwotICAgIGFzbSB2b2xhdGls
ZSgKLSAgICAgICAgIm1ycyAlMCwgVFBJRFJST19FTDBcblx0IgotICAgICAgICAiYW5kICUwLCAl
MCwgIzB4ZmZmZmZmZmZmZmZmZmZmOFxuXHQiCi0gICAgICAgICJsZHIgJTAsIFslMCwgJTFdIgot
ICAgICAgICA6ICI9ciIocmVzdWx0KQotICAgICAgICA6ICJyIihvZmZzZXQpCi0gICAgICAgIDog
Im1lbW9yeSIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxzZQotI2Vycm9yICJCYWQgYXJj
aGl0ZWN0dXJlIgotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKLQogaW5s
aW5lIHVuc2lnbmVkIGZhc3RUTFNPZmZzZXRGb3JLZXkodW5zaWduZWQgbG9uZyBzbG90KQogewog
ICAgIHJldHVybiBzbG90ICogc2l6ZW9mKHZvaWQqKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAotdXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5OwotCiAjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKLXVzaW5nIFdURjo6bG9hZEZhc3RUTFM7Cit1c2luZyBXVEY6OmZhc3RU
TFNPZmZzZXRGb3JLZXk7CiAjZW5kaWYKIAogI2VuZGlmIC8vIEhBVkUoRkFTVF9UTFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAppbmRleCBkZjBkN2ZmLi4wMTg3YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTc2NCw2ICs3NjQs
OCBAQAogCiAjaWYgX19oYXNfaW5jbHVkZSg8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5oPikKICNk
ZWZpbmUgSEFWRV9GQVNUX1RMUyAxCisjZWxzZQorI2Vycm9yICJKRkIgdGVzdGluZyB0aGluZ3Mg
b3V0OiBmYXN0IFRMUyB1bnN1cHBvcnRlZCBoZXJlLiBPb3BzLiIKICNlbmRpZgogCiAjaWYgKENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkpICYmIEhBVkUoRkFTVF9UTFMpCi0tIAoyLjEwLjEKCg==
</data>
<flag name="commit-queue"
          id="326748"
          type_id="3"
          status="-"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305326</attachid>
            <date>2017-03-24 15:43:39 -0700</date>
            <delta_ts>2017-03-24 16:25:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-tls.patch</filename>
            <type>text/plain</type>
            <size>56185</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0YWUwZTU1N2M3ZDc5MTY0ZTVmZjI2ODg1NDM3ZTU5OTEzZDA1MTRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDE0IE1hciAyMDE3IDEwOjM5OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS10
bHMKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgMTYgKysrLQogLi4uL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggICAgICAgICAgICAgfCAgMSArCiAuLi4vYXNzZW1ibGVyL0Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggICB8IDU5ICsrKysrKysrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggICB8ICA5ICsr
KwogLi4uL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggfCAz
MCArKysrKysrLQogLi4uL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICAgICAg
ICAgICAgfCAxNyArKysrKwogLi4uL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oICAg
ICAgICAgICAgICAgfCAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCAgICAgfCAxMCArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwICAgICAgICAgICAgICAgIHwgMzEgKysrKysrKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggICAgICAgIHwgNDMgKysrKysrKysrKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgICAgICAgICAgICAgIHwgIDUgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwgIDkgKystCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggICAgICAgICAgICB8ICAzICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgICAgICAgICAgICAgICB8ICAxIC0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggICAgICAgICAgICAgICAgIHwgIDMg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCAgIHwg
NTYgKysrKysrKysrKy0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcCAgICAgICAgIHwgMTkgKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
b250ZXh0LmNwcCAgICAgICAgIHwgNTkgKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Db250ZXh0LmggICAgICAgICAgIHwgNDAgKysrKysrKysrKwogLi4uL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgfCAxMCArKy0KIC4u
Li93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICAgICAgIHwgIDMgKy0K
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEg
KysrCiBTb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDM5ICstLS0tLS0tLS0KIDI1IGZpbGVzIGNoYW5nZWQsIDQ5MSBpbnNlcnRpb25zKCspLCA4MSBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkyMjY0YWMuLjgyNjdkMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkzMiw2ICs5MzIsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCiAgICAg
d2FzbS9XYXNtQmluZGluZy5jcHAKICAgICB3YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5jcHAK
KyAgICB3YXNtL1dhc21Db250ZXh0LmNwcAogICAgIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHAKICAgICB3YXNtL1dhc21Gb3JtYXQuY3BwCiAgICAgd2FzbS9XYXNtTWVtb3J5LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmVmMGZmZi4uNmI0MmFmYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTQgQEAKIDIwMTctMDMtMjQgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBp
biBUTFMgaW5zdGVhZCBvZiBvbiBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNpbmcgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgaW5zdGVhZCBvZiBWTSBt
YWtlcyBjb2RlIG1vcmUgcG9zaXRpb24KKyAgICAgICAgaW5kZXBlbmRlbnQuIFdlIHVzZWQgdG8g
c3RvcmUgdGhlIFdlYkFzc2VtYmx5IHRvcCBJbnN0YW5jZSAodGhlCisgICAgICAgIGxhdGVzdCBv
bmUgaW4gdGhlIGNhbGwgc3RhY2spIG9uIFZNLCBub3cgd2UgaW5zdGVhZCBzdG9yZSBpdCBpbgor
ICAgICAgICBUTFMuIFRoaXMgdG9wIEluc3RhbmNlIGlzIHVzZWQgdG8gYWNjZXNzIGEgYnVuY2gg
b2Ygc3RhdGUgc3VjaCBhcworICAgICAgICBNZW1vcnkgbG9jYXRpb24sIHNpemUsIHRhYmxlIChm
b3IgY2FsbF9pbmRpcmVjdCksIGV0Yy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNhbGxpbmcgaXQg
InRvcCIsIHdoaWNoIGlzIGNvbmZ1c2luZywgd2Ugbm93IGp1c3QgY2FsbAorICAgICAgICBpdCBX
YXNtQ29udGV4dC4KKworICAgICAgICBNYWtpbmcgdGhlIGNvZGUgUElDIG1lYW5zIGZ1dHVyZSBw
YXRjaGVzIHdpbGwgYmUgYWJsZSB0bworICAgICAgICBwb3N0TWVzc2FnZSBhbmQgc3RydWN0dXJl
ZCBjbG9uZSBpbnRvIElEQiB3aXRob3V0IGhhdmluZyB0bworICAgICAgICByZWNvbXBpbGUgdGhl
IGNvZGUuIFRoaXMgd2Fzbid0IHBvc3NpYmxlIGJlZm9yZSBiZWNhdXNlIHdlCisgICAgICAgIGhh
cmQtY29kZWQgdGhlIGFkZHJlc3Mgb2YgVk0gYXQgY29tcGlsYXRpb24gdGltZS4gVGhhdCBkb2Vz
bid0CisgICAgICAgIHdvcmsgYmV0d2VlbiB3b3JrZXJzLCBhbmQgZG9lc24ndCB3b3JrIGFjcm9z
cyByZWxvYWRzICh3aGljaCBJREIKKyAgICAgICAgaXMgaW50ZW5kZWQgdG8gZG8pLgorCisgICAg
ICAgIEl0J2xsIGFsc28gcG90ZW50aWFsbHkgbWFrZSBjb2RlIGZhc3RlciBvbmNlIHdlIHN0YXJ0
IHR1bmluZworICAgICAgICB3aGF0J3MgaW4gVExTLCB3aGF0J3MgaW4gd2hpY2ggb2YgdGhlIDQg
ZnJlZSBzbG90cywgYW5kIHdoYXQncyBpbgorICAgICAgICBwaW5uZWQgcmVnaXN0ZXJzLiBJJ20g
bGVhdmluZyB0aGlzIHR1bmluZyBmb3IgbGF0ZXIgYmVjYXVzZQorICAgICAgICB0aGVyZSdzIGxv
d2VyIGx5aW5nIGZydWl0IGZvciB1cyB0byBwaWNrLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAq
IGFzc2VtYmxlci9BbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oOiBDb3BpZWQgZnJv
bSBhc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmguCisgICAgICAgIChK
U0M6OkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmOjpBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2VJZik6CisgICAgICAgIChKU0M6OkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmOjp+QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
c3RvcmVUb1RMU1B0cik6IHdlIHByZXZpb3VzbHkgZGlkbid0IGhhdmUKKyAgICAgICAgdGhlIGNv
ZGUgcmVxdWlyZWQgdG8gc3RvcmUgdG8gVExTLCBvbmx5IHRvIGxvYWQKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0Ojpsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVRvVExTMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVRvVExTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c3RvcmVUb1RMUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0
b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmxvYWRGcm9tVExTNjQpOiB3YXMgbG9hZGluZyAzMi1iaXQgaW5zdGVhZCBvZiA2NC1i
aXQKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlVG9UTFM2NCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6Om1vdmxfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnFfcm0pOgor
ICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0RmFzdFRMU0xv
YWQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZhc3RUTFNTdG9yZSk6CisgICAgICAgIChKU0M6
OkIzOjpydW4pOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRj
aFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5T3duZXIpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjp0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAg
ICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bG9hZFdhc21Db250
ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpX
YXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dh
c21XcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAg
ICAgKiB3YXNtL1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bWF0ZXJpYWxp
emVJbXBvcnRKU0NlbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAg
IChKU0M6Oldhc206Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUNvbnRleHQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5oOiBBZGRlZC4g
UmVwbGFjZXMgInRvcCIgSlNXZWJBc3NlbWJseUluc3RhbmNlLgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1
bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5oOgorCisyMDE3LTAzLTI0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKwog
ICAgICAgICBXZWJBc3NlbWJseTogc3BlYy10ZXN0cy9tZW1vcnkud2FzdC5qcyBmYWlscyBpbiBk
ZWJ1ZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
Nzk0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODVlMThkNS4uNjAwMzEwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OSw3ICszNDksNyBAQAogCQkwRjM3
MzA4QzFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA4QTFDMEJEMjkxMDAwNTJCRkEg
LyogQjNQaGlDaGlsZHJlbi5jcHAgKi87IH07CiAJCTBGMzczMDhEMUMwQkQyOTEwMDA1MkJGQSAv
KiBCM1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjM3MzA4QjFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5oICovOyB9
OwogCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjM3MzA4RTFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlLmggKi87IH07Ci0JCTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UuaCAqLzsgfTsKKwkJMEYzNzMwOTExQzBDRDcwQzAwMDUyQkZBIC8qIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMzczMDkzMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3Vu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzcz
MDkyMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAqLzsgfTsKIAkJMEYzOEIwMTEx
N0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAwRjE3Q0YwNzdGMDBCMTQ0RDMgLyog
TExJbnRFbnRyeXBvaW50LmNwcCAqLzsgfTsKIAkJMEYzOEIwMTIxN0NGMDc4MzAwQjE0NEQzIC8q
IExMSW50RW50cnlwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzOEIwMTAxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjM4LDYg
KzE2MzgsNyBAQAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NTBFRDFEM0FF
MDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IH07CiAJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAv
KiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLzsgfTsK
IAkJOTc4ODAxNDExNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0Uy
RCAvKiBKU0RhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyODgwNkUyMTE1
NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyog
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwREE2N0Ux
QzhFMzExRDAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9u
c19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyOEZG
MzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsKIAkJOTkyOEZG
M0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIgLyog
SlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjA4MSw2ICsyMDgyLDggQEAKIAkJQUQyRkNDMzAxREI4M0Q0OTAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3Bw
ICovOyB9OwogCQlBRDJGQ0MzMTFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkYxREI4
MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgfTsKIAkJQUQyRkNDMzMxREM0MDQ1
NDAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQu
Y3BwICovOyB9OworCQlBRDQxMkIzMzFFN0IyRTk5MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzEx
RTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLzsgfTsKKwkJQUQ0MTJCMzQxRTdC
MkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
RDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlEMkE5
NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJBOTcg
LyogRnVsbENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNw
cCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVj
b3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
NDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87IH07
CkBAIC0yNDQxLDcgKzI0NDQsNiBAQAogCQlGRUU0M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxh
dGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRocmVhZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2
MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENv
bXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAv
KiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5ODFFRDgy
MzI4MjM0RDkxQkFFQ0NBREUgLyogTWFjaGluZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI4ODA2RTIxMTU1RTQ3OEE5M0ZBN0IwMiAvKiBN
YWNoaW5lQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTM3MzIsNiArMzczNCw3IEBACiAJCTI2NDA5
MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBaXJPcGNvZGUu
b3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjY4NEQ0MzcxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxpdmVuZXNzLmg7IHBhdGggPSBi
My9haXIvQWlyTGl2ZW5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY5RDYz
NkQxQkZCRTVEMDAwMTAxQjFEIC8qIEZUTE91dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBGVExPdXRwdXQuaDsgcGF0aCA9IGZ0bC9GVExPdXRwdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hpbmVDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1
MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkEwNUFCRDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkExMTEy
NDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0OCw2ICs0NjUxLDkgQEAKIAkJQUQyRkNDMkUxREI4
MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAv
KiBXYXNtQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
YXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDEyQjMyMUU3
QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDQx
MkIzNTFFN0I1N0MwMDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVE
MERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFj
dE1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MDM5LDcgKzUwNDUsNiBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFu
ZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBh
cmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIw
IC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYy
RjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjg4MDZF
MjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC02MjQ5LDYgKzYyNTQsOCBAQAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNt
QmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGlu
Z0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCAqLywKKwkJCQlBRDQxMkIzMTFFN0IyRThBMDA4QUYxNTcgLyog
V2FzbUNvbnRleHQuY3BwICovLAorCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNt
Q29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAvKiBXYXNtRXhjZXB0
aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNtRm9ybWF0
LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1hdC5oICov
LApAQCAtNzM5MSw2ICs3Mzk4LDcgQEAKIAkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCisJCQkJQUQ0
MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlm
LmggKi8sCiAJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmgg
Ki8sCiAJCQkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8s
CiAJCQkJODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovLApAQCAt
ODU2Miw2ICs4NTcwLDcgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29t
cGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZU
TERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQ0QzBEMUMz
RTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVu
dEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFC
NSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY5Myw2ICsx
MDcwMiw3IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJl
Q2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQ0MTJCMzMxRTdCMkU5
OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRjBGMkQx
MTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJlU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA4
N2FlNjk4Li5jOThhYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTEwOCw2ICsxMTA4LDcgQEAg
cHJvdGVjdGVkOgogICAgIH0KIAogICAgIGZyaWVuZCBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2U7CisgICAgZnJpZW5kIGNsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmOwogICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2U7CiAgICAgdW5zaWduZWQgbV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzOwogICAgIGJvb2wgbV9h
bGxvd1NjcmF0Y2hSZWdpc3RlciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlSWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzhkOGY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIHsKK3B1Ymxp
YzoKKyAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZihNYWNyb0Fzc2VtYmxlciYg
bWFzbSwgYm9vbCBhbGxvd0lmVHJ1ZSkKKyAgICAgICAgOiBtX21hc20obWFzbSkKKyAgICAgICAg
LCBtX2FsbG93SWZUcnVlKGFsbG93SWZUcnVlKQorICAgICAgICAsIG1fb2xkVmFsdWVPZkFsbG93
U2NyYXRjaFJlZ2lzdGVyKG1hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlcikKKyAgICB7CisgICAg
ICAgIGlmIChtX2FsbG93SWZUcnVlKQorICAgICAgICAgICAgbWFzbS5tX2FsbG93U2NyYXRjaFJl
Z2lzdGVyID0gdHJ1ZTsKKyAgICB9CisKKyAgICB+QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlSWYoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYWxsb3dJZlRydWUpCisgICAgICAgICAgICBt
X21hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlciA9IG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJl
Z2lzdGVyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlciYgbV9tYXNtOwor
ICAgIGJvb2wgbV9hbGxvd0lmVHJ1ZTsKKyAgICBib29sIG1fb2xkVmFsdWVPZkFsbG93U2NyYXRj
aFJlZ2lzdGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCmluZGV4IGUzNDkwMjQuLjgxNzdlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY1Nyw2ICs2NTcsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbG9hZEZyb21UTFMzMihvZmZzZXQsIGRzdCk7CiAgICAg
fQorCisgICAgdm9pZCBzdG9yZVRvVExTUHRyKFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICBzdG9yZVRvVExTMzIoc3JjLCBvZmZzZXQpOworICAgIH0KICNl
bmRpZgogCiAgICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC05NzEsNiArOTc2LDEwIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGxvYWRGcm9tVExTNjQob2Zmc2V0LCBkc3QpOwogICAgIH0KKyAg
ICB2b2lkIHN0b3JlVG9UTFNQdHIoUmVnaXN0ZXJJRCBzcmMsIHVpbnQzMl90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIHN0b3JlVG9UTFM2NChzcmMsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAK
ICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggN2Y4YjY1ZC4uODIzNTEwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmgKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQogICAgIC8vIFRoaXMgd2lsbCB1c2Ugc2NyYXRjaCByZWdpc3RlcnMg
aWYgdGhlIG9mZnNldCBpcyBub3QgbGVnYWwuCi0gICAgCisKICAgICB2b2lkIGxvYWRGcm9tVExT
MzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOwpAQCAtMzYxNCw2ICszNjE0LDM0IEBAIHB1Ymxp
YzoKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgZHN0KTsKICAgICAgICAgbG9hZDY0
KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOwogICAgIH0KKworICAgIHN0YXRpYyBib29sIGxv
YWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlVG9UTFMzMihSZWdpc3RlcklEIHNy
YywgdWludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVChz
cmMgIT0gdG1wKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKHRtcCk7Cisg
ICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIHRtcCk7CisgICAgICAgIHN0b3JlMzIoc3Jj
LCBBZGRyZXNzKHRtcCwgb2Zmc2V0KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVUb1RM
UzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBSZWdp
c3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsK
KyAgICAgICAgQVNTRVJUKHNyYyAhPSB0bXApOworICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJ
RFJST19FTDAodG1wKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgdG1wKTsKKyAg
ICAgICAgc3RvcmU2NChzcmMsIEFkZHJlc3ModG1wLCBvZmZzZXQpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEZBU1RfVExT
X0pJVCkKICAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgKaW5kZXggMTViMjIwYy4uYjg2YzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzg2NCw2
ICszODY0LDIzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CiAgICAgfQorCisKKyAgICBzdGF0aWMg
Ym9vbCBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgc3RvcmVUb1RMUzMyKFJlZ2lz
dGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5n
cygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogI2VuZGlmCiAKICAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiYzM0YTBkLi4yMzQzZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CkBAIC0xNzA1LDcgKzE3MDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZyb21UTFM2NCh1
aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuZ3MoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIob2Zmc2V0LCBkc3QpOworICAgIH0KKworICAgIHZvaWQg
c3RvcmVUb1RMUzY0KFJlZ2lzdGVySUQgc3JjLCB1aW50MzJfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNyYywg
b2Zmc2V0KTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYTRjOGUzMi4uMzQzMDIyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yMzYwLDYgKzIz
NjAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01P
Vl9HdkV2LCBkc3QsIGFkZHIpOwogICAgIH0KIAorICAgIHZvaWQgbW92bF9ybShSZWdpc3RlcklE
IHNyYywgdWludDMyX3QgYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cEFkZHIoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkK
ICAgICB2b2lkIG1vdnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
QEAgLTIzODEsNiArMjM4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG1vdnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9WX0V2R3YsIHNyYywg
b2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2b2lkKiBhZGRyKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0VBWE92KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggYzRjYmUxOC4uNWE1NWI0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTE1MjExLDcgKzE1MjExLDcgQEAgdm9pZCB0
ZXN0V2FzbUFkZHJlc3MoKQogICAgICAgICBDSEVDS19FUShudW1Ub1N0b3JlLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgdGVzdEZhc3RUTFMoKQordm9pZCB0ZXN0RmFzdFRMU0xvYWQoKQogewogI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCiAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9U
RVNUSU5HX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4
YmVlZikpKTsKQEAgLTE1MjI2LDEzICsxNTIyNiwzNyBAQCB2b2lkIHRlc3RGYXN0VExTKCkKICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKICAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdU
Rl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7CiAgICAgICAgIH0pOwotICAgIAorCiAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBwYXRjaHBv
aW50KTsKICAgICAKICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPHVpbnRwdHJfdD4ocHJvYyks
IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhiZWVmKSk7CiAjZW5kaWYKIH0KIAordm9pZCB0ZXN0
RmFzdFRMU1N0b3JlKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMu
Z3BTY3JhdGNoKDApOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMHhkZWFkKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQuc3RvcmVUb1RMU1B0cihz
Y3JhdGNoLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSkpOworICAgICAgICB9
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdp
bigpKTsKKworICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7CisgICAgQ0hFQ0tfRVEoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9URVNU
SU5HX0tFWSkpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVhZCkpOworI2VuZGlmCit9CisK
IC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFueXRo
aW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7CkBAIC0xNjc2MCw3ICsxNjc4
NCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFdhc21Cb3Vu
ZHNDaGVjayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CiAgICAg
UlVOKHRlc3RXYXNtQWRkcmVzcygpKTsKICAgICAKLSAgICBSVU4odGVzdEZhc3RUTFMoKSk7Cisg
ICAgUlVOKHRlc3RGYXN0VExTTG9hZCgpKTsKKyAgICBSVU4odGVzdEZhc3RUTFNTdG9yZSgpKTsK
IAogICAgIGlmIChpc1g4NigpKSB7CiAgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVz
aW9uKElkZW50aXR5LCBJbnQ2NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXAp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDQ5
YzdmOWMuLjZiM2E2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2lu
Y2x1ZGUgIlR5cGVvZlR5cGUuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0
VExTLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjM0LDcgKzE2MzUsNDcgQEAgcHVibGlj
OgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5w
dXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNlbmRpZgotICAgIAorCisgICAgdm9pZCBs
b2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAg
ICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRF
WFRfS0VZKSwgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworICAgICAgICBs
b2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4dCwgZHN0KTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3Jl
V2FzbUNvbnRleHQoR1BSUmVnIHNyYykKKyAgICB7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICAg
ICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVY
VF9LRVkpKTsKKyNlbmRpZgorICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3
aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3NzMKKyAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKQorICAgIHsKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgICAgICByZXR1cm4gbG9hZEZy
b21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRz
TWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorICAgIHsKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgICAg
ICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRp
ZgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBWTSogbV92
bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKaW5kZXggNTYwMWI2NS4uN2RkYzZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2lu
Y2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTkyLDcgKzU5Myw3IEBAIHN0YXRp
YyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQogewogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0aGUgc3R1YnMg
ZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0aGVyZWZvcmUgdGhlIGFw
cHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2Ut
Pm1vZHVsZSgpOworICAgIHJldHVybiBsb2FkV2FzbUNvbnRleHQodm0pLT5tb2R1bGUoKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmlu
ZGV4IDlhNjU1MDYuLjA4NTdlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDEyLTIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEy
ICszMiwxMyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiTWF0aENvbW1vbi5o
IgotI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgi
CisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJT
cGVjaWFsaXplZFRodW5rSklULmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRl
ICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTExNTYsNyArMTE1Nyw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZt
KS0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjpl
cnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAppbmRleCBiMmVmODQzLi5kYTk5NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjksNyArNDI5LDggQEAgdHlwZWRlZiBjb25zdCBj
aGFyKiBvcHRpb25TdHJpbmc7CiAgICAgXAogICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHksIHRy
dWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdC4iKSBcCiAg
ICAgdihib29sLCBzaW11bGF0ZVdlYkFzc2VtYmx5TG93TWVtb3J5LCBmYWxzZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgdGhlIE1lbW9yeSBvYmplY3Qgd29uJ3QgbW1hcCB0aGUgZnVsbCAnbWF4aW11bScg
cmFuZ2UgYW5kIGluc3RlYWQgd2lsbCBhbGxvY2F0ZSB0aGUgbWluaW11bSByZXF1aXJlZCBhbW91
bnQuIikgXAotICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5LCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgYSAzMi1iaXQgYWRkcmVzcyBzcGFjZSB3
aXRoIGEgc2lnbmFsIGhhbmRsZXIgdG8gYm91bmRzIGNoZWNrIHdhc20gbWVtb3J5LiIpCisgICAg
dihib29sLCB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnksIHRydWUsIE5vcm1hbCwgIklmIHRydWUs
IHdlIHdpbGwgdHJ5IHRvIHVzZSBhIDMyLWJpdCBhZGRyZXNzIHNwYWNlIHdpdGggYSBzaWduYWwg
aGFuZGxlciB0byBib3VuZHMgY2hlY2sgd2FzbSBtZW1vcnkuIikgXAorICAgIHYoYm9vbCwgdXNl
V2ViQXNzZW1ibHlGYXN0VExTLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0
byB1c2UgZmFzdCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBpZiBhdmFpbGFibGUgb24gdGhlIGN1cnJl
bnQgcGxhdGZvcm0uIikKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwNjRkYjIwLi44NTExNTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNzcsNyArMTc3LDYgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAgICwgdG9w
Vk1FbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0Nh
bGxlcigpKQotICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlKG51bGxwdHIpCiAgICAgLCBt
X2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0
eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCAxNDQwODZkLi45ZDg2YWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTMxNSw3ICszMTUsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGEgdm9pZCosIGJlY2F1c2UgaXQgbWlnaHQgbm90IHBvaW50IHRvIGEg
Q2FsbEZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA0NDEKICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZSB7IG51bGxwdHIgfTsKLSAgICBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKyAgICAvLyBG
SVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKKyAgICBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIHdhc21Db250ZXh0IHsgbnVsbHB0ciB9OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0
YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3JTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKaW5kZXggOWVlZDE5NC4uZmFjNTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlSWYuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb21waWxlLmgiCkBAIC00OCw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUg
IlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgor
I2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIK
ICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5Lmgi
CkBAIC0yMjYsOSArMjI4LDM2IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQ
UjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOwogICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNb
bnVtVHlwZXNdOwotICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7CisgICAgVmFsdWUqIG1faW5z
dGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CiAKK3N0YXRpYyBWYWx1ZSogbG9hZFdhc21D
b250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpKTsKKyAgICBpZiAoQ0NhbGxIZWxwZXJzOjps
b2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2Fs
bEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Cisg
ICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAg
IH0pOworCisgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElkZW50aXR5
LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7Cit9CisKK3N0YXRpYyB2b2lkIHN0b3JlV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKK3sKKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKKyAgICBpZiAoQ0NhbGxIZWxwZXJz
OjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQorICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBb
Jl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxs
b3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0KHBhcmFt
c1swXS5ncHIoKSk7CisgICAgICAgIH0pOworfQorCiBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJh
dG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJv
Y2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlvbiogY29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpCiAgICAgOiBtX3ZtKHZt
KQogICAgICwgbV9pbmZvKGluZm8pCkBAIC0yNzAsOCArMjk5LDcgQEAgQjNJUkdlbmVyYXRvcjo6
QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9j
ZWR1cmUmIHAKIAogICAgIHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVwRnJhbWVJblByb2xv
Z3VlKCZjb21waWxhdGlvbi0+d2FzbUNhbGxlZU1vdmVMb2NhdGlvbiwgbV9wcm9jLCBPcmlnaW4o
KSwgbV9jdXJyZW50QmxvY2spOwogCi0gICAgbV9pbnN0YW5jZVZhbHVlID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
PihtX3Byb2MsIE9yaWdpbigpLCAmbV92bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKTsKKyAg
ICBtX2luc3RhbmNlVmFsdWUgPSBsb2FkV2FzbUNvbnRleHQobV9wcm9jLCBtX2N1cnJlbnRCbG9j
ayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBAIC0yODMsOCArMzExLDggQEAg
c3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFs
dWUqIGluc3RhbmNlLCBQcm9jZWR1cmUKIHsKICAgICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0gYmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkp
OwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJs
eUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCop
LCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoZGVjbHR5cGUodm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tZW1vcnkoKS0+bWVtb3J5
KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMg
c2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4
dCh2bSktPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJj
b2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihk
ZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwogICAg
IE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsKICAgICByZXN1bHQuYmFzZSA9IGJsb2NrLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBt
ZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mTWVtb3J5KCkpOwogICAg
IHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
SW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNl
dE9mU2l6ZSgpKTsKQEAgLTI5Miw5ICszMjAsOSBAQCBzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUg
Z2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKFZNJiB2bSwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUq
IGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQorc3RhdGljIHZv
aWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3QgTWVtb3J5SW5mb3JtYXRpb24m
IG1lbW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJs
b2NrKQogewotICAgIGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgaW5zdGFuY2UsIGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKTsKKyAgICBzdG9yZVdhc21D
b250ZXh0KHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CiAKICAgICBpZiAoISFtZW1vcnkpIHsKICAg
ICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0gJlBpbm5lZFJlZ2lz
dGVySW5mbzo6Z2V0KCk7CkBAIC0zOTUsNyArNDIzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKyAgICAgICAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7CiAgICAgICAgIEpT
V2ViQXNzZW1ibHlNZW1vcnkqIHdhc21NZW1vcnkgPSBpbnN0YW5jZS0+bWVtb3J5KCk7CiAKICAg
ICAgICAgaWYgKGRlbHRhIDwgMCkKQEAgLTQxNCw3ICs0NDIsNyBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
bV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSksCiAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFt
ZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOwogCi0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xv
YmFsU3RhdGUobV92bSwgbV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1f
Y3VycmVudEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8u
bWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KQEAgLTkwMSw3ICs5MjksNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUs
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5v
dGhlciBXZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBv
dXIgTWVtb3J5LgotICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX3ZtLCBt
X2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9uKTsKKyAg
ICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0
YW5jZVZhbHVlLCBtX3Byb2MsIGNvbnRpbnVhdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
cmVzdWx0ID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgbV9jdXJy
ZW50QmxvY2ssIE9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAgICAg
ICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CkBAIC05OTUsNyArMTAyMyw3
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSog
c2lnbmF0dXJlLCBTaWduYXR1cmVJbmRleCBzCiAgICAgICAgIH0pOwogCiAgICAgLy8gVGhlIGNh
bGwgY291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAv
IG9yIGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KLSAgICByZXN0b3JlV2ViQXNzZW1i
bHlHbG9iYWxTdGF0ZShtX3ZtLCBtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJv
YywgbV9jdXJyZW50QmxvY2spOworICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1f
aW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CiAK
ICAgICByZXR1cm4geyB9OwogfQpAQCAtMTAzNyw3ICsxMDY1LDcgQEAgdm9pZCBCM0lSR2VuZXJh
dG9yOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiBjb250cm9sU3RhY2ssIGNvbnN0
IEV4cHJlc3MKICAgICBkYXRhTG9nTG4oKTsKIH0KIAotc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dh
c21XcmFwcGVyKFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQs
IFdhc21JbnRlcm5hbEZ1bmN0aW9uJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1
cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQorc3RhdGljIHZvaWQgY3JlYXRlSlNU
b1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNt
SW50ZXJuYWxGdW5jdGlvbiYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbykKIHsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9
ICpjb21waWxhdGlvbkNvbnRleHQuanNFbnRyeXBvaW50SklUOwogCkBAIC0xMTY1LDcgKzExOTMs
NyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZtLCBDb21waWxhdGlv
bkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dAogCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsK
ICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVy
OwotICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLCBiYXNl
TWVtb3J5KTsKKyAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNlTWVtb3J5KTsKICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwogICAgICAgICBj
b25zdCBhdXRvJiBzaXplUmVncyA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyczsKICAgICAgICAg
QVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKQEAgLTEyMjcsNyArMTI1NSw3IEBAIEV4cGVj
dGVkPHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlKFZNJiB2bSwKICAgICAgICAgcmVzdWx0LT53YXNtRW50cnlwb2ludC5jYWxsZWVT
YXZlUmVnaXN0ZXJzID0gcHJvY2VkdXJlLmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICB9CiAK
LSAgICBjcmVhdGVKU1RvV2FzbVdyYXBwZXIodm0sIGNvbXBpbGF0aW9uQ29udGV4dCwgKnJlc3Vs
dCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAgICBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoY29tcGlsYXRp
b25Db250ZXh0LCAqcmVzdWx0LCBzaWduYXR1cmUsIGluZm8pOwogICAgIHJldHVybiBXVEZNb3Zl
KHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNw
cAppbmRleCBjYmIzZjk5Li5mYjY3NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDE2ICszNiwxNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIK
ICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxp
bmdDb252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNt
RXhjZXB0aW9uVHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiB0
eXBlZGVmIENDYWxsSGVscGVycyBKSVQ7CiAKLXN0YXRpYyB2b2lkIG1hdGVyaWFsaXplSW1wb3J0
SlNDZWxsKFZNKiB2bSwgSklUJiBqaXQsIHVuc2lnbmVkIGltcG9ydEluZGV4LCBHUFJSZWcgcmVz
dWx0KQorc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoSklUJiBqaXQsIHVuc2ln
bmVkIGltcG9ydEluZGV4LCBHUFJSZWcgcmVzdWx0KQogewotICAgIC8vIFdlJ3JlIGNhbGxpbmcg
b3V0IG9mIHRoZSBjdXJyZW50IFdlYkFzc2VtYmx5Lkluc3RhbmNlLCB3aGljaCBpcyBpZGVudGlm
aWVkIG9uIFZNLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qgb2YgYWxsIGl0cyBpbXBvcnQgZnVu
Y3Rpb25zLgotICAgIGppdC5sb2FkUHRyKCZ2bS0+dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLCBy
ZXN1bHQpOworICAgIC8vIFdlJ3JlIGNhbGxpbmcgb3V0IG9mIHRoZSBjdXJyZW50IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qgb2YgYWxsIGl0cyBpbXBvcnQg
ZnVuY3Rpb25zLgorICAgIGppdC5sb2FkV2FzbUNvbnRleHQocmVzdWx0KTsKICAgICBqaXQubG9h
ZFB0cihKSVQ6OkFkZHJlc3MocmVzdWx0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
SW1wb3J0RnVuY3Rpb24oaW1wb3J0SW5kZXgpKSwgcmVzdWx0KTsKIH0KIApAQCAtMTAxLDcgKzEw
Miw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8
Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKIAogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0p
OwotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0t
PnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZt
KS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25z
dHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dl
ZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsK
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJy
b3IpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1NCw3ICsyNTUsNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxM
aW5rSW5mb3MsCiAgICAgR1BSUmVnIGltcG9ydEpTQ2VsbEdQUlJlZyA9IEdQUkluZm86OnJlZ1Qw
OyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAgZm9yIHNsb3cgcGF0aCBiZWxvdy4KICAg
ICBBU1NFUlQoIXdhc21DQy5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KGltcG9ydEpTQ2VsbEdQ
UlJlZykpOwogCi0gICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwodm0sIGppdCwgaW1wb3J0SW5k
ZXgsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CisgICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoaml0
LCBpbXBvcnRJbmRleCwgaW1wb3J0SlNDZWxsR1BSUmVnKTsKIAogICAgIGppdC5zdG9yZTY0KGlt
cG9ydEpTQ2VsbEdQUlJlZywgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90Ojpj
YWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LnN0
b3JlMzIoSklUOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwgY2FsbGVlRnJhbWUu
d2l0aE9mZnNldChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKQEAgLTQyNiwxMyArNDI3LDEz
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvV2FzbShWTSogdm0sIHVuc2ln
bmVkIGltcG9ydEluZGV4KQogICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6bm9uUHJlc2Vy
dmVkTm9uQXJndW1lbnRHUFI7CiAKICAgICAvLyBCMydzIGNhbGwgY29kZWdlbiBlbnN1cmVzIHRo
YXQgdGhlIEpTQ2VsbCBpcyBhIFdlYkFzc2VtYmx5RnVuY3Rpb24uCi0gICAgbWF0ZXJpYWxpemVJ
bXBvcnRKU0NlbGwodm0sIGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOworICAgIG1hdGVyaWFs
aXplSW1wb3J0SlNDZWxsKGppdCwgaW1wb3J0SW5kZXgsIHNjcmF0Y2gpOwogCi0gICAgLy8gR2V0
IHRoZSBjYWxsZWUncyBXZWJBc3NlbWJseS5JbnN0YW5jZSBhbmQgc2V0IGl0IGFzIHZtLnRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZS4gVGhlIGNhbGxlciB3aWxsIHRha2UgY2FyZSBvZiByZXN0b3Jp
bmcgaXRzIG93biBJbnN0YW5jZS4KKyAgICAvLyBHZXQgdGhlIGNhbGxlZSdzIFdlYkFzc2VtYmx5
Lkluc3RhbmNlIGFuZCBzZXQgaXQgYXMgV2FzbUNvbnRleHQuIFRoZSBjYWxsZXIgd2lsbCB0YWtl
IGNhcmUgb2YgcmVzdG9yaW5nIGl0cyBvd24gSW5zdGFuY2UuCiAgICAgR1BSUmVnIGJhc2VNZW1v
cnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwogICAgIEFTU0VSVChiYXNlTWVtb3J5
ICE9IHNjcmF0Y2gpOwogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhzY3JhdGNoLCBXZWJB
c3NlbWJseUZ1bmN0aW9uOjpvZmZzZXRPZkluc3RhbmNlKCkpLCBiYXNlTWVtb3J5KTsgLy8gSW5z
dGFuY2UqLgotICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCAmdm0tPnRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSk7CisgICAgaml0LnN0b3JlV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CiAKICAg
ICAvLyBGSVhNRSB0aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXZWJBc3NlbWJs
eS5JbnN0YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxl
ZSdzIGJhc2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ODRjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3
dGYvRmFzdFRMUy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisg
ICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNpZmlj
X2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworI2VuZGlmCisgICAgLy8gRklYTUU6IFNh
dmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisgICAgcmV0dXJuIHZtLndhc21Db250ZXh0Owor
fQorCit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IGluc3RhbmNlKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19k
aXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2Up
KTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFs
bG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3Mwor
ICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1ZThh
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOworY2xhc3MgVk07
CisKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJik7Cit2b2lkIHN0
b3JlV2FzbUNvbnRleHQoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4
IDUwMmJiMTIuLmQxYTgwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJM
TEludFRodW5rcy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0u
aCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNp
bmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAg
LTEyMCwxMSArMTIxLDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBwcm90b0NhbGxGcmFt
ZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJl
bWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1
bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0gICAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gdm0udG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHdhc21GdW5j
dGlvbi0+aW5zdGFuY2UoKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFz
c2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOworICAgIHN0b3JlV2FzbUNvbnRl
eHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlv
bi0+aW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSA9PSBs
b2FkV2FzbUNvbnRleHQodm0pKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVu
dHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+anNFbnRyeXBvaW50KCksICZ2bSwgJnByb3RvQ2FsbEZy
YW1lKTsKLSAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBwcmV2SlNXZWJBc3NlbWJs
eUluc3RhbmNlOworICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHByZXZKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBzd2l0
Y2ggKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5o
CmluZGV4IDFiMjE0Y2UuLjAxNWZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMy
LDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CiBjbGFzcyBXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDViYmNmMDQuLjlmZTNiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTctMDMtMjQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYkFzc2VtYmx5OiBzdG9yZSBzdGF0ZSBpbiBUTFMgaW5zdGVhZCBvZiBvbiBWTQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmFzdFRM
Uy5oOiByZXNlcnZlIG9uZSBrZXkgZm9yIFdlYkFzc2VtYmx5LCBkZWxldGUgYSBidW5jaAorICAg
ICAgICBvZiBkZWFkIGNvZGUgd2hpY2ggY2xhbmcgY291bGRuJ3QgY29tcGlsZSAoaXQncyB2YWxp
ZCBHQ0MgYXNzZW1ibHkKKyAgICAgICAgd2hpY2ggTExWTSBkaXNsaWtlcykuCisKIDIwMTctMDMt
MjQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIxNDM1MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RUTFMuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaAppbmRleCA2M2Y4ODM5Li5iNDQzMjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgKKysrIGIvU291cmNlL1dURi93
dGYvRmFzdFRMUy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAj
aW5jbHVkZSA8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDQsNTIgKzQ1LDIwIEBAIG5hbWVzcGFjZSBX
VEYgewogLy8gYWNjaWRlbnRhbGx5IHVzZSB0aGUgc2FtZSBrZXkgZm9yIG1vcmUgdGhhbiBvbmUg
dGhpbmcuCiAKICNkZWZpbmUgV1RGX1RIUkVBRF9EQVRBX0tFWSBXVEZfRkFTVF9UTFNfS0VZMAor
I2RlZmluZSBXVEZfV0FTTV9DT05URVhUX0tFWSBXVEZfRkFTVF9UTFNfS0VZMQogI2RlZmluZSBX
VEZfVEVTVElOR19LRVkgV1RGX0ZBU1RfVExTX0tFWTMKIAogI2lmIEVOQUJMRShGQVNUX1RMU19K
SVQpCi0vLyBCZWxvdyBpcyB0aGUgY29kZSB0aGF0IHRoZSBKSVQgd2lsbCBlbWl0LgotCi0jaWYg
Q1BVKFg4Nl82NCkKLWlubGluZSB1aW50cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgb2Zmc2V0
KQotewotICAgIHVpbnRwdHJfdCByZXN1bHQ7Ci0gICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAi
bW92cSAlJWdzOiUxLCAlMCIKLSAgICAgICAgOiAiPXIiKHJlc3VsdCkKLSAgICAgICAgOiAiciIo
b2Zmc2V0KQotICAgICAgICA6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2Vs
aWYgQ1BVKEFSTTY0KQotaW5saW5lIHVpbnRwdHJfdCBsb2FkRmFzdFRMUyh1bnNpZ25lZCBwYXNz
ZWRPZmZzZXQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDsKLSAgICB1aW50cHRyX3Qgb2Zmc2V0
ID0gcGFzc2VkT2Zmc2V0OwotICAgIGFzbSB2b2xhdGlsZSgKLSAgICAgICAgIm1ycyAlMCwgVFBJ
RFJST19FTDBcblx0IgotICAgICAgICAiYW5kICUwLCAlMCwgIzB4ZmZmZmZmZmZmZmZmZmZmOFxu
XHQiCi0gICAgICAgICJsZHIgJTAsIFslMCwgJTFdIgotICAgICAgICA6ICI9ciIocmVzdWx0KQot
ICAgICAgICA6ICJyIihvZmZzZXQpCi0gICAgICAgIDogIm1lbW9yeSIpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0jZWxzZQotI2Vycm9yICJCYWQgYXJjaGl0ZWN0dXJlIgotI2VuZGlmCi0jZW5k
aWYgLy8gRU5BQkxFKEZBU1RfVExTX0pJVCkKLQogaW5saW5lIHVuc2lnbmVkIGZhc3RUTFNPZmZz
ZXRGb3JLZXkodW5zaWduZWQgbG9uZyBzbG90KQogewogICAgIHJldHVybiBzbG90ICogc2l6ZW9m
KHZvaWQqKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpm
YXN0VExTT2Zmc2V0Rm9yS2V5OwotCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLXVzaW5nIFdU
Rjo6bG9hZEZhc3RUTFM7Cit1c2luZyBXVEY6OmZhc3RUTFNPZmZzZXRGb3JLZXk7CiAjZW5kaWYK
IAogI2VuZGlmIC8vIEhBVkUoRkFTVF9UTFMpCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>