<?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>112538</bug_id>
          
          <creation_ts>2013-03-18 01:12:23 -0700</creation_ts>
          <short_desc>Custom Elements: &quot;readyCallback&quot; lifecycle callback should be called.</short_desc>
          <delta_ts>2013-03-24 18:39:13 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>113017</dependson>
          <blocked>99688</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>esprehn</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>856891</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-18 01:12:23 -0700</bug_when>
    <thetext>https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-lifecycle-callbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856893</commentid>
    <comment_count>1</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-18 01:14:32 -0700</bug_when>
    <thetext>It should be called when
- a custom element is created by the parser (the callback should happen as as microtask)
- a custom element is created through createElementXX() function
- a custom element is upgraded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860177</commentid>
    <comment_count>2</comment_count>
      <attachid>194214</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 03:14:13 -0700</bug_when>
    <thetext>Created attachment 194214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860194</commentid>
    <comment_count>3</comment_count>
      <attachid>194214</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-21 03:56:08 -0700</bug_when>
    <thetext>Comment on attachment 194214
Patch

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

Pretty sure it&apos;s called readyCallback now. Also we need a generic queue that tracks invocations of all the lifecycle methods in order. We can&apos;t do all ready callbacks and then all inserted callbacks, they need to happen in sequence. I think you want CustomElementInvocation to a type() field, and then loop over and execute the type of callback for each one.

&gt; Source/WebCore/ChangeLog:39
&gt; +        instnace are marked. See CustomElementRegistry::CallbackDeliveryScope

instances

&gt; Source/WebCore/bindings/v8/CustomElementHelpers.cpp:153
&gt; +    v8::Handle&lt;v8::Value&gt; functionValue = prototype-&gt;Get(v8::String::NewSymbol(&quot;created&quot;));

Didn&apos;t we rename this readyCallback ?

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:236
&gt; +        s_needsDeliverLifecycleCallbacks = true;

Can we just check isEmpty on the registries and remove this static state bool?

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:277
&gt; +    s_needsDeliverLifecycleCallbacks = false;

Lets eliminate this bool.

&gt; Source/WebCore/dom/CustomElementRegistry.h:65
&gt; +    RefPtr&lt;Element&gt; m_element;

this needs an m_type which is one of Ready, Inserted, Removed or AttributeChanged I think.

&gt; Source/WebCore/dom/CustomElementRegistry.h:107
&gt; +    static bool s_needsDeliverLifecycleCallbacks;

Make activeCustomElementRegistries() inline and put it here and you don&apos;t need this anymore.

&gt; Source/WebCore/dom/Document.cpp:900
&gt; +        m_registry-&gt;didCreateElement(element);

How is it possible to not have a registry and still get here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861010</commentid>
    <comment_count>4</comment_count>
      <attachid>194421</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 19:44:17 -0700</bug_when>
    <thetext>Created attachment 194421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861012</commentid>
    <comment_count>5</comment_count>
      <attachid>194214</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 19:46:47 -0700</bug_when>
    <thetext>Comment on attachment 194214
Patch

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

Thanks for the review, Elliott. I uploaded revised one.

&gt;&gt; Source/WebCore/dom/CustomElementRegistry.h:65
&gt;&gt; +    RefPtr&lt;Element&gt; m_element;
&gt; 
&gt; this needs an m_type which is one of Ready, Inserted, Removed or AttributeChanged I think.

Yup, they will come later. That&apos;s exactly why we have this class.

&gt;&gt; Source/WebCore/dom/CustomElementRegistry.h:107
&gt;&gt; +    static bool s_needsDeliverLifecycleCallbacks;
&gt; 
&gt; Make activeCustomElementRegistries() inline and put it here and you don&apos;t need this anymore.

Will do.

&gt;&gt; Source/WebCore/dom/Document.cpp:900
&gt;&gt; +        m_registry-&gt;didCreateElement(element);
&gt; 
&gt; How is it possible to not have a registry and still get here?

Due to JS GC / C++ lifecycle gap, an JS-wrapped custom element constructor can survive
even after Document::removedLastRef() is called (where m_registry cleared)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861014</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 19:49:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 194214 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194214&amp;action=review
&gt; 
&gt; Pretty sure it&apos;s called readyCallback now. Also we need a generic queue that tracks invocations of all the lifecycle methods in order. We can&apos;t do all ready callbacks and then all inserted callbacks, they need to happen in sequence. I think you want CustomElementInvocation to a type() field, and then loop over and execute the type of callback for each one.

I agree that we need better control of invocation order once we get other lifecycle callbacks.
That said, I&apos;d start from this simple version for now
and make more sophisticated plumbing when we add more callback types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861017</commentid>
    <comment_count>7</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-21 19:56:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 194214 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194214&amp;action=review
&gt; 
&gt; ...
&gt; 
&gt; Due to JS GC / C++ lifecycle gap, an JS-wrapped custom element constructor can survive
&gt; even after Document::removedLastRef() is called (where m_registry cleared)

Maybe add a comment about that like m_registry may have been cleared in ::dispose because we have a guardRef but no regular ref count.

(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 194214 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194214&amp;action=review
&gt; &gt; 
&gt; &gt; ...
&gt; 
&gt; I agree that we need better control of invocation order once we get other lifecycle callbacks.
&gt; That said, I&apos;d start from this simple version for now
&gt; and make more sophisticated plumbing when we add more callback types.

Sounds reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861027</commentid>
    <comment_count>8</comment_count>
      <attachid>194426</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 20:07:15 -0700</bug_when>
    <thetext>Created attachment 194426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861029</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 20:08:07 -0700</bug_when>
    <thetext>
&gt; Maybe add a comment about that like m_registry may have been cleared in ::dispose because we have a guardRef but no regular ref count.

Right. Done.

Also updated the bug description to reflect the correct callback name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861036</commentid>
    <comment_count>10</comment_count>
      <attachid>194421</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-21 20:17:37 -0700</bug_when>
    <thetext>Comment on attachment 194421
Patch

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

This looks pretty good, but the ordering is still suspect.

I don&apos;t think this is going to give desired behavior when you have iframes because you use a HashSet of registries. It definitely needs to be a ListHashSet otherwise the parser for a nested iframe could mean you run all the constructors in the iframe before running them in the top document, even though the top document created it&apos;s instances first.

Even then grouping by registry produces bad behavior with iframes:

&lt;x-foo/&gt;
&lt;iframe that contains x-bar&gt;
&lt;x-baz/&gt;
&lt;iframe that contains x-fizz&gt;
&lt;script&gt;
   // Here we see XFoo, XBaz, then XBar then XFizz but this isn&apos;t the order
   // they were actually created in.
&lt;/script&gt;

Dimitri, how should this work? :/

&gt; Source/WebCore/ChangeLog:3
&gt; +        Custom Elements: &quot;created&quot; lifecycle callback should be called.

All the files mention &quot;created&quot; so you might want to rename the tests and the bug.

&gt; Source/WebCore/ChangeLog:54
&gt; +               fast/dom/custom/lifecycle-created-paste.html

lifecycle-ready- ?

&gt; Source/WebCore/dom/CustomElementConstructor.cpp:68
&gt; +    RefPtr&lt;Element&gt; created = createElementInternal();

created -&gt; element.

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:247
&gt; +        CustomElementHelpers::invokeCreatedCallbacksIfNeeded(m_scriptExecutionContext, invocations);

This can cause an infinite loop, we probably need to explain that in the spec (ex. new X()&apos;s ready callback does new X()&quot; since even though they&apos;re async we don&apos;t yield to the event loop.

&gt; Source/WebCore/dom/CustomElementRegistry.h:96
&gt; +    typedef HashSet&lt;CustomElementRegistry*&gt; InstanceSet;

You almost certainly want a ListHashSet otherwise the constructors will run in a random order after parsing.

&gt; LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html:1
&gt; +&lt;!DOCTYPE html&gt;

This test should probably assert about the order. Right now you can pass it by running the callbacks for each element in a group which would be wrong.

ex. &lt;x-bar&gt;&lt;x-foo&gt;&lt;x-bar&gt; should run XBar.readyCallback, XFoo.readyCallback, XBar.readyCallback.

&gt; LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html:35
&gt; +var foreignDoc = document.implementation.createDocument (&apos;http://www.w3.org/1999/xhtml&apos;, &apos;html&apos;, null);

Extra space

&gt; LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html:16
&gt; +container.innerHTML = &quot;&lt;x-foo&gt;&lt;/x-foo&gt;&lt;div is=&apos;x-bar&apos;&gt;&lt;/div&gt;&lt;x-foo&gt;&lt;/x-foo&gt;&quot;;

Add an x-bar here to assert about order below. You did register x-bar above too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861041</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-21 20:20:07 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 194421 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194421&amp;action=review
&gt; 
&gt; This looks pretty good, but the ordering is still suspect.
&gt; 

Lets make this a ListHashSet for now and then when Dimitri makes the spec clear we can fix it if needed. After that change I&apos;ll r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861046</commentid>
    <comment_count>12</comment_count>
      <attachid>194430</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 20:33:17 -0700</bug_when>
    <thetext>Created attachment 194430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861047</commentid>
    <comment_count>13</comment_count>
      <attachid>194430</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 20:33:56 -0700</bug_when>
    <thetext>Comment on attachment 194430
Patch

oops. this isn&apos;t ready yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861089</commentid>
    <comment_count>14</comment_count>
      <attachid>194441</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 22:02:53 -0700</bug_when>
    <thetext>Created attachment 194441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861090</commentid>
    <comment_count>15</comment_count>
      <attachid>194421</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 22:03:02 -0700</bug_when>
    <thetext>Comment on attachment 194421
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Custom Elements: &quot;created&quot; lifecycle callback should be called.
&gt; 
&gt; All the files mention &quot;created&quot; so you might want to rename the tests and the bug.

Yup.

&gt;&gt; Source/WebCore/ChangeLog:54
&gt;&gt; +               fast/dom/custom/lifecycle-created-paste.html
&gt; 
&gt; lifecycle-ready- ?

Done.

&gt;&gt; Source/WebCore/dom/CustomElementConstructor.cpp:68
&gt;&gt; +    RefPtr&lt;Element&gt; created = createElementInternal();
&gt; 
&gt; created -&gt; element.

Done.

&gt;&gt; Source/WebCore/dom/CustomElementRegistry.cpp:247
&gt;&gt; +        CustomElementHelpers::invokeCreatedCallbacksIfNeeded(m_scriptExecutionContext, invocations);
&gt; 
&gt; This can cause an infinite loop, we probably need to explain that in the spec (ex. new X()&apos;s ready callback does new X()&quot; since even though they&apos;re async we don&apos;t yield to the event loop.

I noticed that we even shouldn&apos;t need while() since any node creation which is originated script should be invoked before returning from the callback.
This is different from mutation observer which can delay callback invocation.
So I removed while() .

&gt;&gt; Source/WebCore/dom/CustomElementRegistry.h:96
&gt;&gt; +    typedef HashSet&lt;CustomElementRegistry*&gt; InstanceSet;
&gt; 
&gt; You almost certainly want a ListHashSet otherwise the constructors will run in a random order after parsing.

Right. Done.

&gt;&gt; LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html:1
&gt;&gt; +&lt;!DOCTYPE html&gt;
&gt; 
&gt; This test should probably assert about the order. Right now you can pass it by running the callbacks for each element in a group which would be wrong.
&gt; 
&gt; ex. &lt;x-bar&gt;&lt;x-foo&gt;&lt;x-bar&gt; should run XBar.readyCallback, XFoo.readyCallback, XBar.readyCallback.

createElement() create element atomically so we don&apos;t need to test the order. 
We also have another test lifecycle-ready-innerHTML-reentrancy.html to test
cases in conjunction with an element-creating callback function.

I added order test for importNode() below.

&gt;&gt; LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html:35
&gt;&gt; +var foreignDoc = document.implementation.createDocument (&apos;http://www.w3.org/1999/xhtml&apos;, &apos;html&apos;, null);
&gt; 
&gt; Extra space

Removed.

&gt;&gt; LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html:16
&gt;&gt; +container.innerHTML = &quot;&lt;x-foo&gt;&lt;/x-foo&gt;&lt;div is=&apos;x-bar&apos;&gt;&lt;/div&gt;&lt;x-foo&gt;&lt;/x-foo&gt;&quot;;
&gt; 
&gt; Add an x-bar here to assert about order below. You did register x-bar above too :)

I updated this test to clarify the order being examined, and also added another case to cover nested case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861093</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-21 22:11:07 -0700</bug_when>
    <thetext>Actually, the order problem Elliott mentioned is tricky and is not limited to &lt;iframe&gt;.
Think about &lt;x-parent&gt;&lt;x-child&gt;&lt;/x-child&gt;&lt;/x-parent&gt;.

If we call x-parent first and x-child next, it seems conceptually correct.
However in practice, the callback of x-parent sees un-readified x-child,
which is not what people expect IMO.
Calling x-child first makes sense  only if x-child is not inserted into x-parent.
This is true for C++ constructor but it isn&apos;t for readyCallbacks I wrote.

Calling x-child&apos;s readyCallback will be more useful since x-parent got readyCallback
with readified x-child in its child list. But this means readyCallback becomes unintentionally powerful.

We possibly want to shuffle the invocation list so that people cannot except one specific order :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861096</commentid>
    <comment_count>17</comment_count>
      <attachid>194441</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-21 22:13:21 -0700</bug_when>
    <thetext>Comment on attachment 194441
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        (WTF::copyToVector): Generalized to let it accept variants like ListHahsSet instead of only HashSet.

You&apos;re my hero!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861098</commentid>
    <comment_count>18</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-03-21 22:15:53 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Actually, the order problem Elliott mentioned is tricky and is not limited to &lt;iframe&gt;.
&gt; Think about &lt;x-parent&gt;&lt;x-child&gt;&lt;/x-child&gt;&lt;/x-parent&gt;.
&gt; 
&gt; If we call x-parent first and x-child next, it seems conceptually correct.
&gt; However in practice, the callback of x-parent sees un-readified x-child,
&gt; which is not what people expect IMO.
&gt; Calling x-child first makes sense  only if x-child is not inserted into x-parent.
&gt; This is true for C++ constructor but it isn&apos;t for readyCallbacks I wrote.
&gt; 
&gt; Calling x-child&apos;s readyCallback will be more useful since x-parent got readyCallback
&gt; with readified x-child in its child list. But this means readyCallback becomes unintentionally powerful.
&gt; 
&gt; We possibly want to shuffle the invocation list so that people cannot except one specific order :-/

Random order sounds like hell for debugging in JS/Dev Tools. Lets land this and then consult Dimitri and Mozilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861135</commentid>
    <comment_count>19</comment_count>
      <attachid>194441</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 23:18:32 -0700</bug_when>
    <thetext>Comment on attachment 194441
Patch

Clearing flags on attachment: 194441

Committed r146565: &lt;http://trac.webkit.org/changeset/146565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861136</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 23:18:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861211</commentid>
    <comment_count>21</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-22 01:17:13 -0700</bug_when>
    <thetext>The change was rolled out in http://trac.webkit.org/changeset/146572 along with other change (http://trac.webkit.org/changeset/146534) that caused perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861249</commentid>
    <comment_count>22</comment_count>
      <attachid>194477</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-22 02:13:46 -0700</bug_when>
    <thetext>Created attachment 194477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861288</commentid>
    <comment_count>23</comment_count>
      <attachid>194477</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-22 02:56:32 -0700</bug_when>
    <thetext>Comment on attachment 194477
Patch

Clearing flags on attachment: 194477

Committed r146583: &lt;http://trac.webkit.org/changeset/146583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861289</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-22 02:56:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861360</commentid>
    <comment_count>25</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-22 05:17:12 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 194477 [details])
&gt; Clearing flags on attachment: 194477
&gt; 
&gt; Committed r146583: &lt;http://trac.webkit.org/changeset/146583&gt;

This change broke compilation on Windows:
http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Builder/builds/37309/steps/compile/logs/stdio

I landed a fix: http://trac.webkit.org/changeset/146592</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861463</commentid>
    <comment_count>26</comment_count>
      <attachid>194477</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2013-03-22 07:54:55 -0700</bug_when>
    <thetext>Comment on attachment 194477
Patch

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

Missing [V8DeliverCustomElementCallbacks] on Range.prototype.createContextualFragment

&gt; Source/WebCore/bindings/v8/V8RecursionScope.cpp:53
&gt; +        CustomElementRegistry::deliverAllLifecycleCallbacks();

It is not obvious that this order is correct? Is this speced?

&gt; Source/WebCore/html/HTMLElement.idl:42
&gt; +             [TreatNullAs=NullString, V8DeliverCustomElementCallbacks] attribute DOMString innerHTML

Missing [V8DeliverCustomElementCallbacks] on outerHTML and insertAdjecentHTML</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862460</commentid>
    <comment_count>27</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-24 18:39:13 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 194477 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194477&amp;action=review
&gt; 
&gt; Missing [V8DeliverCustomElementCallbacks] on Range.prototype.createContextualFragment
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8RecursionScope.cpp:53
&gt; &gt; +        CustomElementRegistry::deliverAllLifecycleCallbacks();
&gt; 
&gt; It is not obvious that this order is correct? Is this speced?
No. I started the thread here
http://lists.w3.org/Archives/Public/public-webapps/2013JanMar/0935.html


&gt; 
&gt; &gt; Source/WebCore/html/HTMLElement.idl:42
&gt; &gt; +             [TreatNullAs=NullString, V8DeliverCustomElementCallbacks] attribute DOMString innerHTML
&gt; 
&gt; Missing [V8DeliverCustomElementCallbacks] on outerHTML and insertAdjecentHTML

Good catch! will fix. Filed Bug 113164.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194214</attachid>
            <date>2013-03-21 03:14:13 -0700</date>
            <delta_ts>2013-03-21 20:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112538-20130321191001.patch</filename>
            <type>text/plain</type>
            <size>51278</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlMDU1OGZiYTM5Mzg2
NjMyNTE1MzA2YWQyM2U0ZDBjYjJhNjNmMC4uZTRhMmFkZWM4ZDY2MDRmZmUzN2JhN2MyMGI0NDA2
YzY1ZjIyZGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMy0wMy0yMSAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIEVsZW1l
bnRzOiAiY3JlYXRlZCIgbGlmZWN5Y2xlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI1MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBh
bGxvd3MgZWFjaCBjdXN0b20gZWxlbWVudCBkZWZpbml0aW9uIHRvIGhvb2sgdXAgaXRzIGluc3Rh
bnRpYXRpb24sCisgICAgICAgIG5hbWVseSAiY3JlYXRlZCIgbGlmZWN5Y2xlIGNhbGxiYWNrLgor
CisgICAgICAgIFRoZSBjaGFuZ2UgaGFzIHR3byBwYXJ0czoKKyAgICAgICAgLSAxLiBUcmFja2lu
ZyB3aGljaCBFbGVtZW50IG9iamVjdHMgdG8gYmUgY3JlYXRlZC4KKyAgICAgICAgLSAyLiBJbnZv
a2luZyBhcHByb3ByaWF0ZSBKYXZhU2NyaXB0IGZ1bmN0aW9ucywgd2hpY2ggYXJlICJjcmVhdGVk
IiBjYWxsYmFja3MKKyAgICAgICAgICBiZWZvcmUgdGhlIEVsZW1lbnQgb2JqZWN0IGlzIHZpc2li
bGUgZnJvbSBwYWdlIHNjcmlwdC4KKworICAgICAgICBGb3IgMSwgQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5IG1haW50YWlucyBsaXN0IG9mICJjYWxsYmFjaworICAgICAgICBpbnZvY2Fpb25zIi4gIEVh
Y2ggbGlzdCBpdGVtICgiaW52b2NhdGlvbiIpIHRyYWNrcyB0aGUgZWxlbWVudAorICAgICAgICB3
aGljaCBoYXMgYSBsaWZlY3ljbGUgY2FsbGJhY2sgdG8gYmUgaW52b2tlZC4gRWFjaCBpbnZvY2F0
aW9uIGlzCisgICAgICAgIHJlZ2lzdGVyZWQgd2hlbiAtIEFueSBjdXN0b20gZWxlbWVudCBDKysg
b2JqZWN0IGlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgU2VlIGNoYW5nZXMgb24gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yLmNwcC4KKworICAgICAgICBUaGlzIGFsc28gaGFwcGVucyB3aGVuIEBp
cyBhdHRyaWJ1dGUgaXMgc2V0IGJ5IHRoZSBwYXJzZXIgb3Igbm9kZQorICAgICAgICBjbG9uaW5n
IHJvdXRpbmUsIHdoaWNoIGNhbiB0dXJuIGEgbm9uLWN1c3RvbSBlbGVtZW50IGludG8gYQorICAg
ICAgICB0eXBlLWV4dGVuZGVkIGN1c3RvbSBlbGVtZW50LiBTZWUgY2hhbmdlcyBvbiBFbGVtZW50
LmNwcC4KKworICAgICAgICBGb3IgMiwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IGJhc2ljYWxseSBm
b2xsb3dzIHdoYXQKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlciBpcyBkb2luZywgYW5kIGludHJv
ZHVjZXMgYSBtZXRob2QgY2FsbGVkCisgICAgICAgIGRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3Mo
KS4gVGhpcyBmdW5jdGlvbiBmbHVzaGVzIGFsbCBwZW5kaW5nCisgICAgICAgIGNhbGxiYWNrIGlu
dm9jYXRpb25zLiBZb3UgY2FuIHRoaW5rIGl0IGFzIGEgZHVhbCBvZgorICAgICAgICBNdXRhdGlv
bk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCkuCisKKyAgICAgICAgVGhlIGRlbGl2ZXJ5
IGZ1bmN0aW9uIGlzIGNhbGxlZCBwbGFjZXMgd2hlcmUgTXV0YXRpb25PYnNlcnZlcidzCisgICAg
ICAgIGRlbGl2ZXJBbGxNdXRhdGlvbnMoKSBpcyBjYWxsZWQuIEluIGFkZGl0aW9uLCBpdCBpcyBh
bHNvIGNhbGxlZAorICAgICAgICBqdXN0IGJlZm9yZSByZXR1cm5pbmcgZnJvbSBhIHNldCBvZiBE
T00gQVBJcy4gRm9yIGV4YW1wbGUsIGl0IGlzCisgICAgICAgIGNhbGxlZCBqdXN0IGJlZm9yZSBj
cmVhdGVFbGVtZW50KCkgcmV0dXJucywgc28gdGhhdCBwb3NzaWJseQorICAgICAgICBjcmVhdGVk
IGN1c3RvbSBlbGVtZW50IGJlY29tZXMgcmVhZHkgdGhyb3VnaCBpdHMgY3JlYXRlZCgpCisgICAg
ICAgIGNhbGxiYWNrLiBTdWNoIEFQSXMgZ2V0ICJWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJh
Y2tzIiBJREwKKyAgICAgICAgYXR0cmlidXRlLiBJbiBwcmluY2lwbGUsIEFQSXMgd2hpY2ggY2Fu
IGNyZWF0ZSBuZXcgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaW5zdG5hY2UgYXJlIG1hcmtlZC4g
U2VlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3BlCisgICAgICAg
IGFuZCBjaGFuZ2VzIG9uIENvZGVHZW5lcmF0b3JWOC5wbS4KKworICAgICAgICBXZSBuZWVkIHRo
aXMgZXh0cmEgd29yayBiZWNhdXNlIHRoZSBjcmVhdGVkKCkgY2FsbGJhY2sgbmVlZHMgdG8KKyAg
ICAgICAgZ2l2ZSBhbiBpbGx1c2lvbiBzbyB0aGF0IEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMgZmVl
bCBsaWtlIHRoZQorICAgICAgICBjcmVhdGVkKCkgY2FsbGJhY2sgYmVpbmcgY2FsbGVkIGp1c3Qg
YWZ0ZXIgaXQgaXMgY3JlYXRlZCwgaW5zdGVhZAorICAgICAgICBvZiBjYWxsZWQgb24gYXJiaXRy
YXJ5IGxhdGUgdGltaW5nIGxpa2UgTXV0YXRpb25PYnNlcnZlcgorICAgICAgICBub3RpZmljYXRp
b25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQt
Y3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBp
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1p
bm5lckhUTUwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1j
cmVhdGVkLXBhcnNlci1vbmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9s
aWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgLSBIb29rZWQgdXAgQ2Fs
bGJhY2tEZWxpdmVyeVNjb3BlIHRocm91Z2ggVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNr
cyBhdHRyaXV0ZS4KKyAgICAgICAgKEdlbmVyYXRlQ3VzdG9tRWxlbWVudEludm9jYXRpb25TY29w
ZUlmTmVlZGVkKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcik6CisgICAgICAg
IChHZW5lcmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbnZva2VDcmVhdGVk
Q2FsbGJhY2tJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVy
czo6aW52b2tlQ3JlYXRlZENhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9DdXN0b21FbGVtZW50SGVscGVycy5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVudEhlbHBlcnMp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwOiBBZGRlZCBkZWxp
dmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCkKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9u
U2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I6OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50SW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9DdXN0b21F
bGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcjo6aXNFeHRlbmRlZCk6CisgICAgICAgIChDdXN0b21FbGVtZW50Q29uc3RydWN0b3Ip
OgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOiBBZGRpbmcgZWxlbWVu
dCB0cmFja2luZyBhbmQgaW52b2NhdGlvbiBleGVjdXRpb24uCisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21FbGVtZW50SW52b2NhdGlvbjo6Q3VzdG9tRWxlbWVudEludm9jYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246On5DdXN0b21FbGVtZW50SW52b2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50
UmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRH
aXZlVHlwZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0
cnk6OmRpZENyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjphY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0
cnk6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjpkZWxpdmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcyk6CisgICAgICAgICog
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVudEludm9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246OmVsZW1l
bnQpOgorICAgICAgICAoQ2FsbGJhY2tEZWxpdmVyeVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3BlOjpDYWxsYmFja0Rl
bGl2ZXJ5U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpD
YWxsYmFja0RlbGl2ZXJ5U2NvcGU6On5DYWxsYmFja0RlbGl2ZXJ5U2NvcGUpOgorICAgICAgICAo
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENyZWF0ZUN1c3RvbUVsZW1l
bnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xv
bmluZyk6IEFkZGVkIHRvIGNhdGNoIEBpcyBhdHRyaWJ1dGUKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcDogQWRkZWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFu
ZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6cnVu
U2NyaXB0KToKKwogMjAxMy0wMy0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIEhUTUxOYW1lcyBzaG91bGQgY29uc3RydWN0IHN0cmluZ3MgYXQgY29tcGlsZSB0
aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA0OGY1Yzg0M2I5MGNmYzFlZjUxNjgz
NTQyNWNhOGQzYjExYzY0NzguLmQzZTI5NThhN2RiNGZjODk1YTgyOTI2MzM2MWQwZGE0MDAwNzRi
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDMt
MjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1c3Rv
bSBFbGVtZW50czogImNyZWF0ZWQiIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMv
V2ViS2l0LmNwcDogQWRkZWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCisKIDIwMTMt
MDMtMjAgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENv
cnJlY3QgY29vcmRpbmF0ZWQgc2Nyb2xsaW5nIGZvciBSVEwgaWZyYW1lIGFuZCBvdmVyZmxvdzpz
Y3JvbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KaW5kZXggMDcxN2Y0Y2YyYzljNDZiODRlZWQ1ODNhNmUxYWRlZmU0MzYxYWQ4Zi4u
M2UxMjExZWJlMjYyNjhjMDMzZDBhYjJlNWVkYmZlMjZkZDlkYzAzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTEyNTYs
NiArMTI1NiwyNSBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVDdXN0b21FbGVtZW50SW52
b2NhdGlvblNjb3BlSWZOZWVkZWQKK3sKKyAgICBteSAkb3V0ID0gc2hpZnQ7CisgICAgbXkgJGV4
dCA9IHNoaWZ0OworCisgICAgaWYgKCRleHQtPnsiVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxi
YWNrcyJ9KSB7CisgICAgICAgIGlmICgkZXh0LT57IlJlZmxlY3QifSkgeworICAgICAgICAgICAg
ZGllICJJREwgZXJyb3I6IFJlZmxlY3QgYW5kIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFj
a3MgY2Fubm90IGNvZXhpc3QgeWV0IjsKKyAgICAgICAgfQorCisgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIsICJDVVNUT01fRUxFTUVOVFMiKTsKKyAg
ICAgICAgcHVzaChAJG91dCwgPDxFTkQpOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisg
ICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDYWxsYmFja0RlbGl2ZXJ5U2NvcGUgZGVsaXZlcnlT
Y29wZTsKKyNlbmRpZgorRU5ECisgICAgfQorfQorCiBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0
dGVyQ2FsbGJhY2sKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CkBAIC0xNDA0LDYgKzE0
MjMsOCBAQCBFTkQKICAgICAgICAgJHJlc3VsdCA9ICJXVEY6OmdldFB0cigiIC4gJHJlc3VsdCAu
ICIpIjsKICAgICB9CiAKKyAgICBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJ
Zk5lZWRlZChcQGltcGxDb250ZW50SW50ZXJuYWxzLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcyk7CisKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0
cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKIAogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewpA
QCAtMTcwMSw2ICsxNzIyLDggQEAgRU5ECiBFTkQKICAgICB9CiAKKyAgICBHZW5lcmF0ZUN1c3Rv
bUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRlZChcQGltcGxDb250ZW50SW50ZXJuYWxzLCAk
ZnVuY0V4dCk7CisKICAgICAjIENoZWNrIGRvbWFpbiBzZWN1cml0eSBpZiBuZWVkZWQKICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJiAh
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2Vj
dXJpdHkifSkgewogICAgICAgICAjIFdlIGhhdmUgbm90IGZpbmQgcmVhbCB1c2UgY2FzZXMgeWV0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQKaW5kZXggNjY5MjhlNzkyMTM3MTllYTk3MGM2MzJjZGNlYTM2NWZhNWM2MDRlMy4uNTljOWIw
NWYyMTgyYjc1MWIyZGZjMDA1OTc4MGFlODFkMGQ4MmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC0xMzMsMyArMTMzLDQg
QEAgVjhSZWFkT25seQogVjhTa2lwVlRhYmxlVmFsaWRhdGlvbgogVjhVbmZvcmdlYWJsZQogVjhX
cmFwQXNGdW5jdGlvbgorVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCmluZGV4
IDJjZDVjYTQwMWU3YTRjMzczNjk2MTkyOWUwZjgxMThhMjAxMzU4ZTMuLjY2NGVkYmJiZWMyOTli
NmY3OTM0NzI3NmMwOTRkODUwNDMxOGE5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50SGVscGVycy5oIgogCisj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldv
cmxkLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVjhIVE1MRWxlbWVudFdyYXBwZXJGYWN0
b3J5LmgiCiAjaW5jbHVkZSAiVjhIVE1MUGFyYWdyYXBoRWxlbWVudC5oIgpAQCAtMTM4LDYgKzE0
MCw0NCBAQCBjb25zdCBRdWFsaWZpZWROYW1lKiBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExv
Y2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIGZpbmRIVE1MVGFnTmFt
ZU9mVjhUeXBlKHR5cGUpOwogfQogCit2b2lkIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbnZva2VD
cmVhdGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0KQoreworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyVmFs
dWUgPSB0b1Y4KGVsZW1lbnQsIGNvbnRleHQtPkdsb2JhbCgpLCBjb250ZXh0LT5HZXRJc29sYXRl
KCkpOworICAgIGlmICh3cmFwcGVyVmFsdWUuSXNFbXB0eSgpIHx8ICF3cmFwcGVyVmFsdWUtPklz
T2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXJWYWx1ZSk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHByb3RvdHlwZVZhbHVlID0gd3JhcHBlci0+R2V0UHJvdG90
eXBlKCk7CisgICAgaWYgKHByb3RvdHlwZVZhbHVlLklzRW1wdHkoKSB8fCAhcHJvdG90eXBlVmFs
dWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFs
dWUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5jdGlvblZhbHVlID0gcHJvdG90eXBl
LT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjcmVhdGVkIikpOworICAgIGlmIChmdW5jdGlv
blZhbHVlLklzRW1wdHkoKSB8fCAhZnVuY3Rpb25WYWx1ZS0+SXNGdW5jdGlvbigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZnVuY3Rpb25WYWx1ZSk7CisgICAgdjg6OlRyeUNh
dGNoIGV4Y2VwdGlvbkNhdGNoZXI7CisgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRy
dWUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7IH07CisgICAgU2NyaXB0
Q29udHJvbGxlcjo6Y2FsbEZ1bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbihlbGVtZW50LT5kb2N1
bWVudCgpLCBmdW5jdGlvbiwgd3JhcHBlciwgMCwgYXJncyk7Cit9CisKKwordm9pZCBDdXN0b21F
bGVtZW50SGVscGVyczo6aW52b2tlQ3JlYXRlZENhbGxiYWNrc0lmTmVlZGVkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFZlY3RvcjxDdXN0b21FbGVtZW50
SW52b2NhdGlvbj4mIGludm9jYXRpb25zKQoreworICAgIEFTU0VSVCghaW52b2NhdGlvbnMuaXNF
bXB0eSgpKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdG9WOENvbnRleHQoZXhlY3V0aW9uQ29udGV4dCwg
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW52b2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvbnRleHQgPT0gaW52b2NhdGlvbnNbaV0uZWxlbWVudCgp
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgaW52b2tlQ3JlYXRlZENhbGxiYWNrSWZOZWVkZWQoaW52
b2NhdGlvbnNbaV0uZWxlbWVudCgpLCBjb250ZXh0KTsKKyAgICB9Cit9CisKICNlbmRpZiAvLyBF
TkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaAppbmRleCBm
MjkwZjU0ODgwZDA5NzQyNTcyYTlkZDRmODQyOTcwZWMwYmI1MTA4Li5kNTFmZmIzMjIwM2M1YzZj
ZmZmZDEwM2VlMWIyNWYyZjk4ZTJiZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKQEAgLTMzLDEyICszMywxNSBAQAogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKENV
U1RPTV9FTEVNRU5UUykKIAogY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOworY2xhc3Mg
Q3VzdG9tRWxlbWVudEludm9jYXRpb247CitjbGFzcyBFbGVtZW50OwogY2xhc3MgUXVhbGlmaWVk
TmFtZTsKIGNsYXNzIFNjcmlwdFN0YXRlOwogCkBAIC01Miw2ICs1NSwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgaXNGZWF0dXJlQWxsb3dlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7
CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyogZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjaGFpbik7CiAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmRM
b2NhbE5hbWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbik7CisKKyAgICBzdGF0aWMgdm9p
ZCBpbnZva2VDcmVhdGVkQ2FsbGJhY2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2NhdGlvbj4mKTsKKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgdm9pZCBpbnZva2VDcmVhdGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50Kiwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lv
blNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUu
Y3BwCmluZGV4IGJkOTI0ODE1MjkyZDlmMGFiZmYyZGQ0YmIwNjc3NjAwMWExYjc2N2MuLjJjMmY5
NTUyZjZhY2MzZmUyZjU2NjBiODEzOGMzZTFhOGFkOGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogCisjaW5j
bHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKIApAQCAtNDYs
OCArNDcsMTIgQEAgdm9pZCBWOFJlY3Vyc2lvblNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQo
KQogICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmRlYWN0aXZhdGVOZXdUcmFuc2Fj
dGlvbnMoKTsKICNlbmRpZgogCi0gICAgaWYgKG1faXNEb2N1bWVudENvbnRleHQpCisgICAgaWYg
KG1faXNEb2N1bWVudENvbnRleHQpIHsKICAgICAgICAgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZl
ckFsbE11dGF0aW9ucygpOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgICAgIEN1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpOworI2Vu
ZGlmCisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDM0MzE5NzE4ZTdhYzQ5
ZjBmNThhN2ZmYzkzZmVhZDk1NmM1ZTAzYmMuLjhiMzJkYWY1NTFkOGY1NDM4ZWE0ZWYwMWMzMThk
ZDJjZThiOTI1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29u
c3RydWN0b3IuY3BwCkBAIC02Myw3ICs2MywxNSBAQCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6
On5DdXN0b21FbGVtZW50Q29uc3RydWN0b3IoKQogewogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+
IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCgpIGNvbnN0CitQYXNzUmVm
UHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCgpCit7
CisgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZWQgPSBjcmVhdGVFbGVtZW50SW50ZXJuYWwoKTsK
KyAgICBpZiAoY3JlYXRlZCkKKyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkQ3JlYXRlQ3VzdG9tRWxl
bWVudChjcmVhdGVkLmdldCgpLCB0aGlzKTsKKyAgICByZXR1cm4gY3JlYXRlZC5yZWxlYXNlKCk7
Cit9CisKK1Bhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVh
dGVFbGVtZW50SW50ZXJuYWwoKQogewogICAgIGlmICghZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgK
aW5kZXggMGVlZDc5YWU1ODM5YjNjOGQzZDQ2YzJlMTFjMjg4ZTJmZmE4ODhiNC4uOWFjY2NkN2Q3
ZTVkYjhiMTgyZTIwMjY2MmUwOGRjOWI0M2JkZDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaApAQCAtNTksMTIgKzU5LDE1IEBAIHB1YmxpYzoK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KICAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiB0eXBlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZU5hbWU7IH0KICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQor
ICAgIGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZU5hbWUgIT0gbV9sb2Nh
bE5hbWU7IH0KIAotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudCgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudCgpOwogCiBwcml2YXRlOgog
ICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmIHR5cGVOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUpOwogCisgICAgUGFz
c1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50SW50ZXJuYWwoKTsKKwogICAgIFF1YWxpZmll
ZE5hbWUgbV90eXBlTmFtZTsKICAgICBRdWFsaWZpZWROYW1lIG1fbG9jYWxOYW1lOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggNmMyOGYy
ODE5MjNiOGJmZjczNGQyYzI3NjgwOTNlOTFlMjMzMThmNC4uMDEwYjU4MWQ4NjU1NWUwNDg1NGY5
MzVmYTRhYTliNTRmZTU2ODY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MVW5rbm93bkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8
d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNTQsNiArNTUsMjUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitDdXN0b21FbGVtZW50SW52b2NhdGlvbjo6Q3VzdG9tRWxlbWVudElu
dm9jYXRpb24oUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVs
ZW1lbnQpCit7Cit9CisKK0N1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjp+Q3VzdG9tRWxlbWVudElu
dm9jYXRpb24oKQoreworfQorCit0eXBlZGVmIEhhc2hTZXQ8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Kj4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5U2V0OworCitzdGF0aWMgQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5U2V0JiBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDdXN0b21FbGVtZW50UmVnaXN0cnlTZXQsIGFjdGl2ZUluc3RhbmNlcywgKCkp
OworICAgIHJldHVybiBhY3RpdmVJbnN0YW5jZXM7Cit9CisKK2Jvb2wgQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjpzX25lZWRzRGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcyA9IGZhbHNlOworCiBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeShEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVudCkKIHsKQEAgLTYx
LDYgKzgxLDcgQEAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDdXN0b21FbGVtZW50UmVnaXN0cnko
RG9jdW1lbnQqIGRvY3VtZW50KQogCiBDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVt
ZW50UmVnaXN0cnkoKQogeworICAgIGRlYWN0aXZhdGUoKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIG5hbWVJbmNsdWRlc0h5cGhlbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCkBAIC0xOTMs
MTEgKzIxNCw2OSBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBsbwogICAgIHJldHVybiAwOwogfQog
Cit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkR2l2ZVR5cGVFeHRlbnNpb24oRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25z
dHJ1Y3RvciA9IGZpbmRGb3IoZWxlbWVudCk7CisgICAgaWYgKCFjb25zdHJ1Y3RvciB8fCAhY29u
c3RydWN0b3ItPmlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGFjdGl2YXRlKEN1
c3RvbUVsZW1lbnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKK30KKwordm9pZCBDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRpZENyZWF0ZUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBhY3Rp
dmF0ZShDdXN0b21FbGVtZW50SW52b2NhdGlvbihlbGVtZW50KSk7Cit9CisKK3ZvaWQgQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5OjphY3RpdmF0ZShjb25zdCBDdXN0b21FbGVtZW50SW52b2NhdGlvbiYg
aW52b2NhdGlvbikKK3sKKyAgICBib29sIHdhc0luYWN0aXZlID0gbV9pbnZvY2F0aW9ucy5pc0Vt
cHR5KCk7CisgICAgbV9pbnZvY2F0aW9ucy5hcHBlbmQoaW52b2NhdGlvbik7CisgICAgaWYgKHdh
c0luYWN0aXZlKSB7CisgICAgICAgIGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuYWRk
KHRoaXMpOworICAgICAgICBzX25lZWRzRGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcyA9IHRydWU7
CisgICAgfQorfQorCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVhY3RpdmF0ZSgpCit7
CisgICAgQVNTRVJUKG1faW52b2NhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBpZiAoYWN0aXZlQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5jb250YWlucyh0aGlzKSkgeworICAgICAgICBhY3RpdmVD
dXN0b21FbGVtZW50UmVnaXN0cmllcygpLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgc19uZWVkc0Rl
bGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MgPSAhYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMo
KS5pc0VtcHR5KCk7CisgICAgfQorfQorCiBpbmxpbmUgRG9jdW1lbnQqIEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiB0b0RvY3VtZW50KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpk
ZWxpdmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKCkKK3sKKyAgICBBU1NFUlQoIW1faW52b2NhdGlvbnMu
aXNFbXB0eSgpKTsKKworICAgIHdoaWxlICghbV9pbnZvY2F0aW9ucy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgVmVjdG9yPEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uPiBpbnZvY2F0aW9uczsKKyAgICAg
ICAgbV9pbnZvY2F0aW9ucy5zd2FwKGludm9jYXRpb25zKTsKKyAgICAgICAgQ3VzdG9tRWxlbWVu
dEhlbHBlcnM6Omludm9rZUNyZWF0ZWRDYWxsYmFja3NJZk5lZWRlZChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIGludm9jYXRpb25zKTsKKyAgICB9CisKKyAgICBkZWFjdGl2YXRlKCk7Cit9CisK
K3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tz
KCkKK3sKKyAgICB3aGlsZSAoIWFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiA+IHJl
Z2lzdHJpZXM7CisgICAgICAgIGNvcHlUb1ZlY3RvcihhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0
cmllcygpLCByZWdpc3RyaWVzKTsKKyAgICAgICAgYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJp
ZXMoKS5jbGVhcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lzdHJpZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICByZWdpc3RyaWVzW2ldLT5kZWxpdmVyTGlmZWN5Y2xl
Q2FsbGJhY2tzKCk7CisgICAgfQorCisgICAgc19uZWVkc0RlbGl2ZXJMaWZlY3ljbGVDYWxsYmFj
a3MgPSBmYWxzZTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaAppbmRleCAxMDJhYTNk
ZTM4YzIxMTY4ZTBjN2I3MGM2NTI4YTJhMWE5MWRlNGU0Li5iMzZkNTVhNGUyYzYzOGY0YWM2Mzc0
NGU4ZWMzZTgyZjFiNmY4ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsOSAr
NTQsMjYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBRdWFsaWZpZWROYW1lOwogCitjbGFzcyBDdXN0b21FbGVtZW50SW52b2NhdGlvbiB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgQ3VzdG9tRWxlbWVudEludm9jYXRpb24oUGFzc1JlZlB0cjxF
bGVtZW50Pik7CisgICAgfkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKCk7CisKKyAgICBFbGVtZW50
KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50LmdldCgpOyB9CisKK3ByaXZhdGU6
CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKK307CisKIGNsYXNzIEN1c3RvbUVsZW1l
bnRSZWdpc3RyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEN1c3RvbUVsZW1lbnRSZWdpc3RyeT4gLCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgorICAgIGNsYXNzIENhbGxiYWNrRGVsaXZlcnlTY29wZSB7CisgICAgcHVibGljOgorICAg
ICAgICBDYWxsYmFja0RlbGl2ZXJ5U2NvcGUoKSB7IH0KKyAgICAgICAgfkNhbGxiYWNrRGVsaXZl
cnlTY29wZSgpIHsgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2Fs
bGJhY2tzSWZOZWVkZWQoKTsgfQorICAgIH07CisKICAgICBleHBsaWNpdCBDdXN0b21FbGVtZW50
UmVnaXN0cnkoRG9jdW1lbnQqKTsKICAgICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAKQEAg
LTY2LDE2ICs4NCwzNiBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dDsKIAorICAgIHZvaWQgZGlkR2l2ZVR5cGVFeHRlbnNpb24oRWxlbWVudCopOworICAgIHZvaWQg
ZGlkQ3JlYXRlRWxlbWVudChFbGVtZW50Kik7CisKKyAgICBzdGF0aWMgdm9pZCBkZWxpdmVyQWxs
TGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisgICAgc3RhdGljIHZvaWQgZGVsaXZlckFsbExpZmVjeWNs
ZUNhbGxiYWNrc0lmTmVlZGVkKCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpw
YWlyPFF1YWxpZmllZE5hbWUsIFF1YWxpZmllZE5hbWU+LCBSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiA+IENvbnN0cnVjdG9yTWFwOwogICAgIHR5cGVkZWYgSGFzaFNldDxRdWFsaWZp
ZWROYW1lPiBOYW1lU2V0OwogCisgICAgdm9pZCBhY3RpdmF0ZShjb25zdCBDdXN0b21FbGVtZW50
SW52b2NhdGlvbiYpOworICAgIHZvaWQgZGVhY3RpdmF0ZSgpOworICAgIHZvaWQgZGVsaXZlckxp
ZmVjeWNsZUNhbGxiYWNrcygpOworCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7
CiAgICAgTmFtZVNldCBtX25hbWVzOworICAgIFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2NhdGlv
bj4gbV9pbnZvY2F0aW9uczsKKworICAgIHN0YXRpYyBib29sIHNfbmVlZHNEZWxpdmVyTGlmZWN5
Y2xlQ2FsbGJhY2tzOwogfTsKIAoraW5saW5lIHZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpk
ZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzSWZOZWVkZWQoKQoreworICAgIGlmIChzX25lZWRz
RGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcykKKyAgICAgICAgZGVsaXZlckFsbExpZmVjeWNsZUNh
bGxiYWNrcygpOworICAgIEFTU0VSVCghc19uZWVkc0RlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3Mp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9N
X0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDQ4YzkxNzAzMDYyMGQxOGY3
MDY3ZjAyZjFlNTRiMDdhYThjZGRkZC4uM2RkZTdkNjZiMDZiN2NjZThjODYyNzA2N2FjNmNlYmNh
YjliMTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04NTQsNyArODU0LDcgQEAgUGFz
c1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSwgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVkOwogICAgIH0K
IAotICAgIHJldHVybiBzZXRUeXBlRXh0ZW5zaW9uKGNyZWF0ZUVsZW1lbnQobG9jYWxOYW1lLCBl
YyksIHR5cGVFeHRlbnNpb24pOyAvLyAgRklYTUU6IHRha2UgY2FyZSBvZiBAaXMKKyAgICByZXR1
cm4gc2V0VHlwZUV4dGVuc2lvbihjcmVhdGVFbGVtZW50KGxvY2FsTmFtZSwgZWMpLCB0eXBlRXh0
ZW5zaW9uKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUV4dGVuc2lvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC04OTMsNiArODkzLDEyIEBAIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiBEb2N1bWVudDo6cmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0CiAgICAg
ICAgIG1fcmVnaXN0cnkgPSBhZG9wdFJlZihuZXcgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KHRoaXMp
KTsKICAgICByZXR1cm4gbV9yZWdpc3RyeS0+cmVnaXN0ZXJFbGVtZW50KHN0YXRlLCBuYW1lLCBv
cHRpb25zLCBlYyk7CiB9CisKK3ZvaWQgRG9jdW1lbnQ6OmRpZENyZWF0ZUN1c3RvbUVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikK
K3sKKyAgICBpZiAobV9yZWdpc3RyeSkKKyAgICAgICAgbV9yZWdpc3RyeS0+ZGlkQ3JlYXRlRWxl
bWVudChlbGVtZW50KTsKK30KICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCiBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzAyZGViMWFjMzBjN2Q0ZWNjOGUzNDNiYzli
ODRlNGFjNDZhNzUzZi4uMWQ1YWE0NjQyNjAzMjc5YjA1MDNmYzNiZTE3ZTVhNmUzYWYwMjg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExNjgsNiArMTE2OCw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJFbGVtZW50KFdlYkNv
cmU6OlNjcmlwdFN0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxl
bWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwogICAgIEN1c3RvbUVsZW1l
bnRSZWdpc3RyeSogcmVnaXN0cnkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJ5LmdldCgpOyB9
CisgICAgdm9pZCBkaWRDcmVhdGVDdXN0b21FbGVtZW50KEVsZW1lbnQqLCBDdXN0b21FbGVtZW50
Q29uc3RydWN0b3IqKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGp1c3RGbG9hdFF1YWRzRm9yU2Ny
b2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShWZWN0b3I8RmxvYXRRdWFkPiYsIFJlbmRl
ck9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggYzlkZjM3NDAxOTVkMjEyNDhl
YjdkZTBmMjIzM2VkYTYwOTliNjdiYS4uZGQ0ZTI5NDdjZjJhZmIwYTI4YWU5NGYyNmEyMTg5YWNh
N2YyNjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0yOSw3ICsyOSw3IEBACiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTUltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGRvY3VtZW50RWxlbWVudDsKIAotICAgIFtSZXR1
cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdOYW1lKQorICAg
IFtSZXR1cm5OZXdPYmplY3QsIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdIEVsZW1l
bnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdOYW1lKQogICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgRG9jdW1lbnRGcmFnbWVudCAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
KTsKICAgICBbUmV0dXJuTmV3T2JqZWN0XSBUZXh0IGNyZWF0ZVRleHROb2RlKGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBkYXRhKTsKQEAgLTQ3LDExICs0NywxMiBA
QAogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKIAotICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnMsIFJldHVybk5ld09iamVjdF0gTm9kZSBpbXBvcnROb2RlKGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIE5vZGUgaW1wb3J0ZWROb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gZGVlcCkKLSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnMsIFJldHVybk5ld09iamVjdF0gRWxlbWVudCBjcmVhdGVFbGVtZW50
TlMoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVk
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCisgICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0LCBWOERlbGl2ZXJDdXN0
b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIE5vZGUgaW1wb3J0Tm9kZShpbiBbT3B0aW9uYWw9RGVm
YXVsdElzVW5kZWZpbmVkXSBOb2RlIGltcG9ydGVkTm9kZSwKKyAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIGRlZXApIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3QsIFY4RGVsaXZlckN1
c3RvbUVsZW1lbnRDYWxsYmFja3NdCisgICAgRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1Ry
ZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJp
bmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbT2JqQ0xl
Z2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3RdIEF0dHIgY3JlYXRlQXR0cmli
dXRlTlMoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZp
bmVkXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKQEAgLTEz
MSw3ICsxMzIsNyBAQAogICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgIC8vIENv
bW1vbiBleHRlbnNpb25zCi0KKyAgICBbVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10K
ICAgICBib29sZWFuICAgICAgICAgICAgZXhlY0NvbW1hbmQoaW4gW09wdGlvbmFsPURlZmF1bHRJ
c1VuZGVmaW5lZF0gRE9NU3RyaW5nIGNvbW1hbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gdXNlcklu
dGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVs
bEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB2YWx1ZSk7CkBAIC0zNjQsOSArMzY1LDExIEBACiAj
aWYgZGVmaW5lZChFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTKSAmJiBFTkFCTEVfQ1VTVE9NX0VMRU1F
TlRTCiAgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1jdXN0b21ET01FbGVtZW50cywgQ29uZGl0aW9u
YWw9Q1VTVE9NX0VMRU1FTlRTLCBJbXBsZW1lbnRlZEFzPXJlZ2lzdGVyRWxlbWVudCwgQ2FsbFdp
dGg9U2NyaXB0U3RhdGVdCiAgICAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yIHdlYmtpdFJlZ2lz
dGVyKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25hcnkgb3B0aW9ucykg
cmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgW1JldHVybk5ld09iamVjdF0gRWxlbWVudCBjcmVh
dGVFbGVtZW50KGluIERPTVN0cmluZyBsb2NhbE5hbWUsIGluIFtUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAg
IFtSZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJpbmcgcXVhbGlm
aWVkTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOERlbGl2ZXJDdXN0b21F
bGVtZW50Q2FsbGJhY2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcg
bG9jYWxOYW1lLCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRl
bnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOERl
bGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5T
KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9DUFApICYmIExB
TkdVQUdFX0NQUApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFhN2Y1MmQxMjBjOGQ2OGZkMmMz
NGU4YjMzOWNlNjViZjYwMmZjNGEuLjMyNTRlYzU0N2UxZTg2ZmI4NDRjNGVkYWUwZDhmN2QwZTEy
ZmRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDbGFzc0xpc3QuaCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50
UmVjdExpc3QuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKQEAgLTg4Nyw2ICs4ODgsMTcgQEAgdm9pZCBFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmUKICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1
dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwogfQogCitpbmxpbmUgdm9pZCBFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkRnJvbVBhcnNlck9yQnlDbG9uaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVN
RU5UUykKKyAgICBpZiAobmFtZSA9PSBpc0F0dHIpIHsKKyAgICAgICAgaWYgKEN1c3RvbUVsZW1l
bnRSZWdpc3RyeSogcmVnaXN0cnkgPSBkb2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICAg
ICAgcmVnaXN0cnktPmRpZEdpdmVUeXBlRXh0ZW5zaW9uKHRoaXMpOworICAgIH0KKyNlbmRpZgor
ICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgbmV3VmFsdWUpOworfQorCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0Ns
YXNzTmFtZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CkBAIC0xMDczLDcgKzEwODUsNyBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0
ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikKIAogICAgIC8vIFVz
ZSBhdHRyaWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmli
dXRlQ2hhbmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYXR0cmlidXRlVmVjdG9yLnNpemUoKTsgKytpKQotICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJpYnV0ZVZlY3RvcltpXS5uYW1lKCksIGF0dHJpYnV0ZVZlY3RvcltpXS52
YWx1ZSgpKTsKKyAgICAgICAgYXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhh
dHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgpLCBhdHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUoKSk7CiB9
CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygpIGNvbnN0CkBAIC0yODU3LDcgKzI4Njks
NyBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1l
bnQmIG90aGVyKQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZWxlbWVudERhdGEt
Pmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBj
b25zdF9jYXN0PGNvbnN0IEVsZW1lbnREYXRhKj4obV9lbGVtZW50RGF0YS5nZXQoKSktPmF0dHJp
YnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLT5uYW1lKCks
IGF0dHJpYnV0ZS0+dmFsdWUoKSk7CisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2Vy
T3JCeUNsb25pbmcoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBiYWE5ZDQyNTM0MzkwMzYzNDUyZmI1OTRkNGNl
YWQwOGY1NTE1MmYzLi5kMDdjOTUxNTNkODUyNjZmZTI2MmE3NDE5YzVjYzgyNzgwMDc3NTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKQEAgLTY3Miw2ICs2NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRl
KTsKICAgICB2b2lkIGFkZEF0dHJpYnV0ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUp
OwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBTeW5jaHJv
bml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZEZyb21Q
YXJzZXJPckJ5Q2xvbmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2Vy
KGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRl
eCA2YjVkNDkzZTdiZDliNTMxN2RiN2RiNTBlNTg3MTI3MTBkM2MwZTQ4Li45Yzg1YzVkZDc4YjQz
MDU5NTY2YjhkNzJiMTUzMTVmNzhjMmU4ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC03Niw3ICs3
Niw3IEBACiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgYm9vbGVhbiAgICAg
ICAgICAgIGhhc0NoaWxkTm9kZXMoKTsKLSAgICBOb2RlICAgICAgICAgICAgICAgY2xvbmVOb2Rl
KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCk7CisgICAgW1Y4
RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdIE5vZGUgY2xvbmVOb2RlKGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCk7CiAgICAgdm9pZCAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZSgpOwogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbAppbmRleCBhMzljYTkyYTUzYjk4NmNmODhmMTE5MzFjMTE5
YTExMDI4ZjVjOGFkLi41YjM1ZTlmZWRlZDI5ODM0ZjlmNmVkNzc5OTkyNjNlZjQ4YWQ0NjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCkBAIC0zMiw4ICszMiw4IEBACiAgICAgYXR0cmli
dXRlIGJvb2xlYW4gYXBwbHlBdXRob3JTdHlsZXM7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVz
ZXRTdHlsZUluaGVyaXRhbmNlOwogCi0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJp
YnV0ZSBET01TdHJpbmcgaW5uZXJIVE1MCi0gICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVu
dENhbGxiYWNrc10KKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTCBzZXR0ZXIgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYm
IExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICBOb2RlIGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVm
YXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGRlZXApIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBiYzYzOWI4ZTQxYmIwNDRhOTE5MTBlODZi
NGJkMDQ5ZmI0MTFiZDQ4Li44Y2EzOTA4NjI5YjhmMzFkOTk2ZTg0YmRkODJhZTEwNTgxNjM5ZmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogICAg
ICAgICAgICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2Vzc0tleTsKIAogICAg
IC8vIEV4dGVuc2lvbnMKLSAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0
cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUwKKyAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10gYXR0cmlidXRlIERPTVN0
cmluZyBpbm5lckhUTUwKICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlubmVyVGV4dAogICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0
UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIu
Y3BwCmluZGV4IDQ2ODlkMTNlNDJhMzVlZWEyMTRhMDI4N2FhN2I3ZGUyODlkNTEwM2EuLjUzZjNk
MjlmZmIxMDVmZWE0M2ZiOTUxYWRmNWJjYTljNWZiMjA3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0
cnkuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgpAQCAtMTI4LDggKzEyOSwxMiBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4
ZWN1dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQog
ICAgIGlmIChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0
Y2hpbmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1Njcmlw
dCk7CiAKLSAgICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpCisgICAgaWYgKCFpc0V4ZWN1dGlu
Z1NjcmlwdCgpKSB7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYK
ICAgICAgICAgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOworICAgIH0K
IAogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJh
bmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBw
ZW5kaW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKTsKQEAgLTI5Miw4ICsyOTcsMTIg
QEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25z
dCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXIKICAgICAgICAgLy8gZXZlcnkgc2NyaXB0IGVsZW1l
bnQsIGV2ZW4gaWYgaXQncyBub3QgcmVhZHkgdG8gZXhlY3V0ZSB5ZXQuIFRoZXJlJ3MKICAgICAg
ICAgLy8gdW5mb3J0dWFudGVseSBubyBvYnZpb3VzIHdheSB0byB0ZWxsIGlmIHByZXBhcmVTY3Jp
cHQgaXMgZ29pbmcgdG8KICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgc2NyaXB0IGZyb20gb3V0IGhl
cmUuCi0gICAgICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkKKyAgICAgICAgaWYgKCFpc0V4
ZWN1dGluZ1NjcmlwdCgpKSB7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAg
ICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygp
OworI2VuZGlmCiAgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRp
b25zKCk7CisgICAgICAgIH0KIAogICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRp
b25Qb2ludFJlY29yZChtX2hvc3QtPmlucHV0U3RyZWFtKCkpOwogICAgICAgICBOZXN0aW5nTGV2
ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZl
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAppbmRleCBlMjZmYjhlZjlkNWVi
NjYyZDY2NDgwMjc4NTdkYTdkYjE3YjA0YmQzLi4wZGZiMDg2Yjc4OTZjZGJlOTZiY2Y2OWI2OWFj
ZTA5YmZmOGY1MWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJL
aXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAor
I2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkV2ZW50VHJhY2Vy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVz
dFN1cHBvcnQuaCIKQEAgLTgwLDYgKzgxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUHJvY2Vzc1Rhc2soKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUHJvY2Vzc1Rhc2soKQog
ICAgIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICAgICBXZWJDb3JlOjpDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyNlbmRp
ZgogICAgICAgICBXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25z
KCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwODc2YmRiY2UyMGVkNjFkYzA2YWNjODdkNTk2Zjc4NzBh
MjMzODU1Li4zNzA0YTZkNzcwMDY2MTE5Y2M3YzU0NDQzM2FkMWEzYjJjNzc4OGExIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIEN1c3RvbSBFbGVtZW50czogImNyZWF0ZWQiIGxpZmVjeWNsZSBj
YWxsYmFjayBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3Jl
YXRlRWxlbWVudC1yZWN1cnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNy
ZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3ku
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVk
LWNyZWF0aW9uLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRNTC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1p
bm5lckhUTUwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLXBhcnNlci1vbmx5LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlw
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS5odG1sOiBBZGRl
ZC4KKwogMjAxMy0wMy0yMCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgdG8gbW9yZSBjbG9z
ZWx5IG1hdGNoIHJlYWxpdHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVs
ZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzgyM2E4MzJhN2EwODMw
MjhhZjc4NzY4NjM5MmRkZGFlNTI2M2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBV
bmNhdWdodCBSYW5nZUVycm9yOiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4KK1BB
U1MgdW5sZXNzIGNyYXNoCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVj
eWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ODAwY2RhOTUxYTMzMDU1YjRiNWZjZTZlM2EyYzIwMTljMTcyZDI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWwKQEAgLTAsMCArMSwxNyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+Citkb2N1bWVudC5yZWdpc3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50Lndl
YmtpdFJlZ2lzdGVyOworZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IGNyZWF0ZWQ6IHsgdmFsdWU6IGZ1
bmN0aW9uICgpIHsgdGhpcy5pbm5lckhUTUwgPSAiPHgtZm9vPkhlbGxvPC94LWZvbz4iOyB9IH0g
fSkgfSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Citkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworZGVidWcoIlBBU1MgdW5sZXNz
IGNyYXNoIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50
LXJlZW50cmFuY3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xp
ZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzJhYThiMmQwY2UxNTdjYjZjMWM1MmRjOWFlNDU3NTZlYjQzNmEzYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRl
ZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAK
K1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNl
ci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuY3JlYXRlZElzQ2FsbGVk
IGlzIDAKK1BBU1Mgd2luZG93LmNyZWF0ZWRJc0NhbGxlZCBpcyAxCitQQVNTIHdpbmRvdy5jcmVh
dGVkSXNDYWxsZWQgaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFu
Y3kuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZDAyNjNiMzM0NDNmOThmMWUzNzVmYTQ5ZDg5ZGUwMDk4NjA5
ZGIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVj
eWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS5odG1sCkBAIC0wLDAgKzEsMzMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBw
YXJzZXItbWFkZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4i
KQorZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJr
aXRSZWdpc3RlcjsKKword2luZG93LmNyZWF0ZWRJc0NhbGxlZCA9IDA7CisKK2Z1bmN0aW9uIGZv
b0NyZWF0ZWRGdW5jdGlvbigpIHsKKyAgc2hvdWxkQmUoIndpbmRvdy5jcmVhdGVkSXNDYWxsZWQi
LCAiMCIpOworICB0aGlzLmlubmVySFRNTCA9ICI8eC1iYXI+SGVsbG88L3gtYmFyPiI7CisgIHNo
b3VsZEJlKCJ3aW5kb3cuY3JlYXRlZElzQ2FsbGVkIiwgIjEiKTsKKyAgd2luZG93LmNyZWF0ZWRJ
c0NhbGxlZCsrOworfQorCitmdW5jdGlvbiBiYXJDcmVhdGVkRnVuY3Rpb24oKSB7CisgIHdpbmRv
dy5jcmVhdGVkSXNDYWxsZWQrKzsKK30KKworZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBw
cm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IGNyZWF0ZWQ6
IHsgdmFsdWU6IGZvb0NyZWF0ZWRGdW5jdGlvbiB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIo
IngtYmFyIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBl
LCB7IGNyZWF0ZWQ6IHsgdmFsdWU6IGJhckNyZWF0ZWRGdW5jdGlvbiB9IH0pIH0pOworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4
LWZvbyIpOworc2hvdWxkQmUoIndpbmRvdy5jcmVhdGVkSXNDYWxsZWQiLCAiMiIpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBpLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGkt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ODE0ZTEwZjdmMDA4ZjNmOWJmMTZlZTAyOGEzY2Vk
MDcxMzYxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20v
bGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBpLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0
IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjg6IFtvYmplY3QgSFRNTERpdkVsZW1lbnRdCitU
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2tzIG9mIEFQSS1vcmln
aW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3gtZm9vJykuY3JlYXRlZElzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JywgJ3gtYmFyJykuY3JlYXRlZElzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ3gt
Zm9vJykuY3JlYXRlZElzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicsICd4LWJhcicpLmNyZWF0
ZWRJc0NhbGxlZCBpcyB0cnVlCitQQVNTIGZvby5jbG9uZU5vZGUoKS5jcmVhdGVkSXNDYWxsZWQg
aXMgdHJ1ZQorUEFTUyBmb28uY2xvbmVOb2RlKHRydWUpLmZpcnN0Q2hpbGQuY3JlYXRlZElzQ2Fs
bGVkIGlzIHRydWUKK1BBU1MgYmFyLmNsb25lTm9kZSgpLmNyZWF0ZWRJc0NhbGxlZCBpcyB0cnVl
CitQQVNTIGJhci5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZC5jcmVhdGVkSXNDYWxsZWQgaXMg
dHJ1ZQorUEFTUyBmb3JlaWduRm9vLmNyZWF0ZWRJc0NhbGxlZCBpcyB1bmRlZmluZWQuCitQQVNT
IGZvcmVpZ25Gb28uZmlyc3RDaGlsZC5jcmVhdGVkSXNDYWxsZWQgaXMgdW5kZWZpbmVkLgorUEFT
UyBpbXBvcnRlZEZvby5jcmVhdGVkSXNDYWxsZWQgaXMgdHJ1ZQorUEFTUyBpbXBvcnRlZEZvby5m
aXJzdENoaWxkLmNyZWF0ZWRJc0NhbGxlZCBpcyB0cnVlCitQQVNTIGltcG9ydGVkQmFyLmNyZWF0
ZWRJc0NhbGxlZCBpcyB0cnVlCitQQVNTIGltcG9ydGVkQmFyLmZpcnN0Q2hpbGQuY3JlYXRlZElz
Q2FsbGVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI5Mjdl
ZmEwNjYyZDkxYjc0ZDA0YzM5ZjNjMWFhYTEwNGZmMTMxYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGku
aHRtbApAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5
Y2xlIGNhbGxiYWNrcyBvZiBBUEktb3JpZ2luYXRlZCBlbGVtZW50cyBhcmUgdmlzaWJsZSBpbiBm
b2xsb3dpbmcgc2NyaXB0IGJsb2NrLiIpCitkb2N1bWVudC5yZWdpc3RlciA9IGRvY3VtZW50LnJl
Z2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOworZG9jdW1lbnQucmVnaXN0ZXIoIngt
Zm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7
IGNyZWF0ZWQ6IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB0aGlzLmNyZWF0ZWRJc0NhbGxlZCA9IHRy
dWU7IH0gfSB9KSB9KTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWJhciIsIHsgcHJvdG90eXBlOiBP
YmplY3QuY3JlYXRlKEhUTUxEaXZFbGVtZW50LnByb3RvdHlwZSwgeyBjcmVhdGVkOiB7IHZhbHVl
OiBmdW5jdGlvbigpIHsgdGhpcy5jcmVhdGVkSXNDYWxsZWQgPSB0cnVlOyB9IH0gfSkgfSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxk
aXYgaWQ9Imhvc3QiPjwvZGl2PgorCis8c2NyaXB0PgorCitzaG91bGRCZVRydWUoImRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJykuY3JlYXRlZElzQ2FsbGVkIik7CitzaG91bGRCZVRydWUo
ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpLmNyZWF0ZWRJc0NhbGxlZCIp
OworCitzaG91bGRCZVRydWUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCcsICd4LWZvbycpLmNyZWF0ZWRJc0NhbGxlZCIpOworc2hvdWxkQmVU
cnVlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnLCAnZGl2JywgJ3gtYmFyJykuY3JlYXRlZElzQ2FsbGVkIik7CisKK3ZhciBmb28gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycpOworZm9vLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vLmNsb25lTm9k
ZSgpLmNyZWF0ZWRJc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJmb28uY2xvbmVOb2RlKHRydWUp
LmZpcnN0Q2hpbGQuY3JlYXRlZElzQ2FsbGVkIik7Citjb25zb2xlLmxvZyhmb28uY2xvbmVOb2Rl
KHRydWUpLmZpcnN0Q2hpbGQpOworCit2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JywgJ3gtYmFyJyk7CitiYXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
eC1mb28nKSk7CitzaG91bGRCZVRydWUoImJhci5jbG9uZU5vZGUoKS5jcmVhdGVkSXNDYWxsZWQi
KTsKK3Nob3VsZEJlVHJ1ZSgiYmFyLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkLmNyZWF0ZWRJ
c0NhbGxlZCIpOworCit2YXIgZm9yZWlnbkRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNy
ZWF0ZURvY3VtZW50ICgnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdodG1sJywgbnVs
bCk7CisKK3ZhciBmb3JlaWduRm9vID0gZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCd4LWZvbycp
OworZm9yZWlnbkZvby5hcHBlbmRDaGlsZChmb3JlaWduRG9jLmNyZWF0ZUVsZW1lbnQoJ2Rpdics
ICd4LWJhcicpKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJmb3JlaWduRm9vLmNyZWF0ZWRJc0NhbGxl
ZCIpOworc2hvdWxkQmVVbmRlZmluZWQoImZvcmVpZ25Gb28uZmlyc3RDaGlsZC5jcmVhdGVkSXND
YWxsZWQiKTsKK2ltcG9ydGVkRm9vID0gZG9jdW1lbnQuaW1wb3J0Tm9kZShmb3JlaWduRm9vKQor
c2hvdWxkQmVUcnVlKCJpbXBvcnRlZEZvby5jcmVhdGVkSXNDYWxsZWQiKTsKK3Nob3VsZEJlVHJ1
ZSgiaW1wb3J0ZWRGb28uZmlyc3RDaGlsZC5jcmVhdGVkSXNDYWxsZWQiKTsKKwordmFyIGZvcmVp
Z25CYXIgPSBmb3JlaWduRG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpOworZm9yZWln
bkJhci5hcHBlbmRDaGlsZChmb3JlaWduRG9jLmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJykpOworaW1w
b3J0ZWRCYXIgPSBkb2N1bWVudC5pbXBvcnROb2RlKGZvcmVpZ25CYXIpOworc2hvdWxkQmVUcnVl
KCJpbXBvcnRlZEJhci5jcmVhdGVkSXNDYWxsZWQiKTsKK3Nob3VsZEJlVHJ1ZSgiaW1wb3J0ZWRC
YXIuZmlyc3RDaGlsZC5jcmVhdGVkSXNDYWxsZWQiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtaW5uZXJIVE1MLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1NDJmN2E2MDEwODhjNmU1MDI4OTMyNjRhMTVjY2JlMDAyYjNlMGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtaW5u
ZXJIVE1MLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50IGlzIHZp
c2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgd2luZG93LmNyZWF0ZWRJc0NhbGxlZCBpcyBbJ1gtRk9PJywgJ0RJVics
ICdYLUZPTyddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1j
cmVhdGVkLWlubmVySFRNTC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVj
eWNsZS1jcmVhdGVkLWlubmVySFRNTC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjFiYTY4YzNhMzlkZGMx
OGNkYjY5ZWY5YTBkZDNlOTBkYWE3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtaW5uZXJIVE1MLmh0bWwKQEAgLTAsMCAr
MSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBv
ZiBhIHBhcnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJs
b2NrLiIpCitkb2N1bWVudC5yZWdpc3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50
LndlYmtpdFJlZ2lzdGVyOword2luZG93LmNyZWF0ZWRJc0NhbGxlZCA9IFtdOworZG9jdW1lbnQu
cmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQu
cHJvdG90eXBlLCB7IGNyZWF0ZWQ6IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3JlYXRl
ZElzQ2FsbGVkLnB1c2godGhpcy50YWdOYW1lKTsgfSB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0
ZXIoIngtYmFyIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJv
dG90eXBlLCB7IGNyZWF0ZWQ6IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3JlYXRlZElz
Q2FsbGVkLnB1c2godGhpcy50YWdOYW1lKTsgfSB9IH0pIH0pOworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cis8c2NyaXB0PgorY29udGFpbmVyLmlubmVy
SFRNTCA9ICI8eC1mb28+PC94LWZvbz48ZGl2IGlzPSd4LWJhcic+PC9kaXY+PHgtZm9vPjwveC1m
b28+IjsKK3Nob3VsZEJlKCJ3aW5kb3cuY3JlYXRlZElzQ2FsbGVkIiwgIlsnWC1GT08nLCAnRElW
JywgJ1gtRk9PJ10iKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1v
bmx5LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xl
LWNyZWF0ZWQtcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmZkODA3NDVi
MGVmMDVmMTc1NDkxZDIzODExYjE1YjljZjM4YjRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1vbmx5LWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8c3Bhbj5IZWxsbzwvc3Bhbj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1v
bmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhlYzFmZmY1YTU0Mjg3NjZmYjhmY2EyNTFmMjUyN2ViMGUw
YmRkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citkb2N1bWVudC5yZWdpc3RlciA9IGRv
Y3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOworcHJvdG8gPSBPYmpl
Y3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyBjcmVhdGVkOiB7IHZhbHVlOiBmdW5j
dGlvbigpIHsgdGhpcy5pbm5lckhUTUwgPSAiSGVsbG8iOyB9IH0gfSk7Citkb2N1bWVudC5yZWdp
c3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogcHJvdG8gfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHgtZm9vPjwveC1mb28+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlw
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNy
ZWF0ZWQtcGFyc2VyLXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5MzZhODMxMzlj
NmNmYmNmNDBmMjQyZDJmZDgzZjkxOWNkOTBkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZl
Y3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZm9s
bG93aW5nIHNjcmlwdCBibG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgd2luZG93LmNyZWF0ZWRJc0NhbGxlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1zY3JpcHQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWIyMTU1MzBhNjFkZTI0M2M1Njg5ZDIxMTUzNGZiYmI5YzViNWUxYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
Y3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNlci1tYWRlIGVsZW1l
bnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLiIpCitkb2N1bWVudC5yZWdp
c3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOworcHJv
dG8gPSBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyBjcmVhdGVkOiB7IHZh
bHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNyZWF0ZWRJc0NhbGxlZCA9IHRydWU7IH0gfSB9KTsK
K2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsgcHJvdG90eXBlOiBwcm90byB9KTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8eC1mb28+PC94LWZvbz4KKzxzY3JpcHQ+CitzaG91bGRC
ZVRydWUoIndpbmRvdy5jcmVhdGVkSXNDYWxsZWQiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLXBhc3RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM4MjQw
NmIyMWZiNmRlM2UzNjhkNzhhN2M1NTZiY2ViMjU4ZGE1YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI2OiBbb2JqZWN0
IEhUTUxEaXZFbGVtZW50XQorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIGNh
bGxiYWNrcyBvZiBlZGl0aW5nLW9yaWdpbmF0ZWQgZWxlbWVudHMgYXJlIHZpc2libGUgaW4gZm9s
bG93aW5nIHNjcmlwdCBibG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgd2luZG93LmNyZWF0ZWRJc0NhbGxlZCBpcyBbJ1gtRk9PJywgJ0RJViddCitQQVNTIHdpbmRv
dy5jcmVhdGVkSXNDYWxsZWQgaXMgWydYLUZPTycsICdESVYnLCAnWC1GT08nLCAnRElWJ10KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcyODY3ZDEyYmEyZjM4MzMwZWZlMzVhOTVhNGFhMjk3NzI2MzI0
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtcGFzdGUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIGNhbGxiYWNrcyBvZiBlZGl0aW5nLW9yaWdpbmF0ZWQgZWxl
bWVudHMgYXJlIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQu
cmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsK
K3dpbmRvdy5jcmVhdGVkSXNDYWxsZWQgPSBbXTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIs
IHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyBjcmVh
dGVkOiB7IHZhbHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNyZWF0ZWRJc0NhbGxlZC5wdXNoKHRo
aXMudGFnTmFtZSk7IH0gfSB9KSB9KTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWJhciIsIHsgcHJv
dG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxEaXZFbGVtZW50LnByb3RvdHlwZSwgeyBjcmVhdGVk
OiB7IHZhbHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNyZWF0ZWRJc0NhbGxlZC5wdXNoKHRoaXMu
dGFnTmFtZSk7IH0gfSB9KSB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJjb250YWluZXIiIGNvbnRlbnRlZGl0YWJsZT5bPHgtZm9vPkZvbzwveC1mb28+PGRpdiBpcz0n
eC1iYXInPkJhcjwvZGl2Pl08L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc2VsZWN0aW9uID0gd2luZG93
LmdldFNlbGVjdGlvbigpOworCitzZWxlY3Rpb24uc2VsZWN0QWxsQ2hpbGRyZW4oY29udGFpbmVy
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7CisKK3Nob3VsZEJlKCJ3aW5kb3cuY3Jl
YXRlZElzQ2FsbGVkIiwgIlsnWC1GT08nLCAnRElWJ10iKTsKK3NlbGVjdGlvbi5jb2xsYXBzZVRv
RW5kKCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiKTsKK3Nob3VsZEJlKCJ3aW5kb3cu
Y3JlYXRlZElzQ2FsbGVkIiwgIlsnWC1GT08nLCAnRElWJywgJ1gtRk9PJywgJ0RJViddIik7CisK
K2NvbnNvbGUubG9nKGNvbnRhaW5lcik7Citjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194421</attachid>
            <date>2013-03-21 19:44:17 -0700</date>
            <delta_ts>2013-03-21 22:03:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112538-20130322114005.patch</filename>
            <type>text/plain</type>
            <size>51850</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY3YTE4ZDEwMTdmODRl
ZmI0YTkwYzQ4NTliMGY5Y2Y0NDJkNGU0MS4uZGYxOTBlOWFhZjVmNTRmMmM1NDE3NmE3Njc5ZTAz
MjVkMzllMmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMy0wMy0yMSAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIEVsZW1l
bnRzOiAiY3JlYXRlZCIgbGlmZWN5Y2xlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI1MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBh
bGxvd3MgZWFjaCBjdXN0b20gZWxlbWVudCBkZWZpbml0aW9uIHRvIGhvb2sgdXAgaXRzIGluc3Rh
bnRpYXRpb24sCisgICAgICAgIG5hbWVseSAiY3JlYXRlZCIgbGlmZWN5Y2xlIGNhbGxiYWNrLgor
CisgICAgICAgIFRoZSBjaGFuZ2UgaGFzIHR3byBwYXJ0czoKKyAgICAgICAgLSAxLiBUcmFja2lu
ZyB3aGljaCBFbGVtZW50IG9iamVjdHMgdG8gYmUgY3JlYXRlZC4KKyAgICAgICAgLSAyLiBJbnZv
a2luZyBhcHByb3ByaWF0ZSBKYXZhU2NyaXB0IGZ1bmN0aW9ucywgd2hpY2ggYXJlICJjcmVhdGVk
IiBjYWxsYmFja3MKKyAgICAgICAgICBiZWZvcmUgdGhlIEVsZW1lbnQgb2JqZWN0IGlzIHZpc2li
bGUgZnJvbSBwYWdlIHNjcmlwdC4KKworICAgICAgICBGb3IgMSwgQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5IG1haW50YWlucyBsaXN0IG9mICJjYWxsYmFjaworICAgICAgICBpbnZvY2Fpb25zIi4gIEVh
Y2ggbGlzdCBpdGVtICgiaW52b2NhdGlvbiIpIHRyYWNrcyB0aGUgZWxlbWVudAorICAgICAgICB3
aGljaCBoYXMgYSBsaWZlY3ljbGUgY2FsbGJhY2sgdG8gYmUgaW52b2tlZC4gRWFjaCBpbnZvY2F0
aW9uIGlzCisgICAgICAgIHJlZ2lzdGVyZWQgd2hlbiAtIEFueSBjdXN0b20gZWxlbWVudCBDKysg
b2JqZWN0IGlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgU2VlIGNoYW5nZXMgb24gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yLmNwcC4KKworICAgICAgICBUaGlzIGFsc28gaGFwcGVucyB3aGVuIEBp
cyBhdHRyaWJ1dGUgaXMgc2V0IGJ5IHRoZSBwYXJzZXIgb3Igbm9kZQorICAgICAgICBjbG9uaW5n
IHJvdXRpbmUsIHdoaWNoIGNhbiB0dXJuIGEgbm9uLWN1c3RvbSBlbGVtZW50IGludG8gYQorICAg
ICAgICB0eXBlLWV4dGVuZGVkIGN1c3RvbSBlbGVtZW50LiBTZWUgY2hhbmdlcyBvbiBFbGVtZW50
LmNwcC4KKworICAgICAgICBGb3IgMiwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IGJhc2ljYWxseSBm
b2xsb3dzIHdoYXQKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlciBpcyBkb2luZywgYW5kIGludHJv
ZHVjZXMgYSBtZXRob2QgY2FsbGVkCisgICAgICAgIGRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3Mo
KS4gVGhpcyBmdW5jdGlvbiBmbHVzaGVzIGFsbCBwZW5kaW5nCisgICAgICAgIGNhbGxiYWNrIGlu
dm9jYXRpb25zLiBZb3UgY2FuIHRoaW5rIGl0IGFzIGEgZHVhbCBvZgorICAgICAgICBNdXRhdGlv
bk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCkuCisKKyAgICAgICAgVGhlIGRlbGl2ZXJ5
IGZ1bmN0aW9uIGlzIGNhbGxlZCBwbGFjZXMgd2hlcmUgTXV0YXRpb25PYnNlcnZlcidzCisgICAg
ICAgIGRlbGl2ZXJBbGxNdXRhdGlvbnMoKSBpcyBjYWxsZWQuIEluIGFkZGl0aW9uLCBpdCBpcyBh
bHNvIGNhbGxlZAorICAgICAgICBqdXN0IGJlZm9yZSByZXR1cm5pbmcgZnJvbSBhIHNldCBvZiBE
T00gQVBJcy4gRm9yIGV4YW1wbGUsIGl0IGlzCisgICAgICAgIGNhbGxlZCBqdXN0IGJlZm9yZSBj
cmVhdGVFbGVtZW50KCkgcmV0dXJucywgc28gdGhhdCBwb3NzaWJseQorICAgICAgICBjcmVhdGVk
IGN1c3RvbSBlbGVtZW50IGJlY29tZXMgcmVhZHkgdGhyb3VnaCBpdHMgY3JlYXRlZCgpCisgICAg
ICAgIGNhbGxiYWNrLiBTdWNoIEFQSXMgZ2V0ICJWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJh
Y2tzIiBJREwKKyAgICAgICAgYXR0cmlidXRlLiBJbiBwcmluY2lwbGUsIEFQSXMgd2hpY2ggY2Fu
IGNyZWF0ZSBuZXcgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaW5zdG5hY2VzIGFyZSBtYXJrZWQu
IFNlZSBDdXN0b21FbGVtZW50UmVnaXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZQorICAgICAg
ICBhbmQgY2hhbmdlcyBvbiBDb2RlR2VuZXJhdG9yVjgucG0uCisKKyAgICAgICAgV2UgbmVlZCB0
aGlzIGV4dHJhIHdvcmsgYmVjYXVzZSB0aGUgY3JlYXRlZCgpIGNhbGxiYWNrIG5lZWRzIHRvCisg
ICAgICAgIGdpdmUgYW4gaWxsdXNpb24gc28gdGhhdCBKYXZhU2NyaXB0IHByb2dyYW1tZXJzIGZl
ZWwgbGlrZSB0aGUKKyAgICAgICAgY3JlYXRlZCgpIGNhbGxiYWNrIGJlaW5nIGNhbGxlZCBqdXN0
IGFmdGVyIGl0IGlzIGNyZWF0ZWQsIGluc3RlYWQKKyAgICAgICAgb2YgY2FsbGVkIG9uIGFyYml0
cmFyeSBsYXRlIHRpbWluZyBsaWtlIE11dGF0aW9uT2JzZXJ2ZXIKKyAgICAgICAgbm90aWZpY2F0
aW9ucy4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVk
LWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFw
aS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQt
aW5uZXJIVE1MLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
Y3JlYXRlZC1wYXJzZXItb25seS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20v
bGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIC0gSG9va2VkIHVwIENh
bGxiYWNrRGVsaXZlcnlTY29wZSB0aHJvdWdoIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFj
a3MgYXR0cml1dGUuCisgICAgICAgIChHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2Nv
cGVJZk5lZWRlZCk6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIpOgorICAgICAg
ICAoR2VuZXJhdGVGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlQ3JlYXRl
ZENhbGxiYWNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBl
cnM6Omludm9rZUNyZWF0ZWRDYWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaDoKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRIZWxwZXJz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcDogQWRkZWQgZGVs
aXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCisgICAgICAgIChXZWJDb3JlOjpWOFJlY3Vyc2lv
blNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVt
ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yOjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKiBkb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I6OmlzRXh0ZW5kZWQpOgorICAgICAgICAoQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDogQWRkaW5nIGVsZW1l
bnQgdHJhY2tpbmcgYW5kIGludm9jYXRpb24gZXhlY3V0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudEludm9jYXRpb246OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjp+Q3VzdG9tRWxlbWVudEludm9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojp+Q3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlk
R2l2ZVR5cGVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpkaWRDcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpkZWFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6ZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MpOgorICAgICAgICAq
IGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRJbnZv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjplbGVt
ZW50KToKKyAgICAgICAgKENhbGxiYWNrRGVsaXZlcnlTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZTo6Q2FsbGJhY2tE
ZWxpdmVyeVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
Q2FsbGJhY2tEZWxpdmVyeVNjb3BlOjp+Q2FsbGJhY2tEZWxpdmVyeVNjb3BlKToKKyAgICAgICAg
KEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDcmVhdGVDdXN0b21FbGVt
ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNs
b25pbmcpOiBBZGRlZCB0byBjYXRjaCBAaXMgYXR0cmlidXRlCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFNjcmlwdFJ1bm5lci5jcHA6IEFkZGVkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKQor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRB
bmREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnJ1
blNjcmlwdCk6CisKIDIwMTMtMDMtMjEgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQnlwYXNzIFhTU0F1ZGl0b3IgZm9yIGFzcC5uZXQgc2VydmVycy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOThhOTY5NzQ2ODg4N2NjNTYwMmJlM2EzODY5YjY2ODdm
MGZhMWUxMy4uNGM5ZWI5ZDA4ZjIzMWM2MTJkMGMzYzYwNTc3YzJmNzJiZDU5Yzk1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0yMSAgSGFqaW1l
IE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIEVsZW1lbnRz
OiAiY3JlYXRlZCIgbGlmZWN5Y2xlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI1MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJLaXQuY3Bw
OiBBZGRlZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCkKKwogMjAxMy0wMy0yMSAgR2Fy
cmV0dCBDYXN0byAgPGdjYXN0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBB
ZGQgcG9zc2libGVVc2VyTmFtZXMgdG8gV2ViUGFzc3dvcmRGb3JtRGF0YQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA0OTE1
Yzk3ZjAxYTJkYzQ3M2E3YTAwOTQ1YzFkMjE2OGRmZDk3NDNhLi4xM2MwYTVmOTFhYzg1N2M2MGVi
NzFiYzk4ZmVjNzg1ZTkxNmRhZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTI1Niw2ICsxMjU2LDI1IEBAIEVORAog
RU5ECiB9CiAKK3N1YiBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRl
ZAoreworICAgIG15ICRvdXQgPSBzaGlmdDsKKyAgICBteSAkZXh0ID0gc2hpZnQ7CisKKyAgICBp
ZiAoJGV4dC0+eyJWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzIn0pIHsKKyAgICAgICAg
aWYgKCRleHQtPnsiUmVmbGVjdCJ9KSB7CisgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogUmVm
bGVjdCBhbmQgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrcyBjYW5ub3QgY29leGlzdCB5
ZXQiOworICAgICAgICB9CisKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkN1c3RvbUVsZW1l
bnRSZWdpc3RyeS5oIiwgIkNVU1RPTV9FTEVNRU5UUyIpOworICAgICAgICBwdXNoKEAkb3V0LCA8
PEVORCk7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZSBkZWxpdmVyeVNjb3BlOworI2VuZGlmCitFTkQK
KyAgICB9Cit9CisKIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogewogICAg
IG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKQEAgLTE0MDQsNiArMTQyMyw4IEBAIEVORAogICAgICAg
ICAkcmVzdWx0ID0gIldURjo6Z2V0UHRyKCIgLiAkcmVzdWx0IC4gIikiOwogICAgIH0KIAorICAg
IEdlbmVyYXRlQ3VzdG9tRWxlbWVudEludm9jYXRpb25TY29wZUlmTmVlZGVkKFxAaW1wbENvbnRl
bnRJbnRlcm5hbHMsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsK
KwogICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2Vw
dGlvbnN9OwogCiAgICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CkBAIC0xNzA0LDYgKzE3MjUsOCBA
QCBFTkQKIEVORAogICAgIH0KIAorICAgIEdlbmVyYXRlQ3VzdG9tRWxlbWVudEludm9jYXRpb25T
Y29wZUlmTmVlZGVkKFxAaW1wbENvbnRlbnRJbnRlcm5hbHMsICRmdW5jRXh0KTsKKwogICAgICMg
Q2hlY2sgZG9tYWluIHNlY3VyaXR5IGlmIG5lZWRlZAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9ICYmICEkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAg
ICMgV2UgaGF2ZSBub3QgZmluZCByZWFsIHVzZSBjYXNlcyB5ZXQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCA2NjkyOGU3OTIx
MzcxOWVhOTcwYzYzMmNkY2VhMzY1ZmE1YzYwNGUzLi41OWM5YjA1ZjIxODJiNzUxYjJkZmMwMDU5
NzgwYWU4MWQwZDgyYjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTEzMywzICsxMzMsNCBAQCBWOFJlYWRPbmx5CiBWOFNr
aXBWVGFibGVWYWxpZGF0aW9uCiBWOFVuZm9yZ2VhYmxlCiBWOFdyYXBBc0Z1bmN0aW9uCitWOERl
bGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAKaW5kZXggMmNkNWNhNDAxZTdhNGMzNzM2
OTYxOTI5ZTBmODExOGEyMDEzNThlMy4uNjc5ZmFlZDhkNWQ3NjI5MjdkZThjMGZkZTk2Mzg1ZmNj
NWMxZGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxl
bWVudEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVs
ZW1lbnRIZWxwZXJzLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRIZWxwZXJzLmgiCiAKKyNpbmNsdWRlICJDdXN0b21FbGVt
ZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJWOEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNsdWRlICJW
OEhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCkBAIC0xMzgsNiArMTQwLDQ0IEBAIGNvbnN0IFF1YWxp
ZmllZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4KICAgICByZXR1cm4gZmluZEhUTUxUYWdOYW1lT2ZWOFR5cGUodHlwZSk7CiB9
CiAKK3ZvaWQgQ3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZUNyZWF0ZWRDYWxsYmFja0lmTmVl
ZGVkKEVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCit7
CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IHRvVjgoZWxlbWVudCwg
Y29udGV4dC0+R2xvYmFsKCksIGNvbnRleHQtPkdldElzb2xhdGUoKSk7CisgICAgaWYgKHdyYXBw
ZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgIXdyYXBwZXJWYWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcHJvdG90eXBlVmFsdWUgPSB3cmFwcGVyLT5HZXRQcm90b3R5cGUoKTsKKyAgICBpZiAocHJv
dG90eXBlVmFsdWUuSXNFbXB0eSgpIHx8ICFwcm90b3R5cGVWYWx1ZS0+SXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90eXBlID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGZ1bmN0aW9uVmFsdWUgPSBwcm90b3R5cGUtPkdldCh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woInJlYWR5Q2FsbGJhY2siKSk7CisgICAgaWYgKGZ1bmN0aW9uVmFsdWUuSXNFbXB0
eSgpIHx8ICFmdW5jdGlvblZhbHVlLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPjo6Q2FzdChmdW5jdGlvblZhbHVlKTsKKyAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9u
Q2F0Y2hlcjsKKyAgICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSA9IHsgfTsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpj
YWxsRnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0aW9uKGVsZW1lbnQtPmRvY3VtZW50KCksIGZ1bmN0
aW9uLCB3cmFwcGVyLCAwLCBhcmdzKTsKK30KKworCit2b2lkIEN1c3RvbUVsZW1lbnRIZWxwZXJz
OjppbnZva2VDcmVhdGVkQ2FsbGJhY2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
ZXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVmVjdG9yPEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uPiYg
aW52b2NhdGlvbnMpCit7CisgICAgQVNTRVJUKCFpbnZvY2F0aW9ucy5pc0VtcHR5KCkpOworCisg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSB0b1Y4Q29udGV4dChleGVjdXRpb25Db250ZXh0LCBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSk7CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnZvY2F0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NFUlQo
ZXhlY3V0aW9uQ29udGV4dCA9PSBpbnZvY2F0aW9uc1tpXS5lbGVtZW50KCktPmRvY3VtZW50KCkp
OworICAgICAgICBpbnZva2VDcmVhdGVkQ2FsbGJhY2tJZk5lZWRlZChpbnZvY2F0aW9uc1tpXS5l
bGVtZW50KCksIGNvbnRleHQpOworICAgIH0KK30KKwogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01f
RUxFTUVOVFMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCmluZGV4IGYyOTBmNTQ4ODBkMDk3
NDI1NzJhOWRkNGY4NDI5NzBlYzBiYjUxMDguLmQ1MWZmYjMyMjAzYzVjNmNmZmZkMTAzZWUxYjI1
ZjJmOThlMmJkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3Rv
bUVsZW1lbnRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9t
RWxlbWVudEhlbHBlcnMuaApAQCAtMzMsMTIgKzMzLDE1IEBACiAKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQogCiBjbGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I7CitjbGFzcyBDdXN0b21FbGVtZW50
SW52b2NhdGlvbjsKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3Mg
U2NyaXB0U3RhdGU7CiAKQEAgLTUyLDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc0ZlYXR1cmVBbGxvd2VkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICAgICBzdGF0aWMg
V3JhcHBlclR5cGVJbmZvKiBmaW5kV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNo
YWluKTsKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluKTsKKworICAgIHN0YXRpYyB2b2lkIGludm9rZUNyZWF0
ZWRDYWxsYmFja3NJZk5lZWRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVmVjdG9y
PEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uPiYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lk
IGludm9rZUNyZWF0ZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0Pik7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAKaW5kZXggYmQ5
MjQ4MTUyOTJkOWYwYWJmZjJkZDRiYjA2Nzc2MDAxYTFiNzY3Yy4uMmMyZjk1NTJmNmFjYzNmZTJm
NTY2MGI4MTM4YzNlMWE4YWQ4ZmZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhSZWN1cnNpb25TY29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAKKyNpbmNsdWRlICJDdXN0b21F
bGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogCkBAIC00Niw4ICs0NywxMiBAQCB2
b2lkIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpCiAgICAgSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygpOwogI2Vu
ZGlmCiAKLSAgICBpZiAobV9pc0RvY3VtZW50Q29udGV4dCkKKyAgICBpZiAobV9pc0RvY3VtZW50
Q29udGV4dCkgewogICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25z
KCk7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKKyAgICB9CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzQzMTk3MThlN2FjNDlmMGY1OGE3ZmZjOTNm
ZWFkOTU2YzVlMDNiYy4uOGIzMmRhZjU1MWQ4ZjU0MzhlYTRlZjAxYzMxOGRkMmNlOGI5MjUzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTYzLDcgKzYzLDE1IEBAIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6fkN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3RvcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkgY29uc3QKK1Bhc3NSZWZQdHI8RWxlbWVudD4g
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkKK3sKKyAgICBSZWZQdHI8
RWxlbWVudD4gY3JlYXRlZCA9IGNyZWF0ZUVsZW1lbnRJbnRlcm5hbCgpOworICAgIGlmIChjcmVh
dGVkKQorICAgICAgICBkb2N1bWVudCgpLT5kaWRDcmVhdGVDdXN0b21FbGVtZW50KGNyZWF0ZWQu
Z2V0KCksIHRoaXMpOworICAgIHJldHVybiBjcmVhdGVkLnJlbGVhc2UoKTsKK30KKworUGFzc1Jl
ZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnRJbnRl
cm5hbCgpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCAwZWVkNzlh
ZTU4MzliM2M4ZDNkNDZjMmUxMWMyODhlMmZmYTg4OGI0Li45YWNjY2Q3ZDdlNWRiOGIxODJlMjAy
NjYyZTA4ZGM5YjQzYmRkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvci5oCkBAIC01OSwxMiArNTksMTUgQEAgcHVibGljOgogICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsgfQogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlTmFtZTsgfQogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxOYW1lOyB9CisgICAgYm9vbCBpc0V4
dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSAhPSBtX2xvY2FsTmFtZTsgfQogCi0g
ICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7CisgICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KCk7CiAKIHByaXZhdGU6CiAgICAgQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZU5hbWUs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSk7CiAKKyAgICBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRJbnRlcm5hbCgpOworCiAgICAgUXVhbGlmaWVkTmFtZSBtX3R5cGVO
YW1lOwogICAgIFF1YWxpZmllZE5hbWUgbV9sb2NhbE5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCA2YzI4ZjI4MTkyM2I4YmZmNzM0
ZDJjMjc2ODA5M2U5MWUyMzMxOGY0Li4xNThmYTg4ZjVmNWNiNTA1MjhiMGI3OTg4ZmNhMjgzMjgy
ZGRjM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNw
cApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxVbmtub3duRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCkBAIC01NCw2ICs1NSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK0N1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbihQYXNz
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30K
KworQ3VzdG9tRWxlbWVudEludm9jYXRpb246On5DdXN0b21FbGVtZW50SW52b2NhdGlvbigpCit7
Cit9CisKIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50
KQogewpAQCAtNjEsNiArNzEsNyBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OkN1c3RvbUVsZW1l
bnRSZWdpc3RyeShEb2N1bWVudCogZG9jdW1lbnQpCiAKIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
fkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpCiB7CisgICAgZGVhY3RpdmF0ZSgpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKQEAgLTE5MywxMSArMjA0LDYzIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvCiAgICAgcmV0
dXJuIDA7CiB9CiAKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRHaXZlVHlwZUV4dGVu
c2lvbihFbGVtZW50KiBlbGVtZW50KQoreworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IGNvbnN0cnVjdG9yID0gZmluZEZvcihlbGVtZW50KTsKKyAgICBpZiAoIWNvbnN0cnVj
dG9yIHx8ICFjb25zdHJ1Y3Rvci0+aXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm47CisgICAg
YWN0aXZhdGUoQ3VzdG9tRWxlbWVudEludm9jYXRpb24oZWxlbWVudCkpOworfQorCit2b2lkIEN1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQor
eworICAgIGFjdGl2YXRlKEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKK30KKwor
dm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmFjdGl2YXRlKGNvbnN0IEN1c3RvbUVsZW1lbnRJ
bnZvY2F0aW9uJiBpbnZvY2F0aW9uKQoreworICAgIGJvb2wgd2FzSW5hY3RpdmUgPSBtX2ludm9j
YXRpb25zLmlzRW1wdHkoKTsKKyAgICBtX2ludm9jYXRpb25zLmFwcGVuZChpbnZvY2F0aW9uKTsK
KyAgICBpZiAod2FzSW5hY3RpdmUpCisgICAgICAgIGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3Ry
aWVzKCkuYWRkKHRoaXMpOworfQorCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVhY3Rp
dmF0ZSgpCit7CisgICAgQVNTRVJUKG1faW52b2NhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBpZiAo
YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5jb250YWlucyh0aGlzKSkKKyAgICAgICAg
YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5yZW1vdmUodGhpcyk7Cit9CisKIGlubGlu
ZSBEb2N1bWVudCogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAordm9p
ZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKQorewor
ICAgIEFTU0VSVCghbV9pbnZvY2F0aW9ucy5pc0VtcHR5KCkpOworCisgICAgd2hpbGUgKCFtX2lu
dm9jYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9j
YXRpb24+IGludm9jYXRpb25zOworICAgICAgICBtX2ludm9jYXRpb25zLnN3YXAoaW52b2NhdGlv
bnMpOworICAgICAgICBDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlQ3JlYXRlZENhbGxiYWNr
c0lmTmVlZGVkKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW52b2NhdGlvbnMpOworICAgIH0K
KworICAgIGRlYWN0aXZhdGUoKTsKK30KKwordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRl
bGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKQoreworICAgIHdoaWxlICghYWN0aXZlQ3VzdG9t
RWxlbWVudFJlZ2lzdHJpZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
dXN0b21FbGVtZW50UmVnaXN0cnk+ID4gcmVnaXN0cmllczsKKyAgICAgICAgY29weVRvVmVjdG9y
KGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCksIHJlZ2lzdHJpZXMpOworICAgICAgICBh
Y3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpLmNsZWFyKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVnaXN0cmllcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHJlZ2lz
dHJpZXNbaV0tPmRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyAgICB9Cit9CisKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMTAyYWEzZGUzOGMyMTE2OGUwYzdiNzBjNjUyOGEy
YTFhOTFkZTRlNC4uNGZmMDgyNWEyMzg4ZWIyOWVkNzc2ZTk5MTU3NjkyOTFhYjc1MTM4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDkgKzU0LDI2IEBAIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAor
Y2xhc3MgQ3VzdG9tRWxlbWVudEludm9jYXRpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IEN1
c3RvbUVsZW1lbnRJbnZvY2F0aW9uKFBhc3NSZWZQdHI8RWxlbWVudD4pOworICAgIH5DdXN0b21F
bGVtZW50SW52b2NhdGlvbigpOworCisgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxFbGVtZW50PiBt
X2VsZW1lbnQ7Cit9OworCiBjbGFzcyBDdXN0b21FbGVtZW50UmVnaXN0cnkgOiBwdWJsaWMgUmVm
Q291bnRlZDxDdXN0b21FbGVtZW50UmVnaXN0cnk+ICwgcHVibGljIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXN0b21FbGVtZW50UmVnaXN0
cnkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBjbGFzcyBDYWxsYmFj
a0RlbGl2ZXJ5U2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ2FsbGJhY2tEZWxpdmVyeVNj
b3BlKCkgeyB9CisgICAgICAgIH5DYWxsYmFja0RlbGl2ZXJ5U2NvcGUoKSB7IEN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKCk7IH0KKyAg
ICB9OworCiAgICAgZXhwbGljaXQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KERvY3VtZW50Kik7CiAg
ICAgfkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogCkBAIC02NiwxNiArODQsNDMgQEAgcHVibGlj
OgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgc3Rh
dGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBkaWRH
aXZlVHlwZUV4dGVuc2lvbihFbGVtZW50Kik7CisgICAgdm9pZCBkaWRDcmVhdGVFbGVtZW50KEVs
ZW1lbnQqKTsKIAorICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3Mo
KTsKKyAgICBzdGF0aWMgdm9pZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzSWZOZWVkZWQo
KTsKKworcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPFF1YWxpZmllZE5h
bWUsIFF1YWxpZmllZE5hbWU+LCBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiA+IENv
bnN0cnVjdG9yTWFwOwogICAgIHR5cGVkZWYgSGFzaFNldDxRdWFsaWZpZWROYW1lPiBOYW1lU2V0
OworICAgIHR5cGVkZWYgSGFzaFNldDxDdXN0b21FbGVtZW50UmVnaXN0cnkqPiBJbnN0YW5jZVNl
dDsKKworICAgIHN0YXRpYyBib29sIGlzVmFsaWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwor
ICAgIHN0YXRpYyBJbnN0YW5jZVNldCYgYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKTsK
KworICAgIHZvaWQgYWN0aXZhdGUoY29uc3QgQ3VzdG9tRWxlbWVudEludm9jYXRpb24mKTsKKyAg
ICB2b2lkIGRlYWN0aXZhdGUoKTsKKyAgICB2b2lkIGRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3Mo
KTsKIAogICAgIENvbnN0cnVjdG9yTWFwIG1fY29uc3RydWN0b3JzOwogICAgIE5hbWVTZXQgbV9u
YW1lczsKKyAgICBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRpb24+IG1faW52b2NhdGlvbnM7
CiB9OwogCitpbmxpbmUgdm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZl
Y3ljbGVDYWxsYmFja3NJZk5lZWRlZCgpCit7CisgICAgaWYgKCFhY3RpdmVDdXN0b21FbGVtZW50
UmVnaXN0cmllcygpLmlzRW1wdHkoKSkKKyAgICAgICAgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxi
YWNrcygpOworICAgIEFTU0VSVChhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpLmlzRW1w
dHkoKSk7Cit9CisKK2lubGluZSBDdXN0b21FbGVtZW50UmVnaXN0cnk6Okluc3RhbmNlU2V0JiBD
dXN0b21FbGVtZW50UmVnaXN0cnk6OmFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEluc3RhbmNlU2V0LCBhY3RpdmVJbnN0YW5jZXMsICgp
KTsKKyAgICByZXR1cm4gYWN0aXZlSW5zdGFuY2VzOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCBkNDhjOTE3MDMwNjIwZDE4ZjcwNjdmMDJmMWU1NGIwN2FhOGNkZGRkLi4z
ZGRlN2Q2NmIwNmI3Y2NlOGM4NjI3MDY3YWM2Y2ViY2FiOWIxNWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTg1NCw3ICs4NTQsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50
OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdAogICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIHNldFR5cGVFeHRl
bnNpb24oY3JlYXRlRWxlbWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7IC8vICBG
SVhNRTogdGFrZSBjYXJlIG9mIEBpcworICAgIHJldHVybiBzZXRUeXBlRXh0ZW5zaW9uKGNyZWF0
ZUVsZW1lbnQobG9jYWxOYW1lLCBlYyksIHR5cGVFeHRlbnNpb24pOwogfQogCiBQYXNzUmVmUHRy
PEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlRXh0ZW5zaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg5Myw2ICs4OTMsMTIg
QEAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IERvY3VtZW50OjpyZWdpc3Rl
ckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3QKICAgICAgICAgbV9yZWdpc3RyeSA9IGFkb3B0UmVm
KG5ldyBDdXN0b21FbGVtZW50UmVnaXN0cnkodGhpcykpOwogICAgIHJldHVybiBtX3JlZ2lzdHJ5
LT5yZWdpc3RlckVsZW1lbnQoc3RhdGUsIG5hbWUsIG9wdGlvbnMsIGVjKTsKIH0KKwordm9pZCBE
b2N1bWVudDo6ZGlkQ3JlYXRlQ3VzdG9tRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIGlmIChtX3JlZ2lzdHJ5KQor
ICAgICAgICBtX3JlZ2lzdHJ5LT5kaWRDcmVhdGVFbGVtZW50KGVsZW1lbnQpOworfQogI2VuZGlm
IC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCAzMDJkZWIxYWMzMGM3ZDRlY2M4ZTM0M2JjOWI4NGU0YWM0NmE3NTNmLi4xZDVhYTQ2NDI2
MDMyNzliMDUwM2ZjM2JlMTdlNWE2ZTNhZjAyODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
MTE2OCw2ICsxMTY4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRl
KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KiByZWdpc3RyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaXN0cnkuZ2V0KCk7IH0KKyAgICB2b2lkIGRpZENyZWF0ZUN1c3Rv
bUVsZW1lbnQoRWxlbWVudCosIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciopOwogI2VuZGlmCiAK
ICAgICB2b2lkIGFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFt
ZVNjYWxlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAppbmRleCA0OWJmNzdlNmU5Y2MzODkwZjUzZmU5OGIzZDE4ZDExZmE3MGJjOWMxLi44
ZTljODQ1Nzg3MjM3NTVmNzU2N2IyNTRmMTdmZDVhNjljMmRmYzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKQEAgLTI5LDggKzI5LDggQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NSW1w
bGVtZW50YXRpb24gaW1wbGVtZW50YXRpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1l
bnQgZG9jdW1lbnRFbGVtZW50OwogCi0gICAgW1JldHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJp
bmRpbmdzXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
T3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdGFnTmFtZSkKLSAgICAgICAg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRC
aW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnQoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElz
VW5kZWZpbmVkXSBET01TdHJpbmcgdGFnTmFtZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAg
IFtWOFBlcldvcmxkQmluZGluZ3NdIERvY3VtZW50RnJhZ21lbnQgICBjcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7CiAgICAgW1JldHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBUZXh0
IGNyZWF0ZVRleHROb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmlu
ZyBkYXRhKTsKICAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3NdIENvbW1l
bnQgY3JlYXRlQ29tbWVudChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJp
bmcgZGF0YSk7CkBAIC00NywxMiArNDcsMTMgQEAKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9N
IExldmVsIDI6CiAKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdP
YmplY3QsIFY4UGVyV29ybGRCaW5kaW5nc10gTm9kZSBpbXBvcnROb2RlKGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIE5vZGUgaW1wb3J0ZWROb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gZGVlcCkK
LSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBh
cmFtZXRlcnMsIFJldHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSkKLSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgW09iakNMZWdhY3lVbm5h
bWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3MsIFY4RGVs
aXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdCisgICAgTm9kZSBpbXBvcnROb2RlKGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIE5vZGUgaW1wb3J0ZWROb2RlLAorICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gZGVlcCkgcmFpc2VzIChET01FeGNlcHRpb24p
OworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJldHVybk5ld09iamVjdCwgVjhQ
ZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIEVs
ZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0
LCBWOFBlcldvcmxkQmluZGluZ3NdIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoaW4gW1RyZWF0TnVs
bEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFt
ZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKICAgICAgICAgcmFpc2VzIChET01FeGNl
cHRpb24pOwpAQCAtMTMxLDcgKzEzMiw3IEBACiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogCiAgICAgLy8gQ29tbW9uIGV4dGVuc2lvbnMKLQorICAgIFtWOERlbGl2ZXJDdXN0b21FbGVt
ZW50Q2FsbGJhY2tzXQogICAgIGJvb2xlYW4gICAgICAgICAgICBleGVjQ29tbWFuZChpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgY29tbWFuZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0g
Ym9vbGVhbiB1c2VySW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
LE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHZhbHVlKTsKQEAgLTM2Miwx
MSArMzYzLDEzIEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVNRU5U
UykgJiYgRU5BQkxFX0NVU1RPTV9FTEVNRU5UUwotICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Y3Vz
dG9tRE9NRWxlbWVudHMsIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50ZWRB
cz1yZWdpc3RlckVsZW1lbnQsIENhbGxXaXRoPVNjcmlwdFN0YXRlLCBWOFBlcldvcmxkQmluZGlu
Z3NdCisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1jdXN0b21ET01FbGVtZW50cywgQ29uZGl0aW9u
YWw9Q1VTVE9NX0VMRU1FTlRTLCBJbXBsZW1lbnRlZEFzPXJlZ2lzdGVyRWxlbWVudCwgQ2FsbFdp
dGg9U2NyaXB0U3RhdGUsIFY4UGVyV29ybGRCaW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVu
dENhbGxiYWNrc10KICAgICBDdXN0b21FbGVtZW50Q29uc3RydWN0b3Igd2Via2l0UmVnaXN0ZXIo
aW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKLSAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGlu
Z3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgbG9jYWxOYW1lLCBpbiBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKLSAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3NdIEVs
ZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJp
bmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3MsIFY4RGVsaXZlckN1c3RvbUVs
ZW1lbnRDYWxsYmFja3NdCisgICAgRWxlbWVudCBjcmVhdGVFbGVtZW50KGluIERPTVN0cmluZyBs
b2NhbE5hbWUsIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVu
c2lvbikgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVy
V29ybGRCaW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBFbGVt
ZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSwgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBl
RXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQo
TEFOR1VBR0VfQ1BQKSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBh
YTdmNTJkMTIwYzhkNjhmZDJjMzRlOGIzMzljZTY1YmY2MDJmYzRhLi4zMjU0ZWM1NDdlMWU4NmZi
ODQ0YzRlZGFlMGQ4ZjdkMGUxMmZkZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xhc3NMaXN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5o
IgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRGF0YXNldERP
TVN0cmluZ01hcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC04ODcsNiArODg4LDE3IEBA
IHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5lCiAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChuYW1lLCB0aGlzKTsKIH0KIAoraW5saW5lIHZv
aWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgaWYgKG5hbWUgPT0gaXNBdHRyKSB7CisgICAg
ICAgIGlmIChDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJlZ2lzdHJ5ID0gZG9jdW1lbnQoKS0+cmVn
aXN0cnkoKSkKKyAgICAgICAgICAgIHJlZ2lzdHJ5LT5kaWRHaXZlVHlwZUV4dGVuc2lvbih0aGlz
KTsKKyAgICB9CisjZW5kaWYKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG5ld1ZhbHVlKTsK
K30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIGJv
b2wgY2xhc3NTdHJpbmdIYXNDbGFzc05hbWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtMTA3Myw3ICsxMDg1LDcgQEAgdm9pZCBFbGVtZW50
OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVW
ZWN0b3IpCiAKICAgICAvLyBVc2UgYXR0cmlidXRlVmVjdG9yIGluc3RlYWQgb2YgbV9lbGVtZW50
RGF0YSBiZWNhdXNlIGF0dHJpYnV0ZUNoYW5nZWQgbWlnaHQgbW9kaWZ5IG1fZWxlbWVudERhdGEu
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZVZlY3Rvci5zaXplKCk7ICsr
aSkKLSAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgpLCBh
dHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUoKSk7CisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRGcm9t
UGFyc2VyT3JCeUNsb25pbmcoYXR0cmlidXRlVmVjdG9yW2ldLm5hbWUoKSwgYXR0cmlidXRlVmVj
dG9yW2ldLnZhbHVlKCkpOwogfQogCiBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25z
dApAQCAtMjg1Nyw3ICsyODY5LDcgQEAgdm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9t
RWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2VsZW1lbnREYXRhLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEF0dHJp
YnV0ZSogYXR0cmlidXRlID0gY29uc3RfY2FzdDxjb25zdCBFbGVtZW50RGF0YSo+KG1fZWxlbWVu
dERhdGEuZ2V0KCkpLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOworICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkRnJvbVBhcnNlck9yQnlDbG9uaW5nKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1
dGUtPnZhbHVlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYmFhOWQ0MjUz
NDM5MDM2MzQ1MmZiNTk0ZDRjZWFkMDhmNTUxNTJmMy4uZDA3Yzk1MTUzZDg1MjY2ZmUyNjJhNzQx
OWM1Y2M4Mjc4MDA3NzU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02NzIsNiArNjcyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEF0dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIFN5bmNocm9uaXph
dGlvbk9mTGF6eUF0dHJpYnV0ZSk7CiAgICAgdm9pZCBhZGRBdHRyaWJ1dGVJbnRlcm5hbChjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0
aW9uT2ZMYXp5QXR0cmlidXRlKTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZUludGVybmFsKHNp
emVfdCBpbmRleCwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKKyAgICB2b2lkIGF0
dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNsb25pbmcoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5pZGwKaW5kZXggZmU5NzU2N2Y0YTkwMDc5MzYxNGE0MjkzMWNlYjc5ZDFlMzhj
ZTdjNy4uNmY2ZDY4ZGNjODJkYmMzMWNlZGNiOTBmYzg1YTdjYWY1MjAzNWQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmlkbApAQCAtNzYsNyArNzYsOCBAQAogICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAogICAgIGJvb2xlYW4gICAgICAgICAgICBoYXNDaGlsZE5vZGVzKCk7Ci0gICAgW1Y4UGVyV29y
bGRCaW5kaW5nc10gTm9kZSAgICAgICAgICAgICAgIGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVm
YXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGRlZXApOworICAgIFtWOFBlcldvcmxkQmluZGluZ3Ms
IFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdCisgICAgTm9kZSAgICAgICAgICAgICAg
IGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGRlZXAp
OwogICAgIHZvaWQgICAgICAgICAgICAgICBub3JtYWxpemUoKTsKIAogICAgIC8vIEludHJvZHVj
ZWQgaW4gRE9NIExldmVsIDI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKaW5kZXggYTM5Y2E5
MmE1M2I5ODZjZjg4ZjExOTMxYzExOWExMTAyOGY1YzhhZC4uNWIzNWU5ZmVkZWQyOTgzNGY5ZjZl
ZDc3OTk5MjYzZWY0OGFkNDYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbApAQCAtMzIs
OCArMzIsOCBAQAogICAgIGF0dHJpYnV0ZSBib29sZWFuIGFwcGx5QXV0aG9yU3R5bGVzOwogICAg
IGF0dHJpYnV0ZSBib29sZWFuIHJlc2V0U3R5bGVJbmhlcml0YW5jZTsKIAotICAgIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTAotICAgICAgICBz
ZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdCisgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBpbm5lckhUTUwgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChM
QU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgTm9kZSBjbG9u
ZU5vZGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gYm9vbGVhbiBkZWVwKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKaW5kZXggYmM2
MzliOGU0MWJiMDQ0YTkxOTEwZTg2YjRiZDA0OWZiNDExYmQ0OC4uOGNhMzkwODYyOWI4ZjMxZDk5
NmU4NGJkZDgyYWUxMDU4MTYzOWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwK
QEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBhY2Nlc3NLZXk7CiAKICAgICAvLyBFeHRlbnNpb25zCi0gICAgICAgICAgICAgW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJIVE1MCisgICAgICAg
ICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxs
YmFja3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJIVE1MCiAgICAgICAgICAgICAgICAgIHNl
dHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQKICAgICAgICAgICAgICAgICAg
c2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0Njg5ZDEzZTQyYTM1ZWVhMjE0YTAyODdh
YTdiN2RlMjg5ZDUxMDNhLi41M2YzZDI5ZmZiMTA1ZmVhNDNmYjk1MWFkZjViY2E5YzVmYjIwNzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVk
ZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTEyOCw4ICsxMjksMTIgQEAgdm9p
ZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQo
UGVuZGluZ1NjcmlwdCYgcGVuZGkKICAgICBpZiAocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQo
KSAmJiBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQogICAgICAgICBzdG9wV2F0Y2hp
bmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQpOwogCi0gICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgp
KQorICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkgeworI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCisgICAgICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNs
ZUNhbGxiYWNrcygpOworI2VuZGlmCiAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJB
bGxNdXRhdGlvbnMoKTsKKyAgICB9CiAKICAgICAvLyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQg
YmVmb3JlIHBvc3NpYmxlIHJlbnRyYW5jeSBmcm9tIGV4ZWN1dGVTY3JpcHQoKQogICAgIFJlZlB0
cjxFbGVtZW50PiBlbGVtZW50ID0gcGVuZGluZ1NjcmlwdC5yZWxlYXNlRWxlbWVudEFuZENsZWFy
KCk7CkBAIC0yOTIsOCArMjk3LDEyIEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0
KEVsZW1lbnQqIHNjcmlwdCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFyCiAgICAgICAg
IC8vIGV2ZXJ5IHNjcmlwdCBlbGVtZW50LCBldmVuIGlmIGl0J3Mgbm90IHJlYWR5IHRvIGV4ZWN1
dGUgeWV0LiBUaGVyZSdzCiAgICAgICAgIC8vIHVuZm9ydHVhbnRlbHkgbm8gb2J2aW91cyB3YXkg
dG8gdGVsbCBpZiBwcmVwYXJlU2NyaXB0IGlzIGdvaW5nIHRvCiAgICAgICAgIC8vIGV4ZWN1dGUg
dGhlIHNjcmlwdCBmcm9tIG91dCBoZXJlLgotICAgICAgICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0
KCkpCisgICAgICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkgeworI2lmIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpCisgICAgICAgICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJB
bGxMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyNlbmRpZgogICAgICAgICAgICAgTXV0YXRpb25PYnNl
cnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOworICAgICAgICB9CiAKICAgICAgICAgSW5zZXJ0
aW9uUG9pbnRSZWNvcmQgaW5zZXJ0aW9uUG9pbnRSZWNvcmQobV9ob3N0LT5pbnB1dFN0cmVhbSgp
KTsKICAgICAgICAgTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIobV9zY3JpcHROZXN0aW5nTGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5j
cHAKaW5kZXggZTI2ZmI4ZWY5ZDVlYjY2MmQ2NjQ4MDI3ODU3ZGE3ZGIxN2IwNGJkMy4uMGRmYjA4
NmI3ODk2Y2RiZTk2YmNmNjliNjlhY2UwOWJmZjhmNTFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJLaXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViS2l0LmgiCiAKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJFdmVudFRyYWNlci5oIgogI2luY2x1ZGUgIkltYWdlRGVjb2RpbmdTdG9yZS5o
IgogI2luY2x1ZGUgIkxheW91dFRlc3RTdXBwb3J0LmgiCkBAIC04MCw2ICs4MSw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFByb2Nlc3NUYXNrKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFByb2Nlc3NUYXNrKCkKICAgICB7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
KyAgICAgICAgV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5
Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKICAgICAgICAgV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZl
cjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmU1ODRlYTIwYmU4
ODVmNjk1MzM3NThjNTI3Y2U4NDM3YjI1ODliNy4uNDMxOGU0ZDk1MWM2NjQ5ZWRlNDkxN2ZhYzgz
ZTQ5MjFiM2U5YmQ2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAzLTIxICBIYWppbWUg
TW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBDdXN0b20gRWxlbWVudHM6
ICJjcmVhdGVkIiBsaWZlY3ljbGUgY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUzOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0
ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3ktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3Jl
YXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRl
ZC1pbm5lckhUTUwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLWNyZWF0ZWQtaW5uZXJIVE1MLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFy
c2VyLW9ubHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLXBhcnNlci1zY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNy
ZWF0ZWQtcGFzdGUuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjEgIFBldGVyIEthc3RpbmcgIDxw
a2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVGVzdCBleHBlY3RhdGlv
bnMgdXBkYXRlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1y
ZWN1cnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzODIzYTgzMmE3YTA4MzAyOGFmNzg3
Njg2MzkyZGRkYWU1MjYzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IFVuY2F1Z2h0
IFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLgorUEFTUyB1bmxl
c3MgY3Jhc2gKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNy
ZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQxZDM5ZTc0MThmODI2Y2MyZDYwNzAzZWFjZWZhMDk5MzIwNWM5NjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0
ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rv
Y3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVn
aXN0ZXI7Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogT2JqZWN0LmNy
ZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVu
Y3Rpb24gKCkgeyB0aGlzLmlubmVySFRNTCA9ICI8eC1mb28+SGVsbG88L3gtZm9vPiI7IH0gfSB9
KSB9KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKK2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIik7CitkZWJ1ZygiUEFTUyB1bmxlc3Mg
Y3Jhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQt
cmVlbnRyYW5jeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlm
ZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xOTVkN2M4NmIwOGIxY2FiODE3NTFmNmFlNWVmNjY1YWE2MzViNjY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVk
LWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2Vy
LW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQg
aXMgMAorUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIDEKK1BBU1Mgd2luZG93LmNhbGxi
YWNrc0NhbGxlZCBpcyAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVj
eWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5j
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZWEwZjQzMzhhNThkYWY2MTAyYTAxYmMzYTFjNWFjMTYzMjZi
MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWwKQEAgLTAsMCArMSwzMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBh
cnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLiIp
Citkb2N1bWVudC5yZWdpc3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtp
dFJlZ2lzdGVyOworCit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gMDsKKworZnVuY3Rpb24gZm9v
Q3JlYXRlZEZ1bmN0aW9uKCkgeworICBzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIs
ICIwIik7CisgIHRoaXMuaW5uZXJIVE1MID0gIjx4LWJhcj5IZWxsbzwveC1iYXI+IjsKKyAgc2hv
dWxkQmUoIndpbmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiMSIpOworICB3aW5kb3cuY2FsbGJhY2tz
Q2FsbGVkKys7Cit9CisKK2Z1bmN0aW9uIGJhckNyZWF0ZWRGdW5jdGlvbigpIHsKKyAgd2luZG93
LmNhbGxiYWNrc0NhbGxlZCsrOworfQorCitkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHBy
b3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxs
YmFjazogeyB2YWx1ZTogZm9vQ3JlYXRlZEZ1bmN0aW9uIH0gfSkgfSk7Citkb2N1bWVudC5yZWdp
c3RlcigieC1iYXIiLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90
b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogYmFyQ3JlYXRlZEZ1bmN0aW9uIH0gfSkg
fSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2RvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIngtZm9vIik7CitzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICIy
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNy
ZWF0aW9uLWFwaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM2Yzc4ZTczYmY4YzE0YjRmYTU0
YjRjZWRmMDZkNDhkMzdiODEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyODogW29iamVjdCBIVE1MRGl2
RWxlbWVudF0KK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mg
b2YgQVBJLW9yaWdpbmF0ZWQgZWxlbWVudHMgYXJlIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlw
dCBibG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgneC1mb28nKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1
ZQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnLCAneC1mb28nKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2JywgJ3gt
YmFyJykuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9vLmNsb25lTm9kZSgpLmNhbGxi
YWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGZvby5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZC5j
YWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBiYXIuY2xvbmVOb2RlKCkuY2FsbGJhY2tzQ2Fs
bGVkIGlzIHRydWUKK1BBU1MgYmFyLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkLmNhbGxiYWNr
c0NhbGxlZCBpcyB0cnVlCitQQVNTIGZvcmVpZ25Gb28uY2FsbGJhY2tzQ2FsbGVkIGlzIHVuZGVm
aW5lZC4KK1BBU1MgZm9yZWlnbkZvby5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB1bmRl
ZmluZWQuCitQQVNTIGltcG9ydGVkRm9vLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGlt
cG9ydGVkRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgaW1wb3J0
ZWRCYXIuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgaW1wb3J0ZWRCYXIuZmlyc3RDaGls
ZC5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGlvbi1hcGkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xOWY4YTMyZGZkMjMyYjg3OGQ3NWFkMjJmNTIzZGRlMDk5MDhjNmJmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNy
ZWF0aW9uLWFwaS5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2tzIG9mIEFQSS1vcmlnaW5hdGVkIGVsZW1lbnRzIGFyZSB2
aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikKK2RvY3VtZW50LnJlZ2lzdGVyID0g
ZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7Citkb2N1bWVudC5y
ZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5w
cm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHRoaXMuY2Fs
bGJhY2tzQ2FsbGVkID0gdHJ1ZTsgfSB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFy
IiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCB7
IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB0aGlzLmNhbGxiYWNrc0NhbGxl
ZCA9IHRydWU7IH0gfSB9KSB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJjb250YWluZXIiPjwvZGl2PgorPGRpdiBpZD0iaG9zdCI+PC9kaXY+CisKKzxzY3JpcHQ+CisK
K3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgneC1mb28nKS5jYWxsYmFja3ND
YWxsZWQiKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JywgJ3gt
YmFyJykuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ3gtZm9vJykuY2FsbGJh
Y2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxs
ZWQiKTsKKwordmFyIGZvbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJyk7Citmb28u
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JywgJ3gtYmFyJykpOworc2hv
dWxkQmVUcnVlKCJmb28uY2xvbmVOb2RlKCkuY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRy
dWUoImZvby5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZC5jYWxsYmFja3NDYWxsZWQiKTsKK2Nv
bnNvbGUubG9nKGZvby5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZCk7CisKK3ZhciBiYXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKTsKK2Jhci5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycpKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyLmNsb25l
Tm9kZSgpLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJiYXIuY2xvbmVOb2RlKHRy
dWUpLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3ZhciBmb3JlaWduRG9jID0gZG9j
dW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQgKCdodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sJywgJ2h0bWwnLCBudWxsKTsKKwordmFyIGZvcmVpZ25Gb28gPSBmb3JlaWduRG9j
LmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJyk7Citmb3JlaWduRm9vLmFwcGVuZENoaWxkKGZvcmVpZ25E
b2MuY3JlYXRlRWxlbWVudCgnZGl2JywgJ3gtYmFyJykpOworc2hvdWxkQmVVbmRlZmluZWQoImZv
cmVpZ25Gb28uY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVVuZGVmaW5lZCgiZm9yZWlnbkZv
by5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCIpOworaW1wb3J0ZWRGb28gPSBkb2N1bWVudC5p
bXBvcnROb2RlKGZvcmVpZ25Gb28pCitzaG91bGRCZVRydWUoImltcG9ydGVkRm9vLmNhbGxiYWNr
c0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJpbXBvcnRlZEZvby5maXJzdENoaWxkLmNhbGxiYWNr
c0NhbGxlZCIpOworCit2YXIgZm9yZWlnbkJhciA9IGZvcmVpZ25Eb2MuY3JlYXRlRWxlbWVudCgn
ZGl2JywgJ3gtYmFyJyk7Citmb3JlaWduQmFyLmFwcGVuZENoaWxkKGZvcmVpZ25Eb2MuY3JlYXRl
RWxlbWVudCgneC1mb28nKSk7CitpbXBvcnRlZEJhciA9IGRvY3VtZW50LmltcG9ydE5vZGUoZm9y
ZWlnbkJhcik7CitzaG91bGRCZVRydWUoImltcG9ydGVkQmFyLmNhbGxiYWNrc0NhbGxlZCIpOwor
c2hvdWxkQmVUcnVlKCJpbXBvcnRlZEJhci5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCIpOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRN
TC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUyYzNmNDA1MmIyNmNlNGY4YWI2MzA4YzhlNDZh
YzMyM2NlNjgxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBh
cnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2Fs
bGVkIGlzIFsnWC1GT08nLCAnRElWJywgJ1gtRk9PJ10KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtaW5uZXJIVE1MLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtaW5uZXJIVE1MLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTM1Yzg0NzlmM2E5N2NmYmNkMTE3ODg5MmZhZjRmZGQyMjMxYjk3NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1p
bm5lckhUTUwuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0
aGUgbGlmZWN5Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxl
IGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1l
bnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7Cit3aW5kb3cuY2FsbGJhY2tz
Q2FsbGVkID0gW107Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogT2Jq
ZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1
ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUp
OyB9IH0gfSkgfSk7Citkb2N1bWVudC5yZWdpc3RlcigieC1iYXIiLCB7IHByb3RvdHlwZTogT2Jq
ZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2
YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVzaCh0aGlzLnRhZ05h
bWUpOyB9IH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKzxzY3JpcHQ+Citjb250YWluZXIuaW5uZXJIVE1MID0gIjx4LWZvbz48L3gtZm9v
PjxkaXYgaXM9J3gtYmFyJz48L2Rpdj48eC1mb28+PC94LWZvbz4iOworc2hvdWxkQmUoIndpbmRv
dy5jYWxsYmFja3NDYWxsZWQiLCAiWydYLUZPTycsICdESVYnLCAnWC1GT08nXSIpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZmQ4MDc0NWIwZWYwNWYxNzU0OTFkMjM4MTFiMTVi
OWNmMzhiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20v
bGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzcGFuPkhlbGxvPC9zcGFuPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLW9ubHkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YzgxMTVlMTcyMGZkNjJjMGQxMWJiMDFlY2FlOTYzNDYwOGFhMzk0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1v
bmx5Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9j
dW1lbnQud2Via2l0UmVnaXN0ZXI7Citwcm90byA9IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQu
cHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB0aGlzLmlu
bmVySFRNTCA9ICJIZWxsbyI7IH0gfSB9KTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsg
cHJvdG90eXBlOiBwcm90byB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8eC1mb28+
PC94LWZvbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2Ny
aXB0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGM3ZWY3YjdkNTMwYjk2NGNiY2ZmNzhhYzc5
MmYwNDExODcyYzdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBv
ZiBhIHBhcnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJs
b2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuY2FsbGJh
Y2tzQ2FsbGVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlm
ZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1zY3JpcHQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YjViZWI2NzQ4YTI4NTNhMWE5MDNkMTE4MzZiNmViYWM2ZWVlY2ExCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1z
Y3JpcHQuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
bGlmZWN5Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGlu
IGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQu
cmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7Citwcm90byA9IE9iamVjdC5jcmVh
dGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IGZ1bmN0
aW9uKCkgeyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsgfSB9IH0pOworZG9jdW1lbnQu
cmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IHByb3RvIH0pOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzx4LWZvbz48L3gtZm9vPgorPHNjcmlwdD4KK3Nob3VsZEJlVHJ1ZSgid2lu
ZG93LmNhbGxiYWNrc0NhbGxlZCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQt
cGFzdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLXBhc3RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWIwMTQ2NmE4ZWFlNTcz
NWE5ZmQ4NWFjNDhmZDQ2OGM0NTc0NTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhc3RlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IFtvYmplY3QgSFRNTERpdkVs
ZW1lbnRdCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2tzIG9m
IGVkaXRpbmctb3JpZ2luYXRlZCBlbGVtZW50cyBhcmUgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2Ny
aXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cu
Y2FsbGJhY2tzQ2FsbGVkIGlzIFsnWC1GT08nLCAnRElWJ10KK1BBU1Mgd2luZG93LmNhbGxiYWNr
c0NhbGxlZCBpcyBbJ1gtRk9PJywgJ0RJVicsICdYLUZPTycsICdESVYnXQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhc3RlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjkxYWZkOTVjZmJhNzYwOWYzZTUzZWQ2ZDgzYjRkZjZhMjE4ZjUxNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRl
ZC1wYXN0ZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRo
ZSBsaWZlY3ljbGUgY2FsbGJhY2tzIG9mIGVkaXRpbmctb3JpZ2luYXRlZCBlbGVtZW50cyBhcmUg
dmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLiIpCitkb2N1bWVudC5yZWdpc3RlciA9
IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOword2luZG93LmNh
bGxiYWNrc0NhbGxlZCA9IFtdOworZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5
cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6
IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkLnB1c2godGhpcy50
YWdOYW1lKTsgfSB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwgeyBwcm90b3R5
cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJh
Y2s6IHsgdmFsdWU6IGZ1bmN0aW9uKCkgeyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkLnB1c2godGhp
cy50YWdOYW1lKTsgfSB9IH0pIH0pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImNvbnRhaW5lciIgY29udGVudGVkaXRhYmxlPls8eC1mb28+Rm9vPC94LWZvbz48ZGl2IGlz
PSd4LWJhcic+QmFyPC9kaXY+XTwvZGl2PgorPHNjcmlwdD4KK3ZhciBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CisKK3NlbGVjdGlvbi5zZWxlY3RBbGxDaGlsZHJlbihjb250YWlu
ZXIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiKTsKKworc2hvdWxkQmUoIndpbmRvdy5j
YWxsYmFja3NDYWxsZWQiLCAiWydYLUZPTycsICdESVYnXSIpOworc2VsZWN0aW9uLmNvbGxhcHNl
VG9FbmQoKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworc2hvdWxkQmUoIndpbmRv
dy5jYWxsYmFja3NDYWxsZWQiLCAiWydYLUZPTycsICdESVYnLCAnWC1GT08nLCAnRElWJ10iKTsK
KworY29uc29sZS5sb2coY29udGFpbmVyKTsKK2NvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194426</attachid>
            <date>2013-03-21 20:07:15 -0700</date>
            <delta_ts>2013-03-21 20:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112538-20130322120302.patch</filename>
            <type>text/plain</type>
            <size>51927</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY3YTE4ZDEwMTdmODRl
ZmI0YTkwYzQ4NTliMGY5Y2Y0NDJkNGU0MS4uYTVjNmMwNTJkOTZkMDdhZmVjYWQ1YWY4NTFlMWE5
MTk5YTE0YTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMy0wMy0yMSAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIEVsZW1l
bnRzOiAicmVhZHlDYWxsYmFjayIgbGlmZWN5Y2xlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI1MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNo
YW5nZSBhbGxvd3MgZWFjaCBjdXN0b20gZWxlbWVudCBkZWZpbml0aW9uIHRvIGhvb2sgdXAgaXRz
IGluc3RhbnRpYXRpb24sCisgICAgICAgIG5hbWVseSAicmVhZHlDYWxsYmFjayIgbGlmZWN5Y2xl
IGNhbGxiYWNrLgorCisgICAgICAgIFRoZSBjaGFuZ2UgaGFzIHR3byBwYXJ0czoKKyAgICAgICAg
LSAxLiBUcmFja2luZyB3aGljaCBFbGVtZW50IG9iamVjdHMgdG8gYmUgY3JlYXRlZC4KKyAgICAg
ICAgLSAyLiBJbnZva2luZyBhcHByb3ByaWF0ZSBKYXZhU2NyaXB0IGZ1bmN0aW9ucywgd2hpY2gg
YXJlIHJlYWR5Q2FsbGJhY2soKSwKKyAgICAgICAgICBiZWZvcmUgdGhlIEVsZW1lbnQgb2JqZWN0
IGlzIHZpc2libGUgZnJvbSBwYWdlIHNjcmlwdC4KKworICAgICAgICBGb3IgMSwgQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5IG1haW50YWlucyBsaXN0IG9mICJjYWxsYmFjaworICAgICAgICBpbnZvY2Fp
b25zIi4gIEVhY2ggbGlzdCBpdGVtICgiaW52b2NhdGlvbiIpIHRyYWNrcyB0aGUgZWxlbWVudAor
ICAgICAgICB3aGljaCBoYXMgYSBsaWZlY3ljbGUgY2FsbGJhY2sgdG8gYmUgaW52b2tlZC4gRWFj
aCBpbnZvY2F0aW9uIGlzCisgICAgICAgIHJlZ2lzdGVyZWQgd2hlbiAtIEFueSBjdXN0b20gZWxl
bWVudCBDKysgb2JqZWN0IGlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgU2VlIGNoYW5nZXMgb24g
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcC4KKworICAgICAgICBUaGlzIGFsc28gaGFwcGVu
cyB3aGVuIEBpcyBhdHRyaWJ1dGUgaXMgc2V0IGJ5IHRoZSBwYXJzZXIgb3Igbm9kZQorICAgICAg
ICBjbG9uaW5nIHJvdXRpbmUsIHdoaWNoIGNhbiB0dXJuIGEgbm9uLWN1c3RvbSBlbGVtZW50IGlu
dG8gYQorICAgICAgICB0eXBlLWV4dGVuZGVkIGN1c3RvbSBlbGVtZW50LiBTZWUgY2hhbmdlcyBv
biBFbGVtZW50LmNwcC4KKworICAgICAgICBGb3IgMiwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IGJh
c2ljYWxseSBmb2xsb3dzIHdoYXQKKyAgICAgICAgTXV0YXRpb25PYnNlcnZlciBpcyBkb2luZywg
YW5kIGludHJvZHVjZXMgYSBtZXRob2QgY2FsbGVkCisgICAgICAgIGRlbGl2ZXJMaWZlY3ljbGVD
YWxsYmFja3MoKS4gVGhpcyBmdW5jdGlvbiBmbHVzaGVzIGFsbCBwZW5kaW5nCisgICAgICAgIGNh
bGxiYWNrIGludm9jYXRpb25zLiBZb3UgY2FuIHRoaW5rIGl0IGFzIGEgZHVhbCBvZgorICAgICAg
ICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCkuCisKKyAgICAgICAgVGhl
IGRlbGl2ZXJ5IGZ1bmN0aW9uIGlzIGNhbGxlZCBwbGFjZXMgd2hlcmUgTXV0YXRpb25PYnNlcnZl
cidzCisgICAgICAgIGRlbGl2ZXJBbGxNdXRhdGlvbnMoKSBpcyBjYWxsZWQuIEluIGFkZGl0aW9u
LCBpdCBpcyBhbHNvIGNhbGxlZAorICAgICAgICBqdXN0IGJlZm9yZSByZXR1cm5pbmcgZnJvbSBh
IHNldCBvZiBET00gQVBJcy4gRm9yIGV4YW1wbGUsIGl0IGlzCisgICAgICAgIGNhbGxlZCBqdXN0
IGJlZm9yZSBjcmVhdGVFbGVtZW50KCkgcmV0dXJucywgc28gdGhhdCBwb3NzaWJseQorICAgICAg
ICBjcmVhdGVkIGN1c3RvbSBlbGVtZW50IGJlY29tZXMgcmVhZHkgdGhyb3VnaCBpdHMgcmVhZHlD
YWxsYmFjaygpLgorICAgICAgICBTdWNoIEFQSXMgZ2V0ICJWOERlbGl2ZXJDdXN0b21FbGVtZW50
Q2FsbGJhY2tzIiBJREwgYXR0cmlidXRlLiBJbgorICAgICAgICBwcmluY2lwbGUsIEFQSXMgd2hp
Y2ggY2FuIGNyZWF0ZSBuZXcgY3VzdG9tIGVsZW1lbnQgaW5zdG5hY2VzIGFyZQorICAgICAgICBt
YXJrZWQuIFNlZSBDdXN0b21FbGVtZW50UmVnaXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZSBh
bmQKKyAgICAgICAgY2hhbmdlcyBvbiBDb2RlR2VuZXJhdG9yVjgucG0uCisKKyAgICAgICAgV2Ug
bmVlZCB0aGlzIGV4dHJhIHdvcmsgYmVjYXVzZSB0aGUgcmVhZHlDYWxsYmFjaygpIG5lZWRzIHRv
IGdpdmUKKyAgICAgICAgYW4gaWxsdXNpb24gc28gdGhhdCBKYXZhU2NyaXB0IHByb2dyYW1tZXJz
IGZlZWwgbGlrZSB0aGUKKyAgICAgICAgcmVhZHlDYWxsYmFjaygpIGNhbGxiYWNrIGJlaW5nIGNh
bGxlZCBqdXN0IGFmdGVyIGl0IGlzIGNyZWF0ZWQsCisgICAgICAgIGluc3RlYWQgb2YgY2FsbGVk
IG9uIGFyYml0cmFyeSBsYXRlIHRpbWluZyBsaWtlIE11dGF0aW9uT2JzZXJ2ZXIKKyAgICAgICAg
bm90aWZpY2F0aW9ucy4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3ku
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNy
ZWF0aW9uLWFwaS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xl
LWNyZWF0ZWQtaW5uZXJIVE1MLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9s
aWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIC0gSG9v
a2VkIHVwIENhbGxiYWNrRGVsaXZlcnlTY29wZSB0aHJvdWdoIFY4RGVsaXZlckN1c3RvbUVsZW1l
bnRDYWxsYmFja3MgYXR0cml1dGUuCisgICAgICAgIChHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZv
Y2F0aW9uU2NvcGVJZk5lZWRlZCk6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIp
OgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50
SGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6aW52
b2tlUmVhZHlDYWxsYmFja0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRIZWxwZXJzOjppbnZva2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVudEhl
bHBlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwOiBBZGRl
ZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCkKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVj
dXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogZG9tL0N1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50SW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9D
dXN0b21FbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6aXNFeHRlbmRlZCk6CisgICAgICAgIChDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOiBBZGRpbmcg
ZWxlbWVudCB0cmFja2luZyBhbmQgaW52b2NhdGlvbiBleGVjdXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbjo6Q3VzdG9tRWxlbWVudEludm9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246On5DdXN0b21FbGVtZW50
SW52b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0
cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21F
bGVtZW50UmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjpkaWRHaXZlVHlwZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRpZENyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjphY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjpkZWxpdmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcyk6CisgICAg
ICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVu
dEludm9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246
OmVsZW1lbnQpOgorICAgICAgICAoQ2FsbGJhY2tEZWxpdmVyeVNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3BlOjpDYWxs
YmFja0RlbGl2ZXJ5U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpDYWxsYmFja0RlbGl2ZXJ5U2NvcGU6On5DYWxsYmFja0RlbGl2ZXJ5U2NvcGUpOgorICAg
ICAgICAoQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNy
ZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENyZWF0ZUN1c3Rv
bUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJP
ckJ5Q2xvbmluZyk6IEFkZGVkIHRvIGNhdGNoIEBpcyBhdHRyaWJ1dGUKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50
Lmg6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MU2NyaXB0UnVubmVyLmNwcDogQWRkZWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNr
cygpCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1Nj
cmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5l
cjo6cnVuU2NyaXB0KToKKwogMjAxMy0wMy0yMSAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBCeXBhc3MgWFNTQXVkaXRvciBmb3IgYXNwLm5ldCBzZXJ2ZXJzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5OGE5Njk3NDY4ODg3Y2M1NjAyYmUzYTM4Njli
NjY4N2YwZmExZTEzLi4wMDRmNThkYTg2MmViODFiZGFiNTNkM2VlNDc3MWNjMDhlNTVlNjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAzLTIxICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBDdXN0b20gRWxl
bWVudHM6ICJyZWFkeUNhbGxiYWNrIiBsaWZlY3ljbGUgY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Jj
L1dlYktpdC5jcHA6IEFkZGVkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKQorCiAyMDEz
LTAzLTIxICBHYXJyZXR0IENhc3RvICA8Z2Nhc3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIEFkZCBwb3NzaWJsZVVzZXJOYW1lcyB0byBXZWJQYXNzd29yZEZvcm1EYXRhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CmluZGV4IDQ5MTVjOTdmMDFhMmRjNDczYTdhMDA5NDVjMWQyMTY4ZGZkOTc0M2EuLjEzYzBhNWY5
MWFjODU3YzYwZWI3MWJjOThmZWM3ODVlOTE2ZGFkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xMjU2LDYgKzEyNTYs
MjUgQEAgRU5ECiBFTkQKIH0KIAorc3ViIEdlbmVyYXRlQ3VzdG9tRWxlbWVudEludm9jYXRpb25T
Y29wZUlmTmVlZGVkCit7CisgICAgbXkgJG91dCA9IHNoaWZ0OworICAgIG15ICRleHQgPSBzaGlm
dDsKKworICAgIGlmICgkZXh0LT57IlY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3MifSkg
eworICAgICAgICBpZiAoJGV4dC0+eyJSZWZsZWN0In0pIHsKKyAgICAgICAgICAgIGRpZSAiSURM
IGVycm9yOiBSZWZsZWN0IGFuZCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzIGNhbm5v
dCBjb2V4aXN0IHlldCI7CisgICAgICAgIH0KKworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiLCAiQ1VTVE9NX0VMRU1FTlRTIik7CisgICAgICAgIHB1
c2goQCRvdXQsIDw8RU5EKTsKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3BlIGRlbGl2ZXJ5U2NvcGU7Cisj
ZW5kaWYKK0VORAorICAgIH0KK30KKwogc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxi
YWNrCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwpAQCAtMTQwNCw2ICsxNDIzLDggQEAg
RU5ECiAgICAgICAgICRyZXN1bHQgPSAiV1RGOjpnZXRQdHIoIiAuICRyZXN1bHQgLiAiKSI7CiAg
ICAgfQogCisgICAgR2VuZXJhdGVDdXN0b21FbGVtZW50SW52b2NhdGlvblNjb3BlSWZOZWVkZWQo
XEBpbXBsQ29udGVudEludGVybmFscywgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMpOworCiAgICAgbXkgJHVzZUV4Y2VwdGlvbnMgPSAxIGlmIEB7JGF0dHJpYnV0ZS0+
c2V0dGVyRXhjZXB0aW9uc307CiAKICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMpIHsKQEAgLTE3MDQs
NiArMTcyNSw4IEBAIEVORAogRU5ECiAgICAgfQogCisgICAgR2VuZXJhdGVDdXN0b21FbGVtZW50
SW52b2NhdGlvblNjb3BlSWZOZWVkZWQoXEBpbXBsQ29udGVudEludGVybmFscywgJGZ1bmNFeHQp
OworCiAgICAgIyBDaGVjayBkb21haW4gc2VjdXJpdHkgaWYgbmVlZGVkCiAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYgISRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0p
IHsKICAgICAgICAgIyBXZSBoYXZlIG5vdCBmaW5kIHJlYWwgdXNlIGNhc2VzIHlldC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4
IDY2OTI4ZTc5MjEzNzE5ZWE5NzBjNjMyY2RjZWEzNjVmYTVjNjA0ZTMuLjU5YzliMDVmMjE4MmI3
NTFiMmRmYzAwNTk3ODBhZTgxZDBkODJiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dApAQCAtMTMzLDMgKzEzMyw0IEBAIFY4UmVh
ZE9ubHkKIFY4U2tpcFZUYWJsZVZhbGlkYXRpb24KIFY4VW5mb3JnZWFibGUKIFY4V3JhcEFzRnVu
Y3Rpb24KK1Y4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCAyY2Q1Y2E0
MDFlN2E0YzM3MzY5NjE5MjllMGY4MTE4YTIwMTM1OGUzLi42MTgzODlmZDM3YzM5NzFhYTMyNTBi
NGM5YTNkYTI2NTFlNTBiNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCkBAIC0zMSw3ICszMSw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCIKIAorI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgor
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlY4SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgog
I2luY2x1ZGUgIlY4SFRNTFBhcmFncmFwaEVsZW1lbnQuaCIKQEAgLTEzOCw2ICsxNDAsNDQgQEAg
Y29uc3QgUXVhbGlmaWVkTmFtZSogQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZpbmRMb2NhbE5hbWUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PgogICAgIHJldHVybiBmaW5kSFRNTFRhZ05hbWVPZlY4VHlw
ZSh0eXBlKTsKIH0KIAordm9pZCBDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlUmVhZHlDYWxs
YmFja0lmTmVlZGVkKEVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNv
bnRleHQpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IHRvVjgo
ZWxlbWVudCwgY29udGV4dC0+R2xvYmFsKCksIGNvbnRleHQtPkdldElzb2xhdGUoKSk7CisgICAg
aWYgKHdyYXBwZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgIXdyYXBwZXJWYWx1ZS0+SXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcHBlclZhbHVlKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSB3cmFwcGVyLT5HZXRQcm90b3R5cGUoKTsKKyAg
ICBpZiAocHJvdG90eXBlVmFsdWUuSXNFbXB0eSgpIHx8ICFwcm90b3R5cGVWYWx1ZS0+SXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90
eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmN0aW9uVmFsdWUgPSBwcm90b3R5cGUtPkdldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woInJlYWR5Q2FsbGJhY2siKSk7CisgICAgaWYgKGZ1bmN0aW9uVmFs
dWUuSXNFbXB0eSgpIHx8ICFmdW5jdGlvblZhbHVlLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChmdW5jdGlvblZhbHVlKTsKKyAgICB2ODo6VHJ5Q2F0Y2gg
ZXhjZXB0aW9uQ2F0Y2hlcjsKKyAgICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSA9IHsgfTsKKyAgICBTY3JpcHRDb250
cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0aW9uKGVsZW1lbnQtPmRvY3VtZW50
KCksIGZ1bmN0aW9uLCB3cmFwcGVyLCAwLCBhcmdzKTsKK30KKworCit2b2lkIEN1c3RvbUVsZW1l
bnRIZWxwZXJzOjppbnZva2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2Nh
dGlvbj4mIGludm9jYXRpb25zKQoreworICAgIEFTU0VSVCghaW52b2NhdGlvbnMuaXNFbXB0eSgp
KTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gdG9WOENvbnRleHQoZXhlY3V0aW9uQ29udGV4dCwgbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW52b2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
QVNTRVJUKGV4ZWN1dGlvbkNvbnRleHQgPT0gaW52b2NhdGlvbnNbaV0uZWxlbWVudCgpLT5kb2N1
bWVudCgpKTsKKyAgICAgICAgaW52b2tlUmVhZHlDYWxsYmFja0lmTmVlZGVkKGludm9jYXRpb25z
W2ldLmVsZW1lbnQoKSwgY29udGV4dCk7CisgICAgfQorfQorCiAjZW5kaWYgLy8gRU5BQkxFKENV
U1RPTV9FTEVNRU5UUykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKaW5kZXggZjI5MGY1NDg4
MGQwOTc0MjU3MmE5ZGQ0Zjg0Mjk3MGVjMGJiNTEwOC4uODYxMTgxOWU4NzVmNjJmZDc0ZmYzYzk4
OTUyYWM4ODExYzZlNzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Q3VzdG9tRWxlbWVudEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9D
dXN0b21FbGVtZW50SGVscGVycy5oCkBAIC0zMywxMiArMzMsMTUgQEAKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcjsKK2NsYXNzIEN1c3RvbUVs
ZW1lbnRJbnZvY2F0aW9uOworY2xhc3MgRWxlbWVudDsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBj
bGFzcyBTY3JpcHRTdGF0ZTsKIApAQCAtNTIsNiArNTUsMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGlzRmVhdHVyZUFsbG93ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogICAgIHN0
YXRpYyBXcmFwcGVyVHlwZUluZm8qIGZpbmRXcmFwcGVyVHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY2hhaW4pOwogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kTG9jYWxOYW1l
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2hhaW4pOworCisgICAgc3RhdGljIHZvaWQgaW52b2tl
UmVhZHlDYWxsYmFja3NJZk5lZWRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVmVj
dG9yPEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uPiYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2
b2lkIGludm9rZVJlYWR5Q2FsbGJhY2tJZk5lZWRlZChFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4pOwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCmluZGV4IGJk
OTI0ODE1MjkyZDlmMGFiZmYyZGQ0YmIwNjc3NjAwMWExYjc2N2MuLjJjMmY5NTUyZjZhY2MzZmUy
ZjU2NjBiODEzOGMzZTFhOGFkOGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogCisjaW5jbHVkZSAiQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ci5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKIApAQCAtNDYsOCArNDcsMTIgQEAg
dm9pZCBWOFJlY3Vyc2lvblNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoKQogICAgIElEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmRlYWN0aXZhdGVOZXdUcmFuc2FjdGlvbnMoKTsKICNl
bmRpZgogCi0gICAgaWYgKG1faXNEb2N1bWVudENvbnRleHQpCisgICAgaWYgKG1faXNEb2N1bWVu
dENvbnRleHQpIHsKICAgICAgICAgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9u
cygpOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgICAgIEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpOworI2VuZGlmCisgICAgfQog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDM0MzE5NzE4ZTdhYzQ5ZjBmNThhN2ZmYzkz
ZmVhZDk1NmM1ZTAzYmMuLjhiMzJkYWY1NTFkOGY1NDM4ZWE0ZWYwMWMzMThkZDJjZThiOTI1Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3Bw
CkBAIC02Myw3ICs2MywxNSBAQCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6On5DdXN0b21FbGVt
ZW50Q29uc3RydWN0b3IoKQogewogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCgpIGNvbnN0CitQYXNzUmVmUHRyPEVsZW1lbnQ+
IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCgpCit7CisgICAgUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZWQgPSBjcmVhdGVFbGVtZW50SW50ZXJuYWwoKTsKKyAgICBpZiAoY3Jl
YXRlZCkKKyAgICAgICAgZG9jdW1lbnQoKS0+ZGlkQ3JlYXRlQ3VzdG9tRWxlbWVudChjcmVhdGVk
LmdldCgpLCB0aGlzKTsKKyAgICByZXR1cm4gY3JlYXRlZC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50SW50
ZXJuYWwoKQogewogICAgIGlmICghZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKaW5kZXggMGVlZDc5
YWU1ODM5YjNjOGQzZDQ2YzJlMTFjMjg4ZTJmZmE4ODhiNC4uOWFjY2NkN2Q3ZTVkYjhiMTgyZTIw
MjY2MmUwOGRjOWI0M2JkZDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50Q29uc3RydWN0b3IuaApAQCAtNTksMTIgKzU5LDE1IEBAIHB1YmxpYzoKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZU5hbWU7IH0KICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQorICAgIGJvb2wgaXNF
eHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZU5hbWUgIT0gbV9sb2NhbE5hbWU7IH0KIAot
ICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudCgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudCgpOwogCiBwcml2YXRlOgogICAgIEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvcihEb2N1bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1l
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBsb2NhbE5hbWUpOwogCisgICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50SW50ZXJuYWwoKTsKKwogICAgIFF1YWxpZmllZE5hbWUgbV90eXBl
TmFtZTsKICAgICBRdWFsaWZpZWROYW1lIG1fbG9jYWxOYW1lOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggNmMyOGYyODE5MjNiOGJmZjcz
NGQyYzI3NjgwOTNlOTFlMjMzMThmNC4uNjc5NTNjYzhkNWVhNTIxMWIxMGYwYjI4MGRjNDhhM2Nl
ZGIzMzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MVW5rbm93bkVsZW1lbnQuaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgpAQCAtNTQsNiArNTUsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitDdXN0b21FbGVtZW50SW52b2NhdGlvbjo6Q3VzdG9tRWxlbWVudEludm9jYXRpb24oUGFz
c1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCit7Cit9
CisKK0N1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjp+Q3VzdG9tRWxlbWVudEludm9jYXRpb24oKQor
eworfQorCiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeShEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVu
dCkKIHsKQEAgLTYxLDYgKzcxLDcgQEAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDdXN0b21FbGVt
ZW50UmVnaXN0cnkoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBDdXN0b21FbGVtZW50UmVnaXN0cnk6
On5DdXN0b21FbGVtZW50UmVnaXN0cnkoKQogeworICAgIGRlYWN0aXZhdGUoKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIG5hbWVJbmNsdWRlc0h5cGhlbihjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCkBAIC0xOTMsMTEgKzIwNCw2MyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBsbwogICAgIHJl
dHVybiAwOwogfQogCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkR2l2ZVR5cGVFeHRl
bnNpb24oRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdG9yPiBjb25zdHJ1Y3RvciA9IGZpbmRGb3IoZWxlbWVudCk7CisgICAgaWYgKCFjb25zdHJ1
Y3RvciB8fCAhY29uc3RydWN0b3ItPmlzRXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGFjdGl2YXRlKEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKK30KKwordm9pZCBD
dXN0b21FbGVtZW50UmVnaXN0cnk6OmRpZENyZWF0ZUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
K3sKKyAgICBhY3RpdmF0ZShDdXN0b21FbGVtZW50SW52b2NhdGlvbihlbGVtZW50KSk7Cit9CisK
K3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjphY3RpdmF0ZShjb25zdCBDdXN0b21FbGVtZW50
SW52b2NhdGlvbiYgaW52b2NhdGlvbikKK3sKKyAgICBib29sIHdhc0luYWN0aXZlID0gbV9pbnZv
Y2F0aW9ucy5pc0VtcHR5KCk7CisgICAgbV9pbnZvY2F0aW9ucy5hcHBlbmQoaW52b2NhdGlvbik7
CisgICAgaWYgKHdhc0luYWN0aXZlKQorICAgICAgICBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0
cmllcygpLmFkZCh0aGlzKTsKK30KKwordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlYWN0
aXZhdGUoKQoreworICAgIEFTU0VSVChtX2ludm9jYXRpb25zLmlzRW1wdHkoKSk7CisgICAgaWYg
KGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuY29udGFpbnModGhpcykpCisgICAgICAg
IGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkucmVtb3ZlKHRoaXMpOworfQorCiBpbmxp
bmUgRG9jdW1lbnQqIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZG9jdW1lbnQoKSBjb25zdAogewog
ICAgIHJldHVybiB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKK3Zv
aWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKCkKK3sK
KyAgICBBU1NFUlQoIW1faW52b2NhdGlvbnMuaXNFbXB0eSgpKTsKKworICAgIHdoaWxlICghbV9p
bnZvY2F0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPEN1c3RvbUVsZW1lbnRJbnZv
Y2F0aW9uPiBpbnZvY2F0aW9uczsKKyAgICAgICAgbV9pbnZvY2F0aW9ucy5zd2FwKGludm9jYXRp
b25zKTsKKyAgICAgICAgQ3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZVJlYWR5Q2FsbGJhY2tz
SWZOZWVkZWQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnZvY2F0aW9ucyk7CisgICAgfQor
CisgICAgZGVhY3RpdmF0ZSgpOworfQorCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVs
aXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCit7CisgICAgd2hpbGUgKCFhY3RpdmVDdXN0b21F
bGVtZW50UmVnaXN0cmllcygpLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEN1
c3RvbUVsZW1lbnRSZWdpc3RyeT4gPiByZWdpc3RyaWVzOworICAgICAgICBjb3B5VG9WZWN0b3Io
YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKSwgcmVnaXN0cmllcyk7CisgICAgICAgIGFj
dGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuY2xlYXIoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZWdpc3RyaWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgcmVnaXN0
cmllc1tpXS0+ZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcygpOworICAgIH0KK30KKwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVnaXN0cnkuaAppbmRleCAxMDJhYTNkZTM4YzIxMTY4ZTBjN2I3MGM2NTI4YTJh
MWE5MWRlNGU0Li40ZmYwODI1YTIzODhlYjI5ZWQ3NzZlOTkxNTc2OTI5MWFiNzUxMzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsOSArNTQsMjYgQEAgY2xhc3MgRWxlbWVudDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogCitj
bGFzcyBDdXN0b21FbGVtZW50SW52b2NhdGlvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ3Vz
dG9tRWxlbWVudEludm9jYXRpb24oUGFzc1JlZlB0cjxFbGVtZW50Pik7CisgICAgfkN1c3RvbUVs
ZW1lbnRJbnZvY2F0aW9uKCk7CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKK307CisKIGNsYXNzIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSA6IHB1YmxpYyBSZWZD
b3VudGVkPEN1c3RvbUVsZW1lbnRSZWdpc3RyeT4gLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIGNsYXNzIENhbGxiYWNr
RGVsaXZlcnlTY29wZSB7CisgICAgcHVibGljOgorICAgICAgICBDYWxsYmFja0RlbGl2ZXJ5U2Nv
cGUoKSB7IH0KKyAgICAgICAgfkNhbGxiYWNrRGVsaXZlcnlTY29wZSgpIHsgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzSWZOZWVkZWQoKTsgfQorICAg
IH07CisKICAgICBleHBsaWNpdCBDdXN0b21FbGVtZW50UmVnaXN0cnkoRG9jdW1lbnQqKTsKICAg
ICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAKQEAgLTY2LDE2ICs4NCw0MyBAQCBwdWJsaWM6
CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAotcHJpdmF0ZToKLSAgICBzdGF0
aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIGRpZEdp
dmVUeXBlRXh0ZW5zaW9uKEVsZW1lbnQqKTsKKyAgICB2b2lkIGRpZENyZWF0ZUVsZW1lbnQoRWxl
bWVudCopOwogCisgICAgc3RhdGljIHZvaWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygp
OworICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3NJZk5lZWRlZCgp
OworCitwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8UXVhbGlmaWVkTmFt
ZSwgUXVhbGlmaWVkTmFtZT4sIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+ID4gQ29u
c3RydWN0b3JNYXA7CiAgICAgdHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU+IE5hbWVTZXQ7
CisgICAgdHlwZWRlZiBIYXNoU2V0PEN1c3RvbUVsZW1lbnRSZWdpc3RyeSo+IEluc3RhbmNlU2V0
OworCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7Cisg
ICAgc3RhdGljIEluc3RhbmNlU2V0JiBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpOwor
CisgICAgdm9pZCBhY3RpdmF0ZShjb25zdCBDdXN0b21FbGVtZW50SW52b2NhdGlvbiYpOworICAg
IHZvaWQgZGVhY3RpdmF0ZSgpOworICAgIHZvaWQgZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcygp
OwogCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CiAgICAgTmFtZVNldCBtX25h
bWVzOworICAgIFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2NhdGlvbj4gbV9pbnZvY2F0aW9uczsK
IH07CiAKK2lubGluZSB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVj
eWNsZUNhbGxiYWNrc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIWFjdGl2ZUN1c3RvbUVsZW1lbnRS
ZWdpc3RyaWVzKCkuaXNFbXB0eSgpKQorICAgICAgICBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJh
Y2tzKCk7CisgICAgQVNTRVJUKGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuaXNFbXB0
eSgpKTsKK30KKworaW5saW5lIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6SW5zdGFuY2VTZXQmIEN1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW5zdGFuY2VTZXQsIGFjdGl2ZUluc3RhbmNlcywgKCkp
OworICAgIHJldHVybiBhY3RpdmVJbnN0YW5jZXM7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGQ0OGM5MTcwMzA2MjBkMThmNzA2N2YwMmYxZTU0YjA3YWE4Y2RkZGQuLjY1
Yjk0ZTg0ZmIzNWNkMmE3NTRmNTY2MDcyZDExNjExOWNiMmZjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtODU0LDcgKzg1NCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0CiAgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlZDsKICAgICB9CiAKLSAgICByZXR1cm4gc2V0VHlwZUV4dGVu
c2lvbihjcmVhdGVFbGVtZW50KGxvY2FsTmFtZSwgZWMpLCB0eXBlRXh0ZW5zaW9uKTsgLy8gIEZJ
WE1FOiB0YWtlIGNhcmUgb2YgQGlzCisgICAgcmV0dXJuIHNldFR5cGVFeHRlbnNpb24oY3JlYXRl
RWxlbWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8
RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGVFeHRlbnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtODkzLDYgKzg5MywxMyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVy
RWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdAogICAgICAgICBtX3JlZ2lzdHJ5ID0gYWRvcHRSZWYo
bmV3IEN1c3RvbUVsZW1lbnRSZWdpc3RyeSh0aGlzKSk7CiAgICAgcmV0dXJuIG1fcmVnaXN0cnkt
PnJlZ2lzdGVyRWxlbWVudChzdGF0ZSwgbmFtZSwgb3B0aW9ucywgZWMpOwogfQorCit2b2lkIERv
Y3VtZW50OjpkaWRDcmVhdGVDdXN0b21FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgLy8gbV9yZWdpc3RyeSBpcyBj
bGVhcmVkIERvY3VtZW50OjpkaXNwb3NlKCkgYW5kIGNhbiBiZSBudWxsIGhlcmUuCisgICAgaWYg
KG1fcmVnaXN0cnkpCisgICAgICAgIG1fcmVnaXN0cnktPmRpZENyZWF0ZUVsZW1lbnQoZWxlbWVu
dCk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDMwMmRlYjFhYzMwYzdkNGVjYzhlMzQzYmM5Yjg0ZTRhYzQ2YTc1
M2YuLjFkNWFhNDY0MjYwMzI3OWIwNTAzZmMzYmUxN2U1YTZlM2FmMDI4ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMTY4LDYgKzExNjgsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRT
dGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBh
c3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29y
ZTo6U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkq
IHJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQorICAgIHZvaWQg
ZGlkQ3JlYXRlQ3VzdG9tRWxlbWVudChFbGVtZW50KiwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
Kik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29s
dXRlWm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2F0UXVhZD4mLCBSZW5kZXJPYmplY3QqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDQ5YmY3N2U2ZTljYzM4OTBmNTNmZTk4YjNkMThk
MTFmYTcwYmM5YzEuLjhlOWM4NDU3ODcyMzc1NWY3NTY3YjI1NGYxN2ZkNWE2OWMyZGZjNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjksOCArMjksOCBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01JbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbjsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudCBkb2N1bWVudEVsZW1lbnQ7CiAKLSAgICBbUmV0dXJuTmV3T2JqZWN0
LCBWOFBlcldvcmxkQmluZGluZ3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxs
QXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdO
YW1lKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5ld09iamVj
dCwgVjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQor
ICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdOYW1lKSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gRG9jdW1lbnRGcmFnbWVudCAgIGNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxk
QmluZGluZ3NdIFRleHQgY3JlYXRlVGV4dE5vZGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVm
aW5lZF0gRE9NU3RyaW5nIGRhdGEpOwogICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRC
aW5kaW5nc10gQ29tbWVudCBjcmVhdGVDb21tZW50KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWRdIERPTVN0cmluZyBkYXRhKTsKQEAgLTQ3LDEyICs0NywxMyBAQAogCiAgICAgLy8gSW50
cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRl
cnMsIFJldHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlIGltcG9ydE5vZGUo
aW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBpbXBvcnRlZE5vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0g
Ym9vbGVhbiBkZWVwKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgW09iakNM
ZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGlu
Z3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmlu
ZyBxdWFsaWZpZWROYW1lKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRC
aW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBOb2RlIGltcG9y
dE5vZGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBpbXBvcnRlZE5vZGUs
CisgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBkZWVwKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJu
TmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3MsIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxs
YmFja3NdCisgICAgRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
LE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBS
ZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5nc10gQXR0ciBjcmVhdGVBdHRyaWJ1dGVO
UyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRd
IERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CkBAIC0xMzEsNyArMTMyLDcgQEAKICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAKICAgICAvLyBDb21tb24gZXh0ZW5zaW9ucwotCisgICAgW1Y4RGVs
aXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGV4ZWND
b21tYW5kKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBjb21tYW5k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBib29sZWFuIHVzZXJJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5l
ZEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdmFs
dWUpOwpAQCAtMzYyLDExICszNjMsMTMgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVf
Q1VTVE9NX0VMRU1FTlRTKSAmJiBFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTCi0gICAgW1Y4RW5hYmxl
ZEF0UnVudGltZT1jdXN0b21ET01FbGVtZW50cywgQ29uZGl0aW9uYWw9Q1VTVE9NX0VMRU1FTlRT
LCBJbXBsZW1lbnRlZEFzPXJlZ2lzdGVyRWxlbWVudCwgQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFY4
UGVyV29ybGRCaW5kaW5nc10KKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPWN1c3RvbURPTUVsZW1l
bnRzLCBDb25kaXRpb25hbD1DVVNUT01fRUxFTUVOVFMsIEltcGxlbWVudGVkQXM9cmVnaXN0ZXJF
bGVtZW50LCBDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgVjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2
ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQogICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciB3
ZWJraXRSZWdpc3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5
IG9wdGlvbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4
UGVyV29ybGRCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KGluIERPTVN0cmluZyBsb2Nh
bE5hbWUsIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lv
bikgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29y
bGRCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikgcmFpc2VzIChET01F
eGNlcHRpb24pOworICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5ncywgVjhE
ZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBFbGVtZW50IGNyZWF0ZUVsZW1lbnQo
aW4gRE9NU3RyaW5nIGxvY2FsTmFtZSwgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0
cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5l
d09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJh
Y2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10g
RE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgog
CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9DUFApICYmIExBTkdVQUdFX0NQUApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IGFhN2Y1MmQxMjBjOGQ2OGZkMmMzNGU4YjMzOWNlNjViZjYwMmZjNGEuLjMy
NTRlYzU0N2UxZTg2ZmI4NDRjNGVkYWUwZDhmN2QwZTEyZmRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDbGFzc0xpc3QuaCIKICNpbmNsdWRl
ICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIKKyNpbmNsdWRlICJD
dXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNs
dWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTg4
Nyw2ICs4ODgsMTcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKICAgICAgICAgZG9jdW1lbnQo
KS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwog
fQogCitpbmxpbmUgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkRnJvbVBhcnNlck9yQnlD
bG9uaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpCit7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBpZiAobmFtZSA9PSBp
c0F0dHIpIHsKKyAgICAgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkgPSBk
b2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICAgICAgcmVnaXN0cnktPmRpZEdpdmVUeXBl
RXh0ZW5zaW9uKHRoaXMpOworICAgIH0KKyNlbmRpZgorICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFt
ZSwgbmV3VmFsdWUpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0
YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CkBAIC0xMDczLDcgKzEwODUsNyBA
QCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0
ZT4mIGF0dHJpYnV0ZVZlY3RvcikKIAogICAgIC8vIFVzZSBhdHRyaWJ1dGVWZWN0b3IgaW5zdGVh
ZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBtaWdodCBtb2RpZnkg
bV9lbGVtZW50RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlVmVj
dG9yLnNpemUoKTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZVZlY3Rv
cltpXS5uYW1lKCksIGF0dHJpYnV0ZVZlY3RvcltpXS52YWx1ZSgpKTsKKyAgICAgICAgYXR0cmli
dXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhhdHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgp
LCBhdHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUoKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0
cmlidXRlcygpIGNvbnN0CkBAIC0yODU3LDcgKzI4NjksNyBAQCB2b2lkIEVsZW1lbnQ6OmNsb25l
QXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fZWxlbWVudERhdGEtPmxlbmd0aCgpOyArK2kpIHsKICAgICAg
ICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBjb25zdF9jYXN0PGNvbnN0IEVsZW1lbnRE
YXRhKj4obV9lbGVtZW50RGF0YS5nZXQoKSktPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGF0
dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7Cisg
ICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNsb25pbmcoYXR0cmlidXRlLT5u
YW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCBiYWE5ZDQyNTM0MzkwMzYzNDUyZmI1OTRkNGNlYWQwOGY1NTE1MmYzLi5kMDdjOTUxNTNk
ODUyNjZmZTI2MmE3NDE5YzVjYzgyNzgwMDc3NTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTY3
Miw2ICs2NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6
ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKICAgICB2b2lkIGFkZEF0dHJpYnV0
ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
LCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmli
dXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUp
OworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCBmZTk3NTY3ZjRhOTAwNzkzNjE0YTQy
OTMxY2ViNzlkMWUzOGNlN2M3Li42ZjZkNjhkY2M4MmRiYzMxY2VkY2I5MGZjODVhN2NhZjUyMDM1
ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC03Niw3ICs3Niw4IEBACiAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhhc0NoaWxkTm9kZXMoKTsK
LSAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlICAgICAgICAgICAgICAgY2xvbmVOb2RlKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCk7CisgICAgW1Y4UGVy
V29ybGRCaW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBOb2Rl
ICAgICAgICAgICAgICAgY2xvbmVOb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRd
IGJvb2xlYW4gZGVlcCk7CiAgICAgdm9pZCAgICAgICAgICAgICAgIG5vcm1hbGl6ZSgpOwogCiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290Lmlk
bAppbmRleCBhMzljYTkyYTUzYjk4NmNmODhmMTE5MzFjMTE5YTExMDI4ZjVjOGFkLi41YjM1ZTlm
ZWRlZDI5ODM0ZjlmNmVkNzc5OTkyNjNlZjQ4YWQ0NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaWRsCkBAIC0zMiw4ICszMiw4IEBACiAgICAgYXR0cmlidXRlIGJvb2xlYW4gYXBwbHlBdXRo
b3JTdHlsZXM7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVzZXRTdHlsZUluaGVyaXRhbmNlOwog
Ci0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJI
VE1MCi0gICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBbVHJlYXROdWxs
QXM9TnVsbFN0cmluZywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTCBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAK
ICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQK
ICAgICBOb2RlIGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29s
ZWFuIGRlZXApIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmlkbAppbmRleCBiYzYzOWI4ZTQxYmIwNDRhOTE5MTBlODZiNGJkMDQ5ZmI0MTFiZDQ4Li44Y2Ez
OTA4NjI5YjhmMzFkOTk2ZTg0YmRkODJhZTEwNTgxNjM5ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgIFtSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2Vzc0tleTsKIAogICAgIC8vIEV4dGVuc2lvbnMKLSAgICAg
ICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5l
ckhUTUwKKyAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhEZWxpdmVyQ3Vz
dG9tRWxlbWVudENhbGxiYWNrc10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUwKICAgICAg
ICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICAgICAgIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dAogICAg
ICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDQ2ODlkMTNlNDJh
MzVlZWEyMTRhMDI4N2FhN2I3ZGUyODlkNTEwM2EuLjUzZjNkMjlmZmIxMDVmZWE0M2ZiOTUxYWRm
NWJjYTljNWZiMjA3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
Y3JpcHRSdW5uZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTI4LDgg
KzEyOSwxMiBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5k
RGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAgIGlmIChwZW5kaW5nU2NyaXB0
LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCiAgICAg
ICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7CiAKLSAgICBpZiAoIWlzRXhl
Y3V0aW5nU2NyaXB0KCkpCisgICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKSB7CisjaWYgRU5B
QkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxp
dmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKICAgICAgICAgTXV0YXRpb25PYnNl
cnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOworICAgIH0KIAogICAgIC8vIENsZWFyIHRoZSBw
ZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlw
dCgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBwZW5kaW5nU2NyaXB0LnJlbGVhc2VF
bGVtZW50QW5kQ2xlYXIoKTsKQEAgLTI5Miw4ICsyOTcsMTIgQEAgdm9pZCBIVE1MU2NyaXB0UnVu
bmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlw
dFN0YXIKICAgICAgICAgLy8gZXZlcnkgc2NyaXB0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBub3Qg
cmVhZHkgdG8gZXhlY3V0ZSB5ZXQuIFRoZXJlJ3MKICAgICAgICAgLy8gdW5mb3J0dWFudGVseSBu
byBvYnZpb3VzIHdheSB0byB0ZWxsIGlmIHByZXBhcmVTY3JpcHQgaXMgZ29pbmcgdG8KICAgICAg
ICAgLy8gZXhlY3V0ZSB0aGUgc2NyaXB0IGZyb20gb3V0IGhlcmUuCi0gICAgICAgIGlmICghaXNF
eGVjdXRpbmdTY3JpcHQoKSkKKyAgICAgICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKSB7Cisj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWdp
c3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpOworI2VuZGlmCiAgICAgICAgICAg
ICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CisgICAgICAgIH0KIAog
ICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3Qt
PmlucHV0U3RyZWFtKCkpOwogICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5n
TGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViS2l0LmNwcAppbmRleCBlMjZmYjhlZjlkNWViNjYyZDY2NDgwMjc4NTdkYTdkYjE3
YjA0YmQzLi4wZGZiMDg2Yjc4OTZjZGJlOTZiY2Y2OWI2OWFjZTA5YmZmOGY1MWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUVsZW1l
bnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkV2ZW50VHJhY2VyLmgiCiAjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGluZ1N0b3JlLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdFN1cHBvcnQuaCIKQEAgLTgwLDYg
KzgxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUHJvY2Vzc1Rhc2soKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUHJvY2Vzc1Rhc2soKQogICAgIHsKKyNpZiBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQorICAgICAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRl
bGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyNlbmRpZgogICAgICAgICBXZWJDb3JlOjpN
dXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiAgICAgfQogfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAyZTU4NGVhMjBiZTg4NWY2OTUzMzc1OGM1MjdjZTg0MzdiMjU4OWI3Li44MzdiMWVmZmJlYjdk
YmQ4ZWRhY2M0ZWRiZjIwM2Y1ODIxMWQzMDhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMt
MDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1
c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJhY2siIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQg
YmUgY2FsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1
cnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlm
ZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVl
bnRyYW5jeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9s
aWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFwaS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
Y3JlYXRlZC1jcmVhdGlvbi1hcGkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRNTC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNl
ci1vbmx5LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9s
aWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJz
ZXItc2NyaXB0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtY3JlYXRlZC1wYXN0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0y
MSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBUZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3Jl
YXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4
MjNhODMyYTdhMDgzMDI4YWY3ODc2ODYzOTJkZGRhZTUyNjNmMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVt
ZW50LXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgOTogVW5jYXVnaHQgUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUg
ZXhjZWVkZWQuCitQQVNTIHVubGVzcyBjcmFzaAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1l
bnQtcmVjdXJzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkMzllNzQxOGY4MjZjYzJkNjA3MDNlYWNl
ZmEwOTkzMjA1Yzk2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sCkBAIC0w
LDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8
fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsg
cHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNh
bGxiYWNrOiB7IHZhbHVlOiBmdW5jdGlvbiAoKSB7IHRoaXMuaW5uZXJIVE1MID0gIjx4LWZvbz5I
ZWxsbzwveC1mb28+IjsgfSB9IH0pIH0pOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iKTsK
K2RlYnVnKCJQQVNTIHVubGVzcyBjcmFzaCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNy
ZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFu
Y3ktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NWQ3Yzg2YjA4YjFjYWI4MTc1MWY2YWU1ZWY2
NjVhYTYzNWI2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUg
Y2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZm9sbG93aW5n
IHNjcmlwdCBibG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2lu
ZG93LmNhbGxiYWNrc0NhbGxlZCBpcyAwCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMg
MQorUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3Jl
YXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlYTBmNDMzOGE1OGRhZjYx
MDJhMDFiYzNhMWM1YWMxNjMyNmIyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3ku
aHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5
Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGZvbGxv
d2luZyBzY3JpcHQgYmxvY2suIikKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0
ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7CisKK3dpbmRvdy5jYWxsYmFja3NDYWxsZWQg
PSAwOworCitmdW5jdGlvbiBmb29DcmVhdGVkRnVuY3Rpb24oKSB7CisgIHNob3VsZEJlKCJ3aW5k
b3cuY2FsbGJhY2tzQ2FsbGVkIiwgIjAiKTsKKyAgdGhpcy5pbm5lckhUTUwgPSAiPHgtYmFyPkhl
bGxvPC94LWJhcj4iOworICBzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICIxIik7
CisgIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQrKzsKK30KKworZnVuY3Rpb24gYmFyQ3JlYXRlZEZ1
bmN0aW9uKCkgeworICB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkKys7Cit9CisKK2RvY3VtZW50LnJl
Z2lzdGVyKCJ4LWZvbyIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnBy
b3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBmb29DcmVhdGVkRnVuY3Rpb24gfSB9
KSB9KTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWJhciIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3Jl
YXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBiYXJD
cmVhdGVkRnVuY3Rpb24gfSB9KSB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iKTsKK3Nob3VsZEJlKCJ3aW5kb3cu
Y2FsbGJhY2tzQ2FsbGVkIiwgIjIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVk
LWNyZWF0aW9uLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20v
bGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzZjNzhlNzNiZjhjMTRiNGZhNTRiNGNlZGYwNmQ0OGQzN2I4MTA3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9u
LWFwaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDI4OiBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XQorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
bGlmZWN5Y2xlIGNhbGxiYWNrcyBvZiBBUEktb3JpZ2luYXRlZCBlbGVtZW50cyBhcmUgdmlzaWJs
ZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycpLmNhbGxiYWNrc0NhbGxl
ZCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpLmNh
bGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICd4LWZvbycpLmNhbGxiYWNrc0NhbGxlZCBpcyB0
cnVlCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCcsICdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBm
b28uY2xvbmVOb2RlKCkuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9vLmNsb25lTm9k
ZSh0cnVlKS5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGJhci5jbG9u
ZU5vZGUoKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBiYXIuY2xvbmVOb2RlKHRydWUp
LmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9yZWlnbkZvby5jYWxs
YmFja3NDYWxsZWQgaXMgdW5kZWZpbmVkLgorUEFTUyBmb3JlaWduRm9vLmZpcnN0Q2hpbGQuY2Fs
bGJhY2tzQ2FsbGVkIGlzIHVuZGVmaW5lZC4KK1BBU1MgaW1wb3J0ZWRGb28uY2FsbGJhY2tzQ2Fs
bGVkIGlzIHRydWUKK1BBU1MgaW1wb3J0ZWRGb28uZmlyc3RDaGlsZC5jYWxsYmFja3NDYWxsZWQg
aXMgdHJ1ZQorUEFTUyBpbXBvcnRlZEJhci5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBp
bXBvcnRlZEJhci5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFwaS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0
aW9uLWFwaS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZjhhMzJkZmQyMzJiODc4ZDc1YWQyMmY1MjNkZGUw
OTkwOGM2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20v
bGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRpb24tYXBpLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgQVBJLW9yaWdp
bmF0ZWQgZWxlbWVudHMgYXJlIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQor
ZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRS
ZWdpc3RlcjsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsgcHJvdG90eXBlOiBPYmplY3Qu
Y3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBm
dW5jdGlvbigpIHsgdGhpcy5jYWxsYmFja3NDYWxsZWQgPSB0cnVlOyB9IH0gfSkgfSk7Citkb2N1
bWVudC5yZWdpc3RlcigieC1iYXIiLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2
RWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7
IHRoaXMuY2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsgfSB9IH0pIH0pOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJob3N0Ij48
L2Rpdj4KKworPHNjcmlwdD4KKworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd4LWZvbycpLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQiKTsKKworc2hvdWxkQmVU
cnVlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnLCAneC1mb28nKS5jYWxsYmFja3NDYWxsZWQiKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicsICd4
LWJhcicpLmNhbGxiYWNrc0NhbGxlZCIpOworCit2YXIgZm9vID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgneC1mb28nKTsKK2Zvby5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnLCAneC1iYXInKSk7CitzaG91bGRCZVRydWUoImZvby5jbG9uZU5vZGUoKS5jYWxsYmFja3ND
YWxsZWQiKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkLmNh
bGxiYWNrc0NhbGxlZCIpOworY29uc29sZS5sb2coZm9vLmNsb25lTm9kZSh0cnVlKS5maXJzdENo
aWxkKTsKKwordmFyIGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicp
OworYmFyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJykpOworc2hv
dWxkQmVUcnVlKCJiYXIuY2xvbmVOb2RlKCkuY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRy
dWUoImJhci5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZC5jYWxsYmFja3NDYWxsZWQiKTsKKwor
dmFyIGZvcmVpZ25Eb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCAo
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbCcsIG51bGwpOworCit2YXIgZm9y
ZWlnbkZvbyA9IGZvcmVpZ25Eb2MuY3JlYXRlRWxlbWVudCgneC1mb28nKTsKK2ZvcmVpZ25Gb28u
YXBwZW5kQ2hpbGQoZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKSk7Citz
aG91bGRCZVVuZGVmaW5lZCgiZm9yZWlnbkZvby5jYWxsYmFja3NDYWxsZWQiKTsKK3Nob3VsZEJl
VW5kZWZpbmVkKCJmb3JlaWduRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CitpbXBv
cnRlZEZvbyA9IGRvY3VtZW50LmltcG9ydE5vZGUoZm9yZWlnbkZvbykKK3Nob3VsZEJlVHJ1ZSgi
aW1wb3J0ZWRGb28uY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImltcG9ydGVkRm9v
LmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3ZhciBmb3JlaWduQmFyID0gZm9yZWln
bkRvYy5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKTsKK2ZvcmVpZ25CYXIuYXBwZW5kQ2hp
bGQoZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCd4LWZvbycpKTsKK2ltcG9ydGVkQmFyID0gZG9j
dW1lbnQuaW1wb3J0Tm9kZShmb3JlaWduQmFyKTsKK3Nob3VsZEJlVHJ1ZSgiaW1wb3J0ZWRCYXIu
Y2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImltcG9ydGVkQmFyLmZpcnN0Q2hpbGQu
Y2FsbGJhY2tzQ2FsbGVkIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlu
bmVySFRNTC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTJjM2Y0MDUy
YjI2Y2U0ZjhhYjYzMDhjOGU0NmFjMzIzY2U2ODEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRNTC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5
Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGZvbGxv
d2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycsICdESVYnLCAnWC1GT08nXQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhU
TUwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1p
bm5lckhUTUwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzVjODQ3OWYzYTk3Y2ZiY2QxMTc4ODkyZmFmNGZk
ZDIyMzFiOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRNTC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFk
ZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1l
bnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3Rl
cjsKK3dpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSBbXTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZv
byIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyBy
ZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNhbGxiYWNrc0NhbGxl
ZC5wdXNoKHRoaXMudGFnTmFtZSk7IH0gfSB9KSB9KTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWJh
ciIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxEaXZFbGVtZW50LnByb3RvdHlwZSwg
eyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNhbGxiYWNrc0Nh
bGxlZC5wdXNoKHRoaXMudGFnTmFtZSk7IH0gfSB9KSB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPHNjcmlwdD4KK2NvbnRhaW5lci5pbm5lckhU
TUwgPSAiPHgtZm9vPjwveC1mb28+PGRpdiBpcz0neC1iYXInPjwvZGl2Pjx4LWZvbz48L3gtZm9v
PiI7CitzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJVics
ICdYLUZPTyddIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25s
eS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1j
cmVhdGVkLXBhcnNlci1vbmx5LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZmZDgwNzQ1YjBl
ZjA1ZjE3NTQ5MWQyMzgxMWIxNWI5Y2YzOGI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PHNwYW4+SGVsbG88L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLW9ubHkuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25s
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRjODExNWUxNzIwZmQ2MmMwZDExYmIwMWVjYWU5NjM0NjA4YWEz
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtcGFyc2VyLW9ubHkuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1
bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK3Byb3RvID0gT2JqZWN0
LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTog
ZnVuY3Rpb24oKSB7IHRoaXMuaW5uZXJIVE1MID0gIkhlbGxvIjsgfSB9IH0pOworZG9jdW1lbnQu
cmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IHByb3RvIH0pOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzx4LWZvbz48L3gtZm9vPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1z
Y3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLXBhcnNlci1zY3JpcHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YzdlZjdi
N2Q1MzBiOTY0Y2JjZmY3OGFjNzkyZjA0MTE4NzJjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
bGlmZWN5Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGlu
IGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlw
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjliNWJlYjY3NDhhMjg1M2ExYTkwM2QxMTgzNmI2ZWJhYzZlZWVj
YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBl
bGVtZW50IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQu
cmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsK
K3Byb3RvID0gT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxs
YmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSB0cnVl
OyB9IH0gfSk7Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogcHJvdG8g
fSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHgtZm9vPjwveC1mb28+Cis8c2NyaXB0
Pgorc2hvdWxkQmVUcnVlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdlYjAxNDY2YThlYWU1NzM1YTlmZDg1YWM0OGZkNDY4YzQ1NzQ1NTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFz
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAy
NjogW29iamVjdCBIVE1MRGl2RWxlbWVudF0KK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxp
ZmVjeWNsZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmlnaW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNp
YmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycsICdESVYnXQor
UEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnWC1GT08nLCAnRElWJywgJ1gtRk9PJywg
J0RJViddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVh
dGVkLXBhc3RlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNy
ZWF0ZWQtcGFzdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTFhZmQ5NWNmYmE3NjA5ZjNlNTNlZDZkODNi
NGRmNmEyMThmNTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhc3RlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmln
aW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikK
K2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0
UmVnaXN0ZXI7Cit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107Citkb2N1bWVudC5yZWdpc3Rl
cigieC1mb28iLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5
cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFj
a3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Citkb2N1bWVudC5yZWdpc3Rl
cigieC1iYXIiLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90
b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxs
YmFja3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIiBjb250ZW50ZWRpdGFibGU+Wzx4LWZv
bz5Gb288L3gtZm9vPjxkaXYgaXM9J3gtYmFyJz5CYXI8L2Rpdj5dPC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworc2VsZWN0aW9uLnNlbGVj
dEFsbENoaWxkcmVuKGNvbnRhaW5lcik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIpOwor
CitzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJViddIik7
CitzZWxlY3Rpb24uY29sbGFwc2VUb0VuZCgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3Rl
Iik7CitzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJVics
ICdYLUZPTycsICdESVYnXSIpOworCitjb25zb2xlLmxvZyhjb250YWluZXIpOworY29udGFpbmVy
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194430</attachid>
            <date>2013-03-21 20:33:17 -0700</date>
            <delta_ts>2013-03-21 22:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112538-20130322122904.patch</filename>
            <type>text/plain</type>
            <size>53514</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzNGJjMjg5YWMwOTVmNTlkZDk3NTk5
OTgzNTRhN2MyZjY0Mjc2ZDkuLjAzNjI1NWViM2FiYjE2ZmYyNWYwNWJlYWVjNjhiZmE4YWM3OTAw
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJh
Y2siIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAg
ICAoV1RGOjpjb3B5VG9WZWN0b3IpOiBHZW5lcmFsaXplZCB0byBsZXQgaXQgYWNjZXB0IHZhcmlh
bnRzIGxpa2UgTGlzdEhhaHNTZXQgaW5zdGVhZCBvZiBvbmx5IEhhc2hTZXQuCisKIDIwMTMtMDMt
MjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjaW5n
IFN0cmluZzo6ZmluZE5leHRMaW5lU3RhcnQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZjdhMThkMTAxN2Y4
NGVmYjRhOTBjNDg1OWIwZjljZjQ0MmQ0ZTQxLi5hNWM2YzA1MmQ5NmQwN2FmZWNhZDVhZjg1MWUx
YTkxOTlhMTRhNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDEzLTAzLTIxICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBDdXN0b20gRWxl
bWVudHM6ICJyZWFkeUNhbGxiYWNrIiBsaWZlY3ljbGUgY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsbG93cyBlYWNoIGN1c3RvbSBlbGVtZW50IGRlZmluaXRpb24gdG8gaG9vayB1cCBp
dHMgaW5zdGFudGlhdGlvbiwKKyAgICAgICAgbmFtZWx5ICJyZWFkeUNhbGxiYWNrIiBsaWZlY3lj
bGUgY2FsbGJhY2suCisKKyAgICAgICAgVGhlIGNoYW5nZSBoYXMgdHdvIHBhcnRzOgorICAgICAg
ICAtIDEuIFRyYWNraW5nIHdoaWNoIEVsZW1lbnQgb2JqZWN0cyB0byBiZSBjcmVhdGVkLgorICAg
ICAgICAtIDIuIEludm9raW5nIGFwcHJvcHJpYXRlIEphdmFTY3JpcHQgZnVuY3Rpb25zLCB3aGlj
aCBhcmUgcmVhZHlDYWxsYmFjaygpLAorICAgICAgICAgIGJlZm9yZSB0aGUgRWxlbWVudCBvYmpl
Y3QgaXMgdmlzaWJsZSBmcm9tIHBhZ2Ugc2NyaXB0LgorCisgICAgICAgIEZvciAxLCBDdXN0b21F
bGVtZW50UmVnaXN0cnkgbWFpbnRhaW5zIGxpc3Qgb2YgImNhbGxiYWNrCisgICAgICAgIGludm9j
YWlvbnMiLiAgRWFjaCBsaXN0IGl0ZW0gKCJpbnZvY2F0aW9uIikgdHJhY2tzIHRoZSBlbGVtZW50
CisgICAgICAgIHdoaWNoIGhhcyBhIGxpZmVjeWNsZSBjYWxsYmFjayB0byBiZSBpbnZva2VkLiBF
YWNoIGludm9jYXRpb24gaXMKKyAgICAgICAgcmVnaXN0ZXJlZCB3aGVuIC0gQW55IGN1c3RvbSBl
bGVtZW50IEMrKyBvYmplY3QgaXMgaW5zdGFudGlhdGVkLgorICAgICAgICBTZWUgY2hhbmdlcyBv
biBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwLgorCisgICAgICAgIFRoaXMgYWxzbyBoYXBw
ZW5zIHdoZW4gQGlzIGF0dHJpYnV0ZSBpcyBzZXQgYnkgdGhlIHBhcnNlciBvciBub2RlCisgICAg
ICAgIGNsb25pbmcgcm91dGluZSwgd2hpY2ggY2FuIHR1cm4gYSBub24tY3VzdG9tIGVsZW1lbnQg
aW50byBhCisgICAgICAgIHR5cGUtZXh0ZW5kZWQgY3VzdG9tIGVsZW1lbnQuIFNlZSBjaGFuZ2Vz
IG9uIEVsZW1lbnQuY3BwLgorCisgICAgICAgIEZvciAyLCBDdXN0b21FbGVtZW50UmVnaXN0cnkg
YmFzaWNhbGx5IGZvbGxvd3Mgd2hhdAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyIGlzIGRvaW5n
LCBhbmQgaW50cm9kdWNlcyBhIG1ldGhvZCBjYWxsZWQKKyAgICAgICAgZGVsaXZlckxpZmVjeWNs
ZUNhbGxiYWNrcygpLiBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgYWxsIHBlbmRpbmcKKyAgICAgICAg
Y2FsbGJhY2sgaW52b2NhdGlvbnMuIFlvdSBjYW4gdGhpbmsgaXQgYXMgYSBkdWFsIG9mCisgICAg
ICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKS4KKworICAgICAgICBU
aGUgZGVsaXZlcnkgZnVuY3Rpb24gaXMgY2FsbGVkIHBsYWNlcyB3aGVyZSBNdXRhdGlvbk9ic2Vy
dmVyJ3MKKyAgICAgICAgZGVsaXZlckFsbE11dGF0aW9ucygpIGlzIGNhbGxlZC4gSW4gYWRkaXRp
b24sIGl0IGlzIGFsc28gY2FsbGVkCisgICAgICAgIGp1c3QgYmVmb3JlIHJldHVybmluZyBmcm9t
IGEgc2V0IG9mIERPTSBBUElzLiBGb3IgZXhhbXBsZSwgaXQgaXMKKyAgICAgICAgY2FsbGVkIGp1
c3QgYmVmb3JlIGNyZWF0ZUVsZW1lbnQoKSByZXR1cm5zLCBzbyB0aGF0IHBvc3NpYmx5CisgICAg
ICAgIGNyZWF0ZWQgY3VzdG9tIGVsZW1lbnQgYmVjb21lcyByZWFkeSB0aHJvdWdoIGl0cyByZWFk
eUNhbGxiYWNrKCkuCisgICAgICAgIFN1Y2ggQVBJcyBnZXQgIlY4RGVsaXZlckN1c3RvbUVsZW1l
bnRDYWxsYmFja3MiIElETCBhdHRyaWJ1dGUuIEluCisgICAgICAgIHByaW5jaXBsZSwgQVBJcyB3
aGljaCBjYW4gY3JlYXRlIG5ldyBjdXN0b20gZWxlbWVudCBpbnN0bmFjZXMgYXJlCisgICAgICAg
IG1hcmtlZC4gU2VlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3Bl
IGFuZAorICAgICAgICBjaGFuZ2VzIG9uIENvZGVHZW5lcmF0b3JWOC5wbS4KKworICAgICAgICBX
ZSBuZWVkIHRoaXMgZXh0cmEgd29yayBiZWNhdXNlIHRoZSByZWFkeUNhbGxiYWNrKCkgbmVlZHMg
dG8gZ2l2ZQorICAgICAgICBhbiBpbGx1c2lvbiBzbyB0aGF0IEphdmFTY3JpcHQgcHJvZ3JhbW1l
cnMgZmVlbCBsaWtlIHRoZQorICAgICAgICByZWFkeUNhbGxiYWNrKCkgY2FsbGJhY2sgYmVpbmcg
Y2FsbGVkIGp1c3QgYWZ0ZXIgaXQgaXMgY3JlYXRlZCwKKyAgICAgICAgaW5zdGVhZCBvZiBjYWxs
ZWQgb24gYXJiaXRyYXJ5IGxhdGUgdGltaW5nIGxpa2UgTXV0YXRpb25PYnNlcnZlcgorICAgICAg
ICBub3RpZmljYXRpb25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5j
eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQt
Y3JlYXRpb24tYXBpLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtY3JlYXRlZC1pbm5lckhUTUwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1vbmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgLSBI
b29rZWQgdXAgQ2FsbGJhY2tEZWxpdmVyeVNjb3BlIHRocm91Z2ggVjhEZWxpdmVyQ3VzdG9tRWxl
bWVudENhbGxiYWNrcyBhdHRyaXV0ZS4KKyAgICAgICAgKEdlbmVyYXRlQ3VzdG9tRWxlbWVudElu
dm9jYXRpb25TY29wZUlmTmVlZGVkKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0N1c3RvbUVsZW1l
bnRIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpp
bnZva2VSZWFkeUNhbGxiYWNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudEhlbHBlcnM6Omludm9rZVJlYWR5Q2FsbGJhY2tzSWZOZWVkZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmg6CisgICAgICAgIChDdXN0b21FbGVtZW50
SGVscGVycyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHA6IEFk
ZGVkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKQorICAgICAgICAoV2ViQ29yZTo6VjhS
ZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKiBkb20vQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnRJbnRlcm5hbCk6CisgICAgICAgICogZG9t
L0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjppc0V4dGVuZGVkKToKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6IEFkZGlu
ZyBlbGVtZW50IHRyYWNraW5nIGFuZCBpbnZvY2F0aW9uIGV4ZWN1dGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbjo6fkN1c3RvbUVsZW1l
bnRJbnZvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdp
c3RyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6fkN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0
cnk6OmRpZEdpdmVUeXBlRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZGVhY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKToKKyAg
ICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Lmg6CisgICAgICAgIChDdXN0b21FbGVt
ZW50SW52b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SW52b2NhdGlv
bjo6ZWxlbWVudCk6CisgICAgICAgIChDYWxsYmFja0RlbGl2ZXJ5U2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDYWxsYmFja0RlbGl2ZXJ5U2NvcGU6OkNh
bGxiYWNrRGVsaXZlcnlTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVn
aXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZTo6fkNhbGxiYWNrRGVsaXZlcnlTY29wZSk6Cisg
ICAgICAgIChDdXN0b21FbGVtZW50UmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzSWZOZWVkZWQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Y3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQ3JlYXRlQ3Vz
dG9tRWxlbWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkRnJvbVBhcnNl
ck9yQnlDbG9uaW5nKTogQWRkZWQgdG8gY2F0Y2ggQGlzIGF0dHJpYnV0ZQorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1l
bnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwOiBBZGRlZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJh
Y2tzKCkKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5n
U2NyaXB0QW5kRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVu
bmVyOjpydW5TY3JpcHQpOgorCiAyMDEzLTAzLTIxICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEJ5cGFzcyBYU1NBdWRpdG9yIGZvciBhc3AubmV0IHNlcnZlcnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk4YTk2OTc0Njg4ODdjYzU2MDJiZTNhMzg2
OWI2Njg3ZjBmYTFlMTMuLjAwNGY1OGRhODYyZWI4MWJkYWI1M2QzZWU0NzcxY2MwOGU1NWU2NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDMtMjEg
IEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1c3RvbSBF
bGVtZW50czogInJlYWR5Q2FsbGJhY2siIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2Fs
bGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEy
NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvV2ViS2l0LmNwcDogQWRkZWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCisKIDIw
MTMtMDMtMjEgIEdhcnJldHQgQ2FzdG8gIDxnY2FzdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gQWRkIHBvc3NpYmxlVXNlck5hbWVzIHRvIFdlYlBhc3N3b3JkRm9ybURhdGEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAppbmRleCBlNDVkMDI4YjVmNGJhNmE2OGY1ODk1YjgwYmQ5ZDcyMjg4NjFjNzI2Li42
NWI2NDJhMTI4YmMyOWMwMDg5NTIyZjA4ZDdlM2M1Y2UyN2JiZTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0y
NDMsMTAgKzI0MywxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgZGVsZXRlQWxsVmFsdWVz
PHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46OlZhbHVlVHlwZT4oY29sbGVjdGlvbi5tX2ltcGwp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFc+Ci0gICAgaW5saW5lIHZvaWQgY29weVRvVmVjdG9yKGNvbnN0IEhhc2hT
ZXQ8VCwgVSwgVj4mIGNvbGxlY3Rpb24sIFcmIHZlY3RvcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDLCB0eXBlbmFtZSBXPgorICAgIGlubGluZSB2b2lkIGNvcHlUb1ZlY3Rvcihjb25zdCBDJiBj
b2xsZWN0aW9uLCBXJiB2ZWN0b3IpCiAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhh
c2hTZXQ8VCwgVSwgVj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVm
IHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgICAKICAgICAgICAg
dmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA0OTE1
Yzk3ZjAxYTJkYzQ3M2E3YTAwOTQ1YzFkMjE2OGRmZDk3NDNhLi4xM2MwYTVmOTFhYzg1N2M2MGVi
NzFiYzk4ZmVjNzg1ZTkxNmRhZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTI1Niw2ICsxMjU2LDI1IEBAIEVORAog
RU5ECiB9CiAKK3N1YiBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRl
ZAoreworICAgIG15ICRvdXQgPSBzaGlmdDsKKyAgICBteSAkZXh0ID0gc2hpZnQ7CisKKyAgICBp
ZiAoJGV4dC0+eyJWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzIn0pIHsKKyAgICAgICAg
aWYgKCRleHQtPnsiUmVmbGVjdCJ9KSB7CisgICAgICAgICAgICBkaWUgIklETCBlcnJvcjogUmVm
bGVjdCBhbmQgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrcyBjYW5ub3QgY29leGlzdCB5
ZXQiOworICAgICAgICB9CisKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkN1c3RvbUVsZW1l
bnRSZWdpc3RyeS5oIiwgIkNVU1RPTV9FTEVNRU5UUyIpOworICAgICAgICBwdXNoKEAkb3V0LCA8
PEVORCk7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZSBkZWxpdmVyeVNjb3BlOworI2VuZGlmCitFTkQK
KyAgICB9Cit9CisKIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogewogICAg
IG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKQEAgLTE0MDQsNiArMTQyMyw4IEBAIEVORAogICAgICAg
ICAkcmVzdWx0ID0gIldURjo6Z2V0UHRyKCIgLiAkcmVzdWx0IC4gIikiOwogICAgIH0KIAorICAg
IEdlbmVyYXRlQ3VzdG9tRWxlbWVudEludm9jYXRpb25TY29wZUlmTmVlZGVkKFxAaW1wbENvbnRl
bnRJbnRlcm5hbHMsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsK
KwogICAgIG15ICR1c2VFeGNlcHRpb25zID0gMSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2Vw
dGlvbnN9OwogCiAgICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CkBAIC0xNzA0LDYgKzE3MjUsOCBA
QCBFTkQKIEVORAogICAgIH0KIAorICAgIEdlbmVyYXRlQ3VzdG9tRWxlbWVudEludm9jYXRpb25T
Y29wZUlmTmVlZGVkKFxAaW1wbENvbnRlbnRJbnRlcm5hbHMsICRmdW5jRXh0KTsKKwogICAgICMg
Q2hlY2sgZG9tYWluIHNlY3VyaXR5IGlmIG5lZWRlZAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9ICYmICEkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAg
ICMgV2UgaGF2ZSBub3QgZmluZCByZWFsIHVzZSBjYXNlcyB5ZXQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCA2NjkyOGU3OTIx
MzcxOWVhOTcwYzYzMmNkY2VhMzY1ZmE1YzYwNGUzLi41OWM5YjA1ZjIxODJiNzUxYjJkZmMwMDU5
NzgwYWU4MWQwZDgyYjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTEzMywzICsxMzMsNCBAQCBWOFJlYWRPbmx5CiBWOFNr
aXBWVGFibGVWYWxpZGF0aW9uCiBWOFVuZm9yZ2VhYmxlCiBWOFdyYXBBc0Z1bmN0aW9uCitWOERl
bGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAKaW5kZXggMmNkNWNhNDAxZTdhNGMzNzM2
OTYxOTI5ZTBmODExOGEyMDEzNThlMy4uNjE4Mzg5ZmQzN2MzOTcxYWEzMjUwYjRjOWEzZGEyNjUx
ZTUwYjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxl
bWVudEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVs
ZW1lbnRIZWxwZXJzLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRIZWxwZXJzLmgiCiAKKyNpbmNsdWRlICJDdXN0b21FbGVt
ZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FbGVtZW50Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJWOEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKICNpbmNsdWRlICJW
OEhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCkBAIC0xMzgsNiArMTQwLDQ0IEBAIGNvbnN0IFF1YWxp
ZmllZE5hbWUqIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kTG9jYWxOYW1lKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4KICAgICByZXR1cm4gZmluZEhUTUxUYWdOYW1lT2ZWOFR5cGUodHlwZSk7CiB9
CiAKK3ZvaWQgQ3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZVJlYWR5Q2FsbGJhY2tJZk5lZWRl
ZChFbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQorewor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyVmFsdWUgPSB0b1Y4KGVsZW1lbnQsIGNv
bnRleHQtPkdsb2JhbCgpLCBjb250ZXh0LT5HZXRJc29sYXRlKCkpOworICAgIGlmICh3cmFwcGVy
VmFsdWUuSXNFbXB0eSgpIHx8ICF3cmFwcGVyVmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXJWYWx1ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHByb3RvdHlwZVZhbHVlID0gd3JhcHBlci0+R2V0UHJvdG90eXBlKCk7CisgICAgaWYgKHByb3Rv
dHlwZVZhbHVlLklzRW1wdHkoKSB8fCAhcHJvdG90eXBlVmFsdWUtPklzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFsdWUpOworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBmdW5jdGlvblZhbHVlID0gcHJvdG90eXBlLT5HZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJyZWFkeUNhbGxiYWNrIikpOworICAgIGlmIChmdW5jdGlvblZhbHVlLklzRW1wdHko
KSB8fCAhZnVuY3Rpb25WYWx1ZS0+SXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj46OkNhc3QoZnVuY3Rpb25WYWx1ZSk7CisgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNh
dGNoZXI7CisgICAgZXhjZXB0aW9uQ2F0Y2hlci5TZXRWZXJib3NlKHRydWUpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7IH07CisgICAgU2NyaXB0Q29udHJvbGxlcjo6Y2Fs
bEZ1bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbihlbGVtZW50LT5kb2N1bWVudCgpLCBmdW5jdGlv
biwgd3JhcHBlciwgMCwgYXJncyk7Cit9CisKKwordm9pZCBDdXN0b21FbGVtZW50SGVscGVyczo6
aW52b2tlUmVhZHlDYWxsYmFja3NJZk5lZWRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVj
dXRpb25Db250ZXh0LCBjb25zdCBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRpb24+JiBpbnZv
Y2F0aW9ucykKK3sKKyAgICBBU1NFUlQoIWludm9jYXRpb25zLmlzRW1wdHkoKSk7CisKKyAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHRvVjhDb250ZXh0KGV4ZWN1dGlvbkNvbnRleHQsIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGludm9jYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVChleGVj
dXRpb25Db250ZXh0ID09IGludm9jYXRpb25zW2ldLmVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7Cisg
ICAgICAgIGludm9rZVJlYWR5Q2FsbGJhY2tJZk5lZWRlZChpbnZvY2F0aW9uc1tpXS5lbGVtZW50
KCksIGNvbnRleHQpOworICAgIH0KK30KKwogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCmluZGV4IGYyOTBmNTQ4ODBkMDk3NDI1NzJh
OWRkNGY4NDI5NzBlYzBiYjUxMDguLjg2MTE4MTllODc1ZjYyZmQ3NGZmM2M5ODk1MmFjODgxMWM2
ZTc0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1l
bnRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVu
dEhlbHBlcnMuaApAQCAtMzMsMTIgKzMzLDE1IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCiBj
bGFzcyBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I7CitjbGFzcyBDdXN0b21FbGVtZW50SW52b2Nh
dGlvbjsKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgU2NyaXB0
U3RhdGU7CiAKQEAgLTUyLDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Zl
YXR1cmVBbGxvd2VkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICAgICBzdGF0aWMgV3JhcHBl
clR5cGVJbmZvKiBmaW5kV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKTsK
ICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNoYWluKTsKKworICAgIHN0YXRpYyB2b2lkIGludm9rZVJlYWR5Q2FsbGJh
Y2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFZlY3RvcjxDdXN0b21F
bGVtZW50SW52b2NhdGlvbj4mKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBpbnZva2VS
ZWFkeUNhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsK
IH07CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcAppbmRleCBiZDkyNDgxNTI5MmQ5
ZjBhYmZmMmRkNGJiMDY3NzYwMDFhMWI3NjdjLi4yYzJmOTU1MmY2YWNjM2ZlMmY1NjYwYjgxMzhj
M2UxYThhZDhmZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJl
Y3Vyc2lvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vy
c2lvblNjb3BlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNs
dWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAKQEAgLTQ2LDggKzQ3LDEyIEBAIHZvaWQgVjhSZWN1
cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KCkKICAgICBJREJQZW5kaW5nVHJhbnNh
Y3Rpb25Nb25pdG9yOjpkZWFjdGl2YXRlTmV3VHJhbnNhY3Rpb25zKCk7CiAjZW5kaWYKIAotICAg
IGlmIChtX2lzRG9jdW1lbnRDb250ZXh0KQorICAgIGlmIChtX2lzRG9jdW1lbnRDb250ZXh0KSB7
CiAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKKyNpZiBF
TkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRl
bGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyNlbmRpZgorICAgIH0KIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yLmNwcAppbmRleCAzNDMxOTcxOGU3YWM0OWYwZjU4YTdmZmM5M2ZlYWQ5NTZjNWUw
M2JjLi44YjMyZGFmNTUxZDhmNTQzOGVhNGVmMDFjMzE4ZGQyY2U4YjkyNTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtNjMsNyAr
NjMsMTUgQEAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjp+Q3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50Q29uc3RydWN0
b3I6OmNyZWF0ZUVsZW1lbnQoKSBjb25zdAorUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnQoKQoreworICAgIFJlZlB0cjxFbGVtZW50PiBj
cmVhdGVkID0gY3JlYXRlRWxlbWVudEludGVybmFsKCk7CisgICAgaWYgKGNyZWF0ZWQpCisgICAg
ICAgIGRvY3VtZW50KCktPmRpZENyZWF0ZUN1c3RvbUVsZW1lbnQoY3JlYXRlZC5nZXQoKSwgdGhp
cyk7CisgICAgcmV0dXJuIGNyZWF0ZWQucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPEVsZW1l
bnQ+IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudEludGVybmFsKCkKIHsK
ICAgICBpZiAoIWRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDBlZWQ3OWFlNTgzOWIzYzhk
M2Q0NmMyZTExYzI4OGUyZmZhODg4YjQuLjlhY2NjZDdkN2U1ZGI4YjE4MmUyMDI2NjJlMDhkYzli
NDNiZGQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yLmgKQEAgLTU5LDEyICs1OSwxNSBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOyB9CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGVOYW1lOyB9CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbE5hbWU7IH0KKyAgICBib29sIGlzRXh0ZW5kZWQoKSBj
b25zdCB7IHJldHVybiBtX3R5cGVOYW1lICE9IG1fbG9jYWxOYW1lOyB9CiAKLSAgICBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnQoKTsKIAogcHJpdmF0ZToKICAgICBDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IoRG9jdW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlTmFtZSwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbG9jYWxOYW1lKTsKIAorICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRl
RWxlbWVudEludGVybmFsKCk7CisKICAgICBRdWFsaWZpZWROYW1lIG1fdHlwZU5hbWU7CiAgICAg
UXVhbGlmaWVkTmFtZSBtX2xvY2FsTmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IDZjMjhmMjgxOTIzYjhiZmY3MzRkMmMyNzY4MDkz
ZTkxZTIzMzE4ZjQuLjY3OTUzY2M4ZDVlYTUyMTFiMTBmMGIyODBkYzQ4YTNjZWRiMzMwN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC00Myw2
ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKQEAgLTU0LDYgKzU1LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ3VzdG9t
RWxlbWVudEludm9jYXRpb246OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudChlbGVtZW50KQoreworfQorCitDdXN0b21F
bGVtZW50SW52b2NhdGlvbjo6fkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKCkKK3sKK30KKwogQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OjpDdXN0b21FbGVtZW50UmVnaXN0cnkoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoZG9jdW1lbnQpCiB7CkBAIC02
MSw2ICs3MSw3IEBAIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
KERvY3VtZW50KiBkb2N1bWVudCkKIAogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojp+Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5KCkKIHsKKyAgICBkZWFjdGl2YXRlKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBuYW1lSW5jbHVkZXNIeXBoZW4oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTkz
LDExICsyMDQsNjMgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6
OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG8KICAgICByZXR1cm4gMDsKIH0K
IAordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRpZEdpdmVUeXBlRXh0ZW5zaW9uKEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29u
c3RydWN0b3IgPSBmaW5kRm9yKGVsZW1lbnQpOworICAgIGlmICghY29uc3RydWN0b3IgfHwgIWNv
bnN0cnVjdG9yLT5pc0V4dGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhY3RpdmF0ZShD
dXN0b21FbGVtZW50SW52b2NhdGlvbihlbGVtZW50KSk7Cit9CisKK3ZvaWQgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpkaWRDcmVhdGVFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgYWN0
aXZhdGUoQ3VzdG9tRWxlbWVudEludm9jYXRpb24oZWxlbWVudCkpOworfQorCit2b2lkIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6YWN0aXZhdGUoY29uc3QgQ3VzdG9tRWxlbWVudEludm9jYXRpb24m
IGludm9jYXRpb24pCit7CisgICAgYm9vbCB3YXNJbmFjdGl2ZSA9IG1faW52b2NhdGlvbnMuaXNF
bXB0eSgpOworICAgIG1faW52b2NhdGlvbnMuYXBwZW5kKGludm9jYXRpb24pOworICAgIGlmICh3
YXNJbmFjdGl2ZSkKKyAgICAgICAgYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5hZGQo
dGhpcyk7Cit9CisKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWFjdGl2YXRlKCkKK3sK
KyAgICBBU1NFUlQobV9pbnZvY2F0aW9ucy5pc0VtcHR5KCkpOworICAgIGlmIChhY3RpdmVDdXN0
b21FbGVtZW50UmVnaXN0cmllcygpLmNvbnRhaW5zKHRoaXMpKQorICAgICAgICBhY3RpdmVDdXN0
b21FbGVtZW50UmVnaXN0cmllcygpLnJlbW92ZSh0aGlzKTsKK30KKwogaW5saW5lIERvY3VtZW50
KiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4g
dG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQogCit2b2lkIEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcygpCit7CisgICAgQVNTRVJU
KCFtX2ludm9jYXRpb25zLmlzRW1wdHkoKSk7CisKKyAgICB3aGlsZSAoIW1faW52b2NhdGlvbnMu
aXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2NhdGlvbj4gaW52
b2NhdGlvbnM7CisgICAgICAgIG1faW52b2NhdGlvbnMuc3dhcChpbnZvY2F0aW9ucyk7CisgICAg
ICAgIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbnZva2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW52b2NhdGlvbnMpOworICAgIH0KKworICAgIGRlYWN0
aXZhdGUoKTsKK30KKwordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZl
Y3ljbGVDYWxsYmFja3MoKQoreworICAgIHdoaWxlICghYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lz
dHJpZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDdXN0b21FbGVtZW50
UmVnaXN0cnk+ID4gcmVnaXN0cmllczsKKyAgICAgICAgY29weVRvVmVjdG9yKGFjdGl2ZUN1c3Rv
bUVsZW1lbnRSZWdpc3RyaWVzKCksIHJlZ2lzdHJpZXMpOworICAgICAgICBhY3RpdmVDdXN0b21F
bGVtZW50UmVnaXN0cmllcygpLmNsZWFyKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVnaXN0cmllcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHJlZ2lzdHJpZXNbaV0tPmRl
bGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyAgICB9Cit9CisKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgKaW5kZXggMTAyYWEzZGUzOGMyMTE2OGUwYzdiNzBjNjUyOGEyYTFhOTFkZTRlNC4u
ODI4OWIxOWQyNWZlNWM1YjI4ZGRhYzY2MGE0MDY5NjhmOGJmNTNiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtNDAsOSArNDAsMTEgQEAKICNpbmNs
dWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC01Myw5ICs1NSwyNiBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKK2NsYXNzIEN1c3RvbUVs
ZW1lbnRJbnZvY2F0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDdXN0b21FbGVtZW50SW52
b2NhdGlvbihQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKKyAgICB+Q3VzdG9tRWxlbWVudEludm9jYXRp
b24oKTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQu
Z2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OworfTsK
KwogY2xhc3MgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9t
RWxlbWVudFJlZ2lzdHJ5PiAsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgY2xhc3MgQ2FsbGJhY2tEZWxpdmVyeVNjb3Bl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhbGxiYWNrRGVsaXZlcnlTY29wZSgpIHsgfQorICAg
ICAgICB+Q2FsbGJhY2tEZWxpdmVyeVNjb3BlKCkgeyBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRl
bGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3NJZk5lZWRlZCgpOyB9CisgICAgfTsKKwogICAgIGV4
cGxpY2l0IEN1c3RvbUVsZW1lbnRSZWdpc3RyeShEb2N1bWVudCopOwogICAgIH5DdXN0b21FbGVt
ZW50UmVnaXN0cnkoKTsKIApAQCAtNjYsMTYgKzg1LDQzIEBAIHB1YmxpYzoKIAogICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCi1wcml2YXRlOgotICAgIHN0YXRpYyBib29sIGlzVmFs
aWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgZGlkR2l2ZVR5cGVFeHRlbnNp
b24oRWxlbWVudCopOworICAgIHZvaWQgZGlkQ3JlYXRlRWxlbWVudChFbGVtZW50Kik7CiAKKyAg
ICBzdGF0aWMgdm9pZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisgICAgc3RhdGlj
IHZvaWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKCk7CisKK3ByaXZhdGU6
CiAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxRdWFsaWZpZWROYW1lLCBRdWFsaWZpZWRO
YW1lPiwgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gPiBDb25zdHJ1Y3Rvck1hcDsK
ICAgICB0eXBlZGVmIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gTmFtZVNldDsKKyAgICB0eXBlZGVm
IExpc3RIYXNoU2V0PEN1c3RvbUVsZW1lbnRSZWdpc3RyeSo+IEluc3RhbmNlU2V0OworCisgICAg
c3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGlj
IEluc3RhbmNlU2V0JiBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpOworCisgICAgdm9p
ZCBhY3RpdmF0ZShjb25zdCBDdXN0b21FbGVtZW50SW52b2NhdGlvbiYpOworICAgIHZvaWQgZGVh
Y3RpdmF0ZSgpOworICAgIHZvaWQgZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcygpOwogCiAgICAg
Q29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CiAgICAgTmFtZVNldCBtX25hbWVzOworICAg
IFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2NhdGlvbj4gbV9pbnZvY2F0aW9uczsKIH07CiAKK2lu
bGluZSB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxi
YWNrc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIWFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVz
KCkuaXNFbXB0eSgpKQorICAgICAgICBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7Cisg
ICAgQVNTRVJUKGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuaXNFbXB0eSgpKTsKK30K
KworaW5saW5lIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6SW5zdGFuY2VTZXQmIEN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoSW5zdGFuY2VTZXQsIGFjdGl2ZUluc3RhbmNlcywgKCkpOworICAgIHJl
dHVybiBhY3RpdmVJbnN0YW5jZXM7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGQ0OGM5MTcwMzA2MjBkMThmNzA2N2YwMmYxZTU0YjA3YWE4Y2RkZGQuLjY1Yjk0ZTg0ZmIz
NWNkMmE3NTRmNTY2MDcyZDExNjExOWNiMmZjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODU0LDcgKzg1NCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0CiAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlZDsKICAgICB9CiAKLSAgICByZXR1cm4gc2V0VHlwZUV4dGVuc2lvbihjcmVh
dGVFbGVtZW50KGxvY2FsTmFtZSwgZWMpLCB0eXBlRXh0ZW5zaW9uKTsgLy8gIEZJWE1FOiB0YWtl
IGNhcmUgb2YgQGlzCisgICAgcmV0dXJuIHNldFR5cGVFeHRlbnNpb24oY3JlYXRlRWxlbWVudChs
b2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVF
eHRlbnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtODkzLDYgKzg5MywxMyBAQCBQYXNzUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVyRWxlbWVudChX
ZWJDb3JlOjpTY3JpcHRTdAogICAgICAgICBtX3JlZ2lzdHJ5ID0gYWRvcHRSZWYobmV3IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSh0aGlzKSk7CiAgICAgcmV0dXJuIG1fcmVnaXN0cnktPnJlZ2lzdGVy
RWxlbWVudChzdGF0ZSwgbmFtZSwgb3B0aW9ucywgZWMpOwogfQorCit2b2lkIERvY3VtZW50Ojpk
aWRDcmVhdGVDdXN0b21FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgLy8gbV9yZWdpc3RyeSBpcyBjbGVhcmVkIERv
Y3VtZW50OjpkaXNwb3NlKCkgYW5kIGNhbiBiZSBudWxsIGhlcmUuCisgICAgaWYgKG1fcmVnaXN0
cnkpCisgICAgICAgIG1fcmVnaXN0cnktPmRpZENyZWF0ZUVsZW1lbnQoZWxlbWVudCk7Cit9CiAj
ZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDMwMmRlYjFhYzMwYzdkNGVjYzhlMzQzYmM5Yjg0ZTRhYzQ2YTc1M2YuLjFkNWFh
NDY0MjYwMzI3OWIwNTAzZmMzYmUxN2U1YTZlM2FmMDI4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xMTY4LDYgKzExNjgsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0
U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlv
bnMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJlZ2lzdHJ5
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQorICAgIHZvaWQgZGlkQ3JlYXRl
Q3VzdG9tRWxlbWVudChFbGVtZW50KiwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKik7CiAjZW5k
aWYKIAogICAgIHZvaWQgYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFu
ZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2F0UXVhZD4mLCBSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCmluZGV4IDQ5YmY3N2U2ZTljYzM4OTBmNTNmZTk4YjNkMThkMTFmYTcwYmM5
YzEuLjhlOWM4NDU3ODcyMzc1NWY3NTY3YjI1NGYxN2ZkNWE2OWMyZGZjNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbApAQCAtMjksOCArMjksOCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01JbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RWxlbWVudCBkb2N1bWVudEVsZW1lbnQ7CiAKLSAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldv
cmxkQmluZGluZ3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdOYW1lKQotICAg
ICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5ld09iamVjdCwgVjhQZXJX
b3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIEVsZW1l
bnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdOYW1lKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gRG9jdW1lbnRGcmFnbWVudCAgIGNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKTsKICAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3Nd
IFRleHQgY3JlYXRlVGV4dE5vZGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9N
U3RyaW5nIGRhdGEpOwogICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5nc10g
Q29tbWVudCBjcmVhdGVDb21tZW50KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERP
TVN0cmluZyBkYXRhKTsKQEAgLTQ3LDEyICs0NywxMyBAQAogCiAgICAgLy8gSW50cm9kdWNlZCBp
biBET00gTGV2ZWwgMjoKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJldHVy
bk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlIGltcG9ydE5vZGUoaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBpbXBvcnRlZE5vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBk
ZWVwKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgW09iakNMZWdhY3lVbm5h
bWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3NdIEVsZW1l
bnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICBbT2JqQ0xlZ2Fj
eVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5ncywg
VjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBOb2RlIGltcG9ydE5vZGUoaW4g
W09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBpbXBvcnRlZE5vZGUsCisgICAgICAg
ICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBkZWVwKSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0
LCBWOFBlcldvcmxkQmluZGluZ3MsIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdCisg
ICAgRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdP
YmplY3QsIFY4UGVyV29ybGRCaW5kaW5nc10gQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmlu
ZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CkBAIC0xMzEsNyArMTMyLDcgQEAKICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKICAgICAvLyBDb21tb24gZXh0ZW5zaW9ucwotCisgICAgW1Y4RGVsaXZlckN1c3Rv
bUVsZW1lbnRDYWxsYmFja3NdCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGV4ZWNDb21tYW5kKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBjb21tYW5kLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZp
bmVkXSBib29sZWFuIHVzZXJJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxT
dHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdmFsdWUpOwpAQCAt
MzYyLDExICszNjMsMTMgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1VTVE9NX0VM
RU1FTlRTKSAmJiBFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTCi0gICAgW1Y4RW5hYmxlZEF0UnVudGlt
ZT1jdXN0b21ET01FbGVtZW50cywgQ29uZGl0aW9uYWw9Q1VTVE9NX0VMRU1FTlRTLCBJbXBsZW1l
bnRlZEFzPXJlZ2lzdGVyRWxlbWVudCwgQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFY4UGVyV29ybGRC
aW5kaW5nc10KKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPWN1c3RvbURPTUVsZW1lbnRzLCBDb25k
aXRpb25hbD1DVVNUT01fRUxFTUVOVFMsIEltcGxlbWVudGVkQXM9cmVnaXN0ZXJFbGVtZW50LCBD
YWxsV2l0aD1TY3JpcHRTdGF0ZSwgVjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21F
bGVtZW50Q2FsbGJhY2tzXQogICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciB3ZWJraXRSZWdp
c3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMp
IHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRC
aW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KGluIERPTVN0cmluZyBsb2NhbE5hbWUsIGlu
IFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikgcmFpc2Vz
IChET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5n
c10gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyBuYW1lc3BhY2VVUkksIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1O
dWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikgcmFpc2VzIChET01FeGNlcHRpb24p
OworICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5ncywgVjhEZWxpdmVyQ3Vz
dG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gRE9NU3Ry
aW5nIGxvY2FsTmFtZSwgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBl
RXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5ld09iamVjdCwg
VjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAg
IEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01T
dHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5n
IHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAjaWYgZGVm
aW5lZChMQU5HVUFHRV9DUFApICYmIExBTkdVQUdFX0NQUApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGFhN2Y1MmQxMjBjOGQ2OGZkMmMzNGU4YjMzOWNlNjViZjYwMmZjNGEuLjMyNTRlYzU0N2Ux
ZTg2ZmI4NDRjNGVkYWUwZDhmN2QwZTEyZmRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDbGFzc0xpc3QuaCIKICNpbmNsdWRlICJDbGllbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVt
ZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEYXRh
c2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTg4Nyw2ICs4ODgs
MTcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwogfQogCitpbmxp
bmUgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkRnJvbVBhcnNlck9yQnlDbG9uaW5nKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7
CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBpZiAobmFtZSA9PSBpc0F0dHIpIHsK
KyAgICAgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSogcmVnaXN0cnkgPSBkb2N1bWVudCgp
LT5yZWdpc3RyeSgpKQorICAgICAgICAgICAgcmVnaXN0cnktPmRpZEdpdmVUeXBlRXh0ZW5zaW9u
KHRoaXMpOworICAgIH0KKyNlbmRpZgorICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgbmV3VmFs
dWUpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxp
bmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CkBAIC0xMDczLDcgKzEwODUsNyBAQCB2b2lkIEVs
ZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJp
YnV0ZVZlY3RvcikKIAogICAgIC8vIFVzZSBhdHRyaWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2Vs
ZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50
RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlVmVjdG9yLnNpemUo
KTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZVZlY3RvcltpXS5uYW1l
KCksIGF0dHJpYnV0ZVZlY3RvcltpXS52YWx1ZSgpKTsKKyAgICAgICAgYXR0cmlidXRlQ2hhbmdl
ZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhhdHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgpLCBhdHRyaWJ1
dGVWZWN0b3JbaV0udmFsdWUoKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygp
IGNvbnN0CkBAIC0yODU3LDcgKzI4NjksNyBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRl
c0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fZWxlbWVudERhdGEtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgY29uc3Qg
QXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBjb25zdF9jYXN0PGNvbnN0IEVsZW1lbnREYXRhKj4obV9l
bGVtZW50RGF0YS5nZXQoKSktPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGF0dHJpYnV0ZUNo
YW5nZWQoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CisgICAgICAgIGF0
dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNsb25pbmcoYXR0cmlidXRlLT5uYW1lKCksIGF0
dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBiYWE5
ZDQyNTM0MzkwMzYzNDUyZmI1OTRkNGNlYWQwOGY1NTE1MmYzLi5kMDdjOTUxNTNkODUyNjZmZTI2
MmE3NDE5YzVjYzgyNzgwMDc3NTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTY3Miw2ICs2NzIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4
LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKICAgICB2b2lkIGFkZEF0dHJpYnV0ZUludGVybmFs
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBTeW5jaHJv
bml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlSW50ZXJu
YWwoc2l6ZV90IGluZGV4LCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOworICAgIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVh
bCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCBmZTk3NTY3ZjRhOTAwNzkzNjE0YTQyOTMxY2ViNzlk
MWUzOGNlN2M3Li42ZjZkNjhkY2M4MmRiYzMxY2VkY2I5MGZjODVhN2NhZjUyMDM1ZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaWRsCkBAIC03Niw3ICs3Niw4IEBACiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhhc0NoaWxkTm9kZXMoKTsKLSAgICBbVjhQ
ZXJXb3JsZEJpbmRpbmdzXSBOb2RlICAgICAgICAgICAgICAgY2xvbmVOb2RlKGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCk7CisgICAgW1Y4UGVyV29ybGRCaW5k
aW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBOb2RlICAgICAgICAg
ICAgICAgY2xvbmVOb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4g
ZGVlcCk7CiAgICAgdm9pZCAgICAgICAgICAgICAgIG5vcm1hbGl6ZSgpOwogCiAgICAgLy8gSW50
cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAppbmRleCBh
MzljYTkyYTUzYjk4NmNmODhmMTE5MzFjMTE5YTExMDI4ZjVjOGFkLi41YjM1ZTlmZWRlZDI5ODM0
ZjlmNmVkNzc5OTkyNjNlZjQ4YWQ0NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCkBA
IC0zMiw4ICszMiw4IEBACiAgICAgYXR0cmlidXRlIGJvb2xlYW4gYXBwbHlBdXRob3JTdHlsZXM7
CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVzZXRTdHlsZUluaGVyaXRhbmNlOwogCi0gICAgW1Ry
ZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJIVE1MCi0gICAg
ICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlubmVySFRNTCBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZp
bmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICBOb2Rl
IGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGRlZXAp
IHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRl
eCBiYzYzOWI4ZTQxYmIwNDRhOTE5MTBlODZiNGJkMDQ5ZmI0MTFiZDQ4Li44Y2EzOTA4NjI5Yjhm
MzFkOTk2ZTg0YmRkODJhZTEwNTgxNjM5ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmlkbApAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFjY2Vzc0tleTsKIAogICAgIC8vIEV4dGVuc2lvbnMKLSAgICAgICAgICAgICBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUwKKyAg
ICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVu
dENhbGxiYWNrc10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUwKICAgICAgICAgICAgICAg
ICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICAgICAgIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dAogICAgICAgICAgICAg
ICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDQ2ODlkMTNlNDJhMzVlZWEyMTRh
MDI4N2FhN2I3ZGUyODlkNTEwM2EuLjUzZjNkMjlmZmIxMDVmZWE0M2ZiOTUxYWRmNWJjYTljNWZi
MjA3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTI4LDggKzEyOSwxMiBA
QCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hF
dmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAgIGlmIChwZW5kaW5nU2NyaXB0LmNhY2hlZFNj
cmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BX
YXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7CiAKLSAgICBpZiAoIWlzRXhlY3V0aW5nU2Ny
aXB0KCkpCisgICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKSB7CisjaWYgRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKKyAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlm
ZWN5Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKICAgICAgICAgTXV0YXRpb25PYnNlcnZlcjo6ZGVs
aXZlckFsbE11dGF0aW9ucygpOworICAgIH0KIAogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNj
cmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBwZW5kaW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50QW5k
Q2xlYXIoKTsKQEAgLTI5Miw4ICsyOTcsMTIgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5T
Y3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXIKICAg
ICAgICAgLy8gZXZlcnkgc2NyaXB0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBub3QgcmVhZHkgdG8g
ZXhlY3V0ZSB5ZXQuIFRoZXJlJ3MKICAgICAgICAgLy8gdW5mb3J0dWFudGVseSBubyBvYnZpb3Vz
IHdheSB0byB0ZWxsIGlmIHByZXBhcmVTY3JpcHQgaXMgZ29pbmcgdG8KICAgICAgICAgLy8gZXhl
Y3V0ZSB0aGUgc2NyaXB0IGZyb20gb3V0IGhlcmUuCi0gICAgICAgIGlmICghaXNFeGVjdXRpbmdT
Y3JpcHQoKSkKKyAgICAgICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKSB7CisjaWYgRU5BQkxF
KENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVs
aXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpOworI2VuZGlmCiAgICAgICAgICAgICBNdXRhdGlv
bk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CisgICAgICAgIH0KIAogICAgICAgICBJ
bnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3QtPmlucHV0U3Ry
ZWFtKCkpOwogICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNy
ZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
S2l0LmNwcAppbmRleCBlMjZmYjhlZjlkNWViNjYyZDY2NDgwMjc4NTdkYTdkYjE3YjA0YmQzLi4w
ZGZiMDg2Yjc4OTZjZGJlOTZiY2Y2OWI2OWFjZTA5YmZmOGY1MWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIkV2ZW50VHJhY2VyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdFN1cHBvcnQuaCIKQEAgLTgwLDYgKzgxLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUHJvY2Vzc1Rhc2soKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUHJvY2Vzc1Rhc2soKQogICAgIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1F
TlRTKQorICAgICAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxM
aWZlY3ljbGVDYWxsYmFja3MoKTsKKyNlbmRpZgogICAgICAgICBXZWJDb3JlOjpNdXRhdGlvbk9i
c2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZTU4NGVh
MjBiZTg4NWY2OTUzMzc1OGM1MjdjZTg0MzdiMjU4OWI3Li44MzdiMWVmZmJlYjdkYmQ4ZWRhY2M0
ZWRiZjIwM2Y1ODIxMWQzMDhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDMtMjEgIEhh
amltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1c3RvbSBFbGVt
ZW50czogInJlYWR5Q2FsbGJhY2siIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNy
ZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWN1cnNpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVlbnRyYW5jeS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
Y3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFwaS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1j
cmVhdGlvbi1hcGkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVj
eWNsZS1jcmVhdGVkLWlubmVySFRNTC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1vbmx5LWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
Y3JlYXRlZC1wYXJzZXItb25seS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRl
ZC1wYXN0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9s
aWZlY3ljbGUtY3JlYXRlZC1wYXN0ZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0yMSAgUGV0ZXIg
S2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBUZXN0
IGV4cGVjdGF0aW9ucyB1cGRhdGVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVh
dGVFbGVtZW50LXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4MjNhODMyYTdh
MDgzMDI4YWY3ODc2ODYzOTJkZGRhZTUyNjNmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vy
c2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
OTogVW5jYXVnaHQgUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQu
CitQQVNTIHVubGVzcyBjcmFzaAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9s
aWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0ZUVsZW1lbnQtcmVjdXJz
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkMzllNzQxOGY4MjZjYzJkNjA3MDNlYWNlZmEwOTkzMjA1
Yzk2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sCkBAIC0wLDAgKzEsMTcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0PgorZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVu
dC53ZWJraXRSZWdpc3RlcjsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsgcHJvdG90eXBl
OiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7
IHZhbHVlOiBmdW5jdGlvbiAoKSB7IHRoaXMuaW5uZXJIVE1MID0gIjx4LWZvbz5IZWxsbzwveC1m
b28+IjsgfSB9IH0pIH0pOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iKTsKK2RlYnVnKCJQ
QVNTIHVubGVzcyBjcmFzaCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3Jl
YXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3ktZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE5NWQ3Yzg2YjA4YjFjYWI4MTc1MWY2YWU1ZWY2NjVhYTYzNWI2
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sg
b2YgYSBwYXJzZXItbWFkZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBi
bG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmNhbGxi
YWNrc0NhbGxlZCBpcyAwCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgMQorUEFTUyB3
aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9j
dXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtY3JlYXRlRWxlbWVu
dC1yZWVudHJhbmN5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlYTBmNDMzOGE1OGRhZjYxMDJhMDFiYzNh
MWM1YWMxNjMyNmIyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbApAQCAt
MCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIGNhbGxi
YWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3Jp
cHQgYmxvY2suIikKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9j
dW1lbnQud2Via2l0UmVnaXN0ZXI7CisKK3dpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSAwOworCitm
dW5jdGlvbiBmb29DcmVhdGVkRnVuY3Rpb24oKSB7CisgIHNob3VsZEJlKCJ3aW5kb3cuY2FsbGJh
Y2tzQ2FsbGVkIiwgIjAiKTsKKyAgdGhpcy5pbm5lckhUTUwgPSAiPHgtYmFyPkhlbGxvPC94LWJh
cj4iOworICBzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICIxIik7CisgIHdpbmRv
dy5jYWxsYmFja3NDYWxsZWQrKzsKK30KKworZnVuY3Rpb24gYmFyQ3JlYXRlZEZ1bmN0aW9uKCkg
eworICB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkKys7Cit9CisKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4
LWZvbyIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwg
eyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBmb29DcmVhdGVkRnVuY3Rpb24gfSB9KSB9KTsKK2Rv
Y3VtZW50LnJlZ2lzdGVyKCJ4LWJhciIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxF
bGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBiYXJDcmVhdGVkRnVu
Y3Rpb24gfSB9KSB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iKTsKK3Nob3VsZEJlKCJ3aW5kb3cuY2FsbGJhY2tz
Q2FsbGVkIiwgIjIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9u
LWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xl
LWNyZWF0ZWQtY3JlYXRpb24tYXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzZjNzhlNzNi
ZjhjMTRiNGZhNTRiNGNlZGYwNmQ0OGQzN2I4MTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFwaS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI4OiBbb2Jq
ZWN0IEhUTUxEaXZFbGVtZW50XQorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5Y2xl
IGNhbGxiYWNrcyBvZiBBUEktb3JpZ2luYXRlZCBlbGVtZW50cyBhcmUgdmlzaWJsZSBpbiBmb2xs
b3dpbmcgc2NyaXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycpLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVl
CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpLmNhbGxiYWNrc0Nh
bGxlZCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCcsICd4LWZvbycpLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNT
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcs
ICdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBmb28uY2xvbmVO
b2RlKCkuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9vLmNsb25lTm9kZSh0cnVlKS5m
aXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGJhci5jbG9uZU5vZGUoKS5j
YWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBiYXIuY2xvbmVOb2RlKHRydWUpLmZpcnN0Q2hp
bGQuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9yZWlnbkZvby5jYWxsYmFja3NDYWxs
ZWQgaXMgdW5kZWZpbmVkLgorUEFTUyBmb3JlaWduRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2Fs
bGVkIGlzIHVuZGVmaW5lZC4KK1BBU1MgaW1wb3J0ZWRGb28uY2FsbGJhY2tzQ2FsbGVkIGlzIHRy
dWUKK1BBU1MgaW1wb3J0ZWRGb28uZmlyc3RDaGlsZC5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBpbXBvcnRlZEJhci5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBpbXBvcnRlZEJh
ci5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFwaS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWNyZWF0aW9uLWFwaS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE5ZjhhMzJkZmQyMzJiODc4ZDc1YWQyMmY1MjNkZGUwOTkwOGM2YmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xl
LWNyZWF0ZWQtY3JlYXRpb24tYXBpLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgQVBJLW9yaWdpbmF0ZWQgZWxl
bWVudHMgYXJlIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQu
cmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsK
K2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhU
TUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBmdW5jdGlvbigp
IHsgdGhpcy5jYWxsYmFja3NDYWxsZWQgPSB0cnVlOyB9IH0gfSkgfSk7Citkb2N1bWVudC5yZWdp
c3RlcigieC1iYXIiLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5w
cm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHRoaXMuY2Fs
bGJhY2tzQ2FsbGVkID0gdHJ1ZTsgfSB9IH0pIH0pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJob3N0Ij48L2Rpdj4KKwor
PHNjcmlwdD4KKworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycp
LmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQiKTsKKworc2hvdWxkQmVUcnVlKCJkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAneC1m
b28nKS5jYWxsYmFja3NDYWxsZWQiKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2RpdicsICd4LWJhcicpLmNh
bGxiYWNrc0NhbGxlZCIpOworCit2YXIgZm9vID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgneC1m
b28nKTsKK2Zvby5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1i
YXInKSk7CitzaG91bGRCZVRydWUoImZvby5jbG9uZU5vZGUoKS5jYWxsYmFja3NDYWxsZWQiKTsK
K3Nob3VsZEJlVHJ1ZSgiZm9vLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkLmNhbGxiYWNrc0Nh
bGxlZCIpOworY29uc29sZS5sb2coZm9vLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkKTsKKwor
dmFyIGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpOworYmFyLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJykpOworc2hvdWxkQmVUcnVl
KCJiYXIuY2xvbmVOb2RlKCkuY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImJhci5j
bG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZC5jYWxsYmFja3NDYWxsZWQiKTsKKwordmFyIGZvcmVp
Z25Eb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCAoJ2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbCcsIG51bGwpOworCit2YXIgZm9yZWlnbkZvbyA9
IGZvcmVpZ25Eb2MuY3JlYXRlRWxlbWVudCgneC1mb28nKTsKK2ZvcmVpZ25Gb28uYXBwZW5kQ2hp
bGQoZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKSk7CitzaG91bGRCZVVu
ZGVmaW5lZCgiZm9yZWlnbkZvby5jYWxsYmFja3NDYWxsZWQiKTsKK3Nob3VsZEJlVW5kZWZpbmVk
KCJmb3JlaWduRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CitpbXBvcnRlZEZvbyA9
IGRvY3VtZW50LmltcG9ydE5vZGUoZm9yZWlnbkZvbykKK3Nob3VsZEJlVHJ1ZSgiaW1wb3J0ZWRG
b28uY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImltcG9ydGVkRm9vLmZpcnN0Q2hp
bGQuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3ZhciBmb3JlaWduQmFyID0gZm9yZWlnbkRvYy5jcmVh
dGVFbGVtZW50KCdkaXYnLCAneC1iYXInKTsKK2ZvcmVpZ25CYXIuYXBwZW5kQ2hpbGQoZm9yZWln
bkRvYy5jcmVhdGVFbGVtZW50KCd4LWZvbycpKTsKK2ltcG9ydGVkQmFyID0gZG9jdW1lbnQuaW1w
b3J0Tm9kZShmb3JlaWduQmFyKTsKK3Nob3VsZEJlVHJ1ZSgiaW1wb3J0ZWRCYXIuY2FsbGJhY2tz
Q2FsbGVkIik7CitzaG91bGRCZVRydWUoImltcG9ydGVkQmFyLmZpcnN0Q2hpbGQuY2FsbGJhY2tz
Q2FsbGVkIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRNTC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0
ZWQtaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTJjM2Y0MDUyYjI2Y2U0Zjhh
YjYzMDhjOGU0NmFjMzIzY2U2ODEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLWlubmVySFRNTC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIGNhbGxi
YWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3Jp
cHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5j
YWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycsICdESVYnLCAnWC1GT08nXQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1pbm5lckhUTUwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMzVjODQ3OWYzYTk3Y2ZiY2QxMTc4ODkyZmFmNGZkZDIyMzFiOTc0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1jcmVhdGVkLWlubmVySFRNTC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50
IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQucmVnaXN0
ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK3dpbmRv
dy5jYWxsYmFja3NDYWxsZWQgPSBbXTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsgcHJv
dG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxi
YWNrOiB7IHZhbHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNhbGxiYWNrc0NhbGxlZC5wdXNoKHRo
aXMudGFnTmFtZSk7IH0gfSB9KSB9KTsKK2RvY3VtZW50LnJlZ2lzdGVyKCJ4LWJhciIsIHsgcHJv
dG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxEaXZFbGVtZW50LnByb3RvdHlwZSwgeyByZWFkeUNh
bGxiYWNrOiB7IHZhbHVlOiBmdW5jdGlvbigpIHsgd2luZG93LmNhbGxiYWNrc0NhbGxlZC5wdXNo
KHRoaXMudGFnTmFtZSk7IH0gfSB9KSB9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJjb250YWluZXIiPgorPHNjcmlwdD4KK2NvbnRhaW5lci5pbm5lckhUTUwgPSAiPHgt
Zm9vPjwveC1mb28+PGRpdiBpcz0neC1iYXInPjwvZGl2Pjx4LWZvbz48L3gtZm9vPiI7CitzaG91
bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJVicsICdYLUZPTydd
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBh
cnNlci1vbmx5LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZmZDgwNzQ1YjBlZjA1ZjE3NTQ5
MWQyMzgxMWIxNWI5Y2YzOGI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNwYW4+SGVs
bG88L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLW9ubHkuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItb25seS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjODExNWUxNzIwZmQ2MmMwZDExYmIwMWVjYWU5NjM0NjA4YWEzOTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0
ZWQtcGFyc2VyLW9ubHkuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdp
c3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK3Byb3RvID0gT2JqZWN0LmNyZWF0ZShI
VE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24o
KSB7IHRoaXMuaW5uZXJIVE1MID0gIkhlbGxvIjsgfSB9IH0pOworZG9jdW1lbnQucmVnaXN0ZXIo
IngtZm9vIiwgeyBwcm90b3R5cGU6IHByb3RvIH0pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzx4LWZvbz48L3gtZm9vPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhcnNlci1zY3JpcHQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVk
LXBhcnNlci1zY3JpcHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YzdlZjdiN2Q1MzBiOTY0
Y2JjZmY3OGFjNzkyZjA0MTE4NzJjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgbGlmZWN5Y2xl
IGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGZvbGxvd2lu
ZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdp
bmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtY3JlYXRlZC1wYXJzZXItc2NyaXB0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFyc2VyLXNjcmlwdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliNWJlYjY3NDhhMjg1M2ExYTkwM2QxMTgzNmI2ZWJhYzZlZWVjYTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0
ZWQtcGFyc2VyLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50IGlz
IHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQucmVnaXN0ZXIg
PSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK3Byb3RvID0g
T2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2
YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSB0cnVlOyB9IH0gfSk7
Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogcHJvdG8gfSk7Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHgtZm9vPjwveC1mb28+Cis8c2NyaXB0Pgorc2hvdWxk
QmVUcnVlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtY3JlYXRlZC1wYXN0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYjAx
NDY2YThlYWU1NzM1YTlmZDg1YWM0OGZkNDY4YzQ1NzQ1NTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFzdGUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogW29iamVj
dCBIVE1MRGl2RWxlbWVudF0KK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBj
YWxsYmFja3Mgb2YgZWRpdGluZy1vcmlnaW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZv
bGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycsICdESVYnXQorUEFTUyB3aW5k
b3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnWC1GT08nLCAnRElWJywgJ1gtRk9PJywgJ0RJViddCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1jcmVhdGVkLXBhc3Rl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLWNyZWF0ZWQtcGFz
dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTFhZmQ5NWNmYmE3NjA5ZjNlNTNlZDZkODNiNGRmNmEyMThm
NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVj
eWNsZS1jcmVhdGVkLXBhc3RlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmlnaW5hdGVkIGVs
ZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikKK2RvY3VtZW50
LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7
Cit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28i
LCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVh
ZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQu
cHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Citkb2N1bWVudC5yZWdpc3RlcigieC1iYXIi
LCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUsIHsg
cmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxs
ZWQucHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iY29udGFpbmVyIiBjb250ZW50ZWRpdGFibGU+Wzx4LWZvbz5Gb288L3gt
Zm9vPjxkaXYgaXM9J3gtYmFyJz5CYXI8L2Rpdj5dPC9kaXY+Cis8c2NyaXB0PgordmFyIHNlbGVj
dGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworc2VsZWN0aW9uLnNlbGVjdEFsbENoaWxk
cmVuKGNvbnRhaW5lcik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIpOworCitzaG91bGRC
ZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJViddIik7CitzZWxlY3Rp
b24uY29sbGFwc2VUb0VuZCgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlIik7CitzaG91
bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJVicsICdYLUZPTycs
ICdESVYnXSIpOworCitjb25zb2xlLmxvZyhjb250YWluZXIpOworY29udGFpbmVyLnN0eWxlLmRp
c3BsYXkgPSAibm9uZSI7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194441</attachid>
            <date>2013-03-21 22:02:53 -0700</date>
            <delta_ts>2013-03-22 02:13:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112538-20130322135840.patch</filename>
            <type>text/plain</type>
            <size>54239</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzNGJjMjg5YWMwOTVmNTlkZDk3NTk5
OTgzNTRhN2MyZjY0Mjc2ZDkuLjAzNjI1NWViM2FiYjE2ZmYyNWYwNWJlYWVjNjhiZmE4YWM3OTAw
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJh
Y2siIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAg
ICAoV1RGOjpjb3B5VG9WZWN0b3IpOiBHZW5lcmFsaXplZCB0byBsZXQgaXQgYWNjZXB0IHZhcmlh
bnRzIGxpa2UgTGlzdEhhaHNTZXQgaW5zdGVhZCBvZiBvbmx5IEhhc2hTZXQuCisKIDIwMTMtMDMt
MjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjaW5n
IFN0cmluZzo6ZmluZE5leHRMaW5lU3RhcnQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZjdhMThkMTAxN2Y4
NGVmYjRhOTBjNDg1OWIwZjljZjQ0MmQ0ZTQxLi4wZjk0ODA0MjE5MDk5MGY1M2NkNmM5ZWQ5MGRl
NmM5ZGM0NDQ1NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0IEBACisyMDEzLTAzLTIxICBI
YWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBDdXN0b20gRWxl
bWVudHM6ICJyZWFkeUNhbGxiYWNrIiBsaWZlY3ljbGUgY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsbG93cyBlYWNoIGN1c3RvbSBlbGVtZW50IGRlZmluaXRpb24gdG8gaG9vayB1cCBp
dHMgaW5zdGFudGlhdGlvbiwKKyAgICAgICAgbmFtZWx5ICJyZWFkeUNhbGxiYWNrIiBsaWZlY3lj
bGUgY2FsbGJhY2suCisKKyAgICAgICAgVGhlIGNoYW5nZSBoYXMgdHdvIHBhcnRzOgorICAgICAg
ICAtIDEuIFRyYWNraW5nIHdoaWNoIEVsZW1lbnQgb2JqZWN0cyB0byBiZSBjcmVhdGVkLgorICAg
ICAgICAtIDIuIEludm9raW5nIGFwcHJvcHJpYXRlIEphdmFTY3JpcHQgZnVuY3Rpb25zLCB3aGlj
aCBhcmUgcmVhZHlDYWxsYmFjaygpLAorICAgICAgICAgIGJlZm9yZSB0aGUgRWxlbWVudCBvYmpl
Y3QgaXMgdmlzaWJsZSBmcm9tIHBhZ2Ugc2NyaXB0LgorCisgICAgICAgIEZvciAxLCBDdXN0b21F
bGVtZW50UmVnaXN0cnkgbWFpbnRhaW5zIGxpc3Qgb2YgImNhbGxiYWNrCisgICAgICAgIGludm9j
YWlvbnMiLiAgRWFjaCBsaXN0IGl0ZW0gKCJpbnZvY2F0aW9uIikgdHJhY2tzIHRoZSBlbGVtZW50
CisgICAgICAgIHdoaWNoIGhhcyBhIGxpZmVjeWNsZSBjYWxsYmFjayB0byBiZSBpbnZva2VkLiBF
YWNoIGludm9jYXRpb24gaXMKKyAgICAgICAgcmVnaXN0ZXJlZCB3aGVuIC0gQW55IGN1c3RvbSBl
bGVtZW50IEMrKyBvYmplY3QgaXMgaW5zdGFudGlhdGVkLgorICAgICAgICBTZWUgY2hhbmdlcyBv
biBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwLgorCisgICAgICAgIFRoaXMgYWxzbyBoYXBw
ZW5zIHdoZW4gQGlzIGF0dHJpYnV0ZSBpcyBzZXQgYnkgdGhlIHBhcnNlciBvciBub2RlCisgICAg
ICAgIGNsb25pbmcgcm91dGluZSwgd2hpY2ggY2FuIHR1cm4gYSBub24tY3VzdG9tIGVsZW1lbnQg
aW50byBhCisgICAgICAgIHR5cGUtZXh0ZW5kZWQgY3VzdG9tIGVsZW1lbnQuIFNlZSBjaGFuZ2Vz
IG9uIEVsZW1lbnQuY3BwLgorCisgICAgICAgIEZvciAyLCBDdXN0b21FbGVtZW50UmVnaXN0cnkg
YmFzaWNhbGx5IGZvbGxvd3Mgd2hhdAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyIGlzIGRvaW5n
LCBhbmQgaW50cm9kdWNlcyBhIG1ldGhvZCBjYWxsZWQKKyAgICAgICAgZGVsaXZlckxpZmVjeWNs
ZUNhbGxiYWNrcygpLiBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgYWxsIHBlbmRpbmcKKyAgICAgICAg
Y2FsbGJhY2sgaW52b2NhdGlvbnMuIFlvdSBjYW4gdGhpbmsgaXQgYXMgYSBkdWFsIG9mCisgICAg
ICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKS4KKworICAgICAgICBU
aGUgZGVsaXZlcnkgZnVuY3Rpb24gaXMgY2FsbGVkIHBsYWNlcyB3aGVyZSBNdXRhdGlvbk9ic2Vy
dmVyJ3MKKyAgICAgICAgZGVsaXZlckFsbE11dGF0aW9ucygpIGlzIGNhbGxlZC4gSW4gYWRkaXRp
b24sIGl0IGlzIGFsc28gY2FsbGVkCisgICAgICAgIGp1c3QgYmVmb3JlIHJldHVybmluZyBmcm9t
IGEgc2V0IG9mIERPTSBBUElzLiBGb3IgZXhhbXBsZSwgaXQgaXMKKyAgICAgICAgY2FsbGVkIGp1
c3QgYmVmb3JlIGNyZWF0ZUVsZW1lbnQoKSByZXR1cm5zLCBzbyB0aGF0IHBvc3NpYmx5CisgICAg
ICAgIGNyZWF0ZWQgY3VzdG9tIGVsZW1lbnQgYmVjb21lcyByZWFkeSB0aHJvdWdoIGl0cyByZWFk
eUNhbGxiYWNrKCkuCisgICAgICAgIFN1Y2ggQVBJcyBnZXQgIlY4RGVsaXZlckN1c3RvbUVsZW1l
bnRDYWxsYmFja3MiIElETCBhdHRyaWJ1dGUuIEluCisgICAgICAgIHByaW5jaXBsZSwgQVBJcyB3
aGljaCBjYW4gY3JlYXRlIG5ldyBjdXN0b20gZWxlbWVudCBpbnN0bmFjZXMgYXJlCisgICAgICAg
IG1hcmtlZC4gU2VlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3Bl
IGFuZAorICAgICAgICBjaGFuZ2VzIG9uIENvZGVHZW5lcmF0b3JWOC5wbS4KKworICAgICAgICBX
ZSBuZWVkIHRoaXMgZXh0cmEgd29yayBiZWNhdXNlIHRoZSByZWFkeUNhbGxiYWNrKCkgbmVlZHMg
dG8gZ2l2ZQorICAgICAgICBhbiBpbGx1c2lvbiBzbyB0aGF0IEphdmFTY3JpcHQgcHJvZ3JhbW1l
cnMgZmVlbCBsaWtlIHRoZQorICAgICAgICByZWFkeUNhbGxiYWNrKCkgY2FsbGJhY2sgYmVpbmcg
Y2FsbGVkIGp1c3QgYWZ0ZXIgaXQgaXMgY3JlYXRlZCwKKyAgICAgICAgaW5zdGVhZCBvZiBjYWxs
ZWQgb24gYXJiaXRyYXJ5IGxhdGUgdGltaW5nIGxpa2UgTXV0YXRpb25PYnNlcnZlcgorICAgICAg
ICBub3RpZmljYXRpb25zLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRp
b24tYXBpLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVh
ZHktaW5uZXJIVE1MLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtcmVhZHktcGFyc2VyLW9ubHkuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1yZWFkeS1wYXJzZXItc2NyaXB0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFzdGUuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIC0gSG9va2VkIHVwIENhbGxi
YWNrRGVsaXZlcnlTY29wZSB0aHJvdWdoIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3Mg
YXR0cml1dGUuCisgICAgICAgIChHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJ
Zk5lZWRlZCk6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIpOgorICAgICAgICAo
R2VuZXJhdGVGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlUmVhZHlDYWxs
YmFja0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRIZWxwZXJzOjpp
bnZva2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0
b21FbGVtZW50SGVscGVycy5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVudEhlbHBlcnMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwOiBBZGRlZCBkZWxpdmVyQWxs
TGlmZWN5Y2xlQ2FsbGJhY2tzKCkKKyAgICAgICAgKFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6
OmRpZExlYXZlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6
OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yOjpjcmVhdGVFbGVtZW50SW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cjo6aXNFeHRlbmRlZCk6CisgICAgICAgIChDdXN0b21FbGVtZW50Q29uc3RydWN0b3IpOgorICAg
ICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOiBBZGRpbmcgZWxlbWVudCB0cmFj
a2luZyBhbmQgaW52b2NhdGlvbiBleGVjdXRpb24uCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50SW52b2NhdGlvbjo6Q3VzdG9tRWxlbWVudEludm9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246On5DdXN0b21FbGVtZW50SW52b2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjphY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6On5DdXN0b21FbGVtZW50UmVnaXN0
cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRHaXZlVHlw
ZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRp
ZENyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjphY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRl
YWN0aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxp
dmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcyk6CisgICAgICAgICogZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5oOgorICAgICAgICAoQ3VzdG9tRWxlbWVudEludm9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246OmVsZW1lbnQpOgor
ICAgICAgICAoQ2FsbGJhY2tEZWxpdmVyeVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3BlOjpDYWxsYmFja0RlbGl2ZXJ5
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDYWxsYmFj
a0RlbGl2ZXJ5U2NvcGU6On5DYWxsYmFja0RlbGl2ZXJ5U2NvcGUpOgorICAgICAgICAoQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENyZWF0ZUN1c3RvbUVsZW1lbnQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyk6
IEFkZGVkIHRvIGNhdGNoIEBpcyBhdHRyaWJ1dGUKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnBhcnNlclNldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVB
dHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmlkbDoKKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU2NyaXB0
UnVubmVyLmNwcDogQWRkZWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0
KToKKwogMjAxMy0wMy0yMSAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBCeXBhc3MgWFNTQXVkaXRvciBmb3IgYXNwLm5ldCBzZXJ2ZXJzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA5OGE5Njk3NDY4ODg3Y2M1NjAyYmUzYTM4NjliNjY4N2YwZmExZTEz
Li4wMDRmNThkYTg2MmViODFiZGFiNTNkM2VlNDc3MWNjMDhlNTVlNjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAzLTIxICBIYWppbWUgTW9ycml0
YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBDdXN0b20gRWxlbWVudHM6ICJyZWFk
eUNhbGxiYWNrIiBsaWZlY3ljbGUgY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUzOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYktpdC5jcHA6
IEFkZGVkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKQorCiAyMDEzLTAzLTIxICBHYXJy
ZXR0IENhc3RvICA8Z2Nhc3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwb3NzaWJsZVVzZXJOYW1lcyB0byBXZWJQYXNzd29yZEZvcm1EYXRhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXgg
ZTQ1ZDAyOGI1ZjRiYTZhNjhmNTg5NWI4MGJkOWQ3MjI4ODYxYzcyNi4uNjViNjQyYTEyOGJjMjlj
MDA4OTUyMmYwOGQ3ZTNjNWNlMjdiYmUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFz
aFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtMjQzLDEwICsyNDMsMTAg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGRlbGV0ZUFsbFZhbHVlczx0eXBlbmFtZSBIYXNo
U2V0PFQsIFUsIFY+OjpWYWx1ZVR5cGU+KGNvbGxlY3Rpb24ubV9pbXBsKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
PgotICAgIGlubGluZSB2b2lkIGNvcHlUb1ZlY3Rvcihjb25zdCBIYXNoU2V0PFQsIFUsIFY+JiBj
b2xsZWN0aW9uLCBXJiB2ZWN0b3IpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUg
Vz4KKyAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgQyYgY29sbGVjdGlvbiwgVyYg
dmVjdG9yKQogICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+
Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpj
b25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICAgICAgICAgCiAgICAgICAgIHZlY3Rvci5yZXNpemUo
Y29sbGVjdGlvbi5zaXplKCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNDkxNWM5N2YwMWEyZGM0NzNh
N2EwMDk0NWMxZDIxNjhkZmQ5NzQzYS4uMTNjMGE1ZjkxYWM4NTdjNjBlYjcxYmM5OGZlYzc4NWU5
MTZkYWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTEyNTYsNiArMTI1NiwyNSBAQCBFTkQKIEVORAogfQogCitzdWIg
R2VuZXJhdGVDdXN0b21FbGVtZW50SW52b2NhdGlvblNjb3BlSWZOZWVkZWQKK3sKKyAgICBteSAk
b3V0ID0gc2hpZnQ7CisgICAgbXkgJGV4dCA9IHNoaWZ0OworCisgICAgaWYgKCRleHQtPnsiVjhE
ZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrcyJ9KSB7CisgICAgICAgIGlmICgkZXh0LT57IlJl
ZmxlY3QifSkgeworICAgICAgICAgICAgZGllICJJREwgZXJyb3I6IFJlZmxlY3QgYW5kIFY4RGVs
aXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3MgY2Fubm90IGNvZXhpc3QgeWV0IjsKKyAgICAgICAg
fQorCisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIs
ICJDVVNUT01fRUxFTUVOVFMiKTsKKyAgICAgICAgcHVzaChAJG91dCwgPDxFTkQpOworI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDYWxsYmFj
a0RlbGl2ZXJ5U2NvcGUgZGVsaXZlcnlTY29wZTsKKyNlbmRpZgorRU5ECisgICAgfQorfQorCiBz
dWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2sKIHsKICAgICBteSAkYXR0cmlidXRl
ID0gc2hpZnQ7CkBAIC0xNDA0LDYgKzE0MjMsOCBAQCBFTkQKICAgICAgICAgJHJlc3VsdCA9ICJX
VEY6OmdldFB0cigiIC4gJHJlc3VsdCAuICIpIjsKICAgICB9CiAKKyAgICBHZW5lcmF0ZUN1c3Rv
bUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRlZChcQGltcGxDb250ZW50SW50ZXJuYWxzLCAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7CisKICAgICBteSAkdXNl
RXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKIAogICAg
IGlmICgkdXNlRXhjZXB0aW9ucykgewpAQCAtMTcwNCw2ICsxNzI1LDggQEAgRU5ECiBFTkQKICAg
ICB9CiAKKyAgICBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRlZChc
QGltcGxDb250ZW50SW50ZXJuYWxzLCAkZnVuY0V4dCk7CisKICAgICAjIENoZWNrIGRvbWFpbiBz
ZWN1cml0eSBpZiBuZWVkZWQKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNoZWNrU2VjdXJpdHkifSAmJiAhJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAjIFdlIGhhdmUgbm90
IGZpbmQgcmVhbCB1c2UgY2FzZXMgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKaW5kZXggNjY5MjhlNzkyMTM3MTllYTk3MGM2MzJj
ZGNlYTM2NWZhNWM2MDRlMy4uNTljOWIwNWYyMTgyYjc1MWIyZGZjMDA1OTc4MGFlODFkMGQ4MmI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMudHh0CkBAIC0xMzMsMyArMTMzLDQgQEAgVjhSZWFkT25seQogVjhTa2lwVlRhYmxlVmFsaWRh
dGlvbgogVjhVbmZvcmdlYWJsZQogVjhXcmFwQXNGdW5jdGlvbgorVjhEZWxpdmVyQ3VzdG9tRWxl
bWVudENhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3Vz
dG9tRWxlbWVudEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9t
RWxlbWVudEhlbHBlcnMuY3BwCmluZGV4IDJjZDVjYTQwMWU3YTRjMzczNjk2MTkyOWUwZjgxMThh
MjAxMzU4ZTMuLjYxODM4OWZkMzdjMzk3MWFhMzI1MGI0YzlhM2RhMjY1MWU1MGI1YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5j
cHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXN0
b21FbGVtZW50SGVscGVycy5oIgogCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
VjhIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiVjhIVE1MUGFyYWdyYXBo
RWxlbWVudC5oIgpAQCAtMTM4LDYgKzE0MCw0NCBAQCBjb25zdCBRdWFsaWZpZWROYW1lKiBDdXN0
b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFtZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAg
ICAgcmV0dXJuIGZpbmRIVE1MVGFnTmFtZU9mVjhUeXBlKHR5cGUpOwogfQogCit2b2lkIEN1c3Rv
bUVsZW1lbnRIZWxwZXJzOjppbnZva2VSZWFkeUNhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCogZWxl
bWVudCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd3JhcHBlclZhbHVlID0gdG9WOChlbGVtZW50LCBjb250ZXh0LT5HbG9iYWwo
KSwgY29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKKyAgICBpZiAod3JhcHBlclZhbHVlLklzRW1wdHko
KSB8fCAhd3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh3cmFwcGVyVmFsdWUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1
ZSA9IHdyYXBwZXItPkdldFByb3RvdHlwZSgpOworICAgIGlmIChwcm90b3R5cGVWYWx1ZS5Jc0Vt
cHR5KCkgfHwgIXByb3RvdHlwZVZhbHVlLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHByb3RvdHlwZVZhbHVlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVu
Y3Rpb25WYWx1ZSA9IHByb3RvdHlwZS0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicmVhZHlD
YWxsYmFjayIpKTsKKyAgICBpZiAoZnVuY3Rpb25WYWx1ZS5Jc0VtcHR5KCkgfHwgIWZ1bmN0aW9u
VmFsdWUtPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1
bmN0aW9uVmFsdWUpOworICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOworICAgIGV4
Y2VwdGlvbkNhdGNoZXIuU2V0VmVyYm9zZSh0cnVlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJnc1tdID0geyB9OworICAgIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJ
bnN0cnVtZW50YXRpb24oZWxlbWVudC0+ZG9jdW1lbnQoKSwgZnVuY3Rpb24sIHdyYXBwZXIsIDAs
IGFyZ3MpOworfQorCisKK3ZvaWQgQ3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZVJlYWR5Q2Fs
bGJhY2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCwg
Y29uc3QgVmVjdG9yPEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uPiYgaW52b2NhdGlvbnMpCit7Cisg
ICAgQVNTRVJUKCFpbnZvY2F0aW9ucy5pc0VtcHR5KCkpOworCisgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB0b1Y4
Q29udGV4dChleGVjdXRpb25Db250ZXh0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAg
aWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIHNjb3BlKGNvbnRleHQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnZv
Y2F0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NFUlQoZXhlY3V0aW9uQ29udGV4dCA9
PSBpbnZvY2F0aW9uc1tpXS5lbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgICAgICBpbnZva2VS
ZWFkeUNhbGxiYWNrSWZOZWVkZWQoaW52b2NhdGlvbnNbaV0uZWxlbWVudCgpLCBjb250ZXh0KTsK
KyAgICB9Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9D
dXN0b21FbGVtZW50SGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9t
RWxlbWVudEhlbHBlcnMuaAppbmRleCBmMjkwZjU0ODgwZDA5NzQyNTcyYTlkZDRmODQyOTcwZWMw
YmI1MTA4Li44NjExODE5ZTg3NWY2MmZkNzRmZjNjOTg5NTJhYzg4MTFjNmU3NGFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKQEAg
LTMzLDEyICszMywxNSBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogY2xhc3MgQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOworY2xhc3MgQ3VzdG9tRWxlbWVudEludm9jYXRpb247CitjbGFzcyBF
bGVtZW50OwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNjcmlwdFN0YXRlOwogCkBAIC01
Miw2ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNGZWF0dXJlQWxsb3dlZCh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyogZmlu
ZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGFpbik7CiAgICAgc3RhdGljIGNv
bnN0IFF1YWxpZmllZE5hbWUqIGZpbmRMb2NhbE5hbWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
aGFpbik7CisKKyAgICBzdGF0aWMgdm9pZCBpbnZva2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRp
b24+Jik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgaW52b2tlUmVhZHlDYWxsYmFja0lm
TmVlZGVkKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiB9OwogCiAjZW5kaWYg
Ly8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhSZWN1cnNpb25TY29wZS5jcHAKaW5kZXggYmQ5MjQ4MTUyOTJkOWYwYWJmZjJkZDRiYjA2
Nzc2MDAxYTFiNzY3Yy4uMmMyZjk1NTJmNmFjYzNmZTJmNTY2MGI4MTM4YzNlMWE4YWQ4ZmZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOFJlY3Vy
c2lvblNjb3BlLmgiCiAKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNs
dWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25P
YnNlcnZlci5oIgogCkBAIC00Niw4ICs0NywxMiBAQCB2b2lkIFY4UmVjdXJzaW9uU2NvcGU6OmRp
ZExlYXZlU2NyaXB0Q29udGV4dCgpCiAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6
ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygpOwogI2VuZGlmCiAKLSAgICBpZiAobV9pc0RvY3Vt
ZW50Q29udGV4dCkKKyAgICBpZiAobV9pc0RvY3VtZW50Q29udGV4dCkgewogICAgICAgICBNdXRh
dGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CisjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKKyAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5
Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMzQzMTk3MThlN2FjNDlmMGY1OGE3ZmZjOTNmZWFkOTU2YzVlMDNiYy4uZjM5YTJlZDU0
YzBlODQ3MTQxYTRhNWQ3MGQ2YjE3N2UyMmY4OTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTYzLDcgKzYzLDE1IEBAIEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcjo6fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvcigpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVt
ZW50KCkgY29uc3QKK1Bhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
OjpjcmVhdGVFbGVtZW50KCkKK3sKKyAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0
ZUVsZW1lbnRJbnRlcm5hbCgpOworICAgIGlmIChlbGVtZW50KQorICAgICAgICBkb2N1bWVudCgp
LT5kaWRDcmVhdGVDdXN0b21FbGVtZW50KGVsZW1lbnQuZ2V0KCksIHRoaXMpOworICAgIHJldHVy
biBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnRJbnRlcm5hbCgpCiB7CiAgICAgaWYgKCFkb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50Q29uc3RydWN0b3IuaAppbmRleCAwZWVkNzlhZTU4MzliM2M4ZDNkNDZjMmUxMWMyODhl
MmZmYTg4OGI0Li45YWNjY2Q3ZDdlNWRiOGIxODJlMjAyNjYyZTA4ZGM5YjQzYmRkNWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC01OSwx
MiArNTksMTUgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQog
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
TmFtZTsgfQogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxOYW1lOyB9CisgICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlTmFtZSAhPSBtX2xvY2FsTmFtZTsgfQogCi0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVFbGVtZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KCk7CiAKIHByaXZhdGU6CiAgICAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZU5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxv
Y2FsTmFtZSk7CiAKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRJbnRlcm5h
bCgpOworCiAgICAgUXVhbGlmaWVkTmFtZSBtX3R5cGVOYW1lOwogICAgIFF1YWxpZmllZE5hbWUg
bV9sb2NhbE5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5LmNwcAppbmRleCA2YzI4ZjI4MTkyM2I4YmZmNzM0ZDJjMjc2ODA5M2U5MWUyMzMxOGY0Li42
YTdmMmQ1MTgyYzdkM2JlOTFhNTlkNWViY2EyODUwODQ3ZjNkMjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxVbmtub3duRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC01NCw2
ICs1NSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0N1c3RvbUVsZW1lbnRJbnZvY2F0
aW9uOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbihQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQp
CisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30KKworQ3VzdG9tRWxlbWVudEludm9jYXRp
b246On5DdXN0b21FbGVtZW50SW52b2NhdGlvbigpCit7Cit9CisKIEN1c3RvbUVsZW1lbnRSZWdp
c3RyeTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50KQogewpAQCAtNjEsNiArNzEsNyBAQCBD
dXN0b21FbGVtZW50UmVnaXN0cnk6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeShEb2N1bWVudCogZG9j
dW1lbnQpCiAKIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6fkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgp
CiB7CisgICAgZGVhY3RpdmF0ZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1
ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKQEAgLTE5MywxMSArMjA0LDY0IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5OjpkaWRHaXZlVHlwZUV4dGVuc2lvbihFbGVtZW50KiBlbGVtZW50KQor
eworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gZmlu
ZEZvcihlbGVtZW50KTsKKyAgICBpZiAoIWNvbnN0cnVjdG9yIHx8ICFjb25zdHJ1Y3Rvci0+aXNF
eHRlbmRlZCgpKQorICAgICAgICByZXR1cm47CisgICAgYWN0aXZhdGUoQ3VzdG9tRWxlbWVudElu
dm9jYXRpb24oZWxlbWVudCkpOworfQorCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlk
Q3JlYXRlRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIGFjdGl2YXRlKEN1c3RvbUVs
ZW1lbnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKK30KKwordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0
cnk6OmFjdGl2YXRlKGNvbnN0IEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uJiBpbnZvY2F0aW9uKQor
eworICAgIGJvb2wgd2FzSW5hY3RpdmUgPSBtX2ludm9jYXRpb25zLmlzRW1wdHkoKTsKKyAgICBt
X2ludm9jYXRpb25zLmFwcGVuZChpbnZvY2F0aW9uKTsKKyAgICBpZiAod2FzSW5hY3RpdmUpCisg
ICAgICAgIGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuYWRkKHRoaXMpOworfQorCit2
b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVhY3RpdmF0ZSgpCit7CisgICAgQVNTRVJUKG1f
aW52b2NhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBpZiAoYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lz
dHJpZXMoKS5jb250YWlucyh0aGlzKSkKKyAgICAgICAgYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lz
dHJpZXMoKS5yZW1vdmUodGhpcyk7Cit9CisKIGlubGluZSBEb2N1bWVudCogQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRvRG9jdW1lbnQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6
OmRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKQoreworICAgIEFTU0VSVCghbV9pbnZvY2F0aW9u
cy5pc0VtcHR5KCkpOworCisgICAgaWYgKCFtX2ludm9jYXRpb25zLmlzRW1wdHkoKSkgeworICAg
ICAgICBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRpb24+IGludm9jYXRpb25zOworICAgICAg
ICBtX2ludm9jYXRpb25zLnN3YXAoaW52b2NhdGlvbnMpOworICAgICAgICBDdXN0b21FbGVtZW50
SGVscGVyczo6aW52b2tlUmVhZHlDYWxsYmFja3NJZk5lZWRlZChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGludm9jYXRpb25zKTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9pbnZvY2F0aW9ucy5p
c0VtcHR5KCkpOworICAgIGRlYWN0aXZhdGUoKTsKK30KKwordm9pZCBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKQoreworICAgIHdoaWxlICghYWN0
aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+ID4gcmVnaXN0cmllczsKKyAgICAgICAgY29w
eVRvVmVjdG9yKGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCksIHJlZ2lzdHJpZXMpOwor
ICAgICAgICBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpLmNsZWFyKCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0cmllcy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIHJlZ2lzdHJpZXNbaV0tPmRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyAgICB9Cit9
CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKaW5kZXggMTAyYWEzZGUzOGMyMTE2OGUwYzdi
NzBjNjUyOGEyYTFhOTFkZTRlNC4uODI4OWIxOWQyNWZlNWM1YjI4ZGRhYzY2MGE0MDY5NjhmOGJm
NTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAt
NDAsOSArNDAsMTEgQEAKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw5ICs1NSwyNiBAQCBjbGFzcyBF
bGVtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFF1YWxpZmllZE5h
bWU7CiAKK2NsYXNzIEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBDdXN0b21FbGVtZW50SW52b2NhdGlvbihQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKKyAgICB+
Q3VzdG9tRWxlbWVudEludm9jYXRpb24oKTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8RWxl
bWVudD4gbV9lbGVtZW50OworfTsKKwogY2xhc3MgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IDogcHVi
bGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5PiAsIHB1YmxpYyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgY2xhc3Mg
Q2FsbGJhY2tEZWxpdmVyeVNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhbGxiYWNrRGVs
aXZlcnlTY29wZSgpIHsgfQorICAgICAgICB+Q2FsbGJhY2tEZWxpdmVyeVNjb3BlKCkgeyBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3NJZk5lZWRlZCgp
OyB9CisgICAgfTsKKwogICAgIGV4cGxpY2l0IEN1c3RvbUVsZW1lbnRSZWdpc3RyeShEb2N1bWVu
dCopOwogICAgIH5DdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKIApAQCAtNjYsMTYgKzg1LDQzIEBA
IHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCi1wcml2YXRlOgot
ICAgIHN0YXRpYyBib29sIGlzVmFsaWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZv
aWQgZGlkR2l2ZVR5cGVFeHRlbnNpb24oRWxlbWVudCopOworICAgIHZvaWQgZGlkQ3JlYXRlRWxl
bWVudChFbGVtZW50Kik7CiAKKyAgICBzdGF0aWMgdm9pZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2Fs
bGJhY2tzKCk7CisgICAgc3RhdGljIHZvaWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lm
TmVlZGVkKCk7CisKK3ByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxRdWFs
aWZpZWROYW1lLCBRdWFsaWZpZWROYW1lPiwgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4gPiBDb25zdHJ1Y3Rvck1hcDsKICAgICB0eXBlZGVmIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4g
TmFtZVNldDsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PEN1c3RvbUVsZW1lbnRSZWdpc3RyeSo+
IEluc3RhbmNlU2V0OworCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgc3RhdGljIEluc3RhbmNlU2V0JiBhY3RpdmVDdXN0b21FbGVtZW50UmVn
aXN0cmllcygpOworCisgICAgdm9pZCBhY3RpdmF0ZShjb25zdCBDdXN0b21FbGVtZW50SW52b2Nh
dGlvbiYpOworICAgIHZvaWQgZGVhY3RpdmF0ZSgpOworICAgIHZvaWQgZGVsaXZlckxpZmVjeWNs
ZUNhbGxiYWNrcygpOwogCiAgICAgQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CiAgICAg
TmFtZVNldCBtX25hbWVzOworICAgIFZlY3RvcjxDdXN0b21FbGVtZW50SW52b2NhdGlvbj4gbV9p
bnZvY2F0aW9uczsKIH07CiAKK2lubGluZSB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVs
aXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIWFjdGl2ZUN1
c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuaXNFbXB0eSgpKQorICAgICAgICBkZWxpdmVyQWxsTGlm
ZWN5Y2xlQ2FsbGJhY2tzKCk7CisgICAgQVNTRVJUKGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3Ry
aWVzKCkuaXNFbXB0eSgpKTsKK30KKworaW5saW5lIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6SW5z
dGFuY2VTZXQmIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lz
dHJpZXMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW5zdGFuY2VTZXQsIGFjdGl2ZUlu
c3RhbmNlcywgKCkpOworICAgIHJldHVybiBhY3RpdmVJbnN0YW5jZXM7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ0OGM5MTcwMzA2MjBkMThmNzA2N2YwMmYxZTU0YjA3
YWE4Y2RkZGQuLjY1Yjk0ZTg0ZmIzNWNkMmE3NTRmNTY2MDcyZDExNjExOWNiMmZjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODU0LDcgKzg1NCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUs
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlZDsKICAgICB9CiAKLSAgICByZXR1cm4g
c2V0VHlwZUV4dGVuc2lvbihjcmVhdGVFbGVtZW50KGxvY2FsTmFtZSwgZWMpLCB0eXBlRXh0ZW5z
aW9uKTsgLy8gIEZJWE1FOiB0YWtlIGNhcmUgb2YgQGlzCisgICAgcmV0dXJuIHNldFR5cGVFeHRl
bnNpb24oY3JlYXRlRWxlbWVudChsb2NhbE5hbWUsIGVjKSwgdHlwZUV4dGVuc2lvbik7CiB9CiAK
IFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtODkz
LDYgKzg5MywxMyBAQCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1l
bnQ6OnJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdAogICAgICAgICBtX3JlZ2lzdHJ5
ID0gYWRvcHRSZWYobmV3IEN1c3RvbUVsZW1lbnRSZWdpc3RyeSh0aGlzKSk7CiAgICAgcmV0dXJu
IG1fcmVnaXN0cnktPnJlZ2lzdGVyRWxlbWVudChzdGF0ZSwgbmFtZSwgb3B0aW9ucywgZWMpOwog
fQorCit2b2lkIERvY3VtZW50OjpkaWRDcmVhdGVDdXN0b21FbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgLy8gbV9y
ZWdpc3RyeSBpcyBjbGVhcmVkIERvY3VtZW50OjpkaXNwb3NlKCkgYW5kIGNhbiBiZSBudWxsIGhl
cmUuCisgICAgaWYgKG1fcmVnaXN0cnkpCisgICAgICAgIG1fcmVnaXN0cnktPmRpZENyZWF0ZUVs
ZW1lbnQoZWxlbWVudCk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAog
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDMwMmRlYjFhYzMwYzdkNGVjYzhlMzQzYmM5
Yjg0ZTRhYzQ2YTc1M2YuLjFkNWFhNDY0MjYwMzI3OWIwNTAzZmMzYmUxN2U1YTZlM2FmMDI4ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTY4LDYgKzExNjgsNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJD
b3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVs
ZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBDdXN0b21FbGVt
ZW50UmVnaXN0cnkqIHJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsg
fQorICAgIHZvaWQgZGlkQ3JlYXRlQ3VzdG9tRWxlbWVudChFbGVtZW50KiwgQ3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yKik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRqdXN0RmxvYXRRdWFkc0ZvclNj
cm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2F0UXVhZD4mLCBSZW5k
ZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDQ5YmY3N2U2ZTljYzM4OTBm
NTNmZTk4YjNkMThkMTFmYTcwYmM5YzEuLjhlOWM4NDU3ODcyMzc1NWY3NTY3YjI1NGYxN2ZkNWE2
OWMyZGZjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjksOCArMjksOCBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01JbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbjsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBkb2N1bWVudEVsZW1lbnQ7CiAKLSAgICBbUmV0
dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudChp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERP
TVN0cmluZyB0YWdOYW1lKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1Jl
dHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50
Q2FsbGJhY2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0YWdOYW1lKSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gRG9jdW1lbnRG
cmFnbWVudCAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBbUmV0dXJuTmV3T2JqZWN0
LCBWOFBlcldvcmxkQmluZGluZ3NdIFRleHQgY3JlYXRlVGV4dE5vZGUoaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIGRhdGEpOwogICAgIFtSZXR1cm5OZXdPYmplY3Qs
IFY4UGVyV29ybGRCaW5kaW5nc10gQ29tbWVudCBjcmVhdGVDb21tZW50KGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBkYXRhKTsKQEAgLTQ3LDEyICs0NywxMyBAQAog
CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKIAotICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnMsIFJldHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2Rl
IGltcG9ydE5vZGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBpbXBvcnRl
ZE5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbF0gYm9vbGVhbiBkZWVwKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0LCBWOFBl
cldvcmxkQmluZGluZ3NdIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51bGxBcz1O
dWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWVzcGFj
ZVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmlu
ZWRdIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisKKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3Qs
IFY4UGVyV29ybGRCaW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAg
ICBOb2RlIGltcG9ydE5vZGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBp
bXBvcnRlZE5vZGUsCisgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBk
ZWVwKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1l
dGVycywgUmV0dXJuTmV3T2JqZWN0LCBWOFBlcldvcmxkQmluZGluZ3MsIFY4RGVsaXZlckN1c3Rv
bUVsZW1lbnRDYWxsYmFja3NdCisgICAgRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
bmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxp
ZmllZE5hbWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQ
YXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5nc10gQXR0ciBjcmVh
dGVBdHRyaWJ1dGVOUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
KQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CkBAIC0xMzEsNyArMTMyLDcgQEAKICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAvLyBDb21tb24gZXh0ZW5zaW9ucwot
CisgICAgW1Y4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3NdCiAgICAgYm9vbGVhbiAgICAg
ICAgICAgIGV4ZWNDb21tYW5kKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0
cmluZyBjb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIHVzZXJJbnRlcmZhY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBU
cmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBE
T01TdHJpbmcgdmFsdWUpOwpAQCAtMzYyLDExICszNjMsMTMgQEAKICNlbmRpZgogCiAjaWYgZGVm
aW5lZChFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTKSAmJiBFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTCi0g
ICAgW1Y4RW5hYmxlZEF0UnVudGltZT1jdXN0b21ET01FbGVtZW50cywgQ29uZGl0aW9uYWw9Q1VT
VE9NX0VMRU1FTlRTLCBJbXBsZW1lbnRlZEFzPXJlZ2lzdGVyRWxlbWVudCwgQ2FsbFdpdGg9U2Ny
aXB0U3RhdGUsIFY4UGVyV29ybGRCaW5kaW5nc10KKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPWN1
c3RvbURPTUVsZW1lbnRzLCBDb25kaXRpb25hbD1DVVNUT01fRUxFTUVOVFMsIEltcGxlbWVudGVk
QXM9cmVnaXN0ZXJFbGVtZW50LCBDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgVjhQZXJXb3JsZEJpbmRp
bmdzLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQogICAgIEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3RvciB3ZWJraXRSZWdpc3RlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFs
XSBEaWN0aW9uYXJ5IG9wdGlvbnMpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5O
ZXdPYmplY3QsIFY4UGVyV29ybGRCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50KGluIERP
TVN0cmluZyBsb2NhbE5hbWUsIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcg
dHlwZUV4dGVuc2lvbikgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5OZXdPYmpl
Y3QsIFY4UGVyV29ybGRCaW5kaW5nc10gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIGluIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgdHlwZUV4dGVuc2lvbikg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgIFtSZXR1cm5OZXdPYmplY3QsIFY4UGVyV29ybGRC
aW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSwgaW4gW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmddIERPTVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Cisg
ICAgW1JldHVybk5ld09iamVjdCwgVjhQZXJXb3JsZEJpbmRpbmdzLCBWOERlbGl2ZXJDdXN0b21F
bGVtZW50Q2FsbGJhY2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCBpbiBET01TdHJpbmcgcXVh
bGlmaWVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZ10gRE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9DUFApICYmIExBTkdVQUdFX0NQUApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFhN2Y1MmQxMjBjOGQ2OGZkMmMzNGU4YjMzOWNlNjVi
ZjYwMmZjNGEuLjMyNTRlYzU0N2UxZTg2ZmI4NDRjNGVkYWUwZDhmN2QwZTEyZmRkMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDbGFzc0xpc3Qu
aCIKICNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdExpc3QuaCIK
KyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJET01Ub2tlbkxp
c3QuaCIKICNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKQEAgLTg4Nyw2ICs4ODgsMTcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKICAgICAg
ICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKG5h
bWUsIHRoaXMpOwogfQogCitpbmxpbmUgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkRnJv
bVBhcnNlck9yQnlDbG9uaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3VmFsdWUpCit7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBp
ZiAobmFtZSA9PSBpc0F0dHIpIHsKKyAgICAgICAgaWYgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSog
cmVnaXN0cnkgPSBkb2N1bWVudCgpLT5yZWdpc3RyeSgpKQorICAgICAgICAgICAgcmVnaXN0cnkt
PmRpZEdpdmVUeXBlRXh0ZW5zaW9uKHRoaXMpOworICAgIH0KKyNlbmRpZgorICAgIGF0dHJpYnV0
ZUNoYW5nZWQobmFtZSwgbmV3VmFsdWUpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShjb25z
dCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CkBAIC0xMDcz
LDcgKzEwODUsNyBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikKIAogICAgIC8vIFVzZSBhdHRyaWJ1dGVW
ZWN0b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBt
aWdodCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YXR0cmlidXRlVmVjdG9yLnNpemUoKTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJpYnV0ZVZlY3RvcltpXS5uYW1lKCksIGF0dHJpYnV0ZVZlY3RvcltpXS52YWx1ZSgpKTsKKyAg
ICAgICAgYXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhhdHRyaWJ1dGVWZWN0
b3JbaV0ubmFtZSgpLCBhdHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUoKSk7CiB9CiAKIGJvb2wgRWxl
bWVudDo6aGFzQXR0cmlidXRlcygpIGNvbnN0CkBAIC0yODU3LDcgKzI4NjksNyBAQCB2b2lkIEVs
ZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZWxlbWVudERhdGEtPmxlbmd0aCgpOyAr
K2kpIHsKICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBjb25zdF9jYXN0PGNv
bnN0IEVsZW1lbnREYXRhKj4obV9lbGVtZW50RGF0YS5nZXQoKSktPmF0dHJpYnV0ZUl0ZW0oaSk7
Ci0gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+
dmFsdWUoKSk7CisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNsb25pbmco
YXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAppbmRleCBiYWE5ZDQyNTM0MzkwMzYzNDUyZmI1OTRkNGNlYWQwOGY1NTE1MmYz
Li5kMDdjOTUxNTNkODUyNjZmZTI2MmE3NDE5YzVjYzgyNzgwMDc3NTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKQEAgLTY3Miw2ICs2NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QXR0cmlidXRl
SW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKICAgICB2b2lk
IGFkZEF0dHJpYnV0ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlLCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOwogICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBTeW5jaHJvbml6YXRpb25PZkxh
enlBdHRyaWJ1dGUpOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xv
bmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCBmZTk3NTY3ZjRh
OTAwNzkzNjE0YTQyOTMxY2ViNzlkMWUzOGNlN2M3Li42ZjZkNjhkY2M4MmRiYzMxY2VkY2I5MGZj
ODVhN2NhZjUyMDM1ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC03Niw3ICs3Niw4IEBACiAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhhc0No
aWxkTm9kZXMoKTsKLSAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlICAgICAgICAgICAgICAg
Y2xvbmVOb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCk7
CisgICAgW1Y4UGVyV29ybGRCaW5kaW5ncywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNr
c10KKyAgICBOb2RlICAgICAgICAgICAgICAgY2xvbmVOb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCk7CiAgICAgdm9pZCAgICAgICAgICAgICAgIG5vcm1h
bGl6ZSgpOwogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmlkbAppbmRleCBhMzljYTkyYTUzYjk4NmNmODhmMTE5MzFjMTE5YTExMDI4ZjVj
OGFkLi41YjM1ZTlmZWRlZDI5ODM0ZjlmNmVkNzc5OTkyNjNlZjQ4YWQ0NjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaWRsCkBAIC0zMiw4ICszMiw4IEBACiAgICAgYXR0cmlidXRlIGJvb2xl
YW4gYXBwbHlBdXRob3JTdHlsZXM7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gcmVzZXRTdHlsZUlu
aGVyaXRhbmNlOwogCi0gICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01T
dHJpbmcgaW5uZXJIVE1MCi0gICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNr
c10KKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTCBzZXR0ZXIgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdF
X0pBVkFTQ1JJUFQKICAgICBOb2RlIGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBib29sZWFuIGRlZXApIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmlkbAppbmRleCBiYzYzOWI4ZTQxYmIwNDRhOTE5MTBlODZiNGJkMDQ5ZmI0
MTFiZDQ4Li44Y2EzOTA4NjI5YjhmMzFkOTk2ZTg0YmRkODJhZTEwNTgxNjM5ZmE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAg
IFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2Vzc0tleTsKIAogICAgIC8vIEV4dGVu
c2lvbnMKLSAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERP
TVN0cmluZyBpbm5lckhUTUwKKyAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywg
VjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrc10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5l
ckhUTUwKICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlu
bmVyVGV4dAogICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4
IDQ2ODlkMTNlNDJhMzVlZWEyMTRhMDI4N2FhN2I3ZGUyODlkNTEwM2EuLjUzZjNkMjlmZmIxMDVm
ZWE0M2ZiOTUxYWRmNWJjYTljNWZiMjA3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgpAQCAtMTI4LDggKzEyOSwxMiBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5k
aW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAgIGlmIChw
ZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JM
b2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7CiAKLSAg
ICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpCisgICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgp
KSB7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKICAgICAgICAg
TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpOworICAgIH0KIAogICAgIC8v
IENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20g
ZXhlY3V0ZVNjcmlwdCgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBwZW5kaW5nU2Ny
aXB0LnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKTsKQEAgLTI5Miw4ICsyOTcsMTIgQEAgdm9pZCBI
VE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9z
aXRpb24mIHNjcmlwdFN0YXIKICAgICAgICAgLy8gZXZlcnkgc2NyaXB0IGVsZW1lbnQsIGV2ZW4g
aWYgaXQncyBub3QgcmVhZHkgdG8gZXhlY3V0ZSB5ZXQuIFRoZXJlJ3MKICAgICAgICAgLy8gdW5m
b3J0dWFudGVseSBubyBvYnZpb3VzIHdheSB0byB0ZWxsIGlmIHByZXBhcmVTY3JpcHQgaXMgZ29p
bmcgdG8KICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgc2NyaXB0IGZyb20gb3V0IGhlcmUuCi0gICAg
ICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkKKyAgICAgICAgaWYgKCFpc0V4ZWN1dGluZ1Nj
cmlwdCgpKSB7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgICAgIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpOworI2VuZGlm
CiAgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7Cisg
ICAgICAgIH0KIAogICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJl
Y29yZChtX2hvc3QtPmlucHV0U3RyZWFtKCkpOwogICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAppbmRleCBlMjZmYjhlZjlkNWViNjYyZDY2NDgw
Mjc4NTdkYTdkYjE3YjA0YmQzLi4wZGZiMDg2Yjc4OTZjZGJlOTZiY2Y2OWI2OWFjZTA5YmZmOGY1
MWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkV2ZW50VHJhY2VyLmgiCiAjaW5j
bHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdFN1cHBvcnQu
aCIKQEAgLTgwLDYgKzgxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUHJvY2Vz
c1Rhc2soKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUHJvY2Vzc1Rhc2soKQogICAgIHsKKyNp
ZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICAgICBXZWJDb3JlOjpDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MoKTsKKyNlbmRpZgogICAgICAg
ICBXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CiAgICAg
fQogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAyZTU4NGVhMjBiZTg4NWY2OTUzMzc1OGM1MjdjZTg0MzdiMjU4OWI3Li42
NjA3MjRhOWI1YTliMzMxNWYzMWY2NTEzMGExYjkwZTRmYzc2YWVjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIEN1c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJhY2siIGxpZmVjeWNsZSBjYWxs
YmFjayBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVs
ZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
Y3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1l
bnQtcmVlbnRyYW5jeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRpb24tYXBp
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1yZWFkeS1jcmVhdGlvbi1hcGkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1yZWFkeS1pbm5lckhUTUwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWlubmVySFRNTC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBhcnNlci1vbmx5
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtcmVhZHktcGFyc2VyLW9ubHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJzZXItc2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJzZXItc2NyaXB0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFz
dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LXBhc3RlLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTIxICBQZXRlciBLYXN0aW5n
ICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFRlc3QgZXhwZWN0
YXRpb25zIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20v
bGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1y
ZWN1cnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzODIzYTgzMmE3YTA4MzAyOGFmNzg3
Njg2MzkyZGRkYWU1MjYzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBVbmNhdWdodCBS
YW5nZUVycm9yOiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4KK1BBU1MgdW5sZXNz
IGNyYXNoCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFk
eS1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQxZDM5ZTc0MThmODI2Y2MyZDYwNzAzZWFjZWZhMDk5MzIwNWM5NjkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0
ZUVsZW1lbnQtcmVjdXJzaW9uLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5y
ZWdpc3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOwor
ZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRN
TEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IGZ1bmN0aW9uICgp
IHsgdGhpcy5pbm5lckhUTUwgPSAiPHgtZm9vPkhlbGxvPC94LWZvbz4iOyB9IH0gfSkgfSk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Citkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworZGVidWcoIlBBU1MgdW5sZXNzIGNyYXNoIik7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVh
ZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWRj
YzE4MzdjMjU2YjY4OTZiMWJlMzlmOTBjMGYxZTRkNWMzNDFhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50
LXJlZW50cmFuY3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNlci1tYWRlIGVsZW1lbnQg
aXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFtdCitQQVNTIHdp
bmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTyddCitQQVNTIHdpbmRvdy5jYWxsYmFja3ND
YWxsZWQgaXMgWydYLUZPTycsICdYLUJBUiddCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQg
aXMgWydYLUZPTycsICdYLUJBUiddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJh
bmN5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkODQ4NzUxYmYyNWM0MzkzNjA3ZWJkNGNiYjllYzQ2ZmI5
ODhhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWwKQEAgLTAsMCArMSwzNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBh
cnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLiIp
Citkb2N1bWVudC5yZWdpc3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtp
dFJlZ2lzdGVyOworCit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107CisKK2Z1bmN0aW9uIGZv
b0NyZWF0ZWRGdW5jdGlvbigpIHsKKyAgc2hvdWxkQmUoIndpbmRvdy5jYWxsYmFja3NDYWxsZWQi
LCAiW10iKTsKKyAgd2luZG93LmNhbGxiYWNrc0NhbGxlZC5wdXNoKHRoaXMudGFnTmFtZSk7Cisg
IHRoaXMuaW5uZXJIVE1MID0gIjx4LWJhcj48L3gtYmFyPiI7CisgIHNob3VsZEJlKCJ3aW5kb3cu
Y2FsbGJhY2tzQ2FsbGVkIiwgIlsnWC1GT08nLCAnWC1CQVInXSIpOworfQorCitmdW5jdGlvbiBi
YXJDcmVhdGVkRnVuY3Rpb24oKSB7CisgIHNob3VsZEJlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVk
IiwgIlsnWC1GT08nXSIpOworICB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkLnB1c2godGhpcy50YWdO
YW1lKTsKK30KKworZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVj
dC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6
IGZvb0NyZWF0ZWRGdW5jdGlvbiB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwg
eyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5
Q2FsbGJhY2s6IHsgdmFsdWU6IGJhckNyZWF0ZWRGdW5jdGlvbiB9IH0pIH0pOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZv
byIpOworc2hvdWxkQmUoIndpbmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiWydYLUZPTycsICdYLUJB
UiddIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRpb24tYXBpLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3Jl
YXRpb24tYXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTNjOWNmMWZhYjU4MzgwZDgzNWEw
ZTM2MjNhYzQwOWI0NDM4ZWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGlvbi1hcGktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjUgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFj
a3Mgb2YgQVBJLW9yaWdpbmF0ZWQgZWxlbWVudHMgYXJlIHZpc2libGUgaW4gZm9sbG93aW5nIHNj
cmlwdCBibG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgneC1mb28nKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQgaXMg
dHJ1ZQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwnLCAneC1mb28nKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2Jywg
J3gtYmFyJykuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9vLmNsb25lTm9kZSgpLmNh
bGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGZvby5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGls
ZC5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBiYXIuY2xvbmVOb2RlKCkuY2FsbGJhY2tz
Q2FsbGVkIGlzIHRydWUKK1BBU1MgYmFyLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkLmNhbGxi
YWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGZvcmVpZ25Gb28uY2FsbGJhY2tzQ2FsbGVkIGlzIHVu
ZGVmaW5lZC4KK1BBU1MgZm9yZWlnbkZvby5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB1
bmRlZmluZWQuCitQQVNTIGltcG9ydGVkRm9vLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNT
IGltcG9ydGVkRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1Mgd2lu
ZG93LmNhbGxiYWNrc0NhbGxlZCBpcyBbXQorUEFTUyBpbXBvcnRlZEJhci5jYWxsYmFja3NDYWxs
ZWQgaXMgdHJ1ZQorUEFTUyBpbXBvcnRlZEJhci5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBp
cyB0cnVlCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydESVYnLCAnWC1GT08nXQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRp
b24tYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5
LWNyZWF0aW9uLWFwaS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNmRjYWU4MDcxOGZmMjdiMWIxMzcwZTUy
YzIxNTRkNDUyMTY4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9j
dXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0aW9uLWFwaS5odG1sCkBAIC0wLDAgKzEsNjIgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2tzIG9mIEFQSS1v
cmlnaW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2su
IikKK3dpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSBbXTsKK2Z1bmN0aW9uIG1hcmtpbmdSZWFkeUNh
bGxiYWNrKCkgeworICAgIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUp
OworICAgIHRoaXMuY2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsKK30KKworZG9jdW1lbnQucmVnaXN0
ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK2RvY3Vt
ZW50LnJlZ2lzdGVyKCJ4LWZvbyIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVt
ZW50LnByb3RvdHlwZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBtYXJraW5nUmVhZHlDYWxs
YmFjayB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwgeyBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsg
dmFsdWU6IG1hcmtpbmdSZWFkeUNhbGxiYWNrIH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9Imhvc3QiPjwvZGl2
PgorCis8c2NyaXB0PgorCitzaG91bGRCZVRydWUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3gt
Zm9vJykuY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicsICd4LWJhcicpLmNhbGxiYWNrc0NhbGxlZCIpOworCitzaG91bGRCZVRydWUo
ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcs
ICd4LWZvbycpLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2JywgJ3gtYmFy
JykuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3ZhciBmb28gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd4LWZvbycpOworZm9vLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdics
ICd4LWJhcicpKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vLmNsb25lTm9kZSgpLmNhbGxiYWNrc0NhbGxl
ZCIpOworc2hvdWxkQmVUcnVlKCJmb28uY2xvbmVOb2RlKHRydWUpLmZpcnN0Q2hpbGQuY2FsbGJh
Y2tzQ2FsbGVkIik7CisKK3ZhciBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCAn
eC1iYXInKTsKK2Jhci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycp
KTsKK3Nob3VsZEJlVHJ1ZSgiYmFyLmNsb25lTm9kZSgpLmNhbGxiYWNrc0NhbGxlZCIpOworc2hv
dWxkQmVUcnVlKCJiYXIuY2xvbmVOb2RlKHRydWUpLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVk
Iik7CisKK3ZhciBmb3JlaWduRG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9j
dW1lbnQoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbCcsIG51bGwpOworCit2
YXIgZm9yZWlnbkZvbyA9IGZvcmVpZ25Eb2MuY3JlYXRlRWxlbWVudCgneC1mb28nKTsKK2ZvcmVp
Z25Gb28uYXBwZW5kQ2hpbGQoZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXIn
KSk7CitzaG91bGRCZVVuZGVmaW5lZCgiZm9yZWlnbkZvby5jYWxsYmFja3NDYWxsZWQiKTsKK3No
b3VsZEJlVW5kZWZpbmVkKCJmb3JlaWduRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7
CitpbXBvcnRlZEZvbyA9IGRvY3VtZW50LmltcG9ydE5vZGUoZm9yZWlnbkZvbykKK3Nob3VsZEJl
VHJ1ZSgiaW1wb3J0ZWRGb28uY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImltcG9y
dGVkRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3dpbmRvdy5jYWxsYmFja3ND
YWxsZWQgPSBbXTsKK3ZhciBmb3JlaWduQmFyID0gZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCdk
aXYnLCAneC1iYXInKTsKK2ZvcmVpZ25CYXIuYXBwZW5kQ2hpbGQoZm9yZWlnbkRvYy5jcmVhdGVF
bGVtZW50KCd4LWZvbycpKTsKK3Nob3VsZEJlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIiwgIltd
Iik7CitpbXBvcnRlZEJhciA9IGRvY3VtZW50LmltcG9ydE5vZGUoZm9yZWlnbkJhcik7CitzaG91
bGRCZVRydWUoImltcG9ydGVkQmFyLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJp
bXBvcnRlZEJhci5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmUoIndpbmRv
dy5jYWxsYmFja3NDYWxsZWQiLCAiWydESVYnLCAnWC1GT08nXSIpOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtcmVhZHktaW5uZXJIVE1MLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZDUxNmYzMTdhMjk0NzMxNjNkMTViOTMxMDA0MDY2OTc1MzgyNDYzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1p
bm5lckhUTUwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNlci1tYWRlIGVsZW1lbnQgaXMg
dmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnYScsICdiJywgJ2Mn
XQorUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnYScsICdiJywgJ2MnXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktaW5uZXJIVE1MLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWlubmVySFRN
TC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFmMDI4ZWRjOWRlMjM4M2MwOWYwZmMzYTRhOWIyMzJkMDk5Yjdi
ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LWlubmVySFRNTC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50
IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQucmVnaXN0
ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKKword2lu
ZG93LmNhbGxiYWNrc0NhbGxlZCA9IFtdOworCitmdW5jdGlvbiB0cmFja2luZ1JlYWR5Q2FsbGJh
Y2soKQoreworICAgIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVzaCh0aGlzLmlkKTsKK30KKwor
ZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRN
TEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IHRyYWNraW5nUmVh
ZHlDYWxsYmFjayB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwgeyBwcm90b3R5
cGU6IE9iamVjdC5jcmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJh
Y2s6IHsgdmFsdWU6IHRyYWNraW5nUmVhZHlDYWxsYmFjayB9IH0pIH0pOworZG9jdW1lbnQucmVn
aXN0ZXIoIngtYmF6IiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJv
dG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IHRyYWNraW5nUmVhZHlDYWxsYmFjayB9
IH0pIH0pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+
Cis8c2NyaXB0PgorLy8gVGVzdGluZyBlbGVtZW50IHNpYmxpbmdzCit3aW5kb3cuY2FsbGJhY2tz
Q2FsbGVkID0gW107Citjb250YWluZXIuaW5uZXJIVE1MID0gIjx4LWZvbyBpZD0nYSc+PC94LWZv
bz48ZGl2IGlkPSdiJyBpcz0neC1iYXInPjwvZGl2Pjx4LWJheiBpZD0nYyc+PC94LWJhej4iOwor
c2hvdWxkQmUoIndpbmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiWydhJywgJ2InLCAnYyddIik7CisK
Ky8vIFRlc3RpbmcgbmVzdGVkIGVsZW1lbnRzCit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107
Citjb250YWluZXIuaW5uZXJIVE1MID0gIjx4LWZvbyBpZD0nYSc+PGRpdiBpZD0nYicgaXM9J3gt
YmFyJz48eC1iYXogaWQ9J2MnPjwveC1iYXo+PC9kaXY+PC94LWZvbz4iOworc2hvdWxkQmUoIndp
bmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiWydhJywgJ2InLCAnYyddIik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NmZkODA3NDViMGVmMDVmMTc1NDkxZDIzODExYjE1YjljZjM4YjRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1y
ZWFkeS1wYXJzZXItb25seS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNwYW4+SGVsbG88L3NwYW4+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJl
YWR5LXBhcnNlci1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LXBhcnNlci1vbmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM4MTE1ZTE3MjBmZDYyYzBk
MTFiYjAxZWNhZTk2MzQ2MDhhYTM5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLW9ubHkuaHRtbApAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1l
bnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3Rl
cjsKK3Byb3RvID0gT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlD
YWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHRoaXMuaW5uZXJIVE1MID0gIkhlbGxvIjsg
fSB9IH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IHByb3RvIH0p
OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzx4LWZvbz48L3gtZm9vPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1yZWFkeS1wYXJzZXItc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzRjN2VmN2I3ZDUzMGI5NjRjYmNmZjc4YWM3OTJmMDQxMTg3MmM3ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFy
c2VyLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBp
cyB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLXNjcmlw
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJz
ZXItc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1YmViNjc0OGEyODUzYTFhOTAzZDExODM2YjZl
YmFjNmVlZWNhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXIt
bWFkZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9j
dW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdp
c3RlcjsKK3Byb3RvID0gT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVh
ZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQg
PSB0cnVlOyB9IH0gfSk7Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTog
cHJvdG8gfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHgtZm9vPjwveC1mb28+Cis8
c2NyaXB0Pgorc2hvdWxkQmVUcnVlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIik7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFzdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXN0ZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDNmYjNkZTY5OWUwY2M0YWRiODczNDZhN2VkZmQ4NzNkMjc1YjIzMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFz
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQg
dGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmlnaW5hdGVkIGVsZW1lbnRzIGFy
ZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycsICdE
SVYnXQorUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnWC1GT08nLCAnRElWJywgJ1gt
Rk9PJywgJ0RJViddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1yZWFkeS1wYXN0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1yZWFkeS1wYXN0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYTRiN2NiZTdmMDM0YmNkOWRmMWQ0OGMy
YTY3Mjg4ZmU1OWZjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9j
dXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBhc3RlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmln
aW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikK
K2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0
UmVnaXN0ZXI7Cit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107Citkb2N1bWVudC5yZWdpc3Rl
cigieC1mb28iLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5
cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFj
a3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Citkb2N1bWVudC5yZWdpc3Rl
cigieC1iYXIiLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90
b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxs
YmFja3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIiBjb250ZW50ZWRpdGFibGU+Wzx4LWZv
bz5Gb288L3gtZm9vPjxkaXYgaXM9J3gtYmFyJz5CYXI8L2Rpdj5dPC9kaXY+Cis8c2NyaXB0Pgor
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworc2VsZWN0aW9uLnNlbGVj
dEFsbENoaWxkcmVuKGNvbnRhaW5lcik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIpOwor
CitzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJViddIik7
CitzZWxlY3Rpb24uY29sbGFwc2VUb0VuZCgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3Rl
Iik7CitzaG91bGRCZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJVics
ICdYLUZPTycsICdESVYnXSIpOworCitjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194477</attachid>
            <date>2013-03-22 02:13:46 -0700</date>
            <delta_ts>2013-03-22 07:54:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112538-20130322180933.patch</filename>
            <type>text/plain</type>
            <size>54056</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk4M2Y2ZWJmMDc1OTVjYjBkMzM2YTQz
MDlhNzgzNGRiZGRlMzYwMjguLjk3OWMxMDViYzU0ZDdiNmQ0ZDU1YTE1M2Y2YmZlNjMxZTljN2Mw
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIEN1c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJh
Y2siIGxpZmVjeWNsZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRWxsaW90dCBTcHJlaG4uCisKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAg
ICAoV1RGOjpjb3B5VG9WZWN0b3IpOiBHZW5lcmFsaXplZCB0byBsZXQgaXQgYWNjZXB0IHZhcmlh
bnRzIGxpa2UgTGlzdEhhaHNTZXQgaW5zdGVhZCBvZiBvbmx5IEhhc2hTZXQuCisKIDIwMTMtMDMt
MjIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDY1MzQgYW5kIHIxNDY1NjUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMmNlOTA4ZWVlMWYyNjk3Y2ZmNGQ5NjM5NjJjYTZhNTMwZjFmYmFlMi4uNzU5ZDlmY2VkOGEx
ZmY1NzE4ZTcxNjcxNWU2NjY1MDg5YzVlMGQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBA
QAorMjAxMy0wMy0yMSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgQ3VzdG9tIEVsZW1lbnRzOiAicmVhZHlDYWxsYmFjayIgbGlmZWN5Y2xlIGNhbGxiYWNr
IHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTI1MzgKKworICAgICAgICBSZXZpZXdlZCBieSBFbGxpb3R0IFNwcmVobi4K
KworICAgICAgICBUaGlzIGNoYW5nZSBhbGxvd3MgZWFjaCBjdXN0b20gZWxlbWVudCBkZWZpbml0
aW9uIHRvIGhvb2sgdXAgaXRzIGluc3RhbnRpYXRpb24sCisgICAgICAgIG5hbWVseSAicmVhZHlD
YWxsYmFjayIgbGlmZWN5Y2xlIGNhbGxiYWNrLgorCisgICAgICAgIFRoZSBjaGFuZ2UgaGFzIHR3
byBwYXJ0czoKKyAgICAgICAgLSAxLiBUcmFja2luZyB3aGljaCBFbGVtZW50IG9iamVjdHMgdG8g
YmUgY3JlYXRlZC4KKyAgICAgICAgLSAyLiBJbnZva2luZyBhcHByb3ByaWF0ZSBKYXZhU2NyaXB0
IGZ1bmN0aW9ucywgd2hpY2ggYXJlIHJlYWR5Q2FsbGJhY2soKSwKKyAgICAgICAgICBiZWZvcmUg
dGhlIEVsZW1lbnQgb2JqZWN0IGlzIHZpc2libGUgZnJvbSBwYWdlIHNjcmlwdC4KKworICAgICAg
ICBGb3IgMSwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IG1haW50YWlucyBsaXN0IG9mICJjYWxsYmFj
aworICAgICAgICBpbnZvY2Fpb25zIi4gIEVhY2ggbGlzdCBpdGVtICgiaW52b2NhdGlvbiIpIHRy
YWNrcyB0aGUgZWxlbWVudAorICAgICAgICB3aGljaCBoYXMgYSBsaWZlY3ljbGUgY2FsbGJhY2sg
dG8gYmUgaW52b2tlZC4gRWFjaCBpbnZvY2F0aW9uIGlzCisgICAgICAgIHJlZ2lzdGVyZWQgd2hl
biAtIEFueSBjdXN0b20gZWxlbWVudCBDKysgb2JqZWN0IGlzIGluc3RhbnRpYXRlZC4KKyAgICAg
ICAgU2VlIGNoYW5nZXMgb24gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmNwcC4KKworICAgICAg
ICBUaGlzIGFsc28gaGFwcGVucyB3aGVuIEBpcyBhdHRyaWJ1dGUgaXMgc2V0IGJ5IHRoZSBwYXJz
ZXIgb3Igbm9kZQorICAgICAgICBjbG9uaW5nIHJvdXRpbmUsIHdoaWNoIGNhbiB0dXJuIGEgbm9u
LWN1c3RvbSBlbGVtZW50IGludG8gYQorICAgICAgICB0eXBlLWV4dGVuZGVkIGN1c3RvbSBlbGVt
ZW50LiBTZWUgY2hhbmdlcyBvbiBFbGVtZW50LmNwcC4KKworICAgICAgICBGb3IgMiwgQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5IGJhc2ljYWxseSBmb2xsb3dzIHdoYXQKKyAgICAgICAgTXV0YXRpb25P
YnNlcnZlciBpcyBkb2luZywgYW5kIGludHJvZHVjZXMgYSBtZXRob2QgY2FsbGVkCisgICAgICAg
IGRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKS4gVGhpcyBmdW5jdGlvbiBmbHVzaGVzIGFsbCBw
ZW5kaW5nCisgICAgICAgIGNhbGxiYWNrIGludm9jYXRpb25zLiBZb3UgY2FuIHRoaW5rIGl0IGFz
IGEgZHVhbCBvZgorICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25z
KCkuCisKKyAgICAgICAgVGhlIGRlbGl2ZXJ5IGZ1bmN0aW9uIGlzIGNhbGxlZCBwbGFjZXMgd2hl
cmUgTXV0YXRpb25PYnNlcnZlcidzCisgICAgICAgIGRlbGl2ZXJBbGxNdXRhdGlvbnMoKSBpcyBj
YWxsZWQuIEluIGFkZGl0aW9uLCBpdCBpcyBhbHNvIGNhbGxlZAorICAgICAgICBqdXN0IGJlZm9y
ZSByZXR1cm5pbmcgZnJvbSBhIHNldCBvZiBET00gQVBJcy4gRm9yIGV4YW1wbGUsIGl0IGlzCisg
ICAgICAgIGNhbGxlZCBqdXN0IGJlZm9yZSBjcmVhdGVFbGVtZW50KCkgcmV0dXJucywgc28gdGhh
dCBwb3NzaWJseQorICAgICAgICBjcmVhdGVkIGN1c3RvbSBlbGVtZW50IGJlY29tZXMgcmVhZHkg
dGhyb3VnaCBpdHMgcmVhZHlDYWxsYmFjaygpLgorICAgICAgICBTdWNoIEFQSXMgZ2V0ICJWOERl
bGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzIiBJREwgYXR0cmlidXRlLiBJbgorICAgICAgICBw
cmluY2lwbGUsIEFQSXMgd2hpY2ggY2FuIGNyZWF0ZSBuZXcgY3VzdG9tIGVsZW1lbnQgaW5zdG5h
Y2VzIGFyZQorICAgICAgICBtYXJrZWQuIFNlZSBDdXN0b21FbGVtZW50UmVnaXN0cnk6OkNhbGxi
YWNrRGVsaXZlcnlTY29wZSBhbmQKKyAgICAgICAgY2hhbmdlcyBvbiBDb2RlR2VuZXJhdG9yVjgu
cG0uCisKKyAgICAgICAgV2UgbmVlZCB0aGlzIGV4dHJhIHdvcmsgYmVjYXVzZSB0aGUgcmVhZHlD
YWxsYmFjaygpIG5lZWRzIHRvIGdpdmUKKyAgICAgICAgYW4gaWxsdXNpb24gc28gdGhhdCBKYXZh
U2NyaXB0IHByb2dyYW1tZXJzIGZlZWwgbGlrZSB0aGUKKyAgICAgICAgcmVhZHlDYWxsYmFjaygp
IGNhbGxiYWNrIGJlaW5nIGNhbGxlZCBqdXN0IGFmdGVyIGl0IGlzIGNyZWF0ZWQsCisgICAgICAg
IGluc3RlYWQgb2YgY2FsbGVkIG9uIGFyYml0cmFyeSBsYXRlIHRpbWluZyBsaWtlIE11dGF0aW9u
T2JzZXJ2ZXIKKyAgICAgICAgbm90aWZpY2F0aW9ucy4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1l
bnQtcmVlbnRyYW5jeS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LWNyZWF0aW9uLWFwaS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jdXN0
b20vbGlmZWN5Y2xlLXJlYWR5LWlubmVySFRNTC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBhcnNlci1vbmx5Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLXNjcmlwdC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBhc3RlLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAt
IEhvb2tlZCB1cCBDYWxsYmFja0RlbGl2ZXJ5U2NvcGUgdGhyb3VnaCBWOERlbGl2ZXJDdXN0b21F
bGVtZW50Q2FsbGJhY2tzIGF0dHJpdXRlLgorICAgICAgICAoR2VuZXJhdGVDdXN0b21FbGVtZW50
SW52b2NhdGlvblNjb3BlSWZOZWVkZWQpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyU2V0
dGVyKToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3MvdjgvQ3VzdG9tRWxl
bWVudEhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudEhlbHBlcnM6
Omludm9rZVJlYWR5Q2FsbGJhY2tJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50SGVscGVyczo6aW52b2tlUmVhZHlDYWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaDoKKyAgICAgICAgKEN1c3RvbUVsZW1l
bnRIZWxwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcDog
QWRkZWQgZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrcygpCisgICAgICAgIChXZWJDb3JlOjpW
OFJlY3Vyc2lvblNjb3BlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQpOgorICAgICAgICAqIGRvbS9D
dXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKiBk
b20vQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50Q29uc3RydWN0b3I6OmlzRXh0ZW5kZWQpOgorICAgICAgICAoQ3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDogQWRk
aW5nIGVsZW1lbnQgdHJhY2tpbmcgYW5kIGludm9jYXRpb24gZXhlY3V0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRWxlbWVudEludm9jYXRpb246OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjp+Q3VzdG9tRWxl
bWVudEludm9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlQ3VzdG9tRWxlbWVudFJl
Z2lzdHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojp+Q3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdp
c3RyeTo6ZGlkR2l2ZVR5cGVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpkaWRDcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpkZWFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3MpOgor
ICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaDoKKyAgICAgICAgKEN1c3RvbUVs
ZW1lbnRJbnZvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRJbnZvY2F0
aW9uOjplbGVtZW50KToKKyAgICAgICAgKENhbGxiYWNrRGVsaXZlcnlTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OkNhbGxiYWNrRGVsaXZlcnlTY29wZTo6
Q2FsbGJhY2tEZWxpdmVyeVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6Q2FsbGJhY2tEZWxpdmVyeVNjb3BlOjp+Q2FsbGJhY2tEZWxpdmVyeVNjb3BlKToK
KyAgICAgICAgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3NJZk5lZWRlZCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDcmVhdGVD
dXN0b21FbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3Vt
ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFy
c2VyT3JCeUNsb25pbmcpOiBBZGRlZCB0byBjYXRjaCBAaXMgYXR0cmlidXRlCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9v
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6IEFkZGVkIGRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxs
YmFja3MoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRp
bmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRS
dW5uZXI6OnJ1blNjcmlwdCk6CisKIDIwMTMtMDMtMjIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9j
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBHZW9sb2NhdGlvbkNsaWVudC5oIHRvIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0ZmI4ZjE2
YmE0YmExZmFjNjY3NDJjNTU3MTYwNWM3NmQ4ZTczZDIuLmYyMzU1MmQ4NTE0OGE4M2Y4YmM5OGJh
NjNkMmE0NTAxMTJiMDM2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMDMtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIEN1c3RvbSBFbGVtZW50czogInJlYWR5Q2FsbGJhY2siIGxpZmVjeWNsZSBjYWxs
YmFjayBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEyNTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRWxsaW90dCBTcHJl
aG4uCisKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDogQWRkZWQgZGVsaXZlckFsbExpZmVjeWNs
ZUNhbGxiYWNrcygpCisKIDIwMTMtMDMtMjIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDY1MzQg
YW5kIHIxNDY1NjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXggZTQ1ZDAyOGI1ZjRiYTZhNjhmNTg5NWI4MGJkOWQ3
MjI4ODYxYzcyNi4uNjViNjQyYTEyOGJjMjljMDA4OTUyMmYwOGQ3ZTNjNWNlMjdiYmUzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaApAQCAtMjQzLDEwICsyNDMsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGRl
bGV0ZUFsbFZhbHVlczx0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+OjpWYWx1ZVR5cGU+KGNvbGxl
Y3Rpb24ubV9pbXBsKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgotICAgIGlubGluZSB2b2lkIGNvcHlUb1ZlY3Rv
cihjb25zdCBIYXNoU2V0PFQsIFUsIFY+JiBjb2xsZWN0aW9uLCBXJiB2ZWN0b3IpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgVz4KKyAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0
b3IoY29uc3QgQyYgY29sbGVjdGlvbiwgVyYgdmVjdG9yKQogICAgIHsKLSAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKKyAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICAgICAg
ICAgCiAgICAgICAgIHZlY3Rvci5yZXNpemUoY29sbGVjdGlvbi5zaXplKCkpOwogICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggMDcxN2Y0Y2YyYzljNDZiODRlZWQ1ODNhNmUxYWRlZmU0MzYxYWQ4Zi4uM2UxMjEx
ZWJlMjYyNjhjMDMzZDBhYjJlNWVkYmZlMjZkZDlkYzAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTEyNTYsNiArMTI1
NiwyNSBAQCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVDdXN0b21FbGVtZW50SW52b2NhdGlv
blNjb3BlSWZOZWVkZWQKK3sKKyAgICBteSAkb3V0ID0gc2hpZnQ7CisgICAgbXkgJGV4dCA9IHNo
aWZ0OworCisgICAgaWYgKCRleHQtPnsiVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrcyJ9
KSB7CisgICAgICAgIGlmICgkZXh0LT57IlJlZmxlY3QifSkgeworICAgICAgICAgICAgZGllICJJ
REwgZXJyb3I6IFJlZmxlY3QgYW5kIFY4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3MgY2Fu
bm90IGNvZXhpc3QgeWV0IjsKKyAgICAgICAgfQorCisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIsICJDVVNUT01fRUxFTUVOVFMiKTsKKyAgICAgICAg
cHVzaChAJG91dCwgPDxFTkQpOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OjpDYWxsYmFja0RlbGl2ZXJ5U2NvcGUgZGVsaXZlcnlTY29wZTsK
KyNlbmRpZgorRU5ECisgICAgfQorfQorCiBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyQ2Fs
bGJhY2sKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CkBAIC0xNDA0LDYgKzE0MjMsOCBA
QCBFTkQKICAgICAgICAgJHJlc3VsdCA9ICJXVEY6OmdldFB0cigiIC4gJHJlc3VsdCAuICIpIjsK
ICAgICB9CiAKKyAgICBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRl
ZChcQGltcGxDb250ZW50SW50ZXJuYWxzLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcyk7CisKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRl
LT5zZXR0ZXJFeGNlcHRpb25zfTsKIAogICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewpAQCAtMTcw
MSw2ICsxNzIyLDggQEAgRU5ECiBFTkQKICAgICB9CiAKKyAgICBHZW5lcmF0ZUN1c3RvbUVsZW1l
bnRJbnZvY2F0aW9uU2NvcGVJZk5lZWRlZChcQGltcGxDb250ZW50SW50ZXJuYWxzLCAkZnVuY0V4
dCk7CisKICAgICAjIENoZWNrIGRvbWFpbiBzZWN1cml0eSBpZiBuZWVkZWQKICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSAmJiAhJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHki
fSkgewogICAgICAgICAjIFdlIGhhdmUgbm90IGZpbmQgcmVhbCB1c2UgY2FzZXMgeWV0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKaW5k
ZXggNjY5MjhlNzkyMTM3MTllYTk3MGM2MzJjZGNlYTM2NWZhNWM2MDRlMy4uNTljOWIwNWYyMTgy
Yjc1MWIyZGZjMDA1OTc4MGFlODFkMGQ4MmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC0xMzMsMyArMTMzLDQgQEAgVjhS
ZWFkT25seQogVjhTa2lwVlRhYmxlVmFsaWRhdGlvbgogVjhVbmZvcmdlYWJsZQogVjhXcmFwQXNG
dW5jdGlvbgorVjhEZWxpdmVyQ3VzdG9tRWxlbWVudENhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCmluZGV4IDJjZDVj
YTQwMWU3YTRjMzczNjk2MTkyOWUwZjgxMThhMjAxMzU4ZTMuLjYxODM4OWZkMzdjMzk3MWFhMzI1
MGI0YzlhM2RhMjY1MWU1MGI1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50SGVscGVycy5oIgogCisjaW5jbHVk
ZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVjhIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiVjhIVE1MUGFyYWdyYXBoRWxlbWVudC5oIgpAQCAtMTM4LDYgKzE0MCw0NCBA
QCBjb25zdCBRdWFsaWZpZWROYW1lKiBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZExvY2FsTmFt
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIGZpbmRIVE1MVGFnTmFtZU9mVjhU
eXBlKHR5cGUpOwogfQogCit2b2lkIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbnZva2VSZWFkeUNh
bGxiYWNrSWZOZWVkZWQoRWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlclZhbHVlID0gdG9W
OChlbGVtZW50LCBjb250ZXh0LT5HbG9iYWwoKSwgY29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKKyAg
ICBpZiAod3JhcHBlclZhbHVlLklzRW1wdHkoKSB8fCAhd3JhcHBlclZhbHVlLT5Jc09iamVjdCgp
KQorICAgICAgICByZXR1cm47CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyVmFsdWUpOworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1ZSA9IHdyYXBwZXItPkdldFByb3RvdHlwZSgpOwor
ICAgIGlmIChwcm90b3R5cGVWYWx1ZS5Jc0VtcHR5KCkgfHwgIXByb3RvdHlwZVZhbHVlLT5Jc09i
amVjdCgpKQorICAgICAgICByZXR1cm47CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90
b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHByb3RvdHlwZVZhbHVlKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY3Rpb25WYWx1ZSA9IHByb3RvdHlwZS0+R2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgicmVhZHlDYWxsYmFjayIpKTsKKyAgICBpZiAoZnVuY3Rpb25W
YWx1ZS5Jc0VtcHR5KCkgfHwgIWZ1bmN0aW9uVmFsdWUtPklzRnVuY3Rpb24oKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uVmFsdWUpOworICAgIHY4OjpUcnlDYXRj
aCBleGNlcHRpb25DYXRjaGVyOworICAgIGV4Y2VwdGlvbkNhdGNoZXIuU2V0VmVyYm9zZSh0cnVl
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnc1tdID0geyB9OworICAgIFNjcmlwdENv
bnRyb2xsZXI6OmNhbGxGdW5jdGlvbldpdGhJbnN0cnVtZW50YXRpb24oZWxlbWVudC0+ZG9jdW1l
bnQoKSwgZnVuY3Rpb24sIHdyYXBwZXIsIDAsIGFyZ3MpOworfQorCisKK3ZvaWQgQ3VzdG9tRWxl
bWVudEhlbHBlcnM6Omludm9rZVJlYWR5Q2FsbGJhY2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogZXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVmVjdG9yPEN1c3RvbUVsZW1lbnRJbnZv
Y2F0aW9uPiYgaW52b2NhdGlvbnMpCit7CisgICAgQVNTRVJUKCFpbnZvY2F0aW9ucy5pc0VtcHR5
KCkpOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQgPSB0b1Y4Q29udGV4dChleGVjdXRpb25Db250ZXh0LCBtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnZvY2F0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAg
ICBBU1NFUlQoZXhlY3V0aW9uQ29udGV4dCA9PSBpbnZvY2F0aW9uc1tpXS5lbGVtZW50KCktPmRv
Y3VtZW50KCkpOworICAgICAgICBpbnZva2VSZWFkeUNhbGxiYWNrSWZOZWVkZWQoaW52b2NhdGlv
bnNbaV0uZWxlbWVudCgpLCBjb250ZXh0KTsKKyAgICB9Cit9CisKICNlbmRpZiAvLyBFTkFCTEUo
Q1VTVE9NX0VMRU1FTlRTKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaAppbmRleCBmMjkwZjU0
ODgwZDA5NzQyNTcyYTlkZDRmODQyOTcwZWMwYmI1MTA4Li44NjExODE5ZTg3NWY2MmZkNzRmZjNj
OTg5NTJhYzg4MTFjNmU3NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9DdXN0b21FbGVtZW50SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKQEAgLTMzLDEyICszMywxNSBAQAogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKIAogY2xhc3MgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOworY2xhc3MgQ3VzdG9t
RWxlbWVudEludm9jYXRpb247CitjbGFzcyBFbGVtZW50OwogY2xhc3MgUXVhbGlmaWVkTmFtZTsK
IGNsYXNzIFNjcmlwdFN0YXRlOwogCkBAIC01Miw2ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgaXNGZWF0dXJlQWxsb3dlZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAg
c3RhdGljIFdyYXBwZXJUeXBlSW5mbyogZmluZFdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjaGFpbik7CiAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGZpbmRMb2NhbE5h
bWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbik7CisKKyAgICBzdGF0aWMgdm9pZCBpbnZv
a2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBW
ZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRpb24+Jik7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IHZvaWQgaW52b2tlUmVhZHlDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0Pik7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAKaW5kZXgg
YmQ5MjQ4MTUyOTJkOWYwYWJmZjJkZDRiYjA2Nzc2MDAxYTFiNzY3Yy4uMmMyZjk1NTJmNmFjYzNm
ZTJmNTY2MGI4MTM4YzNlMWE4YWQ4ZmZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAKKyNpbmNsdWRlICJDdXN0
b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25p
dG9yLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogCkBAIC00Niw4ICs0NywxMiBA
QCB2b2lkIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpCiAgICAgSURC
UGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygpOwog
I2VuZGlmCiAKLSAgICBpZiAobV9pc0RvY3VtZW50Q29udGV4dCkKKyAgICBpZiAobV9pc0RvY3Vt
ZW50Q29udGV4dCkgewogICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRp
b25zKCk7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisjZW5kaWYKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzQzMTk3MThlN2FjNDlmMGY1OGE3ZmZj
OTNmZWFkOTU2YzVlMDNiYy4uZjM5YTJlZDU0YzBlODQ3MTQxYTRhNWQ3MGQ2YjE3N2UyMmY4OTkz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTYzLDcgKzYzLDE1IEBAIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcjo6fkN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3RvcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkgY29uc3QKK1Bhc3NSZWZQdHI8RWxlbWVu
dD4gQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yOjpjcmVhdGVFbGVtZW50KCkKK3sKKyAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRJbnRlcm5hbCgpOworICAgIGlmIChl
bGVtZW50KQorICAgICAgICBkb2N1bWVudCgpLT5kaWRDcmVhdGVDdXN0b21FbGVtZW50KGVsZW1l
bnQuZ2V0KCksIHRoaXMpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworUGFz
c1JlZlB0cjxFbGVtZW50PiBDdXN0b21FbGVtZW50Q29uc3RydWN0b3I6OmNyZWF0ZUVsZW1lbnRJ
bnRlcm5hbCgpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCAwZWVk
NzlhZTU4MzliM2M4ZDNkNDZjMmUxMWMyODhlMmZmYTg4OGI0Li45YWNjY2Q3ZDdlNWRiOGIxODJl
MjAyNjYyZTA4ZGM5YjQzYmRkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC01OSwxMiArNTksMTUgQEAgcHVibGljOgogICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTmFtZTsgfQogICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxOYW1lOyB9CisgICAgYm9vbCBp
c0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSAhPSBtX2xvY2FsTmFtZTsgfQog
Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KCkgY29uc3Q7CisgICAgUGFz
c1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KCk7CiAKIHByaXZhdGU6CiAgICAgQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yKERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZU5h
bWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvY2FsTmFtZSk7CiAKKyAgICBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRJbnRlcm5hbCgpOworCiAgICAgUXVhbGlmaWVkTmFtZSBtX3R5
cGVOYW1lOwogICAgIFF1YWxpZmllZE5hbWUgbV9sb2NhbE5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCA2YzI4ZjI4MTkyM2I4YmZm
NzM0ZDJjMjc2ODA5M2U5MWUyMzMxOGY0Li42YTdmMmQ1MTgyYzdkM2JlOTFhNTlkNWViY2EyODUw
ODQ3ZjNkMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkhUTUxVbmtub3duRWxlbWVudC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCkBAIC01NCw2ICs1NSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0N1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbihQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sK
K30KKworQ3VzdG9tRWxlbWVudEludm9jYXRpb246On5DdXN0b21FbGVtZW50SW52b2NhdGlvbigp
Cit7Cit9CisKIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3Vt
ZW50KQogewpAQCAtNjEsNiArNzEsNyBAQCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeShEb2N1bWVudCogZG9jdW1lbnQpCiAKIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6fkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpCiB7CisgICAgZGVhY3RpdmF0ZSgpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgbmFtZUluY2x1ZGVzSHlwaGVuKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKQEAgLTE5MywxMSArMjA0LDY0IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvCiAgICAg
cmV0dXJuIDA7CiB9CiAKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRHaXZlVHlwZUV4
dGVuc2lvbihFbGVtZW50KiBlbGVtZW50KQoreworICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0b3I+IGNvbnN0cnVjdG9yID0gZmluZEZvcihlbGVtZW50KTsKKyAgICBpZiAoIWNvbnN0
cnVjdG9yIHx8ICFjb25zdHJ1Y3Rvci0+aXNFeHRlbmRlZCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgYWN0aXZhdGUoQ3VzdG9tRWxlbWVudEludm9jYXRpb24oZWxlbWVudCkpOworfQorCit2b2lk
IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudChFbGVtZW50KiBlbGVtZW50
KQoreworICAgIGFjdGl2YXRlKEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKK30K
Kwordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmFjdGl2YXRlKGNvbnN0IEN1c3RvbUVsZW1l
bnRJbnZvY2F0aW9uJiBpbnZvY2F0aW9uKQoreworICAgIGJvb2wgd2FzSW5hY3RpdmUgPSBtX2lu
dm9jYXRpb25zLmlzRW1wdHkoKTsKKyAgICBtX2ludm9jYXRpb25zLmFwcGVuZChpbnZvY2F0aW9u
KTsKKyAgICBpZiAod2FzSW5hY3RpdmUpCisgICAgICAgIGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdp
c3RyaWVzKCkuYWRkKHRoaXMpOworfQorCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVh
Y3RpdmF0ZSgpCit7CisgICAgQVNTRVJUKG1faW52b2NhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBp
ZiAoYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5jb250YWlucyh0aGlzKSkKKyAgICAg
ICAgYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5yZW1vdmUodGhpcyk7Cit9CisKIGlu
bGluZSBEb2N1bWVudCogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpkb2N1bWVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAor
dm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJMaWZlY3ljbGVDYWxsYmFja3MoKQor
eworICAgIEFTU0VSVCghbV9pbnZvY2F0aW9ucy5pc0VtcHR5KCkpOworCisgICAgaWYgKCFtX2lu
dm9jYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9j
YXRpb24+IGludm9jYXRpb25zOworICAgICAgICBtX2ludm9jYXRpb25zLnN3YXAoaW52b2NhdGlv
bnMpOworICAgICAgICBDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlUmVhZHlDYWxsYmFja3NJ
Zk5lZWRlZChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGludm9jYXRpb25zKTsKKyAgICB9CisK
KyAgICBBU1NFUlQobV9pbnZvY2F0aW9ucy5pc0VtcHR5KCkpOworICAgIGRlYWN0aXZhdGUoKTsK
K30KKwordm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxs
YmFja3MoKQoreworICAgIHdoaWxlICghYWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+
ID4gcmVnaXN0cmllczsKKyAgICAgICAgY29weVRvVmVjdG9yKGFjdGl2ZUN1c3RvbUVsZW1lbnRS
ZWdpc3RyaWVzKCksIHJlZ2lzdHJpZXMpOworICAgICAgICBhY3RpdmVDdXN0b21FbGVtZW50UmVn
aXN0cmllcygpLmNsZWFyKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0
cmllcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHJlZ2lzdHJpZXNbaV0tPmRlbGl2ZXJMaWZl
Y3ljbGVDYWxsYmFja3MoKTsKKyAgICB9Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgK
aW5kZXggMTAyYWEzZGUzOGMyMTE2OGUwYzdiNzBjNjUyOGEyYTFhOTFkZTRlNC4uODI4OWIxOWQy
NWZlNWM1YjI4ZGRhYzY2MGE0MDY5NjhmOGJmNTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuaApAQCAtNDAsOSArNDAsMTEgQEAKICNpbmNsdWRlICJTdXBw
bGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01Myw5ICs1NSwyNiBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKK2NsYXNzIEN1c3RvbUVsZW1lbnRJbnZv
Y2F0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDdXN0b21FbGVtZW50SW52b2NhdGlvbihQ
YXNzUmVmUHRyPEVsZW1lbnQ+KTsKKyAgICB+Q3VzdG9tRWxlbWVudEludm9jYXRpb24oKTsKKwor
ICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OworfTsKKwogY2xhc3Mg
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVudFJl
Z2lzdHJ5PiAsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CisgICAgY2xhc3MgQ2FsbGJhY2tEZWxpdmVyeVNjb3BlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIENhbGxiYWNrRGVsaXZlcnlTY29wZSgpIHsgfQorICAgICAgICB+Q2Fs
bGJhY2tEZWxpdmVyeVNjb3BlKCkgeyBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxM
aWZlY3ljbGVDYWxsYmFja3NJZk5lZWRlZCgpOyB9CisgICAgfTsKKwogICAgIGV4cGxpY2l0IEN1
c3RvbUVsZW1lbnRSZWdpc3RyeShEb2N1bWVudCopOwogICAgIH5DdXN0b21FbGVtZW50UmVnaXN0
cnkoKTsKIApAQCAtNjYsMTYgKzg1LDQzIEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0OwogCi1wcml2YXRlOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgZGlkR2l2ZVR5cGVFeHRlbnNpb24oRWxlbWVu
dCopOworICAgIHZvaWQgZGlkQ3JlYXRlRWxlbWVudChFbGVtZW50Kik7CiAKKyAgICBzdGF0aWMg
dm9pZCBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisgICAgc3RhdGljIHZvaWQgZGVs
aXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVlZGVkKCk7CisKK3ByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxRdWFsaWZpZWROYW1lLCBRdWFsaWZpZWROYW1lPiwgUmVm
UHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gPiBDb25zdHJ1Y3Rvck1hcDsKICAgICB0eXBl
ZGVmIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gTmFtZVNldDsKKyAgICB0eXBlZGVmIExpc3RIYXNo
U2V0PEN1c3RvbUVsZW1lbnRSZWdpc3RyeSo+IEluc3RhbmNlU2V0OworCisgICAgc3RhdGljIGJv
b2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIEluc3RhbmNl
U2V0JiBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpOworCisgICAgdm9pZCBhY3RpdmF0
ZShjb25zdCBDdXN0b21FbGVtZW50SW52b2NhdGlvbiYpOworICAgIHZvaWQgZGVhY3RpdmF0ZSgp
OworICAgIHZvaWQgZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcygpOwogCiAgICAgQ29uc3RydWN0
b3JNYXAgbV9jb25zdHJ1Y3RvcnM7CiAgICAgTmFtZVNldCBtX25hbWVzOworICAgIFZlY3RvcjxD
dXN0b21FbGVtZW50SW52b2NhdGlvbj4gbV9pbnZvY2F0aW9uczsKIH07CiAKK2lubGluZSB2b2lk
IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNrc0lmTmVl
ZGVkKCkKK3sKKyAgICBpZiAoIWFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuaXNFbXB0
eSgpKQorICAgICAgICBkZWxpdmVyQWxsTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CisgICAgQVNTRVJU
KGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCkuaXNFbXB0eSgpKTsKK30KKworaW5saW5l
IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6SW5zdGFuY2VTZXQmIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6YWN0aXZlQ3VzdG9tRWxlbWVudFJlZ2lzdHJpZXMoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSW5zdGFuY2VTZXQsIGFjdGl2ZUluc3RhbmNlcywgKCkpOworICAgIHJldHVybiBhY3Rp
dmVJbnN0YW5jZXM7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKENVU1RPTV9FTEVNRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ0OGM5
MTcwMzA2MjBkMThmNzA2N2YwMmYxZTU0YjA3YWE4Y2RkZGQuLjY1Yjk0ZTg0ZmIzNWNkMmE3NTRm
NTY2MDcyZDExNjExOWNiMmZjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODU0LDcg
Kzg1NCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlZDsKICAgICB9CiAKLSAgICByZXR1cm4gc2V0VHlwZUV4dGVuc2lvbihjcmVhdGVFbGVtZW50
KGxvY2FsTmFtZSwgZWMpLCB0eXBlRXh0ZW5zaW9uKTsgLy8gIEZJWE1FOiB0YWtlIGNhcmUgb2Yg
QGlzCisgICAgcmV0dXJuIHNldFR5cGVFeHRlbnNpb24oY3JlYXRlRWxlbWVudChsb2NhbE5hbWUs
IGVjKSwgdHlwZUV4dGVuc2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
U3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtODkzLDYgKzg5MywxMyBAQCBQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpT
Y3JpcHRTdAogICAgICAgICBtX3JlZ2lzdHJ5ID0gYWRvcHRSZWYobmV3IEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeSh0aGlzKSk7CiAgICAgcmV0dXJuIG1fcmVnaXN0cnktPnJlZ2lzdGVyRWxlbWVudChz
dGF0ZSwgbmFtZSwgb3B0aW9ucywgZWMpOwogfQorCit2b2lkIERvY3VtZW50OjpkaWRDcmVhdGVD
dXN0b21FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IpCit7CisgICAgLy8gbV9yZWdpc3RyeSBpcyBjbGVhcmVkIERvY3VtZW50Ojpk
aXNwb3NlKCkgYW5kIGNhbiBiZSBudWxsIGhlcmUuCisgICAgaWYgKG1fcmVnaXN0cnkpCisgICAg
ICAgIG1fcmVnaXN0cnktPmRpZENyZWF0ZUVsZW1lbnQoZWxlbWVudCk7Cit9CiAjZW5kaWYgLy8g
RU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBE
b2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDMwMmRlYjFhYzMwYzdkNGVjYzhlMzQzYmM5Yjg0ZTRhYzQ2YTc1M2YuLjFkNWFhNDY0MjYwMzI3
OWIwNTAzZmMzYmUxN2U1YTZlM2FmMDI4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTY4
LDYgKzExNjgsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IHJlZ2lzdGVyRWxlbWVudChXZWJDb3JlOjpTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yPiByZWdpc3RlckVsZW1lbnQoV2ViQ29yZTo6U2NyaXB0U3RhdGUqLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkqIHJlZ2lzdHJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyeS5nZXQoKTsgfQorICAgIHZvaWQgZGlkQ3JlYXRlQ3VzdG9tRWxl
bWVudChFbGVtZW50KiwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKik7CiAjZW5kaWYKIAogICAg
IHZvaWQgYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2Nh
bGUoVmVjdG9yPEZsb2F0UXVhZD4mLCBSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCmluZGV4IGM5ZGYzNzQwMTk1ZDIxMjQ4ZWI3ZGUwZjIyMzNlZGE2MDk5YjY3YmEuLmU1Mzhk
NzUwYWZiMGYwM2JhZTJhNjliMDFmMzViNDVhYzg1NGMzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbApAQCAtMjksNyArMjksOCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01JbXBsZW1l
bnRhdGlvbiBpbXBsZW1lbnRhdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBk
b2N1bWVudEVsZW1lbnQ7CiAKLSAgICBbUmV0dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVs
ZW1lbnQoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZp
bmVkXSBET01TdHJpbmcgdGFnTmFtZSkKKyAgICBbUmV0dXJuTmV3T2JqZWN0LCBWOERlbGl2ZXJD
dXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudChpbiBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmlu
ZyB0YWdOYW1lKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgRG9jdW1lbnRG
cmFnbWVudCAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBbUmV0dXJuTmV3T2JqZWN0
XSBUZXh0IGNyZWF0ZVRleHROb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERP
TVN0cmluZyBkYXRhKTsKQEAgLTQ3LDE0ICs0OCwxNiBAQAogCiAgICAgLy8gSW50cm9kdWNlZCBp
biBET00gTGV2ZWwgMjoKIAotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJldHVy
bk5ld09iamVjdF0gTm9kZSBpbXBvcnROb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmlu
ZWRdIE5vZGUgaW1wb3J0ZWROb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gZGVlcCkKKyAgICBbT2JqQ0xlZ2Fj
eVVubmFtZWRQYXJhbWV0ZXJzLCBSZXR1cm5OZXdPYmplY3QsIFY4RGVsaXZlckN1c3RvbUVsZW1l
bnRDYWxsYmFja3NdCisgICAgTm9kZSBpbXBvcnROb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIE5vZGUgaW1wb3J0ZWROb2RlLAorICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gZGVlcCkKICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAg
IFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJldHVybk5ld09iamVjdF0gRWxlbWVudCBj
cmVhdGVFbGVtZW50TlMoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUpCisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0LCBW
OERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVu
dE5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5l
ZF0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERP
TVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAg
ICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmV0dXJuTmV3T2JqZWN0XSBBdHRyIGNy
ZWF0ZUF0dHJpYnV0ZU5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1
bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBO
b2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
LE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBsb2NhbE5hbWUpOwpAQCAtMTMxLDcg
KzEzNCw3IEBACiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgLy8gQ29tbW9u
IGV4dGVuc2lvbnMKLQorICAgIFtWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXQogICAg
IGJvb2xlYW4gICAgICAgICAgICBleGVjQ29tbWFuZChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBET01TdHJpbmcgY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gYm9vbGVhbiB1c2VySW50ZXJm
YWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJ
c1VuZGVmaW5lZF0gRE9NU3RyaW5nIHZhbHVlKTsKQEAgLTM2MiwxMSArMzY1LDEzIEBACiAjZW5k
aWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX0NVU1RPTV9FTEVNRU5UUykgJiYgRU5BQkxFX0NVU1RP
TV9FTEVNRU5UUwotICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Y3VzdG9tRE9NRWxlbWVudHMsIENv
bmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50ZWRBcz1yZWdpc3RlckVsZW1lbnQs
IENhbGxXaXRoPVNjcmlwdFN0YXRlXQorICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9Y3VzdG9tRE9N
RWxlbWVudHMsIENvbmRpdGlvbmFsPUNVU1RPTV9FTEVNRU5UUywgSW1wbGVtZW50ZWRBcz1yZWdp
c3RlckVsZW1lbnQsIENhbGxXaXRoPVNjcmlwdFN0YXRlLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50
Q2FsbGJhY2tzXQogICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciB3ZWJraXRSZWdpc3Rlcihp
biBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgIFtSZXR1cm5OZXdPYmplY3RdIEVsZW1lbnQgY3JlYXRlRWxl
bWVudChpbiBET01TdHJpbmcgbG9jYWxOYW1lLCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10g
RE9NU3RyaW5nIHR5cGVFeHRlbnNpb24pIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICBbUmV0
dXJuTmV3T2JqZWN0XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1Ry
ZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5ld09iamVjdCwgVjhEZWxpdmVyQ3VzdG9tRWxlbWVu
dENhbGxiYWNrc10KKyAgICBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIGxvY2Fs
TmFtZSwgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBlRXh0ZW5zaW9u
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1JldHVybk5ld09iamVjdCwgVjhEZWxpdmVy
Q3VzdG9tRWxlbWVudENhbGxiYWNrc10KKyAgICBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgaW4gRE9NU3Ry
aW5nIHF1YWxpZmllZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyB0eXBlRXh0ZW5zaW9uKSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAmJiBMQU5HVUFH
RV9DUFAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhYTdmNTJkMTIwYzhkNjhmZDJjMzRlOGIz
MzljZTY1YmY2MDJmYzRhLi4zMjU0ZWM1NDdlMWU4NmZiODQ0YzRlZGFlMGQ4ZjdkMGUxMmZkZDFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xh
c3NMaXN0LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RM
aXN0LmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRE9N
VG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCkBAIC04ODcsNiArODg4LDE3IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
CiAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXR0cmlidXRlQ2hh
bmdlZChuYW1lLCB0aGlzKTsKIH0KIAoraW5saW5lIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMp
CisgICAgaWYgKG5hbWUgPT0gaXNBdHRyKSB7CisgICAgICAgIGlmIChDdXN0b21FbGVtZW50UmVn
aXN0cnkqIHJlZ2lzdHJ5ID0gZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSkKKyAgICAgICAgICAgIHJl
Z2lzdHJ5LT5kaWRHaXZlVHlwZUV4dGVuc2lvbih0aGlzKTsKKyAgICB9CisjZW5kaWYKKyAgICBh
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG5ld1ZhbHVlKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIGJvb2wgY2xhc3NTdHJpbmdIYXNDbGFzc05h
bWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpA
QCAtMTA3Myw3ICsxMDg1LDcgQEAgdm9pZCBFbGVtZW50OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKGNv
bnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVWZWN0b3IpCiAKICAgICAvLyBVc2UgYXR0
cmlidXRlVmVjdG9yIGluc3RlYWQgb2YgbV9lbGVtZW50RGF0YSBiZWNhdXNlIGF0dHJpYnV0ZUNo
YW5nZWQgbWlnaHQgbW9kaWZ5IG1fZWxlbWVudERhdGEuCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGF0dHJpYnV0ZVZlY3Rvci5zaXplKCk7ICsraSkKLSAgICAgICAgYXR0cmlidXRlQ2hh
bmdlZChhdHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgpLCBhdHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUo
KSk7CisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNsb25pbmcoYXR0cmli
dXRlVmVjdG9yW2ldLm5hbWUoKSwgYXR0cmlidXRlVmVjdG9yW2ldLnZhbHVlKCkpOwogfQogCiBi
b29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApAQCAtMjg1Nyw3ICsyODY5LDcgQEAg
dm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBv
dGhlcikKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VsZW1lbnREYXRhLT5sZW5n
dGgoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gY29uc3Rf
Y2FzdDxjb25zdCBFbGVtZW50RGF0YSo+KG1fZWxlbWVudERhdGEuZ2V0KCkpLT5hdHRyaWJ1dGVJ
dGVtKGkpOwotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRy
aWJ1dGUtPnZhbHVlKCkpOworICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkRnJvbVBhcnNlck9yQnlD
bG9uaW5nKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYmFhOWQ0MjUzNDM5MDM2MzQ1MmZiNTk0ZDRjZWFkMDhm
NTUxNTJmMy4uZDA3Yzk1MTUzZDg1MjY2ZmUyNjJhNzQxOWM1Y2M4Mjc4MDA3NzU1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC02NzIsNiArNjcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEF0
dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsIFN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSk7CiAg
ICAgdm9pZCBhZGRBdHRyaWJ1dGVJbnRlcm5hbChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKICAg
ICB2b2lkIHJlbW92ZUF0dHJpYnV0ZUludGVybmFsKHNpemVfdCBpbmRleCwgU3luY2hyb25pemF0
aW9uT2ZMYXp5QXR0cmlidXRlKTsKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2Vy
T3JCeUNsb25pbmcoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwog
CiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFy
KiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggNmI1
ZDQ5M2U3YmQ5YjUzMTdkYjdkYjUwZTU4NzEyNzEwZDNjMGU0OC4uZWU3NGY1OTc2ZjkwYWUwMDcx
ZmQ4YmMxZmI5ZDFhMDRlNTI3YjI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbApAQCAtNzYsNiArNzYsNyBA
QAogICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgIGJvb2xlYW4gICAgICAgICAg
ICBoYXNDaGlsZE5vZGVzKCk7CisgICAgW1Y4RGVsaXZlckN1c3RvbUVsZW1lbnRDYWxsYmFja3Nd
CiAgICAgTm9kZSAgICAgICAgICAgICAgIGNsb25lTm9kZShpbiBbT3B0aW9uYWw9RGVmYXVsdElz
VW5kZWZpbmVkXSBib29sZWFuIGRlZXApOwogICAgIHZvaWQgICAgICAgICAgICAgICBub3JtYWxp
emUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCmluZGV4IGEzOWNhOTJhNTNiOTg2Y2Y4
OGYxMTkzMWMxMTlhMTEwMjhmNWM4YWQuLjViMzVlOWZlZGVkMjk4MzRmOWY2ZWQ3Nzk5OTI2M2Vm
NDhhZDQ2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKQEAgLTMyLDggKzMyLDggQEAK
ICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhcHBseUF1dGhvclN0eWxlczsKICAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiByZXNldFN0eWxlSW5oZXJpdGFuY2U7CiAKLSAgICBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUwKLSAgICAgICAgc2V0dGVyIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBWOERlbGl2ZXJD
dXN0b21FbGVtZW50Q2FsbGJhY2tzXQorICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJIVE1M
IHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFW
QVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgIE5vZGUgY2xvbmVOb2RlKGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gZGVlcCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IGJjNjM5YjhlNDFiYjA0
NGE5MTkxMGU4NmI0YmQwNDlmYjQxMWJkNDguLjhjYTM5MDg2MjliOGYzMWQ5OTZlODRiZGQ4MmFl
MTA1ODE2MzlmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC0zOSw3ICsz
OSw3IEBACiAgICAgICAgICAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWNjZXNz
S2V5OwogCiAgICAgLy8gRXh0ZW5zaW9ucwotICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTAorICAgICAgICAgICAgIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nLCBWOERlbGl2ZXJDdXN0b21FbGVtZW50Q2FsbGJhY2tzXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTAogICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIGF0
dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0CiAgICAgICAgICAgICAgICAgIHNldHRlciByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNj
cmlwdFJ1bm5lci5jcHAKaW5kZXggNDY4OWQxM2U0MmEzNWVlYTIxNGEwMjg3YWE3YjdkZTI4OWQ1
MTAzYS4uNTNmM2QyOWZmYjEwNWZlYTQzZmI5NTFhZGY1YmNhOWM1ZmIyMDcxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMjgsOCArMTI5LDEyIEBAIHZvaWQgSFRNTFNjcmlw
dFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3Jp
cHQmIHBlbmRpCiAgICAgaWYgKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgcGVuZGlu
Z1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZChw
ZW5kaW5nU2NyaXB0KTsKIAotICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkKKyAgICBpZiAo
IWlzRXhlY3V0aW5nU2NyaXB0KCkpIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAg
ICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlbGl2ZXJBbGxMaWZlY3ljbGVDYWxsYmFja3Mo
KTsKKyNlbmRpZgogICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25z
KCk7CisgICAgfQogCiAgICAgLy8gQ2xlYXIgdGhlIHBlbmRpbmcgc2NyaXB0IGJlZm9yZSBwb3Nz
aWJsZSByZW50cmFuY3kgZnJvbSBleGVjdXRlU2NyaXB0KCkKICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IHBlbmRpbmdTY3JpcHQucmVsZWFzZUVsZW1lbnRBbmRDbGVhcigpOwpAQCAtMjky
LDggKzI5NywxMiBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdChFbGVtZW50KiBz
Y3JpcHQsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcgogICAgICAgICAvLyBldmVyeSBz
Y3JpcHQgZWxlbWVudCwgZXZlbiBpZiBpdCdzIG5vdCByZWFkeSB0byBleGVjdXRlIHlldC4gVGhl
cmUncwogICAgICAgICAvLyB1bmZvcnR1YW50ZWx5IG5vIG9idmlvdXMgd2F5IHRvIHRlbGwgaWYg
cHJlcGFyZVNjcmlwdCBpcyBnb2luZyB0bwogICAgICAgICAvLyBleGVjdXRlIHRoZSBzY3JpcHQg
ZnJvbSBvdXQgaGVyZS4KLSAgICAgICAgaWYgKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKQorICAgICAg
ICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpIHsKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQorICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxpdmVyQWxsTGlmZWN5Y2xl
Q2FsbGJhY2tzKCk7CisjZW5kaWYKICAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2
ZXJBbGxNdXRhdGlvbnMoKTsKKyAgICAgICAgfQogCiAgICAgICAgIEluc2VydGlvblBvaW50UmVj
b3JkIGluc2VydGlvblBvaW50UmVjb3JkKG1faG9zdC0+aW5wdXRTdHJlYW0oKSk7CiAgICAgICAg
IE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0
TmVzdGluZ0xldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCmluZGV4IGUy
NmZiOGVmOWQ1ZWI2NjJkNjY0ODAyNzg1N2RhN2RiMTdiMDRiZDMuLjBkZmIwODZiNzg5NmNkYmU5
NmJjZjY5YjY5YWNlMDliZmY4ZjUxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YktpdC5oIgogCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
RXZlbnRUcmFjZXIuaCIKICNpbmNsdWRlICJJbWFnZURlY29kaW5nU3RvcmUuaCIKICNpbmNsdWRl
ICJMYXlvdXRUZXN0U3VwcG9ydC5oIgpAQCAtODAsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxQcm9jZXNzVGFzaygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQcm9j
ZXNzVGFzaygpCiAgICAgeworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgICAgIFdl
YkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckFsbExpZmVjeWNsZUNhbGxiYWNr
cygpOworI2VuZGlmCiAgICAgICAgIFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJB
bGxNdXRhdGlvbnMoKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMwNTkwNjY0ZDlkMDA1NDlmOTcyYmQ2
MDY3OTVjNDA4NTdlZDhhNzMuLmZkZmZkNDhlNjBmYmQzNTEwYTU2MzdlMTFiZWJmNjE2MGMzMGU5
NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wMy0yMSAgSGFqaW1lIE1vcnJpdGEgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIEVsZW1lbnRzOiAicmVhZHlDYWxs
YmFjayIgbGlmZWN5Y2xlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI1MzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBFbGxpb3R0IFNwcmVobi4KKworICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWN1cnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1lbnQt
cmVjdXJzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJl
ZW50cmFuY3kuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1yZWFkeS1jcmVhdGlvbi1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0aW9uLWFwaS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWlubmVySFRNTC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHkt
aW5uZXJIVE1MLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9saWZlY3lj
bGUtcmVhZHktcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJzZXItb25seS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBhcnNlci1zY3JpcHQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJl
YWR5LXBhcnNlci1zY3JpcHQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9t
L2xpZmVjeWNsZS1yZWFkeS1wYXN0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFzdGUuaHRtbDogQWRkZWQuCisKIDIwMTMt
MDMtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEg
Zmxha3kgY3Jhc2ggdGVzdCBleHBlY3RhdGlvbnMgb24gTWFjIFdlYktpdDIgcGVyIGJ1ZyAxMTMw
MjAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJl
YWR5LWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWN1cnNpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzODIzYTgzMmE3YTA4MzAyOGFmNzg3Njg2MzkyZGRkYWU1
MjYzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlm
ZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1lbnQtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBVbmNhdWdodCBSYW5nZUVycm9yOiBN
YXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4KK1BBU1MgdW5sZXNzIGNyYXNoCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVt
ZW50LXJlY3Vyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNs
ZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJlY3Vyc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZDM5ZTc0
MThmODI2Y2MyZDYwNzAzZWFjZWZhMDk5MzIwNWM5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0ZUVsZW1lbnQtcmVj
dXJzaW9uLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5yZWdpc3RlciA9IGRv
Y3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOworZG9jdW1lbnQucmVn
aXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJv
dG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IGZ1bmN0aW9uICgpIHsgdGhpcy5pbm5l
ckhUTUwgPSAiPHgtZm9vPkhlbGxvPC94LWZvbz4iOyB9IH0gfSkgfSk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Citkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ4LWZvbyIpOworZGVidWcoIlBBU1MgdW5sZXNzIGNyYXNoIik7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxl
bWVudC1yZWVudHJhbmN5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWRjYzE4MzdjMjU2YjY4
OTZiMWJlMzlmOTBjMGYxZTRkNWMzNDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhl
IGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBp
biBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFtdCitQQVNTIHdpbmRvdy5jYWxsYmFj
a3NDYWxsZWQgaXMgWydYLUZPTyddCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydY
LUZPTycsICdYLUJBUiddCitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycs
ICdYLUJBUiddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1y
ZWFkeS1jcmVhdGVFbGVtZW50LXJlZW50cmFuY3kuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTlkODQ4NzUxYmYyNWM0MzkzNjA3ZWJkNGNiYjllYzQ2ZmI5ODhhMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHkt
Y3JlYXRlRWxlbWVudC1yZWVudHJhbmN5Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNlci1tYWRlIGVs
ZW1lbnQgaXMgdmlzaWJsZSBpbiBmb2xsb3dpbmcgc2NyaXB0IGJsb2NrLiIpCitkb2N1bWVudC5y
ZWdpc3RlciA9IGRvY3VtZW50LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOwor
Cit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107CisKK2Z1bmN0aW9uIGZvb0NyZWF0ZWRGdW5j
dGlvbigpIHsKKyAgc2hvdWxkQmUoIndpbmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiW10iKTsKKyAg
d2luZG93LmNhbGxiYWNrc0NhbGxlZC5wdXNoKHRoaXMudGFnTmFtZSk7CisgIHRoaXMuaW5uZXJI
VE1MID0gIjx4LWJhcj48L3gtYmFyPiI7CisgIHNob3VsZEJlKCJ3aW5kb3cuY2FsbGJhY2tzQ2Fs
bGVkIiwgIlsnWC1GT08nLCAnWC1CQVInXSIpOworfQorCitmdW5jdGlvbiBiYXJDcmVhdGVkRnVu
Y3Rpb24oKSB7CisgIHNob3VsZEJlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIiwgIlsnWC1GT08n
XSIpOworICB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkLnB1c2godGhpcy50YWdOYW1lKTsKK30KKwor
ZG9jdW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRN
TEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IGZvb0NyZWF0ZWRG
dW5jdGlvbiB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwgeyBwcm90b3R5cGU6
IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsg
dmFsdWU6IGJhckNyZWF0ZWRGdW5jdGlvbiB9IH0pIH0pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQ+Citkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworc2hvdWxk
QmUoIndpbmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiWydYLUZPTycsICdYLUJBUiddIik7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRpb24tYXBpLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRpb24tYXBpLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTNjOWNmMWZhYjU4MzgwZDgzNWEwZTM2MjNhYzQwOWI0
NDM4ZWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xp
ZmVjeWNsZS1yZWFkeS1jcmVhdGlvbi1hcGktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAK
K1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgQVBJLW9y
aWdpbmF0ZWQgZWxlbWVudHMgYXJlIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgneC1mb28nKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnLCAneC1iYXInKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAn
eC1mb28nKS5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2JywgJ3gtYmFyJykuY2Fs
bGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1MgZm9vLmNsb25lTm9kZSgpLmNhbGxiYWNrc0NhbGxl
ZCBpcyB0cnVlCitQQVNTIGZvby5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RDaGlsZC5jYWxsYmFja3ND
YWxsZWQgaXMgdHJ1ZQorUEFTUyBiYXIuY2xvbmVOb2RlKCkuY2FsbGJhY2tzQ2FsbGVkIGlzIHRy
dWUKK1BBU1MgYmFyLmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBp
cyB0cnVlCitQQVNTIGZvcmVpZ25Gb28uY2FsbGJhY2tzQ2FsbGVkIGlzIHVuZGVmaW5lZC4KK1BB
U1MgZm9yZWlnbkZvby5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB1bmRlZmluZWQuCitQ
QVNTIGltcG9ydGVkRm9vLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNTIGltcG9ydGVkRm9v
LmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIGlzIHRydWUKK1BBU1Mgd2luZG93LmNhbGxiYWNr
c0NhbGxlZCBpcyBbXQorUEFTUyBpbXBvcnRlZEJhci5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBpbXBvcnRlZEJhci5maXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCBpcyB0cnVlCitQQVNT
IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydESVYnLCAnWC1GT08nXQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktY3JlYXRpb24tYXBpLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWNyZWF0aW9uLWFw
aS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVjNmRjYWU4MDcxOGZmMjdiMWIxMzcwZTUyYzIxNTRkNDUyMTY4
N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LWNyZWF0aW9uLWFwaS5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2tzIG9mIEFQSS1vcmlnaW5hdGVkIGVs
ZW1lbnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikKK3dpbmRvdy5j
YWxsYmFja3NDYWxsZWQgPSBbXTsKK2Z1bmN0aW9uIG1hcmtpbmdSZWFkeUNhbGxiYWNrKCkgewor
ICAgIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVzaCh0aGlzLnRhZ05hbWUpOworICAgIHRoaXMu
Y2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsKK30KKworZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVu
dC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK2RvY3VtZW50LnJlZ2lzdGVy
KCJ4LWZvbyIsIHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlw
ZSwgeyByZWFkeUNhbGxiYWNrOiB7IHZhbHVlOiBtYXJraW5nUmVhZHlDYWxsYmFjayB9IH0pIH0p
OworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUo
SFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IG1hcmtp
bmdSZWFkeUNhbGxiYWNrIH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9Imhvc3QiPjwvZGl2PgorCis8c2NyaXB0
PgorCitzaG91bGRCZVRydWUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3gtZm9vJykuY2FsbGJh
Y2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdics
ICd4LWJhcicpLmNhbGxiYWNrc0NhbGxlZCIpOworCitzaG91bGRCZVRydWUoImRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICd4LWZvbycpLmNh
bGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnZGl2JywgJ3gtYmFyJykuY2FsbGJhY2tz
Q2FsbGVkIik7CisKK3ZhciBmb28gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycpOwor
Zm9vLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsICd4LWJhcicpKTsK
K3Nob3VsZEJlVHJ1ZSgiZm9vLmNsb25lTm9kZSgpLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxk
QmVUcnVlKCJmb28uY2xvbmVOb2RlKHRydWUpLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7
CisKK3ZhciBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKTsKK2Jh
ci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4LWZvbycpKTsKK3Nob3VsZEJl
VHJ1ZSgiYmFyLmNsb25lTm9kZSgpLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJi
YXIuY2xvbmVOb2RlKHRydWUpLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3ZhciBm
b3JlaWduRG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJ2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbCcsIG51bGwpOworCit2YXIgZm9yZWlnbkZv
byA9IGZvcmVpZ25Eb2MuY3JlYXRlRWxlbWVudCgneC1mb28nKTsKK2ZvcmVpZ25Gb28uYXBwZW5k
Q2hpbGQoZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXInKSk7CitzaG91bGRC
ZVVuZGVmaW5lZCgiZm9yZWlnbkZvby5jYWxsYmFja3NDYWxsZWQiKTsKK3Nob3VsZEJlVW5kZWZp
bmVkKCJmb3JlaWduRm9vLmZpcnN0Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CitpbXBvcnRlZEZv
byA9IGRvY3VtZW50LmltcG9ydE5vZGUoZm9yZWlnbkZvbykKK3Nob3VsZEJlVHJ1ZSgiaW1wb3J0
ZWRGb28uY2FsbGJhY2tzQ2FsbGVkIik7CitzaG91bGRCZVRydWUoImltcG9ydGVkRm9vLmZpcnN0
Q2hpbGQuY2FsbGJhY2tzQ2FsbGVkIik7CisKK3dpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSBbXTsK
K3ZhciBmb3JlaWduQmFyID0gZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCdkaXYnLCAneC1iYXIn
KTsKK2ZvcmVpZ25CYXIuYXBwZW5kQ2hpbGQoZm9yZWlnbkRvYy5jcmVhdGVFbGVtZW50KCd4LWZv
bycpKTsKK3Nob3VsZEJlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIiwgIltdIik7CitpbXBvcnRl
ZEJhciA9IGRvY3VtZW50LmltcG9ydE5vZGUoZm9yZWlnbkJhcik7CitzaG91bGRCZVRydWUoImlt
cG9ydGVkQmFyLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmVUcnVlKCJpbXBvcnRlZEJhci5m
aXJzdENoaWxkLmNhbGxiYWNrc0NhbGxlZCIpOworc2hvdWxkQmUoIndpbmRvdy5jYWxsYmFja3ND
YWxsZWQiLCAiWydESVYnLCAnWC1GT08nXSIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
cmVhZHktaW5uZXJIVE1MLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtcmVhZHktaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDUx
NmYzMTdhMjk0NzMxNjNkMTViOTMxMDA0MDY2OTc1MzgyNDYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1pbm5lckhUTUwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxp
ZmVjeWNsZSBjYWxsYmFjayBvZiBhIHBhcnNlci1tYWRlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBm
b2xsb3dpbmcgc2NyaXB0IGJsb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyB3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnYScsICdiJywgJ2MnXQorUEFTUyB3aW5k
b3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnYScsICdiJywgJ2MnXQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktaW5uZXJIVE1MLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWlubmVySFRNTC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFmMDI4ZWRjOWRlMjM4M2MwOWYwZmMzYTRhOWIyMzJkMDk5YjdiZmYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LWlu
bmVySFRNTC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRo
ZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50IGlzIHZpc2libGUg
aW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQucmVnaXN0ZXIgPSBkb2N1bWVu
dC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKKword2luZG93LmNhbGxiYWNr
c0NhbGxlZCA9IFtdOworCitmdW5jdGlvbiB0cmFja2luZ1JlYWR5Q2FsbGJhY2soKQoreworICAg
IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVzaCh0aGlzLmlkKTsKK30KKworZG9jdW1lbnQucmVn
aXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJv
dG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IHRyYWNraW5nUmVhZHlDYWxsYmFjayB9
IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIiwgeyBwcm90b3R5cGU6IE9iamVjdC5j
cmVhdGUoSFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6
IHRyYWNraW5nUmVhZHlDYWxsYmFjayB9IH0pIH0pOworZG9jdW1lbnQucmVnaXN0ZXIoIngtYmF6
IiwgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJl
YWR5Q2FsbGJhY2s6IHsgdmFsdWU6IHRyYWNraW5nUmVhZHlDYWxsYmFjayB9IH0pIH0pOworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cis8c2NyaXB0Pgor
Ly8gVGVzdGluZyBlbGVtZW50IHNpYmxpbmdzCit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107
Citjb250YWluZXIuaW5uZXJIVE1MID0gIjx4LWZvbyBpZD0nYSc+PC94LWZvbz48ZGl2IGlkPSdi
JyBpcz0neC1iYXInPjwvZGl2Pjx4LWJheiBpZD0nYyc+PC94LWJhej4iOworc2hvdWxkQmUoIndp
bmRvdy5jYWxsYmFja3NDYWxsZWQiLCAiWydhJywgJ2InLCAnYyddIik7CisKKy8vIFRlc3Rpbmcg
bmVzdGVkIGVsZW1lbnRzCit3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107Citjb250YWluZXIu
aW5uZXJIVE1MID0gIjx4LWZvbyBpZD0nYSc+PGRpdiBpZD0nYicgaXM9J3gtYmFyJz48eC1iYXog
aWQ9J2MnPjwveC1iYXo+PC9kaXY+PC94LWZvbz4iOworc2hvdWxkQmUoIndpbmRvdy5jYWxsYmFj
a3NDYWxsZWQiLCAiWydhJywgJ2InLCAnYyddIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
cmVhZHktcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1
c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLW9ubHktZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NmZkODA3NDViMGVmMDVmMTc1NDkxZDIzODExYjE1YjljZjM4YjRkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJzZXIt
b25seS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPHNwYW4+SGVsbG88L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBhcnNlci1v
bmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5Y2xlLXJlYWR5LXBh
cnNlci1vbmx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM4MTE1ZTE3MjBmZDYyYzBkMTFiYjAxZWNhZTk2
MzQ2MDhhYTM5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3Rv
bS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLW9ubHkuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQucmVnaXN0ZXIg
PSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK3Byb3RvID0g
T2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2
YWx1ZTogZnVuY3Rpb24oKSB7IHRoaXMuaW5uZXJIVE1MID0gIkhlbGxvIjsgfSB9IH0pOworZG9j
dW1lbnQucmVnaXN0ZXIoIngtZm9vIiwgeyBwcm90b3R5cGU6IHByb3RvIH0pOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzx4LWZvbz48L3gtZm9vPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJz
ZXItc2NyaXB0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtcmVhZHktcGFyc2VyLXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRjN2Vm
N2I3ZDUzMGI5NjRjYmNmZjc4YWM3OTJmMDQxMTg3MmM3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLXNjcmlwdC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
bGlmZWN5Y2xlIGNhbGxiYWNrIG9mIGEgcGFyc2VyLW1hZGUgZWxlbWVudCBpcyB2aXNpYmxlIGlu
IGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFyc2VyLXNjcmlwdC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXJzZXItc2NyaXB0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWI1YmViNjc0OGEyODUzYTFhOTAzZDExODM2YjZlYmFjNmVlZWNhMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUt
cmVhZHktcGFyc2VyLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHRoZSBsaWZlY3ljbGUgY2FsbGJhY2sgb2YgYSBwYXJzZXItbWFkZSBlbGVtZW50
IGlzIHZpc2libGUgaW4gZm9sbG93aW5nIHNjcmlwdCBibG9jay4iKQorZG9jdW1lbnQucmVnaXN0
ZXIgPSBkb2N1bWVudC5yZWdpc3RlciB8fCBkb2N1bWVudC53ZWJraXRSZWdpc3RlcjsKK3Byb3Rv
ID0gT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazog
eyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgPSB0cnVlOyB9IH0g
fSk7Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7IHByb3RvdHlwZTogcHJvdG8gfSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHgtZm9vPjwveC1mb28+Cis8c2NyaXB0Pgorc2hv
dWxkQmVUcnVlKCJ3aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZl
Y3ljbGUtcmVhZHktcGFzdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3Vz
dG9tL2xpZmVjeWNsZS1yZWFkeS1wYXN0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNmYjNk
ZTY5OWUwY2M0YWRiODczNDZhN2VkZmQ4NzNkMjc1YjIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9saWZlY3ljbGUtcmVhZHktcGFzdGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGxpZmVjeWNs
ZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmlnaW5hdGVkIGVsZW1lbnRzIGFyZSB2aXNpYmxlIGlu
IGZvbGxvd2luZyBzY3JpcHQgYmxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHdpbmRvdy5jYWxsYmFja3NDYWxsZWQgaXMgWydYLUZPTycsICdESVYnXQorUEFTUyB3
aW5kb3cuY2FsbGJhY2tzQ2FsbGVkIGlzIFsnWC1GT08nLCAnRElWJywgJ1gtRk9PJywgJ0RJVidd
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXN0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2xpZmVjeWNsZS1yZWFkeS1wYXN0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhmYTRiN2NiZTdmMDM0YmNkOWRmMWQ0OGMyYTY3Mjg4ZmU1OWZj
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vbGlmZWN5
Y2xlLXJlYWR5LXBhc3RlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgdGhlIGxpZmVjeWNsZSBjYWxsYmFja3Mgb2YgZWRpdGluZy1vcmlnaW5hdGVkIGVsZW1l
bnRzIGFyZSB2aXNpYmxlIGluIGZvbGxvd2luZyBzY3JpcHQgYmxvY2suIikKK2RvY3VtZW50LnJl
Z2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7Cit3
aW5kb3cuY2FsbGJhY2tzQ2FsbGVkID0gW107Citkb2N1bWVudC5yZWdpc3RlcigieC1mb28iLCB7
IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlD
YWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQucHVz
aCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Citkb2N1bWVudC5yZWdpc3RlcigieC1iYXIiLCB7
IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUsIHsgcmVh
ZHlDYWxsYmFjazogeyB2YWx1ZTogZnVuY3Rpb24oKSB7IHdpbmRvdy5jYWxsYmFja3NDYWxsZWQu
cHVzaCh0aGlzLnRhZ05hbWUpOyB9IH0gfSkgfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iY29udGFpbmVyIiBjb250ZW50ZWRpdGFibGU+Wzx4LWZvbz5Gb288L3gtZm9v
PjxkaXYgaXM9J3gtYmFyJz5CYXI8L2Rpdj5dPC9kaXY+Cis8c2NyaXB0PgordmFyIHNlbGVjdGlv
biA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworc2VsZWN0aW9uLnNlbGVjdEFsbENoaWxkcmVu
KGNvbnRhaW5lcik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIpOworCitzaG91bGRCZSgi
d2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJViddIik7CitzZWxlY3Rpb24u
Y29sbGFwc2VUb0VuZCgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlIik7CitzaG91bGRC
ZSgid2luZG93LmNhbGxiYWNrc0NhbGxlZCIsICJbJ1gtRk9PJywgJ0RJVicsICdYLUZPTycsICdE
SVYnXSIpOworCitjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>