<?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>191443</bug_id>
          
          <creation_ts>2018-11-08 16:17:07 -0800</creation_ts>
          <short_desc>CSS Painting API should pass &apos;this&apos; correctly to paint callback, and repaint when properties change.</short_desc>
          <delta_ts>2019-04-25 09:23:15 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=197283</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190217</blocked>
    
    <blocked>192480</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1476716</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-08 16:17:07 -0800</bug_when>
    <thetext>CSS Painting API should pass &apos;this&apos; correctly to paint callback, and repaint when properties change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476767</commentid>
    <comment_count>1</comment_count>
      <attachid>354301</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-08 18:46:10 -0800</bug_when>
    <thetext>Created attachment 354301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476772</commentid>
    <comment_count>2</comment_count>
      <attachid>354303</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-08 19:16:21 -0800</bug_when>
    <thetext>Created attachment 354303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476779</commentid>
    <comment_count>3</comment_count>
      <attachid>354306</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-08 20:07:18 -0800</bug_when>
    <thetext>Created attachment 354306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476975</commentid>
    <comment_count>4</comment_count>
      <attachid>354306</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-09 10:23:18 -0800</bug_when>
    <thetext>Comment on attachment 354306
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Also, this patch makes sure that custon paint elements get repainted when properties that they care about get changed.

Typo: custom

&gt; Source/WebCore/bindings/js/JSDOMWrapper.cpp:38
&gt;  namespace WebCore {
&gt; +using namespace JSC;

We usually put a blank line between these.

&gt; Source/WebCore/rendering/style/RenderStyle.h:1877
&gt; +    std::unique_ptr&lt;HashSet&lt;String&gt;&gt; m_customPaintWatchProperties;

I wonder if you should &quot;using&quot; HashSet&lt;String&gt; to something like CustomPaintNameSet

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:56
&gt; -    if (!responsableDocument() || !responsableDocument()-&gt;domWindow())
&gt; +    if (!responsibleDocument() || !responsibleDocument()-&gt;domWindow())
&gt;          return 1.0;
&gt; -    return responsableDocument()-&gt;domWindow()-&gt;devicePixelRatio();
&gt; +    return responsibleDocument()-&gt;domWindow()-&gt;devicePixelRatio();

Very nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476983</commentid>
    <comment_count>5</comment_count>
      <attachid>354306</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-09 10:40:30 -0800</bug_when>
    <thetext>Comment on attachment 354306
Patch

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

&gt; Source/WebCore/platform/graphics/CustomPaintImage.h:59
&gt; +    JSC::Strong&lt;JSC::JSObject&gt; m_paintConstructor;

Why is it OK to use JSC::Strong here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476988</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-09 10:45:16 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 354306 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354306&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/CustomPaintImage.h:59
&gt; &gt; +    JSC::Strong&lt;JSC::JSObject&gt; m_paintConstructor;
&gt; 
&gt; Why is it OK to use JSC::Strong here?

It is created in JS and provided by the user, so it shouldn&apos;t have any references back, right? It is passed to the bindings in PaintWorkletGlobalScope::registerPaint as a Strong&lt;&gt;, so I assumed that it was fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476991</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-09 10:48:46 -0800</bug_when>
    <thetext>(In reply to Justin Michaud from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; Comment on attachment 354306 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=354306&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/CustomPaintImage.h:59
&gt; &gt; &gt; +    JSC::Strong&lt;JSC::JSObject&gt; m_paintConstructor;
&gt; &gt; 
&gt; &gt; Why is it OK to use JSC::Strong here?
&gt; 
&gt; It is created in JS and provided by the user, so it shouldn&apos;t have any
&gt; references back, right? It is passed to the bindings in
&gt; PaintWorkletGlobalScope::registerPaint as a Strong&lt;&gt;, so I assumed that it
&gt; was fine.

It is very easy for JS to pass us an object which refers to one of our implementation wrappers, thus keeping it alive. If our implementation uses a JSStrong then we potentially create a cycle and a leak. This is why we do not use JSStrong in our implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477032</commentid>
    <comment_count>8</comment_count>
      <attachid>354306</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-09 11:56:20 -0800</bug_when>
    <thetext>Comment on attachment 354306
Patch

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

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:112
&gt; +    JSC::JSLockHolder lock(vm);

Please do this before declaring throw scope and getting the global object

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:116
&gt; +    JSC::JSValue thisObject = { JSC::construct(&amp;state, { m_paintConstructor.get() }, noArgs, &quot;Failed to construct paint class&quot;) };

Why { }?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477098</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-11-09 14:14:29 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Justin Michaud from comment #6)
&gt; &gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; Comment on attachment 354306 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=354306&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/CustomPaintImage.h:59
&gt; &gt; &gt; &gt; +    JSC::Strong&lt;JSC::JSObject&gt; m_paintConstructor;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why is it OK to use JSC::Strong here?
&gt; &gt; 
&gt; &gt; It is created in JS and provided by the user, so it shouldn&apos;t have any
&gt; &gt; references back, right? It is passed to the bindings in
&gt; &gt; PaintWorkletGlobalScope::registerPaint as a Strong&lt;&gt;, so I assumed that it
&gt; &gt; was fine.
&gt; 
&gt; It is very easy for JS to pass us an object which refers to one of our
&gt; implementation wrappers, thus keeping it alive. If our implementation uses a
&gt; JSStrong then we potentially create a cycle and a leak. This is why we do
&gt; not use JSStrong in our implementation.

That’s right. This use of JSC::Strong is not OK.

We can, and should, create a test case demonstrating that this leads to a reference cycle and a memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477856</commentid>
    <comment_count>10</comment_count>
      <attachid>354629</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-12 19:38:04 -0800</bug_when>
    <thetext>Created attachment 354629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477859</commentid>
    <comment_count>11</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-12 19:41:18 -0800</bug_when>
    <thetext>I fixed two leaks that caused the WorkletGlobalScope to never be destroyed, and added a leak test. I also moved the new RenderStyle properties to a side table, so hopefully this shouldn&apos;t cause any performance regressions.

(In reply to Saam Barati from comment #8)
&gt; &gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:116
&gt; &gt; +    JSC::JSValue thisObject = { JSC::construct(&amp;state, { m_paintConstructor.get() }, noArgs, &quot;Failed to construct paint class&quot;) };
&gt; 
&gt; Why { }?

It needs to turn the JSObject* into a JSValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477860</commentid>
    <comment_count>12</comment_count>
      <attachid>354629</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 19:41:33 -0800</bug_when>
    <thetext>Comment on attachment 354629
Patch

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

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:61
&gt; +    if (!m_element || !m_element-&gt;element() || !m_paintConstructor || !m_paintCallback)

This feels super weird. Why is this constructor a weak pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477861</commentid>
    <comment_count>13</comment_count>
      <attachid>354629</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 19:42:00 -0800</bug_when>
    <thetext>Comment on attachment 354629
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:61
&gt;&gt; +    if (!m_element || !m_element-&gt;element() || !m_paintConstructor || !m_paintCallback)
&gt; 
&gt; This feels super weird. Why is this constructor a weak pointer?

Same w/ the callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477864</commentid>
    <comment_count>14</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-12 19:43:46 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #13)
&gt; Comment on attachment 354629 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354629&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:61
&gt; &gt;&gt; +    if (!m_element || !m_element-&gt;element() || !m_paintConstructor || !m_paintCallback)
&gt; &gt; 
&gt; &gt; This feels super weird. Why is this constructor a weak pointer?
&gt; 
&gt; Same w/ the callback

The worklet global scope keeps the callback alive. The image might get cached, so Chris suggested it should take a weak ptr. This also means that I don&apos;t have to keep track of all of the CustomPaintImages to clear their strong references in Document::prepareForDestruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477865</commentid>
    <comment_count>15</comment_count>
      <attachid>354629</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 19:46:17 -0800</bug_when>
    <thetext>Comment on attachment 354629
Patch

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

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:122
&gt; +    auto result = m_paintCallback-&gt;handleEvent(WTFMove(thisObject), *context, size, propertyMap, m_arguments);

I think your code is suffering from TOCTOU bug here. It&apos;s totally conceivable your constructor will cause the collection of your m_painCallback. If you really want these to be weak, you need to assign them into local variables in this function. You can&apos;t repeatedly load the fields from memory (conservative GC is not guaranteed to see them).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477866</commentid>
    <comment_count>16</comment_count>
      <attachid>354629</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 19:48:31 -0800</bug_when>
    <thetext>Comment on attachment 354629
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:122
&gt;&gt; +    auto result = m_paintCallback-&gt;handleEvent(WTFMove(thisObject), *context, size, propertyMap, m_arguments);
&gt; 
&gt; I think your code is suffering from TOCTOU bug here. It&apos;s totally conceivable your constructor will cause the collection of your m_painCallback. If you really want these to be weak, you need to assign them into local variables in this function. You can&apos;t repeatedly load the fields from memory (conservative GC is not guaranteed to see them).

Oh sorry, I was thinking m_paintCallbac was a JSCell. It appears not to be. Ignore me here. Though it&apos;s generally go practice when dealing with a Weak&lt;SomeKindOfJSCell&gt; to store it in a local variable, and test that for nulllness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477867</commentid>
    <comment_count>17</comment_count>
      <attachid>354629</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 19:49:08 -0800</bug_when>
    <thetext>Comment on attachment 354629
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:61
&gt;&gt;&gt;&gt; +    if (!m_element || !m_element-&gt;element() || !m_paintConstructor || !m_paintCallback)
&gt;&gt;&gt; 
&gt;&gt;&gt; This feels super weird. Why is this constructor a weak pointer?
&gt;&gt; 
&gt;&gt; Same w/ the callback
&gt; 
&gt; The worklet global scope keeps the callback alive. The image might get cached, so Chris suggested it should take a weak ptr. This also means that I don&apos;t have to keep track of all of the CustomPaintImages to clear their strong references in Document::prepareForDestruction.

What keeps m_paintConstructor alive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477868</commentid>
    <comment_count>18</comment_count>
      <attachid>354629</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 19:50:03 -0800</bug_when>
    <thetext>Comment on attachment 354629
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:122
&gt;&gt;&gt; +    auto result = m_paintCallback-&gt;handleEvent(WTFMove(thisObject), *context, size, propertyMap, m_arguments);
&gt;&gt; 
&gt;&gt; I think your code is suffering from TOCTOU bug here. It&apos;s totally conceivable your constructor will cause the collection of your m_painCallback. If you really want these to be weak, you need to assign them into local variables in this function. You can&apos;t repeatedly load the fields from memory (conservative GC is not guaranteed to see them).
&gt; 
&gt; Oh sorry, I was thinking m_paintCallbac was a JSCell. It appears not to be. Ignore me here. Though it&apos;s generally go practice when dealing with a Weak&lt;SomeKindOfJSCell&gt; to store it in a local variable, and test that for nulllness.

typo:
&quot;go practice&quot; =&gt; &quot;good practice&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477869</commentid>
    <comment_count>19</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-12 19:51:42 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #17)
&gt; Comment on attachment 354629 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354629&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:61
&gt; &gt;&gt;&gt;&gt; +    if (!m_element || !m_element-&gt;element() || !m_paintConstructor || !m_paintCallback)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; This feels super weird. Why is this constructor a weak pointer?
&gt; &gt;&gt; 
&gt; &gt;&gt; Same w/ the callback
&gt; &gt; 
&gt; &gt; The worklet global scope keeps the callback alive. The image might get cached, so Chris suggested it should take a weak ptr. This also means that I don&apos;t have to keep track of all of the CustomPaintImages to clear their strong references in Document::prepareForDestruction.
&gt; 
&gt; What keeps m_paintConstructor alive?

The PaintworkletGlobalScope paint definition map does. Although to avoid TOCTTOU, should I be storing the JSObject in a local variable before doing the check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477880</commentid>
    <comment_count>20</comment_count>
      <attachid>354636</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-12 20:19:05 -0800</bug_when>
    <thetext>Created attachment 354636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477891</commentid>
    <comment_count>21</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 21:00:36 -0800</bug_when>
    <thetext>(In reply to Justin Michaud from comment #19)
&gt; (In reply to Saam Barati from comment #17)
&gt; &gt; Comment on attachment 354629 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=354629&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:61
&gt; &gt; &gt;&gt;&gt;&gt; +    if (!m_element || !m_element-&gt;element() || !m_paintConstructor || !m_paintCallback)
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; This feels super weird. Why is this constructor a weak pointer?
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Same w/ the callback
&gt; &gt; &gt; 
&gt; &gt; &gt; The worklet global scope keeps the callback alive. The image might get cached, so Chris suggested it should take a weak ptr. This also means that I don&apos;t have to keep track of all of the CustomPaintImages to clear their strong references in Document::prepareForDestruction.
&gt; &gt; 
&gt; &gt; What keeps m_paintConstructor alive?
&gt; 
&gt; The PaintworkletGlobalScope paint definition map does. Although to avoid
&gt; TOCTTOU, should I be storing the JSObject in a local variable before doing
&gt; the check?

Why would that map keep it alive and we also have a Weak&lt;&gt; to it? If the map keeps it alive why will this check ever fail?

To avoid TOCTOU (which I don&apos;t think you have anymore), you should assign it to a local variable instead of keeping it in memory. No need for strong. A local variable will be scanned by the conservative GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477894</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-12 21:03:32 -0800</bug_when>
    <thetext>What am I missing? I don&apos;t see how that map keeps alive the m_paintConstructor...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477898</commentid>
    <comment_count>23</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-12 21:11:01 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #21)
&gt; Why would that map keep it alive and we also have a Weak&lt;&gt; to it? If the map
&gt; keeps it alive why will this check ever fail?

I think I understand what you mean now. The map (PaintWorkletGlobalScope.h:51) has a JSC Strong&lt;JSObject&gt; to hold the paint constructor. This will keep the constructor JSObject alive up until document has prepareForDestruction called. Once prepareForDestruction is called, it will die, but it is fine that the image does not paint correctly. If the image kept the paint constructor alive, then if ever the image could be referenced from the JS code (such as the typed om), I suspect it could create a reference cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478019</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-11-13 09:18:44 -0800</bug_when>
    <thetext>If this is a typical example of the DOM needing to hold a reference to an arbitrary JavaScript object, then the correct alternative to Strong&lt;&gt; is not Weak&lt;&gt;, it is JSValueInWrappedObject.

It’s not trivial to use JSValueInWrappedObject correctly, but it’s designed for this sort of situation. Search for classes that use it for examples of how it works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478289</commentid>
    <comment_count>25</comment_count>
      <attachid>354758</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-13 19:41:13 -0800</bug_when>
    <thetext>Created attachment 354758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478296</commentid>
    <comment_count>26</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-13 19:53:53 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #24)
&gt; If this is a typical example of the DOM needing to hold a reference to an
&gt; arbitrary JavaScript object, then the correct alternative to Strong&lt;&gt; is not
&gt; Weak&lt;&gt;, it is JSValueInWrappedObject.
&gt; 
&gt; It’s not trivial to use JSValueInWrappedObject correctly, but it’s designed
&gt; for this sort of situation. Search for classes that use it for examples of
&gt; how it works.

I am not sure what benefit JSValueInWrappedObject provides in this case. 

I changed the strong to use a Raw pointer based off Saam&apos;s advice, since Weak is not safe to use after the vm has been destroyed. JSPaintWorkletGlobalScope now visits the pointer, and is itself kept alive by the Strong in WorkletScriptController. Now, the ownership looks like this:

Document has a Ref to PaintWorkletGlobalScope. PaintWorkletGlobalScope is a WorkletGlobalScope. WorkletGlobalScope has a WorkletScriptController, which has a VM and a JSC::Strong pointing to the wrapper JSPaintWorkletGlobalScope (a JSWorkletGlobalScope). 

JSPaintWorkletGlobalScope visits the paint constructors to keep them alive. They are stored in a PaintDefinition in the paintDefinitionMap inside PaintWorkletGlobalScope. CustomPaintImage has a WeakPtr to its PaintDefinition.

In prepareForDestruction, we clear the paint definition map and then destroy the WorkletScriptController, which takes the vm and strong JSWorkletGlobalScope with it. There is a test that confirms that there are no memory leaks.

In theory, the VM does not need to be destroyed to remove the reference cycle. If the strong JSWorkletGlobalScope is gone, then the WorkletGlobalScope cannot visit any of the constructors. There seems to be no other way for the user to keep a reference to the JSPaintWorkletGlobalScope, so I suspect that if we called the gc enough times, eventually the WorkletGlobalScope would be freed. I have not confirmed this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478462</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-11-14 09:09:16 -0800</bug_when>
    <thetext>Sounds fine. I think the best way to prove this works is with tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478508</commentid>
    <comment_count>28</comment_count>
      <attachid>354829</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-14 10:22:16 -0800</bug_when>
    <thetext>Created attachment 354829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478696</commentid>
    <comment_count>29</comment_count>
      <attachid>354829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-14 16:51:38 -0800</bug_when>
    <thetext>Comment on attachment 354829
Patch

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

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:86
&gt; +    bool hasCustomPaintWatchProperties;

Is it really OK to increase the size of RenderStyle? Clearly we care about its size given the static_assert.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:157
&gt; +        m_hasCustomPaintWatchProperties = true;

Is this flag just to avoid a HashMap lookup?

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:180
&gt; +    if (other.m_hasCustomPaintWatchProperties) {

What if this-&gt;m_hasCustomPaintWatchProperties is true, shouldn&apos;t use remove this from customPaintWatchedPropertiesMap()?

You would have potentially found this bug if you had an assertion whenever you call customPaintWatchedPropertiesMap().add() to make sure we added new entry.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1052
&gt; +        customPaintWatchedPropertiesMap().add(this, std::make_unique&lt;HashSet&lt;String&gt;&gt;());

We use HashMap::ensure() to make sure we avoid expensive operations such as std::make_unique&lt;HashSet&lt;String&gt;&gt;() when the key already exists.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:49
&gt; +    struct PaintDefinition : public CanMakeWeakPtr&lt;PaintDefinition&gt; {

struct PaintDefinition : public CanMakeWeakPtr&lt;PaintDefinition&gt; {
WTF_MAKE_FAST_ALLOCATED;
public:

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:57
&gt; +        PaintDefinition(const AtomicString&amp; name, JSC::JSObject* paintConstructor, Ref&lt;CSSPaintCallback&gt;&amp;&amp;, Vector&lt;String&gt;&amp;&amp; inputProperties, Vector&lt;String&gt; inputArguments);

This usually comes *before* the members.

Vector&lt;String&gt; should not be passed by value.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:77
&gt; +        auto locker = holdLock(paintDefinitionLock());

#if !ASSERT_DISABLED
before this.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:78
&gt; +        ASSERT(paintDefinitionMap().isEmpty());

#endif
after this. to avoid locking when assertions are disabled.

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:55
&gt; +    , m_identifier(generateObjectIdentifier&lt;WorkletGlobalScopeIdentifierType&gt;())

What is this identifier used for? If it is only a key in the HashMap, we could presumably store |this| as key?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478697</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-14 16:52:23 -0800</bug_when>
    <thetext>+Antti, I think he should definitely take a look at the RenderStyle changes as I am worried about the performance implications (memory and runtime).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478701</commentid>
    <comment_count>31</comment_count>
      <attachid>354829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-14 16:56:20 -0800</bug_when>
    <thetext>Comment on attachment 354829
Patch

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

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:52
&gt; +        JSC::JSObject* paintConstructor;

JSC::JSObject* paintConstructor { nullptr };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478751</commentid>
    <comment_count>32</comment_count>
      <attachid>354829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-14 19:32:02 -0800</bug_when>
    <thetext>Comment on attachment 354829
Patch

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

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:165
&gt; +RenderStyle&amp; RenderStyle::operator=(RenderStyle&amp;&amp; other)

This should probably check for self assignment and return early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479242</commentid>
    <comment_count>33</comment_count>
      <attachid>355015</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-15 20:09:03 -0800</bug_when>
    <thetext>Created attachment 355015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479244</commentid>
    <comment_count>34</comment_count>
      <attachid>355016</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-15 20:25:35 -0800</bug_when>
    <thetext>Created attachment 355016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479247</commentid>
    <comment_count>35</comment_count>
      <attachid>355019</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-15 20:38:40 -0800</bug_when>
    <thetext>Created attachment 355019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479276</commentid>
    <comment_count>36</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-15 22:19:31 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #29)
&gt; &gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:55
&gt; &gt; +    , m_identifier(generateObjectIdentifier&lt;WorkletGlobalScopeIdentifierType&gt;())
&gt; 
&gt; What is this identifier used for? If it is only a key in the HashMap, we
&gt; could presumably store |this| as key?

I didn&apos;t do this yet, I will handle it tomorrow.

About the size of RenderStyle: There are currently 3 bytes of padding, but they are between the two bitfield structs, so I can&apos;t just move my bool there. I could add my bool as a flag to inheritedFlags, although I would need to override the operators to make sure it doesn&apos;t act like any of the other flags.

In the current patch, I added #pragma pack to RenderStyle. Assuming everything compiles correctly, this brings RenderStyle from 88 to 86 bytes. I don&apos;t think the unaligned accesses will be a perf problem, since it is all around the bitfields anyway, but I am not sure. If this works though, I think it is a cleaner long-term solution. 

Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479598</commentid>
    <comment_count>37</comment_count>
      <attachid>355111</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-16 13:48:24 -0800</bug_when>
    <thetext>Created attachment 355111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479604</commentid>
    <comment_count>38</comment_count>
      <attachid>355114</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-16 13:59:22 -0800</bug_when>
    <thetext>Created attachment 355114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480556</commentid>
    <comment_count>39</comment_count>
      <attachid>355114</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-20 11:43:26 -0800</bug_when>
    <thetext>Comment on attachment 355114
Patch

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

Reviewing this while everyone else is on a break. They should double check when they come back.

&gt; Source/WebCore/ChangeLog:13
&gt; +        This class adds a new member to RenderStyle. To stop this from increasing the size of RenderStyle, this patch uses #pragma pack
&gt; +        to pack RenderStyle, shrinking it from 88 bytes to 86.

I&apos;m r+ing this, but Antti should confirm this is ok.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:87
&gt; +static_assert(sizeof(RenderStyle) &lt;= sizeof(SameSizeAsRenderStyle), &quot;RenderStyle should stay small&quot;);

Don&apos;t we normally change SameSizeAsRenderStyle? I guess this would allow it to grow in the future, as long as we never exceed that value.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:155
&gt; +        auto isNew = customPaintWatchedPropertiesMap().add(this, std::make_unique&lt;HashSet&lt;String&gt;&gt;(WTFMove(*customPaintWatchedPropertiesMap().get(&amp;other))));

Even though you are always expecting this to create a new entry, I think you should use .ensure() anyway.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:186
&gt; +        auto isNew = customPaintWatchedPropertiesMap().add(this, std::make_unique&lt;HashSet&lt;String&gt;&gt;(WTFMove(*customPaintWatchedPropertiesMap().get(&amp;other))));

Same here.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:275
&gt; +        auto isNew = customPaintWatchedPropertiesMap().add(this, std::make_unique&lt;HashSet&lt;String&gt;&gt;(*customPaintWatchedPropertiesMap().get(&amp;other)));
&gt; +        ASSERT_UNUSED(isNew, isNew);

And here.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:297
&gt; +        auto isNew = customPaintWatchedPropertiesMap().add(this, std::make_unique&lt;HashSet&lt;String&gt;&gt;(WTFMove(*customPaintWatchedPropertiesMap().get(&amp;a))));
&gt; +        ASSERT_UNUSED(isNew, isNew);

Ditto.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1064
&gt; +        auto isNew = customPaintWatchedPropertiesMap().add(this, std::make_unique&lt;HashSet&lt;String&gt;&gt;());

And one more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480693</commentid>
    <comment_count>40</comment_count>
      <attachid>355114</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-21 00:19:18 -0800</bug_when>
    <thetext>Comment on attachment 355114
Patch

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

Please put RenderStyle related changes to a separate patch.

&gt; Source/WebCore/rendering/style/RenderStyle.h:1890
&gt; +#if ENABLE(CSS_PAINTING_API)
&gt; +    bool m_hasCustomPaintWatchProperties { false };
&gt; +#endif

I don&apos;t see any reason why this bit is super special and needs to be in the RenderStyle, necessitating custom copy constructors, operator== etc.

It should go to one of the substructures, probably RareNonInheritedData. There is already StyleCustomPropertyData instance there, so maybe that is the place? Also you don&apos;t need to use bit-and-side-hash approach. You can just put the hash there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482676</commentid>
    <comment_count>41</comment_count>
      <attachid>355920</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-28 14:44:05 -0800</bug_when>
    <thetext>Created attachment 355920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483106</commentid>
    <comment_count>42</comment_count>
      <attachid>355920</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 13:01:22 -0800</bug_when>
    <thetext>Comment on attachment 355920
Patch

Clearing flags on attachment: 355920

Committed r238686: &lt;https://trac.webkit.org/changeset/238686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483107</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 13:01:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483109</commentid>
    <comment_count>44</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-29 13:03:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/46351466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483673</commentid>
    <comment_count>45</comment_count>
      <attachid>355920</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-11-30 12:39:17 -0800</bug_when>
    <thetext>Comment on attachment 355920
Patch

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

I looked this over and had a few thoughts.

Might be worth considering using AtomicString for property names instead of just String.

&gt; Source/WebCore/bindings/js/JSDOMWrapper.cpp:38
&gt; +using namespace JSC;

Could we add explicit &quot;JSC::&quot; prefixes in this file instead adding the &quot;using namespace&quot;? Or remove the explicit prefixes that are already present below? It seems inelegant to do a seemingly random combination of both.

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:131
&gt; +    ASSERT(workletGlobalScope.script());

Why is it safe to assert this? What guarantees it won’t be null?

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:133
&gt;      ASSERT(contextWrapper);

Same question.

&gt; Source/WebCore/css/CSSPaintCallback.h:34
&gt; +#include &lt;JavaScriptCore/JSCJSValue.h&gt;

We typically don’t need to include a header just to mention a typename in a function declaration. A forward declaration is typically sufficient:

    namespace JSC {
    class JSValue;
    }

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:485
&gt; +        return downcast&lt;WorkletGlobalScope&gt;(*this).script()-&gt;vm();

What guarantees this won’t be null?

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:63
&gt; +    JSC::JSValue paintConstructor(m_paintDefinition-&gt;paintConstructor);

It’s a little strange to use the () syntax here instead of just &quot;=&quot;.

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:68
&gt; +    auto&amp; paintCallback = m_paintDefinition-&gt;paintCallback.get();

I don’t understand why we need this local variable here. Can’t we just write this expression below when setting up &quot;callback&quot;?

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:121
&gt; +    JSC::ArgList noArgs;
&gt; +    JSC::JSValue thisObject = { JSC::construct(&amp;state, WTFMove(paintConstructor), noArgs, &quot;Failed to construct paint class&quot;) };

The use of WTFMove here seems excessive. JSValue has a trivial copy constructor so there should be no value in moving paintConstructor.

Can this be done by passing { } instead of noArgs?

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:128
&gt; +    auto result = paintCallback.handleEvent(WTFMove(thisObject), *context, size, propertyMap, m_arguments);

The use of WTFMove here seems excessive. JSValue has a trivial copy constructor so there should be no value in moving thisObject.

&gt; Source/WebCore/platform/graphics/CustomPaintImage.h:32
&gt; +#include &lt;JavaScriptCore/JSObject.h&gt;

Why does JSObject.h need to be included here?

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1035
&gt; +#if ENABLE(CSS_PAINTING_API)
&gt; +    auto* propertiesA = m_rareNonInheritedData.ptr()-&gt;customPaintWatchedProperties.get();
&gt; +    auto* propertiesB = other.m_rareNonInheritedData.ptr()-&gt;customPaintWatchedProperties.get();
&gt; +
&gt; +    if (UNLIKELY(propertiesA || propertiesB)) {
&gt; +        // FIXME: We should not need to use ComputedStyleExtractor here.
&gt; +        ComputedStyleExtractor extractor((Element*) nullptr);
&gt; +
&gt; +        for (auto* watchPropertiesMap : { propertiesA, propertiesB }) {
&gt; +            if (!watchPropertiesMap)
&gt; +                continue;
&gt; +
&gt; +            for (auto&amp; name : *watchPropertiesMap) {
&gt; +                RefPtr&lt;CSSValue&gt; valueA;
&gt; +                RefPtr&lt;CSSValue&gt; valueB;
&gt; +                if (isCustomPropertyName(name) &amp;&amp; getCustomProperty(name) &amp;&amp; other.getCustomProperty(name)) {
&gt; +                    valueA = CSSCustomPropertyValue::create(*getCustomProperty(name));
&gt; +                    valueB = CSSCustomPropertyValue::create(*other.getCustomProperty(name));
&gt; +                } else {
&gt; +                    CSSPropertyID propertyID = cssPropertyID(name);
&gt; +                    if (!propertyID)
&gt; +                        continue;
&gt; +                    valueA = extractor.valueForPropertyinStyle(*this, propertyID);
&gt; +                    valueB = extractor.valueForPropertyinStyle(other, propertyID);
&gt; +                }
&gt; +
&gt; +                if ((valueA &amp;&amp; !valueB) || (!valueA &amp;&amp; valueB))
&gt; +                    return true;
&gt; +
&gt; +                if (!valueA)
&gt; +                    continue;
&gt; +
&gt; +                if (!(*valueA == *valueB))
&gt; +                    return true;
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +#endif

This seems like it should be factored out into a function. It’s bigger than the rest of RenderStyle::changeRequiresRepaint and the rest follows a pattern where there is not so much code here. I’m also wondering why this is not handled inside the rareNonInheritedDataChangeRequiresRepaint function.

Is there a way we can do these checks with less memory allocation and deallocation?

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:145
&gt; +    if (responsibleDocument() &amp;&amp; responsibleDocument()-&gt;renderView())
&gt; +        responsibleDocument()-&gt;renderView()-&gt;repaintRootContents();

I think this needs a &quot;why&quot; comment. It’s not so obvious why this would be needed that we can just do it without explaining the reason.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:54
&gt; +        // This map must be cleared before the vm is destroyed!
&gt; +        JSC::JSObject* paintConstructor { nullptr };

Slightly confusing wording. Since paintConstructor is not a map, nor is PaintDefinition.

Of course I assume this comment is about paintDefinitionMap, and I think it should be worded more precisely. Having that comment here isn’t all that helpful even if it’s the presence of this pointer that motivates the need to clear the map. Because I wouldn&apos;t expect the person making the avoidable mistake to be reading this line of code.

Why is the paintConstructor the only non-const member of PaintDefinition? I think the pattern of making all data members const is a little strange, but it’s even stranger to have all but one even when we have no plans to change that one. I would either write JSC::JSObject* const, or consider abandoning the &quot;intrinsically const&quot; property of PaintDefinition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483704</commentid>
    <comment_count>46</comment_count>
      <attachid>355920</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-30 13:29:26 -0800</bug_when>
    <thetext>Comment on attachment 355920
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSDOMWrapper.cpp:38
&gt;&gt; +using namespace JSC;
&gt; 
&gt; Could we add explicit &quot;JSC::&quot; prefixes in this file instead adding the &quot;using namespace&quot;? Or remove the explicit prefixes that are already present below? It seems inelegant to do a seemingly random combination of both.

I added that to fix compilation errors from unified sources. It sounds like a nice thing to clean up in a separate patch. I guess the file was originally supposed to use the prefix, but some code got checked in that didn&apos;t because the unified sources allowed it to compile.

&gt;&gt; Source/WebCore/css/CSSPaintCallback.h:34
&gt;&gt; +#include &lt;JavaScriptCore/JSCJSValue.h&gt;
&gt; 
&gt; We typically don’t need to include a header just to mention a typename in a function declaration. A forward declaration is typically sufficient:
&gt; 
&gt;     namespace JSC {
&gt;     class JSValue;
&gt;     }

I will try removing it to see if it works now. Originally this was because the derived sources need to include it, but there is no easy way to change them.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:485
&gt;&gt; +        return downcast&lt;WorkletGlobalScope&gt;(*this).script()-&gt;vm();
&gt; 
&gt; What guarantees this won’t be null?

The only time when script() is null is after document tries to destroy it. Assuming the code is correct, no JS that could reference the WorkletGlobalScope should execute at that point, and there should not be any strong references to the WorkletGlobalScope remaining in the c++ code. As far as I can tell, if this is null then it is definitely a bug and should crash. Either way, it is not clear what the correct return value would be if script was null, since that means the vm has been destroyed.

&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:121
&gt;&gt; +    JSC::JSValue thisObject = { JSC::construct(&amp;state, WTFMove(paintConstructor), noArgs, &quot;Failed to construct paint class&quot;) };
&gt; 
&gt; The use of WTFMove here seems excessive. JSValue has a trivial copy constructor so there should be no value in moving paintConstructor.
&gt; 
&gt; Can this be done by passing { } instead of noArgs?

JSC::construct takes an lvalue for some reason.

&gt;&gt; Source/WebCore/platform/graphics/CustomPaintImage.h:32
&gt;&gt; +#include &lt;JavaScriptCore/JSObject.h&gt;
&gt; 
&gt; Why does JSObject.h need to be included here?

Same as above. I will see if it works now with a forward declaration, but I originally did it because of bindings.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1035
&gt;&gt; +#endif
&gt; 
&gt; This seems like it should be factored out into a function. It’s bigger than the rest of RenderStyle::changeRequiresRepaint and the rest follows a pattern where there is not so much code here. I’m also wondering why this is not handled inside the rareNonInheritedDataChangeRequiresRepaint function.
&gt; 
&gt; Is there a way we can do these checks with less memory allocation and deallocation?

We shouldn&apos;t need to do any, if we can ever get rid of ComputedStyleExtractor. I used ComputedStyleExtractor here because I did not want to maintain another huge switch statement, but in the future we could probably refactor most of the code from ComputedStyleExtractor to be shared.

&gt;&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:145
&gt;&gt; +        responsibleDocument()-&gt;renderView()-&gt;repaintRootContents();
&gt; 
&gt; I think this needs a &quot;why&quot; comment. It’s not so obvious why this would be needed that we can just do it without explaining the reason.

Good idea. If we don&apos;t do it, then custom paint elements remain on the page as invalid images, instead of using the new paint definition. I will add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483710</commentid>
    <comment_count>47</comment_count>
      <attachid>355920</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-30 13:44:47 -0800</bug_when>
    <thetext>Comment on attachment 355920
Patch

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

&gt;&gt;&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.cpp:145
&gt;&gt;&gt; +        responsibleDocument()-&gt;renderView()-&gt;repaintRootContents();
&gt;&gt; 
&gt;&gt; I think this needs a &quot;why&quot; comment. It’s not so obvious why this would be needed that we can just do it without explaining the reason.
&gt; 
&gt; Good idea. If we don&apos;t do it, then custom paint elements remain on the page as invalid images, instead of using the new paint definition. I will add a comment.

This doesn&apos;t seem like the right long-term solution.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354301</attachid>
            <date>2018-11-08 18:46:10 -0800</date>
            <delta_ts>2018-11-08 19:16:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181108184559.patch</filename>
            <type>text/plain</type>
            <size>29875</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi42NWQzZmI2MWU5NjY4MWZh
N2M1MWZlODQ2OWYyNjhjYzVmN2ZlN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0wOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi4xMjhkMmY0MDM0NmI3MGJlYzkzNjVlYmYzM2Vm
YWI0Yzc1ZTEyMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTgtMTEtMDggIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b24gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBjc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRlclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAg
ICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQp
OgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9j
dW1lbnQgY29uc3QpOiBEZWxldGVkLgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1
c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3Vs
ZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxs
YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmlu
ZGV4IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBkYmIxYTRlMmViMDYuLjU5MzhhOTBkODlm
OTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0
cnVjdERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVl
ZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxUeXBlIHVubGVzcyB5b3UgYXJlIGdvaW5n
IHRvIHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2Fn
ZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogCiBBTFdBWVNfSU5MSU5FIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0
LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgwZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3
NWNhMzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQzNzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaAppbmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5ZTBmOGRhZGMxMTVjLi41
Yjk4YWI0ZTdiNjNhYTZjZTEwYjM3ZWQxMWViNzI2M2Q4NTc3M2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMxLDE2ICszMSwxOCBAQAogI2luY2x1ZGUgIkNTU1Bh
aW50U2l6ZS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrUmVzdWx0LmgiCiAjaW5jbHVkZSAiU3R5bGVQ
cm9wZXJ0eU1hcFJlYWRPbmx5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENTU1BhaW50Q29uc3RydWN0b3JXcmFwcGVyOwogY2xhc3MgUGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ7CiAKIGNsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxD
U1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7CiAKLSAgICB2aXJ0
dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVuZGVyaW5nQ29udGV4
dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5k
bGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRT
aXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9
IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZiNTFkNDEyM2VjMjI2MjVlMzFj
YzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2MWVlYzljMjBiMzE0NDZkZDE1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbApAQCAtMjYsNCArMjYs
NSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAgICAgQ29uZGl0
aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1RoaXNPYmplY3Q9YW55CiBdIGNh
bGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJlbmRlcmluZ0NvbnRleHQyRCBj
b250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5IHN0eWxl
TWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4YzMzY2JhMzY3OGQyNmVkMjA2
MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1YmIwNTM5MzJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAtNDAsNiArNDAsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1BhaW50SW1hZ2VWYWx1ZShuYW1l
LCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3Qg
Q1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lID09IG90aGVy
Lm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDc1YjBiOGQ0
MWEyOTQ0ZGMwOGUxNGM1NWNlODE2OGYyZWJiODAxZDcuLjMzNjI5YWIwYTFhMzU2Y2FjMTRjNjE4
OGExOWNhZWRhMGMwMzA0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
S2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5oIgorI2luY2x1ZGUg
IkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgog
I2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxlQ29sbGVjdG9y
LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKQEAgLTE3MDgsNiArMTcxMCwxNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNhc2Nh
ZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5
KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFBy
b3BlcnRpZXMoKTsKIAorICAgIGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBw
bHkpICYmIGRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9u
IG1hcCIgZnJvbSB0aGUgc3BlYywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0
byYgcGFpbnRXb3JrbGV0ID0gKmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0
aW9uTG9jaygpKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xl
dC5wYWludERlZmluaXRpb25NYXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigq
dmFsdWVUb0FwcGx5KS5uYW1lKCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5
IDogcmVnaXN0cmF0aW9uLT5pbnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIC8vIFVzZSB0aGUgZ2VuZXJhdGVkIFN0eWxlQnVpbGRlci4KICAgICBT
dHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoaWQsICp0aGlzLCAqdmFsdWVUb0FwcGx5LCBpc0lu
aXRpYWwsIGlzSW5oZXJpdCwgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAK
aW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIwZDU4MjUwOGQwMmQ4NTM4NmE0MGE1OC4uYjgwZWFmNDA4
YjFhODQ4M2VhY2UxMTIyZDI0ODM1NTIxMjRkZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTQwLDExICs0
MCwxMyBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBhaW50
UmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0cnVjdERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFy
Z3VtZW50cykKICAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2su
Z2V0KCkpCisgICAgLCBtX3BhaW50Q29uc3RydWN0b3IoZGVmaW5pdGlvbi5wYWludENvbnN0cnVj
dG9yKQogICAgICwgbV9pbnB1dFByb3BlcnRpZXMoZGVmaW5pdGlvbi5pbnB1dFByb3BlcnRpZXMp
CiAgICAgLCBtX2VsZW1lbnQobWFrZVdlYWtQdHIoZWxlbWVudCkpCiAgICAgLCBtX2FyZ3VtZW50
cyhhcmd1bWVudHMpCkBAIC0xMDMsNyArMTA1LDIyIEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21Q
YWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
CiAgICAgYXV0byBzaXplID0gQ1NTUGFpbnRTaXplOjpjcmVhdGUoZGVzdFNpemUud2lkdGgoKSwg
ZGVzdFNpemUuaGVpZ2h0KCkpOwogICAgIGF1dG8gcHJvcGVydHlNYXAgPSBTdHlsZVByb3BlcnR5
TWFwUmVhZE9ubHk6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnR5VmFsdWVzKSk7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IG1fcGFpbnRDYWxsYmFjay0+aGFuZGxlRXZlbnQoKmNvbnRleHQsIHNpemUsIHBy
b3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CisgICAgYXV0byYgdm0gPSAqbV9wYWludENvbnN0cnVj
dG9yLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9wYWludENvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KTsKKworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8mIHN0YXRlID0g
Kmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpBcmdMaXN0IG5vQXJnczsKKwor
ICAgIEpTQzo6SlNWYWx1ZSB0aGlzT2JqZWN0ID0geyBKU0M6OmNvbnN0cnVjdCgmc3RhdGUsIHsg
bV9wYWludENvbnN0cnVjdG9yLmdldCgpIH0sIG5vQXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3Qg
cGFpbnQgY2xhc3MiKSB9OworCisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkg
eworICAgICAgICByZXBvcnRFeGNlcHRpb24oJnN0YXRlLCBzY29wZS5leGNlcHRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CisgICAgfQorCisgICAg
YXV0byByZXN1bHQgPSBtX3BhaW50Q2FsbGJhY2stPmhhbmRsZUV2ZW50KFdURk1vdmUodGhpc09i
amVjdCksICpjb250ZXh0LCBzaXplLCBwcm9wZXJ0eU1hcCwgbV9hcmd1bWVudHMpOwogICAgIGlm
IChyZXN1bHQudHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcykKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCmluZGV4IGQzMDY3OTM5
NzcyMDBjY2RiY2RjOWUyM2I3NmM1MzA3ODIyY2Y3NjYuLjU0MmIyYTdjN2I3MGEzZjlhNDgzNDcy
MWVhYmJjNWY4Y2Q2OWI1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkdlbmVyYXRlZEltYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDYgKzU2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIAogICAg
IFJlZjxDU1NQYWludENhbGxiYWNrPiBtX3BhaW50Q2FsbGJhY2s7CisgICAgSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4gbV9wYWludENvbnN0cnVjdG9yOwogICAgIFZlY3RvcjxTdHJpbmc+IG1f
aW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVyRWxlbWVudD4gbV9lbGVtZW50Owog
ICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggY2ZkYjdiNTM3ZmNiN2ZiOWQwNTg2NTg0
NTNiYmVmMWFhMThiNGZjYS4uODFiYjM3NWQyYjg3NzkzNTg0N2ZjOGU0NDI2MTdkMDFlOWI2Y2Fi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNsdWRlICJDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVkZSAiQ29udGVudERhdGEu
aCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5o
IgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC03MCw2ICs3Miw5IEBAIHN0cnVjdCBTYW1l
U2l6ZUFzUmVuZGVyU3R5bGUgewogICAgIHZvaWQqIGRhdGFSZWZzWzddOwogICAgIHZvaWQqIG93
blB0cnNbMV07CiAgICAgdm9pZCogZGF0YVJlZlN2Z1N0eWxlOworI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQorICAgIHZvaWQqIHBhaW50V2F0Y2hlZFByb3BlcnRpZXM7CisjZW5kaWYKICAg
ICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkc1sy
XTsKICAgICB9IG1faW5oZXJpdGVkRmxhZ3M7CkBAIC0yMDUsNiArMjEwLDkgQEAgaW5saW5lIFJl
bmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25lVGFn
KQogICAgICwgbV9pbmhlcml0ZWREYXRhKG90aGVyLm1faW5oZXJpdGVkRGF0YSkKICAgICAsIG1f
aW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUo
b3RoZXIubV9zdmdTdHlsZSkKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICAsIG1f
Y3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMob3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVy
dGllcyA/IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+Pigqb3RoZXIubV9jdXN0b21Q
YWludFdhdGNoUHJvcGVydGllcykgOiBudWxscHRyKQorI2VuZGlmCiB7CiB9CiAKQEAgLTIyMCw2
ICsyMjgsOSBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBh
LCBSZW5kZXJTdHlsZSYmIGIpCiAgICAgLCBtX2luaGVyaXRlZEZsYWdzKHN0ZDo6ZXhjaGFuZ2Uo
YS5tX2luaGVyaXRlZEZsYWdzLCBiLm1faW5oZXJpdGVkRmxhZ3MpKQogICAgICwgbV9jYWNoZWRQ
c2V1ZG9TdHlsZXMoc3RkOjpleGNoYW5nZShhLm1fY2FjaGVkUHNldWRvU3R5bGVzLCBXVEZNb3Zl
KGIubV9jYWNoZWRQc2V1ZG9TdHlsZXMpKSkKICAgICAsIG1fc3ZnU3R5bGUoYS5tX3N2Z1N0eWxl
LnJlcGxhY2UoV1RGTW92ZShiLm1fc3ZnU3R5bGUpKSkKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKyAgICAsIG1fY3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMoc3RkOjpleGNoYW5nZShh
Lm1fY3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMsIFdURk1vdmUoYi5tX2N1c3RvbVBhaW50V2F0
Y2hQcm9wZXJ0aWVzKSkpCisjZW5kaWYKIHsKIH0KIApAQCAtMzYyLDcgKzM3Myw4IEBAIGJvb2wg
UmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAog
ICAgICAgICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID09IG90aGVyLm1fcmFyZU5vbkluaGVy
aXRlZERhdGEKICAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVJ
bmhlcml0ZWREYXRhCiAgICAgICAgICYmIG1faW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX2luaGVy
aXRlZERhdGEKLSAgICAgICAgJiYgbV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOworICAg
ICAgICAmJiBtX3N2Z1N0eWxlID09IG90aGVyLm1fc3ZnU3R5bGUKKyAgICAgICAgJiYgbV9jdXN0
b21QYWludFdhdGNoUHJvcGVydGllcyA9PSBvdGhlci5tX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0
aWVzOwogfQogCiBib29sIFJlbmRlclN0eWxlOjpoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0
CkBAIC05NzksNiArOTkxLDQyIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVw
YWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNldDxTdHlsCiAgICAgICAgICYm
IHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KCptX3JhcmVJbmhlcml0ZWRE
YXRhLCAqb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKFVOTElLRUxZKG1fY3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMgfHwgb3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGll
cykpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byB1c2UgQ29tcHV0
ZWRTdHlsZUV4dHJhY3RvciBoZXJlLgorICAgICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGV4
dHJhY3RvcigoRWxlbWVudCopIG51bGxwdHIpOworCisgICAgICAgIGZvciAoYXV0byogd2F0Y2hQ
cm9wZXJ0aWVzTWFwIDogeyBtX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzLmdldCgpLCBvdGhl
ci5tX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzLmdldCgpIH0pIHsKKyAgICAgICAgICAgIGlm
ICghd2F0Y2hQcm9wZXJ0aWVzTWFwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUI7CisgICAgICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlO
YW1lKG5hbWUpICYmIGdldEN1c3RvbVByb3BlcnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVBy
b3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAg
ICAgICAgICAgICB2YWx1ZUIgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVy
LmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlE
KG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0
cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWVCID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxl
KG90aGVyLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoKHZhbHVlQSAmJiAhdmFsdWVCKSB8fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICghdmFsdWVB
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICgh
KCp2YWx1ZUEgPT0gKnZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggOTgxYjhlZWVlYmU5NmE2MWIxYWFkMzYzMjQyZDc0ZTk2ODFjMDNlZC4uNDFhYmE3MmMx
ZjBmNjNlNmRmZjg4Njc1NTQxNDczYmExMTliZDVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEyNTMsNiArMTI1MywxNSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5cGUsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisgICAgdm9pZCBhZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkoY29uc3Qg
U3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2N1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0aWVzKQorICAgICAgICAgICAgbV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBtX2N1c3RvbVBhaW50V2F0
Y2hQcm9wZXJ0aWVzLT5hZGQobmFtZSk7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBTdXBwb3J0
IGZvciBwYWludC1vcmRlciwgc3Ryb2tlLWxpbmVjYXAsIHN0cm9rZS1saW5lam9pbiwgYW5kIHN0
cm9rZS1taXRlcmxpbWl0IGZyb20gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvcGFpbnQvLgogICAg
IHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIG9yZGVyKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgcGFpbnRPcmRlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9yZGVyKSk7IH0K
ICAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQ
YWludE9yZGVyPihtX3JhcmVJbmhlcml0ZWREYXRhLT5wYWludE9yZGVyKTsgfQpAQCAtMTg2NCw2
ICsxODczLDEwIEBAIHByaXZhdGU6CiAKICAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBtX3N2
Z1N0eWxlOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgc3RkOjp1bmlxdWVf
cHRyPEhhc2hTZXQ8U3RyaW5nPj4gbV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllczsKKyNlbmRp
ZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
ICAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1biB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRl
eCBhMjlhMjAwZDEwZGYzZmQ2YjdhY2ZiYTk3ODhlYzFjNGJhOGEwYTQzLi42MjI2ZmFjMDg5MTA0
Mjg3MDQ3ZTRhZWFlYzlhYWIyNGQwOWE1MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2Fs
bGJhY2tzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC01MCw5ICs1MSw5IEBAIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjCiAKIGRv
dWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7
Ci0gICAgaWYgKCFyZXNwb25zYWJsZURvY3VtZW50KCkgfHwgIXJlc3BvbnNhYmxlRG9jdW1lbnQo
KS0+ZG9tV2luZG93KCkpCisgICAgaWYgKCFyZXNwb25zaWJsZURvY3VtZW50KCkgfHwgIXJlc3Bv
bnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCiAgICAgICAgIHJldHVybiAxLjA7Ci0gICAg
cmV0dXJuIHJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0
aW8oKTsKKyAgICByZXR1cm4gcmVzcG9uc2libGVEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2
aWNlUGl4ZWxSYXRpbygpOwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcv
Y3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3VzdG9tLXBhaW50CkBAIC0xMjAsMTEgKzEyMSwx
NCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
YWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFj
az4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNr
Pj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAg
IGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4o
bmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUsIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0
UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMgfSk7CisgICAgYXV0byBwYWludERlZmluaXRpb24g
PSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsg
bmFtZSwgcGFpbnRDb25zdHJ1Y3RvciwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9w
ZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQo
bmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKIAogICAgIC8vIEZJWE1FOiBjb25zdHJ1
Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KIAorICAgIGlmIChyZXNwb25zaWJsZURv
Y3VtZW50KCkgJiYgcmVzcG9uc2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAgICAg
IHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZXBhaW50Um9vdENvbnRlbnRz
KCk7CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAyMzI3MWYxNTQyOTE0Yjg1YjRiMjVm
NzkxOTJlYTRjZWNjYThhNTUwLi4wZDFjOWRhMDYyODc0OWVmMmMxYmU1Mzg4MDdmYzZlMzljY2U4
MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2su
aCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDYgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IFBh
aW50RGVmaW5pdGlvbiB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAg
ICBjb25zdCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBwYWludENvbnN0cnVjdG9yOwogICAg
ICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gcGFpbnRDYWxsYmFjazsKICAgICAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogICAgICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZjAxNTY0ZDg2N2MxMGFhY2Y5Y2YwYzFkZjY5MDY1Y2Zl
ZjJkNzVjNi4uMDMxOWM4MmM4Nzg2NzI3MWU1Mjc3ZmI2OTI2NmM5ZWFlN2U2ZjkyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTc3LDggKzc3
LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVu
dCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAKLSAgICBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1
bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KLSAgICBjb25zdCBEb2N1bWVudCog
cmVzcG9uc2FibGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0K
KyAgICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KKyAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZmRhNGIxNjNiMjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQw
YjRjN2M5Li4wNTIxY2MwMjY3M2NmMjdiYjk3NjJkZjI1ZDg0ODBkMWM2ZWJjOTRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMDggIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hh
dWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3Ro
aXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0
aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVj
dG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvcHJvcGVydGllcy5odG1sOgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBw
YXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFj
awpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRl
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMx
NzQzNzA5MjA3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAg
d2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5
PgorICA8ZGl2IGlkPSJwYWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM0MTBjZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVm
MDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCBy
ZWN0cworICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0
IDggOCA3ODQgMTUwKQorICAocmVjdCAwIDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDAp
CisgIChyZWN0IDggOCAxNTAgMTUwKQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4
IDE1MCAxNTApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1
MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAK
KzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNT
U1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxl
PSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmci
PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMg
cmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVu
dD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0
YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisg
ICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5n
ZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSAicmVkIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUg
PSAiZ3JlZW4iOworICAgICAgfQorCisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0
aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcs
IE15UGFpbnQpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0
YXJ0VHJhY2tpbmdSZXBhaW50cygpOworICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29y
a2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAg
Ly8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0
VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXkt
cHJvcCcsICdnb29kYnllJyk7CisgIH0sIDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICB2YXIgcmVwYWludFJlY3RzID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVy
bmFscy5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSBy
ZWNhbGMuCisgICAgICB2YXIgZHVtbXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAg
ICAgcmVwYWludFJlY3RzID0gd2luZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsK
KworICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0K
KworICAgIHZhciBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKHByZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRS
ZWN0czsKKyAgfSwgMTAwMCk7Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAg
IGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxv
OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgor
Cis8Ym9keT4KKyAgPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFi
ODIwODFiNmJiNzI5NmFiYjBiOTZhMTY1ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0
NCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50
YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIg
dGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0
Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3Jr
bGV0cyByZXBhaW50IHdoZW4gcHJvcGVydGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBj
b250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7Cisg
ICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9
CisKKyAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0
aWVzLmdldCgnLS1teS1wcm9wJykudG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAg
Y3R4LmZpbGxTdHlsZSA9ICJyZWQiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxT
dHlsZSA9ICJncmVlbiI7CisgICAgICB9CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9t
LndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBh
aW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdv
cmtsZXQgcmV0dXJucyBhIHByb21pc2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5
LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdwYWludCcpLnN0eWxlLnNldFByb3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9
LCA1MDApOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0
aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+Cisg
IDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDRhMjllMGVlYWY1Mjc3YWYwNWE0OTcxNjg1MWU2Y2MxZDg0ODBlNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rv
ci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxl
PgorICAucGFpbnQgeworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9
Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3Jv
dW5kOiB3aGl0ZTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91
bmQ6IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkODE5YmNiZTgyNGYz
ZmI0ZDU0ZDY3OGM4ZTY3M2M0MjRlOGU1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDQ2IEBA
Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpD
U1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRs
ZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3Jn
Ij4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRz
IGRvIG5vdCBjcmFzaCBpZiB0aGUgY29uc3RydWN0b3IgdGhyb3dzIj4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkt
MS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQg
eworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgdGhyb3cgIkhlbGxvISI7CisgICAgfQorCisg
ICAgcGFpbnQoY3R4LCBnZW9tKSB7CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAg
ICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQor
ICB9CisKKyAgY2xhc3MgTXlQYWludDIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgIH0KKwor
ICAgIHBhaW50KGN0eCwgZ2VvbSkgeworICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7Cisg
ICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0K
KyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworICByZWdpc3RlclBh
aW50KCdteS1wYWludDInLCBNeVBhaW50Mik7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CisKKzxz
dHlsZT4KKyAgLnBhaW50IHsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsK
KyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFj
a2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOyI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InBh
aW50IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQyKTsiPjwvZGl2Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3By
b3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0
aWVzLmh0bWwKaW5kZXggMGFlNjg4YmUwM2VmM2I1YzgxNzE1N2M4ZDM5YzJiMDQ4ZGZiMDUxZS4u
ZDlhNDY1NWIxZmZhNDU4ZDRmZmM4ZGI5Nzk1NzQ4ZjI5YmIwMDIwOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCkBAIC0yMSw2ICsy
MSwxMSBAQAogY2xhc3MgTXlQYWludCB7CiAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkg
eyByZXR1cm4gWydoZWlnaHQnLCAnLS1teS1wcm9wJywgJy0tbXktcmVnaXN0ZXJlZC1wcm9wJywg
Ii0tbmV2ZXItc3BlY2lmaWVkIl07IH0KICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsg
cmV0dXJuIFsnKicsICcqJywgJyonXTsgfQorCisgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLm15QXR0
cmlidXRlID0gNDI7IH0KKworICB0ZXN0VGhpcygpIHsgcmV0dXJuIHRoaXMubXlBdHRyaWJ1dGU7
IH0KKwogICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMsIGFyZ3MpIHsKICAgICBhc3NlcnRf
ZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS50b1N0cmluZygpLCBhcmdzWzBdLnRvU3Ry
aW5nKCkpOwogICAgIGFzc2VydF9lcXVhbHMocHJvcGVydGllcy5nZXQoJ2hlaWdodCcpLnZhbHVl
LCAxNTApOwpAQCAtMzAsNiArMzUsOCBAQCBjbGFzcyBNeVBhaW50IHsKICAgICBhc3NlcnRfZXF1
YWxzKHByb3BlcnRpZXMuZ2V0KCd3aWR0aCcpLCBudWxsKTsKICAgICBhc3NlcnRfZXF1YWxzKHBy
b3BlcnRpZXMuZ2V0KCctLW5ldmVyLXNwZWNpZmllZCcpLnRvU3RyaW5nKCksICcnKTsKIAorICAg
IGFzc2VydF9lcXVhbHModGhpcy50ZXN0VGhpcygpLCA0Mik7CisKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDY7IGkrKyl7CiAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CiAgICAg
ICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSAr
ICcsJyArCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354303</attachid>
            <date>2018-11-08 19:16:21 -0800</date>
            <delta_ts>2018-11-08 20:07:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181108191610.patch</filename>
            <type>text/plain</type>
            <size>29851</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi42NWQzZmI2MWU5NjY4MWZh
N2M1MWZlODQ2OWYyNjhjYzVmN2ZlN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0wOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi4xMjhkMmY0MDM0NmI3MGJlYzkzNjVlYmYzM2Vm
YWI0Yzc1ZTEyMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTgtMTEtMDggIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b24gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBjc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRlclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAg
ICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQp
OgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9j
dW1lbnQgY29uc3QpOiBEZWxldGVkLgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1
c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3Vs
ZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxs
YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmlu
ZGV4IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBkYmIxYTRlMmViMDYuLjU5MzhhOTBkODlm
OTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0
cnVjdERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVl
ZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxUeXBlIHVubGVzcyB5b3UgYXJlIGdvaW5n
IHRvIHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2Fn
ZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogCiBBTFdBWVNfSU5MSU5FIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0
LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgwZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3
NWNhMzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQzNzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaAppbmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5ZTBmOGRhZGMxMTVjLi5h
NzM3NzAwZDYwODM3ZjlkYmFlNzQzZmJhOWNmZGI1MmYyZjM1YzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NQYWlu
dFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MCw3ICs0MSw3IEBAIGNsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhCiBwdWJsaWM6CiAgICAgdXNp
bmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOwogCi0gICAgdmlydHVhbCBD
YWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChQYWludFJlbmRlcmluZ0NvbnRleHQyRCYs
IENTU1BhaW50U2l6ZSYsIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seSYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZl
bnQoSlNDOjpKU1ZhbHVlLCBQYWludFJlbmRlcmluZ0NvbnRleHQyRCYsIENTU1BhaW50U2l6ZSYs
IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwog
CiAgICAgdmlydHVhbCB+Q1NTUGFpbnRDYWxsYmFjaygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50Q2FsbGJhY2suaWRsCmluZGV4IDg2NzU2YjUxZDQxMjNlYzIyNjI1ZTMxY2MzMTlk
ODc1MzM0MDFlZDYuLjcyYjUyM2QyNGVkYjc5ZDIyNTMyNjFlZWM5YzIwYjMxNDQ2ZGQxNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKQEAgLTI2LDQgKzI2LDUgQEAK
IFsKICAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAogICAgIENvbmRpdGlvbmFs
PUNTU19QQUlOVElOR19BUEksCisgICAgQ2FsbGJhY2tUaGlzT2JqZWN0PWFueQogXSBjYWxsYmFj
ayBDU1NQYWludENhbGxiYWNrID0gdm9pZCAoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgY29udGV4
dCwgQ1NTUGFpbnRTaXplIHNpemUsIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seSBzdHlsZU1hcCwg
c2VxdWVuY2U8VVNWU3RyaW5nPiBhcmd1bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5oCmluZGV4IGI2YjY5YzhmNzE0MGE0OGMzM2NiYTM2NzhkMjZlZDIwNjJkN2Vi
ZDAuLjQzYmNjMWNhY2Q4MGUxYjY5ODBhOTI3NTFmNzhlNWJiMDUzOTMyY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQYWludEltYWdlVmFsdWUobmFtZSwgV1RG
TW92ZShhcmd1bWVudHMpKSk7CiAgICAgfQogCisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CisKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVs
ZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1Bh
aW50SW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25h
bWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NWIwYjhkNDFhMjk0
NGRjMDhlMTRjNTVjZTgxNjhmMmViYjgwMWQ3Li5kOWJkZTI4N2YzMzEwMGI0NzAxMWQ0NDVlYzIw
MTI0ZTRkZDQ3MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0tleWZy
YW1lUnVsZS5oIgogI2luY2x1ZGUgIkNTU0tleWZyYW1lc1J1bGUuaCIKKyNpbmNsdWRlICJDU1NQ
YWludEltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpA
QCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5oIgor
I2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiUGFpci5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCkBAIC0xNzA4LDYgKzE3MTAsMTggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAg
ICBpZiAoaXNJbmhlcml0ICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0
aWVzKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoaXM8Q1NTUGFp
bnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KSAmJiBkb2N1bWVudCgpLnBhaW50V29ya2xldEds
b2JhbFNjb3BlKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgImRv
Y3VtZW50IHBhaW50IHJlZ2lzdHJhdGlvbiBtYXAiIGZyb20gdGhlIHNwZWMsIG9uY2UgaXQgaXMg
aW1wbGVtZW50ZWQuCisgICAgICAgIGF1dG8mIHBhaW50V29ya2xldCA9ICpkb2N1bWVudCgpLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
cGFpbnRXb3JrbGV0LnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgIGlmIChhdXRvKiBy
ZWdpc3RyYXRpb24gPSBwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KGRvd25j
YXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkubmFtZSgpKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHJlZ2lzdHJhdGlvbi0+aW5wdXRQcm9wZXJ0aWVz
KQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFVzZSB0
aGUgZ2VuZXJhdGVkIFN0eWxlQnVpbGRlci4KICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVy
dHkoaWQsICp0aGlzLCAqdmFsdWVUb0FwcGx5LCBpc0luaXRpYWwsIGlzSW5oZXJpdCwgY3VzdG9t
UHJvcGVydHlSZWdpc3RlcmVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIw
ZDU4MjUwOGQwMmQ4NTM4NmE0MGE1OC4uYjgwZWFmNDA4YjFhODQ4M2VhY2UxMTIyZDI0ODM1NTIx
MjRkZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTQwLDExICs0MCwxMyBAQAogI2luY2x1ZGUgIkpTQ1NT
UGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBhaW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0
cnVjdERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmlu
aXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKICAgICA6IG1fcGFpbnRD
YWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2suZ2V0KCkpCisgICAgLCBtX3BhaW50Q29u
c3RydWN0b3IoZGVmaW5pdGlvbi5wYWludENvbnN0cnVjdG9yKQogICAgICwgbV9pbnB1dFByb3Bl
cnRpZXMoZGVmaW5pdGlvbi5pbnB1dFByb3BlcnRpZXMpCiAgICAgLCBtX2VsZW1lbnQobWFrZVdl
YWtQdHIoZWxlbWVudCkpCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCkBAIC0xMDMsNyAr
MTA1LDIyIEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYXV0byBzaXplID0gQ1NTUGFp
bnRTaXplOjpjcmVhdGUoZGVzdFNpemUud2lkdGgoKSwgZGVzdFNpemUuaGVpZ2h0KCkpOwogICAg
IGF1dG8gcHJvcGVydHlNYXAgPSBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHk6OmNyZWF0ZShXVEZN
b3ZlKHByb3BlcnR5VmFsdWVzKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFpbnRDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoKmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7
CisgICAgYXV0byYgdm0gPSAqbV9wYWludENvbnN0cnVjdG9yLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAq
bV9wYWludENvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2sodm0pOworICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVj
KCk7CisgICAgSlNDOjpBcmdMaXN0IG5vQXJnczsKKworICAgIEpTQzo6SlNWYWx1ZSB0aGlzT2Jq
ZWN0ID0geyBKU0M6OmNvbnN0cnVjdCgmc3RhdGUsIHsgbV9wYWludENvbnN0cnVjdG9yLmdldCgp
IH0sIG5vQXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3QgcGFpbnQgY2xhc3MiKSB9OworCisgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICByZXBvcnRFeGNlcHRp
b24oJnN0YXRlLCBzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZE5vdGhpbmc7CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBtX3BhaW50Q2Fs
bGJhY2stPmhhbmRsZUV2ZW50KFdURk1vdmUodGhpc09iamVjdCksICpjb250ZXh0LCBzaXplLCBw
cm9wZXJ0eU1hcCwgbV9hcmd1bWVudHMpOwogICAgIGlmIChyZXN1bHQudHlwZSgpICE9IENhbGxi
YWNrUmVzdWx0VHlwZTo6U3VjY2VzcykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oCmluZGV4IGQzMDY3OTM5NzcyMDBjY2RiY2RjOWUyM2I3NmM1MzA3
ODIyY2Y3NjYuLjU0MmIyYTdjN2I3MGEzZjlhNDgzNDcyMWVhYmJjNWY4Y2Q2OWI1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdlbmVyYXRlZEltYWdlLmgiCiAjaW5j
bHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU1LDYgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIAogICAgIFJlZjxDU1NQYWludENhbGxiYWNrPiBt
X3BhaW50Q2FsbGJhY2s7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9wYWludENv
bnN0cnVjdG9yOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdl
YWtQdHI8UmVuZGVyRWxlbWVudD4gbV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJn
dW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKaW5kZXggY2ZkYjdiNTM3ZmNiN2ZiOWQwNTg2NTg0NTNiYmVmMWFhMThiNGZjYS4uODFiYjM3
NWQyYjg3NzkzNTg0N2ZjOGU0NDI2MTdkMDFlOWI2Y2FiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAi
Q29udGVudERhdGEuaCIKKyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
UGFyc2VyLmgiCisjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0
LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCkBAIC03MCw2ICs3Miw5IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogICAg
IHZvaWQqIGRhdGFSZWZzWzddOwogICAgIHZvaWQqIG93blB0cnNbMV07CiAgICAgdm9pZCogZGF0
YVJlZlN2Z1N0eWxlOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIHZvaWQqIHBh
aW50V2F0Y2hlZFByb3BlcnRpZXM7CisjZW5kaWYKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3Mg
ewogICAgICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkc1syXTsKICAgICB9IG1faW5oZXJpdGVkRmxh
Z3M7CkBAIC0yMDUsNiArMjEwLDkgQEAgaW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25lVGFnKQogICAgICwgbV9pbmhlcml0ZWREYXRh
KG90aGVyLm1faW5oZXJpdGVkRGF0YSkKICAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9p
bmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHlsZSkKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICAsIG1fY3VzdG9tUGFpbnRXYXRjaFByb3BlcnRp
ZXMob3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA/IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxTdHJpbmc+Pigqb3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgOiBu
dWxscHRyKQorI2VuZGlmCiB7CiB9CiAKQEAgLTIyMCw2ICsyMjgsOSBAQCBpbmxpbmUgUmVuZGVy
U3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCiAgICAg
LCBtX2luaGVyaXRlZEZsYWdzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2luaGVyaXRlZEZsYWdzLCBiLm1f
aW5oZXJpdGVkRmxhZ3MpKQogICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoc3RkOjpleGNoYW5n
ZShhLm1fY2FjaGVkUHNldWRvU3R5bGVzLCBXVEZNb3ZlKGIubV9jYWNoZWRQc2V1ZG9TdHlsZXMp
KSkKICAgICAsIG1fc3ZnU3R5bGUoYS5tX3N2Z1N0eWxlLnJlcGxhY2UoV1RGTW92ZShiLm1fc3Zn
U3R5bGUpKSkKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICAsIG1fY3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMoc3RkOjpleGNoYW5nZShhLm1fY3VzdG9tUGFpbnRXYXRjaFByb3Bl
cnRpZXMsIFdURk1vdmUoYi5tX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSkpCisjZW5kaWYK
IHsKIH0KIApAQCAtMzYyLDcgKzM3Myw4IEBAIGJvb2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0o
Y29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9y
YXJlSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhCiAgICAgICAgICYm
IG1faW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEKLSAgICAgICAgJiYgbV9z
dmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOworICAgICAgICAmJiBtX3N2Z1N0eWxlID09IG90
aGVyLm1fc3ZnU3R5bGUKKyAgICAgICAgJiYgbV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9
PSBvdGhlci5tX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzOwogfQogCiBib29sIFJlbmRlclN0
eWxlOjpoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0CkBAIC05NzksNiArOTkxLDQyIEBAIGJv
b2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYg
b3RoZXIsIE9wdGlvblNldDxTdHlsCiAgICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdl
UmVxdWlyZXNSZXBhaW50KCptX3JhcmVJbmhlcml0ZWREYXRhLCAqb3RoZXIubV9yYXJlSW5oZXJp
dGVkRGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKFVOTElLRUxZKG1fY3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgfHwg
b3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcykpIHsKKyAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QgbmVlZCB0byB1c2UgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBoZXJlLgor
ICAgICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGV4dHJhY3RvcigoRWxlbWVudCopIG51bGxw
dHIpOworCisgICAgICAgIGZvciAoYXV0byogd2F0Y2hQcm9wZXJ0aWVzTWFwIDogeyBtX2N1c3Rv
bVBhaW50V2F0Y2hQcm9wZXJ0aWVzLmdldCgpLCBvdGhlci5tX2N1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0aWVzLmdldCgpIH0pIHsKKyAgICAgICAgICAgIGlmICghd2F0Y2hQcm9wZXJ0aWVzTWFwKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKGF1dG8mIG5hbWUg
OiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUI7CisgICAg
ICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKG5hbWUpICYmIGdldEN1c3RvbVBy
b3BlcnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqZ2V0
Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUp
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlp
blN0eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0g
ZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKG90aGVyLCBwcm9wZXJ0eUlEKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoKHZhbHVlQSAmJiAhdmFsdWVC
KSB8fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICAgICAgICAgIGlmICghdmFsdWVBKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghKCp2YWx1ZUEgPT0gKnZhbHVlQikpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOTgxYjhlZWVlYmU5NmE2MWIx
YWFkMzYzMjQyZDc0ZTk2ODFjMDNlZC4uNDFhYmE3MmMxZjBmNjNlNmRmZjg4Njc1NTQxNDczYmEx
MTliZDVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTEyNTMsNiArMTI1MywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1
dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBl
KSk7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgdm9pZCBh
ZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKQorICAgICAgICAgICAgbV9j
dXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJp
bmc+PigpOworICAgICAgICBtX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzLT5hZGQobmFtZSk7
CisgICAgfQorI2VuZGlmCisKICAgICAvLyBTdXBwb3J0IGZvciBwYWludC1vcmRlciwgc3Ryb2tl
LWxpbmVjYXAsIHN0cm9rZS1saW5lam9pbiwgYW5kIHN0cm9rZS1taXRlcmxpbWl0IGZyb20gaHR0
cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvcGFpbnQvLgogICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWlu
dE9yZGVyIG9yZGVyKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcGFpbnRPcmRlciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9yZGVyKSk7IH0KICAgICBQYWludE9yZGVyIHBhaW50T3Jk
ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQYWludE9yZGVyPihtX3JhcmVJbmhlcml0
ZWREYXRhLT5wYWludE9yZGVyKTsgfQpAQCAtMTg2NCw2ICsxODczLDEwIEBAIHByaXZhdGU6CiAK
ICAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBtX3N2Z1N0eWxlOwogCisjaWYgRU5BQkxFKENT
U19QQUlOVElOR19BUEkpCisgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4gbV9j
dXN0b21QYWludFdhdGNoUHJvcGVydGllczsKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIG1fZGVsZXRpb25IYXNC
ZWd1biB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMjlhMjAwZDEwZGYzZmQ2YjdhY2Zi
YTk3ODhlYzFjNGJhOGEwYTQzLi42MjI2ZmFjMDg5MTA0Mjg3MDQ3ZTRhZWFlYzlhYWIyNGQwOWE1
MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDU1NQYWludENhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSlNE
T01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
PHd0Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw5ICs1MSw5
IEBAIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1
bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjCiAKIGRvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXNwb25zYWJsZURv
Y3VtZW50KCkgfHwgIXJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCisgICAgaWYg
KCFyZXNwb25zaWJsZURvY3VtZW50KCkgfHwgIXJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpCiAgICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIHJlc3BvbnNhYmxlRG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0aW8oKTsKKyAgICByZXR1cm4gcmVzcG9u
c2libGVEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOwogfQogCiAv
LyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0ZXJp
bmctY3VzdG9tLXBhaW50CkBAIC0xMjAsMTEgKzEyMSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsCiAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsIGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0g
c3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5h
bWUsIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVu
dHMgfSk7CisgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRE
ZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnRDb25zdHJ1Y3Rvciwg
cGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9
KTsKICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmlu
aXRpb24pKTsKIAogICAgIC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChz
dGVwIDIyKS4KIAorICAgIGlmIChyZXNwb25zaWJsZURvY3VtZW50KCkgJiYgcmVzcG9uc2libGVE
b2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAgICAgIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+
cmVuZGVyVmlldygpLT5yZXBhaW50Um9vdENvbnRlbnRzKCk7CisKICAgICByZXR1cm4geyB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaAppbmRleCAyMzI3MWYxNTQyOTE0Yjg1YjRiMjVmNzkxOTJlYTRjZWNjYThhNTUwLi4wZDFj
OWRhMDYyODc0OWVmMmMxYmU1Mzg4MDdmYzZlMzljY2U4MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDYg
KzQ4LDcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAgICBjb25zdCBKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0PiBwYWludENvbnN0cnVjdG9yOwogICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRD
YWxsYmFjaz4gcGFpbnRDYWxsYmFjazsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5w
dXRQcm9wZXJ0aWVzOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
ZjAxNTY0ZDg2N2MxMGFhY2Y5Y2YwYzFkZjY5MDY1Y2ZlZjJkNzVjNi4uMDMxOWM4MmM4Nzg2NzI3
MWU1Mjc3ZmI2OTI2NmM5ZWFlN2U2ZjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7
CiAKLSAgICBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1l
bnQuZ2V0KCk7IH0KLSAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBEb2N1bWVudCogcmVzcG9uc2li
bGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBEb2N1
bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
ZmRhNGIxNjNiMjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQwYjRjN2M5Li4wNTIxY2MwMjY3M2NmMjdi
Yjk3NjJkZjI1ZDg0ODBkMWM2ZWJjOTRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMTEt
MDggIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAg
IENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBj
YWxsYmFjaywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sOgorCiAy
MDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQg
aW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNwYWlu
dCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdo
dDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+PC9k
aXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTBj
ZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYw
MCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVjdCAw
IDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUwKQor
ICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVl
IF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0i
bWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhv
dWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29y
a2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5n
KCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQorCisg
ICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0K
KyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0
KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwor
ICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29y
a2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXku
CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7CisgIH0s
IDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJlY3Rz
ID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWlu
dHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVtbXkg
PSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2luZG93
LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVybmFs
cy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBy
ZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8L3Nj
cmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50
KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0icGFp
bnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZhMTY1
ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVk
PXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJvcGVy
dGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5j
c3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4
dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3Bl
cnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdlb20s
IHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJykudG9T
dHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICB9
CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7Cisg
ICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3Njcmlw
dD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENT
Uy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRl
bnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2Us
IHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3Bl
cnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisKKzxz
dHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7
CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAx
NTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9j
b25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRhMjllMGVlYWY1Mjc3
YWYwNWE0OTcxNjg1MWU2Y2MxZDg0ODBlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRo
OiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAg
PGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2PgorICA8
ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+Cis8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3Ry
dWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rv
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJkODE5YmNiZTgyNGYzZmI0ZDU0ZDY3OGM4ZTY3M2M0MjRlOGU1
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
Y29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1
ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9
Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIGRvIG5vdCBjcmFzaCBpZiB0aGUgY29u
c3RydWN0b3IgdGhyb3dzIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFm
dHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9
InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgdGhyb3cgIkhlbGxvISI7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7Cisg
ICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBn
ZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisKKyAgY2xhc3MgTXlQYWludDIg
eworICAgIGNvbnN0cnVjdG9yKCkgeworICAgIH0KKworICAgIHBhaW50KGN0eCwgZ2VvbSkgewor
ICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwg
Z2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdt
eS1wYWludCcsIE15UGFpbnQpOworICByZWdpc3RlclBhaW50KCdteS1wYWludDInLCBNeVBhaW50
Mik7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBv
cnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2Rl
JykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgLnBhaW50IHsKKyAgICB3
aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+
CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXkt
cGFpbnQpOyI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZC1p
bWFnZTogcGFpbnQobXktcGFpbnQyKTsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKaW5kZXggMGFlNjg4YmUw
M2VmM2I1YzgxNzE1N2M4ZDM5YzJiMDQ4ZGZiMDUxZS4uZDlhNDY1NWIxZmZhNDU4ZDRmZmM4ZGI5
Nzk1NzQ4ZjI5YmIwMDIwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3Byb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcHJvcGVydGllcy5odG1sCkBAIC0yMSw2ICsyMSwxMSBAQAogY2xhc3MgTXlQYWludCB7
CiAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWydoZWlnaHQnLCAnLS1t
eS1wcm9wJywgJy0tbXktcmVnaXN0ZXJlZC1wcm9wJywgIi0tbmV2ZXItc3BlY2lmaWVkIl07IH0K
ICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsnKicsICcqJywgJyonXTsg
fQorCisgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLm15QXR0cmlidXRlID0gNDI7IH0KKworICB0ZXN0
VGhpcygpIHsgcmV0dXJuIHRoaXMubXlBdHRyaWJ1dGU7IH0KKwogICBwYWludChjdHgsIGdlb20s
IHByb3BlcnRpZXMsIGFyZ3MpIHsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdo
ZWlnaHQnKS50b1N0cmluZygpLCBhcmdzWzBdLnRvU3RyaW5nKCkpOwogICAgIGFzc2VydF9lcXVh
bHMocHJvcGVydGllcy5nZXQoJ2hlaWdodCcpLnZhbHVlLCAxNTApOwpAQCAtMzAsNiArMzUsOCBA
QCBjbGFzcyBNeVBhaW50IHsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCd3aWR0
aCcpLCBudWxsKTsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCctLW5ldmVyLXNw
ZWNpZmllZCcpLnRvU3RyaW5nKCksICcnKTsKIAorICAgIGFzc2VydF9lcXVhbHModGhpcy50ZXN0
VGhpcygpLCA0Mik7CisKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CiAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CiAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdi
KCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354306</attachid>
            <date>2018-11-08 20:07:18 -0800</date>
            <delta_ts>2018-11-12 19:38:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181108200706.patch</filename>
            <type>text/plain</type>
            <size>29797</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi42NWQzZmI2MWU5NjY4MWZh
N2M1MWZlODQ2OWYyNjhjYzVmN2ZlN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0wOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi4xMjhkMmY0MDM0NmI3MGJlYzkzNjVlYmYzM2Vm
YWI0Yzc1ZTEyMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTgtMTEtMDggIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b24gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBjc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRlclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAg
ICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQp
OgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9j
dW1lbnQgY29uc3QpOiBEZWxldGVkLgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1
c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3Vs
ZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxs
YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmlu
ZGV4IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBkYmIxYTRlMmViMDYuLjU5MzhhOTBkODlm
OTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0
cnVjdERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVl
ZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxUeXBlIHVubGVzcyB5b3UgYXJlIGdvaW5n
IHRvIHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1
bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2Fn
ZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogCiBBTFdBWVNfSU5MSU5FIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0
LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgwZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3
NWNhMzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQzNzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaAppbmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5ZTBmOGRhZGMxMTVjLi5h
NzM3NzAwZDYwODM3ZjlkYmFlNzQzZmJhOWNmZGI1MmYyZjM1YzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NQYWlu
dFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MCw3ICs0MSw3IEBAIGNsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhCiBwdWJsaWM6CiAgICAgdXNp
bmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOwogCi0gICAgdmlydHVhbCBD
YWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChQYWludFJlbmRlcmluZ0NvbnRleHQyRCYs
IENTU1BhaW50U2l6ZSYsIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seSYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZl
bnQoSlNDOjpKU1ZhbHVlLCBQYWludFJlbmRlcmluZ0NvbnRleHQyRCYsIENTU1BhaW50U2l6ZSYs
IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwog
CiAgICAgdmlydHVhbCB+Q1NTUGFpbnRDYWxsYmFjaygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50Q2FsbGJhY2suaWRsCmluZGV4IDg2NzU2YjUxZDQxMjNlYzIyNjI1ZTMxY2MzMTlk
ODc1MzM0MDFlZDYuLjcyYjUyM2QyNGVkYjc5ZDIyNTMyNjFlZWM5YzIwYjMxNDQ2ZGQxNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKQEAgLTI2LDQgKzI2LDUgQEAK
IFsKICAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAogICAgIENvbmRpdGlvbmFs
PUNTU19QQUlOVElOR19BUEksCisgICAgQ2FsbGJhY2tUaGlzT2JqZWN0PWFueQogXSBjYWxsYmFj
ayBDU1NQYWludENhbGxiYWNrID0gdm9pZCAoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgY29udGV4
dCwgQ1NTUGFpbnRTaXplIHNpemUsIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seSBzdHlsZU1hcCwg
c2VxdWVuY2U8VVNWU3RyaW5nPiBhcmd1bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5oCmluZGV4IGI2YjY5YzhmNzE0MGE0OGMzM2NiYTM2NzhkMjZlZDIwNjJkN2Vi
ZDAuLjQzYmNjMWNhY2Q4MGUxYjY5ODBhOTI3NTFmNzhlNWJiMDUzOTMyY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQYWludEltYWdlVmFsdWUobmFtZSwgV1RG
TW92ZShhcmd1bWVudHMpKSk7CiAgICAgfQogCisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CisKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVs
ZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1Bh
aW50SW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25h
bWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NWIwYjhkNDFhMjk0
NGRjMDhlMTRjNTVjZTgxNjhmMmViYjgwMWQ3Li5kOWJkZTI4N2YzMzEwMGI0NzAxMWQ0NDVlYzIw
MTI0ZTRkZDQ3MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0tleWZy
YW1lUnVsZS5oIgogI2luY2x1ZGUgIkNTU0tleWZyYW1lc1J1bGUuaCIKKyNpbmNsdWRlICJDU1NQ
YWludEltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpA
QCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNs
dWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5oIgor
I2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiUGFpci5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCkBAIC0xNzA4LDYgKzE3MTAsMTggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAg
ICBpZiAoaXNJbmhlcml0ICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0
aWVzKCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoaXM8Q1NTUGFp
bnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KSAmJiBkb2N1bWVudCgpLnBhaW50V29ya2xldEds
b2JhbFNjb3BlKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgImRv
Y3VtZW50IHBhaW50IHJlZ2lzdHJhdGlvbiBtYXAiIGZyb20gdGhlIHNwZWMsIG9uY2UgaXQgaXMg
aW1wbGVtZW50ZWQuCisgICAgICAgIGF1dG8mIHBhaW50V29ya2xldCA9ICpkb2N1bWVudCgpLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
cGFpbnRXb3JrbGV0LnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgIGlmIChhdXRvKiBy
ZWdpc3RyYXRpb24gPSBwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KGRvd25j
YXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkubmFtZSgpKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHJlZ2lzdHJhdGlvbi0+aW5wdXRQcm9wZXJ0aWVz
KQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFVzZSB0
aGUgZ2VuZXJhdGVkIFN0eWxlQnVpbGRlci4KICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVy
dHkoaWQsICp0aGlzLCAqdmFsdWVUb0FwcGx5LCBpc0luaXRpYWwsIGlzSW5oZXJpdCwgY3VzdG9t
UHJvcGVydHlSZWdpc3RlcmVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIw
ZDU4MjUwOGQwMmQ4NTM4NmE0MGE1OC4uYjgwZWFmNDA4YjFhODQ4M2VhY2UxMTIyZDI0ODM1NTIx
MjRkZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTQwLDExICs0MCwxMyBAQAogI2luY2x1ZGUgIkpTQ1NT
UGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBhaW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0
cnVjdERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDdXN0b21QYWludEltYWdlOjpD
dXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmlu
aXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKICAgICA6IG1fcGFpbnRD
YWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2suZ2V0KCkpCisgICAgLCBtX3BhaW50Q29u
c3RydWN0b3IoZGVmaW5pdGlvbi5wYWludENvbnN0cnVjdG9yKQogICAgICwgbV9pbnB1dFByb3Bl
cnRpZXMoZGVmaW5pdGlvbi5pbnB1dFByb3BlcnRpZXMpCiAgICAgLCBtX2VsZW1lbnQobWFrZVdl
YWtQdHIoZWxlbWVudCkpCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCkBAIC0xMDMsNyAr
MTA1LDIyIEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYXV0byBzaXplID0gQ1NTUGFp
bnRTaXplOjpjcmVhdGUoZGVzdFNpemUud2lkdGgoKSwgZGVzdFNpemUuaGVpZ2h0KCkpOwogICAg
IGF1dG8gcHJvcGVydHlNYXAgPSBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHk6OmNyZWF0ZShXVEZN
b3ZlKHByb3BlcnR5VmFsdWVzKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFpbnRDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoKmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7
CisgICAgYXV0byYgdm0gPSAqbV9wYWludENvbnN0cnVjdG9yLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAq
bV9wYWludENvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2sodm0pOworICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVj
KCk7CisgICAgSlNDOjpBcmdMaXN0IG5vQXJnczsKKworICAgIEpTQzo6SlNWYWx1ZSB0aGlzT2Jq
ZWN0ID0geyBKU0M6OmNvbnN0cnVjdCgmc3RhdGUsIHsgbV9wYWludENvbnN0cnVjdG9yLmdldCgp
IH0sIG5vQXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3QgcGFpbnQgY2xhc3MiKSB9OworCisgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICByZXBvcnRFeGNlcHRp
b24oJnN0YXRlLCBzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZE5vdGhpbmc7CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBtX3BhaW50Q2Fs
bGJhY2stPmhhbmRsZUV2ZW50KFdURk1vdmUodGhpc09iamVjdCksICpjb250ZXh0LCBzaXplLCBw
cm9wZXJ0eU1hcCwgbV9hcmd1bWVudHMpOwogICAgIGlmIChyZXN1bHQudHlwZSgpICE9IENhbGxi
YWNrUmVzdWx0VHlwZTo6U3VjY2VzcykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oCmluZGV4IGQzMDY3OTM5NzcyMDBjY2RiY2RjOWUyM2I3NmM1MzA3
ODIyY2Y3NjYuLjU0MmIyYTdjN2I3MGEzZjlhNDgzNDcyMWVhYmJjNWY4Y2Q2OWI1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdlbmVyYXRlZEltYWdlLmgiCiAjaW5j
bHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU1LDYgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIAogICAgIFJlZjxDU1NQYWludENhbGxiYWNrPiBt
X3BhaW50Q2FsbGJhY2s7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9wYWludENv
bnN0cnVjdG9yOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdl
YWtQdHI8UmVuZGVyRWxlbWVudD4gbV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJn
dW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKaW5kZXggY2ZkYjdiNTM3ZmNiN2ZiOWQwNTg2NTg0NTNiYmVmMWFhMThiNGZjYS4uMTJmZTQ3
YzRmOTc1ZjExMjlkMzA1ZDc0YzU1NzdjMTBhYTZlNWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAi
Q29udGVudERhdGEuaCIKKyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
UGFyc2VyLmgiCisjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0
LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCkBAIC03MCw2ICs3Miw5IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogICAg
IHZvaWQqIGRhdGFSZWZzWzddOwogICAgIHZvaWQqIG93blB0cnNbMV07CiAgICAgdm9pZCogZGF0
YVJlZlN2Z1N0eWxlOworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIHZvaWQqIHBh
aW50V2F0Y2hlZFByb3BlcnRpZXM7CisjZW5kaWYKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3Mg
ewogICAgICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkc1syXTsKICAgICB9IG1faW5oZXJpdGVkRmxh
Z3M7CkBAIC0yMDUsNiArMjEwLDkgQEAgaW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25lVGFnKQogICAgICwgbV9pbmhlcml0ZWREYXRh
KG90aGVyLm1faW5oZXJpdGVkRGF0YSkKICAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9p
bmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHlsZSkKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICAsIG1fY3VzdG9tUGFpbnRXYXRjaFByb3BlcnRp
ZXMob3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA/IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxTdHJpbmc+Pigqb3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgOiBu
dWxscHRyKQorI2VuZGlmCiB7CiB9CiAKQEAgLTIyMCw2ICsyMjgsOSBAQCBpbmxpbmUgUmVuZGVy
U3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCiAgICAg
LCBtX2luaGVyaXRlZEZsYWdzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2luaGVyaXRlZEZsYWdzLCBiLm1f
aW5oZXJpdGVkRmxhZ3MpKQogICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoc3RkOjpleGNoYW5n
ZShhLm1fY2FjaGVkUHNldWRvU3R5bGVzLCBXVEZNb3ZlKGIubV9jYWNoZWRQc2V1ZG9TdHlsZXMp
KSkKICAgICAsIG1fc3ZnU3R5bGUoYS5tX3N2Z1N0eWxlLnJlcGxhY2UoV1RGTW92ZShiLm1fc3Zn
U3R5bGUpKSkKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICAsIG1fY3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMoc3RkOjpleGNoYW5nZShhLm1fY3VzdG9tUGFpbnRXYXRjaFByb3Bl
cnRpZXMsIFdURk1vdmUoYi5tX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSkpCisjZW5kaWYK
IHsKIH0KIApAQCAtMzYyLDYgKzM3Myw5IEBAIGJvb2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0o
Y29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhID09IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9y
YXJlSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhCiAgICAgICAgICYm
IG1faW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEKKyNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKKyAgICAgICAgJiYgbV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9
PSBvdGhlci5tX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzCisjZW5kaWYKICAgICAgICAgJiYg
bV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCkBAIC05NzksNiArOTkzLDQyIEBA
IGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHls
ZSYgb3RoZXIsIE9wdGlvblNldDxTdHlsCiAgICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhQ2hh
bmdlUmVxdWlyZXNSZXBhaW50KCptX3JhcmVJbmhlcml0ZWREYXRhLCAqb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisgICAgaWYgKFVOTElLRUxZKG1fY3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMg
fHwgb3RoZXIubV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcykpIHsKKyAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byB1c2UgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBoZXJl
LgorICAgICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGV4dHJhY3RvcigoRWxlbWVudCopIG51
bGxwdHIpOworCisgICAgICAgIGZvciAoYXV0byogd2F0Y2hQcm9wZXJ0aWVzTWFwIDogeyBtX2N1
c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzLmdldCgpLCBvdGhlci5tX2N1c3RvbVBhaW50V2F0Y2hQ
cm9wZXJ0aWVzLmdldCgpIH0pIHsKKyAgICAgICAgICAgIGlmICghd2F0Y2hQcm9wZXJ0aWVzTWFw
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKGF1dG8mIG5h
bWUgOiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUI7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKG5hbWUpICYmIGdldEN1c3Rv
bVByb3BlcnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgq
Z2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5h
bWUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVy
dHlpblN0eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVC
ID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKG90aGVyLCBwcm9wZXJ0eUlEKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoKHZhbHVlQSAmJiAhdmFs
dWVCKSB8fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICghdmFsdWVBKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghKCp2YWx1ZUEgPT0gKnZhbHVlQikp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOTgxYjhlZWVlYmU5NmE2
MWIxYWFkMzYzMjQyZDc0ZTk2ODFjMDNlZC4uNDFhYmE3MmMxZjBmNjNlNmRmZjg4Njc1NTQxNDcz
YmExMTliZDVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTEyNTMsNiArMTI1MywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBsZVBh
eUJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
eXBlKSk7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgdm9p
ZCBhZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKQorICAgICAgICAgICAg
bV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxT
dHJpbmc+PigpOworICAgICAgICBtX2N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzLT5hZGQobmFt
ZSk7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBTdXBwb3J0IGZvciBwYWludC1vcmRlciwgc3Ry
b2tlLWxpbmVjYXAsIHN0cm9rZS1saW5lam9pbiwgYW5kIHN0cm9rZS1taXRlcmxpbWl0IGZyb20g
aHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvcGFpbnQvLgogICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQ
YWludE9yZGVyIG9yZGVyKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcGFpbnRPcmRl
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9yZGVyKSk7IH0KICAgICBQYWludE9yZGVyIHBhaW50
T3JkZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQYWludE9yZGVyPihtX3JhcmVJbmhl
cml0ZWREYXRhLT5wYWludE9yZGVyKTsgfQpAQCAtMTg2NCw2ICsxODczLDEwIEBAIHByaXZhdGU6
CiAKICAgICBEYXRhUmVmPFNWR1JlbmRlclN0eWxlPiBtX3N2Z1N0eWxlOwogCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4g
bV9jdXN0b21QYWludFdhdGNoUHJvcGVydGllczsKKyNlbmRpZgorCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIG1fZGVsZXRpb25I
YXNCZWd1biB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMjlhMjAwZDEwZGYzZmQ2Yjdh
Y2ZiYTk3ODhlYzFjNGJhOGEwYTQzLi42MjI2ZmFjMDg5MTA0Mjg3MDQ3ZTRhZWFlYzlhYWIyNGQw
OWE1MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDU1NQYWludENh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw5ICs1
MSw5IEBAIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZShE
b2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjCiAKIGRvdWJsZSBQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXNwb25zYWJs
ZURvY3VtZW50KCkgfHwgIXJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCisgICAg
aWYgKCFyZXNwb25zaWJsZURvY3VtZW50KCkgfHwgIXJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpCiAgICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIHJlc3BvbnNhYmxlRG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0aW8oKTsKKyAgICByZXR1cm4gcmVz
cG9uc2libGVEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOwogfQog
CiAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS8jcmVnaXN0
ZXJpbmctY3VzdG9tLXBhaW50CkBAIC0xMjAsMTEgKzEyMSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsCiAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUs
IGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGF1dG8gcGFpbnREZWZpbml0aW9u
ID0gc3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7
IG5hbWUsIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1
bWVudHMgfSk7CisgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFp
bnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnRDb25zdHJ1Y3Rv
ciwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50
cyB9KTsKICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERl
ZmluaXRpb24pKTsKIAogICAgIC8vIEZJWE1FOiBjb25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9u
IChzdGVwIDIyKS4KIAorICAgIGlmIChyZXNwb25zaWJsZURvY3VtZW50KCkgJiYgcmVzcG9uc2li
bGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAgICAgIHJlc3BvbnNpYmxlRG9jdW1lbnQo
KS0+cmVuZGVyVmlldygpLT5yZXBhaW50Um9vdENvbnRlbnRzKCk7CisKICAgICByZXR1cm4geyB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaAppbmRleCAyMzI3MWYxNTQyOTE0Yjg1YjRiMjVmNzkxOTJlYTRjZWNjYThhNTUwLi4w
ZDFjOWRhMDYyODc0OWVmMmMxYmU1Mzg4MDdmYzZlMzljY2U4MjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3
LDYgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiB7CiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAgICBjb25zdCBKU0M6OlN0cm9uZzxK
U0M6OkpTT2JqZWN0PiBwYWludENvbnN0cnVjdG9yOwogICAgICAgICBjb25zdCBSZWY8Q1NTUGFp
bnRDYWxsYmFjaz4gcGFpbnRDYWxsYmFjazsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4g
aW5wdXRQcm9wZXJ0aWVzOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3Vt
ZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5k
ZXggZjAxNTY0ZDg2N2MxMGFhY2Y5Y2YwYzFkZjY5MDY1Y2ZlZjJkNzVjNi4uMDMxOWM4MmM4Nzg2
NzI3MWU1Mjc3ZmI2OTI2NmM5ZWFlN2U2ZjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUm
Jik7CiAKLSAgICBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KLSAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBEb2N1bWVudCogcmVzcG9u
c2libGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBE
b2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAyZmRhNGIxNjNiMjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQwYjRjN2M5Li4wNTIxY2MwMjY3M2Nm
MjdiYjk3NjJkZjI1ZDg0ODBkMWM2ZWJjOTRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgt
MTEtMDggIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWlu
dCBjYWxsYmFjaywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sOgor
CiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4K
IAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBh
bmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNw
YWludCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhl
aWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+
PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
MTBjZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAw
IDYwMCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVj
dCAwIDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUw
KQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Fu
aW1hdGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10
cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJl
Zj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRp
ZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQv
d29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0
aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBw
cm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3Ry
aW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQor
CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAg
IH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+
CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygp
OworICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0
V29ya2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3
YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7Cisg
IH0sIDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJl
Y3RzID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2lu
ZG93LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVw
YWludHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVt
bXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2lu
ZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVy
bmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHByZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8
L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBh
aW50KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsK
KyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0i
cGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZh
MTY1ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFi
bGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVk
IiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJv
cGVydGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0
cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0i
dGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFBy
b3BlcnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdl
b20sIHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJyku
dG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQi
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAg
ICB9CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7
CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0
KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENv
bnRlbnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21p
c2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFBy
b3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisK
KzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWlu
dCk7CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0
OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rp
dj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRhMjllMGVlYWY1
Mjc3YWYwNWE0OTcxNjg1MWU2Y2MxZDg0ODBlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdp
ZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4K
KyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2Pgor
ICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29u
c3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1
Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkODE5YmNiZTgyNGYzZmI0ZDU0ZDY3OGM4ZTY3M2M0MjRl
OGU1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9
dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhy
ZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIGRvIG5vdCBjcmFzaCBpZiB0aGUg
Y29uc3RydWN0b3IgdGhyb3dzIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9k
cmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5
cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgdGhyb3cgIkhlbGxvISI7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7
CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisKKyAgY2xhc3MgTXlQYWlu
dDIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgIH0KKworICAgIHBhaW50KGN0eCwgZ2VvbSkg
eworICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICBjdHguZmlsbFJlY3QoMCwg
MCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50
KCdteS1wYWludCcsIE15UGFpbnQpOworICByZWdpc3RlclBhaW50KCdteS1wYWludDInLCBNeVBh
aW50Mik7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBp
bXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgLnBhaW50IHsKKyAg
ICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJv
ZHk+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogcGFpbnQo
bXktcGFpbnQpOyI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3Vu
ZC1pbWFnZTogcGFpbnQobXktcGFpbnQyKTsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKaW5kZXggMGFlNjg4
YmUwM2VmM2I1YzgxNzE1N2M4ZDM5YzJiMDQ4ZGZiMDUxZS4uZDlhNDY1NWIxZmZhNDU4ZDRmZmM4
ZGI5Nzk1NzQ4ZjI5YmIwMDIwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcHJvcGVydGllcy5odG1sCkBAIC0yMSw2ICsyMSwxMSBAQAogY2xhc3MgTXlQYWlu
dCB7CiAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWydoZWlnaHQnLCAn
LS1teS1wcm9wJywgJy0tbXktcmVnaXN0ZXJlZC1wcm9wJywgIi0tbmV2ZXItc3BlY2lmaWVkIl07
IH0KICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygpIHsgcmV0dXJuIFsnKicsICcqJywgJyon
XTsgfQorCisgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLm15QXR0cmlidXRlID0gNDI7IH0KKworICB0
ZXN0VGhpcygpIHsgcmV0dXJuIHRoaXMubXlBdHRyaWJ1dGU7IH0KKwogICBwYWludChjdHgsIGdl
b20sIHByb3BlcnRpZXMsIGFyZ3MpIHsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0
KCdoZWlnaHQnKS50b1N0cmluZygpLCBhcmdzWzBdLnRvU3RyaW5nKCkpOwogICAgIGFzc2VydF9l
cXVhbHMocHJvcGVydGllcy5nZXQoJ2hlaWdodCcpLnZhbHVlLCAxNTApOwpAQCAtMzAsNiArMzUs
OCBAQCBjbGFzcyBNeVBhaW50IHsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCd3
aWR0aCcpLCBudWxsKTsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCctLW5ldmVy
LXNwZWNpZmllZCcpLnRvU3RyaW5nKCksICcnKTsKIAorICAgIGFzc2VydF9lcXVhbHModGhpcy50
ZXN0VGhpcygpLCA0Mik7CisKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CiAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CiAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAn
cmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354629</attachid>
            <date>2018-11-12 19:38:04 -0800</date>
            <delta_ts>2018-11-12 20:19:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181112193804.patch</filename>
            <type>text/plain</type>
            <size>53823</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi5mN2FiYTRhZDFiNDExNzk3
NGIwNzM3Yzk0N2U5Njc1NTExNzY4NDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi40ZGMwMjE1OGVmOTYwNTIyOWVhYTdhY2NjZTJk
MmM2NzI3MGVkMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTgtMTEtMTIgIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFs
bHksIHdlIGZpeCB0d28gcmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFs
U2NvcGUgdG8gbmV2ZXIgYmUgZGVzdHJveWVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNrLmg6CisgICAgICAg
ICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAqIGNzcy9DU1NQYWludEltYWdl
VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlv
bik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21Q
YWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
dXN0b21QYWludEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzQW55V29ya2xldEdsb2JhbFNjb3Bl
QWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29w
ZTo6fldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFs
U2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRHbG9iYWxTY29wZTo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6cmVzcG9uc2libGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjppZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3Bv
bnNhYmxlRG9jdW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorCiAyMDE4LTEx
LTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQg
cHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5oCmluZGV4IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBk
YmIxYTRlMmViMDYuLjU5MzhhOTBkODlmOTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5
LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0cnVjdERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ug
d3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxU
eXBlIHVubGVzcyB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVj
dChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25z
dHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYs
IGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
Y29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUs
IGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQp
OwogCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNv
bnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgw
ZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3NWNhMzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQz
NzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9F
cnJvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCBmYjVhNzU1NjgyZDE2MTQ2YTViODkyYjljNzVlN2EzNTYxNmE3YzYx
Li43Y2Q4MGU3NDE1N2ZmYWNmZGFlZDBjNjRlYTk5YmNlNDQyYzg4NmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTEyOCw3ICsxMjgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsbwogCiBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiwgV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUp
CiB7Ci0gICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0
KCkud29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIEFTU0VSVCh3b3JrbGV0R2xvYmFs
U2NvcGUuc2NyaXB0KCkpOworICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2Jh
bFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAgICAgQVNTRVJU
KGNvbnRleHRXcmFwcGVyKTsKICAgICByZXR1cm4gY29udGV4dFdyYXBwZXItPnByb3h5KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggMzdiMGNk
ZWNhNjUzNTk5ZTk5YmI2YTkwMjYzZTgyYzE1NDkxZDE1YS4uZTk4NDEwYmVlZTM3ZWFlYzIyMzIw
ZmY0YThjNmI4MjMzYmE2MzRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmNwcApAQCAtMTA2LDcgKzEwNiw5IEBAIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjCiAj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29w
ZSkKIHsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLndvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOworICAgIGlmICghd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gd29ya2xl
dEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2Jh
bEV4ZWMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaApp
bmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5ZTBmOGRhZGMxMTVjLi4wYzAzZjBhZmJk
NzEyNDQ5ZWRkMDcxMzZkNjUzNTc3YWVkNzRkZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dENhbGxiYWNrLmgKQEAgLTMxLDE2ICszMSwxOCBAQAogI2luY2x1ZGUgIkNTU1BhaW50U2l6ZS5o
IgogI2luY2x1ZGUgIkNhbGxiYWNrUmVzdWx0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eU1h
cFJlYWRPbmx5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ7CiAKLWNsYXNz
IENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwg
cHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK2NsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENT
U1BhaW50Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgewogcHVibGljOgogICAg
IHVzaW5nIEFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjazsKIAotICAgIHZpcnR1
YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQmLCBDU1NQYWludFNpemUmLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRs
ZUV2ZW50KEpTQzo6SlNWYWx1ZSwgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQmLCBDU1NQYWludFNp
emUmLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0g
MDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJhY2soKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA4Njc1NmI1MWQ0MTIzZWMyMjYyNWUzMWNj
MzE5ZDg3NTMzNDAxZWQ2Li43MmI1MjNkMjRlZGI3OWQyMjUzMjYxZWVjOWMyMGIzMTQ0NmRkMTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCkBAIC0yNiw0ICsyNiw1
IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIENhbGxiYWNrVGhpc09iamVjdD1hbnkKIF0gY2Fs
bGJhY2sgQ1NTUGFpbnRDYWxsYmFjayA9IHZvaWQgKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEIGNv
bnRleHQsIENTU1BhaW50U2l6ZSBzaXplLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkgc3R5bGVN
YXAsIHNlcXVlbmNlPFVTVlN0cmluZz4gYXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YWludEltYWdlVmFsdWUuaAppbmRleCBiNmI2OWM4ZjcxNDBhNDhjMzNjYmEzNjc4ZDI2ZWQyMDYy
ZDdlYmQwLi40M2JjYzFjYWNkODBlMWI2OTgwYTkyNzUxZjc4ZTViYjA1MzkzMmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oCkBAIC00MCw2ICs0MCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUGFpbnRJbWFnZVZhbHVlKG5hbWUs
IFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5k
ZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBD
U1NQYWludEltYWdlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gb3RoZXIu
bV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzViMGI4ZDQx
YTI5NDRkYzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4uZDliZGUyODdmMzMxMDBiNDcwMTFkNDQ1
ZWMyMDEyNGU0ZGQ0NzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NL
ZXlmcmFtZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NLZXlmcmFtZXNSdWxlLmgiCisjaW5jbHVkZSAi
Q1NTUGFpbnRJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZVJ1bGVDb2xsZWN0b3Iu
aCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlBhaXIu
aCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgpAQCAtMTcwOCw2ICsxNzEwLDE4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2Fk
CiAgICAgaWYgKGlzSW5oZXJpdCAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHko
aWQpKQogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPENT
U1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkgJiYgZG9jdW1lbnQoKS5wYWludFdvcmts
ZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhl
ICJkb2N1bWVudCBwYWludCByZWdpc3RyYXRpb24gbWFwIiBmcm9tIHRoZSBzcGVjLCBvbmNlIGl0
IGlzIGltcGxlbWVudGVkLgorICAgICAgICBhdXRvJiBwYWludFdvcmtsZXQgPSAqZG9jdW1lbnQo
KS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBpZiAoYXV0
byogcmVnaXN0cmF0aW9uID0gcGFpbnRXb3JrbGV0LnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChk
b3duY2FzdDxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpLm5hbWUoKSkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiByZWdpc3RyYXRpb24tPmlucHV0UHJvcGVy
dGllcykKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5hZGRDdXN0b21QYWludFdhdGNo
UHJvcGVydHkocHJvcGVydHkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICAvLyBV
c2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxkZXIuCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVBy
b3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1
c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAx
ZTZiYzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBjMjU0OWM1Li45OGVjYWNjOTg2MGI2Zjk5
NWNjNzg1NmU1N2JmMzczYTNlODEyYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1
MjgsNiArMjUyOCwxMyBAQCB2b2lkIERvY3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQog
ICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG1f
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIHsKKyAgICAgICAgbV9wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgICAgIG1fcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgPSBudWxscHRyOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9oYXNQcmVwYXJlZEZv
ckRlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIC8vIE5vdGUgdGhhdCBtX3BhZ2VDYWNoZVN0YXRl
IGNhbiBiZSBEb2N1bWVudDo6QWJvdXRUb0VudGVyUGFnZUNhY2hlIGlmIG91ciBmcmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGQ4ZjYw
ZTI5ZDM5Y2ZmYTk5ODIwMWQ5MjhhZGE4YjM3MjRmNmJiYjkuLjliYTQ4MTlkZjc1MTkyZjJmODRj
NjRhZTFmNzNjNDM4MmVkMmIzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBKU0M6OlZNJiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojp2bSgpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQogICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLnZtKCk7CisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+
dm0oKTsKICNlbmRpZgogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKaW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIwZDU4MjUwOGQwMmQ4NTM4NmE0MGE1OC4uMTdmYTgx
OGUyNWM0ZjcyOTY5M2NmODUyZDI1NDk0NzhkNDE5YWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTQwLDEx
ICs0MCwxMyBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBh
aW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0cnVjdERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGFyZ3VtZW50cykKLSAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJh
Y2suZ2V0KCkpCisgICAgOiBtX3BhaW50Q2FsbGJhY2sobWFrZVdlYWtQdHIoZGVmaW5pdGlvbi5w
YWludENhbGxiYWNrLmdldCgpKSkKKyAgICAsIG1fcGFpbnRDb25zdHJ1Y3RvcihkZWZpbml0aW9u
LnBhaW50Q29uc3RydWN0b3IuZ2V0KCkpCiAgICAgLCBtX2lucHV0UHJvcGVydGllcyhkZWZpbml0
aW9uLmlucHV0UHJvcGVydGllcykKICAgICAsIG1fZWxlbWVudChtYWtlV2Vha1B0cihlbGVtZW50
KSkKICAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKQEAgLTU2LDEzICs1OCwxMyBAQCBDdXN0
b21QYWludEltYWdlOjp+Q3VzdG9tUGFpbnRJbWFnZSgpID0gZGVmYXVsdDsKIAogSW1hZ2VEcmF3
UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBkZXN0U2l6ZSkKIHsKLSAgICBpZiAoIW1fZWxl
bWVudCB8fCAhbV9lbGVtZW50LT5lbGVtZW50KCkpCisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIW1f
ZWxlbWVudC0+ZWxlbWVudCgpIHx8ICFtX3BhaW50Q29uc3RydWN0b3IgfHwgIW1fcGFpbnRDYWxs
YmFjaykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAg
IEFTU0VSVCghbV9lbGVtZW50LT5uZWVkc0xheW91dCgpKTsKICAgICBBU1NFUlQoIW1fZWxlbWVu
dC0+ZWxlbWVudCgpLT5kb2N1bWVudCgpLm5lZWRzU3R5bGVSZWNhbGMoKSk7CiAKLSAgICBKU0NT
U1BhaW50Q2FsbGJhY2smIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8SlNDU1NQYWludENhbGxiYWNr
Jj4obV9wYWludENhbGxiYWNrLmdldCgpKTsKKyAgICBKU0NTU1BhaW50Q2FsbGJhY2smIGNhbGxi
YWNrID0gc3RhdGljX2Nhc3Q8SlNDU1NQYWludENhbGxiYWNrJj4oKm1fcGFpbnRDYWxsYmFjay5n
ZXQoKSk7CiAgICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGNhbGxiYWNrLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xMDMsNyArMTA1
LDIxIEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYXV0byBzaXplID0gQ1NTUGFpbnRT
aXplOjpjcmVhdGUoZGVzdFNpemUud2lkdGgoKSwgZGVzdFNpemUuaGVpZ2h0KCkpOwogICAgIGF1
dG8gcHJvcGVydHlNYXAgPSBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHk6OmNyZWF0ZShXVEZNb3Zl
KHByb3BlcnR5VmFsdWVzKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFpbnRDYWxsYmFjay0+
aGFuZGxlRXZlbnQoKmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7Cisg
ICAgYXV0byYgdm0gPSAqbV9wYWludENvbnN0cnVjdG9yLT52bSgpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9wYWludENvbnN0cnVjdG9yLT5nbG9iYWxP
YmplY3QoKTsKKworICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7
CisgICAgSlNDOjpBcmdMaXN0IG5vQXJnczsKKyAgICBKU0M6OkpTVmFsdWUgdGhpc09iamVjdCA9
IHsgSlNDOjpjb25zdHJ1Y3QoJnN0YXRlLCB7IG1fcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSB9LCBu
b0FyZ3MsICJGYWlsZWQgdG8gY29uc3RydWN0IHBhaW50IGNsYXNzIikgfTsKKworICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZz
dGF0ZSwgc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENhbGxiYWNr
LT5oYW5kbGVFdmVudChXVEZNb3ZlKHRoaXNPYmplY3QpLCAqY29udGV4dCwgc2l6ZSwgcHJvcGVy
dHlNYXAsIG1fYXJndW1lbnRzKTsKICAgICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFja1Jl
c3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5v
dGhpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAppbmRleCBkMzA2NzkzOTc3MjAwY2NkYmNkYzllMjNiNzZjNTMwNzgyMmNm
NzY2Li5lNDkwZDA0Nzc5MjZhZWNkMzU2NjE0Y2NhNTNmYWE3YjlhMjdiZmYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBA
IC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUg
IlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNTYsOCBAQCBwcml2
YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bikgZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmlu
YWw7CiAKLSAgICBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gbV9wYWludENhbGxiYWNrOworICAgIFdl
YWtQdHI8Q1NTUGFpbnRDYWxsYmFjaz4gbV9wYWludENhbGxiYWNrOworICAgIEpTQzo6V2VhazxK
U0M6OkpTT2JqZWN0PiBtX3BhaW50Q29uc3RydWN0b3I7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9p
bnB1dFByb3BlcnRpZXM7CiAgICAgV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBtX2VsZW1lbnQ7CiAg
ICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjZmRiN2I1MzdmY2I3ZmI5ZDA1ODY1ODQ1
M2JiZWYxYWExOGI0ZmNhLi45ZjY1OWZlNWE3ODRkOTUzY2RhMjE0NjEyNDYzMjBhZTRiN2E3NTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTIzLDEwICsyMywxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAKLSNpbmNsdWRlICJDb250ZW50RGF0YS5oIgorI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUu
aCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJDb250ZW50RGF0YS5o
IgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0Lmgi
CiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKQEAgLTgwLDEwICs4MiwxOSBAQCBzdHJ1Y3QgU2Ft
ZVNpemVBc1JlbmRlclN0eWxlIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNV
UklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgZGVsZXRpb25DaGVjazsKICNlbmRpZgorI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGJvb2wgaGFzQ3VzdG9tUGFpbnRXYXRjaFByb3Bl
cnRpZXM7CisjZW5kaWYKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlbmRlclN0eWxlKSA9
PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgIlJlbmRlclN0eWxlIHNob3VsZCBzdGF5
IHNtYWxsIik7CiAKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRlclN0eWxlKiwgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+JiBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFw
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJTdHls
ZSosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+Pj4gbWFwOworICAgIHJldHVybiBt
YXA7Cit9CisKIFJlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxlKCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVuZGVyU3R5bGU+IHN0eWxlIHsgQ3JlYXRlRGVmYXVs
dFN0eWxlIH07CkBAIC0yMDYsNiArMjE3LDEyIEBAIGlubGluZSBSZW5kZXJTdHlsZTo6UmVuZGVy
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykKICAgICAsIG1faW5oZXJp
dGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3RoZXIu
bV9zdmdTdHlsZSkKIHsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAob3Ro
ZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3Rv
bVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5n
Pj4oKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpOworICAg
IH0KKyNlbmRpZgogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0
eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCkBAIC0yMjEsNiArMjM4LDIwIEBAIGlubGluZSBSZW5k
ZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIGEsIFJlbmRlclN0eWxlJiYgYikKICAg
ICAsIG1fY2FjaGVkUHNldWRvU3R5bGVzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2NhY2hlZFBzZXVkb1N0
eWxlcywgV1RGTW92ZShiLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkpCiAgICAgLCBtX3N2Z1N0eWxl
KGEubV9zdmdTdHlsZS5yZXBsYWNlKFdURk1vdmUoYi5tX3N2Z1N0eWxlKSkpCiB7CisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGEubV9oYXNDdXN0b21QYWludFdhdGNoUHJv
cGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1
ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oV1RGTW92ZSgqY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllc01hcCgpLmdldCgmYSkpKSk7CisgICAgICAgIGEubV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkucmVtb3ZlKCZhKTsKKyAgICB9CisgICAgaWYgKGIubV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3Bl
cnRpZXMgPSB0cnVlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCku
YWRkKCZhLCBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oV1RGTW92ZSgqY3VzdG9t
UGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmYikpKSk7CisgICAgICAgIGIubV9oYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZiKTsKKyAgICB9CisjZW5kaWYKIH0KIAogUmVu
ZGVyU3R5bGU6On5SZW5kZXJTdHlsZSgpCkBAIC0yMjksNiArMjYwLDEwIEBAIFJlbmRlclN0eWxl
Ojp+UmVuZGVyU3R5bGUoKQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFt
X2RlbGV0aW9uSGFzQmVndW4pOwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBtX2hhc0N1c3RvbVBhaW50V2F0
Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01h
cCgpLnJlbW92ZSh0aGlzKTsKKyNlbmRpZgogfQogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6
cmVwbGFjZShSZW5kZXJTdHlsZSYmIG5ld1N0eWxlKQpAQCAtMzYyLDYgKzM5NywxMSBAQCBib29s
IFJlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QK
ICAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhCiAgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEgPT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YQogICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEgPT0gb3RoZXIubV9pbmhl
cml0ZWREYXRhCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgICAgICYmICgoIW1f
aGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgJiYgIW90aGVyLm1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMpCisgICAgICAgICAgICB8fCAobV9oYXNDdXN0b21QYWludFdhdGNoUHJv
cGVydGllcyAmJiBvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzCisgICAgICAg
ICAgICAgICAgJiYgKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQodGhpcykg
PT0gKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpCisjZW5k
aWYKICAgICAgICAgJiYgbV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCkBAIC05
NTgsNiArOTk4LDE3IEBAIHN0YXRpYyBib29sIHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdlUmVxdWly
ZXNSZXBhaW50KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmCiAgICAgICAgIHx8IGZpcnN0
LmltYWdlUmVuZGVyaW5nICE9IHNlY29uZC5pbWFnZVJlbmRlcmluZzsKIH0KIAorI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRj
aFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoIW1faGFzQ3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVy
dGllcyA9IHRydWU7CisgICAgICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5h
ZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCkpOworICAgIH0KKyAg
ICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpLT5hZGQobmFtZSk7
Cit9CisjZW5kaWYKKwogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNv
bnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW9uU2V0PFN0eWxlRGlmZmVyZW5jZUNvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0eT4mIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29u
c3QKIHsKICAgICBpZiAoIXJlcXVpcmVzUGFpbnRpbmcoKnRoaXMpICYmICFyZXF1aXJlc1BhaW50
aW5nKG90aGVyKSkKQEAgLTk3OSw2ICsxMDMwLDQyIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5n
ZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNldDxTdHls
CiAgICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KCptX3Jh
cmVJbmhlcml0ZWREYXRhLCAqb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKFVOTElL
RUxZKG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgfHwgb3RoZXIubV9oYXNDdXN0b21Q
YWludFdhdGNoUHJvcGVydGllcykpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qg
bmVlZCB0byB1c2UgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBoZXJlLgorICAgICAgICBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yIGV4dHJhY3RvcigoRWxlbWVudCopIG51bGxwdHIpOworCisgICAgICAg
IGZvciAoYXV0byogd2F0Y2hQcm9wZXJ0aWVzTWFwIDogeyBjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpLCBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCku
Z2V0KCZvdGhlcikgfSkgeworICAgICAgICAgICAgaWYgKCF3YXRjaFByb3BlcnRpZXNNYXApCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6
ICp3YXRjaFByb3BlcnRpZXNNYXApIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlQTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlQjsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUobmFtZSkgJiYgZ2V0Q3VzdG9tUHJv
cGVydHkobmFtZSkgJiYgb3RoZXIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWVBID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpnZXRD
dXN0b21Qcm9wZXJ0eShuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQiA9IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqb3RoZXIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghcHJvcGVydHlJRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZUEgPSBleHRyYWN0b3IudmFsdWVGb3JQcm9wZXJ0eWlu
U3R5bGUoKnRoaXMsIHByb3BlcnR5SUQpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBl
eHRyYWN0b3IudmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUob3RoZXIsIHByb3BlcnR5SUQpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgodmFsdWVBICYmICF2YWx1ZUIp
IHx8ICghdmFsdWVBICYmIHZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUEpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCEoKnZhbHVlQSA9PSAqdmFsdWVCKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA5ODFiOGVlZWViZTk2YTYxYjFh
YWQzNjMyNDJkNzRlOTY4MWMwM2VkLi5lNzhlYjM5MzRhYjkyM2MzNzQ5YmEwNTc1YTRiMGI1MzIw
MzUyMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aApAQCAtMTI1Myw2ICsxMjUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcGxlUGF5QnV0
dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGFwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUp
KTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICB2b2lkIGFk
ZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpOworI2VuZGlmCisK
ICAgICAvLyBTdXBwb3J0IGZvciBwYWludC1vcmRlciwgc3Ryb2tlLWxpbmVjYXAsIHN0cm9rZS1s
aW5lam9pbiwgYW5kIHN0cm9rZS1taXRlcmxpbWl0IGZyb20gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5v
cmcvcGFpbnQvLgogICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIG9yZGVyKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcGFpbnRPcmRlciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG9yZGVyKSk7IH0KICAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxQYWludE9yZGVyPihtX3JhcmVJbmhlcml0ZWREYXRhLT5wYWludE9yZGVy
KTsgfQpAQCAtMTg2NCw2ICsxODY4LDEwIEBAIHByaXZhdGU6CiAKICAgICBEYXRhUmVmPFNWR1Jl
bmRlclN0eWxlPiBtX3N2Z1N0eWxlOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisg
ICAgYm9vbCBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzIHsgZmFsc2UgfTsKKyNlbmRp
ZgorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
ICAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1biB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlNzNlN2E5Mzg2NDAyNzNmNDIzNWJmYmY1ZDUw
YWQzN2FjMzU0YzE0Li4wZDYxMmJhNjFkOTk2NTQyZjQ4MzdjNmIzYmI4MDYyZTcxZjA4ODViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzIsNiArMTcyLDcgQEAKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3QuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KQEAgLTIzNTIsNiAr
MjM1MywxMSBAQCBib29sIEludGVybmFsczo6aXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3Vt
ZW50SWRlbnRpZmllcikgY29uc3QKICAgICByZXR1cm4gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01h
cCgpLmNvbnRhaW5zKG1ha2VPYmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+
KGRvY3VtZW50SWRlbnRpZmllcikpOwogfQogCitib29sIEludGVybmFsczo6aXNBbnlXb3JrbGV0
R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFXb3JrbGV0R2xvYmFsU2Nv
cGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKS5pc0VtcHR5KCk7Cit9CisKIFN0cmluZyBJ
bnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCAwZTNlOWMzNjM4MmE5MWQzYTRiZDVkMDMwZGM3YzVhM2Q4
NWQ0OGVmLi42YzIzZDE0M2I1ZmQ4MzljOTA3MmE0NmE1YjhmYzE1NzQ5NDUwNzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM4MCw2ICszODAsOCBAQCBwdWJsaWM6CiAgICAg
dWludDY0X3QgZG9jdW1lbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29uc3Q7CiAgICAg
Ym9vbCBpc0RvY3VtZW50QWxpdmUodWludDY0X3QgZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdDsK
IAorICAgIGJvb2wgaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0OworCiAgICAg
U3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29u
c3Q7CiAKICAgICBSZWZQdHI8V2luZG93UHJveHk+IG9wZW5EdW1teUluc3BlY3RvckZyb250ZW5k
KGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCBmNGNkYTE1YTcxYjk5ZDUyOWY2ZTZhZjEzODg4MTdlYjQ5YzUwNzk3Li45NjE0NjZkYzJlNDg5
N2EwYTk3NzAwNzFmODQ5ZDAzNDJmNzI1YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCkBAIC02NjgsNiArNjY4LDggQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGRvY3VtZW50SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7
CiAgICAgYm9vbGVhbiBpc0RvY3VtZW50QWxpdmUodW5zaWduZWQgbG9uZyBsb25nIGRvY3VtZW50
SWRlbnRpZmllcik7CiAKKyAgICBib29sZWFuIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUo
KTsKKwogICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihEb2N1bWVu
dCBkb2N1bWVudCk7CiAKICAgICBQcm9taXNlPHZvaWQ+IGNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMjlhMjAwZDEwZGYzZmQ2YjdhY2ZiYTk3ODhl
YzFjNGJhOGEwYTQzLi5hNWUzYjQwY2ZkMGVhNjJkYWY5ZTViMGEwYzhkYTk0M2Q4NDMwODQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSlNET01Db252
ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwxMSArNDksMjAgQEAg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50
JiBkb2N1bWVudCwgU2NyaXB0U291cmMKIHsKIH0KIAordm9pZCBQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKK3sKKyAgICB7CisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgbV9wYWludERl
ZmluaXRpb25NYXAuY2xlYXIoKTsKKyAgICB9CisgICAgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVw
YXJlRm9yRGVzdHJ1Y3Rpb24oKTsKK30KKwogZG91YmxlIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIHsKLSAgICBpZiAoIXJlc3BvbnNhYmxlRG9jdW1l
bnQoKSB8fCAhcmVzcG9uc2FibGVEb2N1bWVudCgpLT5kb21XaW5kb3coKSkKKyAgICBpZiAoIXJl
c3BvbnNpYmxlRG9jdW1lbnQoKSB8fCAhcmVzcG9uc2libGVEb2N1bWVudCgpLT5kb21XaW5kb3co
KSkKICAgICAgICAgcmV0dXJuIDEuMDsKLSAgICByZXR1cm4gcmVzcG9uc2FibGVEb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworICAgIHJldHVybiByZXNwb25zaWJs
ZURvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7CiB9CiAKIC8vIGh0
dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1j
dXN0b20tcGFpbnQKQEAgLTEyMCwxMSArMTMwLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwK
ICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6
OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwg
cGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9
KTsKKyAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmlu
aXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludENvbnN0cnVjdG9yLCBwYWlu
dC5yZWxlYXNlTm9uTnVsbCgpLCBpbnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwog
ICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlv
bikpOwogCiAgICAgLy8gRklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAg
MjIpLgogCisgICAgaWYgKHJlc3BvbnNpYmxlRG9jdW1lbnQoKSAmJiByZXNwb25zaWJsZURvY3Vt
ZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICAgICAgcmVzcG9uc2libGVEb2N1bWVudCgpLT5yZW5k
ZXJWaWV3KCktPnJlcGFpbnRSb290Q29udGVudHMoKTsKKwogICAgIHJldHVybiB7IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
CmluZGV4IDIzMjcxZjE1NDI5MTRiODViNGIyNWY3OTE5MmVhNGNlY2NhOGE1NTAuLjcxZDNiOTgw
NjhlNjMzYjMwNGM5M2NiYzUxZGUzZDY5N2ExMmMzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsNiArNDgs
NyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nIG5hbWU7CisgICAgICAgIGNvbnN0IEpTQzo6U3Ryb25nPEpTQzo6SlNP
YmplY3Q+IHBhaW50Q29uc3RydWN0b3I7CiAgICAgICAgIGNvbnN0IFJlZjxDU1NQYWludENhbGxi
YWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dFBy
b3BlcnRpZXM7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwpA
QCAtNTUsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxQYWludERlZmluaXRpb24+PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyBBU1NFUlQobV9w
YWludERlZmluaXRpb25Mb2NrLmlzTG9ja2VkKCkpOyByZXR1cm4gbV9wYWludERlZmluaXRpb25N
YXA7IH0KICAgICBMb2NrJiBwYWludERlZmluaXRpb25Mb2NrKCkgeyByZXR1cm4gbV9wYWludERl
ZmluaXRpb25Mb2NrOyB9CiAKKyAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFs
OworCiBwcml2YXRlOgogICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2Ny
aXB0U291cmNlQ29kZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKaW5kZXggYTBkMzAwOWRhOTNhYzQzYjE2ZTBkZDQwZDA0Y2Y4MmUwMGIy
NDBiNS4uNTMwZTM0ODg2MWM4MmViNzRkODJkNTBkMWYyMjIyMDEzZGU4ZDljNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zOSw3ICsz
OSw2IEBACiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lk
ZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogCkBAIC00OSwxMiAr
NDgsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYm
IGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1f
c2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9zY3JpcHQobWFrZVVu
aXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3NjcmlwdChz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1f
dG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKLSAgICAsIG1faWRlbnRp
ZmllcihtYWtlU3RyaW5nKCJXb3JrbGV0R2xvYmFsU2NvcGU6Il9zLCBJbnNwZWN0b3I6OklkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKSkKICAgICAsIG1fZXZlbnRRdWV1ZSgq
dGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQorICAgICwgbV9pZGVudGlmaWVyKGdl
bmVyYXRlT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZT4o
KSkKIHsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKS5h
ZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworCiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgp
OwogICAgIG1fanNSdW50aW1lRmxhZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpLmphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCk7CiAgICAgQVNTRVJUKGRv
Y3VtZW50LnBhZ2UoKSk7CkBAIC02Niw3ICs2OCwyMyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6Oldv
cmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBj
bwogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKIHsKICAgICByZW1v
dmVGcm9tQ29udGV4dHNNYXAoKTsKLSAgICBtX3NjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcigpLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgIGFsbFdvcmtsZXRHbG9iYWxT
Y29wZXNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFs
U2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0KTsK
KyAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOworICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRy
YWNrZXIoKTsKKyAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOworICAgIG1fc2NyaXB0LT52
bSgpLm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOworICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKK30K
KworYXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKSAt
PiBXb3JrbGV0R2xvYmFsU2NvcGVzTWFwJgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxX
b3JrbGV0R2xvYmFsU2NvcGVzTWFwPiBzY29wZXM7CisgICAgcmV0dXJuIHNjb3BlczsKIH0KIAog
U3RyaW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKQEAgLTg4LDcgKzEwNiw3
IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCiAKIGJvb2wgV29ya2xldEds
b2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJuICFtX3NjcmlwdCB8
fCBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTEw
LDMwICsxMjgsMzAgQEAgVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRp
b25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4mJiBzdGFjaykKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2Rv
Y3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVS
TCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7CiB9CiAKIHZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlmICghbV9kb2N1bWVu
dCkKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFt
ZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3Vy
Y2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdl
KCksIDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1f
ZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4o
KSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXb3Jr
bGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjph
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBp
c0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50
LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElk
ZW50aWZpZXIpOworICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVz
c2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNh
bGxTdGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
aAppbmRleCBmMDE1NjRkODY3YzEwYWFjZjljZjBjMWRmNjkwNjVjZmVmMmQ3NWM2Li4zODhiMzA5
YjRkZThmYzRjMmVjY2Y3YTQyYTcyYTFhMThhMmQzZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzgsMjkgKzM4LDM0IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCitlbnVtIFdv
cmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdvcmtsZXRHbG9iYWxT
Y29wZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50
aWZpZXJUeXBlPjsKKwogY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50
ZWQ8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICB+V29ya2xldEds
b2JhbFNjb3BlKCk7CiAKKyAgICB1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVzTWFwID0gSGFzaE1h
cDxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyLCBXb3JrbGV0R2xvYmFsU2NvcGUqPjsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV29ya2xldEdsb2JhbFNjb3Blc01hcCYgYWxsV29ya2xl
dEdsb2JhbFNjb3Blc01hcCgpOworCiAgICAgdmlydHVhbCBib29sIGlzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KICAgICBTdHJpbmcgb3JpZ2lu
KCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlKCk7CiAKICAgICB1c2lu
ZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlciYgc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7
IH0KKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3Jp
cHQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogCkBAIC03NCwxMSArNzksMTMg
QEAgcHVibGljOgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxhZ3MoKSBjb25z
dCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRlc3RydWN0aW9uKCk7CisKIHByb3RlY3RlZDoKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOwogCi0gICAgRG9jdW1lbnQqIHJlc3BvbnNh
YmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0gICAgY29uc3QgRG9j
dW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50Lmdl
dCgpOyB9CisgICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2Rv
Y3VtZW50LmdldCgpOyB9CisgICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xMTgsMTAgKzEyNSw5IEBAIHByaXZhdGU6CiAgICAg
V2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwotICAgIFVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsK
IAogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAgU3RyaW5nIG1faWRl
bnRpZmllcjsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBwcm9wZXJs
eSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKQEAgLTEyOSw2ICsxMzUsOCBAQCBwcml2
YXRlOgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKICAgICBTY3Jp
cHRTb3VyY2VDb2RlIG1fY29kZTsKKworICAgIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDA1
NWQ3ZjExNjhlZWI1YWNmMDQyZmYxNGJmYzk5YzczZGNjYjhmMzcuLjExNjg5NzhlNDI0ZGYxYzQ4
ZTQ2MWM1ODg5Yzc4ZmNkYmEwNjdiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU5LDEzICs1OSwxNSBAQCBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2Jh
bFNjb3BlKiB3b3JrbGV0R2xvYgogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcigpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgbV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9IG51bGxwdHI7Cisg
ICAgZm9yYmlkRXhlY3V0aW9uKCk7CisKICAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyKSB7CiAgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFy
ZGVkT2JqZWN0cygpOwogICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENv
bnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgIG1fY29uc29sZUNsaWVudCA9IG51bGxwdHI7
CiAgICAgfQorICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1f
dm0gPSBudWxscHRyOwogfQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRF
eGVjdXRpb24oKQpAQCAtODIsNiArODQsOSBAQCBib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
Ojppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlm
IChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKICAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtOTAs
NiArOTUsOSBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlm
IChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKICAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtMTMy
LDYgKzE0MCw5IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRo
U3ViY2xhc3MoKQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkK
IHsKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPihtX3dvcmtsZXRHbG9iYWxTY29wZSkp
IHsKICAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9i
YWxTY29wZT4oKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmZGE0YjE2M2IyMWVkMWMyZjky
MTIyYzc2MDMxMjQyZDBiNGM3YzkuLjNhZDQxODhlODliMTdlYmJjMmFkYWMzNmIwNmVjOTJiMTk3
MjIxMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMS0xMiAgSnVzdGluIE1pY2hhdWQg
IDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBz
aG91bGQgcGFzcyAndGhpcycgY29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWlu
dCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1y
ZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtcmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYW5pbWF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20t
cGFpbnQvY29uc3RydWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3Rv
bS1wYWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yYWYtbGVhay1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxl
LmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3Vt
ZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRl
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+
CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4Owor
ICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJw
YWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MTBjZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAw
IDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQor
ICAocmVjdCAwIDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAx
NTAgMTUwKQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0
YzQ4Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5h
YmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1
ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHBy
b3BlcnRpZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFm
dHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9
InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQ
cm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBn
ZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcp
LnRvU3RyaW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVk
IjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAg
ICAgfQorCisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQp
OworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5k
dW1wQXNUZXh0KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBh
aW50cygpOworICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2Ug
aW1wb3J0V29ya2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxk
IGdvIGF3YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnll
Jyk7CisgIH0sIDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVw
YWludFJlY3RzID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNr
aW5nUmVwYWludHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2
YXIgZHVtbXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3Rz
ID0gd2luZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93
LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHByZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAw
MCk7Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1h
Z2U6IHBhaW50KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAx
NTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRp
diBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFi
YjBiOTZhMTY1ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBF
IGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdB
UElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBN
aWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdo
ZW4gcHJvcGVydGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczov
L2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIg
dHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBp
bnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChj
dHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1w
cm9wJykudG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9
ICJyZWQiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7
CisgICAgICB9CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhl
aWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7
Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRX
b3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyku
dGV4dENvbnRlbnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBh
IHByb21pc2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxl
LnNldFByb3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3Jp
cHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludCht
eS1wYWludCk7CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAg
aGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50
Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5
MjFiYzg3ZWE0NDg1NDc0YmQ4MmQyZmE0NDFkOWVhYzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgewor
ICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8
Ym9keT4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwv
ZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9k
aXY+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rp
dj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Nv
bnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY1YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4
MjI4ZDljYjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5h
YmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1
ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlm
IHRoZSBjb25zdHJ1Y3RvciB0aHJvd3MiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29k
ZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICB0aHJvdyAiSGVsbG8hIjsKKyAgICB9CisKKyAgICBwYWludChjdHgsIGdl
b20pIHsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0
KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBN
eVBhaW50MiB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBn
ZW9tKSB7CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVj
dCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVy
UGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50Mics
IE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9i
YWxTY29wZUFsaXZlKCkpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycp
LnN0eWxlLmJhY2tncm91bmQgPSAiZ3JlZW4iOworICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0
PgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDog
MTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5
bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNs
YXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48
L2Rpdj4KKyAgPGRpdiBpZD0ibGVha3MiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAx
NTBweDsgaGVpZ2h0OiAxNTBweDsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDNjZTc3N2M5NWM3OTgzYjM3NThlODMwNDFiNmZiNjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCB1c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3Qg
Y2F1c2UgdGhlIHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRp
ZCBub3QgbGVhaworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFr
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGMwYzUyOTJmZjAwNmJkMDA0ZDg3N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1s
CkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBu
YW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9t
aWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRo
YXQgcGFpbnQgd29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9
Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZy
YW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZy
YW1lPgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBh
aW50IGRvZXMgbm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQg
bGVha2VkLiIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWlu
dFNob3VsZERpZSgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgeworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICBpZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRH
bG9iYWxTY29wZUFsaXZlKCkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhhbmRs
ZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
LCAxMCk7CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAg
ICAgICBwYWludFNob3VsZERpZSgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJXb3JrbGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1s
CmluZGV4IDBhZTY4OGJlMDNlZjNiNWM4MTcxNTdjOGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTVi
MWZmYTQ1OGQ0ZmZjOGRiOTc5NTc0OGYyOWJiMDAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAK
IGNsYXNzIE15UGFpbnQgewogICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJu
IFsnaGVpZ2h0JywgJy0tbXktcHJvcCcsICctLW15LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVy
LXNwZWNpZmllZCJdOyB9CiAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBb
JyonLCAnKicsICcqJ107IH0KKworICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9
IDQyOyB9CisKKyAgdGVzdFRoaXMoKSB7IHJldHVybiB0aGlzLm15QXR0cmlidXRlOyB9CisKICAg
cGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhw
cm9wZXJ0aWVzLmdldCgnaGVpZ2h0JykudG9TdHJpbmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsK
ICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsK
QEAgLTMwLDYgKzM1LDggQEAgY2xhc3MgTXlQYWludCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9w
ZXJ0aWVzLmdldCgnd2lkdGgnKSwgbnVsbCk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVz
LmdldCgnLS1uZXZlci1zcGVjaWZpZWQnKS50b1N0cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRf
ZXF1YWxzKHRoaXMudGVzdFRoaXMoKSwgNDIpOworCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2
OyBpKyspewogICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewogICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9s
ZWFrcy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291
cmNlcy9sZWFrcy1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2Ri
ZGYyZTM0MDgzMGVjYjU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6
Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0
bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9y
ZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0
cyBkb24ndCBsZWFrIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMu
Y3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBw
eDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWlu
dCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citjb25z
dCBnbG9iYWxTY29wZSA9IHRoaXM7CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9t
LCBwcm9wZXJ0aWVzLCBhcmdzKSB7CisgICAgY29uc3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8g
TGVhayEKKyAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwg
MCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFr
ID0gdGhpczsKK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4K
KworPHNjcmlwdD4KK0NTUy5wYWludFdvcmtsZXQuYWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmFmLWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4
NGU3YWNjNTJjNTFhMWNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354636</attachid>
            <date>2018-11-12 20:19:05 -0800</date>
            <delta_ts>2018-11-13 19:41:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181112201904.patch</filename>
            <type>text/plain</type>
            <size>53964</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi5mN2FiYTRhZDFiNDExNzk3
NGIwNzM3Yzk0N2U5Njc1NTExNzY4NDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi40ZGMwMjE1OGVmOTYwNTIyOWVhYTdhY2NjZTJk
MmM2NzI3MGVkMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTgtMTEtMTIgIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFs
bHksIHdlIGZpeCB0d28gcmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFs
U2NvcGUgdG8gbmV2ZXIgYmUgZGVzdHJveWVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Xb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNrLmg6CisgICAgICAg
ICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAqIGNzcy9DU1NQYWludEltYWdl
VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlv
bik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21Q
YWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
dXN0b21QYWludEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzQW55V29ya2xldEdsb2JhbFNjb3Bl
QWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29w
ZTo6fldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFs
U2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRHbG9iYWxTY29wZTo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6cmVzcG9uc2libGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjppZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3Bv
bnNhYmxlRG9jdW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorCiAyMDE4LTEx
LTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQg
cHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5oCmluZGV4IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBk
YmIxYTRlMmViMDYuLjU5MzhhOTBkODlmOTZjMzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5
LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0cnVjdERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ug
d3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxU
eXBlIHVubGVzcyB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVj
dChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25z
dHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYs
IGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
Y29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUs
IGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQp
OwogCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNv
bnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgw
ZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3NWNhMzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQz
NzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9F
cnJvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCBmYjVhNzU1NjgyZDE2MTQ2YTViODkyYjljNzVlN2EzNTYxNmE3YzYx
Li43Y2Q4MGU3NDE1N2ZmYWNmZGFlZDBjNjRlYTk5YmNlNDQyYzg4NmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTEyOCw3ICsxMjgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsbwogCiBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiwgV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUp
CiB7Ci0gICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0
KCkud29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOworICAgIEFTU0VSVCh3b3JrbGV0R2xvYmFs
U2NvcGUuc2NyaXB0KCkpOworICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2Jh
bFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CiAgICAgQVNTRVJU
KGNvbnRleHRXcmFwcGVyKTsKICAgICByZXR1cm4gY29udGV4dFdyYXBwZXItPnByb3h5KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggMzdiMGNk
ZWNhNjUzNTk5ZTk5YmI2YTkwMjYzZTgyYzE1NDkxZDE1YS4uZTk4NDEwYmVlZTM3ZWFlYzIyMzIw
ZmY0YThjNmI4MjMzYmE2MzRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmNwcApAQCAtMTA2LDcgKzEwNiw5IEBAIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVG
cm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjCiAj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29w
ZSkKIHsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLndvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOworICAgIGlmICghd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gd29ya2xl
dEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2Jh
bEV4ZWMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaApp
bmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5ZTBmOGRhZGMxMTVjLi4wYzAzZjBhZmJk
NzEyNDQ5ZWRkMDcxMzZkNjUzNTc3YWVkNzRkZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dENhbGxiYWNrLmgKQEAgLTMxLDE2ICszMSwxOCBAQAogI2luY2x1ZGUgIkNTU1BhaW50U2l6ZS5o
IgogI2luY2x1ZGUgIkNhbGxiYWNrUmVzdWx0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eU1h
cFJlYWRPbmx5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ7CiAKLWNsYXNz
IENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwg
cHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK2NsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENT
U1BhaW50Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgewogcHVibGljOgogICAg
IHVzaW5nIEFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjazsKIAotICAgIHZpcnR1
YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQmLCBDU1NQYWludFNpemUmLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRs
ZUV2ZW50KEpTQzo6SlNWYWx1ZSwgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQmLCBDU1NQYWludFNp
emUmLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0g
MDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJhY2soKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA4Njc1NmI1MWQ0MTIzZWMyMjYyNWUzMWNj
MzE5ZDg3NTMzNDAxZWQ2Li43MmI1MjNkMjRlZGI3OWQyMjUzMjYxZWVjOWMyMGIzMTQ0NmRkMTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCkBAIC0yNiw0ICsyNiw1
IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIENhbGxiYWNrVGhpc09iamVjdD1hbnkKIF0gY2Fs
bGJhY2sgQ1NTUGFpbnRDYWxsYmFjayA9IHZvaWQgKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEIGNv
bnRleHQsIENTU1BhaW50U2l6ZSBzaXplLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkgc3R5bGVN
YXAsIHNlcXVlbmNlPFVTVlN0cmluZz4gYXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YWludEltYWdlVmFsdWUuaAppbmRleCBiNmI2OWM4ZjcxNDBhNDhjMzNjYmEzNjc4ZDI2ZWQyMDYy
ZDdlYmQwLi40M2JjYzFjYWNkODBlMWI2OTgwYTkyNzUxZjc4ZTViYjA1MzkzMmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oCkBAIC00MCw2ICs0MCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUGFpbnRJbWFnZVZhbHVlKG5hbWUs
IFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5k
ZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBD
U1NQYWludEltYWdlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gb3RoZXIu
bV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzViMGI4ZDQx
YTI5NDRkYzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4uZDliZGUyODdmMzMxMDBiNDcwMTFkNDQ1
ZWMyMDEyNGU0ZGQ0NzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NL
ZXlmcmFtZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NLZXlmcmFtZXNSdWxlLmgiCisjaW5jbHVkZSAi
Q1NTUGFpbnRJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZVJ1bGVDb2xsZWN0b3Iu
aCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlBhaXIu
aCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgpAQCAtMTcwOCw2ICsxNzEwLDE4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2Fk
CiAgICAgaWYgKGlzSW5oZXJpdCAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHko
aWQpKQogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPENT
U1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkgJiYgZG9jdW1lbnQoKS5wYWludFdvcmts
ZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhl
ICJkb2N1bWVudCBwYWludCByZWdpc3RyYXRpb24gbWFwIiBmcm9tIHRoZSBzcGVjLCBvbmNlIGl0
IGlzIGltcGxlbWVudGVkLgorICAgICAgICBhdXRvJiBwYWludFdvcmtsZXQgPSAqZG9jdW1lbnQo
KS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBpZiAoYXV0
byogcmVnaXN0cmF0aW9uID0gcGFpbnRXb3JrbGV0LnBhaW50RGVmaW5pdGlvbk1hcCgpLmdldChk
b3duY2FzdDxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpLm5hbWUoKSkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiByZWdpc3RyYXRpb24tPmlucHV0UHJvcGVy
dGllcykKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5hZGRDdXN0b21QYWludFdhdGNo
UHJvcGVydHkocHJvcGVydHkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICAvLyBV
c2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxkZXIuCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVBy
b3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1
c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAx
ZTZiYzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBjMjU0OWM1Li45OGVjYWNjOTg2MGI2Zjk5
NWNjNzg1NmU1N2JmMzczYTNlODEyYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1
MjgsNiArMjUyOCwxMyBAQCB2b2lkIERvY3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQog
ICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG1f
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIHsKKyAgICAgICAgbV9wYWludFdvcmtsZXRHbG9iYWxT
Y29wZS0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgICAgIG1fcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUgPSBudWxscHRyOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9oYXNQcmVwYXJlZEZv
ckRlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIC8vIE5vdGUgdGhhdCBtX3BhZ2VDYWNoZVN0YXRl
IGNhbiBiZSBEb2N1bWVudDo6QWJvdXRUb0VudGVyUGFnZUNhY2hlIGlmIG91ciBmcmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGQ4ZjYw
ZTI5ZDM5Y2ZmYTk5ODIwMWQ5MjhhZGE4YjM3MjRmNmJiYjkuLjliYTQ4MTlkZjc1MTkyZjJmODRj
NjRhZTFmNzNjNDM4MmVkMmIzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBKU0M6OlZNJiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojp2bSgpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQogICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLnZtKCk7CisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+
dm0oKTsKICNlbmRpZgogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKaW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIwZDU4MjUwOGQwMmQ4NTM4NmE0MGE1OC4uNzAxMjhi
OTJkZDU5MDVlNjU0YmU2MWQ3YWZiYmIwY2NlMTU1NjIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTQwLDEx
ICs0MCwxMyBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBh
aW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0cnVjdERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWludEltYWdlKGNvbnN0IFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGFyZ3VtZW50cykKLSAgICA6IG1fcGFpbnRDYWxsYmFjayhkZWZpbml0aW9uLnBhaW50Q2FsbGJh
Y2suZ2V0KCkpCisgICAgOiBtX3BhaW50Q2FsbGJhY2sobWFrZVdlYWtQdHIoZGVmaW5pdGlvbi5w
YWludENhbGxiYWNrLmdldCgpKSkKKyAgICAsIG1fcGFpbnRDb25zdHJ1Y3RvcihkZWZpbml0aW9u
LnBhaW50Q29uc3RydWN0b3IuZ2V0KCkpCiAgICAgLCBtX2lucHV0UHJvcGVydGllcyhkZWZpbml0
aW9uLmlucHV0UHJvcGVydGllcykKICAgICAsIG1fZWxlbWVudChtYWtlV2Vha1B0cihlbGVtZW50
KSkKICAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKQEAgLTU2LDEzICs1OCwxNCBAQCBDdXN0
b21QYWludEltYWdlOjp+Q3VzdG9tUGFpbnRJbWFnZSgpID0gZGVmYXVsdDsKIAogSW1hZ2VEcmF3
UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBkZXN0U2l6ZSkKIHsKLSAgICBpZiAoIW1fZWxl
bWVudCB8fCAhbV9lbGVtZW50LT5lbGVtZW50KCkpCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29u
c3RydWN0b3IobV9wYWludENvbnN0cnVjdG9yLmdldCgpKTsKKyAgICBpZiAoIW1fZWxlbWVudCB8
fCAhbV9lbGVtZW50LT5lbGVtZW50KCkgfHwgIXBhaW50Q29uc3RydWN0b3IgfHwgIW1fcGFpbnRD
YWxsYmFjaykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAog
ICAgIEFTU0VSVCghbV9lbGVtZW50LT5uZWVkc0xheW91dCgpKTsKICAgICBBU1NFUlQoIW1fZWxl
bWVudC0+ZWxlbWVudCgpLT5kb2N1bWVudCgpLm5lZWRzU3R5bGVSZWNhbGMoKSk7CiAKLSAgICBK
U0NTU1BhaW50Q2FsbGJhY2smIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8SlNDU1NQYWludENhbGxi
YWNrJj4obV9wYWludENhbGxiYWNrLmdldCgpKTsKKyAgICBKU0NTU1BhaW50Q2FsbGJhY2smIGNh
bGxiYWNrID0gc3RhdGljX2Nhc3Q8SlNDU1NQYWludENhbGxiYWNrJj4oKm1fcGFpbnRDYWxsYmFj
ay5nZXQoKSk7CiAgICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGNhbGxiYWNrLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xMDMsNyAr
MTA2LDIxIEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYXV0byBzaXplID0gQ1NTUGFp
bnRTaXplOjpjcmVhdGUoZGVzdFNpemUud2lkdGgoKSwgZGVzdFNpemUuaGVpZ2h0KCkpOwogICAg
IGF1dG8gcHJvcGVydHlNYXAgPSBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHk6OmNyZWF0ZShXVEZN
b3ZlKHByb3BlcnR5VmFsdWVzKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFpbnRDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoKmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7
CisgICAgYXV0byYgdm0gPSAqcGFpbnRDb25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+dm0oKTsKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKnBhaW50Q29uc3RydWN0
b3IuZ2V0T2JqZWN0KCktPmdsb2JhbE9iamVjdCgpOworCisgICAgYXV0byYgc3RhdGUgPSAqZ2xv
YmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkFyZ0xpc3Qgbm9BcmdzOworICAgIEpT
Qzo6SlNWYWx1ZSB0aGlzT2JqZWN0ID0geyBKU0M6OmNvbnN0cnVjdCgmc3RhdGUsIFdURk1vdmUo
cGFpbnRDb25zdHJ1Y3RvciksIG5vQXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3QgcGFpbnQgY2xh
c3MiKSB9OworCisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAg
ICByZXBvcnRFeGNlcHRpb24oJnN0YXRlLCBzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgIHJl
dHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CisgICAgfQorCisgICAgYXV0byByZXN1
bHQgPSBtX3BhaW50Q2FsbGJhY2stPmhhbmRsZUV2ZW50KFdURk1vdmUodGhpc09iamVjdCksICpj
b250ZXh0LCBzaXplLCBwcm9wZXJ0eU1hcCwgbV9hcmd1bWVudHMpOwogICAgIGlmIChyZXN1bHQu
dHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcykKICAgICAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCmluZGV4IGQzMDY3OTM5NzcyMDBjY2Ri
Y2RjOWUyM2I3NmM1MzA3ODIyY2Y3NjYuLmU0OTBkMDQ3NzkyNmFlY2QzNTY2MTRjY2E1M2ZhYTdi
OWEyN2JmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
dXN0b21QYWludEltYWdlLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIkdlbmVyYXRl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dl
YWsuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01NCw3ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIAotICAgIFJlZjxDU1NQYWludENhbGxiYWNrPiBtX3Bh
aW50Q2FsbGJhY2s7CisgICAgV2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiBtX3BhaW50Q2FsbGJh
Y2s7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fcGFpbnRDb25zdHJ1Y3RvcjsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX2lucHV0UHJvcGVydGllczsKICAgICBXZWFrUHRyPFJlbmRlckVs
ZW1lbnQ+IG1fZWxlbWVudDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2FyZ3VtZW50czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGNmZGI3
YjUzN2ZjYjdmYjlkMDU4NjU4NDUzYmJlZjFhYTE4YjRmY2EuLjlmNjU5ZmU1YTc4NGQ5NTNjZGEy
MTQ2MTI0NjMyMGFlNGI3YTc1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMjMsMTAgKzIzLDEyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKIAotI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgi
CisjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorI2lu
Y2x1ZGUgIkNvbnRlbnREYXRhLmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgogI2luY2x1ZGUg
IkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgpAQCAtODAsMTAg
KzgyLDE5IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogI2lmICFBU1NFUlRfRElT
QUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgYm9vbCBkZWxldGlvbkNo
ZWNrOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgYm9vbCBoYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllczsKKyNlbmRpZgogfTsKIAogc3RhdGljX2Fzc2VydChz
aXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5bGUpLCAiUmVu
ZGVyU3R5bGUgc2hvdWxkIHN0YXkgc21hbGwiKTsKIAorc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVu
ZGVyU3R5bGUqLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxTdHJpbmc+Pj4mIGN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXNNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPGNvbnN0IFJlbmRlclN0eWxlKiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+
PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKwogUmVuZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpk
ZWZhdWx0U3R5bGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW5kZXJTdHlsZT4g
c3R5bGUgeyBDcmVhdGVEZWZhdWx0U3R5bGUgfTsKQEAgLTIwNiw2ICsyMTcsMTIgQEAgaW5saW5l
IFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIENsb25l
VGFnKQogICAgICwgbV9pbmhlcml0ZWRGbGFncyhvdGhlci5tX2luaGVyaXRlZEZsYWdzKQogICAg
ICwgbV9zdmdTdHlsZShvdGhlci5tX3N2Z1N0eWxlKQogeworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgIGlmIChvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7
CisgICAgICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAg
ICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91
bmlxdWU8SGFzaFNldDxTdHJpbmc+PigqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgp
LmdldCgmb3RoZXIpKSk7CisgICAgfQorI2VuZGlmCiB9CiAKIGlubGluZSBSZW5kZXJTdHlsZTo6
UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIGEsIFJlbmRlclN0eWxlJiYgYikKQEAgLTIyMSw2ICsy
MzgsMjAgQEAgaW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgYSwg
UmVuZGVyU3R5bGUmJiBiKQogICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoc3RkOjpleGNoYW5n
ZShhLm1fY2FjaGVkUHNldWRvU3R5bGVzLCBXVEZNb3ZlKGIubV9jYWNoZWRQc2V1ZG9TdHlsZXMp
KSkKICAgICAsIG1fc3ZnU3R5bGUoYS5tX3N2Z1N0eWxlLnJlcGxhY2UoV1RGTW92ZShiLm1fc3Zn
U3R5bGUpKSkKIHsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAoYS5tX2hh
c0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAgICAgIG1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0
aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZN
b3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZhKSkpKTsKKyAgICAg
ICAgYS5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUoJmEpOworICAgIH0KKyAgICBp
ZiAoYi5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAgICAgIGEubV9oYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQoJmEsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJp
bmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZiKSkp
KTsKKyAgICAgICAgYi5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7Cisg
ICAgICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUoJmIpOworICAg
IH0KKyNlbmRpZgogfQogCiBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKQEAgLTIyOSw2ICsy
NjAsMTAgQEAgUmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSgpCiAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgbV9kZWxldGlvbkhh
c0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAg
IG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICBjdXN0b21QYWlu
dFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKHRoaXMpOworI2VuZGlmCiB9CiAKIFJlbmRl
clN0eWxlIFJlbmRlclN0eWxlOjpyZXBsYWNlKFJlbmRlclN0eWxlJiYgbmV3U3R5bGUpCkBAIC0z
NjIsNiArMzk3LDExIEBAIGJvb2wgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVy
U3R5bGUmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID09
IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9yYXJlSW5oZXJpdGVk
RGF0YSA9PSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhCiAgICAgICAgICYmIG1faW5oZXJpdGVk
RGF0YSA9PSBvdGhlci5tX2luaGVyaXRlZERhdGEKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKKyAgICAgICAgJiYgKCghbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyAmJiAhb3Ro
ZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykKKyAgICAgICAgICAgIHx8IChtX2hh
c0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzICYmIG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRj
aFByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAmJiAqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllc01hcCgpLmdldCh0aGlzKSA9PSAqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgp
LmdldCgmb3RoZXIpKSkKKyNlbmRpZgogICAgICAgICAmJiBtX3N2Z1N0eWxlID09IG90aGVyLm1f
c3ZnU3R5bGU7CiB9CiAKQEAgLTk1OCw2ICs5OTgsMTcgQEAgc3RhdGljIGJvb2wgcmFyZUluaGVy
aXRlZERhdGFDaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YSYKICAgICAgICAgfHwgZmlyc3QuaW1hZ2VSZW5kZXJpbmcgIT0gc2Vjb25kLmltYWdlUmVuZGVy
aW5nOwogfQogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCit2b2lkIFJlbmRlclN0eWxl
OjphZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAg
IGlmICghbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1
c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3Ry
aW5nPj4oKSk7CisgICAgfQorICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5n
ZXQodGhpcyktPmFkZChuYW1lKTsKK30KKyNlbmRpZgorCiBib29sIFJlbmRlclN0eWxlOjpjaGFu
Z2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5
bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5PiYgY2hhbmdlZENvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNQYWludGluZygqdGhp
cykgJiYgIXJlcXVpcmVzUGFpbnRpbmcob3RoZXIpKQpAQCAtOTc5LDYgKzEwMzAsNDIgQEAgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBv
dGhlciwgT3B0aW9uU2V0PFN0eWwKICAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGFDaGFuZ2VS
ZXF1aXJlc1JlcGFpbnQoKm1fcmFyZUluaGVyaXRlZERhdGEsICpvdGhlci5tX3JhcmVJbmhlcml0
ZWREYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKyAgICBpZiAoVU5MSUtFTFkobV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyB8
fCBvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSkgeworICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRvIHVzZSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGhl
cmUuCisgICAgICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgZXh0cmFjdG9yKChFbGVtZW50Kikg
bnVsbHB0cik7CisKKyAgICAgICAgZm9yIChhdXRvKiB3YXRjaFByb3BlcnRpZXNNYXAgOiB7IGN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQodGhpcyksIGN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSB9KSB7CisgICAgICAgICAgICBpZiAoIXdh
dGNoUHJvcGVydGllc01hcCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgZm9yIChhdXRvJiBuYW1lIDogKndhdGNoUHJvcGVydGllc01hcCkgeworICAgICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVBOworICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWVCOworICAgICAgICAgICAgICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShu
YW1lKSAmJiBnZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSAmJiBvdGhlci5nZXRDdXN0b21Qcm9wZXJ0
eShuYW1lKSkgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZUEgPSBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlOjpjcmVhdGUoKmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWVCID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpvdGhlci5nZXRD
dXN0b21Qcm9wZXJ0eShuYW1lKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChuYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUlEKQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQSA9IGV4dHJhY3Rv
ci52YWx1ZUZvclByb3BlcnR5aW5TdHlsZSgqdGhpcywgcHJvcGVydHlJRCk7CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlQiA9IGV4dHJhY3Rvci52YWx1ZUZvclByb3BlcnR5aW5TdHlsZShvdGhl
ciwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KCh2YWx1ZUEgJiYgIXZhbHVlQikgfHwgKCF2YWx1ZUEgJiYgdmFsdWVCKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlQSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoISgqdmFs
dWVBID09ICp2YWx1ZUIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDk4MWI4ZWVlZWJlOTZhNjFiMWFhZDM2MzI0MmQ3NGU5NjgxYzAzZWQuLmU3OGViMzkzNGFiOTIz
YzM3NDliYTA1NzVhNGIwYjUzMjAzNTIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMjUzLDYgKzEyNTMsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0QXBwbGVQYXlCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBlKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlCdXR0b25UeXBlLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odHlwZSkpOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgIHZvaWQgYWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisjZW5kaWYKKwogICAgIC8vIFN1cHBvcnQgZm9yIHBhaW50LW9yZGVyLCBzdHJv
a2UtbGluZWNhcCwgc3Ryb2tlLWxpbmVqb2luLCBhbmQgc3Ryb2tlLW1pdGVybGltaXQgZnJvbSBo
dHRwczovL2RyYWZ0cy5meHRmLm9yZy9wYWludC8uCiAgICAgdm9pZCBzZXRQYWludE9yZGVyKFBh
aW50T3JkZXIgb3JkZXIpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBwYWludE9yZGVy
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3JkZXIpKTsgfQogICAgIFBhaW50T3JkZXIgcGFpbnRP
cmRlcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBhaW50T3JkZXI+KG1fcmFyZUluaGVy
aXRlZERhdGEtPnBhaW50T3JkZXIpOyB9CkBAIC0xODY0LDYgKzE4NjgsMTAgQEAgcHJpdmF0ZToK
IAogICAgIERhdGFSZWY8U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7CiAKKyNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKKyAgICBib29sIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRp
ZXMgeyBmYWxzZSB9OworI2VuZGlmCisKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShT
RUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2Ug
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGU3M2U3YTkz
ODY0MDI3M2Y0MjM1YmZiZjVkNTBhZDM3YWMzNTRjMTQuLjFmOGJiMzNjNzliZmQ0MDg5MGQ2ZDc0
ZThlMGMxODVjYzY5OWIyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTE3Miw2ICsxNzIsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
IldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldyaXRpbmdEaXJlY3Rpb24uaCIKICNp
bmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvZGVC
bG9jay5oPgpAQCAtMjM1Miw2ICsyMzUzLDE1IEBAIGJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50
QWxpdmUodWludDY0X3QgZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdAogICAgIHJldHVybiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMobWFrZU9iamVjdElkZW50aWZpZXI8RG9j
dW1lbnRJZGVudGlmaWVyVHlwZT4oZG9jdW1lbnRJZGVudGlmaWVyKSk7CiB9CiAKK2Jvb2wgSW50
ZXJuYWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3QKK3sKKyNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICByZXR1cm4gIVdvcmtsZXRHbG9iYWxTY29wZTo6YWxs
V29ya2xldEdsb2JhbFNjb3Blc01hcCgpLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKIFN0cmluZyBJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwZTNlOWMz
NjM4MmE5MWQzYTRiZDVkMDMwZGM3YzVhM2Q4NWQ0OGVmLi42YzIzZDE0M2I1ZmQ4MzljOTA3MmE0
NmE1YjhmYzE1NzQ5NDUwNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM4
MCw2ICszODAsOCBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZG9jdW1lbnRJZGVudGlmaWVyKGNv
bnN0IERvY3VtZW50JikgY29uc3Q7CiAgICAgYm9vbCBpc0RvY3VtZW50QWxpdmUodWludDY0X3Qg
ZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdDsKIAorICAgIGJvb2wgaXNBbnlXb3JrbGV0R2xvYmFs
U2NvcGVBbGl2ZSgpIGNvbnN0OworCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29uc3Q7CiAKICAgICBSZWZQdHI8V2luZG93UHJveHk+
IG9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNGNkYTE1YTcxYjk5ZDUyOWY2ZTZhZjEzODg4
MTdlYjQ5YzUwNzk3Li45NjE0NjZkYzJlNDg5N2EwYTk3NzAwNzFmODQ5ZDAzNDJmNzI1YjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02NjgsNiArNjY4LDggQEAgZW51
bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRvY3VtZW50SWRl
bnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgYm9vbGVhbiBpc0RvY3VtZW50QWxpdmUo
dW5zaWduZWQgbG9uZyBsb25nIGRvY3VtZW50SWRlbnRpZmllcik7CiAKKyAgICBib29sZWFuIGlz
QW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKTsKKwogICAgIERPTVN0cmluZyBzZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAKICAgICBQcm9taXNlPHZv
aWQ+IGNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBh
MjlhMjAwZDEwZGYzZmQ2YjdhY2ZiYTk3ODhlYzFjNGJhOGEwYTQzLi5hNWUzYjQwY2ZkMGVhNjJk
YWY5ZTViMGEwYzhkYTk0M2Q4NDMwODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00OCwxMSArNDksMjAgQEAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmMKIHsKIH0K
IAordm9pZCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkK
K3sKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9u
TG9jaygpKTsKKyAgICAgICAgbV9wYWludERlZmluaXRpb25NYXAuY2xlYXIoKTsKKyAgICB9Cisg
ICAgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKK30KKwogZG91
YmxlIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIHsK
LSAgICBpZiAoIXJlc3BvbnNhYmxlRG9jdW1lbnQoKSB8fCAhcmVzcG9uc2FibGVEb2N1bWVudCgp
LT5kb21XaW5kb3coKSkKKyAgICBpZiAoIXJlc3BvbnNpYmxlRG9jdW1lbnQoKSB8fCAhcmVzcG9u
c2libGVEb2N1bWVudCgpLT5kb21XaW5kb3coKSkKICAgICAgICAgcmV0dXJuIDEuMDsKLSAgICBy
ZXR1cm4gcmVzcG9uc2FibGVEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRp
bygpOworICAgIHJldHVybiByZXNwb25zaWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kZXZp
Y2VQaXhlbFJhdGlvKCk7CiB9CiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9j
c3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20tcGFpbnQKQEAgLTEyMCwxMSArMTMwLDE0
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBh
aW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNr
PiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+
PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAg
YXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPihu
ZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQ
cm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKKyAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9
IHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+KG5ldyBQYWludERlZmluaXRpb24geyBu
YW1lLCBwYWludENvbnN0cnVjdG9yLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBpbnB1dFByb3Bl
cnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwogICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChu
YW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOwogCiAgICAgLy8gRklYTUU6IGNvbnN0cnVj
dCBkb2N1bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgogCisgICAgaWYgKHJlc3BvbnNpYmxlRG9j
dW1lbnQoKSAmJiByZXNwb25zaWJsZURvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICAgICAg
cmVzcG9uc2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCktPnJlcGFpbnRSb290Q29udGVudHMo
KTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDIzMjcxZjE1NDI5MTRiODViNGIyNWY3
OTE5MmVhNGNlY2NhOGE1NTAuLjcxZDNiOTgwNjhlNjMzYjMwNGM5M2NiYzUxZGUzZDY5N2ExMmMz
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5o
IgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNDcsNiArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgUGFp
bnREZWZpbml0aW9uIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7CisgICAgICAg
IGNvbnN0IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBhaW50Q29uc3RydWN0b3I7CiAgICAg
ICAgIGNvbnN0IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7CiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwpAQCAtNTUsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiYgcGFpbnRE
ZWZpbml0aW9uTWFwKCkgeyBBU1NFUlQobV9wYWludERlZmluaXRpb25Mb2NrLmlzTG9ja2VkKCkp
OyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7IH0KICAgICBMb2NrJiBwYWludERlZmluaXRp
b25Mb2NrKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25Mb2NrOyB9CiAKKyAgICB2b2lkIHBy
ZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFsOworCiBwcml2YXRlOgogICAgIFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYTBkMzAwOWRh
OTNhYzQzYjE2ZTBkZDQwZDA0Y2Y4MmUwMGIyNDBiNS4uNTMwZTM0ODg2MWM4MmViNzRkODJkNTBk
MWYyMjIyMDEzZGU4ZDljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Njcmlw
dENhbGxTdGFjay5oPgogCkBAIC00OSwxMiArNDgsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBk
b2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VX
ZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25J
RCgpKQotICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cj4odGhpcykpCisgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyPih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVVbmlxdWUoKSkKLSAgICAsIG1faWRlbnRpZmllcihtYWtlU3RyaW5nKCJXb3JrbGV0R2xvYmFs
U2NvcGU6Il9zLCBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmll
cigpKSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNv
ZGUpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0
R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZT4oKSkKIHsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGFs
bFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworCiAgICAgYXV0
byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIG1fanNSdW50aW1lRmxhZ3MgPSBmcmFt
ZSA/IGZyYW1lLT5zZXR0aW5ncygpLmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVu
dGltZUZsYWdzKCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CkBAIC02Niw3ICs2OCwy
MyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9j
dW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xl
dEdsb2JhbFNjb3BlKCkKIHsKICAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKLSAgICBtX3Nj
cmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpLT5zZXRDb25zb2xlQ2xpZW50KG51bGxw
dHIpOworICAgIGFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVy
KTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigp
Cit7CisgICAgQVNTRVJUKG1fc2NyaXB0KTsKKyAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwor
ICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRyYWNrZXIoKTsKKyAgICByZW1vdmVBbGxFdmVudExp
c3RlbmVycygpOworICAgIG1fc2NyaXB0LT52bSgpLm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOwor
ICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKK30KKworYXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFs
bFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKSAtPiBXb3JrbGV0R2xvYmFsU2NvcGVzTWFwJgorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwPiBzY29wZXM7
CisgICAgcmV0dXJuIHNjb3BlczsKIH0KIAogU3RyaW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3Jp
Z2luKCkgY29uc3QKQEAgLTg4LDcgKzEwNiw3IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpl
dmFsdWF0ZSgpCiAKIGJvb2wgV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlk
ZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVu
KCk7CisgICAgcmV0dXJuICFtX3NjcmlwdCB8fCBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRk
ZW4oKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTEwLDMwICsxMjgsMzAgQEAgVVJMIFdvcmtsZXRHbG9i
YWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiAKIHZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKIHsKLSAgICBpZiAo
IW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29u
c29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBX
VEZNb3ZlKHN0YWNrKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xl
TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNz
YWdlKQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9k
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdl
LT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0
SWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50
IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ss
IEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikK
K3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1i
ZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50
KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShj
YWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIG1fZG9jdW1lbnQtPmFk
ZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVu
dGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBmMDE1NjRkODY3YzEwYWFjZjljZjBj
MWRmNjkwNjVjZmVmMmQ3NWM2Li4zODhiMzA5YjRkZThmYzRjMmVjY2Y3YTQyYTcyYTFhMThhMmQz
ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApA
QCAtMzgsMjkgKzM4LDM0IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3Nh
Z2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBT
Y3JpcHRTb3VyY2VDb2RlOwogCitlbnVtIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlPjsKKwogY2xhc3MgV29ya2xldEds
b2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
IHsKIHB1YmxpYzoKICAgICB+V29ya2xldEdsb2JhbFNjb3BlKCk7CiAKKyAgICB1c2luZyBXb3Jr
bGV0R2xvYmFsU2NvcGVzTWFwID0gSGFzaE1hcDxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVy
LCBXb3JrbGV0R2xvYmFsU2NvcGUqPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV29ya2xl
dEdsb2JhbFNjb3Blc01hcCYgYWxsV29ya2xldEdsb2JhbFNjb3Blc01hcCgpOworCiAgICAgdmly
dHVhbCBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUu
dXJsKCk7IH0KICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICB2
b2lkIGV2YWx1YXRlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcg
UmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciYgc2NyaXB0
KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYp
IGZpbmFsOwogCkBAIC03NCwxMSArNzksMTMgQEAgcHVibGljOgogCiAgICAgSlNDOjpSdW50aW1l
RmxhZ3MganNSdW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisKIHByb3RlY3Rl
ZDoKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYp
OwogCi0gICAgRG9jdW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3Vt
ZW50LmdldCgpOyB9Ci0gICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgRG9jdW1lbnQqIHJlc3BvbnNp
YmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgY29uc3QgRG9j
dW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50Lmdl
dCgpOyB9CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xMTgs
MTAgKzEyNSw5IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsK
IAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFVuaXF1ZVJlZjxXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKIAogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90
b3BPcmlnaW47Ci0gICAgU3RyaW5nIG1faWRlbnRpZmllcjsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5vdCBpbXBsZW1lbnRlZCBwcm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBp
bGVyLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEx
MzYKQEAgLTEyOSw2ICsxMzUsOCBAQCBwcml2YXRlOgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3Mg
bV9qc1J1bnRpbWVGbGFnczsKICAgICBTY3JpcHRTb3VyY2VDb2RlIG1fY29kZTsKKworICAgIFdv
cmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDA1NWQ3ZjExNjhlZWI1YWNmMDQyZmYxNGJmYzk5Yzcz
ZGNjYjhmMzcuLjExNjg5NzhlNDI0ZGYxYzQ4ZTQ2MWM1ODg5Yzc4ZmNkYmEwNjdiNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTU5LDEzICs1OSwxNSBAQCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNj
cmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYgogV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFy
KCk7Ci0gICAgbV92bSA9IG51bGxwdHI7CisgICAgZm9yYmlkRXhlY3V0aW9uKCk7CisKICAgICBp
ZiAobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7CiAgICAgICAgIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOwogICAgICAgICBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAg
IG1fY29uc29sZUNsaWVudCA9IG51bGxwdHI7CiAgICAgfQorICAgIG1fd29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlci5jbGVhcigpOworICAgIG1fdm0gPSBudWxscHRyOwogfQogCiB2b2lkIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQpAQCAtODIsNiArODQsOSBAQCBi
b29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0
CiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisKICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtOTAsNiArOTUsOSBAQCB2b2lkIFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIAogdm9p
ZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisKICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtMTMyLDYgKzE0MCw5IEBAIHZvaWQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogCiB2b2lkIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKIHsKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNj
b3BlPihtX3dvcmtsZXRHbG9iYWxTY29wZSkpIHsKICAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJj
bGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDJmZGE0YjE2M2IyMWVkMWMyZjkyMTIyYzc2MDMxMjQyZDBiNGM3YzkuLjNhZDQxODhl
ODliMTdlYmJjMmFkYWMzNmIwNmVjOTJiMTk3MjIxMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxOC0xMS0xMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisK
KyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycgY29ycmVjdGx5IHRv
IHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3ItZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1s
OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9yYWYtbGVhay1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcg
QVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBw
YWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRhYjg4ZDkyZDQyOTAwZjBh
MjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZDog
Z3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5
bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTBjZTMyOTZmNWE3MGMxNzJkNTNiYmZi
N2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBA
CisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDE1MCAx
NTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVjdCAwIDAgODAwIDE2NikKKyAgKHJlY3Qg
MCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUwKQorICAocmVjdCA4IDggMTUwIDE1MCkK
KyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMyNmE1
YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sCkBAIC0w
LDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhw
ZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJh
dXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVk
QHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFp
bnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0i
aGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1h
cGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFp
bnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXBy
b3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAo
cHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5nKCkgIT0gImdvb2RieWUiKSB7Cisg
ICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0
eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQorCisgICAgICBjdHguZmlsbFJlY3QoMCwg
MCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50
KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOworICB9CisgIGltcG9ydFdvcmtsZXQo
Q1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29u
dGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xldCByZXR1cm5zIGEgcHJvbWlz
ZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jykuc3R5bGUuc2V0UHJv
cGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7CisgIH0sIDUwMCk7CisKKyAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJlY3RzID0gIk5vIHRlc3QgcnVubmVyIjsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAg
d2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKKworICAgICAgLy8gZm9y
Y2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVtbXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNl
dFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2luZG93LmludGVybmFscy5yZXBhaW50UmVj
dHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50
cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUn
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHByZSk7CisgICAgcHJlLmlubmVySFRN
TCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAj
cGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICAtLW15
LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9
Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZhMTY1ZGQ0MmM3ZDFjNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwK
QEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5h
bWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21p
Y2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhh
dCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJvcGVydGllcyBjaGFuZ2UiPgorPGxpbmsg
cmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBh
aW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3Mg
TXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbJy0t
bXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICAg
IGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJykudG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIp
IHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICB9CisKKyAgICAgIGN0eC5maWxsUmVj
dCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVy
UGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworCisgIC8vIEZJWE1FOiBP
bmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2UsIHRoZXNlIHNldFRpbWVvdXRzIHNo
b3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3BlcnR5KCctLW15LXByb3AnLCAnZ29v
ZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgLS1teS1wcm9wOiBoZWxs
bzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4K
KworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5MjFiYzg3ZWE0NDg1NDc0YmQ4MmQyZmE0NDFkOWVh
YzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6
IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0
eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5
bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHls
ZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY1
YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4MjI4ZDljYjk4ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sCkBAIC0w
LDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhw
ZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJh
dXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVk
QHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFp
bnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlmIHRoZSBjb25zdHJ1Y3RvciB0aHJvd3MiPgorPGxp
bmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3Nz
LXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xh
c3MgTXlQYWludCB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICB0aHJvdyAiSGVsbG8hIjsK
KyAgICB9CisKKyAgICBwYWludChjdHgsIGdlb20pIHsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSAi
Z3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0
KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBNeVBhaW50MiB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7CisgICAgICBjdHguZmlsbFN0eWxlID0g
ImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdo
dCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cisg
IHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50MicsIE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29y
a2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkpIHsKKyAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycpLnN0eWxlLmJhY2tncm91bmQgPSAiZ3JlZW4iOwor
ICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0PgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAg
d2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5
PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15
LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQt
aW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48L2Rpdj4KKyAgPGRpdiBpZD0ibGVha3MiIHN0eWxl
PSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAxNTBweDsgaGVpZ2h0OiAxNTBweDsiPjwvZGl2Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xl
YWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFr
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjZTc3N2M5NWM3OTgzYjM3NThlODMwNDFiNmZi
NjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCB1
c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3QgY2F1c2UgdGhlIHBhaW50IHdvcmtsZXQgZ2xvYmFs
IHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRpZCBub3QgbGVhaworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMwYzUyOTJmZjAwNmJkMDA0ZDg3
N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJ
RW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWlj
aGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG9uJ3QgbGVhayI+
Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9y
Zy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3Vy
Y2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBhaW50IGRvZXMgbm90IGNhdXNlIHRoZSBwYWludCB3
b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQgbGVha2VkLiIpOword2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWludFNob3VsZERpZSgpCit7CisgICAgcmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICBoYW5kbGUgPSBz
ZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICBp
ZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkpIHsKKyAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfQorICAgICAgICB9LCAxMCk7CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0
RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAgICAgICBwYWludFNob3VsZERpZSgpLnRoZW4oZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJXb3JrbGV0IGdsb2JhbCBzY29wZSBk
aWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsK
KyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCmluZGV4IDBhZTY4OGJlMDNlZjNiNWM4MTcxNTdj
OGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTViMWZmYTQ1OGQ0ZmZjOGRiOTc5NTc0OGYyOWJiMDAy
MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0
aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRp
ZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAKIGNsYXNzIE15UGFpbnQgewogICBzdGF0aWMgZ2V0
IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnaGVpZ2h0JywgJy0tbXktcHJvcCcsICctLW15
LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVyLXNwZWNpZmllZCJdOyB9CiAgIHN0YXRpYyBnZXQg
aW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbJyonLCAnKicsICcqJ107IH0KKworICBjb25zdHJ1
Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9IDQyOyB9CisKKyAgdGVzdFRoaXMoKSB7IHJldHVy
biB0aGlzLm15QXR0cmlidXRlOyB9CisKICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzLCBh
cmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnaGVpZ2h0JykudG9TdHJp
bmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsKICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMu
Z2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsKQEAgLTMwLDYgKzM1LDggQEAgY2xhc3MgTXlQYWlu
dCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnd2lkdGgnKSwgbnVsbCk7CiAg
ICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnLS1uZXZlci1zcGVjaWZpZWQnKS50b1N0
cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRfZXF1YWxzKHRoaXMudGVzdFRoaXMoKSwgNDIpOwor
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspewogICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCA2OyBqKyspewogICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9v
cigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2RiZGYyZTM0MDgzMGVjYjU3YTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL2xlYWtz
LWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAt
LT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWls
dG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkb24ndCBsZWFrIj4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkt
MS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQo
bXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8
L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWludCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUi
IHR5cGU9InRleHQvd29ya2xldCI+Citjb25zdCBnbG9iYWxTY29wZSA9IHRoaXM7CitjbGFzcyBN
eVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CisgICAgY29u
c3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8gTGVhayEKKyAgICBjdHguZmlsbFN0eWxlID0gImdy
ZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOwor
ICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFrID0gdGhpczsKK3JlZ2lzdGVyUGFpbnQoJ215LXBh
aW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK0NTUy5wYWludFdvcmtsZXQu
YWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4NGU3YWNjNTJjNTFhMWNkN2UKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jh
Zi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4OAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354758</attachid>
            <date>2018-11-13 19:41:13 -0800</date>
            <delta_ts>2018-11-14 10:22:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181113194112.patch</filename>
            <type>text/plain</type>
            <size>65518</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi4zYTFiZWQ1ZjQ3Mzc1MGM5
YjdlYTBlZmFkMWU1YzI1OTc2OTVlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi5iNDkxNWIwOTBkODViYjg4NDQyODM0ZTE3MjJk
MTMwNWU3MGFiZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTgtMTEtMTMgIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFs
bHksIHdlIGZpeCB0d28gcmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFs
U2NvcGUgdG8gbmV2ZXIgYmUgZGVzdHJveWVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGNzcy9DU1NQYWludENh
bGxiYWNrLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAq
IGNzcy9DU1NQYWludEltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBy
ZXBhcmVGb3JEZXN0cnVjdGlvbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFs
U2NvcGVBbGl2ZSBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6UGFpbnREZWZpbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToK
KyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6On5QYWludFdvcmtsZXRHbG9iYWxTY29w
ZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9i
YWxTY29wZXNNYXApOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjppc0pT
RXhlY3V0aW9uRm9yYmlkZGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6c2Ny
aXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2libGVE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNp
YmxlRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjppZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRH
bG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRp
c2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpk
aXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQpOgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBw
YXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFj
awpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0
YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmluZGV4
IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBkYmIxYTRlMmViMDYuLjU5MzhhOTBkODlmOTZj
MzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0cnVj
dERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVlZCB0
byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxUeXBlIHVubGVzcyB5b3UgYXJlIGdvaW5nIHRv
IHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsKK0pT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7
CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFs
dWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25z
dCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgwZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3NWNh
Mzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQzNzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCmlu
ZGV4IGE4Y2VhZTYwYmE3MDI2ZWI3ZWIyZTJjYTkxMGIyMWRlZjUzNTlhZWYuLjAxMTg0YTg0NjI3
NjA4NzhjMDBlODMwYmY4MWZjYTBkYzQ5YWVjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwCkBAIC0zNCw4ICszNCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogdm9pZCBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbkxvY2soKSk7Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBl
ZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQorICAgIGZvciAoYXV0byYgcmVnaXN0
ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkgewogICAgICAg
ICByZWdpc3RlcmVkLT5wYWludENhbGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQocmVnaXN0ZXJlZC0+cGFpbnRDb25zdHJ1
Y3Rvcik7CisgICAgfQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBmYjVhNzU1NjgyZDE2MTQ2
YTViODkyYjljNzVlN2EzNTYxNmE3YzYxLi43Y2Q4MGU3NDE1N2ZmYWNmZGFlZDBjNjRlYTk5YmNl
NDQyYzg4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEyOCw3ICsxMjgsOCBAQCBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29w
ZSYgd29ya2xldEdsbwogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3
b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkud29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwor
ICAgIEFTU0VSVCh3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkpOworICAgIGF1dG8qIGNvbnRl
eHRXcmFwcGVyID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyKCk7CiAgICAgQVNTRVJUKGNvbnRleHRXcmFwcGVyKTsKICAgICByZXR1cm4gY29u
dGV4dFdyYXBwZXItPnByb3h5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAKaW5kZXggMzdiMGNkZWNhNjUzNTk5ZTk5YmI2YTkwMjYzZTgyYzE1NDkxZDE1
YS4uZTk4NDEwYmVlZTM3ZWFlYzIyMzIwZmY0YThjNmI4MjMzYmE2MzRhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMTA2LDcgKzEwNiw5IEBAIEpT
Qzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiBKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwor
ICAgIGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhaW50Q2FsbGJhY2suaAppbmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5
ZTBmOGRhZGMxMTVjLi4wYzAzZjBhZmJkNzEyNDQ5ZWRkMDcxMzZkNjUzNTc3YWVkNzRkZjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMxLDE2ICszMSwxOCBAQAog
I2luY2x1ZGUgIkNTU1BhaW50U2l6ZS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrUmVzdWx0LmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQ7CiAKLWNsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291
bnRlZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK2NsYXNz
IENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPENTU1BhaW50Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9N
Q2FsbGJhY2sgewogcHVibGljOgogICAgIHVzaW5nIEFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVE
T01DYWxsYmFjazsKIAotICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZl
bnQoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQmLCBDU1NQYWludFNpemUmLCBTdHlsZVByb3BlcnR5
TWFwUmVhZE9ubHkmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2aXJ0dWFsIENh
bGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KEpTQzo6SlNWYWx1ZSwgUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQmLCBDU1NQYWludFNpemUmLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJh
Y2soKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxi
YWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA4
Njc1NmI1MWQ0MTIzZWMyMjYyNWUzMWNjMzE5ZDg3NTMzNDAxZWQ2Li43MmI1MjNkMjRlZGI3OWQy
MjUzMjYxZWVjOWMyMGIzMTQ0NmRkMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaWRsCkBAIC0yNiw0ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQ
YWludGluZ0FQSSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIENhbGxi
YWNrVGhpc09iamVjdD1hbnkKIF0gY2FsbGJhY2sgQ1NTUGFpbnRDYWxsYmFjayA9IHZvaWQgKFBh
aW50UmVuZGVyaW5nQ29udGV4dDJEIGNvbnRleHQsIENTU1BhaW50U2l6ZSBzaXplLCBTdHlsZVBy
b3BlcnR5TWFwUmVhZE9ubHkgc3R5bGVNYXAsIHNlcXVlbmNlPFVTVlN0cmluZz4gYXJndW1lbnRz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaAppbmRleCBiNmI2OWM4Zjcx
NDBhNDhjMzNjYmEzNjc4ZDI2ZWQyMDYyZDdlYmQwLi40M2JjYzFjYWNkODBlMWI2OTgwYTkyNzUx
Zjc4ZTViYjA1MzkzMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5o
CkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTUGFpbnRJbWFnZVZhbHVlKG5hbWUsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgIH0KIAor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAK
ICAgICBib29sIGVxdWFscyhjb25zdCBDU1NQYWludEltYWdlVmFsdWUmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggNzViMGI4ZDQxYTI5NDRkYzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4u
ZDliZGUyODdmMzMxMDBiNDcwMTFkNDQ1ZWMyMDEyNGU0ZGQ0NzBmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNTU0ltYWdl
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NLZXlmcmFtZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NLZXlm
cmFtZXNSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUGFpbnRJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiUGFnZVJ1bGVDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtMTcwOCw2ICsxNzEwLDE4IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgaWYgKGlzSW5oZXJpdCAmJiAhQ1NTUHJvcGVy
dHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRI
YXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOwogCisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisgICAgaWYgKGlzPENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkg
JiYgZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlICJkb2N1bWVudCBwYWludCByZWdpc3RyYXRpb24gbWFw
IiBmcm9tIHRoZSBzcGVjLCBvbmNlIGl0IGlzIGltcGxlbWVudGVkLgorICAgICAgICBhdXRvJiBw
YWludFdvcmtsZXQgPSAqZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25M
b2NrKCkpOworICAgICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gcGFpbnRXb3JrbGV0LnBh
aW50RGVmaW5pdGlvbk1hcCgpLmdldChkb3duY2FzdDxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1
ZVRvQXBwbHkpLm5hbWUoKSkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBy
ZWdpc3RyYXRpb24tPmlucHV0UHJvcGVydGllcykKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5hZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkocHJvcGVydHkpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKICAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxkZXIuCiAg
ICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwg
aXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTZiYzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBj
MjU0OWM1Li45OGVjYWNjOTg2MGI2Zjk5NWNjNzg1NmU1N2JmMzczYTNlODEyYjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1MjgsNiArMjUyOCwxMyBAQCB2b2lkIERvY3VtZW50Ojpw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisgICAgaWYgKG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIHsKKyAgICAg
ICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZS0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7Cisg
ICAgICAgIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBudWxscHRyOworICAgIH0KKyNlbmRp
ZgorCiAgICAgbV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIC8vIE5v
dGUgdGhhdCBtX3BhZ2VDYWNoZVN0YXRlIGNhbiBiZSBEb2N1bWVudDo6QWJvdXRUb0VudGVyUGFn
ZUNhY2hlIGlmIG91ciBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCmluZGV4IGQ4ZjYwZTI5ZDM5Y2ZmYTk5ODIwMWQ5MjhhZGE4YjM3MjRmNmJi
YjkuLjliYTQ4MTlkZjc1MTkyZjJmODRjNjRhZTFmNzNjNDM4MmVkMmIzYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTQ4Miw3ICs0ODIs
NyBAQCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+
KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRo
aXMpLnNjcmlwdCgpLnZtKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFs
U2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNlbmRpZgogCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIwZDU4MjUw
OGQwMmQ4NTM4NmE0MGE1OC4uMDM0ZGE1NjFmZTZiMjgyMjQ1YzgzMDkxYWMzZGUxZTI4N2Y3ODMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5jcHAKQEAgLTQwLDExICs0MCwxMiBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRD
YWxsYmFjay5oIgogI2luY2x1ZGUgIlBhaW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0cnVjdERh
dGEuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21QYWludEltYWdlOjpDdXN0b21Q
YWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24m
IGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKLSAgICA6IG1fcGFpbnRDYWxsYmFj
ayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2suZ2V0KCkpCitDdXN0b21QYWludEltYWdlOjpDdXN0
b21QYWludEltYWdlKFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRl
ZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKKyAgICA6IG1fcGFpbnREZWZpbml0aW9u
KG1ha2VXZWFrUHRyKGRlZmluaXRpb24pKQogICAgICwgbV9pbnB1dFByb3BlcnRpZXMoZGVmaW5p
dGlvbi5pbnB1dFByb3BlcnRpZXMpCiAgICAgLCBtX2VsZW1lbnQobWFrZVdlYWtQdHIoZWxlbWVu
dCkpCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCkBAIC01NiwxMyArNTcsMjAgQEAgQ3Vz
dG9tUGFpbnRJbWFnZTo6fkN1c3RvbVBhaW50SW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIEltYWdlRHJh
d1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgZGVzdFNpemUpCiB7Ci0gICAgaWYgKCFtX2Vs
ZW1lbnQgfHwgIW1fZWxlbWVudC0+ZWxlbWVudCgpKQorICAgIGlmICghbV9lbGVtZW50IHx8ICFt
X2VsZW1lbnQtPmVsZW1lbnQoKSB8fCAhbV9wYWludERlZmluaXRpb24pCiAgICAgICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKKyAgICBKU0M6OkpTVmFsdWUgcGFpbnRD
b25zdHJ1Y3RvcihtX3BhaW50RGVmaW5pdGlvbi0+cGFpbnRDb25zdHJ1Y3Rvcik7CisKKyAgICBp
ZiAoIXBhaW50Q29uc3RydWN0b3IpCisgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CisKKyAgICBhdXRvJiBwYWludENhbGxiYWNrID0gbV9wYWludERlZmluaXRpb24t
PnBhaW50Q2FsbGJhY2suZ2V0KCk7CisKICAgICBBU1NFUlQoIW1fZWxlbWVudC0+bmVlZHNMYXlv
dXQoKSk7CiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPmVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5uZWVk
c1N0eWxlUmVjYWxjKCkpOwogCi0gICAgSlNDU1NQYWludENhbGxiYWNrJiBjYWxsYmFjayA9IHN0
YXRpY19jYXN0PEpTQ1NTUGFpbnRDYWxsYmFjayY+KG1fcGFpbnRDYWxsYmFjay5nZXQoKSk7Cisg
ICAgSlNDU1NQYWludENhbGxiYWNrJiBjYWxsYmFjayA9IHN0YXRpY19jYXN0PEpTQ1NTUGFpbnRD
YWxsYmFjayY+KHBhaW50Q2FsbGJhY2spOwogICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBjYWxsYmFjay5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3Ro
aW5nOwpAQCAtMTAzLDcgKzExMSwyMSBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFn
ZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGF1
dG8gc2l6ZSA9IENTU1BhaW50U2l6ZTo6Y3JlYXRlKGRlc3RTaXplLndpZHRoKCksIGRlc3RTaXpl
LmhlaWdodCgpKTsKICAgICBhdXRvIHByb3BlcnR5TWFwID0gU3R5bGVQcm9wZXJ0eU1hcFJlYWRP
bmx5OjpjcmVhdGUoV1RGTW92ZShwcm9wZXJ0eVZhbHVlcykpOwogCi0gICAgYXV0byByZXN1bHQg
PSBtX3BhaW50Q2FsbGJhY2stPmhhbmRsZUV2ZW50KCpjb250ZXh0LCBzaXplLCBwcm9wZXJ0eU1h
cCwgbV9hcmd1bWVudHMpOworICAgIGF1dG8mIHZtID0gKnBhaW50Q29uc3RydWN0b3IuZ2V0T2Jq
ZWN0KCktPnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9
ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5nbG9iYWxPYmplY3QoKTsKKworICAgIGF1
dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpBcmdMaXN0
IG5vQXJnczsKKyAgICBKU0M6OkpTVmFsdWUgdGhpc09iamVjdCA9IHsgSlNDOjpjb25zdHJ1Y3Qo
JnN0YXRlLCBXVEZNb3ZlKHBhaW50Q29uc3RydWN0b3IpLCBub0FyZ3MsICJGYWlsZWQgdG8gY29u
c3RydWN0IHBhaW50IGNsYXNzIikgfTsKKworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpIHsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUuZXhjZXB0aW9u
KCkpOworICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworICAgIH0K
KworICAgIGF1dG8gcmVzdWx0ID0gcGFpbnRDYWxsYmFjay5oYW5kbGVFdmVudChXVEZNb3ZlKHRo
aXNPYmplY3QpLCAqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1lbnRzKTsKICAg
ICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCBkMzA2
NzkzOTc3MjAwY2NkYmNkYzllMjNiNzZjNTMwNzgyMmNmNzY2Li42OGI0MGM5OWVjYWIzYTVlM2Uw
YzkyYjJiMDEzZDc4NjUxYTcyMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNs
dWRlICJHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9XZWFrLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzgsNyArNDAsNyBAQCBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBjbGFz
cyBDdXN0b21QYWludEltYWdlIGZpbmFsIDogcHVibGljIEdlbmVyYXRlZEltYWdlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEN1c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhcmd1bWVudHMpCisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Vz
dG9tUGFpbnRJbWFnZShkZWZpbml0aW9uLCBzaXplLCBlbGVtZW50LCBhcmd1bWVudHMpKTsKICAg
ICB9CkBAIC00NywxNCArNDksMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNDdXN0b21QYWludElt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEN1
c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5p
dGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKTsKKyAgICBDdXN0b21QYWludEltYWdlKFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJFbGVtZW50
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAKICAgICBJbWFnZURyYXdSZXN1
bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAog
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmlu
YWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAK
LSAgICBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gbV9wYWludENhbGxiYWNrOworICAgIFdlYWtQdHI8
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbj4gbV9wYWludERlZmluaXRp
b247CiAgICAgVmVjdG9yPFN0cmluZz4gbV9pbnB1dFByb3BlcnRpZXM7CiAgICAgV2Vha1B0cjxS
ZW5kZXJFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVudHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRl
eCBjZmRiN2I1MzdmY2I3ZmI5ZDA1ODY1ODQ1M2JiZWYxYWExOGI0ZmNhLi42ODU5ZjIyZTAyZTll
ZWU1NzlkZGU5NzJhMGY5ODI2MTY2YzNlNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTIzLDEwICsyMywxMiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAKLSNpbmNsdWRlICJDb250ZW50
RGF0YS5oIgorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1
ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIu
aCIKKyNpbmNsdWRlICJDb250ZW50RGF0YS5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNp
bmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKQEAg
LTgwLDEwICs4MiwxOSBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgZGVs
ZXRpb25DaGVjazsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGJv
b2wgaGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXM7CisjZW5kaWYKIH07CiAKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFJlbmRlclN0eWxlKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxl
KSwgIlJlbmRlclN0eWxlIHNob3VsZCBzdGF5IHNtYWxsIik7CiAKK3N0YXRpYyBIYXNoTWFwPGNv
bnN0IFJlbmRlclN0eWxlKiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+JiBjdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJTdHlsZSosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0
cmluZz4+Pj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKIFJlbmRlclN0eWxlJiBSZW5kZXJT
dHlsZTo6ZGVmYXVsdFN0eWxlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVuZGVy
U3R5bGU+IHN0eWxlIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07CkBAIC0xMjgsOCArMTM5LDUyIEBA
IFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRv
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmCiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1SZW5kZXJT
dHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OwotUmVuZGVyU3R5bGUm
IFJlbmRlclN0eWxlOjpvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OworUmVuZGVy
U3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYgb3RoZXIpCisgICAgOiBtX2JveERhdGEo
V1RGTW92ZShvdGhlci5tX2JveERhdGEpKQorICAgICwgbV92aXN1YWxEYXRhKFdURk1vdmUob3Ro
ZXIubV92aXN1YWxEYXRhKSkKKyAgICAsIG1fYmFja2dyb3VuZERhdGEoV1RGTW92ZShvdGhlci5t
X2JhY2tncm91bmREYXRhKSkKKyAgICAsIG1fc3Vycm91bmREYXRhKFdURk1vdmUob3RoZXIubV9z
dXJyb3VuZERhdGEpKQorICAgICwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YShXVEZNb3ZlKG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEpKQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhXVEZN
b3ZlKG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MpKQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0
YShXVEZNb3ZlKG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEpKQorICAgICwgbV9pbmhlcml0ZWRE
YXRhKFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWREYXRhKSkKKyAgICAsIG1faW5oZXJpdGVkRmxh
Z3MoV1RGTW92ZShvdGhlci5tX2luaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1fY2FjaGVkUHNldWRv
U3R5bGVzKFdURk1vdmUob3RoZXIubV9jYWNoZWRQc2V1ZG9TdHlsZXMpKQorICAgICwgbV9zdmdT
dHlsZShXVEZNb3ZlKG90aGVyLm1fc3ZnU3R5bGUpKQoreworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgIGlmIChvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7
CisgICAgICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAg
ICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91
bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0
aWVzTWFwKCkuZ2V0KCZvdGhlcikpKSk7CisgICAgICAgIG90aGVyLm1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllc01hcCgpLnJlbW92ZSgmb3RoZXIpOworICAgIH0KKyNlbmRpZgorfQorCitSZW5kZXJTdHls
ZSYgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPShSZW5kZXJTdHlsZSYmIG90aGVyKQoreworICAgIG1f
Ym94RGF0YSA9IFdURk1vdmUob3RoZXIubV9ib3hEYXRhKTsKKyAgICBtX3Zpc3VhbERhdGEgPSBX
VEZNb3ZlKG90aGVyLm1fdmlzdWFsRGF0YSk7CisgICAgbV9iYWNrZ3JvdW5kRGF0YSA9IFdURk1v
dmUob3RoZXIubV9iYWNrZ3JvdW5kRGF0YSk7CisgICAgbV9zdXJyb3VuZERhdGEgPSBXVEZNb3Zl
KG90aGVyLm1fc3Vycm91bmREYXRhKTsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID0gV1RG
TW92ZShvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKTsKKyAgICBtX25vbkluaGVyaXRlZEZs
YWdzID0gV1RGTW92ZShvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKTsKKyAgICBtX3JhcmVJbmhl
cml0ZWREYXRhID0gV1RGTW92ZShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKTsKKyAgICBtX2lu
aGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1faW5oZXJpdGVkRGF0YSk7CisgICAgbV9pbmhl
cml0ZWRGbGFncyA9IFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWRGbGFncyk7CisgICAgbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMgPSBXVEZNb3ZlKG90aGVyLm1fY2FjaGVkUHNldWRvU3R5bGVzKTsKKyAg
ICBtX3N2Z1N0eWxlID0gV1RGTW92ZShvdGhlci5tX3N2Z1N0eWxlKTsKKworICAgIGlmIChvdGhl
ci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAgICAgIG1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+
PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZvdGhlcikp
KSk7CisgICAgICAgIG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxz
ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmb3Ro
ZXIpOworICAgIH0KKworICAgIHJldHVybiAqdGhpczsKK30KIAogUmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKENyZWF0ZURlZmF1bHRTdHlsZVRhZykKICAgICA6IG1fYm94RGF0YShTdHlsZUJveERh
dGE6OmNyZWF0ZSgpKQpAQCAtMjA2LDYgKzI2MSwxMiBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJl
bmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCiAgICAgLCBtX2lu
aGVyaXRlZEZsYWdzKG90aGVyLm1faW5oZXJpdGVkRmxhZ3MpCiAgICAgLCBtX3N2Z1N0eWxlKG90
aGVyLm1fc3ZnU3R5bGUpCiB7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYg
KG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0
cmluZz4+KCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZvdGhlcikpKTsK
KyAgICB9CisjZW5kaWYKIH0KIAogaW5saW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5k
ZXJTdHlsZSYgYSwgUmVuZGVyU3R5bGUmJiBiKQpAQCAtMjIxLDYgKzI4MiwyMCBAQCBpbmxpbmUg
UmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIp
CiAgICAgLCBtX2NhY2hlZFBzZXVkb1N0eWxlcyhzdGQ6OmV4Y2hhbmdlKGEubV9jYWNoZWRQc2V1
ZG9TdHlsZXMsIFdURk1vdmUoYi5tX2NhY2hlZFBzZXVkb1N0eWxlcykpKQogICAgICwgbV9zdmdT
dHlsZShhLm1fc3ZnU3R5bGUucmVwbGFjZShXVEZNb3ZlKGIubV9zdmdTdHlsZSkpKQogeworI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChhLm1faGFzQ3VzdG9tUGFpbnRXYXRj
aFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9
IHRydWU7CisgICAgICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQodGhp
cywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1vdmUoKmN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJmEpKSkpOworICAgICAgICBhLm1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllc01hcCgpLnJlbW92ZSgmYSk7CisgICAgfQorICAgIGlmIChiLm1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgYS5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQ
cm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01h
cCgpLmFkZCgmYSwgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1vdmUoKmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJmIpKSkpOworICAgICAgICBiLm1f
aGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICAgICAgY3VzdG9tUGFp
bnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYik7CisgICAgfQorI2VuZGlmCiB9CiAK
IFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQpAQCAtMjI5LDYgKzMwNCwxMCBAQCBSZW5kZXJT
dHlsZTo6flJlbmRlclN0eWxlKCkKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwog
I2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgbV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXNNYXAoKS5yZW1vdmUodGhpcyk7CisjZW5kaWYKIH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OnJlcGxhY2UoUmVuZGVyU3R5bGUmJiBuZXdTdHlsZSkKQEAgLTM2Miw2ICs0NDEsMTEgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNv
bnN0CiAgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEgPT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YQogICAgICAgICAmJiBtX3JhcmVJbmhlcml0ZWREYXRhID09IG90aGVyLm1f
cmFyZUluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9pbmhlcml0ZWREYXRhID09IG90aGVyLm1f
aW5oZXJpdGVkRGF0YQorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgICAgICAmJiAo
KCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzICYmICFvdGhlci5tX2hhc0N1c3RvbVBh
aW50V2F0Y2hQcm9wZXJ0aWVzKQorICAgICAgICAgICAgfHwgKG1faGFzQ3VzdG9tUGFpbnRXYXRj
aFByb3BlcnRpZXMgJiYgb3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcworICAg
ICAgICAgICAgICAgICYmICpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KHRo
aXMpID09ICpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZvdGhlcikpKQor
I2VuZGlmCiAgICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gb3RoZXIubV9zdmdTdHlsZTsKIH0KIApA
QCAtOTU4LDYgKzEwNDIsMTcgQEAgc3RhdGljIGJvb2wgcmFyZUluaGVyaXRlZERhdGFDaGFuZ2VS
ZXF1aXJlc1JlcGFpbnQoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYKICAgICAgICAgfHwg
Zmlyc3QuaW1hZ2VSZW5kZXJpbmcgIT0gc2Vjb25kLmltYWdlUmVuZGVyaW5nOwogfQogCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXN0b21QYWlu
dFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmICghbV9oYXNDdXN0
b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQ
cm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01h
cCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKSk7CisgICAg
fQorICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQodGhpcyktPmFkZChu
YW1lKTsKK30KKyNlbmRpZgorCiBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFp
bnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnR5PiYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVz
KSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNQYWludGluZygqdGhpcykgJiYgIXJlcXVpcmVz
UGFpbnRpbmcob3RoZXIpKQpAQCAtOTc5LDYgKzEwNzQsNDIgQEAgYm9vbCBSZW5kZXJTdHlsZTo6
Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW9uU2V0
PFN0eWwKICAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc1JlcGFpbnQo
Km1fcmFyZUluaGVyaXRlZERhdGEsICpvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAo
VU5MSUtFTFkobV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyB8fCBvdGhlci5tX2hhc0N1
c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IG5vdCBuZWVkIHRvIHVzZSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGhlcmUuCisgICAgICAgIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3IgZXh0cmFjdG9yKChFbGVtZW50KikgbnVsbHB0cik7CisKKyAg
ICAgICAgZm9yIChhdXRvKiB3YXRjaFByb3BlcnRpZXNNYXAgOiB7IGN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXNNYXAoKS5nZXQodGhpcyksIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNN
YXAoKS5nZXQoJm90aGVyKSB9KSB7CisgICAgICAgICAgICBpZiAoIXdhdGNoUHJvcGVydGllc01h
cCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yIChhdXRvJiBu
YW1lIDogKndhdGNoUHJvcGVydGllc01hcCkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWVBOworICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVCOwor
ICAgICAgICAgICAgICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShuYW1lKSAmJiBnZXRDdXN0
b21Qcm9wZXJ0eShuYW1lKSAmJiBvdGhlci5nZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSkgeworICAg
ICAgICAgICAgICAgICAgICB2YWx1ZUEgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUo
KmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpvdGhlci5nZXRDdXN0b21Qcm9wZXJ0eShu
YW1lKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChuYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eUlEKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQSA9IGV4dHJhY3Rvci52YWx1ZUZvclByb3Bl
cnR5aW5TdHlsZSgqdGhpcywgcHJvcGVydHlJRCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVl
QiA9IGV4dHJhY3Rvci52YWx1ZUZvclByb3BlcnR5aW5TdHlsZShvdGhlciwgcHJvcGVydHlJRCk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZUEgJiYgIXZh
bHVlQikgfHwgKCF2YWx1ZUEgJiYgdmFsdWVCKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlQSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoISgqdmFsdWVBID09ICp2YWx1ZUIp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDk4MWI4ZWVlZWJlOTZh
NjFiMWFhZDM2MzI0MmQ3NGU5NjgxYzAzZWQuLmU3OGViMzkzNGFiOTIzYzM3NDliYTA1NzVhNGIw
YjUzMjAzNTIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCkBAIC0xMjUzLDYgKzEyNTMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwbGVQ
YXlCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9uVHlwZSB0eXBlKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgYXBwbGVQYXlCdXR0b25UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dHlwZSkpOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIHZv
aWQgYWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSk7CisjZW5k
aWYKKwogICAgIC8vIFN1cHBvcnQgZm9yIHBhaW50LW9yZGVyLCBzdHJva2UtbGluZWNhcCwgc3Ry
b2tlLWxpbmVqb2luLCBhbmQgc3Ryb2tlLW1pdGVybGltaXQgZnJvbSBodHRwczovL2RyYWZ0cy5m
eHRmLm9yZy9wYWludC8uCiAgICAgdm9pZCBzZXRQYWludE9yZGVyKFBhaW50T3JkZXIgb3JkZXIp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBwYWludE9yZGVyLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ob3JkZXIpKTsgfQogICAgIFBhaW50T3JkZXIgcGFpbnRPcmRlcigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFBhaW50T3JkZXI+KG1fcmFyZUluaGVyaXRlZERhdGEtPnBhaW50
T3JkZXIpOyB9CkBAIC0xODY0LDYgKzE4NjgsMTAgQEAgcHJpdmF0ZToKIAogICAgIERhdGFSZWY8
U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKKyAgICBib29sIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgeyBmYWxzZSB9Owor
I2VuZGlmCisKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJ
T05TKQogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGU3M2U3YTkzODY0MDI3M2Y0MjM1YmZi
ZjVkNTBhZDM3YWMzNTRjMTQuLjFmOGJiMzNjNzliZmQ0MDg5MGQ2ZDc0ZThlMGMxODVjYzY5OWIy
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE3Miw2ICsxNzIsNyBA
QAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldyaXRpbmdEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJYTUxIdHRw
UmVxdWVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvZGVCbG9jay5oPgpAQCAtMjM1
Miw2ICsyMzUzLDE1IEBAIGJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxpdmUodWludDY0X3Qg
ZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdAogICAgIHJldHVybiBEb2N1bWVudDo6YWxsRG9jdW1l
bnRzTWFwKCkuY29udGFpbnMobWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVy
VHlwZT4oZG9jdW1lbnRJZGVudGlmaWVyKSk7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc0FueVdv
cmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKyAgICByZXR1cm4gIVdvcmtsZXRHbG9iYWxTY29wZTo6YWxsV29ya2xldEdsb2JhbFNj
b3Blc01hcCgpLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKIFN0cmluZyBJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwZTNlOWMzNjM4MmE5MWQzYTRiZDVk
MDMwZGM3YzVhM2Q4NWQ0OGVmLi42YzIzZDE0M2I1ZmQ4MzljOTA3MmE0NmE1YjhmYzE1NzQ5NDUw
NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM4MCw2ICszODAsOCBAQCBw
dWJsaWM6CiAgICAgdWludDY0X3QgZG9jdW1lbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50Jikg
Y29uc3Q7CiAgICAgYm9vbCBpc0RvY3VtZW50QWxpdmUodWludDY0X3QgZG9jdW1lbnRJZGVudGlm
aWVyKSBjb25zdDsKIAorICAgIGJvb2wgaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNv
bnN0OworCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERv
Y3VtZW50JikgY29uc3Q7CiAKICAgICBSZWZQdHI8V2luZG93UHJveHk+IG9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCBmNGNkYTE1YTcxYjk5ZDUyOWY2ZTZhZjEzODg4MTdlYjQ5YzUwNzk3Li45
NjE0NjZkYzJlNDg5N2EwYTk3NzAwNzFmODQ5ZDAzNDJmNzI1YjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC02NjgsNiArNjY4LDggQEAgZW51bSBDb21wb3NpdGluZ1Bv
bGljeSB7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRvY3VtZW50SWRlbnRpZmllcihEb2N1bWVu
dCBkb2N1bWVudCk7CiAgICAgYm9vbGVhbiBpc0RvY3VtZW50QWxpdmUodW5zaWduZWQgbG9uZyBs
b25nIGRvY3VtZW50SWRlbnRpZmllcik7CiAKKyAgICBib29sZWFuIGlzQW55V29ya2xldEdsb2Jh
bFNjb3BlQWxpdmUoKTsKKwogICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAKICAgICBQcm9taXNlPHZvaWQ+IGNsZWFyQ2FjaGVT
dG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMjlhMjAwZDEwZGYzZmQ2
YjdhY2ZiYTk3ODhlYzFjNGJhOGEwYTQzLi5hMTFhMzVhZTA1NmUzMTU5NjgzZjQ3NGU0OGQ1YmQ5
MzEzOGJhZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDU1NQYWlu
dENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwx
NSArNTEsMjUgQEAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50V29ya2xldEdsb2JhbFNj
b3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmMKIAogZG91YmxlIFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIHsKLSAgICBpZiAoIXJlc3Bv
bnNhYmxlRG9jdW1lbnQoKSB8fCAhcmVzcG9uc2FibGVEb2N1bWVudCgpLT5kb21XaW5kb3coKSkK
KyAgICBpZiAoIXJlc3BvbnNpYmxlRG9jdW1lbnQoKSB8fCAhcmVzcG9uc2libGVEb2N1bWVudCgp
LT5kb21XaW5kb3coKSkKICAgICAgICAgcmV0dXJuIDEuMDsKLSAgICByZXR1cm4gcmVzcG9uc2Fi
bGVEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworICAgIHJldHVy
biByZXNwb25zaWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7
Cit9CisKK1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50RGVm
aW5pdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29u
c3RydWN0b3IsIFJlZjxDU1NQYWludENhbGxiYWNrPiYmIHBhaW50Q2FsbGJhY2ssIFZlY3RvcjxT
dHJpbmc+JiYgaW5wdXRQcm9wZXJ0aWVzLCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50cykK
KyAgICA6IG5hbWUobmFtZSkKKyAgICAsIHBhaW50Q29uc3RydWN0b3IocGFpbnRDb25zdHJ1Y3Rv
cikKKyAgICAsIHBhaW50Q2FsbGJhY2soV1RGTW92ZShwYWludENhbGxiYWNrKSkKKyAgICAsIGlu
cHV0UHJvcGVydGllcyhXVEZNb3ZlKGlucHV0UHJvcGVydGllcykpCisgICAgLCBpbnB1dEFyZ3Vt
ZW50cyhXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSkKK3sKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMu
Y3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1wYWludAog
RXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIFN0cm9uZzxKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3RvcikKIHsK
ICAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLT52bSgpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIFZhbGlkYXRlIHRoYXQgcGFpbnRDb25zdHJ1Y3RvciBpcyBhIFZvaWRGdW5j
dGlvbgpAQCAtNjksNjIgKzgwLDcwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJU
aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICB7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKIAot
ICAgIGlmIChwYWludERlZmluaXRpb25NYXAoKS5jb250YWlucyhuYW1lKSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgbmFtZSBoYXMg
YWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiIH07CisgICAgICAgIGlmIChwYWludERlZmluaXRpb25N
YXAoKS5jb250YWlucyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3Rl
cmVkIiB9OwogCi0gICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7CiAKLSAgICBKU1ZhbHVlIGlucHV0UHJvcGVy
dGllc0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwor
ICAgICAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0
cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJv
cGVydGllcyIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmICghaW5wdXRQcm9wZXJ0aWVz
SXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBj
b252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJ
dGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBpZiAoIWlucHV0UHJvcGVydGll
c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIGlucHV0UHJvcGVydGll
cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVy
dGllc0l0ZXJhYmxlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgLy8gRklYTUU6IFZh
bGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KKyAgICAgICAgLy8gRklYTUU6
IFZhbGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KIAotICAgIFZlY3RvcjxT
dHJpbmc+IGlucHV0QXJndW1lbnRzOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3Vt
ZW50czsKIAotICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlID0gcGFpbnRD
b25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1
dEFyZ3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBKU1ZhbHVlIGlucHV0QXJndW1l
bnRzSXRlcmFibGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
CiAKLSAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAg
ICAgICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAg
ICAgICAgICAgIGlucHV0QXJndW1lbnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJp
bmc+PihzdGF0ZSwgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKIAotICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUg
KHN0ZXBzIDExIGFuZCAxMikuCisgICAgICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlu
cHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCiAKLSAgICBKU1ZhbHVlIGNvbnRl
eHRPcHRpb25zVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImNvbnRleHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworICAgICAgICBKU1ZhbHVlIGNvbnRl
eHRPcHRpb25zVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImNvbnRleHRPcHRpb25zIikpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwor
ICAgICAgICBVTlVTRURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7CiAKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAg
MTQpLgorICAgICAgICAvLyBGSVhNRTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQy
RFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgogCi0gICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5p
c0NvbnN0cnVjdG9yKHZtKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
IlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9OworICAgICAgICBp
ZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBh
IGNvbnN0cnVjdG9yIiB9OwogCi0gICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29u
c3RydWN0b3ItPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0
b3ItPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7CiAKLSAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2
ZSBhIHByb3RvdHlwZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKKyAgICAgICAgaWYgKCFwcm90b3R5
cGVWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMg
YW4gb2JqZWN0IiB9OwogCi0gICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFsdWUu
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOworICAgICAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1ZS5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhaW50IikpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwogCi0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBt
ZXRob2QiIH07CisgICAgICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBh
IHBhaW50IG1ldGhvZCIgfTsKIAotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50
ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRl
LCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIFJlZlB0
cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQu
cmVsZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKLSAg
ICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24p
KTsKKyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50
RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRz
KSk7CisgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50
RGVmaW5pdGlvbikpOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBjYXNlIHdoZW4g
d2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlIHBhaW50IGRlZmluaXRpb24gbWFwLCBhbmQgdGhl
IEdDIGlzIGN1cnJlbnRseSBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgIHZtLmhlYXAu
d3JpdGVCYXJyaWVyKCZnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gRklYTUU6IGNvbnN0cnVjdCBk
b2N1bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgogCisgICAgaWYgKHJlc3BvbnNpYmxlRG9jdW1l
bnQoKSAmJiByZXNwb25zaWJsZURvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICAgICAgcmVz
cG9uc2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCktPnJlcGFpbnRSb290Q29udGVudHMoKTsK
KwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDIzMjcxZjE1NDI5MTRiODViNGIyNWY3OTE5
MmVhNGNlY2NhOGE1NTAuLjYxYjcxZjJkNGUwNTllZjhiMzJlNDNhNWJiNWUzNDY3ZjI0OTE0ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgog
I2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNDUsMTkgKzQ2LDM4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiByZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBhaW50Q29uc3Ry
dWN0b3IpOwogICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAKLSAgICBzdHJ1
Y3QgUGFpbnREZWZpbml0aW9uIHsKKyAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4gewogICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcgbmFtZTsKKyAgICAgICAgLy8gVGhpcyBtYXAgbXVzdCBiZSBjbGVhcmVkIGJlZm9yZSB0
aGUgdm0gaXMgZGVzdHJveWVkIQorICAgICAgICBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVj
dG9yOwogICAgICAgICBjb25zdCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gcGFpbnRDYWxsYmFjazsK
ICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKworICAgICAgICBQYWludERlZmlu
aXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0
cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFBy
b3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzKTsKICAgICB9OwogCiAgICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiYgcGFpbnRE
ZWZpbml0aW9uTWFwKCkgeyBBU1NFUlQobV9wYWludERlZmluaXRpb25Mb2NrLmlzTG9ja2VkKCkp
OyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7IH0KICAgICBMb2NrJiBwYWludERlZmluaXRp
b25Mb2NrKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25Mb2NrOyB9CiAKKyAgICB2b2lkIHBy
ZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFsCisgICAgeworICAgICAgICB7CisgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAg
ICAgICBwYWludERlZmluaXRpb25NYXAoKS5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIFdv
cmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgfQorCiBwcml2
YXRlOgogICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0U291cmNl
Q29kZSYmKTsKIAorICAgIH5QYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCisgICAgeworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAg
IEFTU0VSVChwYWludERlZmluaXRpb25NYXAoKS5pc0VtcHR5KCkpOworICAgIH0KKwogICAgIGJv
b2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9u
Pj4gbV9wYWludERlZmluaXRpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMGQzMDA5ZGE5M2FjNDNiMTZlMGRkNDBkMDRjZjgy
ZTAwYjI0MGI1Li5hMGFjYzcyM2NjNTc5NWEyMzBjNWM3Y2UzMzUwY2FhZjA2ZGY2NTM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5
LDcgKzM5LDYgQEAKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAKQEAgLTQ5
LDEyICs0OCwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VD
b2RlJiYgY29kZSkKICAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAg
ICwgbV9zZXNzaW9uSUQobV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdCht
YWtlVW5pcXVlUmVmPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2Ny
aXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAg
ICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQotICAgICwgbV9p
ZGVudGlmaWVyKG1ha2VTdHJpbmcoIldvcmtsZXRHbG9iYWxTY29wZToiX3MsIEluc3BlY3Rvcjo6
SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpKQogICAgICwgbV9ldmVudFF1
ZXVlKCp0aGlzKQogICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCisgICAgLCBtX2lkZW50aWZp
ZXIoZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJU
eXBlPigpKQogeworICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc01h
cCgpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCk7CiAgICAgbV9qc1J1bnRpbWVGbGFncyA9IGZyYW1lID8gZnJhbWUtPnNldHRpbmdzKCku
amF2YVNjcmlwdFJ1bnRpbWVGbGFncygpIDogSlNDOjpSdW50aW1lRmxhZ3MoKTsKICAgICBBU1NF
UlQoZG9jdW1lbnQucGFnZSgpKTsKQEAgLTY1LDggKzY3LDI1IEBAIFdvcmtsZXRHbG9iYWxTY29w
ZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29k
ZSYmIGNvCiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCiB7Cisg
ICAgQVNTRVJUKCFtX3NjcmlwdCk7CiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7Ci0gICAg
bV9zY3JpcHQtPndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+c2V0Q29uc29sZUNsaWVudChu
dWxscHRyKTsKKyAgICBhbGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKCkucmVtb3ZlKG1faWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKQoreworICAgIEFTU0VSVChtX3NjcmlwdCk7CisgICAgc3RvcEFjdGl2ZURPTU9iamVjdHMo
KTsKKyAgICByZW1vdmVSZWplY3RlZFByb21pc2VUcmFja2VyKCk7CisgICAgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKTsKKyAgICBtX3NjcmlwdC0+dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24o
KTsKKyAgICBtX3NjcmlwdCA9IG51bGxwdHI7Cit9CisKK2F1dG8gV29ya2xldEdsb2JhbFNjb3Bl
OjphbGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKCkgLT4gV29ya2xldEdsb2JhbFNjb3Blc01hcCYK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V29ya2xldEdsb2JhbFNjb3Blc01hcD4gc2Nv
cGVzOworICAgIHJldHVybiBzY29wZXM7CiB9CiAKIFN0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6
Om9yaWdpbigpIGNvbnN0CkBAIC04OCw3ICsxMDcsNyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29w
ZTo6ZXZhbHVhdGUoKQogCiBib29sIFdvcmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZv
cmJpZGRlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJp
ZGRlbigpOworICAgIHJldHVybiAhbV9zY3JpcHQgfHwgbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9y
YmlkZGVuKCk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKQEAgLTExMCwzMCArMTI5LDMwIEBAIFVSTCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogCiB2b2lk
IFdvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCiB7Ci0gICAg
aWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9y
YmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25U
b0NvbnNvbGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgV1RGTW92ZShzdGFjaykpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYg
bWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8
IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSB8fCAhbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOworICAg
IG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVz
c2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1
bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1
ZXN0SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0
YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIpCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1
bWVudCkKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVs
LCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1v
dmUoY2FsbFN0YWNrKSwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX2RvY3VtZW50
LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRyLCByZXF1ZXN0
SWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZjAxNTY0ZDg2N2MxMGFhY2Y5
Y2YwYzFkZjY5MDY1Y2ZlZjJkNzVjNi4uYzgwYThiYTZlMjVhNjNhZDdlMDcyMjEzNmFiZTBhYTZj
NTI5MDBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmgKQEAgLTM4LDI5ICszOCwzNCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVN
ZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOwogY2xh
c3MgU2NyaXB0U291cmNlQ29kZTsKIAorZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZT47CisKIGNsYXNzIFdvcmts
ZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSB7CiBwdWJsaWM6Ci0gICAgfldvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHZpcnR1YWwg
fldvcmtsZXRHbG9iYWxTY29wZSgpOworCisgICAgdXNpbmcgV29ya2xldEdsb2JhbFNjb3Blc01h
cCA9IEhhc2hNYXA8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllciwgV29ya2xldEdsb2JhbFNj
b3BlKj47CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdvcmtsZXRHbG9iYWxTY29wZXNNYXAm
IGFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50
V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9CiAgICAgU3Ry
aW5nIG9yaWdpbigpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBldmFsdWF0ZSgpOwog
CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVm
OwogCi0gICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2Ny
aXB0LmdldCgpOyB9CisgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0
dXJuIG1fc2NyaXB0LmdldCgpOyB9CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIApAQCAtNzQs
MTEgKzc5LDEzIEBAIHB1YmxpYzoKIAogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZs
YWdzKCkgY29uc3QgeyByZXR1cm4gbV9qc1J1bnRpbWVGbGFnczsgfQogCisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2xldEds
b2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKIAotICAgIERvY3VtZW50
KiByZXNwb25zYWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQotICAg
IGNvbnN0IERvY3VtZW50KiByZXNwb25zYWJsZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
b2N1bWVudC5nZXQoKTsgfQorICAgIERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgeyBy
ZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zaWJs
ZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogCiBwcml2YXRl
OgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTE4LDEwICsxMjUsOSBAQCBwcml2
YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKLSAgICBVbmlxdWVSZWY8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+
IG1fc2NyaXB0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4g
bV9zY3JpcHQ7CiAKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwotICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgaW1wbGVtZW50
ZWQgcHJvcGVybHksIGl0IGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CkBAIC0xMjksNiArMTM1
LDggQEAgcHJpdmF0ZToKIAogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7
CiAgICAgU2NyaXB0U291cmNlQ29kZSBtX2NvZGU7CisKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCAwNTVkN2YxMTY4ZWViNWFjZjA0MmZmMTRiZmM5OWM3M2RjY2I4ZjM3Li4xMTY4OTc4
ZTQyNGRmMWM0OGU0NjFjNTg4OWM3OGZjZGJhMDY3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OSwxMyArNTks
MTUgQEAgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdv
cmtsZXRHbG9iYWxTY29wZSogd29ya2xldEdsb2IKIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+
V29ya2xldFNjcmlwdENvbnRyb2xsZXIoKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkp
OwotICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1fdm0gPSBu
dWxscHRyOworICAgIGZvcmJpZEV4ZWN1dGlvbigpOworCiAgICAgaWYgKG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcikgewogICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmNs
ZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKICAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQg
PSBudWxscHRyOwogICAgIH0KKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIo
KTsKKyAgICBtX3ZtID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6Zm9yYmlkRXhlY3V0aW9uKCkKQEAgLTgyLDYgKzg0LDkgQEAgYm9vbCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogCiB2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07
CiAKQEAgLTkwLDYgKzk1LDkgQEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiAKIHZvaWQgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07
CiAKQEAgLTEzMiw2ICsxNDAsOSBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0V2l0aFN1YmNsYXNzKCkKIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCgpCiB7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93b3JrbGV0R2xv
YmFsU2NvcGUpKSB7CiAgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU+KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZmRhNGIxNjNi
MjFlZDFjMmY5MjEyMmM3NjAzMTI0MmQwYjRjN2M5Li45Mzc0NGM5NDkxMjE1MmFmYjk3MTA0Zjlk
OThhMjJlMjNiY2RjNmZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMTEtMTMgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWlu
dGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywg
YW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2Nzcy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAxOC0xMS0wNyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyBz
aXplLCBhcmd1bWVudHMgYW5kIGlucHV0IHByb3BlcnRpZXMgdG8gcGFpbnQgY2FsbGJhY2sKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YWI4OGQ5MmQ0MjkwMGYwYTI4YzU1MGIzODgzMTc0Mzcw
OTIwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvYW5pbWF0ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIHdpZHRo
OiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAg
PGRpdiBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDEwY2UzMjk2ZjVhNzBjMTcyZDUzYmJmYjdlNDM0NGQwNDY1ZjAzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUtcmVwYWludC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorKHJlcGFpbnQgcmVjdHMK
KyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCAxNTAgMTUwKQorICAocmVjdCA4IDgg
Nzg0IDE1MCkKKyAgKHJlY3QgMCAwIDgwMCAxNjYpCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAo
cmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCisgIChyZWN0IDggOCAxNTAg
MTUwKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YW5pbWF0ZS1yZXBhaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YW5pbWF0ZS1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2EzMjZhNWEzZTNhMDU2OWYxNTE1YWM4
YjI0YzczMzI4NGM0ODM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWlu
dGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVz
dGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIHJlcGFp
bnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZSI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0
dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IGlkPSJj
b2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorICBjbGFzcyBNeVBhaW50IHsKKyAgICBzdGF0aWMg
Z2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnLS1teS1wcm9wJ107IH0KKworICAgIHBh
aW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgICAgaWYgKHByb3BlcnRpZXMuZ2V0KCct
LW15LXByb3AnKS50b1N0cmluZygpICE9ICJnb29kYnllIikgeworICAgICAgICBjdHguZmlsbFN0
eWxlID0gInJlZCI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguZmlsbFN0eWxlID0gImdy
ZWVuIjsKKyAgICAgIH0KKworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdl
b20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKyAgcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBh
aW50KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dChmYWxzZSk7CisgICAgd2luZG93LmludGVybmFscy5zdGFydFRy
YWNraW5nUmVwYWludHMoKTsKKyAgfQorICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQs
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworCisgIC8vIEZJ
WE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2UsIHRoZXNlIHNldFRpbWVv
dXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3BlcnR5KCctLW15LXByb3An
LCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHJlcGFpbnRSZWN0cyA9ICJObyB0ZXN0IHJ1bm5lciI7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7CisKKyAgICAgIC8vIGZvcmNlIGEgc3R5bGUgcmVjYWxj
LgorICAgICAgdmFyIGR1bW15ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKKyAgICAgIHJl
cGFpbnRSZWN0cyA9IHdpbmRvdy5pbnRlcm5hbHMucmVwYWludFJlY3RzQXNUZXh0KCk7CisKKyAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRyYWNraW5nUmVwYWludHMoKTsKKyAgICB9CisKKyAg
ICB2YXIgcHJlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChwcmUpOworICAgIHByZS5pbm5lckhUTUwgPSByZXBhaW50UmVjdHM7
CisgIH0sIDEwMDApOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNr
Z3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAg
ICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJv
ZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMTcxYjgyMDgx
YjZiYjcyOTZhYmIwYjk2YTE2NWRkNDJjN2QxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sCkBAIC0wLDAgKzEsNDQgQEAK
KzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNT
U1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxl
PSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmci
PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMg
cmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVu
dD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0
YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisg
ICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5n
ZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSAicmVkIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUg
PSAiZ3JlZW4iOworICAgICAgfQorCisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0
aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcs
IE15UGFpbnQpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29kZScpLnRleHRDb250ZW50KTsKKworICAvLyBGSVhNRTogT25jZSBpbXBvcnRXb3JrbGV0
IHJldHVybnMgYSBwcm9taXNlLCB0aGVzZSBzZXRUaW1lb3V0cyBzaG91bGQgZ28gYXdheS4KKyAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFp
bnQnKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1teS1wcm9wJywgJ2dvb2RieWUnKTsKKyAgfSwgNTAw
KTsKKzwvc2NyaXB0PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogcGFpbnQobXktcGFpbnQpOworICAgIC0tbXktcHJvcDogaGVsbG87CisgICAgd2lkdGg6IDE1
MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2
IGlkPSJwYWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3ItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ0NDU3OTIxYmM4N2VhNDQ4NTQ3NGJkODJkMmZhNDQxZDllYWM0YmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3ItZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KKyAg
LnBhaW50IHsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9z
dHlsZT4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDog
d2hpdGU7Ij48L2Rpdj4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiBn
cmVlbjsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdy
ZWVuOyI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNWFjMmQ1ZTVlNzkwMWI0ZDU0
MzQ5ODBlOTI2ODIyOGQ5Y2I5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURP
Q1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWlu
dGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVz
dGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIGRvIG5v
dCBjcmFzaCBpZiB0aGUgY29uc3RydWN0b3IgdGhyb3dzIj4KKzxsaW5rIHJlbD0iaGVscCIgY29u
dGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAg
IGNvbnN0cnVjdG9yKCkgeworICAgICAgdGhyb3cgIkhlbGxvISI7CisgICAgfQorCisgICAgcGFp
bnQoY3R4LCBnZW9tKSB7CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0
eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisK
KyAgY2xhc3MgTXlQYWludDIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgIH0KKworICAgIHBh
aW50KGN0eCwgZ2VvbSkgeworICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICBj
dHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQor
ICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworICByZWdpc3RlclBhaW50KCdt
eS1wYWludDInLCBNeVBhaW50Mik7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMuaXNBbnlX
b3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbGVha3MnKS5zdHlsZS5iYWNrZ3JvdW5kID0gImdyZWVuIjsKKyAgICB9CisgIH0sIDUwMCk7
Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRoOiAxNTBweDsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBjbGFzcz0i
cGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7Ij48L2Rpdj4K
KyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1w
YWludDIpOyI+PC9kaXY+CisgIDxkaXYgaWQ9ImxlYWtzIiBzdHlsZT0iYmFja2dyb3VuZDogcmVk
OyB3aWR0aDogMTUwcHg7IGhlaWdodDogMTUwcHg7Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQzY2U3NzdjOTVjNzk4M2IzNzU4ZTgzMDQxYjZmYjY1OWQzMTc5YzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBhaW50
IGRvZXMgbm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQgbGVh
a2VkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBXb3JrbGV0IGdsb2Jh
bCBzY29wZSBkaWQgbm90IGxlYWsKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvbGVha3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFr
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjMGM1MjkyZmYwMDZiZDAwNGQ4NzdmMTk3ZGI0MTE4YWY3ZjI1
YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
bGVha3MuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0t
PgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0
bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIGRvbid0IGxlYWsiPgorPGxpbmsgcmVsPSJoZWxw
IiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0x
LyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKworPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9sZWFrcy1mcmFtZS5o
dG1sIj48L2lmcmFtZT4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHVzaW5n
IGN1c3RvbSBwYWludCBkb2VzIG5vdCBjYXVzZSB0aGUgcGFpbnQgd29ya2xldCBnbG9iYWwgc2Nv
cGUgdG8gZ2V0IGxlYWtlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVu
Y3Rpb24gcGFpbnRTaG91bGREaWUoKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgaGFuZGxlID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBnYygpOworICAgICAgICAgICAgaWYgKCFpbnRlcm5hbHMuaXNB
bnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpKSB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChoYW5kbGUpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwgMTApOworICAgIH0pOworfQorCit2YXIgdGVzdEZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOwordGVzdEZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9u
KCkgeworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RGcmFtZS5yZW1v
dmUoKTsKKyAgICAgICAgcGFpbnRTaG91bGREaWUoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiV29ya2xldCBnbG9iYWwgc2NvcGUgZGlkIG5vdCBsZWFrIik7Cisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSwgMTApOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3Bl
cnRpZXMuaHRtbAppbmRleCAwYWU2ODhiZTAzZWYzYjVjODE3MTU3YzhkMzljMmIwNDhkZmIwNTFl
Li5kOWE0NjU1YjFmZmE0NThkNGZmYzhkYjk3OTU3NDhmMjliYjAwMjA5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKQEAgLTIxLDYg
KzIxLDExIEBACiBjbGFzcyBNeVBhaW50IHsKICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMo
KSB7IHJldHVybiBbJ2hlaWdodCcsICctLW15LXByb3AnLCAnLS1teS1yZWdpc3RlcmVkLXByb3An
LCAiLS1uZXZlci1zcGVjaWZpZWQiXTsgfQogICBzdGF0aWMgZ2V0IGlucHV0QXJndW1lbnRzKCkg
eyByZXR1cm4gWycqJywgJyonLCAnKiddOyB9CisKKyAgY29uc3RydWN0b3IoKSB7IHRoaXMubXlB
dHRyaWJ1dGUgPSA0MjsgfQorCisgIHRlc3RUaGlzKCkgeyByZXR1cm4gdGhpcy5teUF0dHJpYnV0
ZTsgfQorCiAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcywgYXJncykgewogICAgIGFzc2Vy
dF9lcXVhbHMocHJvcGVydGllcy5nZXQoJ2hlaWdodCcpLnRvU3RyaW5nKCksIGFyZ3NbMF0udG9T
dHJpbmcoKSk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnaGVpZ2h0JykudmFs
dWUsIDE1MCk7CkBAIC0zMCw2ICszNSw4IEBAIGNsYXNzIE15UGFpbnQgewogICAgIGFzc2VydF9l
cXVhbHMocHJvcGVydGllcy5nZXQoJ3dpZHRoJyksIG51bGwpOwogICAgIGFzc2VydF9lcXVhbHMo
cHJvcGVydGllcy5nZXQoJy0tbmV2ZXItc3BlY2lmaWVkJykudG9TdHJpbmcoKSwgJycpOwogCisg
ICAgYXNzZXJ0X2VxdWFscyh0aGlzLnRlc3RUaGlzKCksIDQyKTsKKwogICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNjsgaSsrKXsKICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKICAg
ICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkp
ICsgJywnICsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9y
ZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mjc1N2RkOTk5ZDUx
ZDU2MmUzMjNkYmRmMmUzNDA4MzBlY2I1N2E4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFtZS5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhw
ZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJh
dXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVk
QHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFp
bnQgd29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBz
Oi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKworPHN0eWxlPgor
ICAucGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3
aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGRpdiBj
bGFzcz0icGFpbnQiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmts
ZXQiPgorY29uc3QgZ2xvYmFsU2NvcGUgPSB0aGlzOworY2xhc3MgTXlQYWludCB7CisgIHBhaW50
KGN0eCwgZ2VvbSwgcHJvcGVydGllcywgYXJncykgeworICAgIGNvbnN0IGR1bW15ID0gZ2xvYmFs
U2NvcGU7IC8vIExlYWshCisgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgY3R4LmZp
bGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgfQorfQorTXlQYWludC5j
cmVhdGVBTGVhayA9IHRoaXM7CityZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitDU1MucGFpbnRXb3JrbGV0LmFkZE1vZHVsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKzwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yYWYt
bGVhay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjYzYTVmNmIzNDcy
NDZiZmEyODY2ODRlN2FjYzUyYzUxYTFjZDdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yYWYtbGVhay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
VmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDgKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDgKKyAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354829</attachid>
            <date>2018-11-14 10:22:16 -0800</date>
            <delta_ts>2018-11-15 20:09:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181114102215.patch</filename>
            <type>text/plain</type>
            <size>65556</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MmZiZmI1NzRmNTQyZTA0NDU3YjRmNjc3MTA1OWIyODZjNjU0MTQwLi4zYTFiZWQ1ZjQ3Mzc1MGM5
YjdlYTBlZmFkMWU1YzI1OTc2OTVlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0wNyAgQ2Fp
byBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQWRkIHN1
cHBvcnQgdG8gQmlnSW50IGludG8gVmFsdWVBZGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNDMyMGVlMzQ4NTQ3
MzY0ZjIzMTYyZGQwZDE1NWYyMzkyYzEzOTMyLi5iNDkxNWIwOTBkODViYjg4NDQyODM0ZTE3MjJk
MTMwNWU3MGFiZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTgtMTEtMTMgIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQ
YWludGluZyBBUEkgc2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFj
aywgYW5kIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBwYWludCBjbGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRo
ZSBwYWludCBjYWxsYmFjayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1h
a2VzIHN1cmUgdGhhdCBjdXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHBy
b3BlcnRpZXMgdGhhdCB0aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFs
bHksIHdlIGZpeCB0d28gcmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFs
U2NvcGUgdG8gbmV2ZXIgYmUgZGVzdHJveWVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGNzcy9DU1NQYWludENh
bGxiYWNrLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAq
IGNzcy9DU1NQYWludEltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBy
ZXBhcmVGb3JEZXN0cnVjdGlvbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFs
U2NvcGVBbGl2ZSBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU6OmRldmljZVBpeGVsUmF0aW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6UGFpbnREZWZpbml0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToK
KyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6On5QYWludFdvcmtsZXRHbG9iYWxTY29w
ZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9i
YWxTY29wZXNNYXApOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjppc0pT
RXhlY3V0aW9uRm9yYmlkZGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6c2Ny
aXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9uc2libGVE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNp
YmxlRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjppZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRH
bG9iYWxTY29wZTo6cmVzcG9uc2FibGVEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRp
c2FibGVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpk
aXNhYmxlV2ViQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQpOgorCiAyMDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBw
YXNzIHNpemUsIGFyZ3VtZW50cyBhbmQgaW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFj
awpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0
YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmluZGV4
IDA5N2NmNDg4MWY0NmU3ZTlmYjA3ZGQxZmIyNzBkYmIxYTRlMmViMDYuLjU5MzhhOTBkODlmOTZj
MzkxNTEwZTA0M2MxYWQyNTkzZjkzMTA4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IENvbnN0cnVj
dERhdGEgewogfTsKIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlciBzbyB5b3UgZG9uJ3QgbmVlZCB0
byBkZWFsIHdpdGggQ2FsbERhdGEgYW5kIENhbGxUeXBlIHVubGVzcyB5b3UgYXJlIGdvaW5nIHRv
IHVzZSB0aGVtLgotSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsKK0pT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7
CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFs
dWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25z
dCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogCiBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmNwcAppbmRleCA4OWEzMDgwZGE4YjUzMzdkYTAxOWNlZTZhMTM1ZWM3NWNh
Mzg5YzQwLi43OTRhNTM4MWI3N2U0OGQ2MmM1NGQzNzI0ZWM4YjdhYjg1ZmZiOWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoSlNET01PYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCmlu
ZGV4IGE4Y2VhZTYwYmE3MDI2ZWI3ZWIyZTJjYTkxMGIyMWRlZjUzNTlhZWYuLjAxMTg0YTg0NjI3
NjA4NzhjMDBlODMwYmY4MWZjYTBkYzQ5YWVjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20u
Y3BwCkBAIC0zNCw4ICszNCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogdm9pZCBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlZCgpLnBh
aW50RGVmaW5pdGlvbkxvY2soKSk7Ci0gICAgZm9yIChhdXRvJiByZWdpc3RlcmVkIDogd3JhcHBl
ZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKQorICAgIGZvciAoYXV0byYgcmVnaXN0
ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkgewogICAgICAg
ICByZWdpc3RlcmVkLT5wYWludENhbGxiYWNrLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQocmVnaXN0ZXJlZC0+cGFpbnRDb25zdHJ1
Y3Rvcik7CisgICAgfQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBmYjVhNzU1NjgyZDE2MTQ2
YTViODkyYjljNzVlN2EzNTYxNmE3YzYxLi43Y2Q4MGU3NDE1N2ZmYWNmZGFlZDBjNjRlYTk5YmNl
NDQyYzg4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEyOCw3ICsxMjgsOCBAQCBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIFdvcmtsZXRHbG9iYWxTY29w
ZSYgd29ya2xldEdsbwogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgYXV0byogY29udGV4dFdyYXBwZXIgPSB3
b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkud29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwor
ICAgIEFTU0VSVCh3b3JrbGV0R2xvYmFsU2NvcGUuc2NyaXB0KCkpOworICAgIGF1dG8qIGNvbnRl
eHRXcmFwcGVyID0gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyKCk7CiAgICAgQVNTRVJUKGNvbnRleHRXcmFwcGVyKTsKICAgICByZXR1cm4gY29u
dGV4dFdyYXBwZXItPnByb3h5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAKaW5kZXggMzdiMGNkZWNhNjUzNTk5ZTk5YmI2YTkwMjYzZTgyYzE1NDkxZDE1
YS4uZTk4NDEwYmVlZTM3ZWFlYzIyMzIwZmY0YThjNmI4MjMzYmE2MzRhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMTA2LDcgKzEwNiw5IEBAIEpT
Qzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiBKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKS0+Z2xvYmFsRXhlYygpOwor
ICAgIGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhaW50Q2FsbGJhY2suaAppbmRleCA3NTY1NjNjM2JhZDY5NTkyYzQ0OTI5NzFkMjM5
ZTBmOGRhZGMxMTVjLi4wYzAzZjBhZmJkNzEyNDQ5ZWRkMDcxMzZkNjUzNTc3YWVkNzRkZjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMxLDE2ICszMSwxOCBAQAog
I2luY2x1ZGUgIkNTU1BhaW50U2l6ZS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrUmVzdWx0LmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQ7CiAKLWNsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291
bnRlZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK2NsYXNz
IENTU1BhaW50Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPENTU1BhaW50Q2FsbGJhY2s+LCBwdWJsaWMgQWN0aXZlRE9N
Q2FsbGJhY2sgewogcHVibGljOgogICAgIHVzaW5nIEFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVE
T01DYWxsYmFjazsKIAotICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZl
bnQoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQmLCBDU1NQYWludFNpemUmLCBTdHlsZVByb3BlcnR5
TWFwUmVhZE9ubHkmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKKyAgICB2aXJ0dWFsIENh
bGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KEpTQzo6SlNWYWx1ZSwgUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQmLCBDU1NQYWludFNpemUmLCBTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJh
Y2soKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxi
YWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA4
Njc1NmI1MWQ0MTIzZWMyMjYyNWUzMWNjMzE5ZDg3NTMzNDAxZWQ2Li43MmI1MjNkMjRlZGI3OWQy
MjUzMjYxZWVjOWMyMGIzMTQ0NmRkMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaWRsCkBAIC0yNiw0ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQ
YWludGluZ0FQSSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIENhbGxi
YWNrVGhpc09iamVjdD1hbnkKIF0gY2FsbGJhY2sgQ1NTUGFpbnRDYWxsYmFjayA9IHZvaWQgKFBh
aW50UmVuZGVyaW5nQ29udGV4dDJEIGNvbnRleHQsIENTU1BhaW50U2l6ZSBzaXplLCBTdHlsZVBy
b3BlcnR5TWFwUmVhZE9ubHkgc3R5bGVNYXAsIHNlcXVlbmNlPFVTVlN0cmluZz4gYXJndW1lbnRz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaAppbmRleCBiNmI2OWM4Zjcx
NDBhNDhjMzNjYmEzNjc4ZDI2ZWQyMDYyZDdlYmQwLi40M2JjYzFjYWNkODBlMWI2OTgwYTkyNzUx
Zjc4ZTViYjA1MzkzMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5o
CkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTUGFpbnRJbWFnZVZhbHVlKG5hbWUsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgIH0KIAor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAK
ICAgICBib29sIGVxdWFscyhjb25zdCBDU1NQYWludEltYWdlVmFsdWUmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggNzViMGI4ZDQxYTI5NDRkYzA4ZTE0YzU1Y2U4MTY4ZjJlYmI4MDFkNy4u
ZDliZGUyODdmMzMxMDBiNDcwMTFkNDQ1ZWMyMDEyNGU0ZGQ0NzBmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkNTU0ltYWdl
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NLZXlmcmFtZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NLZXlm
cmFtZXNSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUGFpbnRJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKQEAgLTczLDYgKzc0LDcgQEAKICNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiUGFnZVJ1bGVDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtMTcwOCw2ICsxNzEwLDE4IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgaWYgKGlzSW5oZXJpdCAmJiAhQ1NTUHJvcGVy
dHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRI
YXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOwogCisjaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCisgICAgaWYgKGlzPENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkg
JiYgZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlICJkb2N1bWVudCBwYWludCByZWdpc3RyYXRpb24gbWFw
IiBmcm9tIHRoZSBzcGVjLCBvbmNlIGl0IGlzIGltcGxlbWVudGVkLgorICAgICAgICBhdXRvJiBw
YWludFdvcmtsZXQgPSAqZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgpOworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25M
b2NrKCkpOworICAgICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gcGFpbnRXb3JrbGV0LnBh
aW50RGVmaW5pdGlvbk1hcCgpLmdldChkb3duY2FzdDxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1
ZVRvQXBwbHkpLm5hbWUoKSkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBy
ZWdpc3RyYXRpb24tPmlucHV0UHJvcGVydGllcykKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5hZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkocHJvcGVydHkpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKICAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxkZXIuCiAg
ICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwg
aXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTZiYzRiYzViYTAzZDlhY2RkNDEwNTUyODdlOWIwNjBj
MjU0OWM1Li45OGVjYWNjOTg2MGI2Zjk5NWNjNzg1NmU1N2JmMzczYTNlODEyYjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1MjgsNiArMjUyOCwxMyBAQCB2b2lkIERvY3VtZW50Ojpw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisgICAgaWYgKG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpIHsKKyAgICAg
ICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZS0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7Cisg
ICAgICAgIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBudWxscHRyOworICAgIH0KKyNlbmRp
ZgorCiAgICAgbV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIC8vIE5v
dGUgdGhhdCBtX3BhZ2VDYWNoZVN0YXRlIGNhbiBiZSBEb2N1bWVudDo6QWJvdXRUb0VudGVyUGFn
ZUNhY2hlIGlmIG91ciBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCmluZGV4IGQ4ZjYwZTI5ZDM5Y2ZmYTk5ODIwMWQ5MjhhZGE4YjM3MjRmNmJi
YjkuLjliYTQ4MTlkZjc1MTkyZjJmODRjNjRhZTFmNzNjNDM4MmVkMmIzYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTQ4Miw3ICs0ODIs
NyBAQCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwogI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+
KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRo
aXMpLnNjcmlwdCgpLnZtKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFs
U2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNlbmRpZgogCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggNDM5NjJjNTI2Y2JjZWVjYmIwZDU4MjUw
OGQwMmQ4NTM4NmE0MGE1OC4uMDM0ZGE1NjFmZTZiMjgyMjQ1YzgzMDkxYWMzZGUxZTI4N2Y3ODMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5jcHAKQEAgLTQwLDExICs0MCwxMiBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRD
YWxsYmFjay5oIgogI2luY2x1ZGUgIlBhaW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnN0cnVjdERh
dGEuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21QYWludEltYWdlOjpDdXN0b21Q
YWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24m
IGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKLSAgICA6IG1fcGFpbnRDYWxsYmFj
ayhkZWZpbml0aW9uLnBhaW50Q2FsbGJhY2suZ2V0KCkpCitDdXN0b21QYWludEltYWdlOjpDdXN0
b21QYWludEltYWdlKFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRl
ZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKKyAgICA6IG1fcGFpbnREZWZpbml0aW9u
KG1ha2VXZWFrUHRyKGRlZmluaXRpb24pKQogICAgICwgbV9pbnB1dFByb3BlcnRpZXMoZGVmaW5p
dGlvbi5pbnB1dFByb3BlcnRpZXMpCiAgICAgLCBtX2VsZW1lbnQobWFrZVdlYWtQdHIoZWxlbWVu
dCkpCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCkBAIC01NiwxMyArNTcsMjAgQEAgQ3Vz
dG9tUGFpbnRJbWFnZTo6fkN1c3RvbVBhaW50SW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIEltYWdlRHJh
d1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgZGVzdFNpemUpCiB7Ci0gICAgaWYgKCFtX2Vs
ZW1lbnQgfHwgIW1fZWxlbWVudC0+ZWxlbWVudCgpKQorICAgIGlmICghbV9lbGVtZW50IHx8ICFt
X2VsZW1lbnQtPmVsZW1lbnQoKSB8fCAhbV9wYWludERlZmluaXRpb24pCiAgICAgICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKKyAgICBKU0M6OkpTVmFsdWUgcGFpbnRD
b25zdHJ1Y3RvcihtX3BhaW50RGVmaW5pdGlvbi0+cGFpbnRDb25zdHJ1Y3Rvcik7CisKKyAgICBp
ZiAoIXBhaW50Q29uc3RydWN0b3IpCisgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CisKKyAgICBhdXRvJiBwYWludENhbGxiYWNrID0gbV9wYWludERlZmluaXRpb24t
PnBhaW50Q2FsbGJhY2suZ2V0KCk7CisKICAgICBBU1NFUlQoIW1fZWxlbWVudC0+bmVlZHNMYXlv
dXQoKSk7CiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPmVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5uZWVk
c1N0eWxlUmVjYWxjKCkpOwogCi0gICAgSlNDU1NQYWludENhbGxiYWNrJiBjYWxsYmFjayA9IHN0
YXRpY19jYXN0PEpTQ1NTUGFpbnRDYWxsYmFjayY+KG1fcGFpbnRDYWxsYmFjay5nZXQoKSk7Cisg
ICAgSlNDU1NQYWludENhbGxiYWNrJiBjYWxsYmFjayA9IHN0YXRpY19jYXN0PEpTQ1NTUGFpbnRD
YWxsYmFjayY+KHBhaW50Q2FsbGJhY2spOwogICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBjYWxsYmFjay5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3Ro
aW5nOwpAQCAtMTAzLDcgKzExMSwyMSBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFn
ZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGF1
dG8gc2l6ZSA9IENTU1BhaW50U2l6ZTo6Y3JlYXRlKGRlc3RTaXplLndpZHRoKCksIGRlc3RTaXpl
LmhlaWdodCgpKTsKICAgICBhdXRvIHByb3BlcnR5TWFwID0gU3R5bGVQcm9wZXJ0eU1hcFJlYWRP
bmx5OjpjcmVhdGUoV1RGTW92ZShwcm9wZXJ0eVZhbHVlcykpOwogCi0gICAgYXV0byByZXN1bHQg
PSBtX3BhaW50Q2FsbGJhY2stPmhhbmRsZUV2ZW50KCpjb250ZXh0LCBzaXplLCBwcm9wZXJ0eU1h
cCwgbV9hcmd1bWVudHMpOworICAgIGF1dG8mIHZtID0gKnBhaW50Q29uc3RydWN0b3IuZ2V0T2Jq
ZWN0KCktPnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9
ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT5nbG9iYWxPYmplY3QoKTsKKworICAgIGF1
dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpBcmdMaXN0
IG5vQXJnczsKKyAgICBKU0M6OkpTVmFsdWUgdGhpc09iamVjdCA9IHsgSlNDOjpjb25zdHJ1Y3Qo
JnN0YXRlLCBXVEZNb3ZlKHBhaW50Q29uc3RydWN0b3IpLCBub0FyZ3MsICJGYWlsZWQgdG8gY29u
c3RydWN0IHBhaW50IGNsYXNzIikgfTsKKworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpIHsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUuZXhjZXB0aW9u
KCkpOworICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworICAgIH0K
KworICAgIGF1dG8gcmVzdWx0ID0gcGFpbnRDYWxsYmFjay5oYW5kbGVFdmVudChXVEZNb3ZlKHRo
aXNPYmplY3QpLCAqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1lbnRzKTsKICAg
ICBpZiAocmVzdWx0LnR5cGUoKSAhPSBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCBkMzA2
NzkzOTc3MjAwY2NkYmNkYzllMjNiNzZjNTMwNzgyMmNmNzY2Li42OGI0MGM5OWVjYWIzYTVlM2Uw
YzkyYjJiMDEzZDc4NjUxYTcyMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNs
dWRlICJHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9XZWFrLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzgsNyArNDAsNyBAQCBjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBjbGFz
cyBDdXN0b21QYWludEltYWdlIGZpbmFsIDogcHVibGljIEdlbmVyYXRlZEltYWdlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEN1c3RvbVBhaW50SW1hZ2U+IGNyZWF0ZShjb25zdCBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhcmd1bWVudHMpCisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Vz
dG9tUGFpbnRJbWFnZShkZWZpbml0aW9uLCBzaXplLCBlbGVtZW50LCBhcmd1bWVudHMpKTsKICAg
ICB9CkBAIC00NywxNCArNDksMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNDdXN0b21QYWludElt
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEN1
c3RvbVBhaW50SW1hZ2UoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5p
dGlvbiYsIGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKTsKKyAgICBDdXN0b21QYWludEltYWdlKFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJFbGVtZW50
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAKICAgICBJbWFnZURyYXdSZXN1
bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAog
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmlu
YWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAK
LSAgICBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4gbV9wYWludENhbGxiYWNrOworICAgIFdlYWtQdHI8
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbj4gbV9wYWludERlZmluaXRp
b247CiAgICAgVmVjdG9yPFN0cmluZz4gbV9pbnB1dFByb3BlcnRpZXM7CiAgICAgV2Vha1B0cjxS
ZW5kZXJFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hcmd1bWVudHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRl
eCBjZmRiN2I1MzdmY2I3ZmI5ZDA1ODY1ODQ1M2JiZWYxYWExOGI0ZmNhLi43NzA4NWVhOTJhMTJl
N2E5NWM0NzZhMmY5NGVjODE4NjdhZmMzNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTIzLDEwICsyMywxMiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAKLSNpbmNsdWRlICJDb250ZW50
RGF0YS5oIgorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1
ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIu
aCIKKyNpbmNsdWRlICJDb250ZW50RGF0YS5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNp
bmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKQEAg
LTgwLDEwICs4MiwxOSBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgZGVs
ZXRpb25DaGVjazsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGJv
b2wgaGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXM7CisjZW5kaWYKIH07CiAKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFJlbmRlclN0eWxlKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxl
KSwgIlJlbmRlclN0eWxlIHNob3VsZCBzdGF5IHNtYWxsIik7CiAKK3N0YXRpYyBIYXNoTWFwPGNv
bnN0IFJlbmRlclN0eWxlKiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+JiBjdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxjb25zdCBSZW5kZXJTdHlsZSosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0
cmluZz4+Pj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKIFJlbmRlclN0eWxlJiBSZW5kZXJT
dHlsZTo6ZGVmYXVsdFN0eWxlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVuZGVy
U3R5bGU+IHN0eWxlIHsgQ3JlYXRlRGVmYXVsdFN0eWxlIH07CkBAIC0xMjgsOCArMTM5LDU0IEBA
IFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRv
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmCiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1SZW5kZXJT
dHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OwotUmVuZGVyU3R5bGUm
IFJlbmRlclN0eWxlOjpvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJikgPSBkZWZhdWx0OworUmVuZGVy
U3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYgb3RoZXIpCisgICAgOiBtX2JveERhdGEo
V1RGTW92ZShvdGhlci5tX2JveERhdGEpKQorICAgICwgbV92aXN1YWxEYXRhKFdURk1vdmUob3Ro
ZXIubV92aXN1YWxEYXRhKSkKKyAgICAsIG1fYmFja2dyb3VuZERhdGEoV1RGTW92ZShvdGhlci5t
X2JhY2tncm91bmREYXRhKSkKKyAgICAsIG1fc3Vycm91bmREYXRhKFdURk1vdmUob3RoZXIubV9z
dXJyb3VuZERhdGEpKQorICAgICwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YShXVEZNb3ZlKG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEpKQorICAgICwgbV9ub25Jbmhlcml0ZWRGbGFncyhXVEZN
b3ZlKG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3MpKQorICAgICwgbV9yYXJlSW5oZXJpdGVkRGF0
YShXVEZNb3ZlKG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEpKQorICAgICwgbV9pbmhlcml0ZWRE
YXRhKFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWREYXRhKSkKKyAgICAsIG1faW5oZXJpdGVkRmxh
Z3MoV1RGTW92ZShvdGhlci5tX2luaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1fY2FjaGVkUHNldWRv
U3R5bGVzKFdURk1vdmUob3RoZXIubV9jYWNoZWRQc2V1ZG9TdHlsZXMpKQorICAgICwgbV9zdmdT
dHlsZShXVEZNb3ZlKG90aGVyLm1fc3ZnU3R5bGUpKQoreworI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgIGlmIChvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7
CisgICAgICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAg
ICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91
bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0
aWVzTWFwKCkuZ2V0KCZvdGhlcikpKSk7CisgICAgICAgIG90aGVyLm1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllc01hcCgpLnJlbW92ZSgmb3RoZXIpOworICAgIH0KKyNlbmRpZgorfQorCitSZW5kZXJTdHls
ZSYgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPShSZW5kZXJTdHlsZSYmIG90aGVyKQoreworICAgIG1f
Ym94RGF0YSA9IFdURk1vdmUob3RoZXIubV9ib3hEYXRhKTsKKyAgICBtX3Zpc3VhbERhdGEgPSBX
VEZNb3ZlKG90aGVyLm1fdmlzdWFsRGF0YSk7CisgICAgbV9iYWNrZ3JvdW5kRGF0YSA9IFdURk1v
dmUob3RoZXIubV9iYWNrZ3JvdW5kRGF0YSk7CisgICAgbV9zdXJyb3VuZERhdGEgPSBXVEZNb3Zl
KG90aGVyLm1fc3Vycm91bmREYXRhKTsKKyAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhID0gV1RG
TW92ZShvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKTsKKyAgICBtX25vbkluaGVyaXRlZEZs
YWdzID0gV1RGTW92ZShvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKTsKKyAgICBtX3JhcmVJbmhl
cml0ZWREYXRhID0gV1RGTW92ZShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKTsKKyAgICBtX2lu
aGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1faW5oZXJpdGVkRGF0YSk7CisgICAgbV9pbmhl
cml0ZWRGbGFncyA9IFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWRGbGFncyk7CisgICAgbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMgPSBXVEZNb3ZlKG90aGVyLm1fY2FjaGVkUHNldWRvU3R5bGVzKTsKKyAg
ICBtX3N2Z1N0eWxlID0gV1RGTW92ZShvdGhlci5tX3N2Z1N0eWxlKTsKKworI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0aWVzKSB7CisgICAgICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVl
OworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNo
ZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZvdGhlcikpKSk7CisgICAgICAgIG90aGVyLm1faGFzQ3Vz
dG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmb3RoZXIpOworICAgIH0KKyNlbmRpZgorCisgICAg
cmV0dXJuICp0aGlzOworfQogCiBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVs
dFN0eWxlVGFnKQogICAgIDogbV9ib3hEYXRhKFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCkBAIC0y
MDYsNiArMjYzLDEyIEBAIGlubGluZSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykKICAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIu
bV9pbmhlcml0ZWRGbGFncykKICAgICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHlsZSkKIHsK
KyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21Q
YWludFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgp
LmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKmN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpOworICAgIH0KKyNlbmRpZgogfQog
CiBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5kZXJT
dHlsZSYmIGIpCkBAIC0yMjEsNiArMjg0LDIwIEBAIGlubGluZSBSZW5kZXJTdHlsZTo6UmVuZGVy
U3R5bGUoUmVuZGVyU3R5bGUmIGEsIFJlbmRlclN0eWxlJiYgYikKICAgICAsIG1fY2FjaGVkUHNl
dWRvU3R5bGVzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2NhY2hlZFBzZXVkb1N0eWxlcywgV1RGTW92ZShi
Lm1fY2FjaGVkUHNldWRvU3R5bGVzKSkpCiAgICAgLCBtX3N2Z1N0eWxlKGEubV9zdmdTdHlsZS5y
ZXBsYWNlKFdURk1vdmUoYi5tX3N2Z1N0eWxlKSkpCiB7CisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGEubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAg
ICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hTZXQ8U3RyaW5nPj4oV1RGTW92ZSgqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01h
cCgpLmdldCgmYSkpKSk7CisgICAgICAgIGEubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVt
b3ZlKCZhKTsKKyAgICB9CisgICAgaWYgKGIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cykgeworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOwor
ICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKCZhLCBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oV1RGTW92ZSgqY3VzdG9tUGFpbnRXYXRjaGVkUHJv
cGVydGllc01hcCgpLmdldCgmYikpKSk7CisgICAgICAgIGIubV9oYXNDdXN0b21QYWludFdhdGNo
UHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
TWFwKCkucmVtb3ZlKCZiKTsKKyAgICB9CisjZW5kaWYKIH0KIAogUmVuZGVyU3R5bGU6On5SZW5k
ZXJTdHlsZSgpCkBAIC0yMjksNiArMzA2LDEwIEBAIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUo
KQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2RlbGV0aW9uSGFzQmVn
dW4pOwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKKyAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0g
ZmFsc2U7CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSh0aGlz
KTsKKyNlbmRpZgogfQogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6cmVwbGFjZShSZW5kZXJT
dHlsZSYmIG5ld1N0eWxlKQpAQCAtMzYyLDYgKzQ0MywxMSBAQCBib29sIFJlbmRlclN0eWxlOjpv
cGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhCiAgICAg
ICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEgPT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YQog
ICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEgPT0gb3RoZXIubV9pbmhlcml0ZWREYXRhCisjaWYg
RU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgICAgICYmICgoIW1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMgJiYgIW90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMp
CisgICAgICAgICAgICB8fCAobV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyAmJiBvdGhl
ci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgJiYgKmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQodGhpcykgPT0gKmN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpCisjZW5kaWYKICAgICAgICAgJiYg
bV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCkBAIC05NTgsNiArMTA0NCwxNyBA
QCBzdGF0aWMgYm9vbCByYXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzUmVwYWludChjb25z
dCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJgogICAgICAgICB8fCBmaXJzdC5pbWFnZVJlbmRlcmlu
ZyAhPSBzZWNvbmQuaW1hZ2VSZW5kZXJpbmc7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKK3ZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0
aWVzKSB7CisgICAgICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOwor
ICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpKTsKKyAgICB9CisgICAgY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllc01hcCgpLmdldCh0aGlzKS0+YWRkKG5hbWUpOworfQorI2VuZGlmCisK
IGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHls
ZSYgb3RoZXIsIE9wdGlvblNldDxTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dHk+JiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgaWYg
KCFyZXF1aXJlc1BhaW50aW5nKCp0aGlzKSAmJiAhcmVxdWlyZXNQYWludGluZyhvdGhlcikpCkBA
IC05NzksNiArMTA3Niw0MiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFp
bnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5bAogICAgICAgICAmJiBy
YXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzUmVwYWludCgqbV9yYXJlSW5oZXJpdGVkRGF0
YSwgKm90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAor
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGlmIChVTkxJS0VMWShtX2hhc0N1c3Rv
bVBhaW50V2F0Y2hQcm9wZXJ0aWVzIHx8IG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3Bl
cnRpZXMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3IgaGVyZS4KKyAgICAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
ciBleHRyYWN0b3IoKEVsZW1lbnQqKSBudWxscHRyKTsKKworICAgICAgICBmb3IgKGF1dG8qIHdh
dGNoUHJvcGVydGllc01hcCA6IHsgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdl
dCh0aGlzKSwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpIH0p
IHsKKyAgICAgICAgICAgIGlmICghd2F0Y2hQcm9wZXJ0aWVzTWFwKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiAqd2F0Y2hQcm9wZXJ0
aWVzTWFwKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUE7CisgICAg
ICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUI7CisgICAgICAgICAgICAgICAgaWYg
KGlzQ3VzdG9tUHJvcGVydHlOYW1lKG5hbWUpICYmIGdldEN1c3RvbVByb3BlcnR5KG5hbWUpICYm
IG90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZh
bHVlQSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqZ2V0Q3VzdG9tUHJvcGVydHko
bmFtZSkpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGUoKm90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3Bl
cnR5SUQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWVBID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKCp0aGlzLCBw
cm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0gZXh0cmFjdG9yLnZhbHVl
Rm9yUHJvcGVydHlpblN0eWxlKG90aGVyLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoKHZhbHVlQSAmJiAhdmFsdWVCKSB8fCAoIXZhbHVlQSAm
JiB2YWx1ZUIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIGlmICghdmFsdWVBKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgICAgIGlmICghKCp2YWx1ZUEgPT0gKnZhbHVlQikpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlm
CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOTgxYjhlZWVlYmU5NmE2MWIxYWFkMzYzMjQyZDc0ZTk2
ODFjMDNlZC4uZTc4ZWIzOTM0YWI5MjNjMzc0OWJhMDU3NWE0YjBiNTMyMDM1MjAxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEyNTMsNiAr
MTI1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBwbGVQ
YXlCdXR0b25UeXBlIHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhcHBs
ZVBheUJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgdm9pZCBhZGRDdXN0b21QYWludFdh
dGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZgorCiAgICAgLy8gU3VwcG9y
dCBmb3IgcGFpbnQtb3JkZXIsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGluZWpvaW4sIGFuZCBz
dHJva2UtbWl0ZXJsaW1pdCBmcm9tIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL3BhaW50Ly4KICAg
ICB2b2lkIHNldFBhaW50T3JkZXIoUGFpbnRPcmRlciBvcmRlcikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHBhaW50T3JkZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcikpOyB9
CiAgICAgUGFpbnRPcmRlciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UGFpbnRPcmRlcj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cGFpbnRPcmRlcik7IH0KQEAgLTE4NjQs
NiArMTg2OCwxMCBAQCBwcml2YXRlOgogCiAgICAgRGF0YVJlZjxTVkdSZW5kZXJTdHlsZT4gbV9z
dmdTdHlsZTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGJvb2wgbV9oYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllcyB7IGZhbHNlIH07CisjZW5kaWYKKwogI2lmICFBU1NF
UlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgYm9vbCBtX2Rl
bGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggZTczZTdhOTM4NjQwMjczZjQyMzViZmJmNWQ1MGFkMzdhYzM1NGMxNC4u
MWY4YmIzM2M3OWJmZDQwODkwZDZkNzRlOGUwYzE4NWNjNjk5YjIzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTcyLDYgKzE3Miw3IEBACiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V3JpdGluZ0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CkBAIC0yMzUyLDYgKzIzNTMsMTUgQEAgYm9v
bCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIp
IGNvbnN0CiAgICAgcmV0dXJuIERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyht
YWtlT2JqZWN0SWRlbnRpZmllcjxEb2N1bWVudElkZW50aWZpZXJUeXBlPihkb2N1bWVudElkZW50
aWZpZXIpKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6OmlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxp
dmUoKSBjb25zdAoreworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAgIHJldHVybiAh
V29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKCkuaXNFbXB0eSgp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFs
czo6c2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IDBlM2U5YzM2MzgyYTkxZDNhNGJkNWQwMzBkYzdjNWEzZDg1ZDQ4ZWYu
LjZjMjNkMTQzYjVmZDgzOWM5MDcyYTQ2YTViOGZjMTU3NDk0NTA3NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtMzgwLDYgKzM4MCw4IEBAIHB1YmxpYzoKICAgICB1aW50NjRf
dCBkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKICAgICBib29sIGlz
RG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0OwogCisgICAg
Ym9vbCBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3Q7CisKICAgICBTdHJpbmcg
c2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIAog
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGY0Y2Rh
MTVhNzFiOTlkNTI5ZjZlNmFmMTM4ODgxN2ViNDljNTA3OTcuLjk2MTQ2NmRjMmU0ODk3YTBhOTc3
MDA3MWY4NDlkMDM0MmY3MjViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTY2OCw2ICs2NjgsOCBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKICAgICBi
b29sZWFuIGlzRG9jdW1lbnRBbGl2ZSh1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlm
aWVyKTsKIAorICAgIGJvb2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpOworCiAg
ICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3Vt
ZW50KTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNl
bnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyOWEyMDBkMTBkZjNmZDZiN2FjZmJhOTc4OGVjMWM0YmE4
YTBhNDMuLmExMWEzNWFlMDU2ZTMxNTk2ODNmNDc0ZTQ4ZDViZDkzMTM4YmFlZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1
ZW5jZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDE1ICs1MSwyNSBAQCBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTY3JpcHRTb3VyYwogCiBkb3VibGUgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmlj
ZVBpeGVsUmF0aW8oKSBjb25zdAogewotICAgIGlmICghcmVzcG9uc2FibGVEb2N1bWVudCgpIHx8
ICFyZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpKQorICAgIGlmICghcmVzcG9uc2li
bGVEb2N1bWVudCgpIHx8ICFyZXNwb25zaWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpKQogICAg
ICAgICByZXR1cm4gMS4wOwotICAgIHJldHVybiByZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7CisgICAgcmV0dXJuIHJlc3BvbnNpYmxlRG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0aW8oKTsKK30KKworUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6UGFpbnREZWZpbml0aW9uKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1Bh
aW50Q2FsbGJhY2s+JiYgcGFpbnRDYWxsYmFjaywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3Bl
cnRpZXMsIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzKQorICAgIDogbmFtZShuYW1lKQor
ICAgICwgcGFpbnRDb25zdHJ1Y3RvcihwYWludENvbnN0cnVjdG9yKQorICAgICwgcGFpbnRDYWxs
YmFjayhXVEZNb3ZlKHBhaW50Q2FsbGJhY2spKQorICAgICwgaW5wdXRQcm9wZXJ0aWVzKFdURk1v
dmUoaW5wdXRQcm9wZXJ0aWVzKSkKKyAgICAsIGlucHV0QXJndW1lbnRzKFdURk1vdmUoaW5wdXRB
cmd1bWVudHMpKQorewogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3Nz
LXBhaW50LWFwaS8jcmVnaXN0ZXJpbmctY3VzdG9tLXBhaW50CiBFeGNlcHRpb25Pcjx2b2lkPiBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
U3Ryb25nPEpTT2JqZWN0PiBwYWludENvbnN0cnVjdG9yKQogewogICAgIGF1dG8mIHZtID0gKnBh
aW50Q29uc3RydWN0b3ItPnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gVmFsaWRh
dGUgdGhhdCBwYWludENvbnN0cnVjdG9yIGlzIGEgVm9pZEZ1bmN0aW9uCkBAIC02OSw2MiArODAs
NzAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVy
UGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBmaXJzdCBhcmd1bWVudCBt
dXN0IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIiB9OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOwogCi0gICAgaWYgKHBhaW50RGVmaW5p
dGlvbk1hcCgpLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0
ZXJlZCIgfTsKKyAgICAgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcCgpLmNvbnRhaW5zKG5hbWUp
KQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJv
ciwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiIH07CiAKLSAgICBWZWN0
b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0
UHJvcGVydGllczsKIAotICAgIEpTVmFsdWUgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9
IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiaW5wdXRQcm9wZXJ0aWVzIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIEpTVmFsdWUgaW5w
dXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRQcm9wZXJ0aWVzIikpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwogCi0gICAgaWYgKCFpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlLmlzVW5k
ZWZpbmVkKCkpCi0gICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7CisgICAgICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKQorICAgICAgICAgICAgaW5wdXRQcm9wZXJ0aWVzID0gY29udmVydDxJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJvcGVy
dGllcyBoZXJlIChzdGVwIDcpLgorICAgICAgICAvLyBGSVhNRTogVmFsaWRhdGUgaW5wdXQgcHJv
cGVydGllcyBoZXJlIChzdGVwIDcpLgogCi0gICAgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVu
dHM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRzOwogCi0gICAgSlNWYWx1
ZSBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7CisgICAgICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlID0g
cGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpbnB1dEFyZ3VtZW50cyIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmICghaW5wdXRB
cmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGlucHV0QXJndW1l
bnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBpZiAoIWlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgaW5wdXRBcmd1
bWVudHMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFy
Z3VtZW50c0l0ZXJhYmxlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgLy8gRklYTUU6
IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMgaGVyZSAoc3RlcHMgMTEgYW5kIDEyKS4K
KyAgICAgICAgLy8gRklYTUU6IFBhcnNlIHN5bnRheCBmb3IgaW5wdXRBcmd1bWVudHMgaGVyZSAo
c3RlcHMgMTEgYW5kIDEyKS4KIAotICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1ZSA9IHBh
aW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
Y29udGV4dE9wdGlvbnMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4
dE9wdGlvbnNWYWx1ZSk7CisgICAgICAgIEpTVmFsdWUgY29udGV4dE9wdGlvbnNWYWx1ZSA9IHBh
aW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
Y29udGV4dE9wdGlvbnMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKIAotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIFBhaW50
UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVyZSAoc3RlcCAxNCkuCisgICAgICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRvIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgaGVyZSAoc3Rl
cCAxNCkuCiAKLSAgICBpZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3Iodm0pKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVu
dCBtdXN0IGJlIGEgY29uc3RydWN0b3IiIH07CisgICAgICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rv
ci0+aXNDb25zdHJ1Y3Rvcih2bSkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiIH07CiAK
LSAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0
ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmICgh
cHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQg
aXMgYW4gb2JqZWN0IiB9OworICAgICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkp
CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBh
cmd1bWVudCBtdXN0IGhhdmUgYSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiIH07CiAKLSAg
ICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhaW50IikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIEpT
VmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAicGFpbnQiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAo
cGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCIgfTsKKyAgICAgICAg
aWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFpbnQgbWV0aG9kIiB9Owog
Ci0gICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhp
c3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFj
az4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNr
Pj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAK
LSAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRp
b24+KG5ldyBQYWludERlZmluaXRpb24geyBuYW1lLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBp
bnB1dFByb3BlcnRpZXMsIGlucHV0QXJndW1lbnRzIH0pOwotICAgIHBhaW50RGVmaW5pdGlvbk1h
cCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOworICAgICAgICBhdXRvIHBh
aW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBw
YWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlu
cHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKKyAgICAgICAgcGFpbnRE
ZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CisgICAg
fQorCisgICAgLy8gVGhpcyBpcyBmb3IgdGhlIGNhc2Ugd2hlbiB3ZSBoYXZlIGFscmVhZHkgdmlz
aXRlZCB0aGUgcGFpbnQgZGVmaW5pdGlvbiBtYXAsIGFuZCB0aGUgR0MgaXMgY3VycmVudGx5IHJ1
bm5pbmcgaW4gdGhlIGJhY2tncm91bmQuCisgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJmdsb2Jh
bE9iamVjdCk7CiAKICAgICAvLyBGSVhNRTogY29uc3RydWN0IGRvY3VtZW50RGVmaW5pdGlvbiAo
c3RlcCAyMikuCiAKKyAgICBpZiAocmVzcG9uc2libGVEb2N1bWVudCgpICYmIHJlc3BvbnNpYmxl
RG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQorICAgICAgICByZXNwb25zaWJsZURvY3VtZW50KCkt
PnJlbmRlclZpZXcoKS0+cmVwYWludFJvb3RDb250ZW50cygpOworCiAgICAgcmV0dXJuIHsgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgKaW5kZXggMjMyNzFmMTU0MjkxNGI4NWI0YjI1Zjc5MTkyZWE0Y2VjY2E4YTU1MC4uNjFi
NzFmMmQ0ZTA1OWVmOGIzMmU0M2E1YmI1ZTM0NjdmMjQ5MTQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJDU1NQYWludENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV29ya2xldEds
b2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00NSwx
OSArNDYsMzggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVyUGFpbnQo
SlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3Rvcik7CiAgICAgZG91Ymxl
IGRldmljZVBpeGVsUmF0aW8oKSBjb25zdDsKIAotICAgIHN0cnVjdCBQYWludERlZmluaXRpb24g
eworICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFp
bnREZWZpbml0aW9uPiB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAg
ICAvLyBUaGlzIG1hcCBtdXN0IGJlIGNsZWFyZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQh
CisgICAgICAgIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3I7CiAgICAgICAgIGNvbnN0
IFJlZjxDU1NQYWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
IGlucHV0QXJndW1lbnRzOworCisgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3IsIFJlZjxDU1NQYWlu
dENhbGxiYWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGllcywgVmVjdG9yPFN0
cmluZz4gaW5wdXRBcmd1bWVudHMpOwogICAgIH07CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4+JiBwYWludERlZmluaXRpb25NYXAoKSB7IEFT
U0VSVChtX3BhaW50RGVmaW5pdGlvbkxvY2suaXNMb2NrZWQoKSk7IHJldHVybiBtX3BhaW50RGVm
aW5pdGlvbk1hcDsgfQogICAgIExvY2smIHBhaW50RGVmaW5pdGlvbkxvY2soKSB7IHJldHVybiBt
X3BhaW50RGVmaW5pdGlvbkxvY2s7IH0KIAorICAgIHZvaWQgcHJlcGFyZUZvckRlc3RydWN0aW9u
KCkgZmluYWwKKyAgICB7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgICAgIHBhaW50RGVmaW5pdGlv
bk1hcCgpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOwogCisgICAgflBh
aW50V29ya2xldEdsb2JhbFNjb3BlKCkKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgQVNTRVJUKHBhaW50RGVmaW5p
dGlvbk1hcCgpLmlzRW1wdHkoKSk7CisgICAgfQorCiAgICAgYm9vbCBpc1BhaW50V29ya2xldEds
b2JhbFNjb3BlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgSGFzaE1hcDxT
dHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiBtX3BhaW50RGVmaW5pdGlv
bk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGEwZDMwMDlkYTkzYWM0M2IxNmUwZGQ0MGQwNGNmODJlMDBiMjQwYjUuLmEwYWNjNzIz
Y2M1Nzk1YTIzMGM1YzdjZTMzNTBjYWFmMDZkZjY1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1
ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FeGNlcHRpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rv
cnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KIApAQCAtNDksMTIgKzQ4LDE1IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjb2RlKQogICAgIDog
bV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiAgICAgLCBtX3Nlc3Npb25JRChtX2Rv
Y3VtZW50LT5zZXNzaW9uSUQoKSkKLSAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWVSZWY8V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCi0gICAgLCBtX2lkZW50aWZpZXIobWFrZVN0cmlu
ZygiV29ya2xldEdsb2JhbFNjb3BlOiJfcywgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6
OmNyZWF0ZUlkZW50aWZpZXIoKSkpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAgICAgLCBt
X2NvZGUoV1RGTW92ZShjb2RlKSkKKyAgICAsIG1faWRlbnRpZmllcihnZW5lcmF0ZU9iamVjdElk
ZW50aWZpZXI8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGU+KCkpCiB7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBhbGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKCkuYWRkKG1faWRlbnRpZmll
ciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKwogICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBtX2pzUnVu
dGltZUZsYWdzID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZs
YWdzKCkgOiBKU0M6OlJ1bnRpbWVGbGFncygpOwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkp
OwpAQCAtNjUsOCArNjcsMjUgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY28KIAogV29ya2xldEds
b2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKIHsKKyAgICBBU1NFUlQoIW1fc2NyaXB0
KTsKICAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKLSAgICBtX3NjcmlwdC0+d29ya2xldEds
b2JhbFNjb3BlV3JhcHBlcigpLT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgIGFsbFdv
cmtsZXRHbG9iYWxTY29wZXNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCit7CisgICAgQVNTRVJU
KG1fc2NyaXB0KTsKKyAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOworICAgIHJlbW92ZVJlamVj
dGVkUHJvbWlzZVRyYWNrZXIoKTsKKyAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOworICAg
IG1fc2NyaXB0LT52bSgpLm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOworICAgIG1fc2NyaXB0ID0g
bnVsbHB0cjsKK30KKworYXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxT
Y29wZXNNYXAoKSAtPiBXb3JrbGV0R2xvYmFsU2NvcGVzTWFwJgoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwPiBzY29wZXM7CisgICAgcmV0dXJuIHNj
b3BlczsKIH0KIAogU3RyaW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKQEAg
LTg4LDcgKzEwNyw3IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCiAKIGJv
b2wgV29ya2xldEdsb2JhbFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJu
ICFtX3NjcmlwdCB8fCBtX3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogdm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQpAQCAtMTEwLDMwICsxMjksMzAgQEAgVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
Ojpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisg
ICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3Nh
Z2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7
CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlm
ICghbV9kb2N1bWVudCkKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRk
Q29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiht
ZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNz
YWdlLT5tZXNzYWdlKCksIDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsK
LSAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmFkZENvbnNv
bGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3ZvaWQgV29ya2xldEds
b2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9k
b2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBXVEZNb3ZlKGNhbGxTdGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaAppbmRleCBmMDE1NjRkODY3YzEwYWFjZjljZjBjMWRmNjkwNjVjZmVmMmQ3
NWM2Li5jODBhOGJhNmUyNWE2M2FkN2UwNzIyMTM2YWJlMGFhNmM1MjkwMGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzgsMjkgKzM4LDM0
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2Rl
OwogCitlbnVtIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdv
cmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9i
YWxTY29wZUlkZW50aWZpZXJUeXBlPjsKKwogY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKLSAg
ICB+V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNjb3Bl
KCk7CisKKyAgICB1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVzTWFwID0gSGFzaE1hcDxXb3JrbGV0
R2xvYmFsU2NvcGVJZGVudGlmaWVyLCBXb3JrbGV0R2xvYmFsU2NvcGUqPjsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgV29ya2xldEdsb2JhbFNjb3Blc01hcCYgYWxsV29ya2xldEdsb2JhbFNj
b3Blc01hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Qg
ZmluYWw7Ci0gICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlKCk7CiAKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlciYgc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KKyAgICBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7
IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogCkBAIC03NCwxMSArNzksMTMgQEAgcHVibGlj
OgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX2pzUnVudGltZUZsYWdzOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCk7CisKIHByb3RlY3RlZDoKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQm
LCBTY3JpcHRTb3VyY2VDb2RlJiYpOwogCi0gICAgRG9jdW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1l
bnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0gICAgY29uc3QgRG9jdW1lbnQqIHJl
c3BvbnNhYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Cisg
ICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50Lmdl
dCgpOyB9CisgICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCkBAIC0xMTgsMTAgKzEyNSw5IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwot
ICAgIFVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKIAogICAgIFJl
ZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAgU3RyaW5nIG1faWRlbnRpZmllcjsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBwcm9wZXJseSwgaXQganVz
dCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKQEAgLTEyOSw2ICsxMzUsOCBAQCBwcml2YXRlOgogCiAg
ICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKICAgICBTY3JpcHRTb3VyY2VD
b2RlIG1fY29kZTsKKworICAgIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDA1NWQ3ZjExNjhl
ZWI1YWNmMDQyZmYxNGJmYzk5YzczZGNjYjhmMzcuLjExNjg5NzhlNDI0ZGYxYzQ4ZTQ2MWM1ODg5
Yzc4ZmNkYmEwNjdiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU5LDEzICs1OSwxNSBAQCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3
b3JrbGV0R2xvYgogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlcigpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9IG51bGxwdHI7CisgICAgZm9yYmlk
RXhlY3V0aW9uKCk7CisKICAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7CiAg
ICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0
cygpOwogICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGll
bnQobnVsbHB0cik7CiAgICAgICAgIG1fY29uc29sZUNsaWVudCA9IG51bGxwdHI7CiAgICAgfQor
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1fdm0gPSBudWxs
cHRyOwogfQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24o
KQpAQCAtODIsNiArODQsOSBAQCBib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1
dGlvbkZvcmJpZGRlbigpIGNvbnN0CiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlmIChpc0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKICAgICBpbml0U2NyaXB0SWZOZWVk
ZWQoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtOTAsNiArOTUsOSBA
QCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdl
YkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlmIChpc0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKICAgICBpbml0U2NyaXB0SWZOZWVk
ZWQoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtMTMyLDYgKzE0MCw5
IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3Mo
KQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKIHsKKyAgICBp
ZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlz
PFBhaW50V29ya2xldEdsb2JhbFNjb3BlPihtX3dvcmtsZXRHbG9iYWxTY29wZSkpIHsKICAgICAg
ICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90
eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxTY29wZT4o
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmZGE0YjE2M2IyMWVkMWMyZjkyMTIyYzc2MDMx
MjQyZDBiNGM3YzkuLjkzNzQ0Yzk0OTEyMTUyYWZiOTcxMDRmOWQ5OGEyMmUyM2JjZGM2ZmIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMS0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFz
cyAndGhpcycgY29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHBy
b3BlcnRpZXMgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUtcmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YW5pbWF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29u
c3RydWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2NvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3Rv
bS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1
c3RvbS1wYWludC9sZWFrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9y
ZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yYWYtbGVhay1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAy
MDE4LTExLTA3ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzIHNpemUsIGFyZ3VtZW50cyBhbmQg
aW5wdXQgcHJvcGVydGllcyB0byBwYWludCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNwYWlu
dCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdo
dDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+PC9k
aXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTBj
ZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYw
MCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVjdCAw
IDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUwKQor
ICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVl
IF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0i
bWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhv
dWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29y
a2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5n
KCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQorCisg
ICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0K
KyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0
KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwor
ICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29y
a2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXku
CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7CisgIH0s
IDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJlY3Rz
ID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWlu
dHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVtbXkg
PSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2luZG93
LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVybmFs
cy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBy
ZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8L3Nj
cmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50
KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0icGFp
bnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZhMTY1
ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVk
PXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJvcGVy
dGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5j
c3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4
dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3Bl
cnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdlb20s
IHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJykudG9T
dHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICB9
CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7Cisg
ICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3Njcmlw
dD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENT
Uy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRl
bnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2Us
IHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3Bl
cnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisKKzxz
dHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7
CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAx
NTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9j
b25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5MjFiYzg3ZWE0
NDg1NDc0YmQ4MmQyZmE0NDFkOWVhYzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRo
OiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAg
PGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2PgorICA8
ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgIDxk
aXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1
Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9y
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGY1YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4MjI4ZDljYjk4
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9j
b25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVl
IF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0i
bWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlmIHRoZSBjb25z
dHJ1Y3RvciB0aHJvd3MiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0
cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0i
dGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICB0aHJvdyAiSGVsbG8hIjsKKyAgICB9CisKKyAgICBwYWludChjdHgsIGdlb20pIHsKKyAg
ICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdl
b20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBNeVBhaW50MiB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7Cisg
ICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBn
ZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215
LXBhaW50JywgTXlQYWludCk7CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50MicsIE15UGFpbnQy
KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGltcG9y
dFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUn
KS50ZXh0Q29udGVudCk7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29wZUFs
aXZlKCkpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycpLnN0eWxlLmJh
Y2tncm91bmQgPSAiZ3JlZW4iOworICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0PgorCis8c3R5
bGU+CisgIC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7Cisg
IH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tn
cm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWlu
dCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48L2Rpdj4KKyAg
PGRpdiBpZD0ibGVha3MiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAxNTBweDsgaGVp
Z2h0OiAxNTBweDsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjZTc3N2M5
NWM3OTgzYjM3NThlODMwNDFiNmZiNjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGVzdHMgdGhhdCB1c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3QgY2F1c2UgdGhl
IHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRpZCBub3QgbGVh
aworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGMwYzUyOTJmZjAwNmJkMDA0ZDg3N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sCkBAIC0wLDAg
KzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJp
bWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRo
b3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdl
YmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQg
d29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8v
ZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZyYW1lIGlkPSJ0
ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBhaW50IGRvZXMg
bm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQgbGVha2VkLiIp
Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWludFNob3VsZERp
ZSgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
eworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGdjKCk7CisgICAgICAgICAgICBpZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29w
ZUFsaXZlKCkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LCAxMCk7Cisg
ICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAgICAgICBwYWlu
dFNob3VsZERpZSgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJX
b3JrbGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCmluZGV4IDBh
ZTY4OGJlMDNlZjNiNWM4MTcxNTdjOGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTViMWZmYTQ1OGQ0
ZmZjOGRiOTc5NTc0OGYyOWJiMDAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAKIGNsYXNzIE15
UGFpbnQgewogICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnaGVpZ2h0
JywgJy0tbXktcHJvcCcsICctLW15LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVyLXNwZWNpZmll
ZCJdOyB9CiAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbJyonLCAnKics
ICcqJ107IH0KKworICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9IDQyOyB9CisK
KyAgdGVzdFRoaXMoKSB7IHJldHVybiB0aGlzLm15QXR0cmlidXRlOyB9CisKICAgcGFpbnQoY3R4
LCBnZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVz
LmdldCgnaGVpZ2h0JykudG9TdHJpbmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsKICAgICBhc3Nl
cnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsKQEAgLTMwLDYg
KzM1LDggQEAgY2xhc3MgTXlQYWludCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdl
dCgnd2lkdGgnKSwgbnVsbCk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnLS1u
ZXZlci1zcGVjaWZpZWQnKS50b1N0cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRfZXF1YWxzKHRo
aXMudGVzdFRoaXMoKSwgNDIpOworCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspewog
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewogICAgICAgICBjdHguZmlsbFN0eWxl
ID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFr
cy1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2RiZGYyZTM0MDgz
MGVjYjU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NU
WVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRp
bmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3Rp
biBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkb24ndCBs
ZWFrIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRp
bmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAgYmFj
a2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBo
ZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWludCI+PC9kaXY+
CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citjb25zdCBnbG9iYWxT
Y29wZSA9IHRoaXM7CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0
aWVzLCBhcmdzKSB7CisgICAgY29uc3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8gTGVhayEKKyAg
ICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53
aWR0aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFrID0gdGhpczsK
K3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlw
dD4KK0NTUy5wYWludFdvcmtsZXQuYWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWst
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4NGU3YWNjNTJj
NTFhMWNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355015</attachid>
            <date>2018-11-15 20:09:03 -0800</date>
            <delta_ts>2018-11-15 20:25:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181115200900.patch</filename>
            <type>text/plain</type>
            <size>78720</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5hMmVkZTcxZWUyZDM5OTM1
MmYzZjEwMzAwMDIwZDVlNDlmZTNlNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0xNSAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIG9sZCAueGNm
aWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMmIyOGE0YjFmNWNmOTVjOGZjMjJiNDdlMDdl
NDVhMmYwZDU3NTYuLmI0NzhhYzBlNWUyZjE0NGZmNDQ1NTBhOTY2YmQ3YmFjOTMxOTMxM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNTQgQEAKKzIwMTgtMTEtMTUgIEp1c3RpbiBNaWNoYXVkICA8
anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hv
dWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFpbnQg
d2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwYWludCBj
bGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRoZSBwYWludCBjYWxsYmFj
ayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBj
dXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHByb3BlcnRpZXMgdGhhdCB0
aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFsbHksIHdlIGZpeCB0d28g
cmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFsU2NvcGUgdG8gbmV2ZXIg
YmUgZGVzdHJveWVkLgorCisgICAgICAgIFRoaXMgY2xhc3MgYWRkcyBhIG5ldyBtZW1iZXIgdG8g
UmVuZGVyU3R5bGUuIFRvIHN0b3AgdGhpcyBmcm9tIGluY3JlYXNpbmcgdGhlIHNpemUgb2YgUmVu
ZGVyU3R5bGUsIHRoaXMgcGF0Y2ggdXNlcyAjcHJhZ21hIHBhY2sKKyAgICAgICAgdG8gcGFjayBS
ZW5kZXJTdHlsZSwgc2hyaW5raW5nIGl0IGZyb20gODggYnl0ZXMgdG8gODYuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbAorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5pZGw6CisgICAgICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojp2bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWlu
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V1RGTW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25lUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRp
bmdGcm9tUHNldWRvU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OlJlbmRlclN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojp+UmVuZGVyU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnJlcGxhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRTZWxmQWxpZ25t
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFs
aWduSXRlbXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnJlc29sdmVkQWxpZ25TZWxmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpyZXNvbHZlZEp1c3RpZnlJdGVtcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5U2VsZiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZENvbnRlbnRBbGlnbm1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlc29sdmVkQWxpZ25Db250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEp1
c3RpZnlDb250ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVk
Q29udGVudEFsaWdubWVudFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVkQ29udGVudEFsaWdubWVudERpc3RyaWJ1dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9uIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEp1c3Rp
ZnlDb250ZW50RGlzdHJpYnV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudFBvc2l0aW9uIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudERp
c3RyaWJ1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5oZXJpdEZyb20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNvcHlOb25Jbmhlcml0ZWRGcm9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpjb3B5Q29udGVudEZyb20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hl
ZFBzZXVkb1N0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bmhlcml0ZWROb3RFcXVhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlRm9udEhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhh
c2hGb3JUZXh0QXV0b3NpemluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZXF1YWxGb3JUZXh0QXV0b3NpemluZyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5oZXJpdGVkRGF0YVNoYXJlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlz
dWFsT3ZlcmZsb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFyZU5vbklu
aGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyYXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5b3V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQ
b3NpdGlvbmVkTGF5b3V0T25seSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpy
YXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWlu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc1BhaW50aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhcmVOb25Jbmhlcml0ZWREYXRhQ2hhbmdlUmVx
dWlyZXNSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhcmVJbmhlcml0ZWRE
YXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9y
ZGVyT3JPdXRsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmZSZXF1aXJlc0xheWVyUmVwYWludCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q2xpcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRRdW90ZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdpbGxDaGFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xlYXJDb250ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Omxhc3RDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRDb250ZW50QWx0VGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y29udGVudEFsdFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEhhc0F0dHJDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRQYWdlU2NhbGVUcmFuc2Zvcm0pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRTaGFkb3cpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RTdHlsZUltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3IgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVy
U3BhY2luZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmVydGljYWxCb3JkZXJTcGFjaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9y
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxs
TGF5ZXJzQXJlRml4ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lz
TWFya1N0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphZGp1c3RBbmltYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRyYW5zaXRpb25Gb3JQcm9wZXJ0eSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Zm9udENhc2Nh
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRN
ZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpm
b250RGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNwZWNpZmllZEZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRQaXhlbFNpemUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250
RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNw
ZWNpZmllZExpbmVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OnNldFNwZWNpZmllZExpbmVIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExldHRlclNwYWNpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250VmFyaWF0aW9uU2V0dGlu
Z3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRXZWln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRTdHJl
dGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250SXRh
bGljKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dF
eHRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omdl
dFNoYWRvd0luc2V0RXh0ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRp
bmdGYWxsYmFjayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yQnlBcHBs
eWluZ0NvbG9yRmlsdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpib3JkZXJCZWZvcmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmJvcmRlckFmdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpib3JkZXJTdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyRW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpib3JkZXJCZWZvcmVXaWR0aCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyQWZ0ZXJXaWR0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyU3RhcnRXaWR0
aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVy
RW5kV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldE1hcmdpblN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRNYXJnaW5FbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnRleHRFbXBoYXNpc01hcmsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VPdXRzZXRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpmb250QW5kR2x5cGhPcmllbnRhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdl
U2xpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJJbWFnZVdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRCb3JkZXJJbWFnZU91dHNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwQWxpZ24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzY3JvbGxT
bmFwUG9ydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNjcm9sbFBhZGRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdCb3R0b20gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdMZWZ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzY3JvbGxQYWRkaW5n
UmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2Nyb2xsU25hcE1hcmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpblRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpbkJvdHRvbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdp
bkxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBNYXJnaW5SaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdUb3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdCb3R0b20pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdMZWZ0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nUmln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNu
YXBBbGlnbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsU25hcE1hcmdpblRvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5SaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25s
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpv
dXRsaW5lT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREYXNoYm9hcmRSZWdpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQ
YWludE9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21w
dXRlZFN0cm9rZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpoYXNQb3NpdGl2ZVN0cm9rZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZFN0cm9rZUNvbG9yIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzQW55
V29ya2xldEdsb2JhbFNjb3BlQWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50RGVm
aW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xv
YmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjph
bGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zYWJsZURvY3VtZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKwogMjAxOC0xMS0xNSAgSmlld2VuIFRh
biAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlh
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBzaG91bGQgYmUgb3B0aW9uYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCAwOTdjZjQ4ODFmNDZl
N2U5ZmIwN2RkMWZiMjcwZGJiMWE0ZTJlYjA2Li41OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNjMWFk
MjU5M2Y5MzEwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKIH07CiAK
IC8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIENh
bGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlbS4KLUpT
T2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9y
LCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpT
VmFsdWUgbmV3VGFyZ2V0KTsKIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5j
cHAKaW5kZXggODlhMzA4MGRhOGI1MzM3ZGEwMTljZWU2YTEzNWVjNzVjYTM4OWM0MC4uNzk0YTUz
ODFiNzdlNDhkNjJjNTRkMzcyNGVjOGI3YWI4NWZmYjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpT
RE9NT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCBhOGNlYWU2MGJh
NzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmLi4wMTE4NGE4NDYyNzYwODc4YzAwZTgzMGJm
ODFmY2EwZGM0OWFlYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMzQsOCAr
MzQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRpb25M
b2NrKCkpOwotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmlu
aXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVk
KCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0ZXJlZC0+
cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOworICAgIH0K
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZmI1YTc1NTY4MmQxNjE0NmE1Yjg5MmI5Yzc1ZTdh
MzU2MTZhN2M2MS4uN2NkODBlNzQxNTdmZmFjZmRhZWQwYzY0ZWE5OWJjZTQ0MmM4ODZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC0xMjgsNyArMTI4LDggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG8K
IAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEds
b2JhbFNjb3BlKQogewotICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBBU1NFUlQod29y
a2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHdv
cmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwog
ICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5w
cm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmlu
ZGV4IDM3YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEuLmU5ODQxMGJlZWUz
N2VhZWMyMjMyMGZmNGE4YzZiODIzM2JhNjM0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTEwNiw3ICsxMDYsOSBAQCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTYwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0
R2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS53
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoIXdvcmts
ZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
cigpLT5nbG9iYWxFeGVjKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENh
bGxiYWNrLmgKaW5kZXggNzU2NTYzYzNiYWQ2OTU5MmM0NDkyOTcxZDIzOWUwZjhkYWRjMTE1Yy4u
MGMwM2YwYWZiZDcxMjQ0OWVkZDA3MTM2ZDY1MzU3N2FlZDc0ZGY2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oCkBAIC0zMSwxNiArMzEsMTggQEAKICNpbmNsdWRlICJDU1NQ
YWludFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0eWxl
UHJvcGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
OwogCi1jbGFzcyBDU1NQYWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRD
YWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBDU1NQYWludENhbGxi
YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1
YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7CiAK
LSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVuZGVy
aW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2
b2lkPiBoYW5kbGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEJiwg
Q1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZiNTFkNDEyM2Vj
MjI2MjVlMzFjYzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2MWVlYzljMjBi
MzE0NDZkZDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbApAQCAt
MjYsNCArMjYsNSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAg
ICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1RoaXNPYmplY3Q9
YW55CiBdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJlbmRlcmluZ0Nv
bnRleHQyRCBjb250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRP
bmx5IHN0eWxlTWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4YzMzY2JhMzY3
OGQyNmVkMjA2MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1YmIwNTM5MzJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAtNDAsNiArNDAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1BhaW50SW1hZ2VW
YWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9uYW1l
ID09IG90aGVyLm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4
IGM3YWIzYmJhMDVmYjkwNmQ3YmNhMTUwMTE1MzgzNmJhNDZiMzQ2NDEuLjZhMWNlNDlkMGM0MDc5
Zjk5MGFiMGY5OThiZTY1NTcyNTI2ZTAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5oIgor
I2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgog
I2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1
YXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxl
Q29sbGVjdG9yLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE3MTcsNiArMTcxOSwxOCBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBB
cHBseUNhc2NhZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRl
ZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUlu
aGVyaXRlZFByb3BlcnRpZXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAg
IGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpICYmIGRvY3VtZW50KCku
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1hcCIgZnJvbSB0aGUgc3Bl
Yywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgcGFpbnRXb3JrbGV0ID0g
KmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25N
YXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KS5uYW1l
KCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9uLT5p
bnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+YWRkQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CiAgICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0eWxlQnVpbGRl
cjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlzSW5pdGlhbCwgaXNJ
bmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMzVlNzEyYTIxZmJlNmViYzBkYmVjNzdjMTFiNmI0NTg1YWYwZTZiOC4uNzE2NzAy
OWNmMDlmMGVjOWQ4YzE3MjQwYmE0ZDI0ZjgwMTc3NjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0yNTQxLDYgKzI1NDEsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIGlmIChtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1fcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAgICBtX3BhaW50
V29ya2xldEdsb2JhbFNjb3BlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIG1faGFz
UHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICAvLyBOb3RlIHRoYXQgbV9wYWdl
Q2FjaGVTdGF0ZSBjYW4gYmUgRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSBpZiBvdXIg
ZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBkOGY2MGUyOWQzOWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5Li45YmE0ODE5ZGY3
NTE5MmYyZjg0YzY0YWUxZjczYzQzODJlZDJiM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgSlNDOjpWTSYg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS52
bSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcyku
c2NyaXB0KCktPnZtKCk7CiAjZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21Q
YWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuY3BwCmluZGV4IDQzOTYyYzUyNmNiY2VlY2JiMGQ1ODI1MDhkMDJkODUzODZhNDBh
NTguLjAzNGRhNTYxZmU2YjI4MjI0NWM4MzA5MWFjM2RlMWUyODdmNzgzM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
CkBAIC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zdHJ1Y3REYXRhLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25z
dCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5pdGlvbi5w
YWludENhbGxiYWNrLmdldCgpKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBtX3BhaW50RGVmaW5pdGlvbihtYWtlV2Vha1B0cihk
ZWZpbml0aW9uKSkKICAgICAsIG1faW5wdXRQcm9wZXJ0aWVzKGRlZmluaXRpb24uaW5wdXRQcm9w
ZXJ0aWVzKQogICAgICwgbV9lbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogICAgICwgbV9h
cmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNTYsMTMgKzU3LDIwIEBAIEN1c3RvbVBhaW50SW1hZ2U6
On5DdXN0b21QYWludEltYWdlKCkgPSBkZWZhdWx0OwogCiBJbWFnZURyYXdSZXN1bHQgQ3VzdG9t
UGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFNpemUmIGRlc3RTaXplKQogewotICAgIGlmICghbV9lbGVtZW50IHx8ICFtX2Vs
ZW1lbnQtPmVsZW1lbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5lbGVt
ZW50KCkgfHwgIW1fcGFpbnREZWZpbml0aW9uKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWROb3RoaW5nOwogCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29uc3RydWN0b3IobV9w
YWludERlZmluaXRpb24tPnBhaW50Q29uc3RydWN0b3IpOworCisgICAgaWYgKCFwYWludENvbnN0
cnVjdG9yKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworCisg
ICAgYXV0byYgcGFpbnRDYWxsYmFjayA9IG1fcGFpbnREZWZpbml0aW9uLT5wYWludENhbGxiYWNr
LmdldCgpOworCiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPm5lZWRzTGF5b3V0KCkpOwogICAgIEFT
U0VSVCghbV9lbGVtZW50LT5lbGVtZW50KCktPmRvY3VtZW50KCkubmVlZHNTdHlsZVJlY2FsYygp
KTsKIAotICAgIEpTQ1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NT
U1BhaW50Q2FsbGJhY2smPihtX3BhaW50Q2FsbGJhY2suZ2V0KCkpOworICAgIEpTQ1NTUGFpbnRD
YWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NTU1BhaW50Q2FsbGJhY2smPihwYWlu
dENhbGxiYWNrKTsKICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJhY2su
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTEwMyw3
ICsxMTEsMjEgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvIHNpemUgPSBDU1NQ
YWludFNpemU6OmNyZWF0ZShkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7CiAg
ICAgYXV0byBwcm9wZXJ0eU1hcCA9IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6Y3JlYXRlKFdU
Rk1vdmUocHJvcGVydHlWYWx1ZXMpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENhbGxi
YWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1lbnRz
KTsKKyAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT52bSgpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcGFpbnRDb25zdHJ1
Y3Rvci5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9ICpn
bG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOworICAgIEpTQzo6QXJnTGlzdCBub0FyZ3M7CisgICAg
SlNDOjpKU1ZhbHVlIHRoaXNPYmplY3QgPSB7IEpTQzo6Y29uc3RydWN0KCZzdGF0ZSwgV1RGTW92
ZShwYWludENvbnN0cnVjdG9yKSwgbm9BcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBwYWludCBj
bGFzcyIpIH07CisKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKKyAgICB9CisKKyAgICBhdXRvIHJl
c3VsdCA9IHBhaW50Q2FsbGJhY2suaGFuZGxlRXZlbnQoV1RGTW92ZSh0aGlzT2JqZWN0KSwgKmNv
bnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CiAgICAgaWYgKHJlc3VsdC50
eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggZDMwNjc5Mzk3NzIwMGNjZGJj
ZGM5ZTIzYjc2YzUzMDc4MjJjZjc2Ni4uNjhiNDBjOTllY2FiM2E1ZTNlMGM5MmIyYjAxM2Q3ODY1
MWE3MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiR2VuZXJhdGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vh
ay5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM4LDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgQ3VzdG9tUGFpbnRJ
bWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQor
ICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1hZ2Uo
ZGVmaW5pdGlvbiwgc2l6ZSwgZWxlbWVudCwgYXJndW1lbnRzKSk7CiAgICAgfQpAQCAtNDcsMTQg
KzQ5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludEltYWdl
KGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50
cyk7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRE
ZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOwogICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCi0gICAgUmVmPENTU1Bh
aW50Q2FsbGJhY2s+IG1fcGFpbnRDYWxsYmFjazsKKyAgICBXZWFrUHRyPFBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVyRWxlbWVudD4g
bV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggN2JhMTA5MTU1Mjk5
ZDc2M2QxOTkxNWZiZGJiNmQwMzViYjhhZDdmYS4uOWJlODU0ZDU2OWZjNzk3ZjlhYTY5ZTE1MTI0
Y2VjMWQ4YzE4NTY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNs
dWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVkZSAi
Q29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC02NiwyMyArNjgsMzMg
QEAgc3RydWN0IFNhbWVTaXplQXNCb3JkZXJWYWx1ZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihCb3JkZXJWYWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNCb3JkZXJWYWx1ZSksIEJvcmRlclZh
bHVlX3Nob3VsZF9ub3RfZ3Jvdyk7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewot
ICAgIHZvaWQqIGRhdGFSZWZzWzddOwotICAgIHZvaWQqIG93blB0cnNbMV07Ci0gICAgdm9pZCog
ZGF0YVJlZlN2Z1N0eWxlOwotICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIHVu
c2lnbmVkIG1fYml0ZmllbGRzWzJdOwotICAgIH0gbV9pbmhlcml0ZWRGbGFnczsKLQotICAgIHN0
cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzJd
OwotICAgIH0gbV9ub25Jbmhlcml0ZWRGbGFnczsKK2NvbnN0ZXhwciBpbnQgc2l6ZU9mUmVuZGVy
U3R5bGUgPQorKyAoCisgICAgKyA1IC8vIGRhdGFSZWZzCisgICAgKyAyIC8vIGRhdGFSZWZzCisg
ICAgKyAxIC8vIHVuaXF1ZV9wdHIKKyAgICArIDEgLy8gZGF0YVJlZgorKSAqIHNpemVvZih2b2lk
ICopCisrICgKKyAgICArIDU2IC8vIG1fbm9uSW5oZXJpdGVkRmxhZ3MKKyAgICArIDQ3IC8vIG1f
aW5oZXJpdGVkRmxhZ3MKKyAgICArIHNpemVvZih2b2lkICopIC0gMQorKSAvIHNpemVvZih2b2lk
ICopCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
LSAgICBib29sIGRlbGV0aW9uQ2hlY2s7CisrIDEgLy8gZGVsZXRpb25DaGVjawogI2VuZGlmCi19
OworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorKyAxIC8vIG1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMKKyNlbmRpZgorKyAwOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihSZW5k
ZXJTdHlsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJTdHlsZSksICJSZW5kZXJTdHlsZSBz
aG91bGQgc3RheSBzbWFsbCIpOworc3RhdGljX2Fzc2VydChzaXplb2YoUmVuZGVyU3R5bGUpID09
IHNpemVPZlJlbmRlclN0eWxlLCAiUmVuZGVyU3R5bGUgc2hvdWxkIHN0YXkgc21hbGwiKTsKKwor
c3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyU3R5bGUqLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNl
dDxTdHJpbmc+Pj4mIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlclN0eWxlKiwgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KIAogUmVu
ZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewpAQCAtMTI4LDggKzE0MCw2
MCBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBz
ZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogICAgIHJldHVybiBzdHlsZTsKIH0KIAotUmVu
ZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKLVJlbmRlclN0
eWxlJiBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKK1Jl
bmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYmIG90aGVyKQorICAgIDogbV9ib3hE
YXRhKFdURk1vdmUob3RoZXIubV9ib3hEYXRhKSkKKyAgICAsIG1fdmlzdWFsRGF0YShXVEZNb3Zl
KG90aGVyLm1fdmlzdWFsRGF0YSkpCisgICAgLCBtX2JhY2tncm91bmREYXRhKFdURk1vdmUob3Ro
ZXIubV9iYWNrZ3JvdW5kRGF0YSkpCisgICAgLCBtX3N1cnJvdW5kRGF0YShXVEZNb3ZlKG90aGVy
Lm1fc3Vycm91bmREYXRhKSkKKyAgICAsIG1fcmFyZU5vbkluaGVyaXRlZERhdGEoV1RGTW92ZShv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Mo
V1RGTW92ZShvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1fcmFyZUluaGVyaXRl
ZERhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKSkKKyAgICAsIG1faW5oZXJp
dGVkRGF0YShXVEZNb3ZlKG90aGVyLm1faW5oZXJpdGVkRGF0YSkpCisgICAgLCBtX2luaGVyaXRl
ZEZsYWdzKFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWRGbGFncykpCisgICAgLCBtX2NhY2hlZFBz
ZXVkb1N0eWxlcyhXVEZNb3ZlKG90aGVyLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkKKyAgICAsIG1f
c3ZnU3R5bGUoV1RGTW92ZShvdGhlci5tX3N2Z1N0eWxlKSkKK3sKKyNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAg
ICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQo
dGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1vdmUoKmN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChpc05ldywgaXNOZXcpOworICAgICAgICBvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0
Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXNNYXAoKS5yZW1vdmUoJm90aGVyKTsKKyAgICB9CisjZW5kaWYKK30KKworUmVuZGVyU3R5bGUm
IFJlbmRlclN0eWxlOjpvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJiBvdGhlcikKK3sKKyAgICBtX2Jv
eERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fYm94RGF0YSk7CisgICAgbV92aXN1YWxEYXRhID0gV1RG
TW92ZShvdGhlci5tX3Zpc3VhbERhdGEpOworICAgIG1fYmFja2dyb3VuZERhdGEgPSBXVEZNb3Zl
KG90aGVyLm1fYmFja2dyb3VuZERhdGEpOworICAgIG1fc3Vycm91bmREYXRhID0gV1RGTW92ZShv
dGhlci5tX3N1cnJvdW5kRGF0YSk7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9IFdURk1v
dmUob3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YSk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFn
cyA9IFdURk1vdmUob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncyk7CisgICAgbV9yYXJlSW5oZXJp
dGVkRGF0YSA9IFdURk1vdmUob3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSk7CisgICAgbV9pbmhl
cml0ZWREYXRhID0gV1RGTW92ZShvdGhlci5tX2luaGVyaXRlZERhdGEpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MgPSBXVEZNb3ZlKG90aGVyLm1faW5oZXJpdGVkRmxhZ3MpOworICAgIG1fY2FjaGVk
UHNldWRvU3R5bGVzID0gV1RGTW92ZShvdGhlci5tX2NhY2hlZFBzZXVkb1N0eWxlcyk7CisgICAg
bV9zdmdTdHlsZSA9IFdURk1vdmUob3RoZXIubV9zdmdTdHlsZSk7CisKKyNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKKyAgICBpZiAobV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykg
eworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAg
ICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUodGhpcyk7CisgICAg
fQorICAgIGlmIChvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAg
ICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRv
IGlzTmV3ID0gY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6
Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oV1RGTW92ZSgqY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGlz
TmV3LCBpc05ldyk7CisgICAgICAgIG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRp
ZXMgPSBmYWxzZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJl
bW92ZSgmb3RoZXIpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuICp0aGlzOworfQogCiBS
ZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlVGFnKQogICAgIDogbV9i
b3hEYXRhKFN0eWxlQm94RGF0YTo6Y3JlYXRlKCkpCkBAIC0yMDYsNiArMjcwLDEzIEBAIGlubGlu
ZSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9u
ZVRhZykKICAgICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKICAg
ICAsIG1fc3ZnU3R5bGUob3RoZXIubV9zdmdTdHlsZSkKIHsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykg
eworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAg
ICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQodGhp
cywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuZ2V0KCZvdGhlcikpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05l
dywgaXNOZXcpOworICAgIH0KKyNlbmRpZgogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCkBAIC0yMjEsNiArMjkyLDIy
IEBAIGlubGluZSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIGEsIFJlbmRl
clN0eWxlJiYgYikKICAgICAsIG1fY2FjaGVkUHNldWRvU3R5bGVzKHN0ZDo6ZXhjaGFuZ2UoYS5t
X2NhY2hlZFBzZXVkb1N0eWxlcywgV1RGTW92ZShiLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkpCiAg
ICAgLCBtX3N2Z1N0eWxlKGEubV9zdmdTdHlsZS5yZXBsYWNlKFdURk1vdmUoYi5tX3N2Z1N0eWxl
KSkpCiB7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGEubV9oYXNDdXN0
b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQ
cm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXNNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KFdURk1vdmUoKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJmEpKSkp
OworICAgICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3LCBpc05ldyk7CisgICAgICAgIGEubV9oYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZhKTsKKyAgICB9CisgICAgaWYgKGIubV9oYXND
dXN0b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIGlzTmV3ID0gY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCgmYSwgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0
cmluZz4+KFdURk1vdmUoKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJmIp
KSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3LCBpc05ldyk7CisgICAgICAgIGIubV9o
YXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWlu
dFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZiKTsKKyAgICB9CisjZW5kaWYKIH0KIAog
UmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSgpCkBAIC0yMjksNiArMzE2LDEwIEBAIFJlbmRlclN0
eWxlOjp+UmVuZGVyU3R5bGUoKQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBtX2hhc0N1c3RvbVBhaW50
V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGll
c01hcCgpLnJlbW92ZSh0aGlzKTsKKyNlbmRpZgogfQogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHls
ZTo6cmVwbGFjZShSZW5kZXJTdHlsZSYmIG5ld1N0eWxlKQpAQCAtMzYyLDYgKzQ1MywxMSBAQCBi
b29sIFJlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29u
c3QKICAgICAgICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhCiAgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEgPT0gb3RoZXIubV9y
YXJlSW5oZXJpdGVkRGF0YQogICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEgPT0gb3RoZXIubV9p
bmhlcml0ZWREYXRhCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgICAgICYmICgo
IW1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgJiYgIW90aGVyLm1faGFzQ3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMpCisgICAgICAgICAgICB8fCAobV9oYXNDdXN0b21QYWludFdhdGNo
UHJvcGVydGllcyAmJiBvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzCisgICAg
ICAgICAgICAgICAgJiYgKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQodGhp
cykgPT0gKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpCisj
ZW5kaWYKICAgICAgICAgJiYgbV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCkBA
IC05NjIsNiArMTA1OCwxOCBAQCBzdGF0aWMgYm9vbCByYXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJl
cXVpcmVzUmVwYWludChjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJgogICAgIDsKIH0KIAor
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoIW1faGFz
Q3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdh
dGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxT
dHJpbmc+PigpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcpOworICAgIH0K
KyAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpLT5hZGQobmFt
ZSk7Cit9CisjZW5kaWYKKwogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50
KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW9uU2V0PFN0eWxlRGlmZmVyZW5jZUNvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eT4mIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykg
Y29uc3QKIHsKICAgICBpZiAoIXJlcXVpcmVzUGFpbnRpbmcoKnRoaXMpICYmICFyZXF1aXJlc1Bh
aW50aW5nKG90aGVyKSkKQEAgLTk4Myw2ICsxMDkxLDQyIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNo
YW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNldDxT
dHlsCiAgICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KCpt
X3JhcmVJbmhlcml0ZWREYXRhLCAqb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKFVO
TElLRUxZKG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgfHwgb3RoZXIubV9oYXNDdXN0
b21QYWludFdhdGNoUHJvcGVydGllcykpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBu
b3QgbmVlZCB0byB1c2UgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBoZXJlLgorICAgICAgICBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yIGV4dHJhY3RvcigoRWxlbWVudCopIG51bGxwdHIpOworCisgICAg
ICAgIGZvciAoYXV0byogd2F0Y2hQcm9wZXJ0aWVzTWFwIDogeyBjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpLCBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFw
KCkuZ2V0KCZvdGhlcikgfSkgeworICAgICAgICAgICAgaWYgKCF3YXRjaFByb3BlcnRpZXNNYXAp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAoYXV0byYgbmFt
ZSA6ICp3YXRjaFByb3BlcnRpZXNNYXApIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHZhbHVlQTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlQjsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUobmFtZSkgJiYgZ2V0Q3VzdG9t
UHJvcGVydHkobmFtZSkgJiYgb3RoZXIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWVBID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpn
ZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQiA9IENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqb3RoZXIuZ2V0Q3VzdG9tUHJvcGVydHkobmFt
ZSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghcHJvcGVydHlJRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB2YWx1ZUEgPSBleHRyYWN0b3IudmFsdWVGb3JQcm9wZXJ0
eWluU3R5bGUoKnRoaXMsIHByb3BlcnR5SUQpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIg
PSBleHRyYWN0b3IudmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUob3RoZXIsIHByb3BlcnR5SUQpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgodmFsdWVBICYmICF2YWx1
ZUIpIHx8ICghdmFsdWVBICYmIHZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUEpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCEoKnZhbHVlQSA9PSAqdmFsdWVCKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzYWNiMWM5YTgyNzY0NTg0
OTNhMmUyNzEzMjBmYzc3MzAzNmUyYjBlLi5hODdjN2YyNzAxNmY2MTNhMjBlNDYxODFmN2I5ZGQ0
Y2E2MWE3MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaApAQCAtMTI4LDYgKzEyOCw3IEBAIHVzaW5nIFBzZXVkb1N0eWxlQ2FjaGUgPSBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgND47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVhbChjb25zdCBUJiB0LCBjb25zdCBV
JiB1KSB7IHJldHVybiB0ID09IHN0YXRpY19jYXN0PGNvbnN0IFQmPih1KTsgfQogCisjcHJhZ21h
IHBhY2socHVzaCwgMSkKIGNsYXNzIFJlbmRlclN0eWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIApAQCAtMTI2Nyw2ICsxMjY4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFw
cGxlUGF5QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGFwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHR5cGUpKTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAg
ICB2b2lkIGFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpOwor
I2VuZGlmCisKICAgICAvLyBTdXBwb3J0IGZvciBwYWludC1vcmRlciwgc3Ryb2tlLWxpbmVjYXAs
IHN0cm9rZS1saW5lam9pbiwgYW5kIHN0cm9rZS1taXRlcmxpbWl0IGZyb20gaHR0cHM6Ly9kcmFm
dHMuZnh0Zi5vcmcvcGFpbnQvLgogICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIG9y
ZGVyKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcGFpbnRPcmRlciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG9yZGVyKSk7IH0KICAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxQYWludE9yZGVyPihtX3JhcmVJbmhlcml0ZWREYXRhLT5w
YWludE9yZGVyKTsgfQpAQCAtMTg4MCw2ICsxODg1LDEwIEBAIHByaXZhdGU6CiAgICAgRGF0YVJl
ZjxTdHlsZUluaGVyaXRlZERhdGE+IG1faW5oZXJpdGVkRGF0YTsKICAgICBJbmhlcml0ZWRGbGFn
cyBtX2luaGVyaXRlZEZsYWdzOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAg
Ym9vbCBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzIHsgZmFsc2UgfTsKKyNlbmRpZgor
CiAgICAgLy8gbGlzdCBvZiBhc3NvY2lhdGVkIHBzZXVkbyBzdHlsZXMKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHNldWRvU3R5bGVDYWNoZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7CiAKQEAgLTE4ODks
NiArMTg5OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxz
ZSB9OwogI2VuZGlmCiB9OworI3ByYWdtYSBwYWNrKHBvcCkKIAogaW50IGFkanVzdEZvckFic29s
dXRlWm9vbShpbnQsIGNvbnN0IFJlbmRlclN0eWxlJik7CiBmbG9hdCBhZGp1c3RGbG9hdEZvckFi
c29sdXRlWm9vbShmbG9hdCwgY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBiODg0M2E2ZDNiMmE3M2EzODhlNzBjZmNjNmM2MDYzNjNjZDI1
MWMxLi45NzQzYTI0Y2Y0MWRiMWE1OTcxZWRkMzBmZjAzMGM2M2NhODNkMmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzIsNiArMTcyLDcgQEAKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KQEAgLTIzNzUsNiArMjM3NiwxNSBA
QCBib29sIEludGVybmFsczo6aXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50SWRlbnRp
ZmllcikgY29uc3QKICAgICByZXR1cm4gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRh
aW5zKG1ha2VPYmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGRvY3VtZW50
SWRlbnRpZmllcikpOwogfQogCitib29sIEludGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFsU2Nv
cGVBbGl2ZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgcmV0
dXJuICFXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKS5pc0Vt
cHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50
ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggMGRhZjAzM2NkMzM0ZDU0NGVjMTNkMzdjNzE4ZDRmN2JhNjFi
YjU2Ni4uNzgyOWY2MDBlMGE3M2Q5YjI0Yzc4MDNhNzIyOWNjY2FlMDUyZjA4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zODcsNiArMzg3LDggQEAgcHVibGljOgogICAgIHVp
bnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OwogICAgIGJv
b2wgaXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcikgY29uc3Q7CiAK
KyAgICBib29sIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdDsKKwogICAgIFN0
cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0
OwogCiAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChj
b25zdCBTdHJpbmcmIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
YjZkZDdiMjJhMjYxOTkwZTk5ZmUyNjFlYzU2NzcyZTE4NzlmYTBlMi4uMTMxMDczNWJjNWM0Mzdk
N2FkYTkzYjJiNTJmOWE3MGI4ZThiYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtNjc0LDYgKzY3NCw4IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQpOwog
ICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElk
ZW50aWZpZXIpOwogCisgICAgYm9vbGVhbiBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCk7
CisKICAgICBET01TdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoRG9jdW1lbnQg
ZG9jdW1lbnQpOwogCiAgICAgUHJvbWlzZTx2b2lkPiBjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJl
cHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdv
cmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYTI5YTIwMGQxMGRmM2ZkNmI3YWNmYmE5Nzg4ZWMx
YzRiYThhMGE0My4uM2UzZDk1NjFmMjY2NzNhZjg1NjI5NWE4MDJjN2EwNDY2YmQwNDRlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgog
I2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dFNlcXVlbmNlcy5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTUgKzUxLDI1IEBAIFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFNjcmlwdFNvdXJjCiAKIGRvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXNwb25zYWJsZURvY3VtZW50
KCkgfHwgIXJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCisgICAgaWYgKCFyZXNw
b25zaWJsZURvY3VtZW50KCkgfHwgIXJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkp
CiAgICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIHJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0aW8oKTsKKyAgICByZXR1cm4gcmVzcG9uc2libGVE
b2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworfQorCitQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOjpQYWludERlZmluaXRpb24oY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8
Q1NTUGFpbnRDYWxsYmFjaz4mJiBwYWludENhbGxiYWNrLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0
UHJvcGVydGllcywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cykKKyAgICA6IG5hbWUo
bmFtZSkKKyAgICAsIHBhaW50Q29uc3RydWN0b3IocGFpbnRDb25zdHJ1Y3RvcikKKyAgICAsIHBh
aW50Q2FsbGJhY2soV1RGTW92ZShwYWludENhbGxiYWNrKSkKKyAgICAsIGlucHV0UHJvcGVydGll
cyhXVEZNb3ZlKGlucHV0UHJvcGVydGllcykpCisgICAgLCBpbnB1dEFyZ3VtZW50cyhXVEZNb3Zl
KGlucHV0QXJndW1lbnRzKSkKK3sKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1wYWludAogRXhjZXB0aW9uT3I8
dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIFN0cm9uZzxKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3RvcikKIHsKICAgICBhdXRvJiB2
bSA9ICpwYWludENvbnN0cnVjdG9yLT52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IFZhbGlkYXRlIHRoYXQgcGFpbnRDb25zdHJ1Y3RvciBpcyBhIFZvaWRGdW5jdGlvbgpAQCAtNjks
NjIgKzgwLDcwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpy
ZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgZmlyc3QgYXJn
dW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKIAotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKIAotICAgIGlmIChwYWlu
dERlZmluaXRpb25NYXAoKS5jb250YWlucyhuYW1lKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVu
IHJlZ2lzdGVyZWQiIH07CisgICAgICAgIGlmIChwYWludERlZmluaXRpb25NYXAoKS5jb250YWlu
cyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0
aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OwogCi0g
ICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworICAgICAgICBWZWN0b3I8U3RyaW5n
PiBpbnB1dFByb3BlcnRpZXM7CiAKLSAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBKU1Zh
bHVlIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1
ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBjb252ZXJ0PElETFNl
cXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVl
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFs
dWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxl
VmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0
IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KKyAgICAgICAgLy8gRklYTUU6IFZhbGlkYXRlIGlu
cHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KIAotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0
QXJndW1lbnRzOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKIAotICAg
IEpTVmFsdWUgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIp
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBKU1ZhbHVlIGlucHV0QXJndW1lbnRzSXRlcmFibGVW
YWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAo
IWlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1
dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlu
cHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgaWYgKCFp
bnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIGlu
cHV0QXJndW1lbnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwg
aW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIC8v
IEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFu
ZCAxMikuCisgICAgICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRz
IGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCiAKLSAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFs
dWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImNvbnRleHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGNvbnRleHRPcHRpb25zVmFsdWUpOworICAgICAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFs
dWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImNvbnRleHRPcHRpb25zIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBVTlVT
RURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7CiAKLSAgICAvLyBGSVhNRTogQ29udmVydCB0
byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgorICAgICAg
ICAvLyBGSVhNRTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhl
cmUgKHN0ZXAgMTQpLgogCi0gICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9y
KHZtKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQg
YXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9OworICAgICAgICBpZiAoIXBhaW50Q29u
c3RydWN0b3ItPmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9y
IiB9OwogCi0gICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdl
dCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3Rh
dGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAg
ICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlw
ZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09i
amVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBz
ZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0IiB9
OwogCi0gICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAg
ICAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhaW50IikpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0g
ICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07Cisg
ICAgICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhv
ZCIgfTsKIAotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVl
LCBnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlv
biB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50
Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRD
YWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOwogCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRE
ZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQucmVsZWFzZU5vbk51
bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKLSAgICBwYWludERlZmlu
aXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKKyAgICAgICAg
YXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50RGVmaW5pdGlvbj4o
bmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CisgICAgICAg
IHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikp
OworICAgIH0KKworICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBjYXNlIHdoZW4gd2UgaGF2ZSBhbHJl
YWR5IHZpc2l0ZWQgdGhlIHBhaW50IGRlZmluaXRpb24gbWFwLCBhbmQgdGhlIEdDIGlzIGN1cnJl
bnRseSBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KCZnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gRklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmlu
aXRpb24gKHN0ZXAgMjIpLgogCisgICAgaWYgKHJlc3BvbnNpYmxlRG9jdW1lbnQoKSAmJiByZXNw
b25zaWJsZURvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICAgICAgcmVzcG9uc2libGVEb2N1
bWVudCgpLT5yZW5kZXJWaWV3KCktPnJlcGFpbnRSb290Q29udGVudHMoKTsKKwogICAgIHJldHVy
biB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCmluZGV4IDIzMjcxZjE1NDI5MTRiODViNGIyNWY3OTE5MmVhNGNlY2NhOGE1
NTAuLjBiMTgwZTAzZjU4MjIyMmVmYWQ2NDYyZWFkZWEzNDk0YzYwMzEyOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldv
cmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDUsOCArNDYsMTIgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVy
UGFpbnQoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3Rvcik7CiAgICAg
ZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKSBjb25zdDsKIAotICAgIHN0cnVjdCBQYWludERlZmlu
aXRpb24geworICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UGFpbnREZWZpbml0aW9uPiB7CisgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3IsIFJlZjxDU1NQ
YWludENhbGxiYWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGllcywgVmVjdG9y
PFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cyk7CisKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
IG5hbWU7CisgICAgICAgIC8vIFRoaXMgbWFwIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIHZt
IGlzIGRlc3Ryb3llZCEKKyAgICAgICAgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvcjsK
ICAgICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CiAgICAg
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKICAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CkBAIC01NSw5ICs2MCwyNiBAQCBwdWJsaWM6
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+PiYg
cGFpbnREZWZpbml0aW9uTWFwKCkgeyBBU1NFUlQobV9wYWludERlZmluaXRpb25Mb2NrLmlzTG9j
a2VkKCkpOyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7IH0KICAgICBMb2NrJiBwYWludERl
ZmluaXRpb25Mb2NrKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25Mb2NrOyB9CiAKKyAgICB2
b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFsCisgICAgeworICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7Cisg
ICAgICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5jbGVhcigpOworICAgICAgICB9CisgICAg
ICAgIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgfQor
CiBwcml2YXRlOgogICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2NyaXB0
U291cmNlQ29kZSYmKTsKIAorICAgIH5QYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCisgICAgewor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWlu
dERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBBU1NFUlQocGFpbnREZWZpbml0aW9uTWFwKCku
aXNFbXB0eSgpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIGJvb2wgaXNQYWludFdvcmtsZXRHbG9i
YWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4gbV9wYWludERlZmluaXRpb25N
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApp
bmRleCBhMGQzMDA5ZGE5M2FjNDNiMTZlMGRkNDBkMDRjZjgyZTAwYjI0MGI1Li5hMGFjYzcyM2Nj
NTc5NWEyMzBjNWM3Y2UzMzUwY2FhZjA2ZGY2NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRl
ICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAKQEAgLTQ5LDEyICs0OCwxNSBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2Nv
cGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6IG1f
ZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9kb2N1
bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlUmVmPFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8
V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQotICAgICwgbV9pZGVudGlmaWVyKG1ha2VTdHJpbmco
IldvcmtsZXRHbG9iYWxTY29wZToiX3MsIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCkpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9j
b2RlKFdURk1vdmUoY29kZSkpCisgICAgLCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVPYmplY3RJZGVu
dGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlPigpKQogeworICAgIGF1dG8g
YWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc01hcCgpLmFkZChtX2lkZW50aWZpZXIs
IHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CisKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgbV9qc1J1bnRp
bWVGbGFncyA9IGZyYW1lID8gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVGbGFn
cygpIDogSlNDOjpSdW50aW1lRmxhZ3MoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsK
QEAgLTY1LDggKzY3LDI1IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvCiAKIFdvcmtsZXRHbG9i
YWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCiB7CisgICAgQVNTRVJUKCFtX3NjcmlwdCk7
CiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7Ci0gICAgbV9zY3JpcHQtPndvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIoKS0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKKyAgICBhbGxXb3Jr
bGV0R2xvYmFsU2NvcGVzTWFwKCkucmVtb3ZlKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQoreworICAgIEFTU0VSVCht
X3NjcmlwdCk7CisgICAgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKyAgICByZW1vdmVSZWplY3Rl
ZFByb21pc2VUcmFja2VyKCk7CisgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBt
X3NjcmlwdC0+dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKKyAgICBtX3NjcmlwdCA9IG51
bGxwdHI7Cit9CisKK2F1dG8gV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0R2xvYmFsU2Nv
cGVzTWFwKCkgLT4gV29ya2xldEdsb2JhbFNjb3Blc01hcCYKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8V29ya2xldEdsb2JhbFNjb3Blc01hcD4gc2NvcGVzOworICAgIHJldHVybiBzY29w
ZXM7CiB9CiAKIFN0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6Om9yaWdpbigpIGNvbnN0CkBAIC04
OCw3ICsxMDcsNyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQogCiBib29s
IFdvcmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworICAgIHJldHVybiAh
bV9zY3JpcHQgfHwgbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CiB9CiAKIHZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKQEAgLTExMCwzMCArMTI5LDMwIEBAIFVSTCBXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRl
VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6
bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAg
IGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNzYWdl
LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykpOwog
fQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKIHsKLSAgICBpZiAo
IW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSB8fCAhbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVz
c2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2Fn
ZS0+bWVzc2FnZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9u
Rm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1i
ZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
dW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBpZiAoIW1fZG9j
dW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNrKSwgc3RhdGUs
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwg
bGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
V1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmgKaW5kZXggZjAxNTY0ZDg2N2MxMGFhY2Y5Y2YwYzFkZjY5MDY1Y2ZlZjJkNzVj
Ni4uYzgwYThiYTZlMjVhNjNhZDdlMDcyMjEzNmFiZTBhYTZjNTI5MDBjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDI5ICszOCwzNCBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsK
IAorZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBXb3Jr
bGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0R2xvYmFs
U2NvcGVJZGVudGlmaWVyVHlwZT47CisKIGNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6Ci0gICAg
fldvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHZpcnR1YWwgfldvcmtsZXRHbG9iYWxTY29wZSgp
OworCisgICAgdXNpbmcgV29ya2xldEdsb2JhbFNjb3Blc01hcCA9IEhhc2hNYXA8V29ya2xldEds
b2JhbFNjb3BlSWRlbnRpZmllciwgV29ya2xldEdsb2JhbFNjb3BlKj47CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdvcmtsZXRHbG9iYWxTY29wZXNNYXAmIGFsbFdvcmtsZXRHbG9iYWxTY29w
ZXNNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0IGZp
bmFsOwotICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogCiAgICAgdm9pZCBldmFsdWF0ZSgpOwogCiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAgV29ya2xldFNjcmlw
dENvbnRyb2xsZXImIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisgICAgV29y
a2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9
CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIApAQCAtNzQsMTEgKzc5LDEzIEBAIHB1YmxpYzoK
IAogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9qc1J1bnRpbWVGbGFnczsgfQogCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEZXN0cnVj
dGlvbigpOworCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50Jiwg
U2NyaXB0U291cmNlQ29kZSYmKTsKIAotICAgIERvY3VtZW50KiByZXNwb25zYWJsZURvY3VtZW50
KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQotICAgIGNvbnN0IERvY3VtZW50KiByZXNw
b25zYWJsZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorICAg
IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQo
KTsgfQorICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogCiBwcml2YXRlOgogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpAQCAtMTE4LDEwICsxMjUsOSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAg
ICBVbmlxdWVSZWY8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CiAKICAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwotICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1c3Qg
c2F0aXNmaWVzIHRoZSBjb21waWxlci4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CkBAIC0xMjksNiArMTM1LDggQEAgcHJpdmF0ZToKIAogICAg
IEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CiAgICAgU2NyaXB0U291cmNlQ29k
ZSBtX2NvZGU7CisKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAwNTVkN2YxMTY4ZWVi
NWFjZjA0MmZmMTRiZmM5OWM3M2RjY2I4ZjM3Li4xMTY4OTc4ZTQyNGRmMWM0OGU0NjFjNTg4OWM3
OGZjZGJhMDY3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OSwxMyArNTksMTUgQEAgV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSogd29y
a2xldEdsb2IKIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRyb2xs
ZXIoKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1fdm0gPSBudWxscHRyOworICAgIGZvcmJpZEV4
ZWN1dGlvbigpOworCiAgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikgewogICAg
ICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVjdHMo
KTsKICAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50
KG51bGxwdHIpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRyOwogICAgIH0KKyAg
ICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVsbHB0
cjsKIH0KIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkK
QEAgLTgyLDYgKzg0LDkgQEAgYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSBjb25zdAogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNh
YmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBpZiAoaXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW5pdFNjcmlwdElmTmVlZGVk
KCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CiAKQEAgLTkwLDYgKzk1LDkgQEAg
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVXZWJB
c3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBpZiAoaXNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW5pdFNjcmlwdElmTmVlZGVk
KCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CiAKQEAgLTEzMiw2ICsxNDAsOSBA
QCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkK
IAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiB7CisgICAgaWYg
KGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChpczxQ
YWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93b3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAgICAg
IGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlw
ZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWM5YjQ3MGQ5ZGFkYWVlN2UyZGZiNDkyYmI5NTA3
YmQ0NDc1Y2YzLi5jNWE4ZTc4NTViYzUxZTVmMTVkMjQ4NzA2NjllYjVlMTY5ZjBmNDNlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMTEtMTUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21p
Y2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBhc3Mg
J3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFpbnQgd2hlbiBwcm9w
ZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRl
LXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Fu
aW1hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0
cnVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9jb25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20t
cGFpbnQvbGVha3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvbGVha3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBh
aW50L3Byb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmVz
b3VyY2VzL2xlYWtzLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
OC0xMS0xNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRoTl0gVXNlckhhbmRsZSBjYW4gYmUgbnVsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNwYWludCB7
CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDog
MTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+PC9kaXY+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
YW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTBjZTMy
OTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYwMCkK
KyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVjdCAwIDAg
ODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUwKQorICAo
cmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUt
cmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0g
LS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFp
bHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250
ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hh
bmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRp
bmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xl
dCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkg
eyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0
aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5nKCkg
IT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQorCisgICAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAg
fQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYm
IHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZh
bHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOworICB9
CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xl
dCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCisg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bh
aW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7CisgIH0sIDUw
MCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJlY3RzID0g
Ik5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93Lmlu
dGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWludHMo
KTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVtbXkgPSBk
b2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2luZG93Lmlu
dGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVybmFscy5z
dG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHByZSk7
CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8L3Njcmlw
dD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15
LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBo
ZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0icGFpbnQi
PjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9h
bmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZhMTY1ZGQ0
MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRy
dWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVm
PSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQi
IGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJvcGVydGll
cyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3Mt
aG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93
b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRp
ZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdlb20sIHBy
b3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJykudG9TdHJp
bmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICB9CisK
KyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAg
fQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4K
KworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENTUy5w
YWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQp
OworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2UsIHRo
ZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3BlcnR5
KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisKKzxzdHls
ZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7Cisg
ICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBw
eDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25z
dHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5MjFiYzg3ZWE0NDg1
NDc0YmQ4MmQyZmE0NDFkOWVhYzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRoOiAx
NTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRp
diBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2PgorICA8ZGl2
IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgIDxkaXYg
Y2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rv
ci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGY1YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4MjI4ZDljYjk4Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25z
dHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0g
LS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFp
bHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250
ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlmIHRoZSBjb25zdHJ1
Y3RvciB0aHJvd3MiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5j
c3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4
dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICB0aHJvdyAiSGVsbG8hIjsKKyAgICB9CisKKyAgICBwYWludChjdHgsIGdlb20pIHsKKyAgICAg
IGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20u
d2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBNeVBhaW50MiB7Cisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7CisgICAg
ICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9t
LndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBh
aW50JywgTXlQYWludCk7CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50MicsIE15UGFpbnQyKTsK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGltcG9ydFdv
cmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50
ZXh0Q29udGVudCk7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZl
KCkpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycpLnN0eWxlLmJhY2tn
cm91bmQgPSAiZ3JlZW4iOworICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0PgorCis8c3R5bGU+
CisgIC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0K
Kzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91
bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIg
c3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48L2Rpdj4KKyAgPGRp
diBpZD0ibGVha3MiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAxNTBweDsgaGVpZ2h0
OiAxNTBweDsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjZTc3N2M5NWM3
OTgzYjM3NThlODMwNDFiNmZiNjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGVzdHMgdGhhdCB1c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3QgY2F1c2UgdGhlIHBh
aW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRpZCBub3QgbGVhawor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMw
YzUyOTJmZjAwNmJkMDA0ZDg3N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sCkBAIC0wLDAgKzEs
MzcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVu
dGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3Ii
IHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtp
dC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29y
a2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJh
ZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZyYW1lIGlkPSJ0ZXN0
RnJhbWUiIHNyYz0icmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBhaW50IGRvZXMgbm90
IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQgbGVha2VkLiIpOwor
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWludFNob3VsZERpZSgp
Cit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGdj
KCk7CisgICAgICAgICAgICBpZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29wZUFs
aXZlKCkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LCAxMCk7CisgICAg
fSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZy
YW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAgICAgICBwYWludFNo
b3VsZERpZSgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJXb3Jr
bGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9KTsKKyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCmluZGV4IDBhZTY4
OGJlMDNlZjNiNWM4MTcxNTdjOGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTViMWZmYTQ1OGQ0ZmZj
OGRiOTc5NTc0OGYyOWJiMDAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAKIGNsYXNzIE15UGFp
bnQgewogICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnaGVpZ2h0Jywg
Jy0tbXktcHJvcCcsICctLW15LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVyLXNwZWNpZmllZCJd
OyB9CiAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbJyonLCAnKicsICcq
J107IH0KKworICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9IDQyOyB9CisKKyAg
dGVzdFRoaXMoKSB7IHJldHVybiB0aGlzLm15QXR0cmlidXRlOyB9CisKICAgcGFpbnQoY3R4LCBn
ZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdl
dCgnaGVpZ2h0JykudG9TdHJpbmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsKICAgICBhc3NlcnRf
ZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsKQEAgLTMwLDYgKzM1
LDggQEAgY2xhc3MgTXlQYWludCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgn
d2lkdGgnKSwgbnVsbCk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnLS1uZXZl
ci1zcGVjaWZpZWQnKS50b1N0cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRfZXF1YWxzKHRoaXMu
dGVzdFRoaXMoKSwgNDIpOworCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspewogICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewogICAgICAgICBjdHguZmlsbFN0eWxlID0g
J3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1m
cmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2RiZGYyZTM0MDgzMGVj
YjU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBF
IGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdB
UElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBN
aWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkb24ndCBsZWFr
Ij4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAgYmFja2dy
b3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWln
aHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWludCI+PC9kaXY+CisK
KzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citjb25zdCBnbG9iYWxTY29w
ZSA9IHRoaXM7CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVz
LCBhcmdzKSB7CisgICAgY29uc3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8gTGVhayEKKyAgICBj
dHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0
aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFrID0gdGhpczsKK3Jl
Z2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdD4K
K0NTUy5wYWludFdvcmtsZXQuYWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2Rl
JykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4NGU3YWNjNTJjNTFh
MWNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0
eDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355016</attachid>
            <date>2018-11-15 20:25:35 -0800</date>
            <delta_ts>2018-11-15 20:38:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181115202532.patch</filename>
            <type>text/plain</type>
            <size>78780</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5hMmVkZTcxZWUyZDM5OTM1
MmYzZjEwMzAwMDIwZDVlNDlmZTNlNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0xNSAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIG9sZCAueGNm
aWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMmIyOGE0YjFmNWNmOTVjOGZjMjJiNDdlMDdl
NDVhMmYwZDU3NTYuLmI0NzhhYzBlNWUyZjE0NGZmNDQ1NTBhOTY2YmQ3YmFjOTMxOTMxM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNTQgQEAKKzIwMTgtMTEtMTUgIEp1c3RpbiBNaWNoYXVkICA8
anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hv
dWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFpbnQg
d2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwYWludCBj
bGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRoZSBwYWludCBjYWxsYmFj
ayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBj
dXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHByb3BlcnRpZXMgdGhhdCB0
aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFsbHksIHdlIGZpeCB0d28g
cmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFsU2NvcGUgdG8gbmV2ZXIg
YmUgZGVzdHJveWVkLgorCisgICAgICAgIFRoaXMgY2xhc3MgYWRkcyBhIG5ldyBtZW1iZXIgdG8g
UmVuZGVyU3R5bGUuIFRvIHN0b3AgdGhpcyBmcm9tIGluY3JlYXNpbmcgdGhlIHNpemUgb2YgUmVu
ZGVyU3R5bGUsIHRoaXMgcGF0Y2ggdXNlcyAjcHJhZ21hIHBhY2sKKyAgICAgICAgdG8gcGFjayBS
ZW5kZXJTdHlsZSwgc2hyaW5raW5nIGl0IGZyb20gODggYnl0ZXMgdG8gODYuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbAorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5pZGw6CisgICAgICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojp2bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWlu
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V1RGTW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25lUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRp
bmdGcm9tUHNldWRvU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OlJlbmRlclN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojp+UmVuZGVyU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnJlcGxhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRTZWxmQWxpZ25t
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFs
aWduSXRlbXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnJlc29sdmVkQWxpZ25TZWxmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpyZXNvbHZlZEp1c3RpZnlJdGVtcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5U2VsZiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZENvbnRlbnRBbGlnbm1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlc29sdmVkQWxpZ25Db250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEp1
c3RpZnlDb250ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVk
Q29udGVudEFsaWdubWVudFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVkQ29udGVudEFsaWdubWVudERpc3RyaWJ1dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9uIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEp1c3Rp
ZnlDb250ZW50RGlzdHJpYnV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudFBvc2l0aW9uIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudERp
c3RyaWJ1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5oZXJpdEZyb20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNvcHlOb25Jbmhlcml0ZWRGcm9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpjb3B5Q29udGVudEZyb20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hl
ZFBzZXVkb1N0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bmhlcml0ZWROb3RFcXVhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlRm9udEhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhh
c2hGb3JUZXh0QXV0b3NpemluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZXF1YWxGb3JUZXh0QXV0b3NpemluZyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5oZXJpdGVkRGF0YVNoYXJlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlz
dWFsT3ZlcmZsb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFyZU5vbklu
aGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyYXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5b3V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQ
b3NpdGlvbmVkTGF5b3V0T25seSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpy
YXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWlu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc1BhaW50aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhcmVOb25Jbmhlcml0ZWREYXRhQ2hhbmdlUmVx
dWlyZXNSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhcmVJbmhlcml0ZWRE
YXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9y
ZGVyT3JPdXRsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmZSZXF1aXJlc0xheWVyUmVwYWludCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q2xpcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRRdW90ZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdpbGxDaGFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xlYXJDb250ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Omxhc3RDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRDb250ZW50QWx0VGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y29udGVudEFsdFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEhhc0F0dHJDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRQYWdlU2NhbGVUcmFuc2Zvcm0pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRTaGFkb3cpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RTdHlsZUltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3IgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVy
U3BhY2luZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmVydGljYWxCb3JkZXJTcGFjaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9y
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxs
TGF5ZXJzQXJlRml4ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lz
TWFya1N0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphZGp1c3RBbmltYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRyYW5zaXRpb25Gb3JQcm9wZXJ0eSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Zm9udENhc2Nh
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRN
ZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpm
b250RGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNwZWNpZmllZEZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRQaXhlbFNpemUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250
RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNw
ZWNpZmllZExpbmVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OnNldFNwZWNpZmllZExpbmVIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExldHRlclNwYWNpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250VmFyaWF0aW9uU2V0dGlu
Z3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRXZWln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRTdHJl
dGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250SXRh
bGljKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dF
eHRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omdl
dFNoYWRvd0luc2V0RXh0ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRp
bmdGYWxsYmFjayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yQnlBcHBs
eWluZ0NvbG9yRmlsdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpib3JkZXJCZWZvcmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmJvcmRlckFmdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpib3JkZXJTdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyRW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpib3JkZXJCZWZvcmVXaWR0aCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyQWZ0ZXJXaWR0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyU3RhcnRXaWR0
aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVy
RW5kV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldE1hcmdpblN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRNYXJnaW5FbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnRleHRFbXBoYXNpc01hcmsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VPdXRzZXRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpmb250QW5kR2x5cGhPcmllbnRhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdl
U2xpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJJbWFnZVdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRCb3JkZXJJbWFnZU91dHNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwQWxpZ24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzY3JvbGxT
bmFwUG9ydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNjcm9sbFBhZGRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdCb3R0b20gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdMZWZ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzY3JvbGxQYWRkaW5n
UmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2Nyb2xsU25hcE1hcmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpblRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpbkJvdHRvbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdp
bkxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBNYXJnaW5SaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdUb3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdCb3R0b20pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdMZWZ0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nUmln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNu
YXBBbGlnbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsU25hcE1hcmdpblRvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5SaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25s
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpv
dXRsaW5lT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREYXNoYm9hcmRSZWdpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQ
YWludE9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21w
dXRlZFN0cm9rZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpoYXNQb3NpdGl2ZVN0cm9rZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZFN0cm9rZUNvbG9yIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzQW55
V29ya2xldEdsb2JhbFNjb3BlQWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50RGVm
aW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xv
YmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjph
bGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zYWJsZURvY3VtZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKwogMjAxOC0xMS0xNSAgSmlld2VuIFRh
biAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlh
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBzaG91bGQgYmUgb3B0aW9uYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCAwOTdjZjQ4ODFmNDZl
N2U5ZmIwN2RkMWZiMjcwZGJiMWE0ZTJlYjA2Li41OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNjMWFk
MjU5M2Y5MzEwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKIH07CiAK
IC8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIENh
bGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlbS4KLUpT
T2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9y
LCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpT
VmFsdWUgbmV3VGFyZ2V0KTsKIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5j
cHAKaW5kZXggODlhMzA4MGRhOGI1MzM3ZGEwMTljZWU2YTEzNWVjNzVjYTM4OWM0MC4uNzk0YTUz
ODFiNzdlNDhkNjJjNTRkMzcyNGVjOGI3YWI4NWZmYjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpT
RE9NT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCBhOGNlYWU2MGJh
NzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmLi4wMTE4NGE4NDYyNzYwODc4YzAwZTgzMGJm
ODFmY2EwZGM0OWFlYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMzQsOCAr
MzQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRpb25M
b2NrKCkpOwotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmlu
aXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVk
KCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0ZXJlZC0+
cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOworICAgIH0K
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZmI1YTc1NTY4MmQxNjE0NmE1Yjg5MmI5Yzc1ZTdh
MzU2MTZhN2M2MS4uN2NkODBlNzQxNTdmZmFjZmRhZWQwYzY0ZWE5OWJjZTQ0MmM4ODZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC0xMjgsNyArMTI4LDggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG8K
IAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEds
b2JhbFNjb3BlKQogewotICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBBU1NFUlQod29y
a2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHdv
cmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwog
ICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5w
cm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmlu
ZGV4IDM3YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEuLmU5ODQxMGJlZWUz
N2VhZWMyMjMyMGZmNGE4YzZiODIzM2JhNjM0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTEwNiw3ICsxMDYsOSBAQCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTYwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0
R2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS53
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoIXdvcmts
ZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
cigpLT5nbG9iYWxFeGVjKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENh
bGxiYWNrLmgKaW5kZXggNzU2NTYzYzNiYWQ2OTU5MmM0NDkyOTcxZDIzOWUwZjhkYWRjMTE1Yy4u
MGMwM2YwYWZiZDcxMjQ0OWVkZDA3MTM2ZDY1MzU3N2FlZDc0ZGY2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oCkBAIC0zMSwxNiArMzEsMTggQEAKICNpbmNsdWRlICJDU1NQ
YWludFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0eWxl
UHJvcGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
OwogCi1jbGFzcyBDU1NQYWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRD
YWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBDU1NQYWludENhbGxi
YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1
YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7CiAK
LSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVuZGVy
aW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2
b2lkPiBoYW5kbGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEJiwg
Q1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZiNTFkNDEyM2Vj
MjI2MjVlMzFjYzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2MWVlYzljMjBi
MzE0NDZkZDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbApAQCAt
MjYsNCArMjYsNSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAg
ICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1RoaXNPYmplY3Q9
YW55CiBdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJlbmRlcmluZ0Nv
bnRleHQyRCBjb250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRP
bmx5IHN0eWxlTWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4YzMzY2JhMzY3
OGQyNmVkMjA2MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1YmIwNTM5MzJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAtNDAsNiArNDAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1BhaW50SW1hZ2VW
YWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9uYW1l
ID09IG90aGVyLm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4
IGM3YWIzYmJhMDVmYjkwNmQ3YmNhMTUwMTE1MzgzNmJhNDZiMzQ2NDEuLjZhMWNlNDlkMGM0MDc5
Zjk5MGFiMGY5OThiZTY1NTcyNTI2ZTAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5oIgor
I2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgog
I2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1
YXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxl
Q29sbGVjdG9yLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE3MTcsNiArMTcxOSwxOCBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBB
cHBseUNhc2NhZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRl
ZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUlu
aGVyaXRlZFByb3BlcnRpZXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAg
IGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpICYmIGRvY3VtZW50KCku
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1hcCIgZnJvbSB0aGUgc3Bl
Yywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgcGFpbnRXb3JrbGV0ID0g
KmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25N
YXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KS5uYW1l
KCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9uLT5p
bnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+YWRkQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CiAgICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0eWxlQnVpbGRl
cjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlzSW5pdGlhbCwgaXNJ
bmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMzVlNzEyYTIxZmJlNmViYzBkYmVjNzdjMTFiNmI0NTg1YWYwZTZiOC4uNzE2NzAy
OWNmMDlmMGVjOWQ4YzE3MjQwYmE0ZDI0ZjgwMTc3NjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0yNTQxLDYgKzI1NDEsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIGlmIChtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1fcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAgICBtX3BhaW50
V29ya2xldEdsb2JhbFNjb3BlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIG1faGFz
UHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICAvLyBOb3RlIHRoYXQgbV9wYWdl
Q2FjaGVTdGF0ZSBjYW4gYmUgRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSBpZiBvdXIg
ZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBkOGY2MGUyOWQzOWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5Li45YmE0ODE5ZGY3
NTE5MmYyZjg0YzY0YWUxZjczYzQzODJlZDJiM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgSlNDOjpWTSYg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS52
bSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcyku
c2NyaXB0KCktPnZtKCk7CiAjZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21Q
YWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuY3BwCmluZGV4IDQzOTYyYzUyNmNiY2VlY2JiMGQ1ODI1MDhkMDJkODUzODZhNDBh
NTguLjAzNGRhNTYxZmU2YjI4MjI0NWM4MzA5MWFjM2RlMWUyODdmNzgzM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
CkBAIC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zdHJ1Y3REYXRhLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25z
dCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5pdGlvbi5w
YWludENhbGxiYWNrLmdldCgpKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBtX3BhaW50RGVmaW5pdGlvbihtYWtlV2Vha1B0cihk
ZWZpbml0aW9uKSkKICAgICAsIG1faW5wdXRQcm9wZXJ0aWVzKGRlZmluaXRpb24uaW5wdXRQcm9w
ZXJ0aWVzKQogICAgICwgbV9lbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogICAgICwgbV9h
cmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNTYsMTMgKzU3LDIwIEBAIEN1c3RvbVBhaW50SW1hZ2U6
On5DdXN0b21QYWludEltYWdlKCkgPSBkZWZhdWx0OwogCiBJbWFnZURyYXdSZXN1bHQgQ3VzdG9t
UGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFNpemUmIGRlc3RTaXplKQogewotICAgIGlmICghbV9lbGVtZW50IHx8ICFtX2Vs
ZW1lbnQtPmVsZW1lbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5lbGVt
ZW50KCkgfHwgIW1fcGFpbnREZWZpbml0aW9uKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWROb3RoaW5nOwogCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29uc3RydWN0b3IobV9w
YWludERlZmluaXRpb24tPnBhaW50Q29uc3RydWN0b3IpOworCisgICAgaWYgKCFwYWludENvbnN0
cnVjdG9yKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworCisg
ICAgYXV0byYgcGFpbnRDYWxsYmFjayA9IG1fcGFpbnREZWZpbml0aW9uLT5wYWludENhbGxiYWNr
LmdldCgpOworCiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPm5lZWRzTGF5b3V0KCkpOwogICAgIEFT
U0VSVCghbV9lbGVtZW50LT5lbGVtZW50KCktPmRvY3VtZW50KCkubmVlZHNTdHlsZVJlY2FsYygp
KTsKIAotICAgIEpTQ1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NT
U1BhaW50Q2FsbGJhY2smPihtX3BhaW50Q2FsbGJhY2suZ2V0KCkpOworICAgIEpTQ1NTUGFpbnRD
YWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NTU1BhaW50Q2FsbGJhY2smPihwYWlu
dENhbGxiYWNrKTsKICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJhY2su
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTEwMyw3
ICsxMTEsMjEgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvIHNpemUgPSBDU1NQ
YWludFNpemU6OmNyZWF0ZShkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7CiAg
ICAgYXV0byBwcm9wZXJ0eU1hcCA9IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6Y3JlYXRlKFdU
Rk1vdmUocHJvcGVydHlWYWx1ZXMpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENhbGxi
YWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1lbnRz
KTsKKyAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT52bSgpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcGFpbnRDb25zdHJ1
Y3Rvci5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9ICpn
bG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOworICAgIEpTQzo6QXJnTGlzdCBub0FyZ3M7CisgICAg
SlNDOjpKU1ZhbHVlIHRoaXNPYmplY3QgPSB7IEpTQzo6Y29uc3RydWN0KCZzdGF0ZSwgV1RGTW92
ZShwYWludENvbnN0cnVjdG9yKSwgbm9BcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBwYWludCBj
bGFzcyIpIH07CisKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKKyAgICB9CisKKyAgICBhdXRvIHJl
c3VsdCA9IHBhaW50Q2FsbGJhY2suaGFuZGxlRXZlbnQoV1RGTW92ZSh0aGlzT2JqZWN0KSwgKmNv
bnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CiAgICAgaWYgKHJlc3VsdC50
eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggZDMwNjc5Mzk3NzIwMGNjZGJj
ZGM5ZTIzYjc2YzUzMDc4MjJjZjc2Ni4uNjhiNDBjOTllY2FiM2E1ZTNlMGM5MmIyYjAxM2Q3ODY1
MWE3MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiR2VuZXJhdGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vh
ay5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM4LDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgQ3VzdG9tUGFpbnRJ
bWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQor
ICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1hZ2Uo
ZGVmaW5pdGlvbiwgc2l6ZSwgZWxlbWVudCwgYXJndW1lbnRzKSk7CiAgICAgfQpAQCAtNDcsMTQg
KzQ5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludEltYWdl
KGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50
cyk7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRE
ZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOwogICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCi0gICAgUmVmPENTU1Bh
aW50Q2FsbGJhY2s+IG1fcGFpbnRDYWxsYmFjazsKKyAgICBXZWFrUHRyPFBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVyRWxlbWVudD4g
bV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggN2JhMTA5MTU1Mjk5
ZDc2M2QxOTkxNWZiZGJiNmQwMzViYjhhZDdmYS4uMzU4OWUzYTczNzU5YTBmMjg2NDkxYTIwYjM1
ZmFlYmZkMmUyYjBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNs
dWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVkZSAi
Q29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC02NiwyMyArNjgsMzMg
QEAgc3RydWN0IFNhbWVTaXplQXNCb3JkZXJWYWx1ZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihCb3JkZXJWYWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNCb3JkZXJWYWx1ZSksIEJvcmRlclZh
bHVlX3Nob3VsZF9ub3RfZ3Jvdyk7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewot
ICAgIHZvaWQqIGRhdGFSZWZzWzddOwotICAgIHZvaWQqIG93blB0cnNbMV07Ci0gICAgdm9pZCog
ZGF0YVJlZlN2Z1N0eWxlOwotICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIHVu
c2lnbmVkIG1fYml0ZmllbGRzWzJdOwotICAgIH0gbV9pbmhlcml0ZWRGbGFnczsKLQotICAgIHN0
cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7Ci0gICAgICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzJd
OwotICAgIH0gbV9ub25Jbmhlcml0ZWRGbGFnczsKK2NvbnN0ZXhwciBpbnQgc2l6ZU9mUmVuZGVy
U3R5bGUgPQorKyAoCisgICAgKyA1IC8vIGRhdGFSZWZzCisgICAgKyAyIC8vIGRhdGFSZWZzCisg
ICAgKyAxIC8vIHVuaXF1ZV9wdHIKKyAgICArIDEgLy8gZGF0YVJlZgorKSAqIHNpemVvZih2b2lk
ICopCisrICgKKyAgICArIDU2IC8vIG1fbm9uSW5oZXJpdGVkRmxhZ3MKKyAgICArIDQ3IC8vIG1f
aW5oZXJpdGVkRmxhZ3MKKyAgICArIHNpemVvZih2b2lkICopIC0gMQorKSAvIHNpemVvZih2b2lk
ICopCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
LSAgICBib29sIGRlbGV0aW9uQ2hlY2s7CisrIDEgLy8gZGVsZXRpb25DaGVjawogI2VuZGlmCi19
OworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorKyAxIC8vIG1faGFzQ3VzdG9tUGFpbnRX
YXRjaFByb3BlcnRpZXMKKyNlbmRpZgorKyAwOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihSZW5k
ZXJTdHlsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJTdHlsZSksICJSZW5kZXJTdHlsZSBz
aG91bGQgc3RheSBzbWFsbCIpOworc3RhdGljX2Fzc2VydChzaXplb2YoUmVuZGVyU3R5bGUpID09
IHNpemVPZlJlbmRlclN0eWxlLCAiUmVuZGVyU3R5bGUgc2hvdWxkIHN0YXkgc21hbGwiKTsKKwor
c3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyU3R5bGUqLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNl
dDxTdHJpbmc+Pj4mIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFJlbmRlclN0eWxlKiwgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KIAogUmVu
ZGVyU3R5bGUmIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKQogewpAQCAtMTI4LDggKzE0MCw2
MiBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBz
ZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogICAgIHJldHVybiBzdHlsZTsKIH0KIAotUmVu
ZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKLVJlbmRlclN0
eWxlJiBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KFJlbmRlclN0eWxlJiYpID0gZGVmYXVsdDsKK1Jl
bmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYmIG90aGVyKQorICAgIDogbV9ib3hE
YXRhKFdURk1vdmUob3RoZXIubV9ib3hEYXRhKSkKKyAgICAsIG1fdmlzdWFsRGF0YShXVEZNb3Zl
KG90aGVyLm1fdmlzdWFsRGF0YSkpCisgICAgLCBtX2JhY2tncm91bmREYXRhKFdURk1vdmUob3Ro
ZXIubV9iYWNrZ3JvdW5kRGF0YSkpCisgICAgLCBtX3N1cnJvdW5kRGF0YShXVEZNb3ZlKG90aGVy
Lm1fc3Vycm91bmREYXRhKSkKKyAgICAsIG1fcmFyZU5vbkluaGVyaXRlZERhdGEoV1RGTW92ZShv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhKSkKKyAgICAsIG1fbm9uSW5oZXJpdGVkRmxhZ3Mo
V1RGTW92ZShvdGhlci5tX25vbkluaGVyaXRlZEZsYWdzKSkKKyAgICAsIG1fcmFyZUluaGVyaXRl
ZERhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhKSkKKyAgICAsIG1faW5oZXJp
dGVkRGF0YShXVEZNb3ZlKG90aGVyLm1faW5oZXJpdGVkRGF0YSkpCisgICAgLCBtX2luaGVyaXRl
ZEZsYWdzKFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWRGbGFncykpCisgICAgLCBtX2NhY2hlZFBz
ZXVkb1N0eWxlcyhXVEZNb3ZlKG90aGVyLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkKKyAgICAsIG1f
c3ZnU3R5bGUoV1RGTW92ZShvdGhlci5tX3N2Z1N0eWxlKSkKK3sKKyNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAg
ICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQo
dGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1vdmUoKmN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChpc05ldywgaXNOZXcpOworICAgICAgICBvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0
Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXNNYXAoKS5yZW1vdmUoJm90aGVyKTsKKyAgICB9CisjZW5kaWYKK30KKworUmVuZGVyU3R5bGUm
IFJlbmRlclN0eWxlOjpvcGVyYXRvcj0oUmVuZGVyU3R5bGUmJiBvdGhlcikKK3sKKyAgICBpZiAo
dGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICBtX2JveERhdGEgPSBX
VEZNb3ZlKG90aGVyLm1fYm94RGF0YSk7CisgICAgbV92aXN1YWxEYXRhID0gV1RGTW92ZShvdGhl
ci5tX3Zpc3VhbERhdGEpOworICAgIG1fYmFja2dyb3VuZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1f
YmFja2dyb3VuZERhdGEpOworICAgIG1fc3Vycm91bmREYXRhID0gV1RGTW92ZShvdGhlci5tX3N1
cnJvdW5kRGF0YSk7CisgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9IFdURk1vdmUob3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncyA9IFdURk1v
dmUob3RoZXIubV9ub25Jbmhlcml0ZWRGbGFncyk7CisgICAgbV9yYXJlSW5oZXJpdGVkRGF0YSA9
IFdURk1vdmUob3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSk7CisgICAgbV9pbmhlcml0ZWREYXRh
ID0gV1RGTW92ZShvdGhlci5tX2luaGVyaXRlZERhdGEpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mg
PSBXVEZNb3ZlKG90aGVyLm1faW5oZXJpdGVkRmxhZ3MpOworICAgIG1fY2FjaGVkUHNldWRvU3R5
bGVzID0gV1RGTW92ZShvdGhlci5tX2NhY2hlZFBzZXVkb1N0eWxlcyk7CisgICAgbV9zdmdTdHls
ZSA9IFdURk1vdmUob3RoZXIubV9zdmdTdHlsZSk7CisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKyAgICBpZiAobV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAg
ICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUodGhpcyk7CisgICAgfQorICAgIGlm
IChvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAgICAgIG1faGFz
Q3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIGlzTmV3ID0g
Y3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTZXQ8U3RyaW5nPj4oV1RGTW92ZSgqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGll
c01hcCgpLmdldCgmb3RoZXIpKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3LCBpc05l
dyk7CisgICAgICAgIG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxz
ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmb3Ro
ZXIpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuICp0aGlzOworfQogCiBSZW5kZXJTdHls
ZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0eWxlVGFnKQogICAgIDogbV9ib3hEYXRhKFN0
eWxlQm94RGF0YTo6Y3JlYXRlKCkpCkBAIC0yMDYsNiArMjcyLDEzIEBAIGlubGluZSBSZW5kZXJT
dHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCBDbG9uZVRhZykKICAg
ICAsIG1faW5oZXJpdGVkRmxhZ3Mob3RoZXIubV9pbmhlcml0ZWRGbGFncykKICAgICAsIG1fc3Zn
U3R5bGUob3RoZXIubV9zdmdTdHlsZSkKIHsKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkK
KyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcykgeworICAgICAg
ICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBp
c05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQodGhpcywgc3RkOjpt
YWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
TWFwKCkuZ2V0KCZvdGhlcikpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcp
OworICAgIH0KKyNlbmRpZgogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJl
bmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCkBAIC0yMjEsNiArMjk0LDIyIEBAIGlubGlu
ZSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIGEsIFJlbmRlclN0eWxlJiYg
YikKICAgICAsIG1fY2FjaGVkUHNldWRvU3R5bGVzKHN0ZDo6ZXhjaGFuZ2UoYS5tX2NhY2hlZFBz
ZXVkb1N0eWxlcywgV1RGTW92ZShiLm1fY2FjaGVkUHNldWRvU3R5bGVzKSkpCiAgICAgLCBtX3N2
Z1N0eWxlKGEubV9zdmdTdHlsZS5yZXBsYWNlKFdURk1vdmUoYi5tX3N2Z1N0eWxlKSkpCiB7Cisj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGEubV9oYXNDdXN0b21QYWludFdh
dGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVz
ID0gdHJ1ZTsKKyAgICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXNNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1v
dmUoKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJmEpKSkpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKGlzTmV3LCBpc05ldyk7CisgICAgICAgIGEubV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkucmVtb3ZlKCZhKTsKKyAgICB9CisgICAgaWYgKGIubV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcykgeworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3Bl
cnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIGlzTmV3ID0gY3VzdG9tUGFpbnRXYXRjaGVkUHJv
cGVydGllc01hcCgpLmFkZCgmYSwgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdU
Rk1vdmUoKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJmIpKSkpOworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3LCBpc05ldyk7CisgICAgICAgIGIubV9oYXNDdXN0b21Q
YWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZiKTsKKyAgICB9CisjZW5kaWYKIH0KIAogUmVuZGVyU3R5
bGU6On5SZW5kZXJTdHlsZSgpCkBAIC0yMjksNiArMzE4LDEwIEBAIFJlbmRlclN0eWxlOjp+UmVu
ZGVyU3R5bGUoKQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2RlbGV0
aW9uSGFzQmVndW4pOwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9w
ZXJ0aWVzID0gZmFsc2U7CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJl
bW92ZSh0aGlzKTsKKyNlbmRpZgogfQogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6cmVwbGFj
ZShSZW5kZXJTdHlsZSYmIG5ld1N0eWxlKQpAQCAtMzYyLDYgKzQ1NSwxMSBAQCBib29sIFJlbmRl
clN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QKICAgICAg
ICAgJiYgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YSA9PSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWRE
YXRhCiAgICAgICAgICYmIG1fcmFyZUluaGVyaXRlZERhdGEgPT0gb3RoZXIubV9yYXJlSW5oZXJp
dGVkRGF0YQogICAgICAgICAmJiBtX2luaGVyaXRlZERhdGEgPT0gb3RoZXIubV9pbmhlcml0ZWRE
YXRhCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgICAgICYmICgoIW1faGFzQ3Vz
dG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgJiYgIW90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFBy
b3BlcnRpZXMpCisgICAgICAgICAgICB8fCAobV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cyAmJiBvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzCisgICAgICAgICAgICAg
ICAgJiYgKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQodGhpcykgPT0gKmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpCisjZW5kaWYKICAg
ICAgICAgJiYgbV9zdmdTdHlsZSA9PSBvdGhlci5tX3N2Z1N0eWxlOwogfQogCkBAIC05NjIsNiAr
MTA2MCwxOCBAQCBzdGF0aWMgYm9vbCByYXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzUmVw
YWludChjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJgogICAgIDsKIH0KIAorI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRj
aFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAoIW1faGFzQ3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVy
dGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+Pigp
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcpOworICAgIH0KKyAgICBjdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpLT5hZGQobmFtZSk7Cit9Cisj
ZW5kaWYKKwogYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlciwgT3B0aW9uU2V0PFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0eT4mIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKIHsK
ICAgICBpZiAoIXJlcXVpcmVzUGFpbnRpbmcoKnRoaXMpICYmICFyZXF1aXJlc1BhaW50aW5nKG90
aGVyKSkKQEAgLTk4Myw2ICsxMDkzLDQyIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVp
cmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNldDxTdHlsCiAgICAg
ICAgICYmIHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KCptX3JhcmVJbmhl
cml0ZWREYXRhLCAqb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKFVOTElLRUxZKG1f
aGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgfHwgb3RoZXIubV9oYXNDdXN0b21QYWludFdh
dGNoUHJvcGVydGllcykpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0
byB1c2UgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBoZXJlLgorICAgICAgICBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yIGV4dHJhY3RvcigoRWxlbWVudCopIG51bGxwdHIpOworCisgICAgICAgIGZvciAo
YXV0byogd2F0Y2hQcm9wZXJ0aWVzTWFwIDogeyBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
TWFwKCkuZ2V0KHRoaXMpLCBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0KCZv
dGhlcikgfSkgeworICAgICAgICAgICAgaWYgKCF3YXRjaFByb3BlcnRpZXNNYXApCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6ICp3YXRj
aFByb3BlcnRpZXNNYXApIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
QTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlQjsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUobmFtZSkgJiYgZ2V0Q3VzdG9tUHJvcGVydHko
bmFtZSkgJiYgb3RoZXIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWVBID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpnZXRDdXN0b21Q
cm9wZXJ0eShuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQiA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqb3RoZXIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghcHJvcGVydHlJRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZUEgPSBleHRyYWN0b3IudmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUo
KnRoaXMsIHByb3BlcnR5SUQpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBleHRyYWN0
b3IudmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUob3RoZXIsIHByb3BlcnR5SUQpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgodmFsdWVBICYmICF2YWx1ZUIpIHx8ICgh
dmFsdWVBICYmIHZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgaWYgKCEoKnZhbHVlQSA9PSAqdmFsdWVCKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzYWNiMWM5YTgyNzY0NTg0OTNhMmUyNzEz
MjBmYzc3MzAzNmUyYjBlLi5hODdjN2YyNzAxNmY2MTNhMjBlNDYxODFmN2I5ZGQ0Y2E2MWE3MzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAt
MTI4LDYgKzEyOCw3IEBAIHVzaW5nIFBzZXVkb1N0eWxlQ2FjaGUgPSBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgND47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVhbChjb25zdCBUJiB0LCBjb25zdCBVJiB1KSB7IHJl
dHVybiB0ID09IHN0YXRpY19jYXN0PGNvbnN0IFQmPih1KTsgfQogCisjcHJhZ21hIHBhY2socHVz
aCwgMSkKIGNsYXNzIFJlbmRlclN0eWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IApAQCAtMTI2Nyw2ICsxMjY4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcGxlUGF5QnV0
dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGFwcGxlUGF5QnV0dG9uVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUp
KTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICB2b2lkIGFk
ZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpOworI2VuZGlmCisK
ICAgICAvLyBTdXBwb3J0IGZvciBwYWludC1vcmRlciwgc3Ryb2tlLWxpbmVjYXAsIHN0cm9rZS1s
aW5lam9pbiwgYW5kIHN0cm9rZS1taXRlcmxpbWl0IGZyb20gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5v
cmcvcGFpbnQvLgogICAgIHZvaWQgc2V0UGFpbnRPcmRlcihQYWludE9yZGVyIG9yZGVyKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcGFpbnRPcmRlciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG9yZGVyKSk7IH0KICAgICBQYWludE9yZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxQYWludE9yZGVyPihtX3JhcmVJbmhlcml0ZWREYXRhLT5wYWludE9yZGVy
KTsgfQpAQCAtMTg4MCw2ICsxODg1LDEwIEBAIHByaXZhdGU6CiAgICAgRGF0YVJlZjxTdHlsZUlu
aGVyaXRlZERhdGE+IG1faW5oZXJpdGVkRGF0YTsKICAgICBJbmhlcml0ZWRGbGFncyBtX2luaGVy
aXRlZEZsYWdzOwogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgYm9vbCBtX2hh
c0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzIHsgZmFsc2UgfTsKKyNlbmRpZgorCiAgICAgLy8g
bGlzdCBvZiBhc3NvY2lhdGVkIHBzZXVkbyBzdHlsZXMKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHNl
dWRvU3R5bGVDYWNoZT4gbV9jYWNoZWRQc2V1ZG9TdHlsZXM7CiAKQEAgLTE4ODksNiArMTg5OCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwogI2Vu
ZGlmCiB9OworI3ByYWdtYSBwYWNrKHBvcCkKIAogaW50IGFkanVzdEZvckFic29sdXRlWm9vbShp
bnQsIGNvbnN0IFJlbmRlclN0eWxlJik7CiBmbG9hdCBhZGp1c3RGbG9hdEZvckFic29sdXRlWm9v
bShmbG9hdCwgY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBiODg0M2E2ZDNiMmE3M2EzODhlNzBjZmNjNmM2MDYzNjNjZDI1MWMxLi45NzQz
YTI0Y2Y0MWRiMWE1OTcxZWRkMzBmZjAzMGM2M2NhODNkMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xNzIsNiArMTcyLDcgQEAKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXcml0
aW5nRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KQEAgLTIzNzUsNiArMjM3NiwxNSBAQCBib29sIElu
dGVybmFsczo6aXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcikgY29u
c3QKICAgICByZXR1cm4gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKG1ha2VP
YmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGRvY3VtZW50SWRlbnRpZmll
cikpOwogfQogCitib29sIEludGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgp
IGNvbnN0Cit7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgcmV0dXJuICFXb3Jr
bGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNNYXAoKS5pc0VtcHR5KCk7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50ZXJuYWxzOjpz
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggMGRhZjAzM2NkMzM0ZDU0NGVjMTNkMzdjNzE4ZDRmN2JhNjFiYjU2Ni4uNzgy
OWY2MDBlMGE3M2Q5YjI0Yzc4MDNhNzIyOWNjY2FlMDUyZjA4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC0zODcsNiArMzg3LDggQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGRv
Y3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OwogICAgIGJvb2wgaXNEb2N1
bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcikgY29uc3Q7CiAKKyAgICBib29s
IGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdDsKKwogICAgIFN0cmluZyBzZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OwogCiAgICAg
UmVmUHRyPFdpbmRvd1Byb3h5PiBvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJp
bmcmIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYjZkZDdiMjJh
MjYxOTkwZTk5ZmUyNjFlYzU2NzcyZTE4NzlmYTBlMi4uMTMxMDczNWJjNWM0MzdkN2FkYTkzYjJi
NTJmOWE3MGI4ZThiYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
Njc0LDYgKzY3NCw4IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIGJvb2xl
YW4gaXNEb2N1bWVudEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIp
OwogCisgICAgYm9vbGVhbiBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCk7CisKICAgICBE
T01TdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQp
OwogCiAgICAgUHJvbWlzZTx2b2lkPiBjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKaW5kZXggYTI5YTIwMGQxMGRmM2ZkNmI3YWNmYmE5Nzg4ZWMxYzRiYThhMGE0
My4uM2UzZDk1NjFmMjY2NzNhZjg1NjI5NWE4MDJjN2EwNDY2YmQwNDRlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNl
cy5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTUgKzUxLDI1IEBAIFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQs
IFNjcmlwdFNvdXJjCiAKIGRvdWJsZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6ZGV2aWNlUGl4
ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXNwb25zYWJsZURvY3VtZW50KCkgfHwgIXJl
c3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCisgICAgaWYgKCFyZXNwb25zaWJsZURv
Y3VtZW50KCkgfHwgIXJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCiAgICAgICAg
IHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIHJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPmRldmljZVBpeGVsUmF0aW8oKTsKKyAgICByZXR1cm4gcmVzcG9uc2libGVEb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworfQorCitQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6UGFpbnREZWZpbml0aW9uOjpQYWludERlZmluaXRpb24oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRD
YWxsYmFjaz4mJiBwYWludENhbGxiYWNrLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGll
cywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cykKKyAgICA6IG5hbWUobmFtZSkKKyAg
ICAsIHBhaW50Q29uc3RydWN0b3IocGFpbnRDb25zdHJ1Y3RvcikKKyAgICAsIHBhaW50Q2FsbGJh
Y2soV1RGTW92ZShwYWludENhbGxiYWNrKSkKKyAgICAsIGlucHV0UHJvcGVydGllcyhXVEZNb3Zl
KGlucHV0UHJvcGVydGllcykpCisgICAgLCBpbnB1dEFyZ3VtZW50cyhXVEZNb3ZlKGlucHV0QXJn
dW1lbnRzKSkKK3sKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1w
YWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1wYWludAogRXhjZXB0aW9uT3I8dm9pZD4gUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cm9uZzxKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3RvcikKIHsKICAgICBhdXRvJiB2bSA9ICpwYWlu
dENvbnN0cnVjdG9yLT52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFZhbGlkYXRl
IHRoYXQgcGFpbnRDb25zdHJ1Y3RvciBpcyBhIFZvaWRGdW5jdGlvbgpAQCAtNjksNjIgKzgwLDcw
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBh
aW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgZmlyc3QgYXJndW1lbnQgbXVz
dCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKIAotICAgIGlmIChwYWludERlZmluaXRp
b25NYXAoKS5jb250YWlucyhuYW1lKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVy
ZWQiIH07CisgICAgICAgIGlmIChwYWludERlZmluaXRpb25NYXAoKS5jb250YWlucyhuYW1lKSkK
KyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OwogCi0gICAgVmVjdG9y
PFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dFBy
b3BlcnRpZXM7CiAKLSAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBw
YWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
ImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBKU1ZhbHVlIGlucHV0
UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKIAotICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRlcmFibGVWYWx1ZS5pc1VuZGVm
aW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOworICAgICAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgICAgIGlucHV0UHJvcGVydGllcyA9IGNvbnZlcnQ8SURMU2VxdWVu
Y2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3BlcnRp
ZXMgaGVyZSAoc3RlcCA3KS4KKyAgICAgICAgLy8gRklYTUU6IFZhbGlkYXRlIGlucHV0IHByb3Bl
cnRpZXMgaGVyZSAoc3RlcCA3KS4KIAotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1lbnRz
OworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKIAotICAgIEpTVmFsdWUg
aW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFyZ3VtZW50cyIpKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOworICAgICAgICBKU1ZhbHVlIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSA9IHBh
aW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
aW5wdXRBcmd1bWVudHMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAoIWlucHV0QXJn
dW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dEFyZ3VtZW50
cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1l
bnRzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgaWYgKCFpbnB1dEFyZ3Vt
ZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIGlucHV0QXJndW1l
bnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRBcmd1
bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIC8vIEZJWE1FOiBQ
YXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCisg
ICAgICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0
ZXBzIDExIGFuZCAxMikuCiAKLSAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBwYWlu
dENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNv
bnRleHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlv
biB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHRP
cHRpb25zVmFsdWUpOworICAgICAgICBKU1ZhbHVlIGNvbnRleHRPcHRpb25zVmFsdWUgPSBwYWlu
dENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNv
bnRleHRPcHRpb25zIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBVTlVTRURfUEFSQU0o
Y29udGV4dE9wdGlvbnNWYWx1ZSk7CiAKLSAgICAvLyBGSVhNRTogQ29udmVydCB0byBQYWludFJl
bmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgorICAgICAgICAvLyBGSVhN
RTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAg
MTQpLgogCi0gICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQg
bXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9OworICAgICAgICBpZiAoIXBhaW50Q29uc3RydWN0b3It
PmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9OwogCi0g
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUs
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAoIXBy
b3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0aGF0IGlz
IGFuIG9iamVjdCIgfTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJn
dW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4gb2JqZWN0IiB9OwogCi0gICAg
SlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBKU1Zh
bHVlIHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1ZS5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgInBhaW50IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgaWYgKHBh
aW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CisgICAgICAgIGlm
IChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCIgfTsKIAot
ICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFj
a0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxP
YmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+
IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+
KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0g
ICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9u
PihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgaW5w
dXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKLSAgICBwYWludERlZmluaXRpb25NYXAo
KS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKKyAgICAgICAgYXV0byBwYWlu
dERlZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFp
bnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1
dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CisgICAgICAgIHBhaW50RGVm
aW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOworICAgIH0K
KworICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBjYXNlIHdoZW4gd2UgaGF2ZSBhbHJlYWR5IHZpc2l0
ZWQgdGhlIHBhaW50IGRlZmluaXRpb24gbWFwLCBhbmQgdGhlIEdDIGlzIGN1cnJlbnRseSBydW5u
aW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKCZnbG9iYWxP
YmplY3QpOwogCiAgICAgLy8gRklYTUU6IGNvbnN0cnVjdCBkb2N1bWVudERlZmluaXRpb24gKHN0
ZXAgMjIpLgogCisgICAgaWYgKHJlc3BvbnNpYmxlRG9jdW1lbnQoKSAmJiByZXNwb25zaWJsZURv
Y3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICAgICAgcmVzcG9uc2libGVEb2N1bWVudCgpLT5y
ZW5kZXJWaWV3KCktPnJlcGFpbnRSb290Q29udGVudHMoKTsKKwogICAgIHJldHVybiB7IH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCmluZGV4IDIzMjcxZjE1NDI5MTRiODViNGIyNWY3OTE5MmVhNGNlY2NhOGE1NTAuLmY5OGU1
NzdlM2Q0OWExMzk0MDYxNjM3Y2RkMTIyNTJkNWJiZmFhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDUsOCAr
NDYsMTIgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVyUGFpbnQoSlND
OjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3Rvcik7CiAgICAgZG91YmxlIGRl
dmljZVBpeGVsUmF0aW8oKSBjb25zdDsKIAotICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gewor
ICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFpbnRE
ZWZpbml0aW9uPiB7CisgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3IsIFJlZjxDU1NQYWludENhbGxi
YWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGllcywgVmVjdG9yPFN0cmluZz4m
JiBpbnB1dEFyZ3VtZW50cyk7CisKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWU7Cisg
ICAgICAgIC8vIFRoaXMgbWFwIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIHZtIGlzIGRlc3Ry
b3llZCEKKyAgICAgICAgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciB7IG51bGxwdHIg
fTsKICAgICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+IHBhaW50Q2FsbGJhY2s7CiAg
ICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKICAgICAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CkBAIC01NSw5ICs2MCwyNiBAQCBwdWJs
aWM6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQYWludERlZmluaXRpb24+
PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyBBU1NFUlQobV9wYWludERlZmluaXRpb25Mb2NrLmlz
TG9ja2VkKCkpOyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7IH0KICAgICBMb2NrJiBwYWlu
dERlZmluaXRpb25Mb2NrKCkgeyByZXR1cm4gbV9wYWludERlZmluaXRpb25Mb2NrOyB9CiAKKyAg
ICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFsCisgICAgeworICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7
CisgICAgICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5jbGVhcigpOworICAgICAgICB9Cisg
ICAgICAgIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgU2Ny
aXB0U291cmNlQ29kZSYmKTsKIAorICAgIH5QYWludFdvcmtsZXRHbG9iYWxTY29wZSgpCisgICAg
eworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhw
YWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBBU1NFUlQocGFpbnREZWZpbml0aW9uTWFw
KCkuaXNFbXB0eSgpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIGJvb2wgaXNQYWludFdvcmtsZXRH
bG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4gbV9wYWludERlZmluaXRp
b25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAppbmRleCBhMGQzMDA5ZGE5M2FjNDNiMTZlMGRkNDBkMDRjZjgyZTAwYjI0MGI1Li5hMGFjYzcy
M2NjNTc5NWEyMzBjNWM3Y2UzMzUwY2FhZjA2ZGY2NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNs
dWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0
b3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAKQEAgLTQ5LDEyICs0OCwxNSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFs
U2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6
IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9k
b2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlUmVmPFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlx
dWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQotICAgICwgbV9pZGVudGlmaWVyKG1ha2VTdHJp
bmcoIldvcmtsZXRHbG9iYWxTY29wZToiX3MsIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5
OjpjcmVhdGVJZGVudGlmaWVyKCkpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwg
bV9jb2RlKFdURk1vdmUoY29kZSkpCisgICAgLCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVPYmplY3RJ
ZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlPigpKQogeworICAgIGF1
dG8gYWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc01hcCgpLmFkZChtX2lkZW50aWZp
ZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CisKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgbV9qc1J1
bnRpbWVGbGFncyA9IGZyYW1lID8gZnJhbWUtPnNldHRpbmdzKCkuamF2YVNjcmlwdFJ1bnRpbWVG
bGFncygpIDogSlNDOjpSdW50aW1lRmxhZ3MoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgp
KTsKQEAgLTY1LDggKzY3LDI1IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNj
b3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvCiAKIFdvcmtsZXRH
bG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCiB7CisgICAgQVNTRVJUKCFtX3Njcmlw
dCk7CiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7Ci0gICAgbV9zY3JpcHQtPndvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIoKS0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKKyAgICBhbGxX
b3JrbGV0R2xvYmFsU2NvcGVzTWFwKCkucmVtb3ZlKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQoreworICAgIEFTU0VS
VChtX3NjcmlwdCk7CisgICAgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKyAgICByZW1vdmVSZWpl
Y3RlZFByb21pc2VUcmFja2VyKCk7CisgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAg
ICBtX3NjcmlwdC0+dm0oKS5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKKyAgICBtX3NjcmlwdCA9
IG51bGxwdHI7Cit9CisKK2F1dG8gV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0R2xvYmFs
U2NvcGVzTWFwKCkgLT4gV29ya2xldEdsb2JhbFNjb3Blc01hcCYKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8V29ya2xldEdsb2JhbFNjb3Blc01hcD4gc2NvcGVzOworICAgIHJldHVybiBz
Y29wZXM7CiB9CiAKIFN0cmluZyBXb3JrbGV0R2xvYmFsU2NvcGU6Om9yaWdpbigpIGNvbnN0CkBA
IC04OCw3ICsxMDcsNyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZXZhbHVhdGUoKQogCiBi
b29sIFdvcmtsZXRHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1dGlvbkZvcmJpZGRlbigpOworICAgIHJldHVy
biAhbV9zY3JpcHQgfHwgbV9zY3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CiB9CiAKIHZv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKQEAgLTExMCwzMCArMTI5LDMwIEBAIFVSTCBXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBs
ZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29w
ZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2spCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQor
ICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNz
YWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykp
OwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKIHsKLSAgICBp
ZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSB8fCAhbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFk
ZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOworICAgIG1fZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
bWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVz
c2FnZS0+bWVzc2FnZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7
Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0
aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5O
dW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBpZiAoIW1f
ZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCwgc291
cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNrKSwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmgKaW5kZXggZjAxNTY0ZDg2N2MxMGFhY2Y5Y2YwYzFkZjY5MDY1Y2ZlZjJk
NzVjNi4uYzgwYThiYTZlMjVhNjNhZDdlMDcyMjEzNmFiZTBhYTZjNTI5MDBjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDI5ICszOCwz
NCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKIAorZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBX
b3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0R2xv
YmFsU2NvcGVJZGVudGlmaWVyVHlwZT47CisKIGNsYXNzIFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6Ci0g
ICAgfldvcmtsZXRHbG9iYWxTY29wZSgpOworICAgIHZpcnR1YWwgfldvcmtsZXRHbG9iYWxTY29w
ZSgpOworCisgICAgdXNpbmcgV29ya2xldEdsb2JhbFNjb3Blc01hcCA9IEhhc2hNYXA8V29ya2xl
dEdsb2JhbFNjb3BlSWRlbnRpZmllciwgV29ya2xldEdsb2JhbFNjb3BlKj47CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFdvcmtsZXRHbG9iYWxTY29wZXNNYXAmIGFsbFdvcmtsZXRHbG9iYWxT
Y29wZXNNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb2RlLnVybCgpOyB9CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0
IGZpbmFsOwotICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBldmFsdWF0ZSgpOwogCiAgICAgdXNpbmcgUmVmQ291
bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAgV29ya2xldFNj
cmlwdENvbnRyb2xsZXImIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisgICAg
V29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgp
OyB9CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIApAQCAtNzQsMTEgKzc5LDEzIEBAIHB1Ymxp
YzoKIAogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1
cm4gbV9qc1J1bnRpbWVGbGFnczsgfQogCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEZXN0
cnVjdGlvbigpOworCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50
JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKIAotICAgIERvY3VtZW50KiByZXNwb25zYWJsZURvY3Vt
ZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQotICAgIGNvbnN0IERvY3VtZW50KiBy
ZXNwb25zYWJsZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQor
ICAgIERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5n
ZXQoKTsgfQorICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogCiBwcml2YXRlOgogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpAQCAtMTE4LDEwICsxMjUsOSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8
RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
LSAgICBVbmlxdWVSZWY8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CiAKICAgICBS
ZWY8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwotICAgIFN0cmluZyBtX2lkZW50aWZpZXI7
CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgcHJvcGVybHksIGl0IGp1
c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CkBAIC0xMjksNiArMTM1LDggQEAgcHJpdmF0ZToKIAog
ICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CiAgICAgU2NyaXB0U291cmNl
Q29kZSBtX2NvZGU7CisKKyAgICBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAwNTVkN2YxMTY4
ZWViNWFjZjA0MmZmMTRiZmM5OWM3M2RjY2I4ZjM3Li4xMTY4OTc4ZTQyNGRmMWM0OGU0NjFjNTg4
OWM3OGZjZGJhMDY3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OSwxMyArNTksMTUgQEAgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9iYWxTY29wZSog
d29ya2xldEdsb2IKIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNjcmlwdENvbnRy
b2xsZXIoKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgIG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1fdm0gPSBudWxscHRyOworICAgIGZvcmJp
ZEV4ZWN1dGlvbigpOworCiAgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcikgewog
ICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmNsZWFyRE9NR3VhcmRlZE9iamVj
dHMoKTsKICAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xp
ZW50KG51bGxwdHIpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRyOwogICAgIH0K
KyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKKyAgICBtX3ZtID0gbnVs
bHB0cjsKIH0KIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9u
KCkKQEAgLTgyLDYgKzg0LDkgQEAgYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSBjb25zdAogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBpZiAoaXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CiAKQEAgLTkwLDYgKzk1LDkg
QEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVX
ZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBpZiAoaXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW5pdFNjcmlwdElmTmVl
ZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CiAKQEAgLTEzMiw2ICsxNDAs
OSBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNz
KCkKIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiB7CisgICAg
aWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChp
czxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93b3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAg
ICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3Rv
dHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+
KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWM5YjQ3MGQ5ZGFkYWVlN2UyZGZiNDkyYmI5
NTA3YmQ0NDc1Y2YzLi5jNWE4ZTc4NTViYzUxZTVmMTVkMjQ4NzA2NjllYjVlMTY5ZjBmNDNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMTEtMTUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGlu
X21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hvdWxkIHBh
c3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFpbnQgd2hlbiBw
cm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmlt
YXRlLXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2FuaW1hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Nv
bnN0cnVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3Rv
bS1wYWludC9jb25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvbGVha3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1j
dXN0b20tcGFpbnQvbGVha3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L3Byb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwog
MjAxOC0xMS0xNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJBdXRoTl0gVXNlckhhbmRsZSBjYW4gYmUgbnVsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNwYWlu
dCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdo
dDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+PC9k
aXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTBj
ZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYw
MCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVjdCAw
IDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUwKQor
ICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1h
dGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVl
IF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0i
bWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhv
dWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29y
a2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5n
KCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQorCisg
ICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0K
KyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0
KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwor
ICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29y
a2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXku
CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7CisgIH0s
IDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJlY3Rz
ID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWlu
dHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVtbXkg
PSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2luZG93
LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVybmFs
cy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBy
ZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8L3Nj
cmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50
KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0icGFp
bnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZhMTY1
ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVk
PXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJvcGVy
dGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5j
c3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4
dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3Bl
cnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdlb20s
IHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJykudG9T
dHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICB9
CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7Cisg
ICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3Njcmlw
dD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENT
Uy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRl
bnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2Us
IHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3Bl
cnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisKKzxz
dHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7
CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAx
NTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9j
b25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5MjFiYzg3ZWE0
NDg1NDc0YmQ4MmQyZmE0NDFkOWVhYzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRo
OiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAg
PGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2PgorICA8
ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgIDxk
aXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1
Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9y
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGY1YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4MjI4ZDljYjk4
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9j
b25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVl
IF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0i
bWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlmIHRoZSBjb25z
dHJ1Y3RvciB0aHJvd3MiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0
cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0i
dGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICB0aHJvdyAiSGVsbG8hIjsKKyAgICB9CisKKyAgICBwYWludChjdHgsIGdlb20pIHsKKyAg
ICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdl
b20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBNeVBhaW50MiB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7Cisg
ICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBn
ZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215
LXBhaW50JywgTXlQYWludCk7CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50MicsIE15UGFpbnQy
KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGltcG9y
dFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUn
KS50ZXh0Q29udGVudCk7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29wZUFs
aXZlKCkpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycpLnN0eWxlLmJh
Y2tncm91bmQgPSAiZ3JlZW4iOworICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0PgorCis8c3R5
bGU+CisgIC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7Cisg
IH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tn
cm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWlu
dCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48L2Rpdj4KKyAg
PGRpdiBpZD0ibGVha3MiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAxNTBweDsgaGVp
Z2h0OiAxNTBweDsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjZTc3N2M5
NWM3OTgzYjM3NThlODMwNDFiNmZiNjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGVzdHMgdGhhdCB1c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3QgY2F1c2UgdGhl
IHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRpZCBub3QgbGVh
aworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGMwYzUyOTJmZjAwNmJkMDA0ZDg3N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sCkBAIC0wLDAg
KzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJp
bWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRo
b3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdl
YmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQg
d29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8v
ZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZyYW1lIGlkPSJ0
ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBhaW50IGRvZXMg
bm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQgbGVha2VkLiIp
Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWludFNob3VsZERp
ZSgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
eworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGdjKCk7CisgICAgICAgICAgICBpZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29w
ZUFsaXZlKCkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LCAxMCk7Cisg
ICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAgICAgICBwYWlu
dFNob3VsZERpZSgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJX
b3JrbGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCmluZGV4IDBh
ZTY4OGJlMDNlZjNiNWM4MTcxNTdjOGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTViMWZmYTQ1OGQ0
ZmZjOGRiOTc5NTc0OGYyOWJiMDAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAKIGNsYXNzIE15
UGFpbnQgewogICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnaGVpZ2h0
JywgJy0tbXktcHJvcCcsICctLW15LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVyLXNwZWNpZmll
ZCJdOyB9CiAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbJyonLCAnKics
ICcqJ107IH0KKworICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9IDQyOyB9CisK
KyAgdGVzdFRoaXMoKSB7IHJldHVybiB0aGlzLm15QXR0cmlidXRlOyB9CisKICAgcGFpbnQoY3R4
LCBnZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVz
LmdldCgnaGVpZ2h0JykudG9TdHJpbmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsKICAgICBhc3Nl
cnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsKQEAgLTMwLDYg
KzM1LDggQEAgY2xhc3MgTXlQYWludCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdl
dCgnd2lkdGgnKSwgbnVsbCk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnLS1u
ZXZlci1zcGVjaWZpZWQnKS50b1N0cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRfZXF1YWxzKHRo
aXMudGVzdFRoaXMoKSwgNDIpOworCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspewog
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewogICAgICAgICBjdHguZmlsbFN0eWxl
ID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFr
cy1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2RiZGYyZTM0MDgz
MGVjYjU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NU
WVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRp
bmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3Rp
biBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkb24ndCBs
ZWFrIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRp
bmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAgYmFj
a2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBo
ZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWludCI+PC9kaXY+
CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citjb25zdCBnbG9iYWxT
Y29wZSA9IHRoaXM7CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0
aWVzLCBhcmdzKSB7CisgICAgY29uc3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8gTGVhayEKKyAg
ICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53
aWR0aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFrID0gdGhpczsK
K3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlw
dD4KK0NTUy5wYWludFdvcmtsZXQuYWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWst
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4NGU3YWNjNTJj
NTFhMWNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355019</attachid>
            <date>2018-11-15 20:38:40 -0800</date>
            <delta_ts>2018-11-16 13:48:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181115203837.patch</filename>
            <type>text/plain</type>
            <size>77953</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5hMmVkZTcxZWUyZDM5OTM1
MmYzZjEwMzAwMDIwZDVlNDlmZTNlNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0xNSAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIG9sZCAueGNm
aWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMmIyOGE0YjFmNWNmOTVjOGZjMjJiNDdlMDdl
NDVhMmYwZDU3NTYuLmI0NzhhYzBlNWUyZjE0NGZmNDQ1NTBhOTY2YmQ3YmFjOTMxOTMxM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNTQgQEAKKzIwMTgtMTEtMTUgIEp1c3RpbiBNaWNoYXVkICA8
anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkgc2hv
dWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFpbnQg
d2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluc3RhbnRpYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwYWludCBj
bGFzcywgYW5kIHBhc3MgaXQgYXMgJ3RoaXMnIG9iamVjdCB3aGVuIHRoZSBwYWludCBjYWxsYmFj
ayBpcyBjYWxsZWQuIAorICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBj
dXN0b20gcGFpbnQgZWxlbWVudHMgZ2V0IHJlcGFpbnRlZCB3aGVuIHByb3BlcnRpZXMgdGhhdCB0
aGV5IGNhcmUgYWJvdXQgZ2V0IGNoYW5nZWQuCisgICAgICAgIEZpbmFsbHksIHdlIGZpeCB0d28g
cmVmZXJlbmNlIGN5Y2xlcyB0aGF0IGNhdXNlZCBXb3JrbGV0R2xvYmFsU2NvcGUgdG8gbmV2ZXIg
YmUgZGVzdHJveWVkLgorCisgICAgICAgIFRoaXMgY2xhc3MgYWRkcyBhIG5ldyBtZW1iZXIgdG8g
UmVuZGVyU3R5bGUuIFRvIHN0b3AgdGhpcyBmcm9tIGluY3JlYXNpbmcgdGhlIHNpemUgb2YgUmVu
ZGVyU3R5bGUsIHRoaXMgcGF0Y2ggdXNlcyAjcHJhZ21hIHBhY2sKKyAgICAgICAgdG8gcGFjayBS
ZW5kZXJTdHlsZSwgc2hyaW5raW5nIGl0IGZyb20gODggYnl0ZXMgdG8gODYuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbAorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY1N0YXRlRnJvbVdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5pZGw6CisgICAgICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojp2bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpDdXN0b21QYWlu
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V1RGTW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGVmYXVsdFN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25lUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRp
bmdGcm9tUHNldWRvU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OlJlbmRlclN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojp+UmVuZGVyU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnJlcGxhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRTZWxmQWxpZ25t
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFs
aWduSXRlbXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnJlc29sdmVkQWxpZ25TZWxmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpyZXNvbHZlZEp1c3RpZnlJdGVtcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5U2VsZiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZENvbnRlbnRBbGlnbm1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlc29sdmVkQWxpZ25Db250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEp1
c3RpZnlDb250ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVk
Q29udGVudEFsaWdubWVudFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVkQ29udGVudEFsaWdubWVudERpc3RyaWJ1dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZWRKdXN0aWZ5Q29udGVudFBvc2l0aW9uIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEp1c3Rp
ZnlDb250ZW50RGlzdHJpYnV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudFBvc2l0aW9uIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpyZXNvbHZlZEFsaWduQ29udGVudERp
c3RyaWJ1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5oZXJpdEZyb20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNvcHlOb25Jbmhlcml0ZWRGcm9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpjb3B5Q29udGVudEZyb20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hl
ZFBzZXVkb1N0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bmhlcml0ZWROb3RFcXVhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlRm9udEhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhh
c2hGb3JUZXh0QXV0b3NpemluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZXF1YWxGb3JUZXh0QXV0b3NpemluZyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5oZXJpdGVkRGF0YVNoYXJlZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkNoYW5nZUlzTW92ZW1lbnRPbmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlz
dWFsT3ZlcmZsb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFyZU5vbklu
aGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc0xheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyYXJlSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5b3V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQ
b3NpdGlvbmVkTGF5b3V0T25seSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpy
YXJlTm9uSW5oZXJpdGVkRGF0YUNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWlu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc1BhaW50aW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhcmVOb25Jbmhlcml0ZWREYXRhQ2hhbmdlUmVx
dWlyZXNSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhcmVJbmhlcml0ZWRE
YXRhQ2hhbmdlUmVxdWlyZXNSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9y
ZGVyT3JPdXRsaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmZSZXF1aXJlc0xheWVyUmVwYWludCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q2xpcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRRdW90ZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFdpbGxDaGFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xlYXJDb250ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Omxhc3RDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRDb250ZW50QWx0VGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y29udGVudEFsdFRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEhhc0F0dHJDb250ZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRQYWdlU2NhbGVUcmFuc2Zvcm0pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRTaGFkb3cpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RTdHlsZUltYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3IgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVy
U3BhY2luZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmVydGljYWxCb3JkZXJTcGFjaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9y
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxs
TGF5ZXJzQXJlRml4ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
Omhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lz
TWFya1N0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphZGp1c3RBbmltYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRyYW5zaXRpb25Gb3JQcm9wZXJ0eSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Zm9udENhc2Nh
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRN
ZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpm
b250RGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNwZWNpZmllZEZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRQaXhlbFNpemUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250
RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNw
ZWNpZmllZExpbmVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OnNldFNwZWNpZmllZExpbmVIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExldHRlclNwYWNpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250VmFyaWF0aW9uU2V0dGlu
Z3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRXZWln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRTdHJl
dGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250SXRh
bGljKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dF
eHRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omdl
dFNoYWRvd0luc2V0RXh0ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRp
bmdGYWxsYmFjayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yQnlBcHBs
eWluZ0NvbG9yRmlsdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpib3JkZXJCZWZvcmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmJvcmRlckFmdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpib3JkZXJTdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyRW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpib3JkZXJCZWZvcmVXaWR0aCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyQWZ0ZXJXaWR0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyU3RhcnRXaWR0
aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVy
RW5kV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldE1hcmdpblN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRNYXJnaW5FbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnRleHRFbXBoYXNpc01hcmsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VPdXRzZXRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpmb250QW5kR2x5cGhPcmllbnRhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdl
U2xpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJJbWFnZVdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRCb3JkZXJJbWFnZU91dHNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZ2luYXRpb25Nb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwQWxpZ24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFNuYXBBcmVh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzY3JvbGxT
bmFwUG9ydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2Nyb2xsU25hcFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNjcm9sbFBhZGRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdUb3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdCb3R0b20gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNjcm9sbFBhZGRpbmdMZWZ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzY3JvbGxQYWRkaW5n
UmlnaHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2Nyb2xsU25hcE1hcmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpblRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdpbkJvdHRvbSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2Nyb2xsU25hcE1hcmdp
bkxlZnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNj
cm9sbFNuYXBNYXJnaW5SaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdUb3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdCb3R0b20pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdMZWZ0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5nUmln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNu
YXBBbGlnbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Ny
b2xsU25hcE1hcmdpblRvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcE1hcmdpbkxlZnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBNYXJnaW5SaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25s
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpv
dXRsaW5lT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREYXNoYm9hcmRSZWdpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQ
YWludE9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21w
dXRlZFN0cm9rZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpoYXNQb3NpdGl2ZVN0cm9rZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlZFN0cm9rZUNvbG9yIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzQW55
V29ya2xldEdsb2JhbFNjb3BlQWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50RGVm
aW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xv
YmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjph
bGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xv
YmFsU2NvcGU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNj
b3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zYWJsZURvY3VtZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldv
cmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKwogMjAxOC0xMS0xNSAgSmlld2VuIFRh
biAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlh
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBzaG91bGQgYmUgb3B0aW9uYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCAwOTdjZjQ4ODFmNDZl
N2U5ZmIwN2RkMWZiMjcwZGJiMWE0ZTJlYjA2Li41OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNjMWFk
MjU5M2Y5MzEwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKIH07CiAK
IC8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIENh
bGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlbS4KLUpT
T2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29u
c3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9y
LCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpT
VmFsdWUgbmV3VGFyZ2V0KTsKIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5j
cHAKaW5kZXggODlhMzA4MGRhOGI1MzM3ZGEwMTljZWU2YTEzNWVjNzVjYTM4OWM0MC4uNzk0YTUz
ODFiNzdlNDhkNjJjNTRkMzcyNGVjOGI3YWI4NWZmYjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpT
RE9NT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCBhOGNlYWU2MGJh
NzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmLi4wMTE4NGE4NDYyNzYwODc4YzAwZTgzMGJm
ODFmY2EwZGM0OWFlYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMzQsOCAr
MzQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRpb25M
b2NrKCkpOwotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmlu
aXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFwcGVk
KCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0ZXJlZC0+
cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOworICAgIH0K
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZmI1YTc1NTY4MmQxNjE0NmE1Yjg5MmI5Yzc1ZTdh
MzU2MTZhN2M2MS4uN2NkODBlNzQxNTdmZmFjZmRhZWQwYzY0ZWE5OWJjZTQ0MmM4ODZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC0xMjgsNyArMTI4LDggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG8K
IAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEds
b2JhbFNjb3BlKQogewotICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBBU1NFUlQod29y
a2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHdv
cmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigpOwog
ICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyLT5w
cm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCmlu
ZGV4IDM3YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEuLmU5ODQxMGJlZWUz
N2VhZWMyMjMyMGZmNGE4YzZiODIzM2JhNjM0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTEwNiw3ICsxMDYsOSBAQCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTYwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrbGV0
R2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS53
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoIXdvcmts
ZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
cigpLT5nbG9iYWxFeGVjKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENh
bGxiYWNrLmgKaW5kZXggNzU2NTYzYzNiYWQ2OTU5MmM0NDkyOTcxZDIzOWUwZjhkYWRjMTE1Yy4u
MGMwM2YwYWZiZDcxMjQ0OWVkZDA3MTM2ZDY1MzU3N2FlZDc0ZGY2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oCkBAIC0zMSwxNiArMzEsMTggQEAKICNpbmNsdWRlICJDU1NQ
YWludFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0eWxl
UHJvcGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFs
dWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
OwogCi1jbGFzcyBDU1NQYWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRD
YWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBDU1NQYWludENhbGxi
YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1
YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7CiAK
LSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVuZGVy
aW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2
b2lkPiBoYW5kbGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEJiwg
Q1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZiNTFkNDEyM2Vj
MjI2MjVlMzFjYzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2MWVlYzljMjBi
MzE0NDZkZDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbApAQCAt
MjYsNCArMjYsNSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCiAg
ICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1RoaXNPYmplY3Q9
YW55CiBdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJlbmRlcmluZ0Nv
bnRleHQyRCBjb250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRP
bmx5IHN0eWxlTWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4YzMzY2JhMzY3
OGQyNmVkMjA2MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1YmIwNTM5MzJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAtNDAsNiArNDAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1BhaW50SW1hZ2VW
YWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9uYW1l
ID09IG90aGVyLm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4
IGM3YWIzYmJhMDVmYjkwNmQ3YmNhMTUwMTE1MzgzNmJhNDZiMzQ2NDEuLjZhMWNlNDlkMGM0MDc5
Zjk5MGFiMGY5OThiZTY1NTcyNTI2ZTAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5oIgor
I2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgog
I2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1
YXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxl
Q29sbGVjdG9yLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE3MTcsNiArMTcxOSwxOCBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBB
cHBseUNhc2NhZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRl
ZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUlu
aGVyaXRlZFByb3BlcnRpZXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorICAg
IGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpICYmIGRvY3VtZW50KCku
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1hcCIgZnJvbSB0aGUgc3Bl
Yywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgcGFpbnRXb3JrbGV0ID0g
KmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25N
YXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KS5uYW1l
KCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9uLT5p
bnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+YWRkQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CiAgICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0eWxlQnVpbGRl
cjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlzSW5pdGlhbCwgaXNJ
bmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggMzVlNzEyYTIxZmJlNmViYzBkYmVjNzdjMTFiNmI0NTg1YWYwZTZiOC4uNzE2NzAy
OWNmMDlmMGVjOWQ4YzE3MjQwYmE0ZDI0ZjgwMTc3NjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0yNTQxLDYgKzI1NDEsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIGlmIChtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1fcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAgICBtX3BhaW50
V29ya2xldEdsb2JhbFNjb3BlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIG1faGFz
UHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICAvLyBOb3RlIHRoYXQgbV9wYWdl
Q2FjaGVTdGF0ZSBjYW4gYmUgRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSBpZiBvdXIg
ZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBkOGY2MGUyOWQzOWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5Li45YmE0ODE5ZGY3
NTE5MmYyZjg0YzY0YWUxZjczYzQzODJlZDJiM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgSlNDOjpWTSYg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAg
ICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS52
bSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcyku
c2NyaXB0KCktPnZtKCk7CiAjZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21Q
YWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuY3BwCmluZGV4IDQzOTYyYzUyNmNiY2VlY2JiMGQ1ODI1MDhkMDJkODUzODZhNDBh
NTguLjAzNGRhNTYxZmU2YjI4MjI0NWM4MzA5MWFjM2RlMWUyODdmNzgzM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
CkBAIC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zdHJ1Y3REYXRhLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShjb25z
dCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5pdGlvbi5w
YWludENhbGxiYWNrLmdldCgpKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBtX3BhaW50RGVmaW5pdGlvbihtYWtlV2Vha1B0cihk
ZWZpbml0aW9uKSkKICAgICAsIG1faW5wdXRQcm9wZXJ0aWVzKGRlZmluaXRpb24uaW5wdXRQcm9w
ZXJ0aWVzKQogICAgICwgbV9lbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogICAgICwgbV9h
cmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNTYsMTMgKzU3LDIwIEBAIEN1c3RvbVBhaW50SW1hZ2U6
On5DdXN0b21QYWludEltYWdlKCkgPSBkZWZhdWx0OwogCiBJbWFnZURyYXdSZXN1bHQgQ3VzdG9t
UGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFNpemUmIGRlc3RTaXplKQogewotICAgIGlmICghbV9lbGVtZW50IHx8ICFtX2Vs
ZW1lbnQtPmVsZW1lbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5lbGVt
ZW50KCkgfHwgIW1fcGFpbnREZWZpbml0aW9uKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWROb3RoaW5nOwogCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29uc3RydWN0b3IobV9w
YWludERlZmluaXRpb24tPnBhaW50Q29uc3RydWN0b3IpOworCisgICAgaWYgKCFwYWludENvbnN0
cnVjdG9yKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworCisg
ICAgYXV0byYgcGFpbnRDYWxsYmFjayA9IG1fcGFpbnREZWZpbml0aW9uLT5wYWludENhbGxiYWNr
LmdldCgpOworCiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPm5lZWRzTGF5b3V0KCkpOwogICAgIEFT
U0VSVCghbV9lbGVtZW50LT5lbGVtZW50KCktPmRvY3VtZW50KCkubmVlZHNTdHlsZVJlY2FsYygp
KTsKIAotICAgIEpTQ1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NT
U1BhaW50Q2FsbGJhY2smPihtX3BhaW50Q2FsbGJhY2suZ2V0KCkpOworICAgIEpTQ1NTUGFpbnRD
YWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NTU1BhaW50Q2FsbGJhY2smPihwYWlu
dENhbGxiYWNrKTsKICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJhY2su
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTEwMyw3
ICsxMTEsMjEgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvIHNpemUgPSBDU1NQ
YWludFNpemU6OmNyZWF0ZShkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7CiAg
ICAgYXV0byBwcm9wZXJ0eU1hcCA9IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6Y3JlYXRlKFdU
Rk1vdmUocHJvcGVydHlWYWx1ZXMpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENhbGxi
YWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1lbnRz
KTsKKyAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT52bSgpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcGFpbnRDb25zdHJ1
Y3Rvci5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9ICpn
bG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOworICAgIEpTQzo6QXJnTGlzdCBub0FyZ3M7CisgICAg
SlNDOjpKU1ZhbHVlIHRoaXNPYmplY3QgPSB7IEpTQzo6Y29uc3RydWN0KCZzdGF0ZSwgV1RGTW92
ZShwYWludENvbnN0cnVjdG9yKSwgbm9BcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBwYWludCBj
bGFzcyIpIH07CisKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKKyAgICB9CisKKyAgICBhdXRvIHJl
c3VsdCA9IHBhaW50Q2FsbGJhY2suaGFuZGxlRXZlbnQoV1RGTW92ZSh0aGlzT2JqZWN0KSwgKmNv
bnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CiAgICAgaWYgKHJlc3VsdC50
eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggZDMwNjc5Mzk3NzIwMGNjZGJj
ZGM5ZTIzYjc2YzUzMDc4MjJjZjc2Ni4uNjhiNDBjOTllY2FiM2E1ZTNlMGM5MmIyYjAxM2Q3ODY1
MWE3MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiR2VuZXJhdGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vh
ay5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM4LDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgQ3VzdG9tUGFpbnRJ
bWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQor
ICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1hZ2Uo
ZGVmaW5pdGlvbiwgc2l6ZSwgZWxlbWVudCwgYXJndW1lbnRzKSk7CiAgICAgfQpAQCAtNDcsMTQg
KzQ5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludEltYWdl
KGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50
cyk7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRE
ZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9tUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOwogICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCi0gICAgUmVmPENTU1Bh
aW50Q2FsbGJhY2s+IG1fcGFpbnRDYWxsYmFjazsKKyAgICBXZWFrUHRyPFBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVyRWxlbWVudD4g
bV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggN2JhMTA5MTU1Mjk5
ZDc2M2QxOTkxNWZiZGJiNmQwMzViYjhhZDdmYS4uMDM2NTdhYWViMDJhN2U5ZTI4MjUzZGJkMDFj
ZDM5OTQ5ZGM2OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNpbmNs
dWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVkZSAi
Q29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC04Miw3ICs4NCwxMyBA
QCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIHsKICNlbmRpZgogfTsKIAotc3RhdGljX2Fz
c2VydChzaXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5bGUp
LCAiUmVuZGVyU3R5bGUgc2hvdWxkIHN0YXkgc21hbGwiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KFJlbmRlclN0eWxlKSA8PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgIlJlbmRlclN0
eWxlIHNob3VsZCBzdGF5IHNtYWxsIik7CisKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRlclN0
eWxlKiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+JiBjdXN0b21QYWludFdhdGNo
ZWRQcm9wZXJ0aWVzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxj
b25zdCBSZW5kZXJTdHlsZSosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+Pj4gbWFw
OworICAgIHJldHVybiBtYXA7Cit9CiAKIFJlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6ZGVmYXVs
dFN0eWxlKCkKIHsKQEAgLTEyOCw4ICsxMzYsNjIgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6
OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYK
ICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJT
dHlsZSYmKSA9IGRlZmF1bHQ7Ci1SZW5kZXJTdHlsZSYgUmVuZGVyU3R5bGU6Om9wZXJhdG9yPShS
ZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CitSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVuZGVy
U3R5bGUmJiBvdGhlcikKKyAgICA6IG1fYm94RGF0YShXVEZNb3ZlKG90aGVyLm1fYm94RGF0YSkp
CisgICAgLCBtX3Zpc3VhbERhdGEoV1RGTW92ZShvdGhlci5tX3Zpc3VhbERhdGEpKQorICAgICwg
bV9iYWNrZ3JvdW5kRGF0YShXVEZNb3ZlKG90aGVyLm1fYmFja2dyb3VuZERhdGEpKQorICAgICwg
bV9zdXJyb3VuZERhdGEoV1RGTW92ZShvdGhlci5tX3N1cnJvdW5kRGF0YSkpCisgICAgLCBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhKFdURk1vdmUob3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YSkp
CisgICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKFdURk1vdmUob3RoZXIubV9ub25Jbmhlcml0ZWRG
bGFncykpCisgICAgLCBtX3JhcmVJbmhlcml0ZWREYXRhKFdURk1vdmUob3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YSkpCisgICAgLCBtX2luaGVyaXRlZERhdGEoV1RGTW92ZShvdGhlci5tX2luaGVy
aXRlZERhdGEpKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhXVEZNb3ZlKG90aGVyLm1faW5oZXJp
dGVkRmxhZ3MpKQorICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoV1RGTW92ZShvdGhlci5tX2Nh
Y2hlZFBzZXVkb1N0eWxlcykpCisgICAgLCBtX3N2Z1N0eWxlKFdURk1vdmUob3RoZXIubV9zdmdT
dHlsZSkpCit7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG90aGVyLm1f
aGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21QYWlu
dFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNl
dDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuZ2V0
KCZvdGhlcikpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaXNOZXcsIGlzTmV3KTsKKyAgICAg
ICAgb3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgICAg
ICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZvdGhlcik7CisgICAg
fQorI2VuZGlmCit9CisKK1JlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KFJlbmRl
clN0eWxlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgbV9ib3hEYXRhID0gV1RGTW92ZShvdGhlci5tX2JveERhdGEpOworICAg
IG1fdmlzdWFsRGF0YSA9IFdURk1vdmUob3RoZXIubV92aXN1YWxEYXRhKTsKKyAgICBtX2JhY2tn
cm91bmREYXRhID0gV1RGTW92ZShvdGhlci5tX2JhY2tncm91bmREYXRhKTsKKyAgICBtX3N1cnJv
dW5kRGF0YSA9IFdURk1vdmUob3RoZXIubV9zdXJyb3VuZERhdGEpOworICAgIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEpOworICAg
IG1fbm9uSW5oZXJpdGVkRmxhZ3MgPSBXVEZNb3ZlKG90aGVyLm1fbm9uSW5oZXJpdGVkRmxhZ3Mp
OworICAgIG1fcmFyZUluaGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fcmFyZUluaGVyaXRl
ZERhdGEpOworICAgIG1faW5oZXJpdGVkRGF0YSA9IFdURk1vdmUob3RoZXIubV9pbmhlcml0ZWRE
YXRhKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gV1RGTW92ZShvdGhlci5tX2luaGVyaXRlZEZs
YWdzKTsKKyAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IFdURk1vdmUob3RoZXIubV9jYWNoZWRQ
c2V1ZG9TdHlsZXMpOworICAgIG1fc3ZnU3R5bGUgPSBXVEZNb3ZlKG90aGVyLm1fc3ZnU3R5bGUp
OworCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG1faGFzQ3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVy
dGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCku
cmVtb3ZlKHRoaXMpOworICAgIH0KKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNo
UHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0g
dHJ1ZTsKKyAgICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNN
YXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1vdmUo
KmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpKTsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcpOworICAgICAgICBvdGhlci5tX2hhc0N1c3Rv
bVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUoJm90aGVyKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJl
dHVybiAqdGhpczsKK30KIAogUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRT
dHlsZVRhZykKICAgICA6IG1fYm94RGF0YShTdHlsZUJveERhdGE6OmNyZWF0ZSgpKQpAQCAtMjA2
LDYgKzI2OCwxMyBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCiAgICAgLCBtX2luaGVyaXRlZEZsYWdzKG90aGVyLm1f
aW5oZXJpdGVkRmxhZ3MpCiAgICAgLCBtX3N2Z1N0eWxlKG90aGVyLm1fc3ZnU3R5bGUpCiB7Cisj
aWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG90aGVyLm1faGFzQ3VzdG9tUGFp
bnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVy
dGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+Pigq
Y3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpKSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoaXNOZXcsIGlzTmV3KTsKKyAgICB9CisjZW5kaWYKIH0KIAogaW5saW5l
IFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgYSwgUmVuZGVyU3R5bGUmJiBi
KQpAQCAtMjIxLDYgKzI5MCwyMiBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJl
bmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCiAgICAgLCBtX2NhY2hlZFBzZXVkb1N0eWxl
cyhzdGQ6OmV4Y2hhbmdlKGEubV9jYWNoZWRQc2V1ZG9TdHlsZXMsIFdURk1vdmUoYi5tX2NhY2hl
ZFBzZXVkb1N0eWxlcykpKQogICAgICwgbV9zdmdTdHlsZShhLm1fc3ZnU3R5bGUucmVwbGFjZShX
VEZNb3ZlKGIubV9zdmdTdHlsZSkpKQogeworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIGlmIChhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9o
YXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcg
PSBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91
bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0
aWVzTWFwKCkuZ2V0KCZhKSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcp
OworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsKKyAg
ICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYSk7CisgICAg
fQorICAgIGlmIChiLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAg
YS5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBp
c05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQoJmEsIHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuZ2V0KCZiKSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNO
ZXcpOworICAgICAgICBiLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsK
KyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYik7Cisg
ICAgfQorI2VuZGlmCiB9CiAKIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQpAQCAtMjI5LDYg
KzMxNCwxMCBAQCBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICBtX2RlbGV0aW9u
SGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisg
ICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgIGN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUodGhpcyk7CisjZW5kaWYKIH0KIAogUmVu
ZGVyU3R5bGUgUmVuZGVyU3R5bGU6OnJlcGxhY2UoUmVuZGVyU3R5bGUmJiBuZXdTdHlsZSkKQEAg
LTM2Miw2ICs0NTEsMTEgQEAgYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5k
ZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERhdGEg
PT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YQogICAgICAgICAmJiBtX3JhcmVJbmhlcml0
ZWREYXRhID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9pbmhlcml0
ZWREYXRhID09IG90aGVyLm1faW5oZXJpdGVkRGF0YQorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorICAgICAgICAmJiAoKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzICYmICFv
dGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKQorICAgICAgICAgICAgfHwgKG1f
aGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgJiYgb3RoZXIubV9oYXNDdXN0b21QYWludFdh
dGNoUHJvcGVydGllcworICAgICAgICAgICAgICAgICYmICpjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpID09ICpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFw
KCkuZ2V0KCZvdGhlcikpKQorI2VuZGlmCiAgICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gb3RoZXIu
bV9zdmdTdHlsZTsKIH0KIApAQCAtOTYyLDYgKzEwNTYsMTggQEAgc3RhdGljIGJvb2wgcmFyZUlu
aGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YSYKICAgICA7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK3ZvaWQgUmVu
ZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgaWYgKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAgICAg
IG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIGlz
TmV3ID0gY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaXNO
ZXcsIGlzTmV3KTsKKyAgICB9CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgp
LmdldCh0aGlzKS0+YWRkKG5hbWUpOworfQorI2VuZGlmCisKIGJvb2wgUmVuZGVyU3R5bGU6OmNo
YW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNldDxT
dHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk+JiBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXF1aXJlc1BhaW50aW5nKCp0
aGlzKSAmJiAhcmVxdWlyZXNQYWludGluZyhvdGhlcikpCkBAIC05ODMsNiArMTA4OSw0MiBAQCBi
b29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyLCBPcHRpb25TZXQ8U3R5bAogICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YUNoYW5n
ZVJlcXVpcmVzUmVwYWludCgqbV9yYXJlSW5oZXJpdGVkRGF0YSwgKm90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgIGlmIChVTkxJS0VMWShtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVz
IHx8IG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpKSB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIENvbXB1dGVkU3R5bGVFeHRyYWN0b3Ig
aGVyZS4KKyAgICAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBleHRyYWN0b3IoKEVsZW1lbnQq
KSBudWxscHRyKTsKKworICAgICAgICBmb3IgKGF1dG8qIHdhdGNoUHJvcGVydGllc01hcCA6IHsg
Y3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCh0aGlzKSwgY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpIH0pIHsKKyAgICAgICAgICAgIGlmICgh
d2F0Y2hQcm9wZXJ0aWVzTWFwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZUI7CisgICAgICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1l
KG5hbWUpICYmIGdldEN1c3RvbVByb3BlcnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVByb3Bl
cnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU6OmNyZWF0ZSgqZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAgICAg
ICAgICAgICB2YWx1ZUIgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVyLmdl
dEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0cmFj
dG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWVCID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKG90
aGVyLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBp
ZiAoKHZhbHVlQSAmJiAhdmFsdWVCKSB8fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICghdmFsdWVBKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghKCp2
YWx1ZUEgPT0gKnZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggM2FjYjFjOWE4Mjc2NDU4NDkzYTJlMjcxMzIwZmM3NzMwMzZlMmIwZS4uYTg3YzdmMjcwMTZm
NjEzYTIwZTQ2MTgxZjdiOWRkNGNhNjFhNzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB1c2luZyBQc2V1ZG9T
dHlsZUNhY2hlID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIDQ+OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwo
Y29uc3QgVCYgdCwgY29uc3QgVSYgdSkgeyByZXR1cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25zdCBU
Jj4odSk7IH0KIAorI3ByYWdtYSBwYWNrKHB1c2gsIDEpCiBjbGFzcyBSZW5kZXJTdHlsZSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5
cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5cGUs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENT
U19QQUlOVElOR19BUEkpCisgICAgdm9pZCBhZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkoY29u
c3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgcGFpbnQtb3Jk
ZXIsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGluZWpvaW4sIGFuZCBzdHJva2UtbWl0ZXJsaW1p
dCBmcm9tIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL3BhaW50Ly4KICAgICB2b2lkIHNldFBhaW50
T3JkZXIoUGFpbnRPcmRlciBvcmRlcikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHBh
aW50T3JkZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcikpOyB9CiAgICAgUGFpbnRPcmRl
ciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFpbnRPcmRlcj4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+cGFpbnRPcmRlcik7IH0KQEAgLTE4ODAsNiArMTg4NSwxMCBAQCBw
cml2YXRlOgogICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBtX2luaGVyaXRlZERhdGE7
CiAgICAgSW5oZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsKIAorI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorICAgIGJvb2wgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyB7
IGZhbHNlIH07CisjZW5kaWYKKwogICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1ZG8gc3R5
bGVzCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNldWRv
U3R5bGVzOwogCkBAIC0xODg5LDYgKzE4OTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kZWxl
dGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKKyNwcmFnbWEgcGFjayhwb3ApCiAK
IGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50LCBjb25zdCBSZW5kZXJTdHlsZSYpOwogZmxv
YXQgYWRqdXN0RmxvYXRGb3JBYnNvbHV0ZVpvb20oZmxvYXQsIGNvbnN0IFJlbmRlclN0eWxlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYjg4NDNhNmQzYjJhNzNhMzg4
ZTcwY2ZjYzZjNjA2MzYzY2QyNTFjMS4uOTc0M2EyNGNmNDFkYjFhNTk3MWVkZDMwZmYwMzBjNjNj
YTgzZDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTcyLDYgKzE3
Miw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldpbmRv
d1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlhN
TEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CkBA
IC0yMzc1LDYgKzIzNzYsMTUgQEAgYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSh1aW50
NjRfdCBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0CiAgICAgcmV0dXJuIERvY3VtZW50OjphbGxE
b2N1bWVudHNNYXAoKS5jb250YWlucyhtYWtlT2JqZWN0SWRlbnRpZmllcjxEb2N1bWVudElkZW50
aWZpZXJUeXBlPihkb2N1bWVudElkZW50aWZpZXIpKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omlz
QW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdAoreworI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQorICAgIHJldHVybiAhV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0R2xv
YmFsU2NvcGVzTWFwKCkuaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwogU3RyaW5nIEludGVybmFsczo6c2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDBkYWYwMzNjZDMzNGQ1NDRl
YzEzZDM3YzcxOGQ0ZjdiYTYxYmI1NjYuLjc4MjlmNjAwZTBhNzNkOWIyNGM3ODAzYTcyMjljY2Nh
ZTA1MmYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzg3LDYgKzM4Nyw4
IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1l
bnQmKSBjb25zdDsKICAgICBib29sIGlzRG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBkb2N1bWVudElk
ZW50aWZpZXIpIGNvbnN0OwogCisgICAgYm9vbCBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZl
KCkgY29uc3Q7CisKICAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoY29u
c3QgRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1bW15
SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGI2ZGQ3YjIyYTI2MTk5MGU5OWZlMjYxZWM1Njc3MmUxODc5ZmEw
ZTIuLjEzMTA3MzViYzVjNDM3ZDdhZGE5M2IyYjUyZjlhNzBiOGU4YmMyZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY3NCw2ICs2NzQsOCBAQCBlbnVtIENvbXBvc2l0
aW5nUG9saWN5IHsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKERv
Y3VtZW50IGRvY3VtZW50KTsKICAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZSh1bnNpZ25lZCBs
b25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKIAorICAgIGJvb2xlYW4gaXNBbnlXb3JrbGV0
R2xvYmFsU2NvcGVBbGl2ZSgpOworCiAgICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xlYXJD
YWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyOWEyMDBkMTBk
ZjNmZDZiN2FjZmJhOTc4OGVjMWM0YmE4YTBhNDMuLjNlM2Q5NTYxZjI2NjczYWY4NTYyOTVhODAy
YzdhMDQ2NmJkMDQ0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NT
U1BhaW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUwLDE1ICs1MSwyNSBAQCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyYwogCiBkb3VibGUgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogewotICAgIGlmICgh
cmVzcG9uc2FibGVEb2N1bWVudCgpIHx8ICFyZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdpbmRv
dygpKQorICAgIGlmICghcmVzcG9uc2libGVEb2N1bWVudCgpIHx8ICFyZXNwb25zaWJsZURvY3Vt
ZW50KCktPmRvbVdpbmRvdygpKQogICAgICAgICByZXR1cm4gMS4wOwotICAgIHJldHVybiByZXNw
b25zYWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7CisgICAg
cmV0dXJuIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0
aW8oKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6UGFp
bnREZWZpbml0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFp
bnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYgcGFpbnRDYWxsYmFjaywgVmVj
dG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1
bWVudHMpCisgICAgOiBuYW1lKG5hbWUpCisgICAgLCBwYWludENvbnN0cnVjdG9yKHBhaW50Q29u
c3RydWN0b3IpCisgICAgLCBwYWludENhbGxiYWNrKFdURk1vdmUocGFpbnRDYWxsYmFjaykpCisg
ICAgLCBpbnB1dFByb3BlcnRpZXMoV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpKQorICAgICwgaW5w
dXRBcmd1bWVudHMoV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpCit7CiB9CiAKIC8vIGh0dHBzOi8v
ZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0b20t
cGFpbnQKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3Rl
clBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJvbmc8SlNPYmplY3Q+IHBhaW50Q29uc3RydWN0
b3IpCiB7CiAgICAgYXV0byYgdm0gPSAqcGFpbnRDb25zdHJ1Y3Rvci0+dm0oKTsKKyAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0b3IgaXMgYSBW
b2lkRnVuY3Rpb24KQEAgLTY5LDYyICs4MCw3MCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yLCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciIH07
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7Cisg
ICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2so
KSk7CiAKLSAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5h
bWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OworICAgICAgICBpZiAocGFpbnREZWZp
bml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4g
cmVnaXN0ZXJlZCIgfTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsKKyAg
ICAgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogCi0gICAgSlNWYWx1ZSBpbnB1
dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKKyAgICAgICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0gcGFp
bnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJp
bnB1dFByb3BlcnRpZXMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAoIWlucHV0UHJv
cGVydGllc0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRQcm9wZXJ0
aWVzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQcm9w
ZXJ0aWVzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgaWYgKCFpbnB1dFBy
b3BlcnRpZXNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICBpbnB1dFBy
b3BlcnRpZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1
dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIC8vIEZJ
WE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCisgICAgICAgIC8v
IEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gaW5w
dXRBcmd1bWVudHM7CiAKLSAgICBKU1ZhbHVlIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSA9
IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiaW5wdXRBcmd1bWVudHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBpbnB1
dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwogCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmlu
ZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERP
TVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7CisgICAgICAgIGlmICghaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVk
KCkpCisgICAgICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURM
RE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7CiAKLSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3VtZW50
cyBoZXJlIChzdGVwcyAxMSBhbmQgMTIpLgorICAgICAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4
IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVwcyAxMSBhbmQgMTIpLgogCi0gICAgSlNWYWx1
ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKyAgICAgICAgSlNWYWx1
ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwogCi0gICAg
Ly8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBoZXJl
IChzdGVwIDE0KS4KKyAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdD
b250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0KS4KIAotICAgIGlmICghcGFpbnRDb25zdHJ1
Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsKKyAg
ICAgICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKKyAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11
c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsKIAotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBw
YWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwYWludENv
bnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOwogCi0gICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVudCBt
dXN0IGhhdmUgYSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiIH07CisgICAgICAgIGlmICgh
cHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlwZSB0
aGF0IGlzIGFuIG9iamVjdCIgfTsKIAotICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3RvdHlw
ZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFpbnQiKSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFs
dWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKIAotICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEg
cGFpbnQgbWV0aG9kIiB9OworICAgICAgICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0
IGhhdmUgYSBwYWludCBtZXRob2QiIH07CiAKLSAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNr
PiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+
PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAg
ICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhp
c3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3Rk
Ojp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5hbWUs
IHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVudHMg
fSk7Ci0gICAgcGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZp
bml0aW9uKSk7CisgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJl
bGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFy
Z3VtZW50cykpOworICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92
ZShwYWludERlZmluaXRpb24pKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGZvciB0aGUgY2Fz
ZSB3aGVuIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIHRoZSBwYWludCBkZWZpbml0aW9uIG1hcCwg
YW5kIHRoZSBHQyBpcyBjdXJyZW50bHkgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZC4KKyAgICB2
bS5oZWFwLndyaXRlQmFycmllcigmZ2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIEZJWE1FOiBjb25z
dHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KIAorICAgIGlmIChyZXNwb25zaWJs
ZURvY3VtZW50KCkgJiYgcmVzcG9uc2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAg
ICAgIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZXBhaW50Um9vdENvbnRl
bnRzKCk7CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAyMzI3MWYxNTQyOTE0Yjg1YjRi
MjVmNzkxOTJlYTRjZWNjYThhNTUwLi5mOThlNTc3ZTNkNDlhMTM5NDA2MTYzN2NkZDEyMjUyZDVi
YmZhYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTU1BhaW50Q2FsbGJh
Y2suaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ1LDggKzQ2LDEyIEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiByZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBhaW50
Q29uc3RydWN0b3IpOwogICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAKLSAg
ICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKKyAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBQYWludERl
ZmluaXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENv
bnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1
dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpOworCiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAgICAvLyBUaGlzIG1hcCBtdXN0IGJlIGNs
ZWFyZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQhCisgICAgICAgIEpTQzo6SlNPYmplY3Qq
IHBhaW50Q29uc3RydWN0b3IgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IFJlZjxDU1NQYWlu
dENhbGxiYWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBp
bnB1dFByb3BlcnRpZXM7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJndW1l
bnRzOwpAQCAtNTUsOSArNjAsMjYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6
OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsgQVNT
RVJUKG1fcGFpbnREZWZpbml0aW9uTG9jay5pc0xvY2tlZCgpKTsgcmV0dXJuIG1fcGFpbnREZWZp
bml0aW9uTWFwOyB9CiAgICAgTG9jayYgcGFpbnREZWZpbml0aW9uTG9jaygpIHsgcmV0dXJuIG1f
cGFpbnREZWZpbml0aW9uTG9jazsgfQogCisgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24o
KSBmaW5hbAorICAgIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgcGFpbnREZWZpbml0aW9u
TWFwKCkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBXb3JrbGV0R2xvYmFsU2NvcGU6OnBy
ZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBQYWludFdvcmts
ZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAKKyAgICB+UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAg
ICAgQVNTRVJUKHBhaW50RGVmaW5pdGlvbk1hcCgpLmlzRW1wdHkoKSk7CisjZW5kaWYKKyAgICB9
CisKICAgICBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBhaW50
RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYTBkMzAwOWRhOTNhYzQzYjE2ZTBk
ZDQwZDA0Y2Y4MmUwMGIyNDBiNS4uYTBhY2M3MjNjYzU3OTVhMjMwYzVjN2NlMzM1MGNhYWYwNmRm
NjUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5o
PgogCkBAIC00OSwxMiArNDgsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdvcmts
ZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2Ny
aXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3Vt
ZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwg
bV9zY3JpcHQobWFrZVVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisg
ICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0
aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkK
LSAgICAsIG1faWRlbnRpZmllcihtYWtlU3RyaW5nKCJXb3JrbGV0R2xvYmFsU2NvcGU6Il9zLCBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKSkKICAgICAs
IG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQorICAgICwg
bV9pZGVudGlmaWVyKGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxXb3JrbGV0R2xvYmFsU2NvcGVJ
ZGVudGlmaWVyVHlwZT4oKSkKIHsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGFsbFdvcmtsZXRHbG9i
YWxTY29wZXNNYXAoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworCiAgICAgYXV0byogZnJhbWUgPSBk
b2N1bWVudC5mcmFtZSgpOwogICAgIG1fanNSdW50aW1lRmxhZ3MgPSBmcmFtZSA/IGZyYW1lLT5z
ZXR0aW5ncygpLmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCk7
CiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CkBAIC02NSw4ICs2NywyNSBAQCBXb3JrbGV0
R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlw
dFNvdXJjZUNvZGUmJiBjbwogCiBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2Nv
cGUoKQogeworICAgIEFTU0VSVCghbV9zY3JpcHQpOwogICAgIHJlbW92ZUZyb21Db250ZXh0c01h
cCgpOwotICAgIG1fc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPnNldENvbnNv
bGVDbGllbnQobnVsbHB0cik7CisgICAgYWxsV29ya2xldEdsb2JhbFNjb3Blc01hcCgpLnJlbW92
ZShtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZv
ckRlc3RydWN0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9zY3JpcHQpOworICAgIHN0b3BBY3RpdmVE
T01PYmplY3RzKCk7CisgICAgcmVtb3ZlUmVqZWN0ZWRQcm9taXNlVHJhY2tlcigpOworICAgIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgbV9zY3JpcHQtPnZtKCkubm90aWZ5TmVlZFRl
cm1pbmF0aW9uKCk7CisgICAgbV9zY3JpcHQgPSBudWxscHRyOworfQorCithdXRvIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWxsV29ya2xldEdsb2JhbFNjb3Blc01hcCgpIC0+IFdvcmtsZXRHbG9iYWxT
Y29wZXNNYXAmCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmtsZXRHbG9iYWxTY29w
ZXNNYXA+IHNjb3BlczsKKyAgICByZXR1cm4gc2NvcGVzOwogfQogCiBTdHJpbmcgV29ya2xldEds
b2JhbFNjb3BlOjpvcmlnaW4oKSBjb25zdApAQCAtODgsNyArMTA3LDcgQEAgdm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2YWx1YXRlKCkKIAogYm9vbCBXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNF
eGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVj
dXRpb25Gb3JiaWRkZW4oKTsKKyAgICByZXR1cm4gIW1fc2NyaXB0IHx8IG1fc2NyaXB0LT5pc0V4
ZWN1dGlvbkZvcmJpZGRlbigpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMTAsMzAgKzEyOSwzMCBAQCBV
UkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3QKIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNr
KQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CiAgICAgbV9kb2N1bWVudC0+bG9n
RXhjZXB0aW9uVG9Db25zb2xlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIFdURk1vdmUoc3RhY2spKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPiYmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9k
b2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3Nh
Z2UpKTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50
eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBp
ZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
VGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2ln
bmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBp
ZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291
cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAg
bV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNrKSwgbnVsbHB0
ciwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IGYwMTU2NGQ4
NjdjMTBhYWNmOWNmMGMxZGY2OTA2NWNmZWYyZDc1YzYuLmM4MGE4YmE2ZTI1YTYzYWQ3ZTA3MjIx
MzZhYmUwYWE2YzUyOTAwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC0zOCwyOSArMzgsMzQgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFn
cy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKK2VudW0gV29ya2xldEdsb2JhbFNjb3Bl
SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGU+OworCiBj
bGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFs
U2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgewogcHVibGljOgotICAgIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAg
ICB2aXJ0dWFsIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKKworICAgIHVzaW5nIFdvcmtsZXRHbG9i
YWxTY29wZXNNYXAgPSBIYXNoTWFwPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIsIFdvcmts
ZXRHbG9iYWxTY29wZSo+OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXb3JrbGV0R2xvYmFs
U2NvcGVzTWFwJiBhbGxXb3JrbGV0R2xvYmFsU2NvcGVzTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwoKTsg
fQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgZXZh
bHVhdGUoKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpkZXJlZjsKIAotICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQoKSB7IHJl
dHVybiBtX3NjcmlwdC5nZXQoKTsgfQorICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3Jp
cHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogCiAgICAgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmluYWw7
CiAKQEAgLTc0LDExICs3OSwxMyBAQCBwdWJsaWM6CiAKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBq
c1J1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fanNSdW50aW1lRmxhZ3M7IH0KIAorICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKKwogcHJvdGVjdGVkOgogICAg
IFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAKLSAg
ICBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0
KCk7IH0KLSAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1
bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBEb2N1bWVudCog
cmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTExOCwxMCArMTI1
LDkgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogCiAgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgVW5pcXVlUmVmPFdvcmtsZXRTY3JpcHRD
b250cm9sbGVyPiBtX3NjcmlwdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldFNjcmlwdENv
bnRyb2xsZXI+IG1fc2NyaXB0OwogCiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdp
bjsKLSAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IGltcGxlbWVudGVkIHByb3Blcmx5LCBpdCBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTEzNgpAQCAt
MTI5LDYgKzEzNSw4IEBAIHByaXZhdGU6CiAKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX2pzUnVu
dGltZUZsYWdzOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgbV9jb2RlOworCisgICAgV29ya2xldEds
b2JhbFNjb3BlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggMDU1ZDdmMTE2OGVlYjVhY2YwNDJmZjE0YmZjOTljNzNkY2NiOGYz
Ny4uMTE2ODk3OGU0MjRkZjFjNDhlNDYxYzU4ODljNzhmY2RiYTA2N2I2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
NTksMTMgKzU5LDE1IEBAIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcihXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtsZXRHbG9iCiBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6fldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCkKIHsKICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSgpKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKLSAg
ICBtX3ZtID0gbnVsbHB0cjsKKyAgICBmb3JiaWRFeGVjdXRpb24oKTsKKwogICAgIGlmIChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpIHsKICAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5jbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CiAgICAgICAgIG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKICAgICAgICAgbV9jb25z
b2xlQ2xpZW50ID0gbnVsbHB0cjsKICAgICB9CisgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLmNsZWFyKCk7CisgICAgbV92bSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV29ya2xldFNjcmlw
dENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCkBAIC04Miw2ICs4NCw5IEBAIGJvb2wgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIAogdm9p
ZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiB7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
IHsgdm0oKSB9OwogCkBAIC05MCw2ICs5NSw5IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogCiB2b2lkIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiB7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
IHsgdm0oKSB9OwogCkBAIC0xMzIsNiArMTQwLDkgQEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQoKQogeworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoaXM8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KG1f
d29ya2xldEdsb2JhbFNjb3BlKSkgewogICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUsIFBhaW50V29ya2xldEdsb2JhbFNjb3BlPigpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MGVjOWI0NzBkOWRhZGFlZTdlMmRmYjQ5MmJiOTUwN2JkNDQ3NWNmMy4uYzVhOGU3ODU1YmM1MWU1
ZjE1ZDI0ODcwNjY5ZWI1ZTE2OWYwZjQzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTEx
LTE1ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBDU1MgUGFpbnRpbmcgQVBJIHNob3VsZCBwYXNzICd0aGlzJyBjb3JyZWN0bHkgdG8gcGFpbnQg
Y2FsbGJhY2ssIGFuZCByZXBhaW50IHdoZW4gcHJvcGVydGllcyBjaGFuZ2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0NDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWw6CisgICAg
ICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1s
ZWFrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTgtMTEtMTUgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aE5dIFVzZXJIYW5kbGUgY2FuIGJl
IG51bGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmlt
YXRlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5p
bWF0ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YWI4OGQ5MmQ0MjkwMGYwYTI4YzU1MGIz
ODgzMTc0MzcwOTIwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOwor
ICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8
Ym9keT4KKyAgPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDEwY2UzMjk2ZjVhNzBjMTcyZDUzYmJmYjdlNDM0NGQw
NDY1ZjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorKHJlcGFp
bnQgcmVjdHMKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCAxNTAgMTUwKQorICAo
cmVjdCA4IDggNzg0IDE1MCkKKyAgKHJlY3QgMCAwIDgwMCAxNjYpCisgIChyZWN0IDAgMCA4MDAg
NjAwKQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCisgIChyZWN0
IDggOCAxNTAgMTUwKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2EzMjZhNWEzZTNhMDU2
OWYxNTE1YWM4YjI0YzczMzI4NGM0ODM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbApAQCAtMCwwICsxLDY2
IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRh
bDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0
aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQu
b3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmts
ZXRzIHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZSI+Cis8bGluayByZWw9ImhlbHAiIGNv
bnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorICBjbGFzcyBNeVBhaW50IHsKKyAg
ICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnLS1teS1wcm9wJ107IH0K
KworICAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgICAgaWYgKHByb3BlcnRp
ZXMuZ2V0KCctLW15LXByb3AnKS50b1N0cmluZygpICE9ICJnb29kYnllIikgeworICAgICAgICBj
dHguZmlsbFN0eWxlID0gInJlZCI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguZmlsbFN0
eWxlID0gImdyZWVuIjsKKyAgICAgIH0KKworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20u
d2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKyAgcmVnaXN0ZXJQYWludCgnbXktcGFp
bnQnLCBNeVBhaW50KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
d2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dChmYWxzZSk7CisgICAgd2luZG93LmludGVybmFs
cy5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKKyAgfQorICBpbXBvcnRXb3JrbGV0KENTUy5wYWlu
dFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOwor
CisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21pc2UsIHRoZXNl
IHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFByb3BlcnR5KCct
LW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworCisgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgdmFyIHJlcGFpbnRSZWN0cyA9ICJObyB0ZXN0IHJ1bm5lciI7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7CisKKyAgICAgIC8vIGZvcmNlIGEgc3R5
bGUgcmVjYWxjLgorICAgICAgdmFyIGR1bW15ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisK
KyAgICAgIHJlcGFpbnRSZWN0cyA9IHdpbmRvdy5pbnRlcm5hbHMucmVwYWludFJlY3RzQXNUZXh0
KCk7CisKKyAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRyYWNraW5nUmVwYWludHMoKTsKKyAg
ICB9CisKKyAgICB2YXIgcHJlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcmUpOworICAgIHByZS5pbm5lckhUTUwgPSByZXBh
aW50UmVjdHM7CisgIH0sIDEwMDApOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgLS1teS1wcm9wOiBo
ZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHls
ZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNl
MTcxYjgyMDgxYjZiYjcyOTZhYmIwYjk2YTE2NWRkNDJjN2QxYzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sCkBAIC0wLDAg
KzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJp
bWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRo
b3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdl
YmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQg
d29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkt
MS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQg
eworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3An
XTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJv
cGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3RyaW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAg
ICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQorCisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwg
Z2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdt
eS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKworICAvLyBGSVhNRTogT25jZSBpbXBv
cnRXb3JrbGV0IHJldHVybnMgYSBwcm9taXNlLCB0aGVzZSBzZXRUaW1lb3V0cyBzaG91bGQgZ28g
YXdheS4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncGFpbnQnKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1teS1wcm9wJywgJ2dvb2RieWUnKTsK
KyAgfSwgNTAwKTsKKzwvc2NyaXB0PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dy
b3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIC0tbXktcHJvcDogaGVsbG87CisgICAg
d2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5
PgorICA8ZGl2IGlkPSJwYWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3ItZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0NDU3OTIxYmM4N2VhNDQ4NTQ3NGJkODJkMmZhNDQxZDllYWM0YmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3Ry
dWN0b3ItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
dHlsZT4KKyAgLnBhaW50IHsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsK
KyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFj
a2dyb3VuZDogd2hpdGU7Ij48L2Rpdj4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNr
Z3JvdW5kOiBncmVlbjsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tn
cm91bmQ6IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNWFjMmQ1ZTVl
NzkwMWI0ZDU0MzQ5ODBlOTI2ODIyOGQ5Y2I5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDUy
IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRh
bDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0
aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQu
b3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmts
ZXRzIGRvIG5vdCBjcmFzaCBpZiB0aGUgY29uc3RydWN0b3IgdGhyb3dzIj4KKzxsaW5rIHJlbD0i
aGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1h
cGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFp
bnQgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgdGhyb3cgIkhlbGxvISI7CisgICAgfQor
CisgICAgcGFpbnQoY3R4LCBnZW9tKSB7CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsK
KyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAg
fQorICB9CisKKyAgY2xhc3MgTXlQYWludDIgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgIH0K
KworICAgIHBhaW50KGN0eCwgZ2VvbSkgeworICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7
CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAg
IH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworICByZWdpc3Rl
clBhaW50KCdteS1wYWludDInLCBNeVBhaW50Mik7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5h
bHMuaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpKSB7CisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbGVha3MnKS5zdHlsZS5iYWNrZ3JvdW5kID0gImdyZWVuIjsKKyAgICB9Cisg
IH0sIDUwMCk7Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAucGFpbnQgeworICAgIHdpZHRoOiAx
NTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRp
diBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7
Ij48L2Rpdj4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiBw
YWludChteS1wYWludDIpOyI+PC9kaXY+CisgIDxkaXYgaWQ9ImxlYWtzIiBzdHlsZT0iYmFja2dy
b3VuZDogcmVkOyB3aWR0aDogMTUwcHg7IGhlaWdodDogMTUwcHg7Ij48L2Rpdj4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQzY2U3NzdjOTVjNzk4M2IzNzU4ZTgzMDQxYjZmYjY1OWQzMTc5
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
bGVha3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgdXNpbmcgY3Vz
dG9tIHBhaW50IGRvZXMgbm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0
byBnZXQgbGVha2VkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBXb3Jr
bGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvbGVha3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9sZWFrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMGM1MjkyZmYwMDZiZDAwNGQ4NzdmMTk3ZGI0
MTE4YWY3ZjI1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvbGVha3MuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9
dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhy
ZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIGRvbid0IGxlYWsiPgorPGxpbmsg
cmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBh
aW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKworPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9sZWFr
cy1mcmFtZS5odG1sIj48L2lmcmFtZT4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IHVzaW5nIGN1c3RvbSBwYWludCBkb2VzIG5vdCBjYXVzZSB0aGUgcGFpbnQgd29ya2xldCBn
bG9iYWwgc2NvcGUgdG8gZ2V0IGxlYWtlZC4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworZnVuY3Rpb24gcGFpbnRTaG91bGREaWUoKQoreworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgaGFuZGxlID0gc2V0SW50ZXJ2
YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBnYygpOworICAgICAgICAgICAgaWYgKCFpbnRl
cm5hbHMuaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChoYW5kbGUpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSwgMTApOworICAgIH0pOworfQorCit2YXIgdGVzdEZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOwordGVzdEZyYW1lLm9ubG9hZCA9
IGZ1bmN0aW9uKCkgeworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RG
cmFtZS5yZW1vdmUoKTsKKyAgICAgICAgcGFpbnRTaG91bGREaWUoKS50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdFBhc3NlZCgiV29ya2xldCBnbG9iYWwgc2NvcGUgZGlkIG5vdCBs
ZWFrIik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSwg
MTApOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L3Byb3BlcnRpZXMuaHRtbAppbmRleCAwYWU2ODhiZTAzZWYzYjVjODE3MTU3YzhkMzljMmIw
NDhkZmIwNTFlLi5kOWE0NjU1YjFmZmE0NThkNGZmYzhkYjk3OTU3NDhmMjliYjAwMjA5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwK
QEAgLTIxLDYgKzIxLDExIEBACiBjbGFzcyBNeVBhaW50IHsKICAgc3RhdGljIGdldCBpbnB1dFBy
b3BlcnRpZXMoKSB7IHJldHVybiBbJ2hlaWdodCcsICctLW15LXByb3AnLCAnLS1teS1yZWdpc3Rl
cmVkLXByb3AnLCAiLS1uZXZlci1zcGVjaWZpZWQiXTsgfQogICBzdGF0aWMgZ2V0IGlucHV0QXJn
dW1lbnRzKCkgeyByZXR1cm4gWycqJywgJyonLCAnKiddOyB9CisKKyAgY29uc3RydWN0b3IoKSB7
IHRoaXMubXlBdHRyaWJ1dGUgPSA0MjsgfQorCisgIHRlc3RUaGlzKCkgeyByZXR1cm4gdGhpcy5t
eUF0dHJpYnV0ZTsgfQorCiAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcywgYXJncykgewog
ICAgIGFzc2VydF9lcXVhbHMocHJvcGVydGllcy5nZXQoJ2hlaWdodCcpLnRvU3RyaW5nKCksIGFy
Z3NbMF0udG9TdHJpbmcoKSk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgnaGVp
Z2h0JykudmFsdWUsIDE1MCk7CkBAIC0zMCw2ICszNSw4IEBAIGNsYXNzIE15UGFpbnQgewogICAg
IGFzc2VydF9lcXVhbHMocHJvcGVydGllcy5nZXQoJ3dpZHRoJyksIG51bGwpOwogICAgIGFzc2Vy
dF9lcXVhbHMocHJvcGVydGllcy5nZXQoJy0tbmV2ZXItc3BlY2lmaWVkJykudG9TdHJpbmcoKSwg
JycpOwogCisgICAgYXNzZXJ0X2VxdWFscyh0aGlzLnRlc3RUaGlzKCksIDQyKTsKKwogICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsg
aisrKXsKICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0g
NDIuNSAqIGkpICsgJywnICsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mjc1
N2RkOTk5ZDUxZDU2MmUzMjNkYmRmMmUzNDA4MzBlY2I1N2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1mcmFtZS5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0
YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rp
bl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0
IHRoYXQgcGFpbnQgd29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRl
bnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKwor
PHN0eWxlPgorICAucGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50
KTsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4K
KworPGRpdiBjbGFzcz0icGFpbnQiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0
ZXh0L3dvcmtsZXQiPgorY29uc3QgZ2xvYmFsU2NvcGUgPSB0aGlzOworY2xhc3MgTXlQYWludCB7
CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcywgYXJncykgeworICAgIGNvbnN0IGR1bW15
ID0gZ2xvYmFsU2NvcGU7IC8vIExlYWshCisgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7Cisg
ICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgfQorfQor
TXlQYWludC5jcmVhdGVBTGVhayA9IHRoaXM7CityZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15
UGFpbnQpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitDU1MucGFpbnRXb3JrbGV0LmFkZE1vZHVs
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9yYWYtbGVhay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjYz
YTVmNmIzNDcyNDZiZmEyODY2ODRlN2FjYzUyYzUxYTFjZDdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yYWYtbGVhay1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDgKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355111</attachid>
            <date>2018-11-16 13:48:24 -0800</date>
            <delta_ts>2018-11-16 13:59:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181116134823.patch</filename>
            <type>text/plain</type>
            <size>66716</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5jZTBlYWYyODUwZmExMmVk
MGVlMDA3YjMzOTBhOGJkNmEyZDJmN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0xNSAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIG9sZCAueGNm
aWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMmIyOGE0YjFmNWNmOTVjOGZjMjJiNDdlMDdl
NDVhMmYwZDU3NTYuLmQ1MjQ2YWE0MmExMWY3MjExM2I1ZTc0NTA5NGU3MDVmMmVlOGVlYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxOC0xMS0xNiAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91
bGQgcGFzcyAndGhpcycgY29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3
aGVuIHByb3BlcnRpZXMgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW5zdGFudGlhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHBhaW50IGNs
YXNzLCBhbmQgcGFzcyBpdCBhcyAndGhpcycgb2JqZWN0IHdoZW4gdGhlIHBhaW50IGNhbGxiYWNr
IGlzIGNhbGxlZC4gCisgICAgICAgIEFsc28sIHRoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGF0IGN1
c3RvbSBwYWludCBlbGVtZW50cyBnZXQgcmVwYWludGVkIHdoZW4gcHJvcGVydGllcyB0aGF0IHRo
ZXkgY2FyZSBhYm91dCBnZXQgY2hhbmdlZC4KKyAgICAgICAgRmluYWxseSwgd2UgZml4IHR3byBy
ZWZlcmVuY2UgY3ljbGVzIHRoYXQgY2F1c2VkIFdvcmtsZXRHbG9iYWxTY29wZSB0byBuZXZlciBi
ZSBkZXN0cm95ZWQuCisKKyAgICAgICAgVGhpcyBjbGFzcyBhZGRzIGEgbmV3IG1lbWJlciB0byBS
ZW5kZXJTdHlsZS4gVG8gc3RvcCB0aGlzIGZyb20gaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiBSZW5k
ZXJTdHlsZSwgdGhpcyBwYXRjaCB1c2VzICNwcmFnbWEgcGFjaworICAgICAgICB0byBwYWNrIFJl
bmRlclN0eWxlLCBzaHJpbmtpbmcgaXQgZnJvbSA4OCBieXRlcyB0byA4Ni4KKworICAgICAgICBU
ZXN0czogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFpbnRDYWxsYmFjay5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNr
LmlkbDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnZtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OkN1c3RvbVBhaW50
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omlz
QW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50
RGVmaW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9i
YWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcmVw
YXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRH
bG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICog
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2Nv
cGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zYWJsZURvY3Vt
ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
fldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKwogMjAxOC0xMS0xNSAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRl
cmlhOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBzaG91bGQgYmUgb3B0aW9uYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCAwOTdjZjQ4ODFm
NDZlN2U5ZmIwN2RkMWZiMjcwZGJiMWE0ZTJlYjA2Li41OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNj
MWFkMjU5M2Y5MzEwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKIH07
CiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRo
IENhbGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlbS4K
LUpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
Y29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVj
dG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYs
IEpTVmFsdWUgbmV3VGFyZ2V0KTsKIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5jcHAKaW5kZXggODlhMzA4MGRhOGI1MzM3ZGEwMTljZWU2YTEzNWVjNzVjYTM4OWM0MC4uNzk0
YTUzODFiNzdlNDhkNjJjNTRkMzcyNGVjOGI3YWI4NWZmYjlkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEpTRE9NT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCBhOGNlYWU2
MGJhNzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmLi4wMTE4NGE4NDYyNzYwODc4YzAwZTgz
MGJmODFmY2EwZGM0OWFlYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMzQs
OCArMzQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHZvaWQgSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRp
b25Mb2NrKCkpOwotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERl
ZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFw
cGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0ZXJl
ZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworICAgICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOworICAg
IH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZmI1YTc1NTY4MmQxNjE0NmE1Yjg5MmI5Yzc1
ZTdhMzU2MTZhN2M2MS4uN2NkODBlNzQxNTdmZmFjZmRhZWQwYzY0ZWE5OWJjZTQ0MmM4ODZlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC0xMjgsNyArMTI4LDggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRH
bG8KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xl
dEdsb2JhbFNjb3BlKQogewotICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2Jh
bFNjb3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBBU1NFUlQo
d29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9
IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigp
OwogICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVy
LT5wcm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3Bw
CmluZGV4IDM3YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEuLmU5ODQxMGJl
ZWUzN2VhZWMyMjMyMGZmNGE4YzZiODIzM2JhNjM0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTEwNiw3ICsxMDYsOSBAQCBKU0M6OkV4ZWNTdGF0
ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTYwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogSlNDOjpFeGVjU3RhdGUq
IGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
bGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQo
KS53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoIXdv
cmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcigpLT5nbG9iYWxFeGVjKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dENhbGxiYWNrLmgKaW5kZXggNzU2NTYzYzNiYWQ2OTU5MmM0NDkyOTcxZDIzOWUwZjhkYWRjMTE1
Yy4uMGMwM2YwYWZiZDcxMjQ0OWVkZDA3MTM2ZDY1MzU3N2FlZDc0ZGY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCkBAIC0zMSwxNiArMzEsMTggQEAKICNpbmNsdWRlICJD
U1NQYWludFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4
dDJEOwogCi1jbGFzcyBDU1NQYWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFp
bnRDYWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBDU1NQYWludENh
bGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsK
IHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7
CiAKLSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVu
ZGVyaW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3Vs
dDx2b2lkPiBoYW5kbGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
JiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZiNTFkNDEy
M2VjMjI2MjVlMzFjYzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2MWVlYzlj
MjBiMzE0NDZkZDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbApA
QCAtMjYsNCArMjYsNSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEks
CiAgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1RoaXNPYmpl
Y3Q9YW55CiBdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJlbmRlcmlu
Z0NvbnRleHQyRCBjb250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0eU1hcFJl
YWRPbmx5IHN0eWxlTWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4YzMzY2Jh
MzY3OGQyNmVkMjA2MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1YmIwNTM5
MzJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAtNDAsNiAr
NDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1BhaW50SW1h
Z2VWYWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0cjxJbWFn
ZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9u
YW1lID09IG90aGVyLm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IGM3YWIzYmJhMDVmYjkwNmQ3YmNhMTUwMTE1MzgzNmJhNDZiMzQ2NDEuLjZhMWNlNDlkMGM0
MDc5Zjk5MGFiMGY5OThiZTY1NTcyNTI2ZTAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5o
IgorI2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2
YWx1YXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VS
dWxlQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE3MTcsNiArMTcxOSwxOCBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBBcHBseUNhc2NhZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVy
aXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRs
eUluaGVyaXRlZFByb3BlcnRpZXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpICYmIGRvY3VtZW50
KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1hcCIgZnJvbSB0aGUg
c3BlYywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgcGFpbnRXb3JrbGV0
ID0gKmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERlZmluaXRp
b25NYXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KS5u
YW1lKCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9u
LT5pbnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+YWRkQ3Vz
dG9tUGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRp
ZgorCiAgICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0eWxlQnVp
bGRlcjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlzSW5pdGlhbCwg
aXNJbmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggMzVlNzEyYTIxZmJlNmViYzBkYmVjNzdjMTFiNmI0NTg1YWYwZTZiOC4uNzE2
NzAyOWNmMDlmMGVjOWQ4YzE3MjQwYmE0ZDI0ZjgwMTc3NjI0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0yNTQxLDYgKzI1NDEsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRl
c3RydWN0aW9uKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorICAgIGlmIChtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1fcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAgICBtX3Bh
aW50V29ya2xldEdsb2JhbFNjb3BlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIG1f
aGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICAvLyBOb3RlIHRoYXQgbV9w
YWdlQ2FjaGVTdGF0ZSBjYW4gYmUgRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSBpZiBv
dXIgZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCBkOGY2MGUyOWQzOWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5Li45YmE0ODE5
ZGY3NTE5MmYyZjg0YzY0YWUxZjczYzQzODJlZDJiM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgSlNDOjpW
TSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0g
ICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQo
KS52bSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykuc2NyaXB0KCktPnZtKCk7CiAjZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0
b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuY3BwCmluZGV4IDQzOTYyYzUyNmNiY2VlY2JiMGQ1ODI1MDhkMDJkODUzODZh
NDBhNTguLjAzNGRhNTYxZmU2YjI4MjI0NWM4MzA5MWFjM2RlMWUyODdmNzgzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCkBAIC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIK
ICNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zdHJ1Y3REYXRhLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShj
b25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9u
LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5pdGlv
bi5wYWludENhbGxiYWNrLmdldCgpKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFn
ZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBtX3BhaW50RGVmaW5pdGlvbihtYWtlV2Vha1B0
cihkZWZpbml0aW9uKSkKICAgICAsIG1faW5wdXRQcm9wZXJ0aWVzKGRlZmluaXRpb24uaW5wdXRQ
cm9wZXJ0aWVzKQogICAgICwgbV9lbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogICAgICwg
bV9hcmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNTYsMTMgKzU3LDIwIEBAIEN1c3RvbVBhaW50SW1h
Z2U6On5DdXN0b21QYWludEltYWdlKCkgPSBkZWZhdWx0OwogCiBJbWFnZURyYXdSZXN1bHQgQ3Vz
dG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFNpemUmIGRlc3RTaXplKQogewotICAgIGlmICghbV9lbGVtZW50IHx8ICFt
X2VsZW1lbnQtPmVsZW1lbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5l
bGVtZW50KCkgfHwgIW1fcGFpbnREZWZpbml0aW9uKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29uc3RydWN0b3Io
bV9wYWludERlZmluaXRpb24tPnBhaW50Q29uc3RydWN0b3IpOworCisgICAgaWYgKCFwYWludENv
bnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwor
CisgICAgYXV0byYgcGFpbnRDYWxsYmFjayA9IG1fcGFpbnREZWZpbml0aW9uLT5wYWludENhbGxi
YWNrLmdldCgpOworCiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPm5lZWRzTGF5b3V0KCkpOwogICAg
IEFTU0VSVCghbV9lbGVtZW50LT5lbGVtZW50KCktPmRvY3VtZW50KCkubmVlZHNTdHlsZVJlY2Fs
YygpKTsKIAotICAgIEpTQ1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxK
U0NTU1BhaW50Q2FsbGJhY2smPihtX3BhaW50Q2FsbGJhY2suZ2V0KCkpOworICAgIEpTQ1NTUGFp
bnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NTU1BhaW50Q2FsbGJhY2smPihw
YWludENhbGxiYWNrKTsKICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJh
Y2suc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTEw
Myw3ICsxMTEsMjEgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9t
UGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvIHNpemUgPSBD
U1NQYWludFNpemU6OmNyZWF0ZShkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7
CiAgICAgYXV0byBwcm9wZXJ0eU1hcCA9IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6Y3JlYXRl
KFdURk1vdmUocHJvcGVydHlWYWx1ZXMpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENh
bGxiYWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1l
bnRzKTsKKyAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT52bSgp
OworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcGFpbnRDb25z
dHJ1Y3Rvci5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9
ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOworICAgIEpTQzo6QXJnTGlzdCBub0FyZ3M7Cisg
ICAgSlNDOjpKU1ZhbHVlIHRoaXNPYmplY3QgPSB7IEpTQzo6Y29uc3RydWN0KCZzdGF0ZSwgV1RG
TW92ZShwYWludENvbnN0cnVjdG9yKSwgbm9BcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBwYWlu
dCBjbGFzcyIpIH07CisKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Cisg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKKyAgICB9CisKKyAgICBhdXRv
IHJlc3VsdCA9IHBhaW50Q2FsbGJhY2suaGFuZGxlRXZlbnQoV1RGTW92ZSh0aGlzT2JqZWN0KSwg
KmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CiAgICAgaWYgKHJlc3Vs
dC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggZDMwNjc5Mzk3NzIwMGNj
ZGJjZGM5ZTIzYjc2YzUzMDc4MjJjZjc2Ni4uNjhiNDBjOTllY2FiM2E1ZTNlMGM5MmIyYjAxM2Q3
ODY1MWE3MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiR2VuZXJh
dGVkSW1hZ2UuaCIKICNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
V2Vhay5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM4LDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgQ3VzdG9tUGFp
bnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKFBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3Vt
ZW50cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1h
Z2UoZGVmaW5pdGlvbiwgc2l6ZSwgZWxlbWVudCwgYXJndW1lbnRzKSk7CiAgICAgfQpAQCAtNDcs
MTQgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludElt
YWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3Vt
ZW50cyk7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9t
UGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOwogICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCi0gICAgUmVmPENT
U1BhaW50Q2FsbGJhY2s+IG1fcGFpbnRDYWxsYmFjazsKKyAgICBXZWFrUHRyPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZl
Y3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVyRWxlbWVu
dD4gbV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggN2JhMTA5MTU1
Mjk5ZDc2M2QxOTkxNWZiZGJiNmQwMzViYjhhZDdmYS4uMDM2NTdhYWViMDJhN2U5ZTI4MjUzZGJk
MDFjZDM5OTQ5ZGM2OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNp
bmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVk
ZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxv
YXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC04Miw3ICs4NCwx
MyBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIHsKICNlbmRpZgogfTsKIAotc3RhdGlj
X2Fzc2VydChzaXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5
bGUpLCAiUmVuZGVyU3R5bGUgc2hvdWxkIHN0YXkgc21hbGwiKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFJlbmRlclN0eWxlKSA8PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgIlJlbmRl
clN0eWxlIHNob3VsZCBzdGF5IHNtYWxsIik7CisKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRl
clN0eWxlKiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+JiBjdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxjb25zdCBSZW5kZXJTdHlsZSosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+Pj4g
bWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKIFJlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6ZGVm
YXVsdFN0eWxlKCkKIHsKQEAgLTEyOCw4ICsxMzYsNjIgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5k
ZXJTdHlsZSYmKSA9IGRlZmF1bHQ7Ci1SZW5kZXJTdHlsZSYgUmVuZGVyU3R5bGU6Om9wZXJhdG9y
PShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CitSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVu
ZGVyU3R5bGUmJiBvdGhlcikKKyAgICA6IG1fYm94RGF0YShXVEZNb3ZlKG90aGVyLm1fYm94RGF0
YSkpCisgICAgLCBtX3Zpc3VhbERhdGEoV1RGTW92ZShvdGhlci5tX3Zpc3VhbERhdGEpKQorICAg
ICwgbV9iYWNrZ3JvdW5kRGF0YShXVEZNb3ZlKG90aGVyLm1fYmFja2dyb3VuZERhdGEpKQorICAg
ICwgbV9zdXJyb3VuZERhdGEoV1RGTW92ZShvdGhlci5tX3N1cnJvdW5kRGF0YSkpCisgICAgLCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhKFdURk1vdmUob3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSkpCisgICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKFdURk1vdmUob3RoZXIubV9ub25Jbmhlcml0
ZWRGbGFncykpCisgICAgLCBtX3JhcmVJbmhlcml0ZWREYXRhKFdURk1vdmUob3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YSkpCisgICAgLCBtX2luaGVyaXRlZERhdGEoV1RGTW92ZShvdGhlci5tX2lu
aGVyaXRlZERhdGEpKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhXVEZNb3ZlKG90aGVyLm1faW5o
ZXJpdGVkRmxhZ3MpKQorICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoV1RGTW92ZShvdGhlci5t
X2NhY2hlZFBzZXVkb1N0eWxlcykpCisgICAgLCBtX3N2Z1N0eWxlKFdURk1vdmUob3RoZXIubV9z
dmdTdHlsZSkpCit7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG90aGVy
Lm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21Q
YWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21Q
YWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFz
aFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCku
Z2V0KCZvdGhlcikpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaXNOZXcsIGlzTmV3KTsKKyAg
ICAgICAgb3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAg
ICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZvdGhlcik7Cisg
ICAgfQorI2VuZGlmCit9CisKK1JlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KFJl
bmRlclN0eWxlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgbV9ib3hEYXRhID0gV1RGTW92ZShvdGhlci5tX2JveERhdGEpOwor
ICAgIG1fdmlzdWFsRGF0YSA9IFdURk1vdmUob3RoZXIubV92aXN1YWxEYXRhKTsKKyAgICBtX2Jh
Y2tncm91bmREYXRhID0gV1RGTW92ZShvdGhlci5tX2JhY2tncm91bmREYXRhKTsKKyAgICBtX3N1
cnJvdW5kRGF0YSA9IFdURk1vdmUob3RoZXIubV9zdXJyb3VuZERhdGEpOworICAgIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEpOwor
ICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MgPSBXVEZNb3ZlKG90aGVyLm1fbm9uSW5oZXJpdGVkRmxh
Z3MpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEpOworICAgIG1faW5oZXJpdGVkRGF0YSA9IFdURk1vdmUob3RoZXIubV9pbmhlcml0
ZWREYXRhKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gV1RGTW92ZShvdGhlci5tX2luaGVyaXRl
ZEZsYWdzKTsKKyAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IFdURk1vdmUob3RoZXIubV9jYWNo
ZWRQc2V1ZG9TdHlsZXMpOworICAgIG1fc3ZnU3R5bGUgPSBXVEZNb3ZlKG90aGVyLm1fc3ZnU3R5
bGUpOworCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJv
cGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFw
KCkucmVtb3ZlKHRoaXMpOworICAgIH0KKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdh
dGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVz
ID0gdHJ1ZTsKKyAgICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXNNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1v
dmUoKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcpOworICAgICAgICBvdGhlci5tX2hhc0N1
c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUoJm90aGVyKTsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiAqdGhpczsKK30KIAogUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRTdHlsZVRhZykKICAgICA6IG1fYm94RGF0YShTdHlsZUJveERhdGE6OmNyZWF0ZSgpKQpAQCAt
MjA2LDYgKzI2OCwxMyBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCiAgICAgLCBtX2luaGVyaXRlZEZsYWdzKG90aGVy
Lm1faW5oZXJpdGVkRmxhZ3MpCiAgICAgLCBtX3N2Z1N0eWxlKG90aGVyLm1fc3ZnU3R5bGUpCiB7
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG90aGVyLm1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJv
cGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+
PigqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpKSk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoaXNOZXcsIGlzTmV3KTsKKyAgICB9CisjZW5kaWYKIH0KIAogaW5s
aW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgYSwgUmVuZGVyU3R5bGUm
JiBiKQpAQCAtMjIxLDYgKzI5MCwyMiBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxl
KFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCiAgICAgLCBtX2NhY2hlZFBzZXVkb1N0
eWxlcyhzdGQ6OmV4Y2hhbmdlKGEubV9jYWNoZWRQc2V1ZG9TdHlsZXMsIFdURk1vdmUoYi5tX2Nh
Y2hlZFBzZXVkb1N0eWxlcykpKQogICAgICwgbV9zdmdTdHlsZShhLm1fc3ZnU3R5bGUucmVwbGFj
ZShXVEZNb3ZlKGIubV9zdmdTdHlsZSkpKQogeworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorICAgIGlmIChhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAg
bV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNO
ZXcgPSBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuZ2V0KCZhKSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNO
ZXcpOworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsK
KyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYSk7Cisg
ICAgfQorICAgIGlmIChiLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAg
ICAgYS5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0
byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQoJmEsIHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuZ2V0KCZiKSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywg
aXNOZXcpOworICAgICAgICBiLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxz
ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYik7
CisgICAgfQorI2VuZGlmCiB9CiAKIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQpAQCAtMjI5
LDYgKzMxNCwxMCBAQCBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
CisgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgIGN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUodGhpcyk7CisjZW5kaWYKIH0KIAog
UmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OnJlcGxhY2UoUmVuZGVyU3R5bGUmJiBuZXdTdHlsZSkK
QEAgLTM2Miw2ICs0NTEsMTEgQEAgYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBS
ZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YQogICAgICAgICAmJiBtX3JhcmVJbmhl
cml0ZWREYXRhID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9pbmhl
cml0ZWREYXRhID09IG90aGVyLm1faW5oZXJpdGVkRGF0YQorI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgICAgICAmJiAoKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzICYm
ICFvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKQorICAgICAgICAgICAgfHwg
KG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgJiYgb3RoZXIubV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcworICAgICAgICAgICAgICAgICYmICpjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpID09ICpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
TWFwKCkuZ2V0KCZvdGhlcikpKQorI2VuZGlmCiAgICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gb3Ro
ZXIubV9zdmdTdHlsZTsKIH0KIApAQCAtOTYyLDYgKzEwNTYsMTggQEAgc3RhdGljIGJvb2wgcmFy
ZUluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YSYKICAgICA7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK3ZvaWQg
UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgaWYgKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAg
ICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRv
IGlzTmV3ID0gY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6
Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
aXNOZXcsIGlzTmV3KTsKKyAgICB9CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01h
cCgpLmdldCh0aGlzKS0+YWRkKG5hbWUpOworfQorI2VuZGlmCisKIGJvb2wgUmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNl
dDxTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk+JiBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXF1aXJlc1BhaW50aW5n
KCp0aGlzKSAmJiAhcmVxdWlyZXNQYWludGluZyhvdGhlcikpCkBAIC05ODMsNiArMTA4OSw0MiBA
QCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5bAogICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YUNo
YW5nZVJlcXVpcmVzUmVwYWludCgqbV9yYXJlSW5oZXJpdGVkRGF0YSwgKm90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQorICAgIGlmIChVTkxJS0VMWShtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0
aWVzIHx8IG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IgaGVyZS4KKyAgICAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBleHRyYWN0b3IoKEVsZW1l
bnQqKSBudWxscHRyKTsKKworICAgICAgICBmb3IgKGF1dG8qIHdhdGNoUHJvcGVydGllc01hcCA6
IHsgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCh0aGlzKSwgY3VzdG9tUGFp
bnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpIH0pIHsKKyAgICAgICAgICAgIGlm
ICghd2F0Y2hQcm9wZXJ0aWVzTWFwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUI7CisgICAgICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlO
YW1lKG5hbWUpICYmIGdldEN1c3RvbVByb3BlcnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVBy
b3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAg
ICAgICAgICAgICB2YWx1ZUIgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVy
LmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlE
KG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0
cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWVCID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxl
KG90aGVyLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoKHZhbHVlQSAmJiAhdmFsdWVCKSB8fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICghdmFsdWVB
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICgh
KCp2YWx1ZUEgPT0gKnZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggM2FjYjFjOWE4Mjc2NDU4NDkzYTJlMjcxMzIwZmM3NzMwMzZlMmIwZS4uYTg3YzdmMjcw
MTZmNjEzYTIwZTQ2MTgxZjdiOWRkNGNhNjFhNzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB1c2luZyBQc2V1
ZG9TdHlsZUNhY2hlID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIDQ+Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1
YWwoY29uc3QgVCYgdCwgY29uc3QgVSYgdSkgeyByZXR1cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25z
dCBUJj4odSk7IH0KIAorI3ByYWdtYSBwYWNrKHB1c2gsIDEpCiBjbGFzcyBSZW5kZXJTdHlsZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBl
IHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5
cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisgICAgdm9pZCBhZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgcGFpbnQt
b3JkZXIsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGluZWpvaW4sIGFuZCBzdHJva2UtbWl0ZXJs
aW1pdCBmcm9tIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL3BhaW50Ly4KICAgICB2b2lkIHNldFBh
aW50T3JkZXIoUGFpbnRPcmRlciBvcmRlcikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHBhaW50T3JkZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcikpOyB9CiAgICAgUGFpbnRP
cmRlciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFpbnRPcmRlcj4o
bV9yYXJlSW5oZXJpdGVkRGF0YS0+cGFpbnRPcmRlcik7IH0KQEAgLTE4ODAsNiArMTg4NSwxMCBA
QCBwcml2YXRlOgogICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBtX2luaGVyaXRlZERh
dGE7CiAgICAgSW5oZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsKIAorI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQorICAgIGJvb2wgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cyB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1ZG8g
c3R5bGVzCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNl
dWRvU3R5bGVzOwogCkBAIC0xODg5LDYgKzE4OTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
ZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKKyNwcmFnbWEgcGFjayhwb3Ap
CiAKIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50LCBjb25zdCBSZW5kZXJTdHlsZSYpOwog
ZmxvYXQgYWRqdXN0RmxvYXRGb3JBYnNvbHV0ZVpvb20oZmxvYXQsIGNvbnN0IFJlbmRlclN0eWxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYjg4NDNhNmQzYjJhNzNh
Mzg4ZTcwY2ZjYzZjNjA2MzYzY2QyNTFjMS4uMzYwY2ZiMTA0ZTNjYWMxZDZlNzc0YTUwMGQwZjVl
MGUzY2VmYTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTcyLDYg
KzE3Miw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldp
bmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+
CkBAIC0yMzc1LDYgKzIzNzYsMTUgQEAgYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSh1
aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0CiAgICAgcmV0dXJuIERvY3VtZW50Ojph
bGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtYWtlT2JqZWN0SWRlbnRpZmllcjxEb2N1bWVudElk
ZW50aWZpZXJUeXBlPihkb2N1bWVudElkZW50aWZpZXIpKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6
OmlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdAoreworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorICAgIHJldHVybiAhV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0
R2xvYmFsU2NvcGVzU2V0KCkuaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFsczo6c2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDBkYWYwMzNjZDMzNGQ1
NDRlYzEzZDM3YzcxOGQ0ZjdiYTYxYmI1NjYuLjc4MjlmNjAwZTBhNzNkOWIyNGM3ODAzYTcyMjlj
Y2NhZTA1MmYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzg3LDYgKzM4
Nyw4IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9j
dW1lbnQmKSBjb25zdDsKICAgICBib29sIGlzRG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBkb2N1bWVu
dElkZW50aWZpZXIpIGNvbnN0OwogCisgICAgYm9vbCBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFs
aXZlKCkgY29uc3Q7CisKICAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IGI2ZGQ3YjIyYTI2MTk5MGU5OWZlMjYxZWM1Njc3MmUxODc5
ZmEwZTIuLjEzMTA3MzViYzVjNDM3ZDdhZGE5M2IyYjUyZjlhNzBiOGU4YmMyZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY3NCw2ICs2NzQsOCBAQCBlbnVtIENvbXBv
c2l0aW5nUG9saWN5IHsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVy
KERvY3VtZW50IGRvY3VtZW50KTsKICAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZSh1bnNpZ25l
ZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKIAorICAgIGJvb2xlYW4gaXNBbnlXb3Jr
bGV0R2xvYmFsU2NvcGVBbGl2ZSgpOworCiAgICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xl
YXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyOWEyMDBk
MTBkZjNmZDZiN2FjZmJhOTc4OGVjMWM0YmE4YTBhNDMuLjNlM2Q5NTYxZjI2NjczYWY4NTYyOTVh
ODAyYzdhMDQ2NmJkMDQ0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJK
U0NTU1BhaW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUwLDE1ICs1MSwyNSBAQCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyYwogCiBkb3VibGUgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogewotICAgIGlm
ICghcmVzcG9uc2FibGVEb2N1bWVudCgpIHx8ICFyZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdp
bmRvdygpKQorICAgIGlmICghcmVzcG9uc2libGVEb2N1bWVudCgpIHx8ICFyZXNwb25zaWJsZURv
Y3VtZW50KCktPmRvbVdpbmRvdygpKQogICAgICAgICByZXR1cm4gMS4wOwotICAgIHJldHVybiBy
ZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7Cisg
ICAgcmV0dXJuIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVs
UmF0aW8oKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6
UGFpbnREZWZpbml0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCog
cGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYgcGFpbnRDYWxsYmFjaywg
VmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRB
cmd1bWVudHMpCisgICAgOiBuYW1lKG5hbWUpCisgICAgLCBwYWludENvbnN0cnVjdG9yKHBhaW50
Q29uc3RydWN0b3IpCisgICAgLCBwYWludENhbGxiYWNrKFdURk1vdmUocGFpbnRDYWxsYmFjaykp
CisgICAgLCBpbnB1dFByb3BlcnRpZXMoV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpKQorICAgICwg
aW5wdXRBcmd1bWVudHMoV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpCit7CiB9CiAKIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0
b20tcGFpbnQKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdp
c3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJvbmc8SlNPYmplY3Q+IHBhaW50Q29uc3Ry
dWN0b3IpCiB7CiAgICAgYXV0byYgdm0gPSAqcGFpbnRDb25zdHJ1Y3Rvci0+dm0oKTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0b3IgaXMg
YSBWb2lkRnVuY3Rpb24KQEAgLTY5LDYyICs4MCw3MCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmci
IH07CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7
CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxv
Y2soKSk7CiAKLSAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlz
IG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OworICAgICAgICBpZiAocGFpbnRE
ZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJl
ZW4gcmVnaXN0ZXJlZCIgfTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsK
KyAgICAgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogCi0gICAgSlNWYWx1ZSBp
bnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0g
cGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpbnB1dFByb3BlcnRpZXMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAoIWlucHV0
UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRQcm9w
ZXJ0aWVzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQ
cm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgaWYgKCFpbnB1
dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICBpbnB1
dFByb3BlcnRpZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBp
bnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIC8v
IEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCisgICAgICAg
IC8vIEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
aW5wdXRBcmd1bWVudHM7CiAKLSAgICBKU1ZhbHVlIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1
ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBp
bnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwogCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7CisgICAgICAgIGlmICghaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZp
bmVkKCkpCisgICAgICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7CiAKLSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3Vt
ZW50cyBoZXJlIChzdGVwcyAxMSBhbmQgMTIpLgorICAgICAgICAvLyBGSVhNRTogUGFyc2Ugc3lu
dGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVwcyAxMSBhbmQgMTIpLgogCi0gICAgSlNW
YWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKyAgICAgICAgSlNW
YWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwogCi0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBo
ZXJlIChzdGVwIDE0KS4KKyAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0KS4KIAotICAgIGlmICghcGFpbnRDb25z
dHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsK
KyAgICAgICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50
IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsKIAotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwYWlu
dENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVu
dCBtdXN0IGhhdmUgYSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiIH07CisgICAgICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlw
ZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKIAotICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3Rv
dHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFpbnQi
KSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBl
VmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgY2xhc3MgbXVzdCBoYXZl
IGEgcGFpbnQgbWV0aG9kIiB9OworICAgICAgICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBt
dXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CiAKLSAgICBSZWZQdHI8SlNDU1NQYWludENhbGxi
YWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJh
Y2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAg
ICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0g
c3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5h
bWUsIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVu
dHMgfSk7Ci0gICAgcGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnRE
ZWZpbml0aW9uKSk7CisgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1
dEFyZ3VtZW50cykpOworICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RG
TW92ZShwYWludERlZmluaXRpb24pKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGZvciB0aGUg
Y2FzZSB3aGVuIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIHRoZSBwYWludCBkZWZpbml0aW9uIG1h
cCwgYW5kIHRoZSBHQyBpcyBjdXJyZW50bHkgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZC4KKyAg
ICB2bS5oZWFwLndyaXRlQmFycmllcigmZ2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIEZJWE1FOiBj
b25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KIAorICAgIGlmIChyZXNwb25z
aWJsZURvY3VtZW50KCkgJiYgcmVzcG9uc2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisg
ICAgICAgIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZXBhaW50Um9vdENv
bnRlbnRzKCk7CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAyMzI3MWYxNTQyOTE0Yjg1
YjRiMjVmNzkxOTJlYTRjZWNjYThhNTUwLi5mOThlNTc3ZTNkNDlhMTM5NDA2MTYzN2NkZDEyMjUy
ZDViYmZhYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTU1BhaW50Q2Fs
bGJhY2suaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ1LDggKzQ2LDEyIEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxP
YmplY3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBh
aW50Q29uc3RydWN0b3IpOwogICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAK
LSAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKKyAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9u
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBQYWlu
dERlZmluaXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWlu
dENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBp
bnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpOworCiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAgICAvLyBUaGlzIG1hcCBtdXN0IGJl
IGNsZWFyZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQhCisgICAgICAgIEpTQzo6SlNPYmpl
Y3QqIHBhaW50Q29uc3RydWN0b3IgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IFJlZjxDU1NQ
YWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiBpbnB1dFByb3BlcnRpZXM7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJn
dW1lbnRzOwpAQCAtNTUsOSArNjAsMjYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsg
QVNTRVJUKG1fcGFpbnREZWZpbml0aW9uTG9jay5pc0xvY2tlZCgpKTsgcmV0dXJuIG1fcGFpbnRE
ZWZpbml0aW9uTWFwOyB9CiAgICAgTG9jayYgcGFpbnREZWZpbml0aW9uTG9jaygpIHsgcmV0dXJu
IG1fcGFpbnREZWZpbml0aW9uTG9jazsgfQogCisgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKSBmaW5hbAorICAgIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgcGFpbnREZWZpbml0
aW9uTWFwKCkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBXb3JrbGV0R2xvYmFsU2NvcGU6
OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBQYWludFdv
cmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAKKyAgICB+
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAg
ICAgICAgQVNTRVJUKHBhaW50RGVmaW5pdGlvbk1hcCgpLmlzRW1wdHkoKSk7CisjZW5kaWYKKyAg
ICB9CisKICAgICBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBh
aW50RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYTBkMzAwOWRhOTNhYzQzYjE2
ZTBkZDQwZDA0Y2Y4MmUwMGIyNDBiNS4uM2M1NjE5NjgwM2UxYmNiNDJhODllMjAxODc3MjhmZTZh
Njk0MTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
ay5oPgogCkBAIC00OSwxMiArNDgsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdv
cmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwg
U2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRv
Y3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAg
ICwgbV9zY3JpcHQobWFrZVVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykp
CisgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
Pih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkKLSAgICAsIG1faWRlbnRpZmllcihtYWtlU3RyaW5nKCJXb3JrbGV0R2xvYmFsU2NvcGU6Il9z
LCBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKSkKICAg
ICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQogewor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpLmFkZCh0aGlz
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0KTsKKwogICAgIGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBtX2pzUnVudGltZUZsYWdzID0gZnJhbWUg
PyBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCkgOiBKU0M6OlJ1bnRp
bWVGbGFncygpOwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwpAQCAtNjUsOCArNjYsMjYg
QEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY28KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xl
dEdsb2JhbFNjb3BlKCkKIHsKKyAgICBBU1NFUlQoIW1fc2NyaXB0KTsKICAgICByZW1vdmVGcm9t
Q29udGV4dHNNYXAoKTsKLSAgICBtX3NjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigp
LT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gYWxs
V29ya2xldEdsb2JhbFNjb3Blc1NldCgpLnJlbW92ZSh0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlbW92ZVJlc3VsdCwgcmVtb3ZlUmVzdWx0KTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0KTsKKyAg
ICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOworICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRyYWNr
ZXIoKTsKKyAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOworICAgIG1fc2NyaXB0LT52bSgp
Lm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOworICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKK30KKwor
YXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNTZXQoKSAtPiBX
b3JrbGV0R2xvYmFsU2NvcGVzU2V0JgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3Jr
bGV0R2xvYmFsU2NvcGVzU2V0PiBzY29wZXM7CisgICAgcmV0dXJuIHNjb3BlczsKIH0KIAogU3Ry
aW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKQEAgLTg4LDcgKzEwNyw3IEBA
IHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCiAKIGJvb2wgV29ya2xldEdsb2Jh
bFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9z
Y3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJuICFtX3NjcmlwdCB8fCBt
X3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFs
U2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTEwLDMw
ICsxMjksMzAgQEAgVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25U
b0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4mJiBzdGFjaykKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3Vt
ZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
ZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7CiB9CiAKIHZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlmICghbV9kb2N1bWVudCkK
KyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNz
YWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2Uo
KSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCks
IDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1fZG9j
dW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYg
Y2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5h
ZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxT
dGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApp
bmRleCBmMDE1NjRkODY3YzEwYWFjZjljZjBjMWRmNjkwNjVjZmVmMmQ3NWM2Li4zZDk3NDUxOWY5
YTZlYWEwYTg4MzRhODgyYzRkOTA4N2MzNDAyMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzgsMjkgKzM4LDM0IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCitlbnVtIFdvcmts
ZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdvcmtsZXRHbG9iYWxTY29w
ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZp
ZXJUeXBlPjsKKwogY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8
V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKLSAgICB+V29ya2xldEdsb2Jh
bFNjb3BlKCk7CisgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNjb3BlKCk7CisKKyAgICB1c2lu
ZyBXb3JrbGV0R2xvYmFsU2NvcGVzU2V0ID0gSGFzaFNldDxjb25zdCBXb3JrbGV0R2xvYmFsU2Nv
cGUqPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV29ya2xldEdsb2JhbFNjb3Blc1NldCYg
YWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KICAgICBTdHJp
bmcgb3JpZ2luKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlKCk7CiAK
ICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7
CiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciYgc2NyaXB0KCkgeyByZXR1cm4gbV9zY3Jp
cHQuZ2V0KCk7IH0KKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1
cm4gbV9zY3JpcHQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogCkBAIC03NCwx
MSArNzksMTUgQEAgcHVibGljOgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxh
Z3MoKSBjb25zdCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisKIHByb3RlY3RlZDoKICAgICBXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworICAgIFdvcmtsZXRHbG9i
YWxTY29wZShjb25zdCBXb3JrbGV0R2xvYmFsU2NvcGUmKSA9IGRlbGV0ZTsKKyAgICBXb3JrbGV0
R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiYpID0gZGVsZXRlOwogCi0gICAgRG9jdW1l
bnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0g
ICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9CisgICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7
IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNp
YmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xMTgsMTAgKzEyNyw5IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIAogICAgIFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cj4gbV9zY3JpcHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
PiBtX3NjcmlwdDsKIAogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAg
U3RyaW5nIG1faWRlbnRpZmllcjsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBpbXBsZW1l
bnRlZCBwcm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKQEAgLTEyOSw2ICsx
MzcsOCBAQCBwcml2YXRlOgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFn
czsKICAgICBTY3JpcHRTb3VyY2VDb2RlIG1fY29kZTsKKworICAgIFdvcmtsZXRHbG9iYWxTY29w
ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDA1NWQ3ZjExNjhlZWI1YWNmMDQyZmYxNGJmYzk5YzczZGNjYjhmMzcuLjExNjg5
NzhlNDI0ZGYxYzQ4ZTQ2MWM1ODg5Yzc4ZmNkYmEwNjdiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU5LDEzICs1
OSwxNSBAQCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2xldFNjcmlwdENvbnRyb2xsZXIo
V29ya2xldEdsb2JhbFNjb3BlKiB3b3JrbGV0R2xvYgogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
On5Xb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0o
KSk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9
IG51bGxwdHI7CisgICAgZm9yYmlkRXhlY3V0aW9uKCk7CisKICAgICBpZiAobV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKSB7CiAgICAgICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+
Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpOwogICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgIG1fY29uc29sZUNsaWVu
dCA9IG51bGxwdHI7CiAgICAgfQorICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVh
cigpOworICAgIG1fdm0gPSBudWxscHRyOwogfQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpmb3JiaWRFeGVjdXRpb24oKQpAQCAtODIsNiArODQsOSBAQCBib29sIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiAKIHZvaWQgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQogeworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisK
ICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkg
fTsKIApAQCAtOTAsNiArOTUsOSBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNh
YmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIAogdm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQogeworICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisK
ICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkg
fTsKIApAQCAtMTMyLDYgKzE0MCw5IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0KCkKIHsKKyAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPihtX3dvcmtsZXRH
bG9iYWxTY29wZSkpIHsKICAgICAgICAgaW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZT4oKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBlYzliNDcw
ZDlkYWRhZWU3ZTJkZmI0OTJiYjk1MDdiZDQ0NzVjZjMuLjhmMmQwZDU4ZjljYjhmMGI1ZTFjZTJl
NGFhN2YwMTAzYmY4MGFhNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMS0xNiAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBh
aW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycgY29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNr
LCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5p
bWF0ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIGZh
c3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yYWYtbGVhay1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorCiAyMDE4LTExLTE1ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhOXSBVc2VySGFuZGxlIGNhbiBiZSBudWxsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGFiODhkOTJkNDI5MDBmMGEyOGM1NTBiMzg4MzE3NDM3
MDkyMDdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB3aWR0
aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+Cisg
IDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzQxMGNlMzI5NmY1YTcwYzE3MmQ1M2JiZmI3ZTQzNDRkMDQ2NWYwMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmlt
YXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKyhyZXBhaW50IHJlY3Rz
CisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAgMTUwIDE1MCkKKyAgKHJlY3QgOCA4
IDc4NCAxNTApCisgIChyZWN0IDAgMCA4MDAgMTY2KQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAg
KHJlY3QgOCA4IDE1MCAxNTApCisgIChyZWN0IDggOCAxNTAgMTUwKQorICAocmVjdCA4IDggMTUw
IDE1MCkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2FuaW1hdGUtcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2FuaW1hdGUtcmVwYWludC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMzI2YTVhM2UzYTA1NjlmMTUxNWFj
OGIyNGM3MzMyODRjNDgzODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFp
bnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1
c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8
bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBh
aW50IHdoZW4gcHJvcGVydGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJo
dHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0i
Y29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGlj
IGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBw
YWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgn
LS1teS1wcm9wJykudG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxT
dHlsZSA9ICJyZWQiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJn
cmVlbiI7CisgICAgICB9CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBn
ZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQ
YWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBp
ZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy50
ZXN0UnVubmVyLmR1bXBBc1RleHQoZmFsc2UpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRU
cmFja2luZ1JlcGFpbnRzKCk7CisgIH0KKyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0
LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKworICAvLyBG
SVhNRTogT25jZSBpbXBvcnRXb3JrbGV0IHJldHVybnMgYSBwcm9taXNlLCB0aGVzZSBzZXRUaW1l
b3V0cyBzaG91bGQgZ28gYXdheS4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1teS1wcm9w
JywgJ2dvb2RieWUnKTsKKyAgfSwgNTAwKTsKKworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgIHZhciByZXBhaW50UmVjdHMgPSAiTm8gdGVzdCBydW5uZXIiOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOworCisgICAgICAvLyBmb3JjZSBhIHN0eWxlIHJlY2Fs
Yy4KKyAgICAgIHZhciBkdW1teSA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisgICAgICBy
ZXBhaW50UmVjdHMgPSB3aW5kb3cuaW50ZXJuYWxzLnJlcGFpbnRSZWN0c0FzVGV4dCgpOworCisg
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgfQorCisg
ICAgdmFyIHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKKyAgICBwcmUuaW5uZXJIVE1MID0gcmVwYWludFJlY3Rz
OworICB9LCAxMDAwKTsKKzwvc2NyaXB0PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFj
a2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIC0tbXktcHJvcDogaGVsbG87Cisg
ICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxi
b2R5PgorICA8ZGl2IGlkPSJwYWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTE3MWI4MjA4
MWI2YmI3Mjk2YWJiMGI5NmExNjVkZDQyYzdkMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbApAQCAtMCwwICsxLDQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpD
U1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRs
ZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3Jn
Ij4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRz
IHJlcGFpbnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZSI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRl
bnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorICBjbGFzcyBNeVBhaW50IHsKKyAgICBz
dGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnLS1teS1wcm9wJ107IH0KKwor
ICAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgICAgaWYgKHByb3BlcnRpZXMu
Z2V0KCctLW15LXByb3AnKS50b1N0cmluZygpICE9ICJnb29kYnllIikgeworICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gInJlZCI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguZmlsbFN0eWxl
ID0gImdyZWVuIjsKKyAgICAgIH0KKworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lk
dGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKyAgcmVnaXN0ZXJQYWludCgnbXktcGFpbnQn
LCBNeVBhaW50KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xl
dCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCisg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bh
aW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7CisgIH0sIDUw
MCk7Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1h
Z2U6IHBhaW50KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAx
NTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRp
diBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3RydWN0b3ItZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDQ1NzkyMWJjODdlYTQ0ODU0NzRiZDgyZDJmYTQ0MWQ5ZWFjNGJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+Cisg
IC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwv
c3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6
IHdoaXRlOyI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDog
Z3JlZW47Ij48L2Rpdj4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiBn
cmVlbjsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvY29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjVhYzJkNWU1ZTc5MDFiNGQ1
NDM0OTgwZTkyNjgyMjhkOWNiOThmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFp
bnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1
c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8
bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkbyBu
b3QgY3Jhc2ggaWYgdGhlIGNvbnN0cnVjdG9yIHRocm93cyI+Cis8bGluayByZWw9ImhlbHAiIGNv
bnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorICBjbGFzcyBNeVBhaW50IHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgIHRocm93ICJIZWxsbyEiOworICAgIH0KKworICAgIHBh
aW50KGN0eCwgZ2VvbSkgeworICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICBj
dHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQor
CisgIGNsYXNzIE15UGFpbnQyIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICB9CisKKyAgICBw
YWludChjdHgsIGdlb20pIHsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAg
Y3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0K
KyAgcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsKKyAgcmVnaXN0ZXJQYWludCgn
bXktcGFpbnQyJywgTXlQYWludDIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKyAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLmlzQW55
V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSkgeworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xlYWtzJykuc3R5bGUuYmFja2dyb3VuZCA9ICJncmVlbiI7CisgICAgfQorICB9LCA1MDAp
OworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgLnBhaW50IHsKKyAgICB3aWR0aDogMTUwcHg7Cisg
ICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9
InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOyI+PC9kaXY+
CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXkt
cGFpbnQyKTsiPjwvZGl2PgorICA8ZGl2IGlkPSJsZWFrcyIgc3R5bGU9ImJhY2tncm91bmQ6IHJl
ZDsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDE1MHB4OyI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kM2NlNzc3Yzk1Yzc5ODNiMzc1OGU4MzA0MWI2ZmI2NTlkMzE3OWM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IHVzaW5nIGN1c3RvbSBwYWlu
dCBkb2VzIG5vdCBjYXVzZSB0aGUgcGFpbnQgd29ya2xldCBnbG9iYWwgc2NvcGUgdG8gZ2V0IGxl
YWtlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgV29ya2xldCBnbG9i
YWwgc2NvcGUgZGlkIG5vdCBsZWFrCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2xlYWtzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVh
a3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YzBjNTI5MmZmMDA2YmQwMDRkODc3ZjE5N2RiNDExOGFmN2Yy
NWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2xlYWtzLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAt
LT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWls
dG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkb24ndCBsZWFrIj4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkt
MS8iPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisKKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNvdXJjZXMvbGVha3MtZnJhbWUu
aHRtbCI+PC9pZnJhbWU+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB1c2lu
ZyBjdXN0b20gcGFpbnQgZG9lcyBub3QgY2F1c2UgdGhlIHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNj
b3BlIHRvIGdldCBsZWFrZWQuIik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1
bmN0aW9uIHBhaW50U2hvdWxkRGllKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rp
b24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIGhhbmRsZSA9IHNldEludGVydmFsKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgICAgIGlmICghaW50ZXJuYWxzLmlz
QW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSkgeworICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoaGFuZGxlKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0sIDEwKTsKKyAgICB9KTsKK30KKwordmFyIHRlc3RGcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKTsKK3Rlc3RGcmFtZS5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0RnJhbWUucmVt
b3ZlKCk7CisgICAgICAgIHBhaW50U2hvdWxkRGllKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIldvcmtsZXQgZ2xvYmFsIHNjb3BlIGRpZCBub3QgbGVhayIpOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIDEwKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L3Byb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9w
ZXJ0aWVzLmh0bWwKaW5kZXggMGFlNjg4YmUwM2VmM2I1YzgxNzE1N2M4ZDM5YzJiMDQ4ZGZiMDUx
ZS4uZDlhNDY1NWIxZmZhNDU4ZDRmZmM4ZGI5Nzk1NzQ4ZjI5YmIwMDIwOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCkBAIC0yMSw2
ICsyMSwxMSBAQAogY2xhc3MgTXlQYWludCB7CiAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gWydoZWlnaHQnLCAnLS1teS1wcm9wJywgJy0tbXktcmVnaXN0ZXJlZC1wcm9w
JywgIi0tbmV2ZXItc3BlY2lmaWVkIl07IH0KICAgc3RhdGljIGdldCBpbnB1dEFyZ3VtZW50cygp
IHsgcmV0dXJuIFsnKicsICcqJywgJyonXTsgfQorCisgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLm15
QXR0cmlidXRlID0gNDI7IH0KKworICB0ZXN0VGhpcygpIHsgcmV0dXJuIHRoaXMubXlBdHRyaWJ1
dGU7IH0KKwogICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMsIGFyZ3MpIHsKICAgICBhc3Nl
cnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS50b1N0cmluZygpLCBhcmdzWzBdLnRv
U3RyaW5nKCkpOwogICAgIGFzc2VydF9lcXVhbHMocHJvcGVydGllcy5nZXQoJ2hlaWdodCcpLnZh
bHVlLCAxNTApOwpAQCAtMzAsNiArMzUsOCBAQCBjbGFzcyBNeVBhaW50IHsKICAgICBhc3NlcnRf
ZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCd3aWR0aCcpLCBudWxsKTsKICAgICBhc3NlcnRfZXF1YWxz
KHByb3BlcnRpZXMuZ2V0KCctLW5ldmVyLXNwZWNpZmllZCcpLnRvU3RyaW5nKCksICcnKTsKIAor
ICAgIGFzc2VydF9lcXVhbHModGhpcy50ZXN0VGhpcygpLCA0Mik7CisKICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDY7IGkrKyl7CiAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CiAg
ICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBp
KSArICcsJyArCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI3NTdkZDk5OWQ1
MWQ1NjJlMzIzZGJkZjJlMzQwODMwZWNiNTdhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNvdXJjZXMvbGVha3MtZnJhbWUuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4
cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0i
YXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1
ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBh
aW50IHdvcmtsZXRzIGRvbid0IGxlYWsiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+CisKKzxzdHlsZT4K
KyAgLnBhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAg
d2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYg
Y2xhc3M9InBhaW50Ij48L2Rpdj4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3Jr
bGV0Ij4KK2NvbnN0IGdsb2JhbFNjb3BlID0gdGhpczsKK2NsYXNzIE15UGFpbnQgeworICBwYWlu
dChjdHgsIGdlb20sIHByb3BlcnRpZXMsIGFyZ3MpIHsKKyAgICBjb25zdCBkdW1teSA9IGdsb2Jh
bFNjb3BlOyAvLyBMZWFrIQorICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgIGN0eC5m
aWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgIH0KK30KK015UGFpbnQu
Y3JlYXRlQUxlYWsgPSB0aGlzOworcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsK
Kzwvc2NyaXB0PgorCis8c2NyaXB0PgorQ1NTLnBhaW50V29ya2xldC5hZGRNb2R1bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFm
LWxlYWstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9yYWYtbGVhay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI2M2E1ZjZiMzQ3
MjQ2YmZhMjg2Njg0ZTdhY2M1MmM1MWExY2Q3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4Cisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355114</attachid>
            <date>2018-11-16 13:59:22 -0800</date>
            <delta_ts>2018-11-28 14:44:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181116135921.patch</filename>
            <type>text/plain</type>
            <size>66534</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5jZTBlYWYyODUwZmExMmVk
MGVlMDA3YjMzOTBhOGJkNmEyZDJmN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0xNSAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIG9sZCAueGNm
aWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMmIyOGE0YjFmNWNmOTVjOGZjMjJiNDdlMDdl
NDVhMmYwZDU3NTYuLmQ1MjQ2YWE0MmExMWY3MjExM2I1ZTc0NTA5NGU3MDVmMmVlOGVlYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxOC0xMS0xNiAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91
bGQgcGFzcyAndGhpcycgY29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3
aGVuIHByb3BlcnRpZXMgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW5zdGFudGlhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHBhaW50IGNs
YXNzLCBhbmQgcGFzcyBpdCBhcyAndGhpcycgb2JqZWN0IHdoZW4gdGhlIHBhaW50IGNhbGxiYWNr
IGlzIGNhbGxlZC4gCisgICAgICAgIEFsc28sIHRoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGF0IGN1
c3RvbSBwYWludCBlbGVtZW50cyBnZXQgcmVwYWludGVkIHdoZW4gcHJvcGVydGllcyB0aGF0IHRo
ZXkgY2FyZSBhYm91dCBnZXQgY2hhbmdlZC4KKyAgICAgICAgRmluYWxseSwgd2UgZml4IHR3byBy
ZWZlcmVuY2UgY3ljbGVzIHRoYXQgY2F1c2VkIFdvcmtsZXRHbG9iYWxTY29wZSB0byBuZXZlciBi
ZSBkZXN0cm95ZWQuCisKKyAgICAgICAgVGhpcyBjbGFzcyBhZGRzIGEgbmV3IG1lbWJlciB0byBS
ZW5kZXJTdHlsZS4gVG8gc3RvcCB0aGlzIGZyb20gaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiBSZW5k
ZXJTdHlsZSwgdGhpcyBwYXRjaCB1c2VzICNwcmFnbWEgcGFjaworICAgICAgICB0byBwYWNrIFJl
bmRlclN0eWxlLCBzaHJpbmtpbmcgaXQgZnJvbSA4OCBieXRlcyB0byA4Ni4KKworICAgICAgICBU
ZXN0czogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFpbnRDYWxsYmFjay5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNr
LmlkbDoKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnZtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OkN1c3RvbVBhaW50
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omlz
QW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50
RGVmaW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9i
YWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcmVw
YXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRH
bG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICog
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2Nv
cGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zYWJsZURvY3Vt
ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6
fldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKwogMjAxOC0xMS0xNSAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRl
cmlhOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudCBzaG91bGQgYmUgb3B0aW9uYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCAwOTdjZjQ4ODFm
NDZlN2U5ZmIwN2RkMWZiMjcwZGJiMWE0ZTJlYjA2Li41OTM4YTkwZDg5Zjk2YzM5MTUxMGUwNDNj
MWFkMjU5M2Y5MzEwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKIH07
CiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVhbCB3aXRo
IENhbGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlbS4K
LUpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
Y29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVj
dG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYs
IEpTVmFsdWUgbmV3VGFyZ2V0KTsKIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5jcHAKaW5kZXggODlhMzA4MGRhOGI1MzM3ZGEwMTljZWU2YTEzNWVjNzVjYTM4OWM0MC4uNzk0
YTUzODFiNzdlNDhkNjJjNTRkMzcyNGVjOGI3YWI4NWZmYjlkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEpTRE9NT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCBhOGNlYWU2
MGJhNzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmLi4wMTE4NGE4NDYyNzYwODc4YzAwZTgz
MGJmODFmY2EwZGM0OWFlYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApAQCAtMzQs
OCArMzQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHZvaWQgSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRp
b25Mb2NrKCkpOwotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERl
ZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3cmFw
cGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0ZXJl
ZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworICAgICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOworICAg
IH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZmI1YTc1NTY4MmQxNjE0NmE1Yjg5MmI5Yzc1
ZTdhMzU2MTZhN2M2MS4uN2NkODBlNzQxNTdmZmFjZmRhZWQwYzY0ZWE5OWJjZTQ0MmM4ODZlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC0xMjgsNyArMTI4LDggQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtsZXRH
bG8KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xl
dEdsb2JhbFNjb3BlKQogewotICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xldEdsb2Jh
bFNjb3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBBU1NFUlQo
d29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKTsKKyAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9
IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigp
OwogICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVy
LT5wcm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3Bw
CmluZGV4IDM3YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEuLmU5ODQxMGJl
ZWUzN2VhZWMyMjMyMGZmNGE4YzZiODIzM2JhNjM0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTEwNiw3ICsxMDYsOSBAQCBKU0M6OkV4ZWNTdGF0
ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTYwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogSlNDOjpFeGVjU3RhdGUq
IGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
bGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQo
KS53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoIXdv
cmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcigpLT5nbG9iYWxFeGVjKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dENhbGxiYWNrLmgKaW5kZXggNzU2NTYzYzNiYWQ2OTU5MmM0NDkyOTcxZDIzOWUwZjhkYWRjMTE1
Yy4uMGMwM2YwYWZiZDcxMjQ0OWVkZDA3MTM2ZDY1MzU3N2FlZDc0ZGY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCkBAIC0zMSwxNiArMzEsMTggQEAKICNpbmNsdWRlICJD
U1NQYWludFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4
dDJEOwogCi1jbGFzcyBDU1NQYWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFp
bnRDYWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBDU1NQYWludENh
bGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsK
IHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7
CiAKLSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVu
ZGVyaW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3Vs
dDx2b2lkPiBoYW5kbGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
JiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZiNTFkNDEy
M2VjMjI2MjVlMzFjYzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2MWVlYzlj
MjBiMzE0NDZkZDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbApA
QCAtMjYsNCArMjYsNSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEks
CiAgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1RoaXNPYmpl
Y3Q9YW55CiBdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJlbmRlcmlu
Z0NvbnRleHQyRCBjb250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0eU1hcFJl
YWRPbmx5IHN0eWxlTWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4YzMzY2Jh
MzY3OGQyNmVkMjA2MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1YmIwNTM5
MzJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAtNDAsNiAr
NDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1BhaW50SW1h
Z2VWYWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0cjxJbWFn
ZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9u
YW1lID09IG90aGVyLm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IGM3YWIzYmJhMDVmYjkwNmQ3YmNhMTUwMTE1MzgzNmJhNDZiMzQ2NDEuLjZhMWNlNDlkMGM0
MDc5Zjk5MGFiMGY5OThiZTY1NTcyNTI2ZTAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVzUnVsZS5o
IgorI2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2
YWx1YXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VS
dWxlQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE3MTcsNiArMTcxOSwxOCBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBBcHBseUNhc2NhZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVy
aXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhwbGljaXRs
eUluaGVyaXRlZFByb3BlcnRpZXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
ICAgIGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpICYmIGRvY3VtZW50
KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1hcCIgZnJvbSB0aGUg
c3BlYywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgcGFpbnRXb3JrbGV0
ID0gKmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERlZmluaXRp
b25NYXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KS5u
YW1lKCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9u
LT5pbnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+YWRkQ3Vz
dG9tUGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRp
ZgorCiAgICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0eWxlQnVp
bGRlcjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlzSW5pdGlhbCwg
aXNJbmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggMzVlNzEyYTIxZmJlNmViYzBkYmVjNzdjMTFiNmI0NTg1YWYwZTZiOC4uNzE2
NzAyOWNmMDlmMGVjOWQ4YzE3MjQwYmE0ZDI0ZjgwMTc3NjI0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0yNTQxLDYgKzI1NDEsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRl
c3RydWN0aW9uKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorICAgIGlmIChtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1fcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAgICBtX3Bh
aW50V29ya2xldEdsb2JhbFNjb3BlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIG1f
aGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICAvLyBOb3RlIHRoYXQgbV9w
YWdlQ2FjaGVTdGF0ZSBjYW4gYmUgRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSBpZiBv
dXIgZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCBkOGY2MGUyOWQzOWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5Li45YmE0ODE5
ZGY3NTE5MmYyZjg0YzY0YWUxZjczYzQzODJlZDJiM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAgSlNDOjpW
TSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0g
ICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQo
KS52bSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykuc2NyaXB0KCktPnZtKCk7CiAjZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0
b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuY3BwCmluZGV4IDQzOTYyYzUyNmNiY2VlY2JiMGQ1ODI1MDhkMDJkODUzODZh
NDBhNTguLjAzNGRhNTYxZmU2YjI4MjI0NWM4MzA5MWFjM2RlMWUyODdmNzgzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCkBAIC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIK
ICNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zdHJ1Y3REYXRhLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFnZShj
b25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9u
LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBtX3BhaW50Q2FsbGJhY2soZGVmaW5pdGlv
bi5wYWludENhbGxiYWNrLmdldCgpKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJbWFn
ZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0aW9uLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBtX3BhaW50RGVmaW5pdGlvbihtYWtlV2Vha1B0
cihkZWZpbml0aW9uKSkKICAgICAsIG1faW5wdXRQcm9wZXJ0aWVzKGRlZmluaXRpb24uaW5wdXRQ
cm9wZXJ0aWVzKQogICAgICwgbV9lbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQogICAgICwg
bV9hcmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNTYsMTMgKzU3LDIwIEBAIEN1c3RvbVBhaW50SW1h
Z2U6On5DdXN0b21QYWludEltYWdlKCkgPSBkZWZhdWx0OwogCiBJbWFnZURyYXdSZXN1bHQgQ3Vz
dG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFNpemUmIGRlc3RTaXplKQogewotICAgIGlmICghbV9lbGVtZW50IHx8ICFt
X2VsZW1lbnQtPmVsZW1lbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5l
bGVtZW50KCkgfHwgIW1fcGFpbnREZWZpbml0aW9uKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29uc3RydWN0b3Io
bV9wYWludERlZmluaXRpb24tPnBhaW50Q29uc3RydWN0b3IpOworCisgICAgaWYgKCFwYWludENv
bnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwor
CisgICAgYXV0byYgcGFpbnRDYWxsYmFjayA9IG1fcGFpbnREZWZpbml0aW9uLT5wYWludENhbGxi
YWNrLmdldCgpOworCiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPm5lZWRzTGF5b3V0KCkpOwogICAg
IEFTU0VSVCghbV9lbGVtZW50LT5lbGVtZW50KCktPmRvY3VtZW50KCkubmVlZHNTdHlsZVJlY2Fs
YygpKTsKIAotICAgIEpTQ1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxK
U0NTU1BhaW50Q2FsbGJhY2smPihtX3BhaW50Q2FsbGJhY2suZ2V0KCkpOworICAgIEpTQ1NTUGFp
bnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NTU1BhaW50Q2FsbGJhY2smPihw
YWludENhbGxiYWNrKTsKICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJh
Y2suc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTEw
Myw3ICsxMTEsMjEgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9t
UGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvIHNpemUgPSBD
U1NQYWludFNpemU6OmNyZWF0ZShkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7
CiAgICAgYXV0byBwcm9wZXJ0eU1hcCA9IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6Y3JlYXRl
KFdURk1vdmUocHJvcGVydHlWYWx1ZXMpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENh
bGxiYWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1fYXJndW1l
bnRzKTsKKyAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgpLT52bSgp
OworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcGFpbnRDb25z
dHJ1Y3Rvci5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBzdGF0ZSA9
ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOworICAgIEpTQzo6QXJnTGlzdCBub0FyZ3M7Cisg
ICAgSlNDOjpKU1ZhbHVlIHRoaXNPYmplY3QgPSB7IEpTQzo6Y29uc3RydWN0KCZzdGF0ZSwgV1RG
TW92ZShwYWludENvbnN0cnVjdG9yKSwgbm9BcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBwYWlu
dCBjbGFzcyIpIH07CisKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Cisg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKKyAgICB9CisKKyAgICBhdXRv
IHJlc3VsdCA9IHBhaW50Q2FsbGJhY2suaGFuZGxlRXZlbnQoV1RGTW92ZSh0aGlzT2JqZWN0KSwg
KmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CiAgICAgaWYgKHJlc3Vs
dC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggZDMwNjc5Mzk3NzIwMGNj
ZGJjZGM5ZTIzYjc2YzUzMDc4MjJjZjc2Ni4uNjhiNDBjOTllY2FiM2E1ZTNlMGM5MmIyYjAxM2Q3
ODY1MWE3MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiR2VuZXJh
dGVkSW1hZ2UuaCIKICNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
V2Vhay5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM4LDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgQ3VzdG9tUGFp
bnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKFBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3Vt
ZW50cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50SW1h
Z2UoZGVmaW5pdGlvbiwgc2l6ZSwgZWxlbWVudCwgYXJndW1lbnRzKSk7CiAgICAgfQpAQCAtNDcs
MTQgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21QYWludElt
YWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mLCBjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3Vt
ZW50cyk7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFp
bnREZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9t
UGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOwogICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCi0gICAgUmVmPENT
U1BhaW50Q2FsbGJhY2s+IG1fcGFpbnRDYWxsYmFjazsKKyAgICBXZWFrUHRyPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZl
Y3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVyRWxlbWVu
dD4gbV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggN2JhMTA5MTU1
Mjk5ZDc2M2QxOTkxNWZiZGJiNmQwMzViYjhhZDdmYS4uMDM2NTdhYWViMDJhN2U5ZTI4MjUzZGJk
MDFjZDM5OTQ5ZGM2OTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEuaCIKKyNp
bmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVk
ZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRmxv
YXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC04Miw3ICs4NCwx
MyBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIHsKICNlbmRpZgogfTsKIAotc3RhdGlj
X2Fzc2VydChzaXplb2YoUmVuZGVyU3R5bGUpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyU3R5
bGUpLCAiUmVuZGVyU3R5bGUgc2hvdWxkIHN0YXkgc21hbGwiKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFJlbmRlclN0eWxlKSA8PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclN0eWxlKSwgIlJlbmRl
clN0eWxlIHNob3VsZCBzdGF5IHNtYWxsIik7CisKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRl
clN0eWxlKiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+JiBjdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxjb25zdCBSZW5kZXJTdHlsZSosIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+Pj4g
bWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKIFJlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6ZGVm
YXVsdFN0eWxlKCkKIHsKQEAgLTEyOCw4ICsxMzYsNjIgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5k
ZXJTdHlsZSYmKSA9IGRlZmF1bHQ7Ci1SZW5kZXJTdHlsZSYgUmVuZGVyU3R5bGU6Om9wZXJhdG9y
PShSZW5kZXJTdHlsZSYmKSA9IGRlZmF1bHQ7CitSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoUmVu
ZGVyU3R5bGUmJiBvdGhlcikKKyAgICA6IG1fYm94RGF0YShXVEZNb3ZlKG90aGVyLm1fYm94RGF0
YSkpCisgICAgLCBtX3Zpc3VhbERhdGEoV1RGTW92ZShvdGhlci5tX3Zpc3VhbERhdGEpKQorICAg
ICwgbV9iYWNrZ3JvdW5kRGF0YShXVEZNb3ZlKG90aGVyLm1fYmFja2dyb3VuZERhdGEpKQorICAg
ICwgbV9zdXJyb3VuZERhdGEoV1RGTW92ZShvdGhlci5tX3N1cnJvdW5kRGF0YSkpCisgICAgLCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhKFdURk1vdmUob3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSkpCisgICAgLCBtX25vbkluaGVyaXRlZEZsYWdzKFdURk1vdmUob3RoZXIubV9ub25Jbmhlcml0
ZWRGbGFncykpCisgICAgLCBtX3JhcmVJbmhlcml0ZWREYXRhKFdURk1vdmUob3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YSkpCisgICAgLCBtX2luaGVyaXRlZERhdGEoV1RGTW92ZShvdGhlci5tX2lu
aGVyaXRlZERhdGEpKQorICAgICwgbV9pbmhlcml0ZWRGbGFncyhXVEZNb3ZlKG90aGVyLm1faW5o
ZXJpdGVkRmxhZ3MpKQorICAgICwgbV9jYWNoZWRQc2V1ZG9TdHlsZXMoV1RGTW92ZShvdGhlci5t
X2NhY2hlZFBzZXVkb1N0eWxlcykpCisgICAgLCBtX3N2Z1N0eWxlKFdURk1vdmUob3RoZXIubV9z
dmdTdHlsZSkpCit7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG90aGVy
Lm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21Q
YWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21Q
YWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFz
aFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCku
Z2V0KCZvdGhlcikpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaXNOZXcsIGlzTmV3KTsKKyAg
ICAgICAgb3RoZXIubV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAg
ICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkucmVtb3ZlKCZvdGhlcik7Cisg
ICAgfQorI2VuZGlmCit9CisKK1JlbmRlclN0eWxlJiBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KFJl
bmRlclN0eWxlJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgPT0gJm90aGVyKQorICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgbV9ib3hEYXRhID0gV1RGTW92ZShvdGhlci5tX2JveERhdGEpOwor
ICAgIG1fdmlzdWFsRGF0YSA9IFdURk1vdmUob3RoZXIubV92aXN1YWxEYXRhKTsKKyAgICBtX2Jh
Y2tncm91bmREYXRhID0gV1RGTW92ZShvdGhlci5tX2JhY2tncm91bmREYXRhKTsKKyAgICBtX3N1
cnJvdW5kRGF0YSA9IFdURk1vdmUob3RoZXIubV9zdXJyb3VuZERhdGEpOworICAgIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEpOwor
ICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MgPSBXVEZNb3ZlKG90aGVyLm1fbm9uSW5oZXJpdGVkRmxh
Z3MpOworICAgIG1fcmFyZUluaGVyaXRlZERhdGEgPSBXVEZNb3ZlKG90aGVyLm1fcmFyZUluaGVy
aXRlZERhdGEpOworICAgIG1faW5oZXJpdGVkRGF0YSA9IFdURk1vdmUob3RoZXIubV9pbmhlcml0
ZWREYXRhKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzID0gV1RGTW92ZShvdGhlci5tX2luaGVyaXRl
ZEZsYWdzKTsKKyAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IFdURk1vdmUob3RoZXIubV9jYWNo
ZWRQc2V1ZG9TdHlsZXMpOworICAgIG1fc3ZnU3R5bGUgPSBXVEZNb3ZlKG90aGVyLm1fc3ZnU3R5
bGUpOworCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJv
cGVydGllcyA9IGZhbHNlOworICAgICAgICBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFw
KCkucmVtb3ZlKHRoaXMpOworICAgIH0KKyAgICBpZiAob3RoZXIubV9oYXNDdXN0b21QYWludFdh
dGNoUHJvcGVydGllcykgeworICAgICAgICBtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVz
ID0gdHJ1ZTsKKyAgICAgICAgYXV0byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXNNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KFdURk1v
dmUoKmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5nZXQoJm90aGVyKSkpKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNOZXcpOworICAgICAgICBvdGhlci5tX2hhc0N1
c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgICAgIGN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUoJm90aGVyKTsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiAqdGhpczsKK30KIAogUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1
bHRTdHlsZVRhZykKICAgICA6IG1fYm94RGF0YShTdHlsZUJveERhdGE6OmNyZWF0ZSgpKQpAQCAt
MjA2LDYgKzI2OCwxMyBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBvdGhlciwgQ2xvbmVUYWcpCiAgICAgLCBtX2luaGVyaXRlZEZsYWdzKG90aGVy
Lm1faW5oZXJpdGVkRmxhZ3MpCiAgICAgLCBtX3N2Z1N0eWxlKG90aGVyLm1fc3ZnU3R5bGUpCiB7
CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKG90aGVyLm1faGFzQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJv
cGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNOZXcgPSBjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+
PigqY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpKSk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoaXNOZXcsIGlzTmV3KTsKKyAgICB9CisjZW5kaWYKIH0KIAogaW5s
aW5lIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgYSwgUmVuZGVyU3R5bGUm
JiBiKQpAQCAtMjIxLDYgKzI5MCwyMiBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxl
KFJlbmRlclN0eWxlJiBhLCBSZW5kZXJTdHlsZSYmIGIpCiAgICAgLCBtX2NhY2hlZFBzZXVkb1N0
eWxlcyhzdGQ6OmV4Y2hhbmdlKGEubV9jYWNoZWRQc2V1ZG9TdHlsZXMsIFdURk1vdmUoYi5tX2Nh
Y2hlZFBzZXVkb1N0eWxlcykpKQogICAgICwgbV9zdmdTdHlsZShhLm1fc3ZnU3R5bGUucmVwbGFj
ZShXVEZNb3ZlKGIubV9zdmdTdHlsZSkpKQogeworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorICAgIGlmIChhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAgICAg
bV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gaXNO
ZXcgPSBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzTWFwKCkuZ2V0KCZhKSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywgaXNO
ZXcpOworICAgICAgICBhLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxzZTsK
KyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYSk7Cisg
ICAgfQorICAgIGlmIChiLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpIHsKKyAgICAg
ICAgYS5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0
byBpc05ldyA9IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5hZGQoJmEsIHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PihXVEZNb3ZlKCpjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuZ2V0KCZiKSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ldywg
aXNOZXcpOworICAgICAgICBiLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSBmYWxz
ZTsKKyAgICAgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLnJlbW92ZSgmYik7
CisgICAgfQorI2VuZGlmCiB9CiAKIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQpAQCAtMjI5
LDYgKzMxNCwxMCBAQCBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
CisgICAgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGllcyA9IGZhbHNlOworICAgIGN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXNNYXAoKS5yZW1vdmUodGhpcyk7CisjZW5kaWYKIH0KIAog
UmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OnJlcGxhY2UoUmVuZGVyU3R5bGUmJiBuZXdTdHlsZSkK
QEAgLTM2Miw2ICs0NTEsMTEgQEAgYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBS
ZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEgPT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YQogICAgICAgICAmJiBtX3JhcmVJbmhl
cml0ZWREYXRhID09IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEKICAgICAgICAgJiYgbV9pbmhl
cml0ZWREYXRhID09IG90aGVyLm1faW5oZXJpdGVkRGF0YQorI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgICAgICAmJiAoKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzICYm
ICFvdGhlci5tX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKQorICAgICAgICAgICAgfHwg
KG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgJiYgb3RoZXIubV9oYXNDdXN0b21QYWlu
dFdhdGNoUHJvcGVydGllcworICAgICAgICAgICAgICAgICYmICpjdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzTWFwKCkuZ2V0KHRoaXMpID09ICpjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
TWFwKCkuZ2V0KCZvdGhlcikpKQorI2VuZGlmCiAgICAgICAgICYmIG1fc3ZnU3R5bGUgPT0gb3Ro
ZXIubV9zdmdTdHlsZTsKIH0KIApAQCAtOTYyLDYgKzEwNTYsMTggQEAgc3RhdGljIGJvb2wgcmFy
ZUluaGVyaXRlZERhdGFDaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YSYKICAgICA7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKK3ZvaWQg
UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgaWYgKCFtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0aWVzKSB7CisgICAg
ICAgIG1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRv
IGlzTmV3ID0gY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmFkZCh0aGlzLCBzdGQ6
Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
aXNOZXcsIGlzTmV3KTsKKyAgICB9CisgICAgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01h
cCgpLmdldCh0aGlzKS0+YWRkKG5hbWUpOworfQorI2VuZGlmCisKIGJvb2wgUmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9wdGlvblNl
dDxTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk+JiBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXF1aXJlc1BhaW50aW5n
KCp0aGlzKSAmJiAhcmVxdWlyZXNQYWludGluZyhvdGhlcikpCkBAIC05ODMsNiArMTA4OSw0MiBA
QCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5
bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5bAogICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YUNo
YW5nZVJlcXVpcmVzUmVwYWludCgqbV9yYXJlSW5oZXJpdGVkRGF0YSwgKm90aGVyLm1fcmFyZUlu
aGVyaXRlZERhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQorICAgIGlmIChVTkxJS0VMWShtX2hhc0N1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0
aWVzIHx8IG90aGVyLm1faGFzQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnRpZXMpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gdXNlIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IgaGVyZS4KKyAgICAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBleHRyYWN0b3IoKEVsZW1l
bnQqKSBudWxscHRyKTsKKworICAgICAgICBmb3IgKGF1dG8qIHdhdGNoUHJvcGVydGllc01hcCA6
IHsgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCh0aGlzKSwgY3VzdG9tUGFp
bnRXYXRjaGVkUHJvcGVydGllc01hcCgpLmdldCgmb3RoZXIpIH0pIHsKKyAgICAgICAgICAgIGlm
ICghd2F0Y2hQcm9wZXJ0aWVzTWFwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUI7CisgICAgICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlO
YW1lKG5hbWUpICYmIGdldEN1c3RvbVByb3BlcnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVBy
b3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAg
ICAgICAgICAgICB2YWx1ZUIgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVy
LmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlE
KG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0
cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWVCID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxl
KG90aGVyLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoKHZhbHVlQSAmJiAhdmFsdWVCKSB8fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICghdmFsdWVB
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICgh
KCp2YWx1ZUEgPT0gKnZhbHVlQikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggM2FjYjFjOWE4Mjc2NDU4NDkzYTJlMjcxMzIwZmM3NzMwMzZlMmIwZS4uYTg3YzdmMjcw
MTZmNjEzYTIwZTQ2MTgxZjdiOWRkNGNhNjFhNzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB1c2luZyBQc2V1
ZG9TdHlsZUNhY2hlID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIDQ+Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1
YWwoY29uc3QgVCYgdCwgY29uc3QgVSYgdSkgeyByZXR1cm4gdCA9PSBzdGF0aWNfY2FzdDxjb25z
dCBUJj4odSk7IH0KIAorI3ByYWdtYSBwYWNrKHB1c2gsIDEpCiBjbGFzcyBSZW5kZXJTdHlsZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTEyNjcsNiArMTI2OCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBl
IHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5
cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisgICAgdm9pZCBhZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgcGFpbnQt
b3JkZXIsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGluZWpvaW4sIGFuZCBzdHJva2UtbWl0ZXJs
aW1pdCBmcm9tIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL3BhaW50Ly4KICAgICB2b2lkIHNldFBh
aW50T3JkZXIoUGFpbnRPcmRlciBvcmRlcikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHBhaW50T3JkZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcikpOyB9CiAgICAgUGFpbnRP
cmRlciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFpbnRPcmRlcj4o
bV9yYXJlSW5oZXJpdGVkRGF0YS0+cGFpbnRPcmRlcik7IH0KQEAgLTE4ODAsNiArMTg4NSwxMCBA
QCBwcml2YXRlOgogICAgIERhdGFSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBtX2luaGVyaXRlZERh
dGE7CiAgICAgSW5oZXJpdGVkRmxhZ3MgbV9pbmhlcml0ZWRGbGFnczsKIAorI2lmIEVOQUJMRShD
U1NfUEFJTlRJTkdfQVBJKQorICAgIGJvb2wgbV9oYXNDdXN0b21QYWludFdhdGNoUHJvcGVydGll
cyB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIC8vIGxpc3Qgb2YgYXNzb2NpYXRlZCBwc2V1ZG8g
c3R5bGVzCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBzZXVkb1N0eWxlQ2FjaGU+IG1fY2FjaGVkUHNl
dWRvU3R5bGVzOwogCkBAIC0xODg5LDYgKzE4OTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
ZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKKyNwcmFnbWEgcGFjayhwb3Ap
CiAKIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50LCBjb25zdCBSZW5kZXJTdHlsZSYpOwog
ZmxvYXQgYWRqdXN0RmxvYXRGb3JBYnNvbHV0ZVpvb20oZmxvYXQsIGNvbnN0IFJlbmRlclN0eWxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYjg4NDNhNmQzYjJhNzNh
Mzg4ZTcwY2ZjYzZjNjA2MzYzY2QyNTFjMS4uMzYwY2ZiMTA0ZTNjYWMxZDZlNzc0YTUwMGQwZjVl
MGUzY2VmYTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTcyLDYg
KzE3Miw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldp
bmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+
CkBAIC0yMzc1LDYgKzIzNzYsMTUgQEAgYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSh1
aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0CiAgICAgcmV0dXJuIERvY3VtZW50Ojph
bGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtYWtlT2JqZWN0SWRlbnRpZmllcjxEb2N1bWVudElk
ZW50aWZpZXJUeXBlPihkb2N1bWVudElkZW50aWZpZXIpKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6
OmlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdAoreworI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQorICAgIHJldHVybiAhV29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3JrbGV0
R2xvYmFsU2NvcGVzU2V0KCkuaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFsczo6c2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDBkYWYwMzNjZDMzNGQ1
NDRlYzEzZDM3YzcxOGQ0ZjdiYTYxYmI1NjYuLjc4MjlmNjAwZTBhNzNkOWIyNGM3ODAzYTcyMjlj
Y2NhZTA1MmYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzg3LDYgKzM4
Nyw4IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9j
dW1lbnQmKSBjb25zdDsKICAgICBib29sIGlzRG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBkb2N1bWVu
dElkZW50aWZpZXIpIGNvbnN0OwogCisgICAgYm9vbCBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFs
aXZlKCkgY29uc3Q7CisKICAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IGI2ZGQ3YjIyYTI2MTk5MGU5OWZlMjYxZWM1Njc3MmUxODc5
ZmEwZTIuLjEzMTA3MzViYzVjNDM3ZDdhZGE5M2IyYjUyZjlhNzBiOGU4YmMyZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY3NCw2ICs2NzQsOCBAQCBlbnVtIENvbXBv
c2l0aW5nUG9saWN5IHsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVy
KERvY3VtZW50IGRvY3VtZW50KTsKICAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZSh1bnNpZ25l
ZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKIAorICAgIGJvb2xlYW4gaXNBbnlXb3Jr
bGV0R2xvYmFsU2NvcGVBbGl2ZSgpOworCiAgICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xl
YXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyOWEyMDBk
MTBkZjNmZDZiN2FjZmJhOTc4OGVjMWM0YmE4YTBhNDMuLjNlM2Q5NTYxZjI2NjczYWY4NTYyOTVh
ODAyYzdhMDQ2NmJkMDQ0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJK
U0NTU1BhaW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUwLDE1ICs1MSwyNSBAQCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyYwogCiBkb3VibGUgUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogewotICAgIGlm
ICghcmVzcG9uc2FibGVEb2N1bWVudCgpIHx8ICFyZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdp
bmRvdygpKQorICAgIGlmICghcmVzcG9uc2libGVEb2N1bWVudCgpIHx8ICFyZXNwb25zaWJsZURv
Y3VtZW50KCktPmRvbVdpbmRvdygpKQogICAgICAgICByZXR1cm4gMS4wOwotICAgIHJldHVybiBy
ZXNwb25zYWJsZURvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kZXZpY2VQaXhlbFJhdGlvKCk7Cisg
ICAgcmV0dXJuIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVs
UmF0aW8oKTsKK30KKworUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6
UGFpbnREZWZpbml0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCog
cGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYgcGFpbnRDYWxsYmFjaywg
VmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRB
cmd1bWVudHMpCisgICAgOiBuYW1lKG5hbWUpCisgICAgLCBwYWludENvbnN0cnVjdG9yKHBhaW50
Q29uc3RydWN0b3IpCisgICAgLCBwYWludENhbGxiYWNrKFdURk1vdmUocGFpbnRDYWxsYmFjaykp
CisgICAgLCBpbnB1dFByb3BlcnRpZXMoV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpKQorICAgICwg
aW5wdXRBcmd1bWVudHMoV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpCit7CiB9CiAKIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLyNyZWdpc3RlcmluZy1jdXN0
b20tcGFpbnQKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdp
c3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJvbmc8SlNPYmplY3Q+IHBhaW50Q29uc3Ry
dWN0b3IpCiB7CiAgICAgYXV0byYgdm0gPSAqcGFpbnRDb25zdHJ1Y3Rvci0+dm0oKTsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0b3IgaXMg
YSBWb2lkRnVuY3Rpb24KQEAgLTY5LDYyICs4MCw3MCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmci
IH07CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7
CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxv
Y2soKSk7CiAKLSAgICBpZiAocGFpbnREZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlz
IG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OworICAgICAgICBpZiAocGFpbnRE
ZWZpbml0aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJl
ZW4gcmVnaXN0ZXJlZCIgfTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVydGllczsK
KyAgICAgICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOwogCi0gICAgSlNWYWx1ZSBp
bnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dFByb3BlcnRpZXMiKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBpbnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlID0g
cGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJpbnB1dFByb3BlcnRpZXMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICBpZiAoIWlucHV0
UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgaW5wdXRQcm9w
ZXJ0aWVzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PihzdGF0ZSwgaW5wdXRQ
cm9wZXJ0aWVzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgaWYgKCFpbnB1
dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICBpbnB1
dFByb3BlcnRpZXMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBp
bnB1dFByb3BlcnRpZXNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIC8v
IEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCisgICAgICAg
IC8vIEZJWE1FOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzIGhlcmUgKHN0ZXAgNykuCiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50czsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
aW5wdXRBcmd1bWVudHM7CiAKLSAgICBKU1ZhbHVlIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1
ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBp
bnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0QXJndW1lbnRzIikpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwogCi0gICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgaW5wdXRBcmd1bWVudHMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7CisgICAgICAgIGlmICghaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlLmlzVW5kZWZp
bmVkKCkpCisgICAgICAgICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7CiAKLSAgICAvLyBGSVhNRTogUGFyc2Ugc3ludGF4IGZvciBpbnB1dEFyZ3Vt
ZW50cyBoZXJlIChzdGVwcyAxMSBhbmQgMTIpLgorICAgICAgICAvLyBGSVhNRTogUGFyc2Ugc3lu
dGF4IGZvciBpbnB1dEFyZ3VtZW50cyBoZXJlIChzdGVwcyAxMSBhbmQgMTIpLgogCi0gICAgSlNW
YWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0T3B0aW9uc1ZhbHVlKTsKKyAgICAgICAgSlNW
YWx1ZSBjb250ZXh0T3B0aW9uc1ZhbHVlID0gcGFpbnRDb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb250ZXh0T3B0aW9ucyIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOwogCi0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBo
ZXJlIChzdGVwIDE0KS4KKyAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkRTZXR0aW5ncyBoZXJlIChzdGVwIDE0KS4KIAotICAgIGlmICghcGFpbnRDb25z
dHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsK
KyAgICAgICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50
IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIgfTsKIAotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwYWlu
dENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIHNlY29uZCBhcmd1bWVu
dCBtdXN0IGhhdmUgYSBwcm90b3R5cGUgdGhhdCBpcyBhbiBvYmplY3QiIH07CisgICAgICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBhIHByb3RvdHlw
ZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKIAotICAgIEpTVmFsdWUgcGFpbnRWYWx1ZSA9IHByb3Rv
dHlwZVZhbHVlLmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGFpbnQi
KSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKKyAgICAgICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBl
VmFsdWUuZ2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgY2xhc3MgbXVzdCBoYXZl
IGEgcGFpbnQgbWV0aG9kIiB9OworICAgICAgICBpZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBt
dXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CiAKLSAgICBSZWZQdHI8SlNDU1NQYWludENhbGxi
YWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJh
Y2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAg
ICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0g
c3RkOjp1bmlxdWVfcHRyPFBhaW50RGVmaW5pdGlvbj4obmV3IFBhaW50RGVmaW5pdGlvbiB7IG5h
bWUsIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIGlucHV0UHJvcGVydGllcywgaW5wdXRBcmd1bWVu
dHMgfSk7Ci0gICAgcGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnRE
ZWZpbml0aW9uKSk7CisgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1
dEFyZ3VtZW50cykpOworICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RG
TW92ZShwYWludERlZmluaXRpb24pKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIGZvciB0aGUg
Y2FzZSB3aGVuIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIHRoZSBwYWludCBkZWZpbml0aW9uIG1h
cCwgYW5kIHRoZSBHQyBpcyBjdXJyZW50bHkgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZC4KKyAg
ICB2bS5oZWFwLndyaXRlQmFycmllcigmZ2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIEZJWE1FOiBj
b25zdHJ1Y3QgZG9jdW1lbnREZWZpbml0aW9uIChzdGVwIDIyKS4KIAorICAgIGlmIChyZXNwb25z
aWJsZURvY3VtZW50KCkgJiYgcmVzcG9uc2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisg
ICAgICAgIHJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZXBhaW50Um9vdENv
bnRlbnRzKCk7CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAyMzI3MWYxNTQyOTE0Yjg1
YjRiMjVmNzkxOTJlYTRjZWNjYThhNTUwLi5mOThlNTc3ZTNkNDlhMTM5NDA2MTYzN2NkZDEyMjUy
ZDViYmZhYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTU1BhaW50Q2Fs
bGJhY2suaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ1LDggKzQ2LDEyIEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxP
YmplY3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHBh
aW50Q29uc3RydWN0b3IpOwogICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAK
LSAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIHsKKyAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9u
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBQYWlu
dERlZmluaXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWlu
dENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBp
bnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpOworCiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOworICAgICAgICAvLyBUaGlzIG1hcCBtdXN0IGJl
IGNsZWFyZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQhCisgICAgICAgIEpTQzo6SlNPYmpl
Y3QqIHBhaW50Q29uc3RydWN0b3IgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IFJlZjxDU1NQ
YWludENhbGxiYWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiBpbnB1dFByb3BlcnRpZXM7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0QXJn
dW1lbnRzOwpAQCAtNTUsOSArNjAsMjYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9uPj4mIHBhaW50RGVmaW5pdGlvbk1hcCgpIHsg
QVNTRVJUKG1fcGFpbnREZWZpbml0aW9uTG9jay5pc0xvY2tlZCgpKTsgcmV0dXJuIG1fcGFpbnRE
ZWZpbml0aW9uTWFwOyB9CiAgICAgTG9jayYgcGFpbnREZWZpbml0aW9uTG9jaygpIHsgcmV0dXJu
IG1fcGFpbnREZWZpbml0aW9uTG9jazsgfQogCisgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKSBmaW5hbAorICAgIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgcGFpbnREZWZpbml0
aW9uTWFwKCkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBXb3JrbGV0R2xvYmFsU2NvcGU6
OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBQYWludFdv
cmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAKKyAgICB+
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAg
ICAgICAgQVNTRVJUKHBhaW50RGVmaW5pdGlvbk1hcCgpLmlzRW1wdHkoKSk7CisjZW5kaWYKKyAg
ICB9CisKICAgICBib29sIGlzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBh
aW50RGVmaW5pdGlvbj4+IG1fcGFpbnREZWZpbml0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYTBkMzAwOWRhOTNhYzQzYjE2
ZTBkZDQwZDA0Y2Y4MmUwMGIyNDBiNS4uM2M1NjE5NjgwM2UxYmNiNDJhODllMjAxODc3MjhmZTZh
Njk0MTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
ay5oPgogCkBAIC00OSwxMiArNDgsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdv
cmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwg
U2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRv
Y3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAg
ICwgbV9zY3JpcHQobWFrZVVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykp
CisgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
Pih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkKLSAgICAsIG1faWRlbnRpZmllcihtYWtlU3RyaW5nKCJXb3JrbGV0R2xvYmFsU2NvcGU6Il9z
LCBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKSkKICAg
ICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQogewor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpLmFkZCh0aGlz
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0KTsKKwogICAgIGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBtX2pzUnVudGltZUZsYWdzID0gZnJhbWUg
PyBmcmFtZS0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCkgOiBKU0M6OlJ1bnRp
bWVGbGFncygpOwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwpAQCAtNjUsOCArNjYsMjYg
QEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY28KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xl
dEdsb2JhbFNjb3BlKCkKIHsKKyAgICBBU1NFUlQoIW1fc2NyaXB0KTsKICAgICByZW1vdmVGcm9t
Q29udGV4dHNNYXAoKTsKLSAgICBtX3NjcmlwdC0+d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcigp
LT5zZXRDb25zb2xlQ2xpZW50KG51bGxwdHIpOworICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gYWxs
V29ya2xldEdsb2JhbFNjb3Blc1NldCgpLnJlbW92ZSh0aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlbW92ZVJlc3VsdCwgcmVtb3ZlUmVzdWx0KTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0KTsKKyAg
ICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOworICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRyYWNr
ZXIoKTsKKyAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOworICAgIG1fc2NyaXB0LT52bSgp
Lm5vdGlmeU5lZWRUZXJtaW5hdGlvbigpOworICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKK30KKwor
YXV0byBXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNTZXQoKSAtPiBX
b3JrbGV0R2xvYmFsU2NvcGVzU2V0JgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3Jr
bGV0R2xvYmFsU2NvcGVzU2V0PiBzY29wZXM7CisgICAgcmV0dXJuIHNjb3BlczsKIH0KIAogU3Ry
aW5nIFdvcmtsZXRHbG9iYWxTY29wZTo6b3JpZ2luKCkgY29uc3QKQEAgLTg4LDcgKzEwNyw3IEBA
IHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpldmFsdWF0ZSgpCiAKIGJvb2wgV29ya2xldEdsb2Jh
bFNjb3BlOjppc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9z
Y3JpcHQtPmlzRXhlY3V0aW9uRm9yYmlkZGVuKCk7CisgICAgcmV0dXJuICFtX3NjcmlwdCB8fCBt
X3NjcmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFs
U2NvcGU6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTEwLDMw
ICsxMjksMzAgQEAgVVJMIFdvcmtsZXRHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25U
b0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4mJiBzdGFjaykKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3Vt
ZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
ZG9jdW1lbnQtPmxvZ0V4Y2VwdGlvblRvQ29uc29sZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKHN0YWNrKSk7CiB9CiAKIHZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlmICghbV9kb2N1bWVudCkK
KyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNz
YWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7CisgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2Uo
KSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCks
IDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1fZG9j
dW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYg
Y2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5h
ZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxT
dGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApp
bmRleCBmMDE1NjRkODY3YzEwYWFjZjljZjBjMWRmNjkwNjVjZmVmMmQ3NWM2Li5jY2VjMGRjZWZi
ODYxOWJkMjU1MmI4M2Y4ZTllNjliNDQ5YmY4YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzgsMjkgKzM4LDM0IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCitlbnVtIFdvcmts
ZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFdvcmtsZXRHbG9iYWxTY29w
ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZp
ZXJUeXBlPjsKKwogY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8
V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKLSAgICB+V29ya2xldEdsb2Jh
bFNjb3BlKCk7CisgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNjb3BlKCk7CisKKyAgICB1c2lu
ZyBXb3JrbGV0R2xvYmFsU2NvcGVzU2V0ID0gSGFzaFNldDxjb25zdCBXb3JrbGV0R2xvYmFsU2Nv
cGUqPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV29ya2xldEdsb2JhbFNjb3Blc1NldCYg
YWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvZGUudXJsKCk7IH0KICAgICBTdHJp
bmcgb3JpZ2luKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlKCk7CiAK
ICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7
CiAKLSAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciYgc2NyaXB0KCkgeyByZXR1cm4gbV9zY3Jp
cHQuZ2V0KCk7IH0KKyAgICBXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1
cm4gbV9zY3JpcHQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogCkBAIC03NCwx
MSArNzksMTUgQEAgcHVibGljOgogCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxh
Z3MoKSBjb25zdCB7IHJldHVybiBtX2pzUnVudGltZUZsYWdzOyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisKIHByb3RlY3RlZDoKICAgICBXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmLCBTY3JpcHRTb3VyY2VDb2RlJiYpOworICAgIFdvcmtsZXRHbG9i
YWxTY29wZShjb25zdCBXb3JrbGV0R2xvYmFsU2NvcGUmKSA9IGRlbGV0ZTsKKyAgICBXb3JrbGV0
R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3BlJiYpID0gZGVsZXRlOwogCi0gICAgRG9jdW1l
bnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0g
ICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNhYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9CisgICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7
IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNp
YmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xMTgsMTAgKzEyNyw5IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIAogICAgIFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFVuaXF1ZVJlZjxXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cj4gbV9zY3JpcHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
PiBtX3NjcmlwdDsKIAogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAg
U3RyaW5nIG1faWRlbnRpZmllcjsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBpbXBsZW1l
bnRlZCBwcm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAw
NTVkN2YxMTY4ZWViNWFjZjA0MmZmMTRiZmM5OWM3M2RjY2I4ZjM3Li4xMTY4OTc4ZTQyNGRmMWM0
OGU0NjFjNTg4OWM3OGZjZGJhMDY3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OSwxMyArNTksMTUgQEAgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyKFdvcmtsZXRHbG9i
YWxTY29wZSogd29ya2xldEdsb2IKIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjp+V29ya2xldFNj
cmlwdENvbnRyb2xsZXIoKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOwotICAgIG1fdm0gPSBudWxscHRyOwor
ICAgIGZvcmJpZEV4ZWN1dGlvbigpOworCiAgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcikgewogICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmNsZWFyRE9NR3Vh
cmRlZE9iamVjdHMoKTsKICAgICAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRD
b25zb2xlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQgPSBudWxscHRy
OwogICAgIH0KKyAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuY2xlYXIoKTsKKyAgICBt
X3ZtID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6Zm9yYmlk
RXhlY3V0aW9uKCkKQEAgLTgyLDYgKzg0LDkgQEAgYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBp
ZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW5pdFNj
cmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CiAKQEAgLTkw
LDYgKzk1LDkgQEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBp
ZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW5pdFNj
cmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSgpIH07CiAKQEAgLTEz
Miw2ICsxNDAsOSBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0
aFN1YmNsYXNzKCkKIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgp
CiB7CisgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4obV93b3JrbGV0R2xvYmFsU2NvcGUp
KSB7CiAgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8SlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVByb3RvdHlwZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU+KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWM5YjQ3MGQ5ZGFkYWVlN2Uy
ZGZiNDkyYmI5NTA3YmQ0NDc1Y2YzLi44ZjJkMGQ1OGY5Y2I4ZjBiNWUxY2UyZTRhYTdmMDEwM2Jm
ODBhYTZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMTEtMTYgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludGluZyBBUEkg
c2hvdWxkIHBhc3MgJ3RoaXMnIGNvcnJlY3RseSB0byBwYWludCBjYWxsYmFjaywgYW5kIHJlcGFp
bnQgd2hlbiBwcm9wZXJ0aWVzIGNoYW5nZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUt
cmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2FuaW1hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy1jdXN0b20tcGFpbnQvbGVha3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxlYWstZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKwogMjAxOC0xMS0xNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRoTl0gVXNlckhhbmRsZSBjYW4gYmUgbnVsbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRl
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+
CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4Owor
ICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJw
YWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MTBjZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAw
IDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQor
ICAocmVjdCAwIDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAx
NTAgMTUwKQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0
YzQ4Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5h
YmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1
ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHBy
b3BlcnRpZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFm
dHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9
InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQ
cm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBn
ZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcp
LnRvU3RyaW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVk
IjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAg
ICAgfQorCisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQp
OworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5k
dW1wQXNUZXh0KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBh
aW50cygpOworICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2Ug
aW1wb3J0V29ya2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxk
IGdvIGF3YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnll
Jyk7CisgIH0sIDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVw
YWludFJlY3RzID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIg
JiYgd2luZG93LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNr
aW5nUmVwYWludHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2
YXIgZHVtbXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3Rz
ID0gd2luZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93
LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHByZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAw
MCk7Cis8L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1h
Z2U6IHBhaW50KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAx
NTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRp
diBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFi
YjBiOTZhMTY1ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBF
IGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdB
UElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBN
aWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdo
ZW4gcHJvcGVydGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczov
L2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIg
dHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBp
bnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChj
dHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1w
cm9wJykudG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9
ICJyZWQiOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7
CisgICAgICB9CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhl
aWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7
Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRX
b3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyku
dGV4dENvbnRlbnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBh
IHByb21pc2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxl
LnNldFByb3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3Jp
cHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludCht
eS1wYWludCk7CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAg
aGVpZ2h0OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50
Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5
MjFiYzg3ZWE0NDg1NDc0YmQ4MmQyZmE0NDFkOWVhYzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgewor
ICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8
Ym9keT4KKyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwv
ZGl2PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9k
aXY+CisgIDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rp
dj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Nv
bnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY1YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4
MjI4ZDljYjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1s
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5h
YmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1
ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlm
IHRoZSBjb25zdHJ1Y3RvciB0aHJvd3MiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRw
czovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29k
ZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICB0aHJvdyAiSGVsbG8hIjsKKyAgICB9CisKKyAgICBwYWludChjdHgsIGdl
b20pIHsKKyAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0
KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBN
eVBhaW50MiB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBn
ZW9tKSB7CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVj
dCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVy
UGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50Mics
IE15UGFpbnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9i
YWxTY29wZUFsaXZlKCkpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycp
LnN0eWxlLmJhY2tncm91bmQgPSAiZ3JlZW4iOworICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0
PgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDog
MTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5
bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNs
YXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48
L2Rpdj4KKyAgPGRpdiBpZD0ibGVha3MiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAx
NTBweDsgaGVpZ2h0OiAxNTBweDsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDNjZTc3N2M5NWM3OTgzYjM3NThlODMwNDFiNmZiNjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCB1c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3Qg
Y2F1c2UgdGhlIHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRp
ZCBub3QgbGVhaworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFr
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGMwYzUyOTJmZjAwNmJkMDA0ZDg3N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1s
CkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBu
YW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9t
aWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRo
YXQgcGFpbnQgd29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9
Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZy
YW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZy
YW1lPgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBh
aW50IGRvZXMgbm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQg
bGVha2VkLiIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWlu
dFNob3VsZERpZSgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgeworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICBpZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRH
bG9iYWxTY29wZUFsaXZlKCkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhhbmRs
ZSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
LCAxMCk7CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAg
ICAgICBwYWludFNob3VsZERpZSgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJXb3JrbGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1s
CmluZGV4IDBhZTY4OGJlMDNlZjNiNWM4MTcxNTdjOGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTVi
MWZmYTQ1OGQ0ZmZjOGRiOTc5NTc0OGYyOWJiMDAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAK
IGNsYXNzIE15UGFpbnQgewogICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJu
IFsnaGVpZ2h0JywgJy0tbXktcHJvcCcsICctLW15LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVy
LXNwZWNpZmllZCJdOyB9CiAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBb
JyonLCAnKicsICcqJ107IH0KKworICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9
IDQyOyB9CisKKyAgdGVzdFRoaXMoKSB7IHJldHVybiB0aGlzLm15QXR0cmlidXRlOyB9CisKICAg
cGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhw
cm9wZXJ0aWVzLmdldCgnaGVpZ2h0JykudG9TdHJpbmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsK
ICAgICBhc3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsK
QEAgLTMwLDYgKzM1LDggQEAgY2xhc3MgTXlQYWludCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9w
ZXJ0aWVzLmdldCgnd2lkdGgnKSwgbnVsbCk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVz
LmdldCgnLS1uZXZlci1zcGVjaWZpZWQnKS50b1N0cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRf
ZXF1YWxzKHRoaXMudGVzdFRoaXMoKSwgNDIpOworCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2
OyBpKyspewogICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewogICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9s
ZWFrcy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291
cmNlcy9sZWFrcy1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2Ri
ZGYyZTM0MDgzMGVjYjU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6
Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0
bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9y
ZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0
cyBkb24ndCBsZWFrIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMu
Y3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7
CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBw
eDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWlu
dCI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citjb25z
dCBnbG9iYWxTY29wZSA9IHRoaXM7CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9t
LCBwcm9wZXJ0aWVzLCBhcmdzKSB7CisgICAgY29uc3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8g
TGVhayEKKyAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwg
MCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFr
ID0gdGhpczsKK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4K
KworPHNjcmlwdD4KK0NTUy5wYWludFdvcmtsZXQuYWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
cmFmLWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4
NGU3YWNjNTJjNTFhMWNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355920</attachid>
            <date>2018-11-28 14:44:05 -0800</date>
            <delta_ts>2018-11-29 13:01:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191443-20181128144404.patch</filename>
            <type>text/plain</type>
            <size>61512</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NmRlMjAxOTE0YjMyZWQyMmY5YmYxZTRjNTNmY2M2M2RlMmM3YTExLi4wNTE4NGE4MzRmNDljMzIz
OGI1ZGE1ODdmYzc3ZmFmNmE3MThiOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAndGhpcycg
Y29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3BlcnRpZXMg
Y2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3J0IHRoZSBzaW1wbGVyIGNvbnN0cnVjdCgpIG1ldGhvZCBmb3IgdXNlIGluIFdlYkNvcmUu
CisKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKwogMjAxOC0xMS0yOCAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBvc3Rwcm9j
ZXNzIEhlYWRlcnMgZGVwZW5kZW5jaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZhMjhhNWNlNzdlZTVhNGI0
NmE5NmJmYjAwNzM4MjAzZDAzMTIwZS4uYjAzNjI3OTk3Njg5YmVlMDg1N2QxY2MyM2QzYTYwZTA5
NTFmNmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTExLTI4ICBKdXN0aW4g
TWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFpbnRp
bmcgQVBJIHNob3VsZCBwYXNzICd0aGlzJyBjb3JyZWN0bHkgdG8gcGFpbnQgY2FsbGJhY2ssIGFu
ZCByZXBhaW50IHdoZW4gcHJvcGVydGllcyBjaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0YW50aWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0
aGUgcGFpbnQgY2xhc3MsIGFuZCBwYXNzIGl0IGFzICd0aGlzJyBvYmplY3Qgd2hlbiB0aGUgcGFp
bnQgY2FsbGJhY2sgaXMgY2FsbGVkLiAKKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBtYWtlcyBz
dXJlIHRoYXQgY3VzdG9tIHBhaW50IGVsZW1lbnRzIGdldCByZXBhaW50ZWQgd2hlbiBwcm9wZXJ0
aWVzIHRoYXQgdGhleSBjYXJlIGFib3V0IGdldCBjaGFuZ2VkLgorICAgICAgICBGaW5hbGx5LCB3
ZSBmaXggdHdvIHJlZmVyZW5jZSBjeWNsZXMgdGhhdCBjYXVzZWQgV29ya2xldEdsb2JhbFNjb3Bl
IHRvIG5ldmVyIGJlIGRlc3Ryb3llZC4KKworICAgICAgICBUZXN0czogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2FuaW1hdGUtcmVwYWludC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYW5pbWF0ZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xl
dEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjU3Rh
dGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFj
ay5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBjc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OkN1c3RvbVBhaW50SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vz
dG9tUGFpbnRXYXRjaFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpj
aGFuZ2VSZXF1aXJlc1JlcGFpbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzQW55V29ya2xl
dEdsb2JhbFNjb3BlQWxpdmUgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpkZXZpY2VQaXhlbFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb246OlBhaW50RGVmaW5pdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
YWludCk6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVz
dHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphbGxXb3Jr
bGV0R2xvYmFsU2NvcGVzU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29w
ZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2Nv
cGU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3Bv
bnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpy
ZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlc3BvbnNhYmxlRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpyZXNwb25zYWJsZURvY3VtZW50IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6fldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjo6ZGlzYWJsZVdlYkFzc2VtYmx5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKwogMjAxOC0xMS0yOCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGUg
ZnJvbSBhbiBlYXJsaWVyIGF0dGVtcHQgYXQgaW1wbGVtZW50aW5nIHNhZmUgYnJvd3NpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCAwOTdj
ZjQ4ODFmNDZlN2U5ZmIwN2RkMWZiMjcwZGJiMWE0ZTJlYjA2Li41OTM4YTkwZDg5Zjk2YzM5MTUx
MGUwNDNjMWFkMjU5M2Y5MzEwODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBDb25zdHJ1Y3REYXRh
IHsKIH07CiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgc28geW91IGRvbid0IG5lZWQgdG8gZGVh
bCB3aXRoIENhbGxEYXRhIGFuZCBDYWxsVHlwZSB1bmxlc3MgeW91IGFyZSBnb2luZyB0byB1c2Ug
dGhlbS4KLUpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CitKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOwogSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNv
bnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJn
TGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogY29u
c3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3Ry
dWN0VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHAKaW5kZXggODlhMzA4MGRhOGI1MzM3ZGEwMTljZWU2YTEzNWVjNzVjYTM4OWM0
MC4uNzk0YTUzODFiNzdlNDhkNjJjNTRkMzcyNGVjOGI3YWI4NWZmYjlkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEpTRE9NT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRleCBh
OGNlYWU2MGJhNzAyNmViN2ViMmUyY2E5MTBiMjFkZWY1MzU5YWVmLi4wMTE4NGE4NDYyNzYwODc4
YzAwZTgzMGJmODFmY2EwZGM0OWFlYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcApA
QCAtMzQsOCArMzQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHZvaWQgSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZWQoKS5wYWludERl
ZmluaXRpb25Mb2NrKCkpOwotICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5w
YWludERlZmluaXRpb25NYXAoKS52YWx1ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQg
OiB3cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVn
aXN0ZXJlZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOworICAgICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3Ip
OworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZmI1YTc1NTY4MmQxNjE0NmE1Yjg5
MmI5Yzc1ZTdhMzU2MTZhN2M2MS4uN2NkODBlNzQxNTdmZmFjZmRhZWQwYzY0ZWE5OWJjZTQ0MmM4
ODZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMjgsNyArMTI4LDggQEAgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtsZXRHbG8KIAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gd29ya2xl
dEdsb2JhbFNjb3BlLnNjcmlwdCgpLndvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKKyAgICBB
U1NFUlQod29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKTsKKyAgICBhdXRvKiBjb250ZXh0V3Jh
cHBlciA9IHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNjb3BlV3Jh
cHBlcigpOwogICAgIEFTU0VSVChjb250ZXh0V3JhcHBlcik7CiAgICAgcmV0dXJuIGNvbnRleHRX
cmFwcGVyLT5wcm94eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuY3BwCmluZGV4IDM3YjBjZGVjYTY1MzU5OWU5OWJiNmE5MDI2M2U4MmMxNTQ5MWQxNWEuLmU5
ODQxMGJlZWUzN2VhZWMyMjMyMGZmNGE4YzZiODIzM2JhNjM0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTEwNiw3ICsxMDYsOSBAQCBKU0M6OkV4
ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTYwogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21Xb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3Bl
JiB3b3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5z
Y3JpcHQoKS53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPmdsb2JhbEV4ZWMoKTsKKyAgICBp
ZiAoIXdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2xldEdsb2JhbFNj
b3BlV3JhcHBlcigpLT5nbG9iYWxFeGVjKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYWludENhbGxiYWNrLmgKaW5kZXggNzU2NTYzYzNiYWQ2OTU5MmM0NDkyOTcxZDIzOWUwZjhk
YWRjMTE1Yy4uMGMwM2YwYWZiZDcxMjQ0OWVkZDA3MTM2ZDY1MzU3N2FlZDc0ZGY2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCkBAIC0zMSwxNiArMzEsMTggQEAKICNpbmNs
dWRlICJDU1NQYWludFNpemUuaCIKICNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgogI2luY2x1
ZGUgIlN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhaW50UmVuZGVyaW5n
Q29udGV4dDJEOwogCi1jbGFzcyBDU1NQYWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBDU1NQ
YWludENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxi
YWNrIHsKIHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2Fs
bGJhY2s7CiAKLSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBh
aW50UmVuZGVyaW5nQ29udGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJl
YWRPbmx5JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFj
a1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChKU0M6OkpTVmFsdWUsIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEJiwgQ1NTUGFpbnRTaXplJiwgU3R5bGVQcm9wZXJ0eU1hcFJlYWRPbmx5JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSA9IDA7CiAKICAgICB2aXJ0dWFsIH5DU1NQYWludENhbGxiYWNrKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKaW5kZXggODY3NTZi
NTFkNDEyM2VjMjI2MjVlMzFjYzMxOWQ4NzUzMzQwMWVkNi4uNzJiNTIzZDI0ZWRiNzlkMjI1MzI2
MWVlYzljMjBiMzE0NDZkZDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
aW50Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNr
LmlkbApAQCAtMjYsNCArMjYsNSBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRp
bmdBUEksCiAgICAgQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwKKyAgICBDYWxsYmFja1Ro
aXNPYmplY3Q9YW55CiBdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQYWludFJl
bmRlcmluZ0NvbnRleHQyRCBjb250ZXh0LCBDU1NQYWludFNpemUgc2l6ZSwgU3R5bGVQcm9wZXJ0
eU1hcFJlYWRPbmx5IHN0eWxlTWFwLCBzZXF1ZW5jZTxVU1ZTdHJpbmc+IGFyZ3VtZW50cyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmgKaW5kZXggYjZiNjljOGY3MTQwYTQ4
YzMzY2JhMzY3OGQyNmVkMjA2MmQ3ZWJkMC4uNDNiY2MxY2FjZDgwZTFiNjk4MGE5Mjc1MWY3OGU1
YmIwNTM5MzJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuaApAQCAt
NDAsNiArNDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1Bh
aW50SW1hZ2VWYWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICB9CiAKKyAgICBj
b25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTUGFpbnRJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9uYW1lID09IG90aGVyLm1fbmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCmluZGV4IGM3YWIzYmJhMDVmYjkwNmQ3YmNhMTUwMTE1MzgzNmJhNDZiMzQ2NDEuLjZhMWNl
NDlkMGM0MDc5Zjk5MGFiMGY5OThiZTY1NTcyNTI2ZTAwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVz
UnVsZS5oIgorI2luY2x1ZGUgIkNTU1BhaW50SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Bh
cnNlci5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTWVkaWFR
dWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlBhZ2VSdWxlQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE3MTcsNiArMTcxOSwxOCBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUq
IHZhbHVlLCBBcHBseUNhc2NhZAogICAgIGlmIChpc0luaGVyaXQgJiYgIUNTU1Byb3BlcnR5Ojpp
c0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0SGFzRXhw
bGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorICAgIGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkpICYmIGRv
Y3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgeworICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1hcCIgZnJv
bSB0aGUgc3BlYywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgcGFpbnRX
b3JrbGV0ID0gKmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9uTG9jaygp
KTsKKyAgICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERl
ZmluaXRpb25NYXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0Fw
cGx5KS5uYW1lKCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0
cmF0aW9uLT5pbnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+
YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZgorCiAgICAgLy8gVXNlIHRoZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgogICAgIFN0
eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlzSW5p
dGlhbCwgaXNJbmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggMmFjNWJiZWY3YTdmMjA2ZDdkM2U5MTg3YzJhZTA4NTY0Njc2MTVk
Mi4uZGUwODE4MTdhM2NkNDU0NDY1NzY4ODgyMDliMTVmOTc4ODI5ZDQzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0yNTMxLDYgKzI1MzEsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFy
ZUZvckRlc3RydWN0aW9uKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQorICAgIGlmIChtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1f
cGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAg
ICBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwog
ICAgIG1faGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICAvLyBOb3RlIHRo
YXQgbV9wYWdlQ2FjaGVTdGF0ZSBjYW4gYmUgRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNo
ZSBpZiBvdXIgZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAppbmRleCBkOGY2MGUyOWQzOWNmZmE5OTgyMDFkOTI4YWRhOGIzNzI0ZjZiYmI5Li45
YmE0ODE5ZGY3NTE5MmYyZjg0YzY0YWUxZjczYzQzODJlZDJiM2M4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODIsNyArNDgyLDcgQEAg
SlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKQogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKICNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKICAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5z
Y3JpcHQoKS52bSgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3Bl
PigqdGhpcykuc2NyaXB0KCktPnZtKCk7CiAjZW5kaWYKIAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IDQzOTYyYzUyNmNiY2VlY2JiMGQ1ODI1MDhkMDJk
ODUzODZhNDBhNTguLjAzNGRhNTYxZmU2YjI4MjI0NWM4MzA5MWFjM2RlMWUyODdmNzgzM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC00MCwxMSArNDAsMTIgQEAKICNpbmNsdWRlICJKU0NTU1BhaW50Q2FsbGJh
Y2suaCIKICNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIlJl
bmRlckVsZW1lbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zdHJ1Y3REYXRhLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFpbnRJ
bWFnZShjb25zdCBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZp
bml0aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBtX3BhaW50Q2FsbGJhY2soZGVm
aW5pdGlvbi5wYWludENhbGxiYWNrLmdldCgpKQorQ3VzdG9tUGFpbnRJbWFnZTo6Q3VzdG9tUGFp
bnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uJiBkZWZpbml0
aW9uLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlckVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBtX3BhaW50RGVmaW5pdGlvbihtYWtl
V2Vha1B0cihkZWZpbml0aW9uKSkKICAgICAsIG1faW5wdXRQcm9wZXJ0aWVzKGRlZmluaXRpb24u
aW5wdXRQcm9wZXJ0aWVzKQogICAgICwgbV9lbGVtZW50KG1ha2VXZWFrUHRyKGVsZW1lbnQpKQog
ICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNTYsMTMgKzU3LDIwIEBAIEN1c3RvbVBh
aW50SW1hZ2U6On5DdXN0b21QYWludEltYWdlKCkgPSBkZWZhdWx0OwogCiBJbWFnZURyYXdSZXN1
bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGRlc3RTaXplKQogewotICAgIGlmICghbV9lbGVtZW50
IHx8ICFtX2VsZW1lbnQtPmVsZW1lbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVt
ZW50LT5lbGVtZW50KCkgfHwgIW1fcGFpbnREZWZpbml0aW9uKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCisgICAgSlNDOjpKU1ZhbHVlIHBhaW50Q29uc3Ry
dWN0b3IobV9wYWludERlZmluaXRpb24tPnBhaW50Q29uc3RydWN0b3IpOworCisgICAgaWYgKCFw
YWludENvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3Ro
aW5nOworCisgICAgYXV0byYgcGFpbnRDYWxsYmFjayA9IG1fcGFpbnREZWZpbml0aW9uLT5wYWlu
dENhbGxiYWNrLmdldCgpOworCiAgICAgQVNTRVJUKCFtX2VsZW1lbnQtPm5lZWRzTGF5b3V0KCkp
OwogICAgIEFTU0VSVCghbV9lbGVtZW50LT5lbGVtZW50KCktPmRvY3VtZW50KCkubmVlZHNTdHls
ZVJlY2FsYygpKTsKIAotICAgIEpTQ1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxKU0NTU1BhaW50Q2FsbGJhY2smPihtX3BhaW50Q2FsbGJhY2suZ2V0KCkpOworICAgIEpT
Q1NTUGFpbnRDYWxsYmFjayYgY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxKU0NTU1BhaW50Q2FsbGJh
Y2smPihwYWludENhbGxiYWNrKTsKICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
Y2FsbGJhY2suc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsK
QEAgLTEwMyw3ICsxMTEsMjEgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvIHNp
emUgPSBDU1NQYWludFNpemU6OmNyZWF0ZShkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWln
aHQoKSk7CiAgICAgYXV0byBwcm9wZXJ0eU1hcCA9IFN0eWxlUHJvcGVydHlNYXBSZWFkT25seTo6
Y3JlYXRlKFdURk1vdmUocHJvcGVydHlWYWx1ZXMpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9w
YWludENhbGxiYWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCwgc2l6ZSwgcHJvcGVydHlNYXAsIG1f
YXJndW1lbnRzKTsKKyAgICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLmdldE9iamVjdCgp
LT52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcGFp
bnRDb25zdHJ1Y3Rvci5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBhdXRvJiBz
dGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOworICAgIEpTQzo6QXJnTGlzdCBub0Fy
Z3M7CisgICAgSlNDOjpKU1ZhbHVlIHRoaXNPYmplY3QgPSB7IEpTQzo6Y29uc3RydWN0KCZzdGF0
ZSwgV1RGTW92ZShwYWludENvbnN0cnVjdG9yKSwgbm9BcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVj
dCBwYWludCBjbGFzcyIpIH07CisKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKKyAgICB9CisKKyAg
ICBhdXRvIHJlc3VsdCA9IHBhaW50Q2FsbGJhY2suaGFuZGxlRXZlbnQoV1RGTW92ZSh0aGlzT2Jq
ZWN0KSwgKmNvbnRleHQsIHNpemUsIHByb3BlcnR5TWFwLCBtX2FyZ3VtZW50cyk7CiAgICAgaWYg
KHJlc3VsdC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggZDMwNjc5Mzk3
NzIwMGNjZGJjZGM5ZTIzYjc2YzUzMDc4MjJjZjc2Ni4uNjhiNDBjOTllY2FiM2E1ZTNlMGM5MmIy
YjAxM2Q3ODY1MWE3MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAi
R2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvV2Vhay5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM4LDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgQ3Vz
dG9tUGFpbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBHZW5lcmF0ZWRJbWFnZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxDdXN0b21QYWludEltYWdlPiBjcmVhdGUoY29uc3QgUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbiYgZGVmaW5pdGlvbiwgY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJn
dW1lbnRzKQorICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRJbWFnZT4gY3JlYXRlKFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24mIGRlZmluaXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBh
aW50SW1hZ2UoZGVmaW5pdGlvbiwgc2l6ZSwgZWxlbWVudCwgYXJndW1lbnRzKSk7CiAgICAgfQpA
QCAtNDcsMTQgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ3VzdG9tUGFpbnRJbWFnZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBDdXN0b21Q
YWludEltYWdlKGNvbnN0IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24m
LCBjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGFyZ3VtZW50cyk7CisgICAgQ3VzdG9tUGFpbnRJbWFnZShQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6UGFpbnREZWZpbml0aW9uJiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyRWxlbWVudCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRv
Q3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCi0gICAg
UmVmPENTU1BhaW50Q2FsbGJhY2s+IG1fcGFpbnRDYWxsYmFjazsKKyAgICBXZWFrUHRyPFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwog
ICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwogICAgIFdlYWtQdHI8UmVuZGVy
RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggYTU3
ZDFjNThjOWU3NjQwMzA1MmUxMzllNDdiZDZkODk0ZTRjOTg4MC4uZmFmOWNhMDhiNTU0ZDg4MmQ2
OGIyMzQ1YzhmNWE2Mzc1N2IxZDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0yMywxMCArMjMsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29udGVudERhdGEu
aCIKKyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisj
aW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVk
ZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCkBAIC05NjIs
NiArOTY0LDE2IEBAIHN0YXRpYyBib29sIHJhcmVJbmhlcml0ZWREYXRhQ2hhbmdlUmVxdWlyZXNS
ZXBhaW50KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmCiAgICAgOwogfQogCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXN0b21QYWludFdh
dGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8mIGRhdGEgPSBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOworICAgIGlmICghZGF0YS5jdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzKQorICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICBkYXRhLmN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChuYW1lKTsKK30KKyNlbmRpZgorCiBib29sIFJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVy
LCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5PiYgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewogICAgIGlmICghcmVxdWly
ZXNQYWludGluZygqdGhpcykgJiYgIXJlcXVpcmVzUGFpbnRpbmcob3RoZXIpKQpAQCAtOTgzLDYg
Kzk5NSw0NSBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoY29uc3Qg
UmVuZGVyU3R5bGUmIG90aGVyLCBPcHRpb25TZXQ8U3R5bAogICAgICAgICAmJiByYXJlSW5oZXJp
dGVkRGF0YUNoYW5nZVJlcXVpcmVzUmVwYWludCgqbV9yYXJlSW5oZXJpdGVkRGF0YSwgKm90aGVy
Lm1fcmFyZUluaGVyaXRlZERhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorICAgIGF1dG8qIHByb3BlcnRpZXNBID0gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5wdHIoKS0+Y3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcy5nZXQoKTsKKyAg
ICBhdXRvKiBwcm9wZXJ0aWVzQiA9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEucHRyKCkt
PmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMuZ2V0KCk7CisKKyAgICBpZiAoVU5MSUtFTFko
cHJvcGVydGllc0EgfHwgcHJvcGVydGllc0IpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgbm90IG5lZWQgdG8gdXNlIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgaGVyZS4KKyAgICAgICAg
Q29tcHV0ZWRTdHlsZUV4dHJhY3RvciBleHRyYWN0b3IoKEVsZW1lbnQqKSBudWxscHRyKTsKKwor
ICAgICAgICBmb3IgKGF1dG8qIHdhdGNoUHJvcGVydGllc01hcCA6IHsgcHJvcGVydGllc0EsIHBy
b3BlcnRpZXNCIH0pIHsKKyAgICAgICAgICAgIGlmICghd2F0Y2hQcm9wZXJ0aWVzTWFwKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiAq
d2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZUE7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUI7CisgICAgICAg
ICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKG5hbWUpICYmIGdldEN1c3RvbVByb3Bl
cnR5KG5hbWUpICYmIG90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqZ2V0Q3Vz
dG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKm90aGVyLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIXByb3BlcnR5SUQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWVBID0gZXh0cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0
eWxlKCp0aGlzLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0gZXh0
cmFjdG9yLnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKG90aGVyLCBwcm9wZXJ0eUlEKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoKHZhbHVlQSAmJiAhdmFsdWVCKSB8
fCAoIXZhbHVlQSAmJiB2YWx1ZUIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgICAgIGlmICghdmFsdWVBKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghKCp2YWx1ZUEgPT0gKnZhbHVlQikpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggM2FjYjFjOWE4Mjc2NDU4NDkzYTJl
MjcxMzIwZmM3NzMwMzZlMmIwZS4uZGJhYWYwYzc2M2VlZGNkNWRkNmEzYzE2Y2YxNmI3ZWE0NDk2
MTIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
QEAgLTEyNjcsNiArMTI2NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBsZVBheUJ1dHRv
blR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBhcHBsZVBheUJ1dHRvblR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgdm9pZCBhZGRD
dXN0b21QYWludFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZgorCiAg
ICAgLy8gU3VwcG9ydCBmb3IgcGFpbnQtb3JkZXIsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGlu
ZWpvaW4sIGFuZCBzdHJva2UtbWl0ZXJsaW1pdCBmcm9tIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3Jn
L3BhaW50Ly4KICAgICB2b2lkIHNldFBhaW50T3JkZXIoUGFpbnRPcmRlciBvcmRlcikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHBhaW50T3JkZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihvcmRlcikpOyB9CiAgICAgUGFpbnRPcmRlciBwYWludE9yZGVyKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UGFpbnRPcmRlcj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cGFpbnRPcmRlcik7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCAwODA2NjdiMDg4OGU0ZDJkYWY2N2E5ZjMx
ZTY4MWFiNDllZTQ3ZDY2Li5hMzEyYmRhZWJkNWY1NTg3ZWExMmRiMDgxNzE3NGFkMGE5MTc4ZDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xNjksNiArMTY5LDcgQEAgaW5saW5lIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3Qg
U3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAs
IGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3Vz
dG9tUHJvcGVydGllcykKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgICwgdG91Y2hBY3Rpb24oby50b3VjaEFjdGlvbikKICNlbmRp
ZgpAQCAtMjcxLDYgKzI3Miw4IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3Bl
cmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYm
IGp1c3RpZnlJdGVtcyA9PSBvLmp1c3RpZnlJdGVtcwogICAgICAgICAmJiBqdXN0aWZ5U2VsZiA9
PSBvLmp1c3RpZnlTZWxmCiAgICAgICAgICYmIGN1c3RvbVByb3BlcnRpZXMgPT0gby5jdXN0b21Q
cm9wZXJ0aWVzCisgICAgICAgICYmICgoY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyAmJiBv
LmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgJiYgKmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMgPT0gKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykKKyAgICAgICAgICAgIHx8
ICghY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyAmJiAhby5jdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzKSkKICAgICAgICAgJiYgcGFnZVNpemVUeXBlID09IG8ucGFnZVNpemVUeXBlCiAg
ICAgICAgICYmIHRyYW5zZm9ybVN0eWxlM0QgPT0gby50cmFuc2Zvcm1TdHlsZTNECiAgICAgICAg
ICYmIGJhY2tmYWNlVmlzaWJpbGl0eSA9PSBvLmJhY2tmYWNlVmlzaWJpbGl0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmgKaW5kZXggZDQxMWNiMjU4NGRiNDM5OGQ2OWViOGQ4NzY2ZGZhNGYwNmQ1M2NhMy4u
ZjliYWExNDIzMDVkMjIwNzc0ZWYyNmMwNGJlMmUzYjI4ODFhYTk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgcHVibGljOgogICAgIFN0eWxlU2VsZkFsaWdubWVu
dERhdGEganVzdGlmeVNlbGY7CiAKICAgICBEYXRhUmVmPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
PiBjdXN0b21Qcm9wZXJ0aWVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+
IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXM7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIHVuc2lnbmVkIHRvdWNoQWN0aW9uIDogMTsgLy8gVG91Y2hBY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyZmI2NzZkNGZiOTkxYTM4OGI4NTk0M2JiNzkw
NDFlODc0ODlmNmI4Li5iMTFhMzI1OThhZjJmZGI4ZTgyZWYwYzc0YzNhZmVjY2E3ODk3ZDUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzMsNiArMTczLDcgQEAKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHkuaCIK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3QuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KQEAgLTIzODcsNiAr
MjM4OCwxNSBAQCBib29sIEludGVybmFsczo6aXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3Vt
ZW50SWRlbnRpZmllcikgY29uc3QKICAgICByZXR1cm4gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01h
cCgpLmNvbnRhaW5zKG1ha2VPYmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+
KGRvY3VtZW50SWRlbnRpZmllcikpOwogfQogCitib29sIEludGVybmFsczo6aXNBbnlXb3JrbGV0
R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
CisgICAgcmV0dXJuICFXb3JrbGV0R2xvYmFsU2NvcGU6OmFsbFdvcmtsZXRHbG9iYWxTY29wZXNT
ZXQoKS5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBT
dHJpbmcgSW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOTQzOTY3ZjBkYTg3OGYxZTgzNWQ0NmY0ZTEz
ZTE0MGM3OTEzOWUwNy4uOGFlMzQ0M2JiMTBhZGJkNTFmYTAxY2E1MjYyMzIwYmMwZTVjOGYzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zODgsNiArMzg4LDggQEAgcHVibGlj
OgogICAgIHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0
OwogICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcikg
Y29uc3Q7CiAKKyAgICBib29sIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdDsK
KwogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVu
dCYpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBvcGVuRHVtbXlJbnNwZWN0b3JG
cm9udGVuZChjb25zdCBTdHJpbmcmIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggYTE3MDVlZGNiZGYyNzM1MTBhMGNmMzQzZTA3ZDJlZDc4NDFhZjIwNi4uMjcxOTM0
NjExNGJkMGNiYjE2ZTAxNDUyMDYyZjFmZTRmNjJjZjk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtNjc1LDYgKzY3NSw4IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kg
ewogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9j
dW1lbnQpOwogICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9uZyBk
b2N1bWVudElkZW50aWZpZXIpOwogCisgICAgYm9vbGVhbiBpc0FueVdvcmtsZXRHbG9iYWxTY29w
ZUFsaXZlKCk7CisKICAgICBET01TdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIo
RG9jdW1lbnQgZG9jdW1lbnQpOwogCiAgICAgUHJvbWlzZTx2b2lkPiBjbGVhckNhY2hlU3RvcmFn
ZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggYTI5YTIwMGQxMGRmM2ZkNmI3YWNm
YmE5Nzg4ZWMxYzRiYThhMGE0My4uM2UzZDk1NjFmMjY2NzNhZjg1NjI5NWE4MDJjN2EwNDY2YmQw
NDRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxs
YmFjay5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydFNlcXVlbmNlcy5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTUgKzUx
LDI1IEBAIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZShE
b2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjCiAKIGRvdWJsZSBQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZXNwb25zYWJs
ZURvY3VtZW50KCkgfHwgIXJlc3BvbnNhYmxlRG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCisgICAg
aWYgKCFyZXNwb25zaWJsZURvY3VtZW50KCkgfHwgIXJlc3BvbnNpYmxlRG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpCiAgICAgICAgIHJldHVybiAxLjA7Ci0gICAgcmV0dXJuIHJlc3BvbnNhYmxlRG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0aW8oKTsKKyAgICByZXR1cm4gcmVz
cG9uc2libGVEb2N1bWVudCgpLT5kb21XaW5kb3coKS0+ZGV2aWNlUGl4ZWxSYXRpbygpOworfQor
CitQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOjpQYWludERlZmluaXRp
b24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVj
dG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiBwYWludENhbGxiYWNrLCBWZWN0b3I8U3RyaW5n
PiYmIGlucHV0UHJvcGVydGllcywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cykKKyAg
ICA6IG5hbWUobmFtZSkKKyAgICAsIHBhaW50Q29uc3RydWN0b3IocGFpbnRDb25zdHJ1Y3RvcikK
KyAgICAsIHBhaW50Q2FsbGJhY2soV1RGTW92ZShwYWludENhbGxiYWNrKSkKKyAgICAsIGlucHV0
UHJvcGVydGllcyhXVEZNb3ZlKGlucHV0UHJvcGVydGllcykpCisgICAgLCBpbnB1dEFyZ3VtZW50
cyhXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSkKK3sKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGkvI3JlZ2lzdGVyaW5nLWN1c3RvbS1wYWludAogRXhj
ZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFN0cm9uZzxKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3RvcikKIHsKICAg
ICBhdXRvJiB2bSA9ICpwYWludENvbnN0cnVjdG9yLT52bSgpOworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIC8vIFZhbGlkYXRlIHRoYXQgcGFpbnRDb25zdHJ1Y3RvciBpcyBhIFZvaWRGdW5jdGlv
bgpAQCAtNjksNjIgKzgwLDcwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICBpZiAobmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUg
Zmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICB7CisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKIAotICAg
IGlmIChwYWludERlZmluaXRpb25NYXAoKS5jb250YWlucyhuYW1lKSkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgbmFtZSBoYXMgYWxy
ZWFkeSBiZWVuIHJlZ2lzdGVyZWQiIH07CisgICAgICAgIGlmIChwYWludERlZmluaXRpb25NYXAo
KS5jb250YWlucyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
TW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVk
IiB9OwogCi0gICAgVmVjdG9yPFN0cmluZz4gaW5wdXRQcm9wZXJ0aWVzOworICAgICAgICBWZWN0
b3I8U3RyaW5nPiBpbnB1dFByb3BlcnRpZXM7CiAKLSAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGll
c0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVydGllcyIpKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAg
ICAgICBKU1ZhbHVlIGlucHV0UHJvcGVydGllc0l0ZXJhYmxlVmFsdWUgPSBwYWludENvbnN0cnVj
dG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlucHV0UHJvcGVy
dGllcyIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgIGlmICghaW5wdXRQcm9wZXJ0aWVzSXRl
cmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBpbnB1dFByb3BlcnRpZXMgPSBjb252
ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCBpbnB1dFByb3BlcnRpZXNJdGVy
YWJsZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBpZiAoIWlucHV0UHJvcGVydGllc0l0
ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIGlucHV0UHJvcGVydGllcyA9
IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGlucHV0UHJvcGVydGll
c0l0ZXJhYmxlVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgLy8gRklYTUU6IFZhbGlk
YXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KKyAgICAgICAgLy8gRklYTUU6IFZh
bGlkYXRlIGlucHV0IHByb3BlcnRpZXMgaGVyZSAoc3RlcCA3KS4KIAotICAgIFZlY3RvcjxTdHJp
bmc+IGlucHV0QXJndW1lbnRzOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBpbnB1dEFyZ3VtZW50
czsKIAotICAgIEpTVmFsdWUgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlID0gcGFpbnRDb25z
dHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJpbnB1dEFy
Z3VtZW50cyIpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAgICAgICBKU1ZhbHVlIGlucHV0QXJndW1lbnRz
SXRlcmFibGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3ItPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiaW5wdXRBcmd1bWVudHMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAK
LSAgICBpZiAoIWlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAg
ICAgICBpbnB1dEFyZ3VtZW50cyA9IGNvbnZlcnQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4o
c3RhdGUsIGlucHV0QXJndW1lbnRzSXRlcmFibGVWYWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKyAgICAg
ICAgaWYgKCFpbnB1dEFyZ3VtZW50c0l0ZXJhYmxlVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgICAgIGlucHV0QXJndW1lbnRzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+
PihzdGF0ZSwgaW5wdXRBcmd1bWVudHNJdGVyYWJsZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsK
IAotICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0QXJndW1lbnRzIGhlcmUgKHN0
ZXBzIDExIGFuZCAxMikuCisgICAgICAgIC8vIEZJWE1FOiBQYXJzZSBzeW50YXggZm9yIGlucHV0
QXJndW1lbnRzIGhlcmUgKHN0ZXBzIDExIGFuZCAxMikuCiAKLSAgICBKU1ZhbHVlIGNvbnRleHRP
cHRpb25zVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImNvbnRleHRPcHRpb25zIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNvbnRleHRPcHRpb25zVmFsdWUpOworICAgICAgICBKU1ZhbHVlIGNvbnRleHRP
cHRpb25zVmFsdWUgPSBwYWludENvbnN0cnVjdG9yLT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImNvbnRleHRPcHRpb25zIikpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworICAg
ICAgICBVTlVTRURfUEFSQU0oY29udGV4dE9wdGlvbnNWYWx1ZSk7CiAKLSAgICAvLyBGSVhNRTog
Q29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIGhlcmUgKHN0ZXAgMTQp
LgorICAgICAgICAvLyBGSVhNRTogQ29udmVydCB0byBQYWludFJlbmRlcmluZ0NvbnRleHQyRFNl
dHRpbmdzIGhlcmUgKHN0ZXAgMTQpLgogCi0gICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0Nv
bnN0cnVjdG9yKHZtKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRo
ZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIiB9OworICAgICAgICBpZiAo
IXBhaW50Q29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNv
bnN0cnVjdG9yIiB9OwogCi0gICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3Ry
dWN0b3ItPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHBhaW50Q29uc3RydWN0b3It
PmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7CiAKLSAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgaGF2ZSBh
IHByb3RvdHlwZSB0aGF0IGlzIGFuIG9iamVjdCIgfTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGVW
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciwgIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBoYXZlIGEgcHJvdG90eXBlIHRoYXQgaXMgYW4g
b2JqZWN0IiB9OwogCi0gICAgSlNWYWx1ZSBwYWludFZhbHVlID0gcHJvdG90eXBlVmFsdWUuZ2V0
KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwYWludCIpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOworICAgICAgICBKU1ZhbHVlIHBhaW50VmFsdWUgPSBwcm90b3R5cGVWYWx1ZS5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBhaW50IikpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOwogCi0gICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRo
b2QiIH07CisgICAgICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBh
aW50IG1ldGhvZCIgfTsKIAotICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBw
YWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisgICAgICAgIFJlZlB0cjxK
U0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpT
Q1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOwogCi0gICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6OnVuaXF1ZV9w
dHI8UGFpbnREZWZpbml0aW9uPihuZXcgUGFpbnREZWZpbml0aW9uIHsgbmFtZSwgcGFpbnQucmVs
ZWFzZU5vbk51bGwoKSwgaW5wdXRQcm9wZXJ0aWVzLCBpbnB1dEFyZ3VtZW50cyB9KTsKLSAgICBw
YWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsK
KyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50RGVm
aW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51
bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7
CisgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVm
aW5pdGlvbikpOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBjYXNlIHdoZW4gd2Ug
aGF2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlIHBhaW50IGRlZmluaXRpb24gbWFwLCBhbmQgdGhlIEdD
IGlzIGN1cnJlbnRseSBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKCZnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gRklYTUU6IGNvbnN0cnVjdCBkb2N1
bWVudERlZmluaXRpb24gKHN0ZXAgMjIpLgogCisgICAgaWYgKHJlc3BvbnNpYmxlRG9jdW1lbnQo
KSAmJiByZXNwb25zaWJsZURvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICAgICAgcmVzcG9u
c2libGVEb2N1bWVudCgpLT5yZW5kZXJWaWV3KCktPnJlcGFpbnRSb290Q29udGVudHMoKTsKKwog
ICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDIzMjcxZjE1NDI5MTRiODViNGIyNWY3OTE5MmVh
NGNlY2NhOGE1NTAuLmY5OGU1NzdlM2Q0OWExMzk0MDYxNjM3Y2RkMTIyNTJkNWJiZmFhNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFpbnRDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtNDUsOCArNDYsMTIgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gcGFpbnRDb25zdHJ1Y3Rv
cik7CiAgICAgZG91YmxlIGRldmljZVBpeGVsUmF0aW8oKSBjb25zdDsKIAotICAgIHN0cnVjdCBQ
YWludERlZmluaXRpb24geworICAgIHN0cnVjdCBQYWludERlZmluaXRpb24gOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UGFpbnREZWZpbml0aW9uPiB7CisgICAgICAgIFBhaW50RGVmaW5pdGlvbihj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3Is
IFJlZjxDU1NQYWludENhbGxiYWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGll
cywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cyk7CisKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nIG5hbWU7CisgICAgICAgIC8vIFRoaXMgbWFwIG11c3QgYmUgY2xlYXJlZCBiZWZv
cmUgdGhlIHZtIGlzIGRlc3Ryb3llZCEKKyAgICAgICAgSlNDOjpKU09iamVjdCogcGFpbnRDb25z
dHJ1Y3RvciB7IG51bGxwdHIgfTsKICAgICAgICAgY29uc3QgUmVmPENTU1BhaW50Q2FsbGJhY2s+
IHBhaW50Q2FsbGJhY2s7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGlucHV0UHJvcGVy
dGllczsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gaW5wdXRBcmd1bWVudHM7CkBAIC01
NSw5ICs2MCwyNiBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0
cjxQYWludERlZmluaXRpb24+PiYgcGFpbnREZWZpbml0aW9uTWFwKCkgeyBBU1NFUlQobV9wYWlu
dERlZmluaXRpb25Mb2NrLmlzTG9ja2VkKCkpOyByZXR1cm4gbV9wYWludERlZmluaXRpb25NYXA7
IH0KICAgICBMb2NrJiBwYWludERlZmluaXRpb25Mb2NrKCkgeyByZXR1cm4gbV9wYWludERlZmlu
aXRpb25Mb2NrOyB9CiAKKyAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpIGZpbmFsCisg
ICAgeworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50
RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5jbGVh
cigpOworICAgICAgICB9CisgICAgICAgIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRl
c3RydWN0aW9uKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIFBhaW50V29ya2xldEdsb2JhbFNj
b3BlKERvY3VtZW50JiwgU2NyaXB0U291cmNlQ29kZSYmKTsKIAorICAgIH5QYWludFdvcmtsZXRH
bG9iYWxTY29wZSgpCisgICAgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBBU1NFUlQo
cGFpbnREZWZpbml0aW9uTWFwKCkuaXNFbXB0eSgpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIGJv
b2wgaXNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnREZWZpbml0aW9u
Pj4gbV9wYWludERlZmluaXRpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMGQzMDA5ZGE5M2FjNDNiMTZlMGRkNDBkMDRjZjgy
ZTAwYjI0MGI1Li4zYzU2MTk2ODAzZTFiY2I0MmE4OWUyMDE4NzcyOGZlNmE2OTQxMDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5
LDcgKzM5LDYgQEAKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAKQEAgLTQ5
LDEyICs0OCwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VD
b2RlJiYgY29kZSkKICAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAg
ICwgbV9zZXNzaW9uSUQobV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdCht
YWtlVW5pcXVlUmVmPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2Ny
aXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAg
ICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQotICAgICwgbV9p
ZGVudGlmaWVyKG1ha2VTdHJpbmcoIldvcmtsZXRHbG9iYWxTY29wZToiX3MsIEluc3BlY3Rvcjo6
SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpKQogICAgICwgbV9ldmVudFF1
ZXVlKCp0aGlzKQogICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCiB7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBhbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0KCkuYWRkKHRoaXMpOworICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQpOworCiAgICAgYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpOwogICAgIG1fanNSdW50aW1lRmxhZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0
aW5ncygpLmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoKSA6IEpTQzo6UnVudGltZUZsYWdzKCk7CiAg
ICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CkBAIC02NSw4ICs2NiwyNiBAQCBXb3JrbGV0R2xv
YmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNv
dXJjZUNvZGUmJiBjbwogCiBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUo
KQogeworICAgIEFTU0VSVCghbV9zY3JpcHQpOwogICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgp
OwotICAgIG1fc2NyaXB0LT53b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCktPnNldENvbnNvbGVD
bGllbnQobnVsbHB0cik7CisgICAgYXV0byByZW1vdmVSZXN1bHQgPSBhbGxXb3JrbGV0R2xvYmFs
U2NvcGVzU2V0KCkucmVtb3ZlKHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlUmVzdWx0
LCByZW1vdmVSZXN1bHQpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZv
ckRlc3RydWN0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9zY3JpcHQpOworICAgIHN0b3BBY3RpdmVE
T01PYmplY3RzKCk7CisgICAgcmVtb3ZlUmVqZWN0ZWRQcm9taXNlVHJhY2tlcigpOworICAgIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgbV9zY3JpcHQtPnZtKCkubm90aWZ5TmVlZFRl
cm1pbmF0aW9uKCk7CisgICAgbV9zY3JpcHQgPSBudWxscHRyOworfQorCithdXRvIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpIC0+IFdvcmtsZXRHbG9iYWxT
Y29wZXNTZXQmCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmtsZXRHbG9iYWxTY29w
ZXNTZXQ+IHNjb3BlczsKKyAgICByZXR1cm4gc2NvcGVzOwogfQogCiBTdHJpbmcgV29ya2xldEds
b2JhbFNjb3BlOjpvcmlnaW4oKSBjb25zdApAQCAtODgsNyArMTA3LDcgQEAgdm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmV2YWx1YXRlKCkKIAogYm9vbCBXb3JrbGV0R2xvYmFsU2NvcGU6OmlzSlNF
eGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVj
dXRpb25Gb3JiaWRkZW4oKTsKKyAgICByZXR1cm4gIW1fc2NyaXB0IHx8IG1fc2NyaXB0LT5pc0V4
ZWN1dGlvbkZvcmJpZGRlbigpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlzYWJs
ZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMTAsMzAgKzEyOSwzMCBAQCBV
UkwgV29ya2xldEdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3QKIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNr
KQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CiAgICAgbV9kb2N1bWVudC0+bG9n
RXhjZXB0aW9uVG9Db25zb2xlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIFdURk1vdmUoc3RhY2spKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPiYmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQorICAgIGlmICghbV9k
b2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3Nh
Z2UpKTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50
eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1bWVudCkKKyAgICBp
ZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiYmIGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
VGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2ln
bmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBp
ZiAoIW1fZG9jdW1lbnQpCisgICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291
cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAg
bV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNrKSwgbnVsbHB0
ciwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IGYwMTU2NGQ4
NjdjMTBhYWNmOWNmMGMxZGY2OTA2NWNmZWYyZDc1YzYuLmNjZWMwZGNlZmI4NjE5YmQyNTUyYjgz
ZjhlOWU2OWI0NDliZjhhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC0zOCwyOSArMzgsMzQgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFn
cy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrbGV0U2NyaXB0Q29udHJv
bGxlcjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKK2VudW0gV29ya2xldEdsb2JhbFNjb3Bl
SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGU+OworCiBj
bGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFs
U2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgewogcHVibGljOgotICAgIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAg
ICB2aXJ0dWFsIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKKworICAgIHVzaW5nIFdvcmtsZXRHbG9i
YWxTY29wZXNTZXQgPSBIYXNoU2V0PGNvbnN0IFdvcmtsZXRHbG9iYWxTY29wZSo+OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBXb3JrbGV0R2xvYmFsU2NvcGVzU2V0JiBhbGxXb3JrbGV0R2xv
YmFsU2NvcGVzU2V0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZS51cmwoKTsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBj
b25zdCBmaW5hbDsKLSAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgZXZhbHVhdGUoKTsKIAogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQor
ICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5n
ZXQoKTsgfQogCiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmluYWw7CiAKQEAgLTc0LDExICs3OSwxNSBAQCBw
dWJsaWM6CiAKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFncygpIGNvbnN0IHsg
cmV0dXJuIG1fanNSdW50aW1lRmxhZ3M7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGVzdHJ1Y3Rpb24oKTsKKwogcHJvdGVjdGVkOgogICAgIFdvcmtsZXRHbG9iYWxTY29wZShEb2N1
bWVudCYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CisgICAgV29ya2xldEdsb2JhbFNjb3BlKGNvbnN0
IFdvcmtsZXRHbG9iYWxTY29wZSYpID0gZGVsZXRlOworICAgIFdvcmtsZXRHbG9iYWxTY29wZShX
b3JrbGV0R2xvYmFsU2NvcGUmJikgPSBkZWxldGU7CiAKLSAgICBEb2N1bWVudCogcmVzcG9uc2Fi
bGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KLSAgICBjb25zdCBEb2N1
bWVudCogcmVzcG9uc2FibGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0
KCk7IH0KKyAgICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTExOCwxMCArMTI3LDkgQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7Ci0gICAgVW5pcXVlUmVmPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0Owog
CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKLSAgICBTdHJpbmcgbV9pZGVu
dGlmaWVyOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGltcGxlbWVudGVkIHByb3Blcmx5
LCBpdCBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTEzNgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDA1NWQ3ZjExNjhlZWI1
YWNmMDQyZmYxNGJmYzk5YzczZGNjYjhmMzcuLjExNjg5NzhlNDI0ZGYxYzQ4ZTQ2MWM1ODg5Yzc4
ZmNkYmEwNjdiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU5LDEzICs1OSwxNSBAQCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6V29ya2xldFNjcmlwdENvbnRyb2xsZXIoV29ya2xldEdsb2JhbFNjb3BlKiB3b3Jr
bGV0R2xvYgogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6On5Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
cigpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgbV93b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyLmNsZWFyKCk7Ci0gICAgbV92bSA9IG51bGxwdHI7CisgICAgZm9yYmlkRXhl
Y3V0aW9uKCk7CisKICAgICBpZiAobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKSB7CiAgICAg
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Y2xlYXJET01HdWFyZGVkT2JqZWN0cygp
OwogICAgICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQo
bnVsbHB0cik7CiAgICAgICAgIG1fY29uc29sZUNsaWVudCA9IG51bGxwdHI7CiAgICAgfQorICAg
IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5jbGVhcigpOworICAgIG1fdm0gPSBudWxscHRy
OwogfQogCiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpmb3JiaWRFeGVjdXRpb24oKQpA
QCAtODIsNiArODQsOSBAQCBib29sIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlv
bkZvcmJpZGRlbigpIGNvbnN0CiAKIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRpc2Fi
bGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlmIChpc0V4ZWN1dGlv
bkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKICAgICBpbml0U2NyaXB0SWZOZWVkZWQo
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtOTAsNiArOTUsOSBAQCB2
b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKIAogdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFz
c2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIGlmIChpc0V4ZWN1dGlv
bkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisKICAgICBpbml0U2NyaXB0SWZOZWVkZWQo
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayB7IHZtKCkgfTsKIApAQCAtMTMyLDYgKzE0MCw5IEBA
IHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQog
CiB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKIHsKKyAgICBpZiAo
aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlzPFBh
aW50V29ya2xldEdsb2JhbFNjb3BlPihtX3dvcmtsZXRHbG9iYWxTY29wZSkpIHsKICAgICAgICAg
aW5pdFNjcmlwdFdpdGhTdWJjbGFzczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBl
LCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJlNTIxOWU2MDU5NTA2ZDlmMzYyMTI4Njk5OTc3NzBk
ZWQ1MDc5NDcuLjdkNTQ2ODQ2MGFjYzUwOTA3Y2M2ZWNhZjQ3ZWU5NTJhZGUzMTVkODAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMS0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBzaG91bGQgcGFzcyAn
dGhpcycgY29ycmVjdGx5IHRvIHBhaW50IGNhbGxiYWNrLCBhbmQgcmVwYWludCB3aGVuIHByb3Bl
cnRpZXMgY2hhbmdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkxNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUt
cmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5p
bWF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvY29uc3Ry
dWN0b3ItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2NvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9sZWFrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3Rv
bS1wYWludC9sZWFrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9yZXNv
dXJjZXMvbGVha3MtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9yYWYtbGVhay1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDE4
LTExLTI4ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdQVV0gQmVnaW4gaW1wbGVtZW50YXRpb24gb2YgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgYW5k
IGJhcmVib25lcyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRhYjg4ZDkyZDQyOTAwZjBhMjhjNTUwYjM4ODMxNzQzNzA5MjA3ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICNw
YWludCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhl
aWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGlkPSJwYWludCI+
PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
MTBjZTMyOTZmNWE3MGMxNzJkNTNiYmZiN2U0MzQ0ZDA0NjVmMDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAw
IDYwMCkKKyAgKHJlY3QgMCAwIDE1MCAxNTApCisgIChyZWN0IDggOCA3ODQgMTUwKQorICAocmVj
dCAwIDAgODAwIDE2NikKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDggOCAxNTAgMTUw
KQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCispCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYTMyNmE1YTNlM2EwNTY5ZjE1MTVhYzhiMjRjNzMzMjg0YzQ4Mzg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Fu
aW1hdGUtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10
cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJl
Zj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVuIHByb3BlcnRp
ZXMgY2hhbmdlIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQv
d29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0
aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBw
cm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpLnRvU3Ry
aW5nKCkgIT0gImdvb2RieWUiKSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgfQor
CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICAg
IH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3JpcHQ+
CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KGZhbHNlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygp
OworICB9CisgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CisKKyAgLy8gRklYTUU6IE9uY2UgaW1wb3J0
V29ya2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3
YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3BhaW50Jykuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7Cisg
IH0sIDUwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJl
Y3RzID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2lu
ZG93LmludGVybmFscykgeworICAgICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVw
YWludHMoKTsKKworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIgZHVt
bXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKworICAgICAgcmVwYWludFJlY3RzID0gd2lu
ZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKworICAgICAgd2luZG93LmludGVy
bmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgIH0KKworICAgIHZhciBwcmUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHByZSk7CisgICAgcHJlLmlubmVySFRNTCA9IHJlcGFpbnRSZWN0czsKKyAgfSwgMTAwMCk7Cis8
L3NjcmlwdD4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBh
aW50KG15LXBhaW50KTsKKyAgICAtLW15LXByb3A6IGhlbGxvOworICAgIHdpZHRoOiAxNTBweDsK
KyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4KKyAgPGRpdiBpZD0i
cGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2FuaW1hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxNzFiODIwODFiNmJiNzI5NmFiYjBiOTZh
MTY1ZGQ0MmM3ZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1
c3RvbS1wYWludC9hbmltYXRlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFi
bGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVk
IiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gcHJv
cGVydGllcyBjaGFuZ2UiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0
cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0i
dGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFBy
b3BlcnRpZXMoKSB7IHJldHVybiBbJy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdl
b20sIHByb3BlcnRpZXMpIHsKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJyku
dG9TdHJpbmcoKSAhPSAiZ29vZGJ5ZSIpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQi
OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAg
ICB9CisKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7
CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpbXBvcnRXb3JrbGV0
KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENv
bnRlbnQpOworCisgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBhIHByb21p
c2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxlLnNldFBy
b3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICB9LCA1MDApOworPC9zY3JpcHQ+CisK
KzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWlu
dCk7CisgICAgLS1teS1wcm9wOiBoZWxsbzsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0
OiAxNTBweDsKKyAgfQorPC9zdHlsZT4KKworPGJvZHk+CisgIDxkaXYgaWQ9InBhaW50Ij48L2Rp
dj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2NvbnN0cnVjdG9yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NTc5MjFiYzg3
ZWE0NDg1NDc0YmQ4MmQyZmE0NDFkOWVhYzRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25zdHJ1Y3Rvci1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICAucGFpbnQgeworICAgIHdp
ZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4K
KyAgPGRpdiBjbGFzcz0icGFpbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZTsiPjwvZGl2Pgor
ICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+Cisg
IDxkaXYgY2xhc3M9InBhaW50IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9jb25z
dHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2NvbnN0cnVj
dG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY1YWMyZDVlNWU3OTAxYjRkNTQzNDk4MGU5MjY4MjI4ZDlj
Yjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10
cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJl
Zj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgZG8gbm90IGNyYXNoIGlmIHRoZSBj
b25zdHJ1Y3RvciB0aHJvd3MiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2Ry
YWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlw
ZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xhc3MgTXlQYWludCB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgICB0aHJvdyAiSGVsbG8hIjsKKyAgICB9CisKKyAgICBwYWludChjdHgsIGdlb20pIHsK
KyAgICAgIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOworICAgICAgY3R4LmZpbGxSZWN0KDAsIDAs
IGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgICB9CisgIH0KKworICBjbGFzcyBNeVBhaW50
MiB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tKSB7
CisgICAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCBnZW9tLndpZHRoLCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQo
J215LXBhaW50JywgTXlQYWludCk7CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50MicsIE15UGFp
bnQyKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGlt
cG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
ZGUnKS50ZXh0Q29udGVudCk7CisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxTY29w
ZUFsaXZlKCkpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZWFrcycpLnN0eWxl
LmJhY2tncm91bmQgPSAiZ3JlZW4iOworICAgIH0KKyAgfSwgNTAwKTsKKzwvc2NyaXB0PgorCis8
c3R5bGU+CisgIC5wYWludCB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7
CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8ZGl2IGNsYXNzPSJwYWludCIgc3R5bGU9ImJh
Y2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsiPjwvZGl2PgorICA8ZGl2IGNsYXNzPSJw
YWludCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7Ij48L2Rpdj4K
KyAgPGRpdiBpZD0ibGVha3MiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7IHdpZHRoOiAxNTBweDsg
aGVpZ2h0OiAxNTBweDsiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNjZTc3
N2M5NWM3OTgzYjM3NThlODMwNDFiNmZiNjU5ZDMxNzljNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdHMgdGhhdCB1c2luZyBjdXN0b20gcGFpbnQgZG9lcyBub3QgY2F1c2Ug
dGhlIHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlIHRvIGdldCBsZWFrZWQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdvcmtsZXQgZ2xvYmFsIHNjb3BlIGRpZCBub3Qg
bGVhaworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2xlYWtzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGMwYzUyOTJmZjAwNmJkMDA0ZDg3N2YxOTdkYjQxMThhZjdmMjViYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9sZWFrcy5odG1sCkBAIC0w
LDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhw
ZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJh
dXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVk
QHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFp
bnQgd29ya2xldHMgZG9uJ3QgbGVhayI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBz
Oi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8aWZyYW1lIGlk
PSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgor
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdXNpbmcgY3VzdG9tIHBhaW50IGRv
ZXMgbm90IGNhdXNlIHRoZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZSB0byBnZXQgbGVha2Vk
LiIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBwYWludFNob3Vs
ZERpZSgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICBoYW5kbGUgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGdjKCk7CisgICAgICAgICAgICBpZiAoIWludGVybmFscy5pc0FueVdvcmtsZXRHbG9iYWxT
Y29wZUFsaXZlKCkpIHsKKyAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LCAxMCk7
CisgICAgfSk7Cit9CisKK3ZhciB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdEZyYW1lIik7Cit0ZXN0RnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdEZyYW1lLnJlbW92ZSgpOworICAgICAgICBw
YWludFNob3VsZERpZSgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJXb3JrbGV0IGdsb2JhbCBzY29wZSBkaWQgbm90IGxlYWsiKTsKKyAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCAxMCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcHJvcGVydGllcy5odG1sCmluZGV4
IDBhZTY4OGJlMDNlZjNiNWM4MTcxNTdjOGQzOWMyYjA0OGRmYjA1MWUuLmQ5YTQ2NTViMWZmYTQ1
OGQ0ZmZjOGRiOTc5NTc0OGYyOWJiMDAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtY3VzdG9tLXBhaW50L3Byb3BlcnRpZXMuaHRtbApAQCAtMjEsNiArMjEsMTEgQEAKIGNsYXNz
IE15UGFpbnQgewogICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnaGVp
Z2h0JywgJy0tbXktcHJvcCcsICctLW15LXJlZ2lzdGVyZWQtcHJvcCcsICItLW5ldmVyLXNwZWNp
ZmllZCJdOyB9CiAgIHN0YXRpYyBnZXQgaW5wdXRBcmd1bWVudHMoKSB7IHJldHVybiBbJyonLCAn
KicsICcqJ107IH0KKworICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5teUF0dHJpYnV0ZSA9IDQyOyB9
CisKKyAgdGVzdFRoaXMoKSB7IHJldHVybiB0aGlzLm15QXR0cmlidXRlOyB9CisKICAgcGFpbnQo
Y3R4LCBnZW9tLCBwcm9wZXJ0aWVzLCBhcmdzKSB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0
aWVzLmdldCgnaGVpZ2h0JykudG9TdHJpbmcoKSwgYXJnc1swXS50b1N0cmluZygpKTsKICAgICBh
c3NlcnRfZXF1YWxzKHByb3BlcnRpZXMuZ2V0KCdoZWlnaHQnKS52YWx1ZSwgMTUwKTsKQEAgLTMw
LDYgKzM1LDggQEAgY2xhc3MgTXlQYWludCB7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVz
LmdldCgnd2lkdGgnKSwgbnVsbCk7CiAgICAgYXNzZXJ0X2VxdWFscyhwcm9wZXJ0aWVzLmdldCgn
LS1uZXZlci1zcGVjaWZpZWQnKS50b1N0cmluZygpLCAnJyk7CiAKKyAgICBhc3NlcnRfZXF1YWxz
KHRoaXMudGVzdFRoaXMoKSwgNDIpOworCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKysp
ewogICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyBqKyspewogICAgICAgICBjdHguZmlsbFN0
eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9sZWFrcy1m
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3Jlc291cmNlcy9s
ZWFrcy1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzU3ZGQ5OTlkNTFkNTYyZTMyM2RiZGYyZTM0
MDgzMGVjYjU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvcmVzb3VyY2VzL2xlYWtzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFp
bnRpbmdBUElFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1
c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8
bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyBkb24n
dCBsZWFrIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhv
dWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgIC5wYWludCB7CisgICAg
YmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAg
ICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJwYWludCI+PC9k
aXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Citjb25zdCBnbG9i
YWxTY29wZSA9IHRoaXM7CitjbGFzcyBNeVBhaW50IHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzLCBhcmdzKSB7CisgICAgY29uc3QgZHVtbXkgPSBnbG9iYWxTY29wZTsgLy8gTGVhayEK
KyAgICBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2Vv
bS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9CitNeVBhaW50LmNyZWF0ZUFMZWFrID0gdGhp
czsKK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgTXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNj
cmlwdD4KK0NTUy5wYWludFdvcmtsZXQuYWRkTW9kdWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb2RlJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvcmFmLWxl
YWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjNhNWY2YjM0NzI0NmJmYTI4NjY4NGU3YWNj
NTJjNTFhMWNkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9jc3MtY3VzdG9tLXBhaW50L3JhZi1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>